98e75f2d |
1 | /* |
2 | * Glide64 - Glide video plugin for Nintendo 64 emulators. |
3 | * Copyright (c) 2002 Dave2001 |
4 | * Copyright (c) 2003-2009 Sergey 'Gonetz' Lipski |
5 | * |
6 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License as published by |
8 | * the Free Software Foundation; either version 2 of the License, or |
9 | * any later version. |
10 | * |
11 | * This program is distributed in the hope that it will be useful, |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | * GNU General Public License for more details. |
15 | * |
16 | * You should have received a copy of the GNU General Public License |
17 | * along with this program; if not, write to the Free Software |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | */ |
20 | |
21 | //**************************************************************** |
22 | // |
23 | // Glide64 - Glide Plugin for Nintendo 64 emulators |
24 | // Project started on December 29th, 2001 |
25 | // |
26 | // Authors: |
27 | // Dave2001, original author, founded the project in 2001, left it in 2002 |
28 | // Gugaman, joined the project in 2002, left it in 2002 |
29 | // Sergey 'Gonetz' Lipski, joined the project in 2002, main author since fall of 2002 |
30 | // Hiroshi 'KoolSmoky' Morii, joined the project in 2007 |
31 | // |
32 | //**************************************************************** |
33 | // |
34 | // To modify Glide64: |
35 | // * Write your name and (optional)email, commented by your work, so I know who did it, and so that you can find which parts you modified when it comes time to send it to me. |
36 | // * Do NOT send me the whole project or file that you modified. Take out your modified code sections, and tell me where to put them. If people sent the whole thing, I would have many different versions, but no idea how to combine them all. |
37 | // |
38 | //**************************************************************** |
39 | |
40 | #include "Gfx_1.3.h" |
41 | #include "Util.h" |
42 | #include "Combine.h" |
43 | |
44 | #define FASTSEARCH // Enable fast combine mode searching algorithm |
45 | |
46 | float percent_org, percent, r, g, b; |
47 | wxUint32 lod_frac; |
48 | |
49 | wxUint32 cc_lookup[257]; |
50 | wxUint32 ac_lookup[257]; |
51 | COMBINE cmb; |
52 | |
53 | //**************************************************************** |
54 | // Macros |
55 | //**************************************************************** |
56 | |
57 | #define MOD_0(mode) cmb.mod_0 = mode |
58 | #define MOD_0_COL(color) cmb.modcolor_0 = color |
59 | #define MOD_0_COL1(color) cmb.modcolor1_0 = color |
60 | #define MOD_0_COL2(color) cmb.modcolor2_0 = color |
61 | #define MOD_0_FAC(factor) cmb.modfactor_0 = factor |
62 | #define MOD_1(mode) cmb.mod_1 = mode |
63 | #define MOD_1_COL(color) cmb.modcolor_1 = color |
64 | #define MOD_1_COL1(color) cmb.modcolor1_1 = color |
65 | #define MOD_1_COL2(color) cmb.modcolor2_1 = color |
66 | #define MOD_1_FAC(factor) cmb.modfactor_1 = factor |
67 | |
68 | #define A_BLEND(f1,f2) cmb.abf1=f1,cmb.abf2=f2 |
69 | |
70 | // To make a color or alpha combine |
71 | #define CCMB(fnc,fac,loc,oth) \ |
72 | cmb.c_fnc = fnc, \ |
73 | cmb.c_fac = fac, \ |
74 | cmb.c_loc = loc, \ |
75 | cmb.c_oth = oth |
76 | #define ACMB(fnc,fac,loc,oth) \ |
77 | cmb.a_fnc = fnc, \ |
78 | cmb.a_fac = fac, \ |
79 | cmb.a_loc = loc, \ |
80 | cmb.a_oth = oth |
81 | #define CCMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
82 | cmb.c_ext_a = a, \ |
83 | cmb.c_ext_a_mode = a_mode, \ |
84 | cmb.c_ext_b = b, \ |
85 | cmb.c_ext_b_mode = b_mode, \ |
86 | cmb.c_ext_c = c, \ |
87 | cmb.c_ext_c_invert = c_invert, \ |
88 | cmb.c_ext_d= d, \ |
89 | cmb.c_ext_d_invert = d_invert, \ |
90 | cmb.cmb_ext_use |= COMBINE_EXT_COLOR |
91 | #define ACMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
92 | cmb.a_ext_a = a, \ |
93 | cmb.a_ext_a_mode = a_mode, \ |
94 | cmb.a_ext_b = b, \ |
95 | cmb.a_ext_b_mode = b_mode, \ |
96 | cmb.a_ext_c = c, \ |
97 | cmb.a_ext_c_invert = c_invert, \ |
98 | cmb.a_ext_d= d, \ |
99 | cmb.a_ext_d_invert = d_invert, \ |
100 | cmb.cmb_ext_use |= COMBINE_EXT_ALPHA |
101 | #define T0CCMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
102 | cmb.t0c_ext_a = a, \ |
103 | cmb.t0c_ext_a_mode = a_mode, \ |
104 | cmb.t0c_ext_b = b, \ |
105 | cmb.t0c_ext_b_mode = b_mode, \ |
106 | cmb.t0c_ext_c = c, \ |
107 | cmb.t0c_ext_c_invert = c_invert, \ |
108 | cmb.t0c_ext_d= d, \ |
109 | cmb.t0c_ext_d_invert = d_invert, \ |
110 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR |
111 | #define T0ACMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
112 | cmb.t0a_ext_a = a, \ |
113 | cmb.t0a_ext_a_mode = a_mode, \ |
114 | cmb.t0a_ext_b = b, \ |
115 | cmb.t0a_ext_b_mode = b_mode, \ |
116 | cmb.t0a_ext_c = c, \ |
117 | cmb.t0a_ext_c_invert = c_invert, \ |
118 | cmb.t0a_ext_d= d, \ |
119 | cmb.t0a_ext_d_invert = d_invert, \ |
120 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_ALPHA |
121 | #define T1CCMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
122 | cmb.t1c_ext_a = a, \ |
123 | cmb.t1c_ext_a_mode = a_mode, \ |
124 | cmb.t1c_ext_b = b, \ |
125 | cmb.t1c_ext_b_mode = b_mode, \ |
126 | cmb.t1c_ext_c = c, \ |
127 | cmb.t1c_ext_c_invert = c_invert, \ |
128 | cmb.t1c_ext_d= d, \ |
129 | cmb.t1c_ext_d_invert = d_invert, \ |
130 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR |
131 | #define T1ACMBEXT(a,a_mode,b,b_mode,c,c_invert,d,d_invert) \ |
132 | cmb.t1a_ext_a = a, \ |
133 | cmb.t1a_ext_a_mode = a_mode, \ |
134 | cmb.t1a_ext_b = b, \ |
135 | cmb.t1a_ext_b_mode = b_mode, \ |
136 | cmb.t1a_ext_c = c, \ |
137 | cmb.t1a_ext_c_invert = c_invert, \ |
138 | cmb.t1a_ext_d= d, \ |
139 | cmb.t1a_ext_d_invert = d_invert, \ |
140 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_ALPHA |
141 | |
142 | // To use textures |
143 | #define USE_T0() \ |
144 | rdp.best_tex = 0; \ |
145 | cmb.tex |= 1, \ |
146 | cmb.tmu0_func = GR_COMBINE_FUNCTION_LOCAL |
147 | #define USE_T1() \ |
148 | if (voodoo.num_tmu > 1) { \ |
149 | rdp.best_tex = 1; \ |
150 | cmb.tex |= 2, \ |
151 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
152 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
153 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE; \ |
154 | } \ |
155 | else { \ |
156 | USE_T0(); \ |
157 | } |
158 | #define T0_ADD_T1() \ |
159 | rdp.best_tex = 0; \ |
160 | cmb.tex |= 3, \ |
161 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
162 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
163 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE |
164 | #define T0_MUL_T1() \ |
165 | rdp.best_tex = 0; \ |
166 | cmb.tex |= 3, \ |
167 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
168 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
169 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL |
170 | #define T0_MUL_T1_ADD_T0() \ |
171 | rdp.best_tex = 0; \ |
172 | cmb.tex |= 3, \ |
173 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
174 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
175 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL |
176 | #define T0A_MUL_T1() \ |
177 | rdp.best_tex = 1; \ |
178 | cmb.tex |= 3, \ |
179 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
180 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
181 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL_ALPHA |
182 | #define T0_MUL_T1A() \ |
183 | rdp.best_tex = 1; \ |
184 | cmb.tex |= 3, \ |
185 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL_ALPHA, \ |
186 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
187 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL |
188 | #define T0_INTER_T1_USING_FACTOR(factor) \ |
189 | if (factor == 0xFF) { \ |
190 | USE_T1(); \ |
191 | } \ |
192 | else if (factor == 0x00) { \ |
193 | USE_T0(); \ |
194 | }\ |
195 | else {\ |
196 | if (factor <= 0x80) rdp.best_tex = 0; \ |
197 | else rdp.best_tex = 1; \ |
198 | cmb.tex |= 3, \ |
199 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
200 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ |
201 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
202 | percent = (float)factor / 255.0f, \ |
203 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
204 | } |
205 | #define T1_INTER_T0_USING_FACTOR(factor) /* inverse of above */\ |
206 | if (factor == 0xFF) { \ |
207 | USE_T0(); \ |
208 | } \ |
209 | else if (factor == 0x00) { \ |
210 | USE_T1(); \ |
211 | }\ |
212 | else {\ |
213 | if (factor <= 0x80) rdp.best_tex = 0; \ |
214 | else rdp.best_tex = 1; \ |
215 | cmb.tex |= 3, \ |
216 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
217 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ |
218 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
219 | percent = (255 - factor) / 255.0f, \ |
220 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
221 | } |
222 | #define T0_INTER_T1_USING_T0() \ |
223 | rdp.best_tex = 0; \ |
224 | cmb.tex |= 3, \ |
225 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
226 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ |
227 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL |
228 | #define T1_INTER_T0_USING_T0() \ |
229 | rdp.best_tex = 0; \ |
230 | cmb.tex |= 3, \ |
231 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
232 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ |
233 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE_MINUS_LOCAL |
234 | #define T0_INTER_T1_USING_T1() \ |
235 | if (!cmb.combine_ext) { \ |
236 | T0_INTER_T1_USING_FACTOR(0x7F); \ |
237 | }\ |
238 | else {\ |
239 | rdp.best_tex = 0; \ |
240 | cmb.tex |= 3, \ |
241 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
242 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
243 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
244 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
245 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
246 | cmb.t1c_ext_c_invert = 0, \ |
247 | cmb.t1c_ext_d= GR_CMBX_B, \ |
248 | cmb.t1c_ext_d_invert = 0, \ |
249 | cmb.t0c_ext_a = GR_CMBX_OTHER_TEXTURE_RGB, \ |
250 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
251 | cmb.t0c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
252 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
253 | cmb.t0c_ext_c = GR_CMBX_OTHER_TEXTURE_RGB, \ |
254 | cmb.t0c_ext_c_invert = 0, \ |
255 | cmb.t0c_ext_d= GR_CMBX_B, \ |
256 | cmb.t0c_ext_d_invert = 0, \ |
257 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
258 | } |
259 | #define T0_INTER_T1_USING_T1A() \ |
260 | rdp.best_tex = 0; \ |
261 | cmb.tex |= 3, \ |
262 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
263 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ |
264 | cmb.tmu0_fac = GR_COMBINE_FACTOR_OTHER_ALPHA |
265 | #define T0_INTER_T1_USING_PRIM() \ |
266 | if (!cmb.combine_ext) { \ |
267 | T0_INTER_T1_USING_FACTOR ((rdp.prim_color&0xFF)); \ |
268 | }\ |
269 | else {\ |
270 | rdp.best_tex = 0; \ |
271 | cmb.tex |= 3, \ |
272 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
273 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
274 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
275 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
276 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
277 | cmb.t1c_ext_c_invert = 0, \ |
278 | cmb.t1c_ext_d= GR_CMBX_B, \ |
279 | cmb.t1c_ext_d_invert = 0, \ |
280 | cmb.t0c_ext_a = GR_CMBX_OTHER_TEXTURE_RGB, \ |
281 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
282 | cmb.t0c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
283 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
284 | cmb.t0c_ext_c = GR_CMBX_TMU_CCOLOR, \ |
285 | cmb.t0c_ext_c_invert = 0, \ |
286 | cmb.t0c_ext_d= GR_CMBX_B, \ |
287 | cmb.t0c_ext_d_invert = 0, \ |
288 | cmb.tex_ccolor = rdp.prim_color, \ |
289 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
290 | } |
291 | #define T1_INTER_T0_USING_PRIM() /* inverse of above */\ |
292 | if (!cmb.combine_ext) { \ |
293 | T1_INTER_T0_USING_FACTOR ((rdp.prim_color&0xFF)); \ |
294 | }\ |
295 | else {\ |
296 | rdp.best_tex = 0; \ |
297 | cmb.tex |= 3, \ |
298 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
299 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
300 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
301 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
302 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
303 | cmb.t1c_ext_c_invert = 0, \ |
304 | cmb.t1c_ext_d= GR_CMBX_B, \ |
305 | cmb.t1c_ext_d_invert = 0, \ |
306 | cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
307 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
308 | cmb.t0c_ext_b = GR_CMBX_OTHER_TEXTURE_RGB, \ |
309 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
310 | cmb.t0c_ext_c = GR_CMBX_TMU_CCOLOR, \ |
311 | cmb.t0c_ext_c_invert = 0, \ |
312 | cmb.t0c_ext_d= GR_CMBX_B, \ |
313 | cmb.t0c_ext_d_invert = 0, \ |
314 | cmb.tex_ccolor = rdp.prim_color, \ |
315 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
316 | } |
317 | #define T0_INTER_T1_USING_ENV() \ |
318 | if (!cmb.combine_ext) { \ |
319 | T0_INTER_T1_USING_FACTOR ((rdp.env_color&0xFF)); \ |
320 | }\ |
321 | else {\ |
322 | rdp.best_tex = 0; \ |
323 | cmb.tex |= 3, \ |
324 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
325 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
326 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
327 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
328 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
329 | cmb.t1c_ext_c_invert = 0, \ |
330 | cmb.t1c_ext_d= GR_CMBX_B, \ |
331 | cmb.t1c_ext_d_invert = 0, \ |
332 | cmb.t0c_ext_a = GR_CMBX_OTHER_TEXTURE_RGB, \ |
333 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
334 | cmb.t0c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
335 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
336 | cmb.t0c_ext_c = GR_CMBX_TMU_CCOLOR, \ |
337 | cmb.t0c_ext_c_invert = 0, \ |
338 | cmb.t0c_ext_d= GR_CMBX_B, \ |
339 | cmb.t0c_ext_d_invert = 0, \ |
340 | cmb.tex_ccolor = rdp.env_color, \ |
341 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
342 | } |
343 | #define T1_INTER_T0_USING_ENV() /* inverse of above */\ |
344 | if (!cmb.combine_ext) { \ |
345 | T1_INTER_T0_USING_FACTOR ((rdp.env_color&0xFF)); \ |
346 | }\ |
347 | else {\ |
348 | rdp.best_tex = 0; \ |
349 | cmb.tex |= 3, \ |
350 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
351 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
352 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
353 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
354 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
355 | cmb.t1c_ext_c_invert = 0, \ |
356 | cmb.t1c_ext_d= GR_CMBX_B, \ |
357 | cmb.t1c_ext_d_invert = 0, \ |
358 | cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
359 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
360 | cmb.t0c_ext_b = GR_CMBX_OTHER_TEXTURE_RGB, \ |
361 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
362 | cmb.t0c_ext_c = GR_CMBX_TMU_CCOLOR, \ |
363 | cmb.t0c_ext_c_invert = 0, \ |
364 | cmb.t0c_ext_d= GR_CMBX_B, \ |
365 | cmb.t0c_ext_d_invert = 0, \ |
366 | cmb.tex_ccolor = rdp.env_color, \ |
367 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
368 | } |
369 | #define T0_INTER_T1_USING_SHADEA() \ |
370 | if (!cmb.combine_ext) { \ |
371 | T0_INTER_T1_USING_FACTOR (0x7F); \ |
372 | }\ |
373 | else {\ |
374 | rdp.best_tex = 0; \ |
375 | cmb.tex |= 3, \ |
376 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
377 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
378 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
379 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
380 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
381 | cmb.t1c_ext_c_invert = 0, \ |
382 | cmb.t1c_ext_d= GR_CMBX_B, \ |
383 | cmb.t1c_ext_d_invert = 0, \ |
384 | cmb.t0c_ext_a = GR_CMBX_OTHER_TEXTURE_RGB, \ |
385 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
386 | cmb.t0c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
387 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
388 | cmb.t0c_ext_c = GR_CMBX_ITALPHA, \ |
389 | cmb.t0c_ext_c_invert = 0, \ |
390 | cmb.t0c_ext_d= GR_CMBX_B, \ |
391 | cmb.t0c_ext_d_invert = 0, \ |
392 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
393 | } |
394 | #define T1_INTER_T0_USING_SHADEA() \ |
395 | if (!cmb.combine_ext) { \ |
396 | T0_INTER_T1_USING_FACTOR (0x7F); \ |
397 | }\ |
398 | else {\ |
399 | rdp.best_tex = 0; \ |
400 | cmb.tex |= 3, \ |
401 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
402 | cmb.t1c_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
403 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
404 | cmb.t1c_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
405 | cmb.t1c_ext_c = GR_CMBX_ZERO, \ |
406 | cmb.t1c_ext_c_invert = 0, \ |
407 | cmb.t1c_ext_d= GR_CMBX_B, \ |
408 | cmb.t1c_ext_d_invert = 0, \ |
409 | cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
410 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
411 | cmb.t0c_ext_b = GR_CMBX_OTHER_TEXTURE_RGB, \ |
412 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
413 | cmb.t0c_ext_c = GR_CMBX_ITALPHA, \ |
414 | cmb.t0c_ext_c_invert = 0, \ |
415 | cmb.t0c_ext_d= GR_CMBX_B, \ |
416 | cmb.t0c_ext_d_invert = 0, \ |
417 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
418 | } |
419 | #define T1_SUB_T0() \ |
420 | rdp.best_tex = 0; \ |
421 | cmb.tex |= 3, \ |
422 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
423 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, \ |
424 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE |
425 | #define T1_SUB_T0_MUL_T0() \ |
426 | rdp.best_tex = 0; \ |
427 | cmb.tex |= 3, \ |
428 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
429 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, \ |
430 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL |
431 | #define T1_MUL_PRIMLOD_ADD_T0() \ |
432 | rdp.best_tex = 0; \ |
433 | cmb.tex |= 3, \ |
434 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
435 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
436 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
437 | percent = (float)(lod_frac) / 255.0f, \ |
438 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
439 | #define T1_MUL_PRIMA_ADD_T0() \ |
440 | rdp.best_tex = 0; \ |
441 | cmb.tex |= 3, \ |
442 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
443 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
444 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
445 | percent = (float)(rdp.prim_color&0xFF) / 255.0f, \ |
446 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
447 | #define T1_MUL_ENVA_ADD_T0() \ |
448 | rdp.best_tex = 0; \ |
449 | cmb.tex |= 3, \ |
450 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ |
451 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
452 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
453 | percent = (float)(rdp.env_color&0xFF) / 255.0f, \ |
454 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
455 | #define T0_SUB_PRIM_MUL_PRIMLOD_ADD_T1() \ |
456 | T0_ADD_T1 (); \ |
457 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); \ |
458 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); \ |
459 | MOD_0_FAC (lod_frac & 0xFF); |
460 | #define T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0() \ |
461 | if (cmb.combine_ext) \ |
462 | { \ |
463 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, \ |
464 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, \ |
465 | GR_CMBX_DETAIL_FACTOR, 0, \ |
466 | GR_CMBX_ZERO, 0); \ |
467 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, \ |
468 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, \ |
469 | GR_CMBX_ZERO, 1, \ |
470 | GR_CMBX_ZERO, 0); \ |
471 | cmb.tex_ccolor = rdp.prim_color; \ |
472 | cmb.tex |= 3; \ |
473 | percent = (float)(lod_frac) / 255.0f; \ |
474 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
475 | } \ |
476 | else \ |
477 | { \ |
478 | T0_ADD_T1 (); \ |
479 | MOD_1 (TMOD_TEX_SUB_COL_MUL_FAC); \ |
480 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); \ |
481 | MOD_1_FAC (lod_frac & 0xFF); \ |
482 | } |
483 | #define PRIM_INTER_T0_USING_SHADEA() \ |
484 | if (!cmb.combine_ext) { \ |
485 | USE_T0 (); \ |
486 | }\ |
487 | else {\ |
488 | rdp.best_tex = 0; \ |
489 | cmb.tex |= 1, \ |
490 | cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ |
491 | cmb.t0c_ext_a_mode = GR_FUNC_MODE_X, \ |
492 | cmb.t0c_ext_b = GR_CMBX_TMU_CCOLOR, \ |
493 | cmb.t0c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
494 | cmb.t0c_ext_c = GR_CMBX_ITALPHA, \ |
495 | cmb.t0c_ext_c_invert = 0, \ |
496 | cmb.t0c_ext_d= GR_CMBX_B, \ |
497 | cmb.t0c_ext_d_invert = 0, \ |
498 | cmb.tex_ccolor = rdp.prim_color, \ |
499 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ |
500 | } |
501 | |
502 | #define A_USE_T0() \ |
503 | cmb.tex |= 1, \ |
504 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_LOCAL |
505 | #define A_USE_T1() \ |
506 | if (voodoo.num_tmu > 1) { \ |
507 | cmb.tex |= 2, \ |
508 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
509 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
510 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE; \ |
511 | } \ |
512 | else { \ |
513 | A_USE_T0(); \ |
514 | } |
515 | #define A_T0_ADD_T1() \ |
516 | cmb.tex |= 3, \ |
517 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
518 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
519 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE |
520 | #define A_T1_SUB_T0() \ |
521 | cmb.tex |= 3, \ |
522 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
523 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, \ |
524 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE |
525 | #define A_T0_SUB_T1() \ |
526 | cmb.tex |= 3, \ |
527 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
528 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND_LOCAL, \ |
529 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA |
530 | #define A_T0_MUL_T1() \ |
531 | cmb.tex |= 3, \ |
532 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
533 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ |
534 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_LOCAL |
535 | #define A_T0_INTER_T1_USING_T0A() \ |
536 | rdp.best_tex = 0; \ |
537 | cmb.tex |= 3, \ |
538 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
539 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ |
540 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_LOCAL_ALPHA |
541 | #define A_T1_INTER_T0_USING_T0A() \ |
542 | rdp.best_tex = 0; \ |
543 | cmb.tex |= 3, \ |
544 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
545 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ |
546 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA |
547 | #define A_T0_INTER_T1_USING_T1A() \ |
548 | rdp.best_tex = 0; \ |
549 | cmb.tex |= 3, \ |
550 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
551 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ |
552 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA |
553 | #define A_T0_INTER_T1_USING_FACTOR(factor) \ |
554 | if (factor == 0xFF) { \ |
555 | A_USE_T1(); \ |
556 | } \ |
557 | else if (factor == 0x00) { \ |
558 | A_USE_T0(); \ |
559 | }\ |
560 | else { \ |
561 | cmb.tex |= 3, \ |
562 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
563 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ |
564 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
565 | percent = (float)factor / 255.0f, \ |
566 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
567 | } |
568 | #define A_T1_INTER_T0_USING_FACTOR(factor) /* inverse of above */\ |
569 | if (factor == 0xFF) { \ |
570 | A_USE_T0(); \ |
571 | } \ |
572 | else if (factor == 0x00) { \ |
573 | A_USE_T1(); \ |
574 | }\ |
575 | else { \ |
576 | cmb.tex |= 3, \ |
577 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
578 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ |
579 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
580 | percent = (255 - factor) / 255.0f, \ |
581 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
582 | } |
583 | #define A_T0_INTER_T1_USING_SHADEA() \ |
584 | if (!cmb.combine_ext) { \ |
585 | A_T0_INTER_T1_USING_FACTOR (0x7F); \ |
586 | }\ |
587 | else {\ |
588 | rdp.best_tex = 0; \ |
589 | cmb.tex |= 3, \ |
590 | cmb.t1a_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA, \ |
591 | cmb.t1a_ext_a_mode = GR_FUNC_MODE_ZERO, \ |
592 | cmb.t1a_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA, \ |
593 | cmb.t1a_ext_b_mode = GR_FUNC_MODE_ZERO, \ |
594 | cmb.t1a_ext_c = GR_CMBX_ZERO, \ |
595 | cmb.t1a_ext_c_invert = 0, \ |
596 | cmb.t1a_ext_d= GR_CMBX_B, \ |
597 | cmb.t1a_ext_d_invert = 0, \ |
598 | cmb.t0a_ext_a = GR_CMBX_OTHER_TEXTURE_ALPHA, \ |
599 | cmb.t0a_ext_a_mode = GR_FUNC_MODE_X, \ |
600 | cmb.t0a_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA, \ |
601 | cmb.t0a_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X, \ |
602 | cmb.t0a_ext_c = GR_CMBX_ITALPHA, \ |
603 | cmb.t0a_ext_c_invert = 0, \ |
604 | cmb.t0a_ext_d= GR_CMBX_B, \ |
605 | cmb.t0a_ext_d_invert = 0, \ |
606 | cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_ALPHA; \ |
607 | } |
608 | #define A_T1_MUL_PRIMLOD_ADD_T0() \ |
609 | rdp.best_tex = 0; \ |
610 | cmb.tex |= 3, \ |
611 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
612 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
613 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
614 | percent = (float)(lod_frac) / 255.0f, \ |
615 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
616 | #define A_T1_MUL_PRIMA_ADD_T0() \ |
617 | rdp.best_tex = 0; \ |
618 | cmb.tex |= 3, \ |
619 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
620 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
621 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
622 | percent = (float)(rdp.prim_color&0xFF) / 255.0f, \ |
623 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
624 | #define A_T1_MUL_ENVA_ADD_T0() \ |
625 | rdp.best_tex = 0; \ |
626 | cmb.tex |= 3, \ |
627 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ |
628 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, \ |
629 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ |
630 | percent = (float)(rdp.env_color&0xFF) / 255.0f, \ |
631 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent |
632 | |
633 | |
634 | // UNIMP - writes to the unimplemented log, if it's enabled |
635 | #ifdef UNIMP_LOG |
636 | #define UNIMPMODE() { \ |
637 | std::ofstream unimp; \ |
638 | unimp.open("unimp.txt", std::ios::app); \ |
639 | unimp << out_buf; \ |
640 | unimp.close(); \ |
641 | } |
642 | #else |
643 | #define UNIMPMODE() |
644 | #endif |
645 | |
646 | // Bright red, sets up a bright red combine |
647 | #ifdef BRIGHT_RED |
648 | // Bright red, sets up a bright red combine during the alpha stage |
649 | #define BrightRed() { \ |
650 | CCMB (GR_COMBINE_FUNCTION_LOCAL, \ |
651 | GR_COMBINE_FACTOR_NONE, \ |
652 | GR_COMBINE_LOCAL_CONSTANT, \ |
653 | GR_COMBINE_OTHER_NONE); \ |
654 | ACMB (GR_COMBINE_FUNCTION_LOCAL, \ |
655 | GR_COMBINE_FACTOR_NONE, \ |
656 | GR_COMBINE_LOCAL_CONSTANT, \ |
657 | GR_COMBINE_OTHER_NONE); \ |
658 | cmb.ccolor = 0xFF0000FF; \ |
659 | } |
660 | #else |
661 | #define BrightRed() |
662 | #endif |
663 | |
664 | #define CC(color) cmb.ccolor=(color)&0xFFFFFF00 |
665 | #define CC_BYTE(byte) { cmb.ccolor=(byte<<8)|(byte<<16)|(byte<<24); } |
666 | #define CC_C1MULC2(color1, color2) { \ |
667 | cmb.ccolor=(wxUint8)( ((color1 & 0xFF000000) >> 24) * (((color2 & 0xFF000000) >> 24) /255.0f) ) << 24 | \ |
668 | (wxUint8)( ((color1 & 0x00FF0000) >> 16) * (((color2 & 0x00FF0000) >> 16) /255.0f) ) << 16 | \ |
669 | (wxUint8)( ((color1 & 0x0000FF00) >> 8) * (((color2 & 0x0000FF00) >> 8) /255.0f) ) << 8 ; \ |
670 | } |
671 | #define CC_C1SUBC2(color1, color2) { \ |
672 | cmb.ccolor=(wxUint8)( max(0, (int)((color1 & 0xFF000000) >> 24) - (int)((color2 & 0xFF000000) >> 24)) ) << 24 | \ |
673 | (wxUint8)( max(0, (int)((color1 & 0x00FF0000) >> 16) - (int)((color2 & 0x00FF0000) >> 16)) ) << 16 | \ |
674 | (wxUint8)( max(0, (int)((color1 & 0x0000FF00) >> 8) - (int)((color2 & 0x0000FF00) >> 8)) ) << 8 ; \ |
675 | } |
676 | #define CC_COLMULBYTE(color, byte) { \ |
677 | float factor = byte/255.0f; \ |
678 | cmb.ccolor = (wxUint8)( ((color & 0xFF000000) >> 24) * factor ) << 24 | \ |
679 | (wxUint8)( ((color & 0x00FF0000) >> 16) * factor ) << 16 | \ |
680 | (wxUint8)( ((color & 0x0000FF00) >> 8) * factor ) << 8 ; \ |
681 | } |
682 | #define CC_PRIM() CC(rdp.prim_color) |
683 | #define CC_ENV() CC(rdp.env_color) |
684 | #define CC_1SUBPRIM() CC((~rdp.prim_color)) |
685 | #define CC_1SUBENV() CC((~rdp.env_color)) |
686 | #define CC_PRIMA() CC_BYTE((rdp.prim_color&0xFF)) |
687 | #define CC_ENVA() CC_BYTE((rdp.env_color&0xFF)) |
688 | #define CC_1SUBPRIMA() CC_BYTE(((~rdp.prim_color)&0xFF)) |
689 | #define CC_1SUBENVA() CC_BYTE(((~rdp.env_color)&0xFF)) |
690 | #define CC_PRIMLOD() CC_BYTE(rdp.prim_lodfrac) |
691 | #define CC_K5() CC_BYTE(rdp.K5) |
692 | #define CC_PRIMMULENV() CC_C1MULC2(rdp.prim_color, rdp.env_color) |
693 | #define CC_PRIMSUBENV() CC_C1SUBC2(rdp.prim_color, rdp.env_color) |
694 | |
695 | #define XSHADE(color, flag) { \ |
696 | rdp.col[0] *= (float)((color & 0xFF000000) >> 24) / 255.0f; \ |
697 | rdp.col[1] *= (float)((color & 0x00FF0000) >> 16) / 255.0f; \ |
698 | rdp.col[2] *= (float)((color & 0x0000FF00) >> 8) / 255.0f; \ |
699 | rdp.cmb_flags |= flag; \ |
700 | } |
701 | #define XSHADE1M(color, flag) { \ |
702 | rdp.col[0] *= 1.0f-((float)((color & 0xFF000000) >> 24)/255.0f); \ |
703 | rdp.col[1] *= 1.0f-((float)((color & 0x00FF0000) >> 16)/255.0f); \ |
704 | rdp.col[2] *= 1.0f-((float)((color & 0x0000FF00) >> 8)/255.0f); \ |
705 | rdp.cmb_flags |= flag; \ |
706 | } |
707 | #define XSHADEC1MC2(color1, color2, flag) { \ |
708 | rdp.col[0] *= (float)( max(0, (int)((color1 & 0xFF000000) >> 24) - (int)((color2 & 0xFF000000) >> 24)) )/255.0f; \ |
709 | rdp.col[1] *= (float)( max(0, (int)((color1 & 0x00FF0000) >> 16) - (int)((color2 & 0x00FF0000) >> 16)) )/255.0f; \ |
710 | rdp.col[2] *= (float)( max(0, (int)((color1 & 0x0000FF00) >> 8) - (int)((color2 & 0x0000FF00) >> 8)) )/255.0f; \ |
711 | rdp.cmb_flags |= flag; \ |
712 | } |
713 | #define XSHADE_BYTE(byte, flag) { \ |
714 | float tmpcol = (float)byte / 255.0f; \ |
715 | rdp.col[0] *= tmpcol; \ |
716 | rdp.col[1] *= tmpcol; \ |
717 | rdp.col[2] *= tmpcol; \ |
718 | rdp.cmb_flags |= flag; \ |
719 | } |
720 | #define MULSHADE(color) XSHADE(color, CMB_MULT) |
721 | #define MULSHADE_PRIM() MULSHADE(rdp.prim_color) |
722 | #define MULSHADE_ENV() MULSHADE(rdp.env_color) |
723 | #define MULSHADE_1MPRIM() XSHADE1M(rdp.prim_color, CMB_MULT) |
724 | #define MULSHADE_1MENV() XSHADE1M(rdp.env_color, CMB_MULT) |
725 | #define MULSHADE_PRIMSUBENV() XSHADEC1MC2(rdp.prim_color, rdp.env_color, CMB_MULT) |
726 | #define MULSHADE_ENVSUBPRIM() XSHADEC1MC2(rdp.env_color, rdp.prim_color, CMB_MULT) |
727 | #define MULSHADE_BYTE(byte) XSHADE_BYTE(byte, CMB_MULT) |
728 | #define MULSHADE_PRIMA() MULSHADE_BYTE((rdp.prim_color & 0xFF)) |
729 | #define MULSHADE_ENVA() MULSHADE_BYTE((rdp.env_color & 0xFF)) |
730 | #define MULSHADE_1MENVA() MULSHADE_BYTE(((~rdp.env_color) & 0xFF)) |
731 | #define MULSHADE_PRIMLOD() MULSHADE_BYTE((rdp.prim_lodfrac & 0xFF)) |
732 | #define MULSHADE_K5() MULSHADE_BYTE(rdp.K5) |
733 | |
734 | #define SETSHADE(color) XSHADE(color, CMB_SET) |
735 | #define SETSHADE_PRIM() SETSHADE(rdp.prim_color) |
736 | #define SETSHADE_ENV() SETSHADE(rdp.env_color) |
737 | #define SETSHADE_BYTE(byte) XSHADE_BYTE(byte, CMB_SET) |
738 | #define SETSHADE_PRIMA() SETSHADE_BYTE((rdp.prim_color & 0xFF)) |
739 | #define SETSHADE_ENVA() SETSHADE_BYTE((rdp.env_color & 0xFF)) |
740 | #define SETSHADE_1MPRIMA() SETSHADE_BYTE(((~rdp.prim_color) & 0xFF)) |
741 | #define SETSHADE_PRIMLOD() SETSHADE_BYTE((rdp.prim_lodfrac & 0xFF)) |
742 | #define SETSHADE_1MPRIMLOD() SETSHADE_BYTE(((~rdp.prim_lodfrac) & 0xFF)) |
743 | |
744 | #define SETSHADE_1MPRIM() XSHADE1M(rdp.prim_color, CMB_SET) |
745 | #define SETSHADE_1MENV() XSHADE1M(rdp.env_color, CMB_SET) |
746 | #define SETSHADE_PRIMSUBENV() XSHADEC1MC2(rdp.prim_color, rdp.env_color, CMB_SET) |
747 | #define SETSHADE_ENVSUBPRIM() XSHADEC1MC2(rdp.env_color, rdp.prim_color, CMB_SET) |
748 | #define SETSHADE_SHADE_A() { \ |
749 | rdp.cmb_flags = CMB_SETSHADE_SHADEALPHA; \ |
750 | } |
751 | |
752 | #define XSHADEADD(color, flag) { \ |
753 | rdp.coladd[0] *= (float)((color & 0xFF000000) >> 24) / 255.0f; \ |
754 | rdp.coladd[1] *= (float)((color & 0x00FF0000) >> 16) / 255.0f; \ |
755 | rdp.coladd[2] *= (float)((color & 0x0000FF00) >> 8) / 255.0f; \ |
756 | rdp.cmb_flags |= flag; \ |
757 | } |
758 | #define XSHADEC1MC2ADD(color1, color2, flag) { \ |
759 | rdp.coladd[0] *= (float)( max(0, (int)((color1 & 0xFF000000) >> 24) - (int)((color2 & 0xFF000000) >> 24)) )/255.0f; \ |
760 | rdp.coladd[1] *= (float)( max(0, (int)((color1 & 0x00FF0000) >> 16) - (int)((color2 & 0x00FF0000) >> 16)) )/255.0f; \ |
761 | rdp.coladd[2] *= (float)( max(0, (int)((color1 & 0x0000FF00) >> 8) - (int)((color2 & 0x0000FF00) >> 8)) )/255.0f; \ |
762 | rdp.cmb_flags |= flag; \ |
763 | } |
764 | #define SUBSHADE_PRIM() XSHADEADD(rdp.prim_color, CMB_SUB) |
765 | #define SUBSHADE_ENV() XSHADEADD(rdp.env_color, CMB_SUB) |
766 | #define SUBSHADE_PRIMSUBENV() XSHADEC1MC2ADD(rdp.prim_color, rdp.env_color, CMB_SUB) |
767 | #define ADDSHADE_PRIM() XSHADEADD(rdp.prim_color, CMB_ADD) |
768 | #define ADDSHADE_ENV() XSHADEADD(rdp.env_color, CMB_ADD) |
769 | #define ADDSHADE_PRIMSUBENV() XSHADEC1MC2ADD(rdp.prim_color, rdp.env_color, CMB_ADD) |
770 | #define SUBSHADE_PRIMMULENV() { \ |
771 | rdp.coladd[0] *= (float)( ((rdp.prim_color & 0xFF000000) >> 24) * ((rdp.env_color & 0xFF000000) >> 24) )/255.0f/255.0f; \ |
772 | rdp.coladd[1] *= (float)( ((rdp.prim_color & 0x00FF0000) >> 16) * ((rdp.env_color & 0x00FF0000) >> 16) )/255.0f/255.0f; \ |
773 | rdp.coladd[2] *= (float)( ((rdp.prim_color & 0x0000FF00) >> 8) * ((rdp.env_color & 0x0000FF00) >> 8) )/255.0f/255.0f; \ |
774 | rdp.cmb_flags |= CMB_SUB; \ |
775 | } |
776 | |
777 | #define COLSUBSHADE_PRIM() { \ |
778 | rdp.coladd[0] *= (float)((rdp.prim_color & 0xFF000000) >> 24) / 255.0f; \ |
779 | rdp.coladd[1] *= (float)((rdp.prim_color & 0x00FF0000) >> 16) / 255.0f; \ |
780 | rdp.coladd[2] *= (float)((rdp.prim_color & 0x0000FF00) >> 8) / 255.0f; \ |
781 | rdp.cmb_flags |= CMB_COL_SUB_OWN; \ |
782 | } |
783 | |
784 | #define INTERSHADE_2(color,factor) { \ |
785 | rdp.col_2[0] = (((color) >> 24) & 0xFF) / 255.0f; \ |
786 | rdp.col_2[1] = (((color) >> 16) & 0xFF) / 255.0f; \ |
787 | rdp.col_2[2] = (((color) >> 8) & 0xFF) / 255.0f; \ |
788 | rdp.shade_factor = (factor) / 255.0f; \ |
789 | rdp.cmb_flags_2 = CMB_INTER; \ |
790 | } |
791 | |
792 | #define MULSHADE_SHADEA() rdp.cmb_flags |= CMB_MULT_OWN_ALPHA; |
793 | |
794 | #define CA(color) cmb.ccolor|=(color)&0xFF |
795 | #define CA_PRIM() CA(rdp.prim_color) |
796 | #define CA_ENV() CA(rdp.env_color) |
797 | #define CA_INVPRIM() cmb.ccolor|=0xFF-(rdp.prim_color&0xFF) |
798 | #define CA_INVENV() cmb.ccolor|=0xFF-(rdp.env_color&0xFF) |
799 | #define CA_ENV1MPRIM() cmb.ccolor|= (wxUint32)(((rdp.env_color&0xFF)/255.0f) * (((~(rdp.prim_color&0xFF)) & 0xff)/255.0f) * 255.0f); |
800 | #define CA_PRIMENV() cmb.ccolor |= (wxUint32)(((rdp.env_color&0xFF)/255.0f) * ((rdp.prim_color&0xFF)/255.0f) * 255.0f); |
801 | #define CA_PRIMLOD() cmb.ccolor |= rdp.prim_lodfrac; |
802 | #define CA_PRIM_MUL_PRIMLOD() cmb.ccolor |= (int)(((rdp.prim_color&0xFF) * rdp.prim_lodfrac) / 255.0f); |
803 | #define CA_ENV_MUL_PRIMLOD() cmb.ccolor |= (int)(((rdp.env_color&0xFF) * rdp.prim_lodfrac) / 255.0f); |
804 | |
805 | #define XSHADE_A(color, flag) { \ |
806 | rdp.col[3] *= (float)(color & 0xFF) / 255.0f; \ |
807 | rdp.cmb_flags |= flag; \ |
808 | } |
809 | #define XSHADE1M_A(color, flag) { \ |
810 | rdp.col[3] *= 1.0f-((float)(color & 0xFF) / 255.0f); \ |
811 | rdp.cmb_flags |= flag; \ |
812 | } |
813 | #define XSHADEC1MC2_A(color1, color2, flag) { \ |
814 | rdp.col[3] *= (float)( max(0, (int)(color1 & 0xFF) - (int)(color2 & 0xFF)) ) / 255.0f; \ |
815 | rdp.cmb_flags |= flag; \ |
816 | } |
817 | #define MULSHADE_A_PRIM() XSHADE_A(rdp.prim_color, CMB_A_MULT) |
818 | #define MULSHADE_A_1MPRIM() XSHADE1M_A(rdp.prim_color, CMB_A_MULT) |
819 | #define MULSHADE_A_ENV() XSHADE_A(rdp.env_color, CMB_A_MULT) |
820 | #define MULSHADE_A_PRIMSUBENV() XSHADEC1MC2_A(rdp.prim_color, rdp.env_color, CMB_A_MULT) |
821 | #define MULSHADE_A_ENVSUBPRIM() XSHADEC1MC2_A(rdp.env_color, rdp.prim_color, CMB_A_MULT) |
822 | #define SETSHADE_A(color) XSHADE_A(color, CMB_A_SET) |
823 | #define SETSHADE_A_PRIM() SETSHADE_A(rdp.prim_color) |
824 | #define SETSHADE_A_ENV() SETSHADE_A(rdp.env_color) |
825 | #define SETSHADE_A_PRIMSUBENV() XSHADEC1MC2_A(rdp.prim_color, rdp.env_color, CMB_A_SET) |
826 | #define SETSHADE_A_INVENV() XSHADE1M_A(rdp.env_color, CMB_A_SET) |
827 | |
828 | #define XSHADEADD_A(color, flag) { \ |
829 | rdp.coladd[3] *= (float)(color & 0xFF) / 255.0f; \ |
830 | rdp.cmb_flags |= flag; \ |
831 | } |
832 | #define SUBSHADE_A_PRIM() XSHADEADD_A(rdp.prim_color, CMB_A_SUB) |
833 | #define SUBSHADE_A_ENV() XSHADEADD_A(rdp.env_color, CMB_A_SUB) |
834 | #define ADDSHADE_A_PRIM() XSHADEADD_A(rdp.prim_color, CMB_A_ADD) |
835 | #define ADDSHADE_A_ENV() XSHADEADD_A(rdp.env_color, CMB_A_ADD) |
836 | |
837 | //**************************************************************** |
838 | // Combine Functions |
839 | //**************************************************************** |
840 | |
841 | // These are in a somewhat ordered way, using the A constants below. T0 comes before |
842 | // T1 comes before PRIM, ... except for CMB, which always comes at the end, where |
843 | // the CMB comes first in the name. T0 and T1 are always interleaved, because they use the |
844 | // same function. |
845 | // Keep going in alphabetical order, but do not break the order of variables! |
846 | // ex: A*C + B*C -> T0_MUL_PRIM_ADD_ENV_MUL_PRIM, |
847 | // Although prim comes before env, we have already used prim as C, so it must stay as C |
848 | // and would NOT become T0_MUL_PRIM_ADD_PRIM_MUL_ENV |
849 | // |
850 | // New version ordered by: |
851 | // t0 |
852 | // prim |
853 | // env |
854 | // shade |
855 | |
856 | static void cc_one () |
857 | { |
858 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
859 | GR_COMBINE_FACTOR_NONE, |
860 | GR_COMBINE_LOCAL_CONSTANT, |
861 | GR_COMBINE_OTHER_NONE); |
862 | // CC (0xFFFFFF00); |
863 | CC (0xFFFFFF00); |
864 | } |
865 | |
866 | static void cc_zero () |
867 | { |
868 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
869 | GR_COMBINE_FACTOR_NONE, |
870 | GR_COMBINE_LOCAL_CONSTANT, |
871 | GR_COMBINE_OTHER_NONE); |
872 | CC (0x00000000); |
873 | } |
874 | |
875 | static void cc_t0 () |
876 | { |
877 | if ((rdp.othermode_l & 0x4000) && (rdp.cycle_mode < 2)) |
878 | { |
879 | wxUint32 blend_mode = (rdp.othermode_l >> 16); |
880 | if (blend_mode == 0xa500) |
881 | { |
882 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
883 | GR_COMBINE_FACTOR_ONE, |
884 | GR_COMBINE_LOCAL_CONSTANT, |
885 | GR_COMBINE_OTHER_TEXTURE); |
886 | float fog = (rdp.fog_color&0xFF)/255.0f; |
887 | wxUint32 R = (wxUint32)(((rdp.blend_color>>24)&0xFF)*fog); |
888 | wxUint32 G = (wxUint32)(((rdp.blend_color>>16)&0xFF)*fog); |
889 | wxUint32 B = (wxUint32)(((rdp.blend_color>> 8)&0xFF)*fog); |
890 | CC((R<<24)|(G<<16)|(B<<8)); |
891 | } |
892 | else if (blend_mode == 0x55f0) //cmem*afog + cfog*1ma |
893 | { |
894 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
895 | GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA, |
896 | GR_COMBINE_LOCAL_NONE, |
897 | GR_COMBINE_OTHER_CONSTANT); |
898 | CC(rdp.fog_color); |
899 | A_USE_T0 (); |
900 | } |
901 | else |
902 | { |
903 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
904 | GR_COMBINE_FACTOR_ONE, |
905 | GR_COMBINE_LOCAL_NONE, |
906 | GR_COMBINE_OTHER_TEXTURE); |
907 | } |
908 | } |
909 | else |
910 | { |
911 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
912 | GR_COMBINE_FACTOR_ONE, |
913 | GR_COMBINE_LOCAL_NONE, |
914 | GR_COMBINE_OTHER_TEXTURE); |
915 | } |
916 | USE_T0 (); |
917 | } |
918 | |
919 | static void cc_t0a () |
920 | { |
921 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
922 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
923 | GR_COMBINE_LOCAL_NONE, |
924 | GR_COMBINE_OTHER_CONSTANT); |
925 | USE_T0 (); |
926 | A_USE_T0 (); |
927 | CC (0xFFFFFF00); |
928 | } |
929 | |
930 | static void cc_t1 () //Added by Gonetz |
931 | { |
932 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
933 | GR_COMBINE_FACTOR_ONE, |
934 | GR_COMBINE_LOCAL_NONE, |
935 | GR_COMBINE_OTHER_TEXTURE); |
936 | USE_T1 (); |
937 | } |
938 | |
939 | static void cc_t0_mul_t1 () |
940 | { |
941 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
942 | GR_COMBINE_FACTOR_ONE, |
943 | GR_COMBINE_LOCAL_NONE, |
944 | GR_COMBINE_OTHER_TEXTURE); |
945 | T0_MUL_T1 (); |
946 | } |
947 | |
948 | static void cc_t0_mul_t1_add_t0 () //Added by Gonetz |
949 | { |
950 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
951 | GR_COMBINE_FACTOR_ONE, |
952 | GR_COMBINE_LOCAL_NONE, |
953 | GR_COMBINE_OTHER_TEXTURE); |
954 | T0_MUL_T1_ADD_T0 (); |
955 | } |
956 | |
957 | /* |
958 | static void cc_t1_inter__env_inter_t0_using_k5__using_t1a () |
959 | { |
960 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
961 | GR_COMBINE_FACTOR_ONE, |
962 | GR_COMBINE_LOCAL_NONE, |
963 | GR_COMBINE_OTHER_TEXTURE); |
964 | wxUint32 col1 = (rdp.K5<<24) | (rdp.K5<<16) | (rdp.K5<<8); |
965 | MOD_0 (TMOD_COL_INTER_TEX_USING_COL1); |
966 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
967 | MOD_0_COL1 (col1 & 0xFFFFFF00); |
968 | rdp.best_tex = 0; |
969 | cmb.tex |= 3; |
970 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL; |
971 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL; |
972 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND; |
973 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA; |
974 | } |
975 | */ |
976 | |
977 | static void cc_t1_inter_t0_using_env () |
978 | { |
979 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
980 | GR_COMBINE_FACTOR_ONE, |
981 | GR_COMBINE_LOCAL_NONE, |
982 | GR_COMBINE_OTHER_TEXTURE); |
983 | T1_INTER_T0_USING_ENV (); |
984 | } |
985 | |
986 | static void cc_prim () |
987 | { |
988 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
989 | GR_COMBINE_FACTOR_NONE, |
990 | GR_COMBINE_LOCAL_CONSTANT, |
991 | GR_COMBINE_OTHER_NONE); |
992 | CC_PRIM (); |
993 | } |
994 | |
995 | static void cc_env () |
996 | { |
997 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
998 | GR_COMBINE_FACTOR_NONE, |
999 | GR_COMBINE_LOCAL_CONSTANT, |
1000 | GR_COMBINE_OTHER_NONE); |
1001 | CC_ENV (); |
1002 | } |
1003 | |
1004 | static void cc_scale () |
1005 | { |
1006 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
1007 | GR_COMBINE_FACTOR_NONE, |
1008 | GR_COMBINE_LOCAL_CONSTANT, |
1009 | GR_COMBINE_OTHER_NONE); |
1010 | CC (rdp.SCALE); |
1011 | } |
1012 | |
1013 | static void cc_shade () |
1014 | { |
1015 | CCMB (GR_COMBINE_FUNCTION_LOCAL, |
1016 | GR_COMBINE_FACTOR_NONE, |
1017 | GR_COMBINE_LOCAL_ITERATED, |
1018 | GR_COMBINE_OTHER_NONE); |
1019 | } |
1020 | |
1021 | static void cc_one_mul_shade () |
1022 | { |
1023 | if ((settings.hacks&hack_Knockout) && (rdp.aTBuffTex[0] || rdp.aTBuffTex[1] || rdp.cur_image)) //hack for boxer shadow |
1024 | { |
1025 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1026 | GR_COMBINE_FACTOR_LOCAL, |
1027 | GR_COMBINE_LOCAL_CONSTANT, |
1028 | GR_COMBINE_OTHER_TEXTURE); |
1029 | CC (0x20202000); |
1030 | USE_T0 (); |
1031 | } |
1032 | else |
1033 | { |
1034 | cc_shade (); |
1035 | } |
1036 | } |
1037 | |
1038 | static void cc_shadea () |
1039 | { |
1040 | CCMB (GR_COMBINE_FUNCTION_LOCAL_ALPHA, |
1041 | GR_COMBINE_FACTOR_NONE, |
1042 | GR_COMBINE_LOCAL_ITERATED, |
1043 | GR_COMBINE_OTHER_NONE); |
1044 | } |
1045 | |
1046 | static void cc_t0_mul_prim () |
1047 | { |
1048 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1049 | GR_COMBINE_FACTOR_LOCAL, |
1050 | GR_COMBINE_LOCAL_CONSTANT, |
1051 | GR_COMBINE_OTHER_TEXTURE); |
1052 | CC_PRIM (); |
1053 | USE_T0 (); |
1054 | } |
1055 | |
1056 | static void cc_t0_mul_prima () |
1057 | { |
1058 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1059 | GR_COMBINE_FACTOR_LOCAL, |
1060 | GR_COMBINE_LOCAL_CONSTANT, |
1061 | GR_COMBINE_OTHER_TEXTURE); |
1062 | CC_PRIMA (); |
1063 | USE_T0 (); |
1064 | } |
1065 | |
1066 | static void cc_t1_mul_prim () |
1067 | { |
1068 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1069 | GR_COMBINE_FACTOR_LOCAL, |
1070 | GR_COMBINE_LOCAL_CONSTANT, |
1071 | GR_COMBINE_OTHER_TEXTURE); |
1072 | CC_PRIM (); |
1073 | if ((rdp.cycle1 & 0xFFFF) == (rdp.cycle2 & 0xFFFF)) // 1 cycle, use t0 |
1074 | { |
1075 | USE_T0 (); |
1076 | } |
1077 | else |
1078 | { |
1079 | USE_T1 (); |
1080 | } |
1081 | } |
1082 | |
1083 | static void cc_t0a_mul_prim () |
1084 | { |
1085 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1086 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
1087 | GR_COMBINE_LOCAL_NONE, |
1088 | GR_COMBINE_OTHER_CONSTANT); |
1089 | CC_PRIM (); |
1090 | A_USE_T0 (); |
1091 | } |
1092 | |
1093 | //Added by Gonetz |
1094 | static void cc__t1_inter_t0_using_enva__mul_prim () |
1095 | { |
1096 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1097 | GR_COMBINE_FACTOR_LOCAL, |
1098 | GR_COMBINE_LOCAL_CONSTANT, |
1099 | GR_COMBINE_OTHER_TEXTURE); |
1100 | CC_PRIM (); |
1101 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
1102 | T1_INTER_T0_USING_FACTOR (factor); |
1103 | } |
1104 | |
1105 | static void cc__t0_inter_one_using_t1__mul_prim () |
1106 | { |
1107 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1108 | GR_COMBINE_FACTOR_LOCAL, |
1109 | GR_COMBINE_LOCAL_CONSTANT, |
1110 | GR_COMBINE_OTHER_TEXTURE); |
1111 | CC_PRIM (); |
1112 | rdp.best_tex = 0; |
1113 | cmb.tex |= 3; |
1114 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL; |
1115 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL; |
1116 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE_MINUS_LOCAL; |
1117 | } |
1118 | |
1119 | static void cc__t0_inter_one_using_primlod__mul_prim () |
1120 | { |
1121 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1122 | GR_COMBINE_FACTOR_LOCAL, |
1123 | GR_COMBINE_LOCAL_CONSTANT, |
1124 | GR_COMBINE_OTHER_TEXTURE); |
1125 | CC_PRIM (); |
1126 | if (cmb.combine_ext) |
1127 | { |
1128 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1129 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
1130 | GR_CMBX_DETAIL_FACTOR, 0, |
1131 | GR_CMBX_B, 0); |
1132 | cmb.tex |= 1; |
1133 | percent = (float)lod_frac / 255.0f; |
1134 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
1135 | } |
1136 | else |
1137 | { |
1138 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
1139 | MOD_0_COL (0xFFFFFF00); |
1140 | MOD_0_FAC (lod_frac); |
1141 | USE_T0 (); |
1142 | } |
1143 | } |
1144 | |
1145 | static void cc__t1_inter_one_using_env__mul_prim () |
1146 | { |
1147 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1148 | GR_COMBINE_FACTOR_LOCAL, |
1149 | GR_COMBINE_LOCAL_CONSTANT, |
1150 | GR_COMBINE_OTHER_TEXTURE); |
1151 | CC_PRIM (); |
1152 | if (cmb.combine_ext) |
1153 | { |
1154 | T1CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
1155 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1156 | GR_CMBX_LOCAL_TEXTURE_RGB, 1, |
1157 | GR_CMBX_B, 0); |
1158 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1159 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1160 | GR_CMBX_ZERO, 1, |
1161 | GR_CMBX_ZERO, 0); |
1162 | cmb.tex |= 2; |
1163 | cmb.tex_ccolor = rdp.env_color; |
1164 | } |
1165 | else |
1166 | { |
1167 | USE_T1 (); |
1168 | } |
1169 | } |
1170 | |
1171 | static void cc__t1_inter_one_using_enva__mul_t0 () |
1172 | { |
1173 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1174 | GR_COMBINE_FACTOR_ONE, |
1175 | GR_COMBINE_LOCAL_NONE, |
1176 | GR_COMBINE_OTHER_TEXTURE); |
1177 | if (cmb.combine_ext) |
1178 | { |
1179 | T1CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
1180 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1181 | GR_CMBX_TMU_CALPHA, 0, |
1182 | GR_CMBX_B, 0); |
1183 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1184 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1185 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1186 | GR_CMBX_ZERO, 0); |
1187 | cmb.tex |= 3; |
1188 | cmb.tex_ccolor = 0xFFFFFF00 | (rdp.env_color&0xFF); |
1189 | } |
1190 | else |
1191 | { |
1192 | if ((rdp.env_color&0xFF) == 0xFF) |
1193 | { |
1194 | USE_T0 (); |
1195 | } |
1196 | else |
1197 | { |
1198 | T0_MUL_T1 (); |
1199 | } |
1200 | } |
1201 | } |
1202 | |
1203 | //Added by Gonetz |
1204 | static void cc_prim_mul_prim () |
1205 | { |
1206 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1207 | GR_COMBINE_FACTOR_LOCAL, |
1208 | GR_COMBINE_LOCAL_ITERATED, |
1209 | GR_COMBINE_OTHER_CONSTANT); |
1210 | CC_PRIM (); |
1211 | SETSHADE_PRIM (); |
1212 | } |
1213 | |
1214 | static void cc_prim_mul_prima () |
1215 | { |
1216 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1217 | GR_COMBINE_FACTOR_LOCAL, |
1218 | GR_COMBINE_LOCAL_CONSTANT, |
1219 | GR_COMBINE_OTHER_ITERATED); |
1220 | CC_PRIM (); |
1221 | SETSHADE_PRIMA (); |
1222 | } |
1223 | |
1224 | static void cc_t1_mul_prima () |
1225 | { |
1226 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1227 | GR_COMBINE_FACTOR_LOCAL, |
1228 | GR_COMBINE_LOCAL_CONSTANT, |
1229 | GR_COMBINE_OTHER_TEXTURE); |
1230 | CC_PRIMA (); |
1231 | USE_T1 (); |
1232 | } |
1233 | |
1234 | static void cc_t1_mul_enva () |
1235 | { |
1236 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1237 | GR_COMBINE_FACTOR_LOCAL, |
1238 | GR_COMBINE_LOCAL_CONSTANT, |
1239 | GR_COMBINE_OTHER_TEXTURE); |
1240 | CC_ENVA (); |
1241 | USE_T1 (); |
1242 | } |
1243 | |
1244 | static void cc_t0_mul_env () |
1245 | { |
1246 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1247 | GR_COMBINE_FACTOR_LOCAL, |
1248 | GR_COMBINE_LOCAL_CONSTANT, |
1249 | GR_COMBINE_OTHER_TEXTURE); |
1250 | CC_ENV (); |
1251 | USE_T0 (); |
1252 | } |
1253 | |
1254 | static void cc_t1_mul_env () |
1255 | { |
1256 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1257 | GR_COMBINE_FACTOR_LOCAL, |
1258 | GR_COMBINE_LOCAL_CONSTANT, |
1259 | GR_COMBINE_OTHER_TEXTURE); |
1260 | CC_ENV (); |
1261 | USE_T1 (); |
1262 | } |
1263 | |
1264 | //Added by Gonetz |
1265 | static void cc_t0_mul_enva () |
1266 | { |
1267 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1268 | GR_COMBINE_FACTOR_LOCAL, |
1269 | GR_COMBINE_LOCAL_CONSTANT, |
1270 | GR_COMBINE_OTHER_TEXTURE); |
1271 | CC_ENVA (); |
1272 | USE_T0 (); |
1273 | } |
1274 | |
1275 | static void cc_t0_mul_scale () |
1276 | { |
1277 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1278 | GR_COMBINE_FACTOR_LOCAL, |
1279 | GR_COMBINE_LOCAL_CONSTANT, |
1280 | GR_COMBINE_OTHER_TEXTURE); |
1281 | CC (rdp.SCALE); |
1282 | USE_T0 (); |
1283 | } |
1284 | |
1285 | static void cc_t0_mul_enva_add_prim () |
1286 | { |
1287 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1288 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
1289 | GR_COMBINE_LOCAL_ITERATED, |
1290 | GR_COMBINE_OTHER_CONSTANT); |
1291 | SETSHADE_PRIM (); |
1292 | CC_ENVA (); |
1293 | USE_T0 (); |
1294 | } |
1295 | |
1296 | static void cc_t0_mul_shade () |
1297 | { |
1298 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1299 | GR_COMBINE_FACTOR_LOCAL, |
1300 | GR_COMBINE_LOCAL_ITERATED, |
1301 | GR_COMBINE_OTHER_TEXTURE); |
1302 | USE_T0 (); |
1303 | } |
1304 | |
1305 | static void cc_f1_sky () |
1306 | { |
1307 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
1308 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
1309 | GR_COMBINE_LOCAL_ITERATED, |
1310 | GR_COMBINE_OTHER_CONSTANT); |
1311 | MULSHADE_SHADEA (); |
1312 | MULSHADE_ENVSUBPRIM (); |
1313 | ADDSHADE_PRIM(); |
1314 | CC(0xFFFFFFFF); |
1315 | } |
1316 | |
1317 | static void cc_t0_mul_shadea () |
1318 | { |
1319 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1320 | GR_COMBINE_FACTOR_LOCAL, |
1321 | GR_COMBINE_LOCAL_ITERATED, |
1322 | GR_COMBINE_OTHER_TEXTURE); |
1323 | SETSHADE_SHADE_A (); |
1324 | USE_T0 (); |
1325 | } |
1326 | |
1327 | static void cc_t0_mul_k5 () |
1328 | { |
1329 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1330 | GR_COMBINE_FACTOR_LOCAL, |
1331 | GR_COMBINE_LOCAL_CONSTANT, |
1332 | GR_COMBINE_OTHER_TEXTURE); |
1333 | CC_K5 (); |
1334 | USE_T0 (); |
1335 | } |
1336 | |
1337 | static void cc_t1_mul_shade () |
1338 | { |
1339 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1340 | GR_COMBINE_FACTOR_LOCAL, |
1341 | GR_COMBINE_LOCAL_ITERATED, |
1342 | GR_COMBINE_OTHER_TEXTURE); |
1343 | USE_T1 (); |
1344 | } |
1345 | |
1346 | //Added by Gonetz |
1347 | static void cc__t0_add_t1__mul_shade () |
1348 | { |
1349 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1350 | GR_COMBINE_FACTOR_LOCAL, |
1351 | GR_COMBINE_LOCAL_ITERATED, |
1352 | GR_COMBINE_OTHER_TEXTURE); |
1353 | T0_ADD_T1 (); |
1354 | } |
1355 | |
1356 | static void cc__t0_mul_shade__add__t1_mul_shade () |
1357 | { |
1358 | //combiner is used in Spiderman. It seems that t0 is used instead of t1 |
1359 | if (cmb.combine_ext) |
1360 | { |
1361 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1362 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1363 | GR_CMBX_ITRGB, 0, |
1364 | GR_CMBX_ZERO, 0); |
1365 | cmb.tex |= 1; |
1366 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
1367 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1368 | GR_CMBX_ZERO, 1, |
1369 | GR_CMBX_B, 0); |
1370 | } |
1371 | else |
1372 | { |
1373 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1374 | GR_COMBINE_FACTOR_LOCAL, |
1375 | GR_COMBINE_LOCAL_ITERATED, |
1376 | GR_COMBINE_OTHER_TEXTURE); |
1377 | USE_T0 (); |
1378 | } |
1379 | } |
1380 | |
1381 | static void cc__t0_mul_prim__inter_env_using_enva () |
1382 | { |
1383 | wxUint32 enva = rdp.env_color&0xFF; |
1384 | if (enva == 0xFF) |
1385 | cc_env (); |
1386 | else if (enva == 0) |
1387 | cc_t0_mul_prim (); |
1388 | else if (cmb.combine_ext) |
1389 | { |
1390 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1391 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
1392 | GR_CMBX_TMU_CCOLOR, 0, |
1393 | GR_CMBX_ZERO, 0); |
1394 | cmb.tex |= 1; |
1395 | cmb.tex_ccolor = rdp.prim_color; |
1396 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
1397 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1398 | GR_CMBX_CONSTANT_COLOR, 0, |
1399 | GR_CMBX_B, 0); |
1400 | SETSHADE_ENV(); |
1401 | CC_ENVA(); |
1402 | } |
1403 | else |
1404 | { |
1405 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1406 | GR_COMBINE_FACTOR_LOCAL, |
1407 | GR_COMBINE_LOCAL_ITERATED, |
1408 | GR_COMBINE_OTHER_TEXTURE); |
1409 | SETSHADE_PRIM(); |
1410 | INTERSHADE_2 (rdp.env_color & 0xFFFFFF00, rdp.env_color & 0xFF); |
1411 | USE_T0 (); |
1412 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
1413 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
1414 | MOD_0_FAC (rdp.env_color & 0xFF); |
1415 | } |
1416 | } |
1417 | |
1418 | |
1419 | static void cc__t1_inter_t0_using_t1__mul_shade () |
1420 | { |
1421 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1422 | GR_COMBINE_FACTOR_LOCAL, |
1423 | GR_COMBINE_LOCAL_ITERATED, |
1424 | GR_COMBINE_OTHER_TEXTURE); |
1425 | if (cmb.combine_ext) |
1426 | { |
1427 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1428 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1429 | GR_CMBX_ZERO, 0, |
1430 | GR_CMBX_B, 0); |
1431 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1432 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1433 | GR_CMBX_B, 0, |
1434 | GR_CMBX_B, 0); |
1435 | cmb.tex |= 3; |
1436 | } |
1437 | else |
1438 | { |
1439 | T0_INTER_T1_USING_FACTOR (0x7F); |
1440 | } |
1441 | } |
1442 | |
1443 | //Added by Gonetz |
1444 | static void cc__t1_inter_t0_using_enva__mul_shade () |
1445 | { |
1446 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1447 | GR_COMBINE_FACTOR_LOCAL, |
1448 | GR_COMBINE_LOCAL_ITERATED, |
1449 | GR_COMBINE_OTHER_TEXTURE); |
1450 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
1451 | T1_INTER_T0_USING_FACTOR (factor); |
1452 | } |
1453 | |
1454 | //Added by Gonetz |
1455 | static void cc__t1_inter_t0_using_shadea__mul_shade () |
1456 | { |
1457 | if (!cmb.combine_ext) { |
1458 | cc_t0_mul_shade (); |
1459 | return; |
1460 | } |
1461 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1462 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
1463 | GR_CMBX_ITRGB, 0, |
1464 | GR_CMBX_ZERO, 0); |
1465 | T1_INTER_T0_USING_SHADEA (); |
1466 | } |
1467 | |
1468 | //Added by Gonetz |
1469 | static void cc__t0_inter_one_using_prim__mul_shade () |
1470 | { |
1471 | // (1-t0)*prim+t0, (cmb-0)*shade+0 |
1472 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1473 | GR_COMBINE_FACTOR_LOCAL, |
1474 | GR_COMBINE_LOCAL_ITERATED, |
1475 | GR_COMBINE_OTHER_TEXTURE); |
1476 | if (cmb.combine_ext) |
1477 | { |
1478 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
1479 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ONE_MINUS_X, |
1480 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1481 | GR_CMBX_B, 0); |
1482 | cmb.tex |= 1; |
1483 | cmb.tex_ccolor = rdp.prim_color; |
1484 | } |
1485 | else |
1486 | { |
1487 | USE_T0 (); |
1488 | MOD_0 (TMOD_TEX_INTER_COL_USING_COL1); |
1489 | MOD_0_COL (0xFFFFFF00); |
1490 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
1491 | } |
1492 | } |
1493 | |
1494 | static void cc__t0_inter_one_using_primlod__mul_shade () |
1495 | { |
1496 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1497 | GR_COMBINE_FACTOR_LOCAL, |
1498 | GR_COMBINE_LOCAL_ITERATED, |
1499 | GR_COMBINE_OTHER_TEXTURE); |
1500 | if (cmb.combine_ext) |
1501 | { |
1502 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1503 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
1504 | GR_CMBX_DETAIL_FACTOR, 0, |
1505 | GR_CMBX_B, 0); |
1506 | cmb.tex |= 1; |
1507 | percent = (float)lod_frac / 255.0f; |
1508 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
1509 | } |
1510 | else |
1511 | { |
1512 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
1513 | MOD_0_COL (0xFFFFFF00); |
1514 | MOD_0_FAC (lod_frac); |
1515 | USE_T0 (); |
1516 | } |
1517 | } |
1518 | |
1519 | //Added by Gonetz |
1520 | static void cc__t0_inter_env_using_enva__mul_shade () |
1521 | { |
1522 | // (env-t0)*env_a+t0, (cmb-0)*shade+0 |
1523 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1524 | GR_COMBINE_FACTOR_LOCAL, |
1525 | GR_COMBINE_LOCAL_ITERATED, |
1526 | GR_COMBINE_OTHER_TEXTURE); |
1527 | if (cmb.combine_ext) |
1528 | { |
1529 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
1530 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1531 | GR_CMBX_TMU_CALPHA, 0, |
1532 | GR_CMBX_B, 0); |
1533 | cmb.tex |= 1; |
1534 | cmb.tex_ccolor = rdp.env_color; |
1535 | } |
1536 | else |
1537 | { |
1538 | USE_T0 (); |
1539 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
1540 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
1541 | MOD_0_FAC (rdp.env_color&0xFF); |
1542 | } |
1543 | } |
1544 | |
1545 | //Added by Gonetz |
1546 | static void cc__t0_inter_env_using_shadea__mul_shade () |
1547 | { |
1548 | // (env-t0)*shade_a+t0, (cmb-0)*shade+0 |
1549 | if (cmb.combine_ext) |
1550 | { |
1551 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
1552 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1553 | GR_CMBX_ITALPHA, 0, |
1554 | GR_CMBX_B, 0); |
1555 | cmb.tex |= 1; |
1556 | cmb.tex_ccolor = rdp.env_color; |
1557 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1558 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
1559 | GR_CMBX_ITRGB, 0, |
1560 | GR_CMBX_ZERO, 0); |
1561 | } |
1562 | else |
1563 | { |
1564 | cc_t0_mul_shade (); |
1565 | } |
1566 | } |
1567 | |
1568 | static void cc__t0_mul_prim_add_env__mul_shade () |
1569 | { |
1570 | if (cmb.combine_ext) |
1571 | { |
1572 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1573 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1574 | GR_CMBX_TMU_CCOLOR, 0, |
1575 | GR_CMBX_ZERO, 0); |
1576 | cmb.tex |= 1; |
1577 | cmb.tex_ccolor = rdp.prim_color; |
1578 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1579 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
1580 | GR_CMBX_ITRGB, 0, |
1581 | GR_CMBX_ZERO, 0); |
1582 | CC_ENV (); |
1583 | } |
1584 | else |
1585 | { |
1586 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1587 | GR_COMBINE_FACTOR_LOCAL, |
1588 | GR_COMBINE_LOCAL_ITERATED, |
1589 | GR_COMBINE_OTHER_TEXTURE); |
1590 | MOD_0 (TMOD_TEX_SCALE_COL_ADD_COL); |
1591 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1592 | MOD_0_COL1 (rdp.env_color & 0xFFFFFF00); |
1593 | USE_T0 (); |
1594 | } |
1595 | } |
1596 | |
1597 | static void cc__t1_sub_t0_mul_primlod_add_prim__mul_shade () |
1598 | { |
1599 | if (cmb.combine_ext) |
1600 | { |
1601 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1602 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1603 | GR_CMBX_ZERO, 0, |
1604 | GR_CMBX_B, 0); |
1605 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1606 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1607 | GR_CMBX_DETAIL_FACTOR, 0, |
1608 | GR_CMBX_ZERO, 0); |
1609 | cmb.tex |= 3; |
1610 | percent = (float)lod_frac / 255.0f; |
1611 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
1612 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1613 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
1614 | GR_CMBX_ITRGB, 0, |
1615 | GR_CMBX_ZERO, 0); |
1616 | CC_PRIM (); |
1617 | } |
1618 | else |
1619 | { |
1620 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1621 | GR_COMBINE_FACTOR_LOCAL, |
1622 | GR_COMBINE_LOCAL_ITERATED, |
1623 | GR_COMBINE_OTHER_TEXTURE); |
1624 | T0_INTER_T1_USING_FACTOR (lod_frac); |
1625 | } |
1626 | } |
1627 | |
1628 | static void cc__t1_sub_prim_mul_t0__mul_shade () |
1629 | { |
1630 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1631 | GR_COMBINE_FACTOR_LOCAL, |
1632 | GR_COMBINE_LOCAL_ITERATED, |
1633 | GR_COMBINE_OTHER_TEXTURE); |
1634 | if (cmb.combine_ext) |
1635 | { |
1636 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1637 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1638 | GR_CMBX_ZERO, 0, |
1639 | GR_CMBX_B, 0); |
1640 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1641 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
1642 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1643 | GR_CMBX_ZERO, 0); |
1644 | cmb.tex_ccolor = rdp.prim_color; |
1645 | cmb.tex |= 3; |
1646 | } |
1647 | else |
1648 | { |
1649 | T0_MUL_T1 (); |
1650 | } |
1651 | } |
1652 | |
1653 | static void cc__t1_sub_t0_mul_t0_add_shade__mul_shade () //Aded by Gonetz |
1654 | { |
1655 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1656 | GR_COMBINE_FACTOR_ONE, |
1657 | GR_COMBINE_LOCAL_ITERATED, |
1658 | GR_COMBINE_OTHER_TEXTURE); |
1659 | if (cmb.combine_ext) |
1660 | { |
1661 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1662 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1663 | GR_CMBX_ZERO, 0, |
1664 | GR_CMBX_B, 0); |
1665 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1666 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1667 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1668 | GR_CMBX_ITRGB, 0); |
1669 | cmb.tex |= 3; |
1670 | } |
1671 | else |
1672 | { |
1673 | T1_SUB_T0_MUL_T0 (); |
1674 | } |
1675 | } |
1676 | |
1677 | static void cc__one_sub_shade_mul_t0_add_shade__mul_shade () |
1678 | { |
1679 | if (cmb.combine_ext) |
1680 | { |
1681 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1682 | GR_CMBX_ITRGB, GR_FUNC_MODE_ONE_MINUS_X, |
1683 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1684 | GR_CMBX_B, 0); |
1685 | cmb.tex |= 1; |
1686 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1687 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
1688 | GR_CMBX_ITRGB, 0, |
1689 | GR_CMBX_ZERO, 0); |
1690 | } |
1691 | else |
1692 | { |
1693 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1694 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
1695 | GR_COMBINE_LOCAL_ITERATED, |
1696 | GR_COMBINE_OTHER_TEXTURE); |
1697 | USE_T0 (); |
1698 | } |
1699 | } |
1700 | |
1701 | static void cc__t0_sub_prim_mul_t1_add_t1__mul_shade () |
1702 | { |
1703 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1704 | GR_COMBINE_FACTOR_LOCAL, |
1705 | GR_COMBINE_LOCAL_ITERATED, |
1706 | GR_COMBINE_OTHER_TEXTURE); |
1707 | if (rdp.prim_color & 0xFFFFFF00) |
1708 | { |
1709 | MOD_0 (TMOD_TEX_SUB_COL); |
1710 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1711 | } |
1712 | if (cmb.combine_ext) |
1713 | { |
1714 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1715 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1716 | GR_CMBX_ZERO, 0, |
1717 | GR_CMBX_B, 0); |
1718 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1719 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1720 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1721 | GR_CMBX_B, 0); |
1722 | cmb.tex |= 3; |
1723 | } |
1724 | else |
1725 | { |
1726 | T0_MUL_T1 (); |
1727 | } |
1728 | } |
1729 | |
1730 | static void cc__t1_sub_env_mul_t0_add_t0__mul_shade () |
1731 | { |
1732 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1733 | GR_COMBINE_FACTOR_LOCAL, |
1734 | GR_COMBINE_LOCAL_ITERATED, |
1735 | GR_COMBINE_OTHER_TEXTURE); |
1736 | if (cmb.combine_ext) |
1737 | { |
1738 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1739 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
1740 | GR_CMBX_ZERO, 1, |
1741 | GR_CMBX_ZERO, 0); |
1742 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1743 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1744 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
1745 | GR_CMBX_B, 0); |
1746 | cmb.tex_ccolor = rdp.env_color; |
1747 | cmb.tex |= 3; |
1748 | } |
1749 | else |
1750 | { |
1751 | MOD_1 (TMOD_TEX_SUB_COL); |
1752 | MOD_1_COL (rdp.env_color & 0xFFFFFF00); |
1753 | T0_MUL_T1_ADD_T0 (); |
1754 | } |
1755 | } |
1756 | |
1757 | static void cc__t0_mul_prima_add_prim_mul__shade () |
1758 | { |
1759 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1760 | GR_COMBINE_FACTOR_LOCAL, |
1761 | GR_COMBINE_LOCAL_ITERATED, |
1762 | GR_COMBINE_OTHER_TEXTURE); |
1763 | if (cmb.combine_ext) |
1764 | { |
1765 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1766 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
1767 | GR_CMBX_TMU_CALPHA, 0, |
1768 | GR_CMBX_B, 0); |
1769 | cmb.tex_ccolor = rdp.prim_color; |
1770 | cmb.tex |= 1; |
1771 | } |
1772 | else |
1773 | { |
1774 | MOD_0 (TMOD_TEX_SCALE_FAC_ADD_COL); |
1775 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1776 | MOD_0_FAC (rdp.prim_color & 0xFF); |
1777 | USE_T0 (); |
1778 | } |
1779 | } |
1780 | |
1781 | static void cc__t0_inter_prim_using_prima__inter_env_using_enva () |
1782 | { |
1783 | if (cmb.combine_ext) |
1784 | { |
1785 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
1786 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1787 | GR_CMBX_TMU_CALPHA, 0, |
1788 | GR_CMBX_B, 0); |
1789 | cmb.tex_ccolor = rdp.prim_color; |
1790 | cmb.tex |= 1; |
1791 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
1792 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1793 | GR_CMBX_CONSTANT_COLOR, 0, |
1794 | GR_CMBX_B, 0); |
1795 | CC_ENVA (); |
1796 | SETSHADE_ENV (); |
1797 | } |
1798 | else |
1799 | { |
1800 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1801 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
1802 | GR_COMBINE_LOCAL_ITERATED, |
1803 | GR_COMBINE_OTHER_CONSTANT); |
1804 | CC_1SUBENVA (); |
1805 | SETSHADE_ENV (); |
1806 | SETSHADE_ENVA (); |
1807 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
1808 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1809 | MOD_0_FAC (rdp.prim_color & 0xFF); |
1810 | USE_T0 (); |
1811 | } |
1812 | } |
1813 | |
1814 | static void cc_prim_inter_t1_mul_shade_using_texa () |
1815 | { |
1816 | if (cmb.combine_ext) |
1817 | { |
1818 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1819 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1820 | GR_CMBX_ZERO, 0, |
1821 | GR_CMBX_B, 0); |
1822 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
1823 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
1824 | GR_CMBX_ITRGB, 0, |
1825 | GR_CMBX_ZERO, 0); |
1826 | cmb.tex |= 3; |
1827 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1828 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
1829 | GR_CMBX_TEXTURE_ALPHA, 0, |
1830 | GR_CMBX_B, 0); |
1831 | } |
1832 | else |
1833 | { |
1834 | cc_t1_mul_shade (); |
1835 | } |
1836 | } |
1837 | |
1838 | static void cc__prim_inter_t0_using_t0a__mul_shade () |
1839 | { |
1840 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1841 | GR_COMBINE_FACTOR_LOCAL, |
1842 | GR_COMBINE_LOCAL_ITERATED, |
1843 | GR_COMBINE_OTHER_TEXTURE); |
1844 | if (cmb.combine_ext) |
1845 | { |
1846 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1847 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
1848 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
1849 | GR_CMBX_B, 0); |
1850 | cmb.tex_ccolor = rdp.prim_color; |
1851 | cmb.tex |= 1; |
1852 | } |
1853 | else |
1854 | { |
1855 | MOD_0 (TMOD_COL_INTER_TEX_USING_TEXA); |
1856 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1857 | USE_T0 (); |
1858 | } |
1859 | } |
1860 | |
1861 | static void cc__prim_inter_t0_using_t0a__inter_env_using_enva () |
1862 | { |
1863 | if (cmb.combine_ext) |
1864 | { |
1865 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1866 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
1867 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
1868 | GR_CMBX_B, 0); |
1869 | cmb.tex_ccolor = rdp.prim_color; |
1870 | cmb.tex |= 1; |
1871 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
1872 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
1873 | GR_CMBX_CONSTANT_COLOR, 0, |
1874 | GR_CMBX_B, 0); |
1875 | CC_ENVA (); |
1876 | SETSHADE_ENV (); |
1877 | } |
1878 | else |
1879 | { |
1880 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
1881 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
1882 | GR_COMBINE_LOCAL_ITERATED, |
1883 | GR_COMBINE_OTHER_CONSTANT); |
1884 | CC_1SUBENVA (); |
1885 | SETSHADE_ENV (); |
1886 | SETSHADE_ENVA (); |
1887 | MOD_0 (TMOD_COL_INTER_TEX_USING_TEXA); |
1888 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
1889 | USE_T0 (); |
1890 | } |
1891 | } |
1892 | |
1893 | // ** A*B ** |
1894 | |
1895 | static void cc__prim_inter_t0_using_shadea__mul_shade () |
1896 | { |
1897 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1898 | GR_COMBINE_FACTOR_LOCAL, |
1899 | GR_COMBINE_LOCAL_ITERATED, |
1900 | GR_COMBINE_OTHER_TEXTURE); |
1901 | PRIM_INTER_T0_USING_SHADEA (); |
1902 | } |
1903 | |
1904 | static void cc_t0_sub_shade_mul_shadea_add_shade (); |
1905 | static void cc__shade_inter_t0_using_shadea__mul_shade () |
1906 | { |
1907 | if (cmb.combine_ext) |
1908 | { |
1909 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
1910 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
1911 | GR_CMBX_ITALPHA, 0, |
1912 | GR_CMBX_B, 0); |
1913 | cmb.tex |= 1; |
1914 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
1915 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
1916 | GR_CMBX_ITRGB, 0, |
1917 | GR_CMBX_ZERO, 0); |
1918 | } |
1919 | else |
1920 | { |
1921 | cc_t0_sub_shade_mul_shadea_add_shade (); |
1922 | } |
1923 | } |
1924 | |
1925 | static void cc__prim_inter_env_using_enva__mul_shade () |
1926 | { |
1927 | const float ea = ((float)(rdp.env_color&0xFF)) / 255.0f; |
1928 | const float ea_i = 1.0f - ea; |
1929 | wxUint32 pr = (rdp.prim_color >> 24)&0xFF; |
1930 | wxUint32 pg = (rdp.prim_color >> 16)&0xFF; |
1931 | wxUint32 pb = (rdp.prim_color >> 8)&0xFF; |
1932 | wxUint32 er = (rdp.env_color >> 24)&0xFF; |
1933 | wxUint32 eg = (rdp.env_color >> 16)&0xFF; |
1934 | wxUint32 eb = (rdp.env_color >> 8)&0xFF; |
1935 | wxUint32 r = min(255, (wxUint32)(er*ea + pr*ea_i)); |
1936 | wxUint32 g = min(255, (wxUint32)(eg*ea + pg*ea_i)); |
1937 | wxUint32 b = min(255, (wxUint32)(eb*ea + pb*ea_i)); |
1938 | wxUint32 col = (r << 24) | (g << 16) | (b << 8) | 0xFF; |
1939 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1940 | GR_COMBINE_FACTOR_LOCAL, |
1941 | GR_COMBINE_LOCAL_ITERATED, |
1942 | GR_COMBINE_OTHER_CONSTANT); |
1943 | CC (col); |
1944 | } |
1945 | |
1946 | //Added by Gonetz |
1947 | static void cc_prim_mul_env () |
1948 | { |
1949 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1950 | GR_COMBINE_FACTOR_LOCAL, |
1951 | GR_COMBINE_LOCAL_ITERATED, |
1952 | GR_COMBINE_OTHER_CONSTANT); |
1953 | CC_PRIM (); |
1954 | SETSHADE_ENV (); |
1955 | } |
1956 | |
1957 | static void cc_prim_mul_shade () |
1958 | { |
1959 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1960 | GR_COMBINE_FACTOR_LOCAL, |
1961 | GR_COMBINE_LOCAL_ITERATED, |
1962 | GR_COMBINE_OTHER_CONSTANT); |
1963 | CC_PRIM (); |
1964 | } |
1965 | |
1966 | static void cc_prim_mul_shadea () |
1967 | { |
1968 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1969 | GR_COMBINE_FACTOR_LOCAL, |
1970 | GR_COMBINE_LOCAL_ITERATED, |
1971 | GR_COMBINE_OTHER_CONSTANT); |
1972 | SETSHADE_SHADE_A (); |
1973 | CC_PRIM (); |
1974 | } |
1975 | |
1976 | static void cc_env_mul_shade () |
1977 | { |
1978 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1979 | GR_COMBINE_FACTOR_LOCAL, |
1980 | GR_COMBINE_LOCAL_ITERATED, |
1981 | GR_COMBINE_OTHER_CONSTANT); |
1982 | CC_ENV (); |
1983 | } |
1984 | |
1985 | static void cc_env_mul_enva () |
1986 | { |
1987 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1988 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
1989 | GR_COMBINE_LOCAL_NONE, |
1990 | GR_COMBINE_OTHER_CONSTANT); |
1991 | CC_ENV (); |
1992 | CA_ENV (); |
1993 | } |
1994 | |
1995 | static void cc_scale_mul_shade () |
1996 | { |
1997 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
1998 | GR_COMBINE_FACTOR_LOCAL, |
1999 | GR_COMBINE_LOCAL_ITERATED, |
2000 | GR_COMBINE_OTHER_CONSTANT); |
2001 | CC (rdp.SCALE); |
2002 | } |
2003 | |
2004 | // ** A+B ** |
2005 | |
2006 | static void cc_t0_add_prim () //Aded by Gonetz |
2007 | { |
2008 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2009 | GR_COMBINE_FACTOR_ONE, |
2010 | GR_COMBINE_LOCAL_CONSTANT, |
2011 | GR_COMBINE_OTHER_TEXTURE); |
2012 | CC_PRIM (); |
2013 | USE_T0 (); |
2014 | } |
2015 | |
2016 | static void cc__t0_mul_t1__add_prim () //Aded by Gonetz |
2017 | { |
2018 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2019 | GR_COMBINE_FACTOR_ONE, |
2020 | GR_COMBINE_LOCAL_CONSTANT, |
2021 | GR_COMBINE_OTHER_TEXTURE); |
2022 | CC_PRIM (); |
2023 | T0_MUL_T1 (); |
2024 | } |
2025 | |
2026 | static void cc_t0_add_env () |
2027 | { |
2028 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2029 | GR_COMBINE_FACTOR_ONE, |
2030 | GR_COMBINE_LOCAL_CONSTANT, |
2031 | GR_COMBINE_OTHER_TEXTURE); |
2032 | CC_ENV (); |
2033 | USE_T0 (); |
2034 | } |
2035 | |
2036 | //Added by Gonetz |
2037 | static void cc__t0_mul_t1__add_env () |
2038 | { |
2039 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2040 | GR_COMBINE_FACTOR_ONE, |
2041 | GR_COMBINE_LOCAL_CONSTANT, |
2042 | GR_COMBINE_OTHER_TEXTURE); |
2043 | CC_ENV (); |
2044 | T0_MUL_T1 (); |
2045 | } |
2046 | |
2047 | static void cc__t0_mul_t1__add_env_mul__t0_mul_t1__add_env () |
2048 | { |
2049 | if (cmb.combine_ext) |
2050 | { |
2051 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2052 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2053 | GR_CMBX_ZERO, 0, |
2054 | GR_CMBX_B, 0); |
2055 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2056 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
2057 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
2058 | GR_CMBX_B, 0); |
2059 | cmb.tex_ccolor = rdp.env_color; |
2060 | cmb.tex |= 3; |
2061 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2062 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
2063 | GR_CMBX_TEXTURE_RGB, 0, |
2064 | GR_CMBX_ZERO, 0); |
2065 | } |
2066 | else |
2067 | cc__t0_mul_t1__add_env(); |
2068 | } |
2069 | |
2070 | static void cc_t0_add_shade () //Aded by Gonetz |
2071 | { |
2072 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2073 | GR_COMBINE_FACTOR_ONE, |
2074 | GR_COMBINE_LOCAL_ITERATED, |
2075 | GR_COMBINE_OTHER_TEXTURE); |
2076 | USE_T0 (); |
2077 | } |
2078 | |
2079 | static void cc__t0_mul_t1__add_shade () //Aded by Gonetz |
2080 | { |
2081 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2082 | GR_COMBINE_FACTOR_ONE, |
2083 | GR_COMBINE_LOCAL_ITERATED, |
2084 | GR_COMBINE_OTHER_TEXTURE); |
2085 | T0_MUL_T1 (); |
2086 | } |
2087 | |
2088 | static void cc_prim_add_env () |
2089 | { |
2090 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2091 | GR_COMBINE_FACTOR_ONE, |
2092 | GR_COMBINE_LOCAL_CONSTANT, |
2093 | GR_COMBINE_OTHER_ITERATED); |
2094 | CC_ENV (); |
2095 | SETSHADE_PRIM (); |
2096 | } |
2097 | |
2098 | static void cc_t0_add_prim_mul_one_sub_t0_add_t0 () //Aded by Gonetz |
2099 | { |
2100 | if (cmb.combine_ext) |
2101 | { |
2102 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
2103 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2104 | GR_CMBX_LOCAL_TEXTURE_RGB, 1, |
2105 | GR_CMBX_B, 0); |
2106 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2107 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
2108 | GR_CMBX_ZERO, 1, |
2109 | GR_CMBX_ZERO, 0); |
2110 | cmb.tex_ccolor = rdp.prim_color; |
2111 | cmb.tex |= 1; |
2112 | } |
2113 | else |
2114 | { |
2115 | cc_t0_add_prim (); |
2116 | } |
2117 | } |
2118 | |
2119 | static void cc_one_sub_prim_mul_t0_add_prim(); |
2120 | static void cc__one_sub_prim_mul_t0_add_prim__mul_prima_add__one_sub_prim_mul_t0_add_prim () //Aded by Gonetz |
2121 | { |
2122 | if (cmb.combine_ext) |
2123 | { |
2124 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2125 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
2126 | GR_CMBX_TMU_CCOLOR, 1, |
2127 | GR_CMBX_B, 0); |
2128 | CCMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
2129 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2130 | GR_CMBX_CONSTANT_COLOR, 0, |
2131 | GR_CMBX_B, 0); |
2132 | cmb.tex_ccolor = rdp.prim_color; |
2133 | CC_PRIMA(); |
2134 | cmb.tex |= 3; //hw frame buffer allocated as tile1, but not used in combiner |
2135 | } |
2136 | else |
2137 | { |
2138 | cc_one_sub_prim_mul_t0_add_prim(); |
2139 | // cc_t0 (); |
2140 | } |
2141 | } |
2142 | |
2143 | static void cc_prim_add_shade () //Aded by Gonetz |
2144 | { |
2145 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2146 | GR_COMBINE_FACTOR_ONE, |
2147 | GR_COMBINE_LOCAL_ITERATED, |
2148 | GR_COMBINE_OTHER_CONSTANT); |
2149 | CC_PRIM (); |
2150 | } |
2151 | |
2152 | static void cc_env_add_shade () //Aded by Gonetz |
2153 | { |
2154 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2155 | GR_COMBINE_FACTOR_ONE, |
2156 | GR_COMBINE_LOCAL_ITERATED, |
2157 | GR_COMBINE_OTHER_CONSTANT); |
2158 | CC_ENV (); |
2159 | } |
2160 | |
2161 | static void cc_shade_add_shade () //Aded by Gonetz |
2162 | { |
2163 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2164 | GR_COMBINE_FACTOR_ONE, |
2165 | GR_COMBINE_LOCAL_ITERATED, |
2166 | GR_COMBINE_OTHER_ITERATED); |
2167 | } |
2168 | |
2169 | // ** A-B ** |
2170 | static void cc__t0_inter_t1_using_enva__sub_env () //Aded by Gonetz |
2171 | { |
2172 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
2173 | GR_COMBINE_FACTOR_ONE, |
2174 | GR_COMBINE_LOCAL_CONSTANT, |
2175 | GR_COMBINE_OTHER_TEXTURE); |
2176 | CC_ENV (); |
2177 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
2178 | T0_INTER_T1_USING_FACTOR (factor); |
2179 | } |
2180 | |
2181 | static void cc_t0_sub__shade_mul_center () |
2182 | { |
2183 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
2184 | GR_COMBINE_FACTOR_ONE, |
2185 | GR_COMBINE_LOCAL_ITERATED, |
2186 | GR_COMBINE_OTHER_TEXTURE); |
2187 | MULSHADE(rdp.CENTER); |
2188 | USE_T0 (); |
2189 | } |
2190 | |
2191 | // ** A-B*C ** |
2192 | static void cc_env_sub__t0_sub_t1_mul_primlod__mul_prim () //Aded by Gonetz |
2193 | { |
2194 | if (cmb.combine_ext) |
2195 | { |
2196 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2197 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2198 | GR_CMBX_ZERO, 0, |
2199 | GR_CMBX_B, 0); |
2200 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2201 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
2202 | GR_CMBX_ITRGB, 0, |
2203 | GR_CMBX_ZERO, 0); |
2204 | cmb.tex |= 3; |
2205 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
2206 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
2207 | GR_CMBX_ZERO, 1, |
2208 | GR_CMBX_ZERO, 0); |
2209 | SETSHADE_PRIM (); |
2210 | SETSHADE_PRIMLOD (); |
2211 | CC_ENV (); |
2212 | } |
2213 | else |
2214 | { |
2215 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2216 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2217 | GR_COMBINE_LOCAL_CONSTANT, |
2218 | GR_COMBINE_OTHER_ITERATED); |
2219 | SETSHADE_PRIM (); |
2220 | CC_ENV (); |
2221 | T1_INTER_T0_USING_FACTOR (lod_frac); |
2222 | } |
2223 | } |
2224 | |
2225 | static void cc_env_sub__t0_mul_scale_add_env__mul_prim () |
2226 | { |
2227 | if (cmb.combine_ext) |
2228 | { |
2229 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2230 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
2231 | GR_CMBX_TMU_CCOLOR, 0, |
2232 | GR_CMBX_B, 0); |
2233 | cmb.tex_ccolor = rdp.SCALE; |
2234 | cmb.tex |= 1; |
2235 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
2236 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
2237 | GR_CMBX_CONSTANT_COLOR, 0, |
2238 | GR_CMBX_B, 0); |
2239 | SETSHADE_ENV (); |
2240 | CC_PRIM (); |
2241 | } |
2242 | else |
2243 | cc_t0_add_env (); |
2244 | } |
2245 | |
2246 | static void cc_one_sub__one_sub_t0_mul_enva_add_prim__mul_prim () //Aded by Gonetz |
2247 | { |
2248 | if (cmb.combine_ext) |
2249 | { |
2250 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
2251 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
2252 | GR_CMBX_DETAIL_FACTOR, 0, |
2253 | GR_CMBX_B, 0); |
2254 | cmb.tex_ccolor = rdp.prim_color; |
2255 | cmb.tex |= 1; |
2256 | percent = (float)(rdp.env_color&0xFF) / 255.0f; |
2257 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
2258 | CCMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_X, |
2259 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
2260 | GR_CMBX_CONSTANT_COLOR, 0, |
2261 | GR_CMBX_ZERO, 1); |
2262 | CC_PRIM (); |
2263 | } |
2264 | else |
2265 | { |
2266 | cc_one (); |
2267 | } |
2268 | } |
2269 | |
2270 | // ** A+B*C ** |
2271 | //Aded by Gonetz |
2272 | static void cc_t0_add_env_mul_k5 () |
2273 | { |
2274 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2275 | GR_COMBINE_FACTOR_ONE, |
2276 | GR_COMBINE_LOCAL_CONSTANT, |
2277 | GR_COMBINE_OTHER_TEXTURE); |
2278 | float scale = rdp.K5 / 255.0f; |
2279 | wxUint8 r = (wxUint8)(rdp.env_color >> 24) & 0xFF; |
2280 | r = (wxUint8)(r*scale); |
2281 | wxUint8 g = (wxUint8)(rdp.env_color >> 16) & 0xFF; |
2282 | g = (wxUint8)(g*scale); |
2283 | wxUint8 b = (wxUint8)(rdp.env_color >> 8) & 0xFF; |
2284 | b = (wxUint8)(b*scale); |
2285 | CC((r<<24)|(g<<16)|(b<<8)); |
2286 | USE_T0 (); |
2287 | } |
2288 | |
2289 | static void cc_t0_add_shade_mul_env () |
2290 | { |
2291 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2292 | GR_COMBINE_FACTOR_ONE, |
2293 | GR_COMBINE_LOCAL_ITERATED, |
2294 | GR_COMBINE_OTHER_TEXTURE); |
2295 | MULSHADE_ENV (); |
2296 | USE_T0 (); |
2297 | } |
2298 | |
2299 | static void cc__t1_mul_t0_add_t0__add_prim_mul_shade () //Aded by Gonetz |
2300 | { |
2301 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2302 | GR_COMBINE_FACTOR_ONE, |
2303 | GR_COMBINE_LOCAL_ITERATED, |
2304 | GR_COMBINE_OTHER_TEXTURE); |
2305 | MULSHADE_PRIM (); |
2306 | rdp.best_tex = 0; |
2307 | cmb.tex |= 3; |
2308 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL; |
2309 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL; |
2310 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL; |
2311 | } |
2312 | |
2313 | static void cc__t0_sub_env_mul_enva__add_prim_mul_shade () |
2314 | { |
2315 | if (cmb.combine_ext) |
2316 | { |
2317 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2318 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
2319 | GR_CMBX_DETAIL_FACTOR, 0, |
2320 | GR_CMBX_ZERO, 0); |
2321 | cmb.tex_ccolor = rdp.env_color; |
2322 | cmb.tex |= 1; |
2323 | percent = (float)(rdp.env_color&0xFF) / 255.0f; |
2324 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
2325 | |
2326 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
2327 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2328 | GR_CMBX_CONSTANT_COLOR, 0, |
2329 | GR_CMBX_B, 0); |
2330 | CC_PRIM (); |
2331 | } |
2332 | else { |
2333 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2334 | GR_COMBINE_FACTOR_ONE, |
2335 | GR_COMBINE_LOCAL_ITERATED, |
2336 | GR_COMBINE_OTHER_TEXTURE); |
2337 | MULSHADE_PRIM (); |
2338 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); |
2339 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
2340 | MOD_0_FAC (rdp.env_color & 0xFF); |
2341 | USE_T0 (); |
2342 | } |
2343 | } |
2344 | |
2345 | // ** A*B+C ** |
2346 | //Added by Gonetz |
2347 | static void cc_t0_mul_prim_add_t1 () |
2348 | { |
2349 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
2350 | GR_COMBINE_FACTOR_ONE, |
2351 | GR_COMBINE_LOCAL_NONE, |
2352 | GR_COMBINE_OTHER_TEXTURE); |
2353 | if (cmb.combine_ext) |
2354 | { |
2355 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2356 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2357 | GR_CMBX_ZERO, 0, |
2358 | GR_CMBX_B, 0); |
2359 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2360 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2361 | GR_CMBX_TMU_CCOLOR, 0, |
2362 | GR_CMBX_B, 0); |
2363 | cmb.tex |= 3; |
2364 | cmb.tex_ccolor = rdp.prim_color; |
2365 | } |
2366 | else |
2367 | { |
2368 | MOD_0 (TMOD_TEX_MUL_COL); |
2369 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
2370 | T0_ADD_T1 (); |
2371 | } |
2372 | } |
2373 | |
2374 | static void cc_shirt () |
2375 | { |
2376 | // (t1-0)*prim+0, (1-t0)*t1+cmb |
2377 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
2378 | GR_COMBINE_FACTOR_ONE, |
2379 | GR_COMBINE_LOCAL_NONE, |
2380 | GR_COMBINE_OTHER_TEXTURE); |
2381 | if (cmb.combine_ext) |
2382 | { |
2383 | /* |
2384 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2385 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2386 | GR_CMBX_TMU_CCOLOR, 0, |
2387 | GR_CMBX_ZERO, 0); |
2388 | //*/ |
2389 | //* |
2390 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2391 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2392 | GR_CMBX_ZERO, 0, |
2393 | GR_CMBX_B, 0); |
2394 | //*/ |
2395 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2396 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2397 | GR_CMBX_LOCAL_TEXTURE_RGB, 1, |
2398 | GR_CMBX_B, 0); |
2399 | cmb.tex |= 3; |
2400 | cmb.tex_ccolor = rdp.prim_color; |
2401 | } |
2402 | else |
2403 | { |
2404 | MOD_1 (TMOD_TEX_MUL_COL); |
2405 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
2406 | T0_ADD_T1 (); |
2407 | } |
2408 | } |
2409 | |
2410 | static void cc_t1_mul_prim_add_prim () |
2411 | { |
2412 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2413 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2414 | GR_COMBINE_LOCAL_CONSTANT, |
2415 | GR_COMBINE_OTHER_ITERATED); |
2416 | SETSHADE_PRIM (); |
2417 | CC_PRIM (); |
2418 | USE_T0 (); |
2419 | } |
2420 | |
2421 | //Added by Gonetz |
2422 | static void cc_t0_mul_prim_add_env () |
2423 | { |
2424 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2425 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2426 | GR_COMBINE_LOCAL_CONSTANT, |
2427 | GR_COMBINE_OTHER_ITERATED); |
2428 | SETSHADE_PRIM (); |
2429 | CC_ENV (); |
2430 | USE_T0 (); |
2431 | } |
2432 | |
2433 | //Added by Gonetz |
2434 | static void cc_t1_mul_prim_add_env () |
2435 | { |
2436 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2437 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2438 | GR_COMBINE_LOCAL_CONSTANT, |
2439 | GR_COMBINE_OTHER_ITERATED); |
2440 | SETSHADE_PRIM (); |
2441 | CC_ENV (); |
2442 | USE_T1 (); |
2443 | } |
2444 | |
2445 | static void cc__t0_add_primlod__mul_prim_add_env () |
2446 | { |
2447 | if (cmb.combine_ext) |
2448 | { |
2449 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2450 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
2451 | GR_CMBX_ZERO, 1, |
2452 | GR_CMBX_ZERO, 0); |
2453 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2454 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
2455 | GR_CMBX_ITRGB, 0, |
2456 | GR_CMBX_B, 0); |
2457 | CC_PRIMLOD (); |
2458 | cmb.tex_ccolor = cmb.ccolor; |
2459 | CC_ENV (); |
2460 | SETSHADE_PRIM (); |
2461 | cmb.tex |= 1; |
2462 | } |
2463 | else |
2464 | { |
2465 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2466 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2467 | GR_COMBINE_LOCAL_CONSTANT, |
2468 | GR_COMBINE_OTHER_ITERATED); |
2469 | CC_PRIMLOD (); |
2470 | MOD_0 (TMOD_TEX_ADD_COL); |
2471 | MOD_0_COL (cmb.ccolor & 0xFFFFFF00); |
2472 | SETSHADE_PRIM (); |
2473 | CC_ENV (); |
2474 | USE_T0 (); |
2475 | } |
2476 | } |
2477 | |
2478 | //Added by Gonetz |
2479 | static void cc_t0_mul_prim_mul_shade_add_prim_mul_shade () |
2480 | { |
2481 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2482 | GR_COMBINE_FACTOR_LOCAL, |
2483 | GR_COMBINE_LOCAL_ITERATED, |
2484 | GR_COMBINE_OTHER_TEXTURE); |
2485 | MULSHADE_PRIM (); |
2486 | USE_T0 (); |
2487 | } |
2488 | |
2489 | //Added by Gonetz |
2490 | static void cc__t0_inter_t1_using_primlod__mul_prim_add_env () |
2491 | { |
2492 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2493 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2494 | GR_COMBINE_LOCAL_CONSTANT, |
2495 | GR_COMBINE_OTHER_ITERATED); |
2496 | SETSHADE_PRIM (); |
2497 | CC_ENV (); |
2498 | T0_INTER_T1_USING_FACTOR (lod_frac); |
2499 | } |
2500 | |
2501 | static void cc__t1_sub_prim_mul_enva_add_t0__mul_prim_add_env () |
2502 | { |
2503 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2504 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2505 | GR_COMBINE_LOCAL_ITERATED, |
2506 | GR_COMBINE_OTHER_CONSTANT); |
2507 | CC_PRIM (); |
2508 | SETSHADE_ENV (); |
2509 | if (cmb.combine_ext) |
2510 | { |
2511 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2512 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
2513 | GR_CMBX_DETAIL_FACTOR, 0, |
2514 | GR_CMBX_ZERO, 0); |
2515 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2516 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2517 | GR_CMBX_ZERO, 1, |
2518 | GR_CMBX_ZERO, 0); |
2519 | cmb.tex_ccolor = rdp.prim_color; |
2520 | cmb.tex |= 3; |
2521 | percent = (float)(rdp.env_color&0xFF) / 255.0f; |
2522 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
2523 | } |
2524 | else |
2525 | { |
2526 | MOD_1 (TMOD_TEX_SUB_COL_MUL_FAC); |
2527 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
2528 | MOD_1_FAC (rdp.env_color & 0xFF); |
2529 | T0_ADD_T1 (); |
2530 | } |
2531 | } |
2532 | |
2533 | //Added by Gonetz |
2534 | static void cc__t0_inter_t1_using_primlod__mul_shade_add_env () |
2535 | { |
2536 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2537 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2538 | GR_COMBINE_LOCAL_CONSTANT, |
2539 | GR_COMBINE_OTHER_ITERATED); |
2540 | CC_ENV (); |
2541 | T0_INTER_T1_USING_FACTOR (lod_frac); |
2542 | } |
2543 | |
2544 | //Added by Gonetz |
2545 | static void cc__t1_sub_prim_mul_primlod_add_t0__mul_prim_add_env () |
2546 | { |
2547 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2548 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2549 | GR_COMBINE_LOCAL_CONSTANT, |
2550 | GR_COMBINE_OTHER_ITERATED); |
2551 | SETSHADE_PRIM (); |
2552 | CC_ENV (); |
2553 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
2554 | } |
2555 | |
2556 | //Aded by Gonetz |
2557 | static void cc__t0_mul_t1__mul_prim_add_env () |
2558 | { |
2559 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2560 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2561 | GR_COMBINE_LOCAL_CONSTANT, |
2562 | GR_COMBINE_OTHER_ITERATED); |
2563 | CC_ENV (); |
2564 | MULSHADE_PRIM (); |
2565 | T0_MUL_T1 (); |
2566 | } |
2567 | |
2568 | //Aded by Gonetz |
2569 | static void cc__t0_mul_t1__sub_prim_mul_env_add_shade () |
2570 | { |
2571 | if (cmb.combine_ext) |
2572 | { |
2573 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2574 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2575 | GR_CMBX_TMU_CCOLOR, 0, |
2576 | GR_CMBX_ZERO, 0); |
2577 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2578 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
2579 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
2580 | GR_CMBX_B, 0); |
2581 | cmb.tex_ccolor = rdp.env_color; |
2582 | cmb.tex |= 3; |
2583 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
2584 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
2585 | GR_CMBX_ZERO, 1, |
2586 | GR_CMBX_TEXTURE_RGB, 0); |
2587 | CC_PRIMMULENV (); |
2588 | } |
2589 | else |
2590 | { |
2591 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2592 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2593 | GR_COMBINE_LOCAL_ITERATED, |
2594 | GR_COMBINE_OTHER_CONSTANT); |
2595 | CC_ENV (); |
2596 | T0_MUL_T1 (); |
2597 | } |
2598 | } |
2599 | |
2600 | static void cc__t0_sub_prim_mul_t1_add_t1__mul_env_add_shade () |
2601 | { |
2602 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2603 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2604 | GR_COMBINE_LOCAL_ITERATED, |
2605 | GR_COMBINE_OTHER_CONSTANT); |
2606 | CC_ENV (); |
2607 | if (rdp.prim_color & 0xFFFFFF00) |
2608 | { |
2609 | MOD_0 (TMOD_TEX_SUB_COL); |
2610 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
2611 | } |
2612 | if (cmb.combine_ext) |
2613 | { |
2614 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2615 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2616 | GR_CMBX_ZERO, 0, |
2617 | GR_CMBX_B, 0); |
2618 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2619 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2620 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
2621 | GR_CMBX_B, 0); |
2622 | cmb.tex |= 3; |
2623 | } |
2624 | else |
2625 | { |
2626 | T0_MUL_T1 (); |
2627 | } |
2628 | } |
2629 | |
2630 | static void cc__t0_mul_t1__mul_shade_add_prim () |
2631 | { |
2632 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2633 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2634 | GR_COMBINE_LOCAL_CONSTANT, |
2635 | GR_COMBINE_OTHER_ITERATED); |
2636 | CC_PRIM (); |
2637 | T0_MUL_T1 (); |
2638 | } |
2639 | |
2640 | static void cc__t0_mul_shadea_add_env__mul_shade_add_prim () |
2641 | { |
2642 | if (cmb.combine_ext) |
2643 | { |
2644 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
2645 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
2646 | GR_CMBX_ITALPHA, 0, |
2647 | GR_CMBX_B, 0); |
2648 | cmb.tex_ccolor = rdp.env_color; |
2649 | cmb.tex |= 1; |
2650 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2651 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
2652 | GR_CMBX_ITRGB, 0, |
2653 | GR_CMBX_B, 0); |
2654 | CC_PRIM (); |
2655 | } |
2656 | else |
2657 | { |
2658 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2659 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2660 | GR_COMBINE_LOCAL_CONSTANT, |
2661 | GR_COMBINE_OTHER_ITERATED); |
2662 | MULSHADE_SHADEA (); |
2663 | CC_PRIM (); |
2664 | USE_T0 (); |
2665 | } |
2666 | } |
2667 | |
2668 | static void cc__t0_mul_t1__mul_shade_add_env () |
2669 | { |
2670 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2671 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2672 | GR_COMBINE_LOCAL_CONSTANT, |
2673 | GR_COMBINE_OTHER_ITERATED); |
2674 | CC_ENV (); |
2675 | T0_MUL_T1 (); |
2676 | } |
2677 | |
2678 | //Added by Gonetz |
2679 | static void cc__t0_add_t1__mul_shade_add_env () |
2680 | { |
2681 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2682 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2683 | GR_COMBINE_LOCAL_CONSTANT, |
2684 | GR_COMBINE_OTHER_ITERATED); |
2685 | CC_ENV (); |
2686 | T0_ADD_T1 (); |
2687 | } |
2688 | |
2689 | static void cc__t1_mul_prima_add_t0__mul_shade_add_env () |
2690 | { |
2691 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2692 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2693 | GR_COMBINE_LOCAL_CONSTANT, |
2694 | GR_COMBINE_OTHER_ITERATED); |
2695 | CC_ENV (); |
2696 | T1_MUL_PRIMA_ADD_T0 (); |
2697 | } |
2698 | |
2699 | static void cc__t0_inter_t1_using_enva__mul_shade_add_prim () |
2700 | { |
2701 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2702 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2703 | GR_COMBINE_LOCAL_CONSTANT, |
2704 | GR_COMBINE_OTHER_ITERATED); |
2705 | CC_PRIM (); |
2706 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
2707 | T0_INTER_T1_USING_FACTOR (factor); |
2708 | } |
2709 | |
2710 | static void cc__t0_inter_t1_using_enva__mul_shade_add_env () |
2711 | { |
2712 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2713 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2714 | GR_COMBINE_LOCAL_CONSTANT, |
2715 | GR_COMBINE_OTHER_ITERATED); |
2716 | CC_ENV (); |
2717 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
2718 | T0_INTER_T1_USING_FACTOR (factor); |
2719 | } |
2720 | |
2721 | //Added by Gonetz |
2722 | static void cc_t0_mul_primlod_add_prim () |
2723 | { |
2724 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2725 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2726 | GR_COMBINE_LOCAL_ITERATED, |
2727 | GR_COMBINE_OTHER_CONSTANT); |
2728 | SETSHADE_PRIM (); |
2729 | CC_PRIMLOD (); |
2730 | USE_T0 (); |
2731 | } |
2732 | |
2733 | static void cc__t0_mul_primlod__add__prim_mul_shade () |
2734 | { |
2735 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2736 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2737 | GR_COMBINE_LOCAL_ITERATED, |
2738 | GR_COMBINE_OTHER_CONSTANT); |
2739 | MULSHADE_PRIM (); |
2740 | CC_PRIMLOD (); |
2741 | USE_T0 (); |
2742 | } |
2743 | |
2744 | //Added by Gonetz |
2745 | static void cc_t0_mul_primlod_add_prim_mul_shade_add_env () |
2746 | { |
2747 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2748 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2749 | GR_COMBINE_LOCAL_ITERATED, |
2750 | GR_COMBINE_OTHER_CONSTANT); |
2751 | MULSHADE_PRIM (); |
2752 | ADDSHADE_ENV (); |
2753 | CC_PRIMLOD (); |
2754 | USE_T0 (); |
2755 | } |
2756 | |
2757 | //Added by Gonetz |
2758 | static void cc_t1_mul_primlod_add_prim_mul_shade_add_env () |
2759 | { |
2760 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2761 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2762 | GR_COMBINE_LOCAL_ITERATED, |
2763 | GR_COMBINE_OTHER_CONSTANT); |
2764 | MULSHADE_PRIM (); |
2765 | ADDSHADE_ENV (); |
2766 | CC_PRIMLOD (); |
2767 | USE_T1 (); |
2768 | } |
2769 | |
2770 | static void cc__t0_inter_t1_using_primlod__mul_shade_add_prim () |
2771 | { |
2772 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2773 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2774 | GR_COMBINE_LOCAL_CONSTANT, |
2775 | GR_COMBINE_OTHER_ITERATED); |
2776 | CC_PRIM (); |
2777 | T0_INTER_T1_USING_FACTOR (lod_frac); |
2778 | } |
2779 | |
2780 | static void cc__t1_inter_t0_using_primlod__mul_shade_add_prim () |
2781 | { |
2782 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2783 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2784 | GR_COMBINE_LOCAL_CONSTANT, |
2785 | GR_COMBINE_OTHER_ITERATED); |
2786 | CC_PRIM (); |
2787 | T1_INTER_T0_USING_FACTOR (lod_frac); |
2788 | } |
2789 | |
2790 | //Added by Gonetz |
2791 | static void cc__t1_sub_t0_mul_primlod_add_prim__mul_shade_add_shade () |
2792 | { |
2793 | if (cmb.combine_ext) |
2794 | { |
2795 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2796 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
2797 | GR_CMBX_ZERO, 0, |
2798 | GR_CMBX_B, 0); |
2799 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
2800 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
2801 | GR_CMBX_DETAIL_FACTOR, 0, |
2802 | GR_CMBX_ZERO, 0); |
2803 | cmb.tex |= 3; |
2804 | percent = (float)lod_frac / 255.0f; |
2805 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
2806 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
2807 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
2808 | GR_CMBX_ITRGB, 0, |
2809 | GR_CMBX_ITRGB, 0); |
2810 | CC_PRIM (); |
2811 | } |
2812 | else |
2813 | { |
2814 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2815 | GR_COMBINE_FACTOR_LOCAL, |
2816 | GR_COMBINE_LOCAL_ITERATED, |
2817 | GR_COMBINE_OTHER_TEXTURE); |
2818 | T0_INTER_T1_USING_FACTOR (lod_frac); |
2819 | } |
2820 | } |
2821 | |
2822 | //Added by Gonetz |
2823 | static void cc__t0_inter_t1_using_half__mul_prim_add_env () |
2824 | { |
2825 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2826 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2827 | GR_COMBINE_LOCAL_CONSTANT, |
2828 | GR_COMBINE_OTHER_ITERATED); |
2829 | SETSHADE_PRIM (); |
2830 | CC_ENV (); |
2831 | T0_INTER_T1_USING_FACTOR (0x7F); |
2832 | } |
2833 | |
2834 | //Added by Gonetz |
2835 | static void cc__t0_inter_t1_using_t1__mul_prim_add_shade () |
2836 | { |
2837 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2838 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2839 | GR_COMBINE_LOCAL_ITERATED, |
2840 | GR_COMBINE_OTHER_CONSTANT); |
2841 | CC_PRIM (); |
2842 | T0_INTER_T1_USING_T1 (); |
2843 | } |
2844 | |
2845 | //Added by Gonetz |
2846 | static void cc_one_sub_t1_mul_t0a_add_t0_mul_env_add_prim () |
2847 | { |
2848 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2849 | GR_COMBINE_FACTOR_ONE, |
2850 | GR_COMBINE_LOCAL_CONSTANT, |
2851 | GR_COMBINE_OTHER_TEXTURE); |
2852 | CC_PRIM (); |
2853 | MOD_0 (TMOD_TEX_MUL_COL); |
2854 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
2855 | rdp.best_tex = 0; |
2856 | cmb.tex |= 3; |
2857 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL; |
2858 | cmb.tmu1_invert = 1; |
2859 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL; |
2860 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL_ALPHA; |
2861 | } |
2862 | |
2863 | //Added by Gonetz |
2864 | static void cc__t0_inter_t1_using_t1__mul_shade_add_prim () |
2865 | { |
2866 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2867 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2868 | GR_COMBINE_LOCAL_CONSTANT, |
2869 | GR_COMBINE_OTHER_ITERATED); |
2870 | CC_PRIM (); |
2871 | T0_INTER_T1_USING_T1 (); |
2872 | } |
2873 | |
2874 | //Added by Gonetz |
2875 | static void cc_t0_mul_prim_add_shade () |
2876 | { |
2877 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2878 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2879 | GR_COMBINE_LOCAL_ITERATED, |
2880 | GR_COMBINE_OTHER_CONSTANT); |
2881 | CC_PRIM (); |
2882 | USE_T0 (); |
2883 | } |
2884 | |
2885 | static void cc_t1_mul_prim_add_shade () |
2886 | { |
2887 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2888 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2889 | GR_COMBINE_LOCAL_ITERATED, |
2890 | GR_COMBINE_OTHER_CONSTANT); |
2891 | CC_PRIM (); |
2892 | USE_T1 (); |
2893 | } |
2894 | |
2895 | //Added by Gonetz |
2896 | static void cc_t0_mul_env_add_prim () |
2897 | { |
2898 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2899 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2900 | GR_COMBINE_LOCAL_CONSTANT, |
2901 | GR_COMBINE_OTHER_ITERATED); |
2902 | SETSHADE_ENV (); |
2903 | CC_PRIM (); |
2904 | USE_T0 (); |
2905 | } |
2906 | |
2907 | //Added by Gonetz |
2908 | static void cc_t1_mul_env_add_prim () |
2909 | { |
2910 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2911 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2912 | GR_COMBINE_LOCAL_CONSTANT, |
2913 | GR_COMBINE_OTHER_ITERATED); |
2914 | SETSHADE_ENV (); |
2915 | CC_PRIM (); |
2916 | USE_T1 (); |
2917 | } |
2918 | |
2919 | static void cc_t0_mul_scale_add_prim () |
2920 | { |
2921 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2922 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2923 | GR_COMBINE_LOCAL_CONSTANT, |
2924 | GR_COMBINE_OTHER_ITERATED); |
2925 | SETSHADE (rdp.SCALE); |
2926 | CC_PRIM (); |
2927 | USE_T0 (); |
2928 | } |
2929 | |
2930 | //Added by Gonetz |
2931 | static void cc__t0_mul_t1__mul_env_add_prim () |
2932 | { |
2933 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2934 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2935 | GR_COMBINE_LOCAL_CONSTANT, |
2936 | GR_COMBINE_OTHER_ITERATED); |
2937 | SETSHADE_ENV (); |
2938 | CC_PRIM (); |
2939 | T0_MUL_T1 (); |
2940 | } |
2941 | |
2942 | //Added by Gonetz |
2943 | static void cc__t0_add__t1_mul_scale__mul_env_sub_center_add_prim () |
2944 | { |
2945 | // (t1-0)*scale+t0, (env-center)*cmb+prim |
2946 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2947 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2948 | GR_COMBINE_LOCAL_ITERATED, |
2949 | GR_COMBINE_OTHER_CONSTANT); |
2950 | CC_C1SUBC2(rdp.env_color, rdp.CENTER); |
2951 | SETSHADE_PRIM (); |
2952 | MOD_1 (TMOD_TEX_MUL_COL); |
2953 | MOD_1_COL (rdp.SCALE & 0xFFFFFF00); |
2954 | T0_ADD_T1 (); |
2955 | } |
2956 | |
2957 | //Added by Gonetz |
2958 | static void cc__t1_sub_t0__mul_env_add_prim () |
2959 | { |
2960 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2961 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2962 | GR_COMBINE_LOCAL_CONSTANT, |
2963 | GR_COMBINE_OTHER_ITERATED); |
2964 | SETSHADE_ENV (); |
2965 | CC_PRIM (); |
2966 | T1_SUB_T0 (); |
2967 | } |
2968 | |
2969 | //Added by Gonetz |
2970 | static void cc_t0_mul_env_add_shade () |
2971 | { |
2972 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2973 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2974 | GR_COMBINE_LOCAL_ITERATED, |
2975 | GR_COMBINE_OTHER_CONSTANT); |
2976 | CC_ENV (); |
2977 | USE_T0 (); |
2978 | } |
2979 | |
2980 | static void cc_t0_mul_shade_add_prim () |
2981 | { |
2982 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2983 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2984 | GR_COMBINE_LOCAL_CONSTANT, |
2985 | GR_COMBINE_OTHER_ITERATED); |
2986 | CC_PRIM (); |
2987 | USE_T0 (); |
2988 | } |
2989 | |
2990 | static void cc__t0_mul_enva_add_t1__mul_shade_add_prim () |
2991 | { |
2992 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
2993 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
2994 | GR_COMBINE_LOCAL_CONSTANT, |
2995 | GR_COMBINE_OTHER_ITERATED); |
2996 | CC_PRIM (); |
2997 | if (cmb.combine_ext) |
2998 | { |
2999 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3000 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3001 | GR_CMBX_ZERO, 1, |
3002 | GR_CMBX_ZERO, 0); |
3003 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3004 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3005 | GR_CMBX_DETAIL_FACTOR, 0, |
3006 | GR_CMBX_B, 0); |
3007 | cmb.tex |= 3; |
3008 | percent = (float)(rdp.env_color&0xFF) / 255.0f; |
3009 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
3010 | } |
3011 | else |
3012 | { |
3013 | T0_ADD_T1 (); |
3014 | } |
3015 | } |
3016 | |
3017 | static void cc_t0_mul_shade_add_prima () |
3018 | { |
3019 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3020 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3021 | GR_COMBINE_LOCAL_CONSTANT, |
3022 | GR_COMBINE_OTHER_ITERATED); |
3023 | CC_PRIMA (); |
3024 | USE_T0 (); |
3025 | } |
3026 | |
3027 | static void cc_t1_mul_shade_add_prim () |
3028 | { |
3029 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3030 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3031 | GR_COMBINE_LOCAL_CONSTANT, |
3032 | GR_COMBINE_OTHER_ITERATED); |
3033 | CC_PRIM (); |
3034 | USE_T1 (); |
3035 | } |
3036 | |
3037 | static void cc_t0_mul_shade_add_env () |
3038 | { |
3039 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3040 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3041 | GR_COMBINE_LOCAL_CONSTANT, |
3042 | GR_COMBINE_OTHER_ITERATED); |
3043 | CC_ENV (); |
3044 | USE_T0 (); |
3045 | } |
3046 | |
3047 | static void cc__t0_add_prim__mul_shade_add_t0 () |
3048 | { |
3049 | if (cmb.combine_ext) |
3050 | { |
3051 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
3052 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3053 | GR_CMBX_ITRGB, 0, |
3054 | GR_CMBX_B, 0); |
3055 | CC_PRIM (); |
3056 | } |
3057 | else |
3058 | { |
3059 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3060 | GR_COMBINE_FACTOR_LOCAL, |
3061 | GR_COMBINE_LOCAL_ITERATED, |
3062 | GR_COMBINE_OTHER_TEXTURE); |
3063 | // MOD_0 (TMOD_TEX_ADD_COL); |
3064 | // MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
3065 | } |
3066 | USE_T0 (); |
3067 | } |
3068 | |
3069 | static void cc__t0_add_prim__mul_shade_add_t1 () |
3070 | { |
3071 | if (cmb.combine_ext) |
3072 | { |
3073 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3074 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3075 | GR_CMBX_ZERO, 0, |
3076 | GR_CMBX_B, 0); |
3077 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3078 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3079 | GR_CMBX_ITRGB, 0, |
3080 | GR_CMBX_B, 0); |
3081 | cmb.tex |= 3; |
3082 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
3083 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3084 | GR_CMBX_ITRGB, 0, |
3085 | GR_CMBX_B, 0); |
3086 | CC_PRIM (); |
3087 | } |
3088 | else |
3089 | { |
3090 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3091 | GR_COMBINE_FACTOR_ONE, |
3092 | GR_COMBINE_LOCAL_ITERATED, |
3093 | GR_COMBINE_OTHER_TEXTURE); |
3094 | MULSHADE_PRIM (); |
3095 | T0_ADD_T1 (); |
3096 | } |
3097 | } |
3098 | |
3099 | static void cc__t0_add_primlod__mul_shade_add_env () |
3100 | { |
3101 | if (cmb.combine_ext) |
3102 | { |
3103 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3104 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
3105 | GR_CMBX_ZERO, 1, |
3106 | GR_CMBX_ZERO, 0); |
3107 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3108 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
3109 | GR_CMBX_ZERO, 1, |
3110 | GR_CMBX_ZERO, 0); |
3111 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3112 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
3113 | GR_CMBX_ITRGB, 0, |
3114 | GR_CMBX_B, 0); |
3115 | CC_PRIMLOD (); |
3116 | cmb.tex_ccolor = cmb.ccolor; |
3117 | CC_ENV (); |
3118 | cmb.tex |= 1; |
3119 | } |
3120 | else |
3121 | { |
3122 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3123 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3124 | GR_COMBINE_LOCAL_CONSTANT, |
3125 | GR_COMBINE_OTHER_ITERATED); |
3126 | wxUint32 color = (lod_frac<<24) | (lod_frac<<16) | (lod_frac<<8); |
3127 | MOD_0 (TMOD_TEX_ADD_COL); |
3128 | MOD_0_COL (color & 0xFFFFFF00); |
3129 | CC_ENV (); |
3130 | USE_T0 (); |
3131 | } |
3132 | } |
3133 | |
3134 | static void cc__t0_mul_prima_add_prim_mul__shade_add_env () |
3135 | { |
3136 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3137 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3138 | GR_COMBINE_LOCAL_CONSTANT, |
3139 | GR_COMBINE_OTHER_ITERATED); |
3140 | CC_ENV (); |
3141 | if (cmb.combine_ext) |
3142 | { |
3143 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3144 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
3145 | GR_CMBX_TMU_CALPHA, 0, |
3146 | GR_CMBX_B, 0); |
3147 | cmb.tex_ccolor = rdp.prim_color; |
3148 | cmb.tex |= 1; |
3149 | } |
3150 | else |
3151 | { |
3152 | MOD_0 (TMOD_TEX_SCALE_FAC_ADD_COL); |
3153 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
3154 | MOD_0_FAC (rdp.prim_color & 0xFF); |
3155 | USE_T0 (); |
3156 | } |
3157 | } |
3158 | |
3159 | //Added by Gonetz |
3160 | static void cc_t0_mul_shadea_add_shade () |
3161 | { |
3162 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3163 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
3164 | GR_COMBINE_LOCAL_ITERATED, |
3165 | GR_COMBINE_OTHER_TEXTURE); |
3166 | USE_T0 (); |
3167 | } |
3168 | |
3169 | static void cc_prim_mul_prima_add_prim () //Added by Gonetz |
3170 | { |
3171 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3172 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
3173 | GR_COMBINE_LOCAL_CONSTANT, |
3174 | GR_COMBINE_OTHER_ITERATED); |
3175 | CC_PRIM (); |
3176 | CA_PRIM (); |
3177 | SETSHADE_PRIM (); |
3178 | } |
3179 | |
3180 | static void cc_prim_mul_prima_add_t0 () //Added by Gonetz |
3181 | { |
3182 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3183 | GR_COMBINE_FACTOR_ONE, |
3184 | GR_COMBINE_LOCAL_ITERATED, |
3185 | GR_COMBINE_OTHER_TEXTURE); |
3186 | SETSHADE_PRIM (); |
3187 | SETSHADE_PRIMA (); |
3188 | USE_T0 (); |
3189 | } |
3190 | |
3191 | static void cc_prim_mul_env_add_t0 () //Added by Gonetz |
3192 | { |
3193 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3194 | GR_COMBINE_FACTOR_ONE, |
3195 | GR_COMBINE_LOCAL_ITERATED, |
3196 | GR_COMBINE_OTHER_TEXTURE); |
3197 | SETSHADE_PRIM (); |
3198 | SETSHADE_ENV (); |
3199 | USE_T0 (); |
3200 | } |
3201 | |
3202 | static void cc_prim_mul_shade_add_t0 () |
3203 | { |
3204 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3205 | GR_COMBINE_FACTOR_ONE, |
3206 | GR_COMBINE_LOCAL_ITERATED, |
3207 | GR_COMBINE_OTHER_TEXTURE); |
3208 | MULSHADE_PRIM (); |
3209 | USE_T0 (); |
3210 | } |
3211 | |
3212 | static void cc_prim_mul_shade_add_env () |
3213 | { |
3214 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3215 | GR_COMBINE_FACTOR_ONE, |
3216 | GR_COMBINE_LOCAL_CONSTANT, |
3217 | GR_COMBINE_OTHER_ITERATED); |
3218 | CC_ENV (); |
3219 | MULSHADE_PRIM (); |
3220 | } |
3221 | |
3222 | static void cc_env_mul_shade_add_env () //Added by Gonetz |
3223 | { |
3224 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3225 | GR_COMBINE_FACTOR_ONE, |
3226 | GR_COMBINE_LOCAL_CONSTANT, |
3227 | GR_COMBINE_OTHER_ITERATED); |
3228 | CC_ENV (); |
3229 | MULSHADE_ENV (); |
3230 | } |
3231 | |
3232 | // ** A*B+C*D ** |
3233 | static void cc_t0_mul_prim_add_one_sub_prim_mul_shade () //Added by Gonetz |
3234 | { |
3235 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3236 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3237 | GR_COMBINE_LOCAL_ITERATED, |
3238 | GR_COMBINE_OTHER_CONSTANT); |
3239 | CC_PRIM (); |
3240 | MULSHADE_1MPRIM (); |
3241 | USE_T0 (); |
3242 | } |
3243 | |
3244 | static void cc_t0_mul_prim_add_shade_sub_env_mul_prim () //Added by Gonetz |
3245 | { |
3246 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3247 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3248 | GR_COMBINE_LOCAL_ITERATED, |
3249 | GR_COMBINE_OTHER_CONSTANT); |
3250 | CC_PRIM (); |
3251 | SUBSHADE_ENV () |
3252 | MULSHADE_PRIM (); |
3253 | USE_T0 (); |
3254 | } |
3255 | |
3256 | static void cc_t0_mul_prim_add_shade_mul_shadea_mul_prim () |
3257 | { |
3258 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3259 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3260 | GR_COMBINE_LOCAL_ITERATED, |
3261 | GR_COMBINE_OTHER_CONSTANT); |
3262 | CC_PRIM (); |
3263 | MULSHADE_PRIM (); |
3264 | MULSHADE_SHADEA (); |
3265 | USE_T0 (); |
3266 | } |
3267 | |
3268 | static void cc__t0_mul_t1__mul_prim_add_prim_mul_shade () //Added by Gonetz |
3269 | { |
3270 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3271 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3272 | GR_COMBINE_LOCAL_ITERATED, |
3273 | GR_COMBINE_OTHER_CONSTANT); |
3274 | MULSHADE_PRIM (); |
3275 | CC_PRIM (); |
3276 | T0_MUL_T1 (); |
3277 | } |
3278 | |
3279 | static void cc_t0_mul_env_add_prim_mul_shade () //Added by Gonetz |
3280 | { |
3281 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3282 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3283 | GR_COMBINE_LOCAL_ITERATED, |
3284 | GR_COMBINE_OTHER_CONSTANT); |
3285 | MULSHADE_PRIM (); |
3286 | CC_ENV (); |
3287 | USE_T0 (); |
3288 | } |
3289 | |
3290 | static void cc_t0_mul_enva_add_prim_mul_shade () //Added by Gonetz |
3291 | { |
3292 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3293 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3294 | GR_COMBINE_LOCAL_ITERATED, |
3295 | GR_COMBINE_OTHER_CONSTANT); |
3296 | MULSHADE_PRIM (); |
3297 | CC_ENVA (); |
3298 | USE_T0 (); |
3299 | } |
3300 | |
3301 | static void cc_t0_mul_shade_add_prim_mul_env () //Added by Gonetz |
3302 | { |
3303 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3304 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3305 | GR_COMBINE_LOCAL_CONSTANT, |
3306 | GR_COMBINE_OTHER_ITERATED); |
3307 | CC_PRIMMULENV (); |
3308 | USE_T0 (); |
3309 | } |
3310 | |
3311 | static void cc_prim_mul_env_add_one_sub_prim_mul_shade () //Added by Gonetz |
3312 | { |
3313 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3314 | GR_COMBINE_FACTOR_ONE, |
3315 | GR_COMBINE_LOCAL_ITERATED, |
3316 | GR_COMBINE_OTHER_CONSTANT); |
3317 | MULSHADE_1MPRIM (); |
3318 | CC_PRIMMULENV (); |
3319 | } |
3320 | |
3321 | // ** A*B*C ** |
3322 | |
3323 | static void cc_t0_mul_prim_mul_prim () //Added by Gonetz |
3324 | { |
3325 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3326 | GR_COMBINE_FACTOR_LOCAL, |
3327 | GR_COMBINE_LOCAL_ITERATED, |
3328 | GR_COMBINE_OTHER_TEXTURE); |
3329 | SETSHADE_PRIM (); |
3330 | SETSHADE_PRIM (); |
3331 | USE_T0 (); |
3332 | } |
3333 | |
3334 | static void cc_t0_mul_prim_mul_prima () //Added by Gonetz |
3335 | { |
3336 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3337 | GR_COMBINE_FACTOR_LOCAL, |
3338 | GR_COMBINE_LOCAL_ITERATED, |
3339 | GR_COMBINE_OTHER_TEXTURE); |
3340 | SETSHADE_PRIM (); |
3341 | SETSHADE_PRIMA (); |
3342 | USE_T0 (); |
3343 | } |
3344 | |
3345 | static void cc_t0_mul_enva_mul_shade () |
3346 | { |
3347 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3348 | GR_COMBINE_FACTOR_LOCAL, |
3349 | GR_COMBINE_LOCAL_ITERATED, |
3350 | GR_COMBINE_OTHER_TEXTURE); |
3351 | MULSHADE_ENVA (); |
3352 | USE_T0 (); |
3353 | } |
3354 | |
3355 | static void cc_t0_mul_primlod_mul_prim () //Added by Gonetz |
3356 | { |
3357 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3358 | GR_COMBINE_FACTOR_LOCAL, |
3359 | GR_COMBINE_LOCAL_CONSTANT, |
3360 | GR_COMBINE_OTHER_TEXTURE); |
3361 | CC_COLMULBYTE (rdp.prim_color, rdp.prim_lodfrac); |
3362 | USE_T0 (); |
3363 | } |
3364 | |
3365 | static void cc_t0_mul_primlod_mul_shade () //Added by Gonetz |
3366 | { |
3367 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3368 | GR_COMBINE_FACTOR_LOCAL, |
3369 | GR_COMBINE_LOCAL_ITERATED, |
3370 | GR_COMBINE_OTHER_TEXTURE); |
3371 | MULSHADE_PRIMLOD (); |
3372 | USE_T0 (); |
3373 | } |
3374 | |
3375 | static void cc__t0_mul_t1__mul_prim () |
3376 | { |
3377 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3378 | GR_COMBINE_FACTOR_LOCAL, |
3379 | GR_COMBINE_LOCAL_CONSTANT, |
3380 | GR_COMBINE_OTHER_TEXTURE); |
3381 | CC_PRIM (); |
3382 | T0_MUL_T1 (); |
3383 | } |
3384 | |
3385 | static void cc__t1_mul_t1_add_t0__mul_prim () |
3386 | { |
3387 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3388 | GR_COMBINE_FACTOR_LOCAL, |
3389 | GR_COMBINE_LOCAL_CONSTANT, |
3390 | GR_COMBINE_OTHER_TEXTURE); |
3391 | CC_PRIM (); |
3392 | if (cmb.combine_ext) |
3393 | { |
3394 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3395 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3396 | GR_CMBX_ZERO, 0, |
3397 | GR_CMBX_B, 0); |
3398 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
3399 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3400 | GR_CMBX_OTHER_TEXTURE_RGB, 0, |
3401 | GR_CMBX_B, 0); |
3402 | cmb.tex |= 3; |
3403 | } |
3404 | else |
3405 | { |
3406 | T0_ADD_T1 (); |
3407 | } |
3408 | } |
3409 | |
3410 | static void cc__t0_mul_t1__mul_prima () //Added by Gonetz |
3411 | { |
3412 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3413 | GR_COMBINE_FACTOR_LOCAL, |
3414 | GR_COMBINE_LOCAL_CONSTANT, |
3415 | GR_COMBINE_OTHER_TEXTURE); |
3416 | CC_PRIMA (); |
3417 | T0_MUL_T1 (); |
3418 | } |
3419 | |
3420 | static void cc__t0_mul_t1__mul_env () //Added by Gonetz |
3421 | { |
3422 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3423 | GR_COMBINE_FACTOR_LOCAL, |
3424 | GR_COMBINE_LOCAL_CONSTANT, |
3425 | GR_COMBINE_OTHER_TEXTURE); |
3426 | CC_ENV (); |
3427 | T0_MUL_T1 (); |
3428 | } |
3429 | |
3430 | static void cc__t0_mul_t1__mul_enva () //Added by Gonetz |
3431 | { |
3432 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3433 | GR_COMBINE_FACTOR_LOCAL, |
3434 | GR_COMBINE_LOCAL_CONSTANT, |
3435 | GR_COMBINE_OTHER_TEXTURE); |
3436 | CC_ENVA (); |
3437 | T0_MUL_T1 (); |
3438 | } |
3439 | |
3440 | static void cc__t0_mul_t1__mul_shade () |
3441 | { |
3442 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3443 | GR_COMBINE_FACTOR_LOCAL, |
3444 | GR_COMBINE_LOCAL_ITERATED, |
3445 | GR_COMBINE_OTHER_TEXTURE); |
3446 | T0_MUL_T1 (); |
3447 | } |
3448 | |
3449 | static void cc__t0a_mul_t1__mul_prim () //Added by Gonetz |
3450 | { |
3451 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3452 | GR_COMBINE_FACTOR_LOCAL, |
3453 | GR_COMBINE_LOCAL_CONSTANT, |
3454 | GR_COMBINE_OTHER_TEXTURE); |
3455 | CC_PRIM (); |
3456 | T0A_MUL_T1 (); |
3457 | } |
3458 | |
3459 | static void cc__t0_mul_t1a__mul_shade () //Added by Gonetz |
3460 | { |
3461 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3462 | GR_COMBINE_FACTOR_LOCAL, |
3463 | GR_COMBINE_LOCAL_ITERATED, |
3464 | GR_COMBINE_OTHER_TEXTURE); |
3465 | T0_MUL_T1A (); |
3466 | } |
3467 | |
3468 | static void cc__t0a_mul_t1__mul_shade () //Added by Gonetz |
3469 | { |
3470 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3471 | GR_COMBINE_FACTOR_LOCAL, |
3472 | GR_COMBINE_LOCAL_ITERATED, |
3473 | GR_COMBINE_OTHER_TEXTURE); |
3474 | T0A_MUL_T1 (); |
3475 | } |
3476 | |
3477 | static void cc_t0_mul_prim_mul_env () |
3478 | { |
3479 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3480 | GR_COMBINE_FACTOR_LOCAL, |
3481 | GR_COMBINE_LOCAL_ITERATED, |
3482 | GR_COMBINE_OTHER_TEXTURE); |
3483 | SETSHADE_PRIM (); |
3484 | SETSHADE_ENV (); // notice that setshade multiplies |
3485 | USE_T0 (); |
3486 | } |
3487 | |
3488 | static void cc_t0_mul_prim_mul_shade () |
3489 | { |
3490 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3491 | GR_COMBINE_FACTOR_LOCAL, |
3492 | GR_COMBINE_LOCAL_ITERATED, |
3493 | GR_COMBINE_OTHER_TEXTURE); |
3494 | MULSHADE_PRIM (); |
3495 | USE_T0 (); |
3496 | } |
3497 | |
3498 | static void cc_t0_mul_prim_mul_shadea () |
3499 | { |
3500 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3501 | GR_COMBINE_FACTOR_LOCAL, |
3502 | GR_COMBINE_LOCAL_ITERATED, |
3503 | GR_COMBINE_OTHER_TEXTURE); |
3504 | SETSHADE_PRIM (); |
3505 | MULSHADE_SHADEA(); |
3506 | USE_T0 (); |
3507 | } |
3508 | |
3509 | static void cc_t0_mul_prima_mul_shade () |
3510 | { |
3511 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3512 | GR_COMBINE_FACTOR_LOCAL, |
3513 | GR_COMBINE_LOCAL_ITERATED, |
3514 | GR_COMBINE_OTHER_TEXTURE); |
3515 | MULSHADE_PRIMA (); |
3516 | USE_T0 (); |
3517 | } |
3518 | |
3519 | static void cc_t1_mul__one_sub_prim_mul_shade_add_prim () |
3520 | { |
3521 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3522 | GR_COMBINE_FACTOR_LOCAL, |
3523 | GR_COMBINE_LOCAL_ITERATED, |
3524 | GR_COMBINE_OTHER_TEXTURE); |
3525 | MULSHADE_1MPRIM (); |
3526 | ADDSHADE_PRIM (); |
3527 | USE_T1 (); |
3528 | } |
3529 | |
3530 | static void cc_t0_mul_one_sub_env_mul_shade () |
3531 | { |
3532 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3533 | GR_COMBINE_FACTOR_LOCAL, |
3534 | GR_COMBINE_LOCAL_ITERATED, |
3535 | GR_COMBINE_OTHER_TEXTURE); |
3536 | MULSHADE_1MENV (); |
3537 | USE_T0 (); |
3538 | } |
3539 | |
3540 | static void cc_t1_mul_prim_mul_shade () |
3541 | { |
3542 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3543 | GR_COMBINE_FACTOR_LOCAL, |
3544 | GR_COMBINE_LOCAL_ITERATED, |
3545 | GR_COMBINE_OTHER_TEXTURE); |
3546 | MULSHADE_PRIM (); |
3547 | USE_T1 (); |
3548 | } |
3549 | |
3550 | //Added by Gonetz |
3551 | static void cc_t0_mul_1mprim_mul_shade () |
3552 | { |
3553 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3554 | GR_COMBINE_FACTOR_LOCAL, |
3555 | GR_COMBINE_LOCAL_ITERATED, |
3556 | GR_COMBINE_OTHER_TEXTURE); |
3557 | MULSHADE_1MPRIM (); |
3558 | USE_T0 (); |
3559 | } |
3560 | |
3561 | static void cc_t0_mul_env_mul_shade () |
3562 | { |
3563 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3564 | GR_COMBINE_FACTOR_LOCAL, |
3565 | GR_COMBINE_LOCAL_ITERATED, |
3566 | GR_COMBINE_OTHER_TEXTURE); |
3567 | MULSHADE_ENV (); |
3568 | USE_T0 (); |
3569 | } |
3570 | |
3571 | static void cc_t0_mul_scale_mul_shade () |
3572 | { |
3573 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3574 | GR_COMBINE_FACTOR_LOCAL, |
3575 | GR_COMBINE_LOCAL_ITERATED, |
3576 | GR_COMBINE_OTHER_TEXTURE); |
3577 | MULSHADE (rdp.SCALE); |
3578 | USE_T0 (); |
3579 | } |
3580 | |
3581 | static void cc_t0_mul_shade_mul_shadea () |
3582 | { |
3583 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3584 | GR_COMBINE_FACTOR_LOCAL, |
3585 | GR_COMBINE_LOCAL_ITERATED, |
3586 | GR_COMBINE_OTHER_TEXTURE); |
3587 | MULSHADE_SHADEA (); |
3588 | USE_T0 (); |
3589 | } |
3590 | |
3591 | static void cc_prim_mul_env_mul_shade () |
3592 | { |
3593 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3594 | GR_COMBINE_FACTOR_LOCAL, |
3595 | GR_COMBINE_LOCAL_CONSTANT, |
3596 | GR_COMBINE_OTHER_ITERATED); |
3597 | CC_ENV (); |
3598 | MULSHADE_PRIM (); |
3599 | } |
3600 | |
3601 | static void cc_prim_mul_one_sub_env_mul_shade () |
3602 | { |
3603 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3604 | GR_COMBINE_FACTOR_LOCAL, |
3605 | GR_COMBINE_LOCAL_CONSTANT, |
3606 | GR_COMBINE_OTHER_ITERATED); |
3607 | CC_1SUBENV (); |
3608 | MULSHADE_PRIM (); |
3609 | } |
3610 | |
3611 | // ** A*B*C+D ** |
3612 | static void cc_t0_mul_prim_mul_shade_add_env () |
3613 | { |
3614 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3615 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3616 | GR_COMBINE_LOCAL_CONSTANT, |
3617 | GR_COMBINE_OTHER_ITERATED); |
3618 | CC_ENV (); |
3619 | MULSHADE_PRIM (); |
3620 | USE_T0 (); |
3621 | } |
3622 | |
3623 | //Added by Gonetz |
3624 | static void cc_t0_mul_prim_mul_shadea_add_env () |
3625 | { |
3626 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3627 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
3628 | GR_COMBINE_LOCAL_ITERATED, |
3629 | GR_COMBINE_OTHER_TEXTURE); |
3630 | CC_ENV (); |
3631 | SETSHADE_ENV (); |
3632 | MULSHADE_A_PRIM (); |
3633 | USE_T0 (); |
3634 | } |
3635 | |
3636 | // (A*B+C)*D |
3637 | static void cc__t0_mul_prim_add_shade__mul_env () |
3638 | { |
3639 | if (cmb.combine_ext) |
3640 | { |
3641 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3642 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
3643 | GR_CMBX_TMU_CCOLOR, 0, |
3644 | GR_CMBX_B, 0); |
3645 | cmb.tex |= 1; |
3646 | cmb.tex_ccolor = rdp.prim_color; |
3647 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3648 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
3649 | GR_CMBX_CONSTANT_COLOR, 0, |
3650 | GR_CMBX_ZERO, 0); |
3651 | CC_ENV (); |
3652 | } |
3653 | else |
3654 | { |
3655 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3656 | GR_COMBINE_FACTOR_ONE, |
3657 | GR_COMBINE_LOCAL_ITERATED, |
3658 | GR_COMBINE_OTHER_TEXTURE); |
3659 | MULSHADE_ENV (); |
3660 | MOD_0 (TMOD_TEX_MUL_COL); |
3661 | CC_PRIMMULENV (); |
3662 | MOD_0_COL (cmb.ccolor & 0xFFFFFF00); |
3663 | USE_T0 (); |
3664 | } |
3665 | } |
3666 | |
3667 | static void cc__t0a_mul_prim_add_t0__mul_shade () |
3668 | { |
3669 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3670 | GR_COMBINE_FACTOR_LOCAL, |
3671 | GR_COMBINE_LOCAL_ITERATED, |
3672 | GR_COMBINE_OTHER_TEXTURE); |
3673 | MOD_0 (TMOD_COL_MUL_TEXA_ADD_TEX); |
3674 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
3675 | USE_T0 (); |
3676 | } |
3677 | |
3678 | static void cc__t0a_mul_env_add_t0__mul_shade () |
3679 | { |
3680 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3681 | GR_COMBINE_FACTOR_LOCAL, |
3682 | GR_COMBINE_LOCAL_ITERATED, |
3683 | GR_COMBINE_OTHER_TEXTURE); |
3684 | MOD_0 (TMOD_COL_MUL_TEXA_ADD_TEX); |
3685 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
3686 | USE_T0 (); |
3687 | } |
3688 | |
3689 | static void cc__prim_mul_shade_add_env__mul_shade () //Aded by Gonetz |
3690 | { |
3691 | if (!cmb.combine_ext) |
3692 | { |
3693 | cc_prim_mul_shade_add_env (); |
3694 | return; |
3695 | } |
3696 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
3697 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3698 | GR_CMBX_ITRGB, 0, |
3699 | GR_CMBX_ZERO, 0); |
3700 | cmb.tex |= 1; |
3701 | cmb.tex_ccolor = rdp.prim_color; |
3702 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3703 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
3704 | GR_CMBX_ITRGB, 0, |
3705 | GR_CMBX_ZERO, 0); |
3706 | CC_ENV (); |
3707 | } |
3708 | |
3709 | // ** A*B*C+D*E ** |
3710 | //Added by Gonetz |
3711 | static void cc__t0_sub_t1__mul_prim_mul_shade_add_prim_mul_env () |
3712 | { |
3713 | if (cmb.combine_ext) |
3714 | { |
3715 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3716 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3717 | GR_CMBX_ZERO, 0, |
3718 | GR_CMBX_B, 0); |
3719 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3720 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
3721 | GR_CMBX_ZERO, 1, |
3722 | GR_CMBX_ZERO, 0); |
3723 | cmb.tex |= 3; |
3724 | } |
3725 | else |
3726 | { |
3727 | USE_T0 (); |
3728 | } |
3729 | |
3730 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3731 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3732 | GR_COMBINE_LOCAL_CONSTANT, |
3733 | GR_COMBINE_OTHER_ITERATED); |
3734 | CC_PRIMMULENV (); |
3735 | MULSHADE_PRIM (); |
3736 | } |
3737 | |
3738 | static void cc__t0_mul_prim_mul_env__add__prim_mul_shade () |
3739 | { |
3740 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3741 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3742 | GR_COMBINE_LOCAL_ITERATED, |
3743 | GR_COMBINE_OTHER_CONSTANT); |
3744 | CC_PRIMMULENV (); |
3745 | MULSHADE_PRIM (); |
3746 | USE_T0 (); |
3747 | } |
3748 | |
3749 | static void cc__t1_mul_prim_mul_env__add__prim_mul_shade () |
3750 | { |
3751 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3752 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3753 | GR_COMBINE_LOCAL_ITERATED, |
3754 | GR_COMBINE_OTHER_CONSTANT); |
3755 | CC_PRIMMULENV (); |
3756 | MULSHADE_PRIM (); |
3757 | USE_T1 (); |
3758 | } |
3759 | |
3760 | //Added by Gonetz |
3761 | static void cc_t0_mul_one_sub_prim_mul_shade_add_prim_mul_env () |
3762 | { |
3763 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3764 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3765 | GR_COMBINE_LOCAL_CONSTANT, |
3766 | GR_COMBINE_OTHER_ITERATED); |
3767 | CC_PRIMMULENV (); |
3768 | MULSHADE_1MPRIM (); |
3769 | USE_T0 (); |
3770 | } |
3771 | |
3772 | //Added by Gonetz |
3773 | static void cc_t0_mul_one_sub_prim_mul_shadea_add_prim_mul_env () |
3774 | { |
3775 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3776 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3777 | GR_COMBINE_LOCAL_CONSTANT, |
3778 | GR_COMBINE_OTHER_ITERATED); |
3779 | CC_PRIMMULENV (); |
3780 | SETSHADE_1MPRIM (); |
3781 | MULSHADE_SHADEA (); |
3782 | USE_T0 (); |
3783 | } |
3784 | |
3785 | //Added by Gonetz |
3786 | static void cc_t0_mul_one_sub_env_mul_shade_add_env () |
3787 | { |
3788 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3789 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3790 | GR_COMBINE_LOCAL_CONSTANT, |
3791 | GR_COMBINE_OTHER_ITERATED); |
3792 | CC_ENV (); |
3793 | MULSHADE_1MENV (); |
3794 | USE_T0 (); |
3795 | } |
3796 | |
3797 | static void cc_t0_mul_prima_mul_shade_add_prim_mul_one_sub_prima () //Aded by Gonetz |
3798 | { |
3799 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3800 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3801 | GR_COMBINE_LOCAL_CONSTANT, |
3802 | GR_COMBINE_OTHER_ITERATED); |
3803 | MULSHADE_PRIMA (); |
3804 | USE_T0 (); |
3805 | wxUint8 fac = 255 - (wxUint8)(rdp.prim_color&0xFF); |
3806 | float col[3]; |
3807 | col[0] = (float)((rdp.prim_color & 0xFF000000) >> 24) / 255.0f; |
3808 | col[1] = (float)((rdp.prim_color & 0x00FF0000) >> 16) / 255.0f; |
3809 | col[2] = (float)((rdp.prim_color & 0x0000FF00) >> 8) / 255.0f; |
3810 | CC ( ((wxUint8)(col[0]*fac))<<24 | ((wxUint8)(col[1]*fac))<<16 | ((wxUint8)(col[2]*fac))<<8 | fac ); |
3811 | } |
3812 | |
3813 | // ** A*(1-B)+C ** |
3814 | static void cc_t0_mul_1menv_add_prim () |
3815 | { |
3816 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
3817 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
3818 | GR_COMBINE_LOCAL_CONSTANT, |
3819 | GR_COMBINE_OTHER_ITERATED); |
3820 | CC_PRIM (); |
3821 | SETSHADE_1MENV (); |
3822 | USE_T0 (); |
3823 | } |
3824 | |
3825 | // ** (A+B)*C ** |
3826 | static void cc_t0_mul_scale_add_prim__mul_shade () //Aded by Gonetz |
3827 | { |
3828 | if (cmb.combine_ext) |
3829 | { |
3830 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3831 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
3832 | GR_CMBX_TMU_CCOLOR, 0, |
3833 | GR_CMBX_ZERO, 0); |
3834 | cmb.tex |= 1; |
3835 | cmb.tex_ccolor = rdp.SCALE; |
3836 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3837 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
3838 | GR_CMBX_ITRGB, 0, |
3839 | GR_CMBX_ZERO, 0); |
3840 | CC_PRIM (); |
3841 | } |
3842 | else |
3843 | { |
3844 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3845 | GR_COMBINE_FACTOR_LOCAL, |
3846 | GR_COMBINE_LOCAL_ITERATED, |
3847 | GR_COMBINE_OTHER_TEXTURE); |
3848 | MOD_0 (TMOD_TEX_ADD_COL); |
3849 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
3850 | USE_T0 (); |
3851 | } |
3852 | } |
3853 | |
3854 | static void cc__t0_mul_t1_add_prim__mul_shade () //Aded by Gonetz |
3855 | { |
3856 | if (cmb.combine_ext) |
3857 | { |
3858 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3859 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
3860 | GR_CMBX_ITRGB, 0, |
3861 | GR_CMBX_ZERO, 0); |
3862 | CC_PRIM (); |
3863 | } |
3864 | else |
3865 | { |
3866 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3867 | GR_COMBINE_FACTOR_LOCAL, |
3868 | GR_COMBINE_LOCAL_ITERATED, |
3869 | GR_COMBINE_OTHER_TEXTURE); |
3870 | MULSHADE_PRIM (); |
3871 | } |
3872 | T0_MUL_T1 (); |
3873 | } |
3874 | |
3875 | static void cc_t0_mul__prim_add_env () |
3876 | { |
3877 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3878 | GR_COMBINE_FACTOR_LOCAL, |
3879 | GR_COMBINE_LOCAL_ITERATED, |
3880 | GR_COMBINE_OTHER_TEXTURE); |
3881 | SETSHADE_PRIM (); |
3882 | ADDSHADE_ENV (); |
3883 | USE_T0 (); |
3884 | } |
3885 | |
3886 | static void cc_t0_mul__prim_mul_primlod_add_env () //Aded by Gonetz |
3887 | { |
3888 | // forest behind window, Dobutsu no Mori. |
3889 | // (prim-0)*prim_lod+env, (t1-0)*cmb+0 |
3890 | //actually, the game uses t0 instead of t1 here. t1 does not set at all this moment. |
3891 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3892 | GR_COMBINE_FACTOR_LOCAL, |
3893 | GR_COMBINE_LOCAL_ITERATED, |
3894 | GR_COMBINE_OTHER_TEXTURE); |
3895 | float prim_lod = rdp.prim_lodfrac / 65025.0f; |
3896 | rdp.col[0] *= ((rdp.prim_color & 0xFF000000) >> 24) * prim_lod; |
3897 | rdp.col[1] *= ((rdp.prim_color & 0x00FF0000) >> 16) * prim_lod; |
3898 | rdp.col[2] *= ((rdp.prim_color & 0x0000FF00) >> 8) * prim_lod; |
3899 | rdp.cmb_flags = CMB_SET; |
3900 | ADDSHADE_ENV (); |
3901 | USE_T0 (); |
3902 | } |
3903 | |
3904 | // ** (A-B)*C ** |
3905 | static void cc__t0_mul_prim_add_shade__sub_env_mul_shade () |
3906 | { |
3907 | if (cmb.combine_ext) |
3908 | { |
3909 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3910 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
3911 | GR_CMBX_TMU_CCOLOR, 0, |
3912 | GR_CMBX_B, 0); |
3913 | cmb.tex_ccolor = rdp.prim_color; |
3914 | cmb.tex |= 1; |
3915 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3916 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
3917 | GR_CMBX_ITRGB, 0, |
3918 | GR_CMBX_ZERO, 0); |
3919 | CC_ENV (); |
3920 | } |
3921 | else |
3922 | { |
3923 | cc_t0_mul_prim_mul_shade (); |
3924 | } |
3925 | } |
3926 | |
3927 | static void cc_t0_sub_prim_mul_shadea () //Aded by Gonetz |
3928 | { |
3929 | // * not guaranteed to work if another iterated alpha is set |
3930 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
3931 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
3932 | GR_COMBINE_LOCAL_ITERATED, |
3933 | GR_COMBINE_OTHER_TEXTURE); |
3934 | SETSHADE_PRIM (); |
3935 | USE_T0 (); |
3936 | } |
3937 | |
3938 | static void cc__t0_sub_env_mul_shade__sub_prim_mul_shade () |
3939 | { |
3940 | if (cmb.combine_ext) |
3941 | { |
3942 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
3943 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
3944 | GR_CMBX_ITRGB, 0, |
3945 | GR_CMBX_ZERO, 0); |
3946 | cmb.tex_ccolor = rdp.env_color; |
3947 | cmb.tex |= 1; |
3948 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3949 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
3950 | GR_CMBX_ITRGB, 0, |
3951 | GR_CMBX_ITRGB, 0); |
3952 | CC_PRIM (); |
3953 | } |
3954 | else |
3955 | { |
3956 | cc_t0_mul_shade (); |
3957 | } |
3958 | } |
3959 | |
3960 | static void cc_t0_sub_prim_mul_shade () |
3961 | { |
3962 | if (cmb.combine_ext) |
3963 | { |
3964 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3965 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
3966 | GR_CMBX_ITRGB, 0, |
3967 | GR_CMBX_ZERO, 0); |
3968 | CC_PRIM (); |
3969 | } |
3970 | else |
3971 | { |
3972 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3973 | GR_COMBINE_FACTOR_LOCAL, |
3974 | GR_COMBINE_LOCAL_ITERATED, |
3975 | GR_COMBINE_OTHER_TEXTURE); |
3976 | if (rdp.prim_color & 0xFFFFFF00) |
3977 | { |
3978 | MOD_0 (TMOD_TEX_SUB_COL); |
3979 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
3980 | } |
3981 | } |
3982 | USE_T0 (); |
3983 | } |
3984 | |
3985 | static void cc__t0_mul_t1__sub_prim_mul_shade () |
3986 | { |
3987 | if (cmb.combine_ext) |
3988 | { |
3989 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
3990 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
3991 | GR_CMBX_ITRGB, 0, |
3992 | GR_CMBX_ZERO, 0); |
3993 | CC_PRIM (); |
3994 | } |
3995 | else |
3996 | { |
3997 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
3998 | GR_COMBINE_FACTOR_LOCAL, |
3999 | GR_COMBINE_LOCAL_ITERATED, |
4000 | GR_COMBINE_OTHER_TEXTURE); |
4001 | } |
4002 | T0_MUL_T1 (); |
4003 | } |
4004 | |
4005 | static void cc_t0_sub_env_mul_shade () |
4006 | { |
4007 | if (cmb.combine_ext) |
4008 | { |
4009 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4010 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
4011 | GR_CMBX_ITRGB, 0, |
4012 | GR_CMBX_ZERO, 0); |
4013 | CC_ENV (); |
4014 | } |
4015 | else |
4016 | { |
4017 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4018 | GR_COMBINE_FACTOR_LOCAL, |
4019 | GR_COMBINE_LOCAL_ITERATED, |
4020 | GR_COMBINE_OTHER_TEXTURE); |
4021 | if (rdp.env_color & 0xFFFFFF00) |
4022 | { |
4023 | MOD_0 (TMOD_TEX_SUB_COL); |
4024 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
4025 | } |
4026 | } |
4027 | USE_T0 (); |
4028 | } |
4029 | |
4030 | static void cc__t0_mul_prima_add_t0__sub_center_mul_scale () |
4031 | { |
4032 | if (cmb.combine_ext) |
4033 | { |
4034 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4035 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4036 | GR_CMBX_TMU_CCOLOR, 0, |
4037 | GR_CMBX_B, 0); |
4038 | wxUint32 prima = rdp.prim_color&0xFF; |
4039 | cmb.tex_ccolor = (prima<<24)|(prima<<16)|(prima<<8)|prima; |
4040 | cmb.tex |= 1; |
4041 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4042 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
4043 | GR_CMBX_ITRGB, 0, |
4044 | GR_CMBX_ZERO, 0); |
4045 | CC(rdp.CENTER); |
4046 | SETSHADE(rdp.SCALE); |
4047 | } |
4048 | else |
4049 | { |
4050 | cc_t0_mul_prima(); |
4051 | } |
4052 | } |
4053 | |
4054 | static void cc__t1_inter_t0_using_primlod__sub_shade_mul_prim () |
4055 | { |
4056 | if (cmb.combine_ext) |
4057 | { |
4058 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4059 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4060 | GR_CMBX_CONSTANT_COLOR, 0, |
4061 | GR_CMBX_ZERO, 0); |
4062 | CC_PRIM (); |
4063 | } |
4064 | else |
4065 | { |
4066 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4067 | GR_COMBINE_FACTOR_ONE, |
4068 | GR_COMBINE_LOCAL_ITERATED, |
4069 | GR_COMBINE_OTHER_TEXTURE); |
4070 | MULSHADE_PRIM (); |
4071 | } |
4072 | T1_INTER_T0_USING_FACTOR (lod_frac); |
4073 | } |
4074 | |
4075 | static void cc__t0_inter_t1_using_enva__sub_shade_mul_prim () |
4076 | { |
4077 | if (cmb.combine_ext) |
4078 | { |
4079 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4080 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4081 | GR_CMBX_CONSTANT_COLOR, 0, |
4082 | GR_CMBX_ZERO, 0); |
4083 | CC_PRIM (); |
4084 | } |
4085 | else |
4086 | { |
4087 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4088 | GR_COMBINE_FACTOR_ONE, |
4089 | GR_COMBINE_LOCAL_ITERATED, |
4090 | GR_COMBINE_OTHER_TEXTURE); |
4091 | MULSHADE_PRIM (); |
4092 | } |
4093 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
4094 | T0_INTER_T1_USING_FACTOR (factor); |
4095 | } |
4096 | |
4097 | static void cc_t0_sub_shade_mul_shadea () //Aded by Gonetz |
4098 | { |
4099 | // * not guaranteed to work if another iterated alpha is set |
4100 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4101 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4102 | GR_COMBINE_LOCAL_ITERATED, |
4103 | GR_COMBINE_OTHER_TEXTURE); |
4104 | USE_T0 (); |
4105 | } |
4106 | |
4107 | static void cc_one_sub_t0_mul_prim () //Added by Gonetz |
4108 | { |
4109 | CCMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
4110 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4111 | GR_COMBINE_LOCAL_CONSTANT, |
4112 | GR_COMBINE_OTHER_NONE); |
4113 | CC_PRIM (); |
4114 | USE_T0 (); |
4115 | } |
4116 | |
4117 | static void cc_one_sub_prim_mul_prima () //Added by Gonetz |
4118 | { |
4119 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4120 | GR_COMBINE_FACTOR_LOCAL, |
4121 | GR_COMBINE_LOCAL_ITERATED, |
4122 | GR_COMBINE_OTHER_CONSTANT); |
4123 | CC (~rdp.prim_color); |
4124 | SETSHADE_PRIMA (); |
4125 | } |
4126 | |
4127 | static void cc_shade_sub_prim_mul_t0 () //Aded by Gonetz |
4128 | { |
4129 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4130 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4131 | GR_COMBINE_LOCAL_CONSTANT, |
4132 | GR_COMBINE_OTHER_ITERATED); |
4133 | CC_PRIM (); |
4134 | USE_T0 (); |
4135 | } |
4136 | |
4137 | static void cc_shade_sub_prim_mul_env () //Aded by Gonetz |
4138 | { |
4139 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4140 | GR_COMBINE_FACTOR_LOCAL, |
4141 | GR_COMBINE_LOCAL_CONSTANT, |
4142 | GR_COMBINE_OTHER_ITERATED); |
4143 | CC_ENV (); |
4144 | SUBSHADE_PRIM (); |
4145 | } |
4146 | |
4147 | static void cc_shade_sub_env_mul_t0 () //Aded by Gonetz |
4148 | { |
4149 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4150 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4151 | GR_COMBINE_LOCAL_CONSTANT, |
4152 | GR_COMBINE_OTHER_ITERATED); |
4153 | CC_ENV (); |
4154 | USE_T0 (); |
4155 | } |
4156 | |
4157 | static void cc_shade_sub_prim_mul__t0_inter_t1_using_primlod () //Aded by Gonetz |
4158 | { |
4159 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4160 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4161 | GR_COMBINE_LOCAL_CONSTANT, |
4162 | GR_COMBINE_OTHER_ITERATED); |
4163 | CC_PRIM (); |
4164 | T0_INTER_T1_USING_FACTOR (lod_frac); |
4165 | } |
4166 | |
4167 | static void cc_shade_sub_env_mul__t0_inter_t1_using_primlod () //Aded by Gonetz |
4168 | { |
4169 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4170 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4171 | GR_COMBINE_LOCAL_CONSTANT, |
4172 | GR_COMBINE_OTHER_ITERATED); |
4173 | CC_ENV (); |
4174 | T0_INTER_T1_USING_FACTOR (lod_frac); |
4175 | } |
4176 | |
4177 | static void cc_shade_sub_env_mul_prim () //Aded by Gonetz |
4178 | { |
4179 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4180 | GR_COMBINE_FACTOR_LOCAL, |
4181 | GR_COMBINE_LOCAL_CONSTANT, |
4182 | GR_COMBINE_OTHER_ITERATED); |
4183 | CC_PRIM(); |
4184 | SUBSHADE_ENV (); |
4185 | } |
4186 | |
4187 | static void cc_shade_sub__prim_mul_prima () //Aded by Gonetz |
4188 | { |
4189 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4190 | GR_COMBINE_FACTOR_ONE, |
4191 | GR_COMBINE_LOCAL_CONSTANT, |
4192 | GR_COMBINE_OTHER_ITERATED); |
4193 | CC_C1MULC2 (rdp.prim_color, (rdp.prim_color&0xFF)); |
4194 | } |
4195 | |
4196 | static void cc_one_sub__t0_mul_t1__mul_shade () //Aded by Gonetz |
4197 | { |
4198 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4199 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4200 | GR_COMBINE_LOCAL_ITERATED, |
4201 | GR_COMBINE_OTHER_CONSTANT); |
4202 | CC (0); |
4203 | T0_MUL_T1 (); |
4204 | } |
4205 | |
4206 | static void cc_one_sub__t0_mul_shadea__mul_shade () //Aded by Gonetz |
4207 | { |
4208 | if (cmb.combine_ext) |
4209 | { |
4210 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4211 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4212 | GR_CMBX_ITALPHA, 0, |
4213 | GR_CMBX_ZERO, 0); |
4214 | cmb.tex |= 1; |
4215 | |
4216 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
4217 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
4218 | GR_CMBX_ITRGB, 0, |
4219 | GR_CMBX_ZERO, 0); |
4220 | } |
4221 | else |
4222 | { |
4223 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4224 | GR_COMBINE_FACTOR_LOCAL, |
4225 | GR_COMBINE_LOCAL_ITERATED, |
4226 | GR_COMBINE_OTHER_TEXTURE); |
4227 | USE_T0 (); |
4228 | cmb.tmu0_invert = TRUE; |
4229 | } |
4230 | } |
4231 | |
4232 | static void cc_one_sub_env_mul_t0 () //Aded by Gonetz |
4233 | { |
4234 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4235 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
4236 | GR_COMBINE_LOCAL_CONSTANT, |
4237 | GR_COMBINE_OTHER_TEXTURE); |
4238 | CC_ENV (); |
4239 | USE_T0 (); |
4240 | } |
4241 | |
4242 | static void cc_one_sub_env_mul__t0_inter_t1_using_primlod () //Aded by Gonetz |
4243 | { |
4244 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4245 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
4246 | GR_COMBINE_LOCAL_CONSTANT, |
4247 | GR_COMBINE_OTHER_TEXTURE); |
4248 | CC_ENV (); |
4249 | T0_INTER_T1_USING_FACTOR (lod_frac); |
4250 | } |
4251 | |
4252 | static void cc_one_sub_env_mul_prim () //Aded by Gonetz |
4253 | { |
4254 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4255 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
4256 | GR_COMBINE_LOCAL_CONSTANT, |
4257 | GR_COMBINE_OTHER_ITERATED); |
4258 | CC_ENV (); |
4259 | SETSHADE_PRIM (); |
4260 | } |
4261 | |
4262 | static void cc_one_sub_env_mul_shade () //Aded by Gonetz |
4263 | { |
4264 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4265 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
4266 | GR_COMBINE_LOCAL_CONSTANT, |
4267 | GR_COMBINE_OTHER_ITERATED); |
4268 | CC_ENV (); |
4269 | } |
4270 | |
4271 | // ** (1-A)*B + A*C ** |
4272 | static void cc_t0_mul_env_add_1mt0_mul_shade () |
4273 | { |
4274 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4275 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4276 | GR_COMBINE_LOCAL_ITERATED, |
4277 | GR_COMBINE_OTHER_CONSTANT); |
4278 | CC_ENV (); |
4279 | USE_T0 (); |
4280 | } |
4281 | |
4282 | // ** (1-A)*B+C ** |
4283 | static void cc_one_sub_shade_mul__t1_sub_prim_mul_primlod_add_t0__add_shade () //Added by Gonetz |
4284 | { |
4285 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4286 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
4287 | GR_COMBINE_LOCAL_ITERATED, |
4288 | GR_COMBINE_OTHER_TEXTURE); |
4289 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
4290 | } |
4291 | |
4292 | // ** (1-A)*B*C ** |
4293 | static void cc_one_sub_t0_mul_prim_mul_shade () //Added by Gonetz |
4294 | { |
4295 | CCMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
4296 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4297 | GR_COMBINE_LOCAL_ITERATED, |
4298 | GR_COMBINE_OTHER_NONE); |
4299 | MULSHADE_PRIM (); |
4300 | USE_T0 (); |
4301 | } |
4302 | |
4303 | // ** (A-B)*C*D ** |
4304 | static void cc_prim_sub_env_mul_t0_mul_shade () |
4305 | { |
4306 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4307 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4308 | GR_COMBINE_LOCAL_NONE, |
4309 | GR_COMBINE_OTHER_ITERATED); |
4310 | MULSHADE_PRIMSUBENV (); |
4311 | USE_T0 (); |
4312 | } |
4313 | |
4314 | // ** (A-B)*C+D ** |
4315 | static void cc_t0_sub_t1_mul_prim_mul_shade_add_t1 () //Aded by Gonetz |
4316 | { |
4317 | if (cmb.combine_ext) |
4318 | { |
4319 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4320 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4321 | GR_CMBX_ZERO, 0, |
4322 | GR_CMBX_B, 0); |
4323 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4324 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
4325 | GR_CMBX_ITRGB, 0, |
4326 | GR_CMBX_B, 0); |
4327 | cmb.tex |= 3; |
4328 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4329 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
4330 | GR_CMBX_ZERO, 1, |
4331 | GR_CMBX_ZERO, 0); |
4332 | MULSHADE_PRIM (); |
4333 | } |
4334 | else |
4335 | { |
4336 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4337 | GR_COMBINE_FACTOR_LOCAL, |
4338 | GR_COMBINE_LOCAL_CONSTANT, |
4339 | GR_COMBINE_OTHER_TEXTURE); |
4340 | CC_PRIM (); |
4341 | T0_ADD_T1 (); |
4342 | } |
4343 | } |
4344 | |
4345 | static void cc_t0_sub_prim_mul_t0a_add_prim () //Aded by Gonetz |
4346 | { |
4347 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
4348 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
4349 | GR_COMBINE_LOCAL_CONSTANT, |
4350 | GR_COMBINE_OTHER_TEXTURE); |
4351 | CC_PRIM (); |
4352 | USE_T0 (); |
4353 | } |
4354 | |
4355 | static void cc_t0_sub_prim_mul_t1_add_shade () //Aded by Gonetz |
4356 | { |
4357 | if (cmb.combine_ext) |
4358 | { |
4359 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4360 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4361 | GR_CMBX_ZERO, 0, |
4362 | GR_CMBX_B, 0); |
4363 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4364 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4365 | GR_CMBX_OTHER_TEXTURE_RGB, 0, |
4366 | GR_CMBX_ZERO, 0); |
4367 | cmb.tex |= 3; |
4368 | cmb.tex_ccolor = rdp.prim_color; |
4369 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4370 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
4371 | GR_CMBX_ZERO, 1, |
4372 | GR_CMBX_B, 0); |
4373 | } |
4374 | else |
4375 | { |
4376 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4377 | GR_COMBINE_FACTOR_ONE, |
4378 | GR_COMBINE_LOCAL_ITERATED, |
4379 | GR_COMBINE_OTHER_TEXTURE); |
4380 | MOD_0 (TMOD_TEX_SUB_COL); |
4381 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4382 | T0_MUL_T1 (); |
4383 | } |
4384 | } |
4385 | |
4386 | static void cc_t0_sub_prim_mul_primlod_add_prim () //Aded by Gonetz |
4387 | { |
4388 | if (cmb.combine_ext) |
4389 | { |
4390 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4391 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4392 | GR_CMBX_CONSTANT_COLOR, 0, |
4393 | GR_CMBX_B, 0); |
4394 | SETSHADE_PRIM (); |
4395 | CC_PRIMLOD (); |
4396 | } |
4397 | else |
4398 | { |
4399 | // * not guaranteed to work if another iterated alpha is set |
4400 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4401 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4402 | GR_COMBINE_LOCAL_ITERATED, |
4403 | GR_COMBINE_OTHER_CONSTANT); |
4404 | SETSHADE_PRIM (); |
4405 | SETSHADE_1MPRIMLOD (); |
4406 | CC_PRIMLOD (); |
4407 | } |
4408 | USE_T0 (); |
4409 | } |
4410 | |
4411 | static void cc_t0_sub_prim_mul_prima_add_prim () //Aded by Gonetz |
4412 | { |
4413 | // * not guaranteed to work if another iterated alpha is set |
4414 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4415 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4416 | GR_COMBINE_LOCAL_ITERATED, |
4417 | GR_COMBINE_OTHER_CONSTANT); |
4418 | SETSHADE_PRIM (); |
4419 | SETSHADE_1MPRIMA (); |
4420 | CC_PRIMA (); |
4421 | USE_T0 (); |
4422 | } |
4423 | |
4424 | static void cc_t0_sub_prim_mul_shadea_add_prim () //Aded by Gonetz |
4425 | { |
4426 | // * not guaranteed to work if another iterated alpha is set |
4427 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
4428 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4429 | GR_COMBINE_LOCAL_ITERATED, |
4430 | GR_COMBINE_OTHER_TEXTURE); |
4431 | SETSHADE_PRIM (); |
4432 | USE_T0 (); |
4433 | } |
4434 | |
4435 | static void cc_t0_sub_prim_mul_env_add_shade () //Aded by Gonetz |
4436 | { |
4437 | if (cmb.combine_ext) |
4438 | { |
4439 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4440 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4441 | GR_CMBX_ZERO, 1, |
4442 | GR_CMBX_ZERO, 0); |
4443 | cmb.tex |= 1; |
4444 | cmb.tex_ccolor = rdp.prim_color; |
4445 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4446 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
4447 | GR_CMBX_CONSTANT_COLOR, 0, |
4448 | GR_CMBX_B, 0); |
4449 | CC_ENV (); |
4450 | } |
4451 | else |
4452 | { |
4453 | cc_t0_mul_env_add_shade (); |
4454 | } |
4455 | } |
4456 | |
4457 | static void cc__t0_inter_t1_using_shadea__sub_prim_mul_env_add_shade () //Aded by Gonetz |
4458 | { |
4459 | if (cmb.combine_ext) |
4460 | { |
4461 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4462 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
4463 | GR_CMBX_CONSTANT_COLOR, 0, |
4464 | GR_CMBX_B, 0); |
4465 | //have to pass shade alpha to combiner |
4466 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
4467 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
4468 | GR_CMBX_ZERO, 0, |
4469 | GR_CMBX_ZERO, 0); |
4470 | } |
4471 | else |
4472 | { |
4473 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4474 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4475 | GR_COMBINE_LOCAL_ITERATED, |
4476 | GR_COMBINE_OTHER_CONSTANT); |
4477 | } |
4478 | CC_ENV (); |
4479 | SUBSHADE_PRIMMULENV (); |
4480 | T0_INTER_T1_USING_SHADEA (); |
4481 | } |
4482 | |
4483 | |
4484 | static void cc_t0_sub_prim_mul_env_add_prim () //Aded by Gonetz |
4485 | { |
4486 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4487 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4488 | GR_COMBINE_LOCAL_ITERATED, |
4489 | GR_COMBINE_OTHER_CONSTANT); |
4490 | CC_ENV (); |
4491 | SETSHADE_PRIM (); |
4492 | SETSHADE_1MENV (); |
4493 | USE_T0 (); |
4494 | } |
4495 | |
4496 | static void cc_t0_sub_prim_mul_enva_add_prim () //Aded by Gonetz41 |
4497 | { |
4498 | if (cmb.combine_ext) |
4499 | { |
4500 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4501 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4502 | GR_CMBX_CONSTANT_COLOR, 0, |
4503 | GR_CMBX_B, 0); |
4504 | SETSHADE_PRIM (); |
4505 | CC_ENVA (); |
4506 | } |
4507 | else |
4508 | { |
4509 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4510 | GR_COMBINE_FACTOR_ONE, |
4511 | GR_COMBINE_LOCAL_CONSTANT, |
4512 | GR_COMBINE_OTHER_TEXTURE); |
4513 | CC_PRIM (); |
4514 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); |
4515 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4516 | MOD_0_FAC (rdp.env_color & 0xFF); |
4517 | } |
4518 | USE_T0 (); |
4519 | } |
4520 | |
4521 | static void cc_t0_sub_prim_mul_primlod_add_env () //Aded by Gonetz |
4522 | { |
4523 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4524 | GR_COMBINE_FACTOR_ONE, |
4525 | GR_COMBINE_LOCAL_CONSTANT, |
4526 | GR_COMBINE_OTHER_TEXTURE); |
4527 | CC_ENV (); |
4528 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); |
4529 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4530 | MOD_0_FAC (lod_frac & 0xFF); |
4531 | USE_T0 (); |
4532 | } |
4533 | |
4534 | static void cc_t0_sub__prim_mul_env () //Aded by Gonetz |
4535 | { |
4536 | if ( (rdp.prim_color & 0xFFFFFF00) == 0xFFFFFF00 && (rdp.env_color & 0xFFFFFF00) == 0xFFFFFF00) |
4537 | { |
4538 | CCMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
4539 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4540 | GR_COMBINE_LOCAL_CONSTANT, |
4541 | GR_COMBINE_OTHER_NONE); |
4542 | CC_PRIM (); |
4543 | } |
4544 | else |
4545 | { |
4546 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
4547 | GR_COMBINE_FACTOR_ONE, |
4548 | GR_COMBINE_LOCAL_ITERATED, |
4549 | GR_COMBINE_OTHER_TEXTURE); |
4550 | SETSHADE_PRIM (); |
4551 | SETSHADE_ENV (); |
4552 | } |
4553 | USE_T0 (); |
4554 | } |
4555 | |
4556 | static void cc__t0_mul_t1__sub_prim_mul__t0t1a__add_prim () //Aded by Gonetz |
4557 | { |
4558 | // * not guaranteed to work if another iterated alpha is set |
4559 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4560 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
4561 | GR_COMBINE_LOCAL_CONSTANT, |
4562 | GR_COMBINE_OTHER_TEXTURE); |
4563 | CC_PRIM (); |
4564 | T0_MUL_T1 (); |
4565 | A_T0_MUL_T1 (); |
4566 | } |
4567 | |
4568 | static void cc__t1_inter_t0_using_enva__sub_prim_mul_prima_add_prim () //Aded by Gonetz |
4569 | { |
4570 | // * not guaranteed to work if another iterated alpha is set |
4571 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4572 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4573 | GR_COMBINE_LOCAL_CONSTANT, |
4574 | GR_COMBINE_OTHER_TEXTURE); |
4575 | CC_PRIM (); |
4576 | CA_PRIM (); |
4577 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
4578 | T1_INTER_T0_USING_FACTOR (factor); |
4579 | } |
4580 | |
4581 | static void cc_t0_sub_prim_mul_shade_add_env () |
4582 | { |
4583 | if (cmb.combine_ext) |
4584 | { |
4585 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4586 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4587 | GR_CMBX_ZERO, 1, |
4588 | GR_CMBX_ZERO, 0); |
4589 | cmb.tex |= 1; |
4590 | cmb.tex_ccolor = rdp.prim_color; |
4591 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4592 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
4593 | GR_CMBX_ITRGB, 0, |
4594 | GR_CMBX_B, 0); |
4595 | CC_ENV (); |
4596 | } |
4597 | else |
4598 | { |
4599 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4600 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4601 | GR_COMBINE_LOCAL_CONSTANT, |
4602 | GR_COMBINE_OTHER_ITERATED); |
4603 | CC_ENV (); |
4604 | MOD_0 (TMOD_TEX_SUB_COL); |
4605 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4606 | USE_T0 (); |
4607 | } |
4608 | } |
4609 | |
4610 | static void cc_t1_sub_prim_mul_shade_add_env () |
4611 | { |
4612 | if (cmb.combine_ext) |
4613 | { |
4614 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4615 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4616 | GR_CMBX_ZERO, 1, |
4617 | GR_CMBX_ZERO, 0); |
4618 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
4619 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4620 | GR_CMBX_ZERO, 1, |
4621 | GR_CMBX_ZERO, 0); |
4622 | cmb.tex |= 2; |
4623 | cmb.tex_ccolor = rdp.prim_color; |
4624 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4625 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
4626 | GR_CMBX_ITRGB, 0, |
4627 | GR_CMBX_B, 0); |
4628 | CC_ENV (); |
4629 | } |
4630 | else |
4631 | { |
4632 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4633 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4634 | GR_COMBINE_LOCAL_CONSTANT, |
4635 | GR_COMBINE_OTHER_ITERATED); |
4636 | CC_ENV (); |
4637 | MOD_1 (TMOD_TEX_SUB_COL); |
4638 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
4639 | USE_T1 (); |
4640 | } |
4641 | } |
4642 | |
4643 | static void cc_t1_sub_k4_mul_prima_add_t0 () |
4644 | { |
4645 | if (cmb.combine_ext) |
4646 | { |
4647 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4648 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4649 | GR_CMBX_DETAIL_FACTOR, 1, |
4650 | GR_CMBX_ZERO, 0); |
4651 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
4652 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4653 | GR_CMBX_ZERO, 1, |
4654 | GR_CMBX_ZERO, 0); |
4655 | cmb.tex |= 3; |
4656 | CC_BYTE (rdp.K4); |
4657 | cmb.tex_ccolor = cmb.ccolor; |
4658 | percent = (float)(rdp.prim_color&0xFF) / 255.0f; |
4659 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
4660 | CCMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
4661 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4662 | GR_CMBX_CONSTANT_COLOR, 0, |
4663 | GR_CMBX_B, 0); |
4664 | } |
4665 | else |
4666 | { |
4667 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4668 | GR_COMBINE_FACTOR_ONE, |
4669 | GR_COMBINE_LOCAL_NONE, |
4670 | GR_COMBINE_OTHER_TEXTURE); |
4671 | T0_ADD_T1 (); |
4672 | } |
4673 | } |
4674 | |
4675 | static void cc__t0_sub_prim_mul_shade_add_env__mul_shade () |
4676 | { |
4677 | if (cmb.combine_ext) |
4678 | { |
4679 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4680 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4681 | GR_CMBX_ITRGB, 0, |
4682 | GR_CMBX_ZERO, 0); |
4683 | cmb.tex |= 1; |
4684 | cmb.tex_ccolor = rdp.prim_color; |
4685 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4686 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
4687 | GR_CMBX_ITRGB, 0, |
4688 | GR_CMBX_ZERO, 0); |
4689 | CC_ENV (); |
4690 | } |
4691 | else |
4692 | { |
4693 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4694 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4695 | GR_COMBINE_LOCAL_CONSTANT, |
4696 | GR_COMBINE_OTHER_ITERATED); |
4697 | CC_ENV (); |
4698 | MOD_0 (TMOD_TEX_SUB_COL); |
4699 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4700 | USE_T0 (); |
4701 | } |
4702 | } |
4703 | |
4704 | static void cc__t0_sub_prim_mul_shade_add_env__mul_shadea () |
4705 | { |
4706 | if (cmb.combine_ext) |
4707 | { |
4708 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4709 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4710 | GR_CMBX_ITRGB, 0, |
4711 | GR_CMBX_ZERO, 0); |
4712 | cmb.tex |= 1; |
4713 | cmb.tex_ccolor = rdp.prim_color; |
4714 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4715 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
4716 | GR_CMBX_ITALPHA, 0, |
4717 | GR_CMBX_ZERO, 0); |
4718 | CC_ENV (); |
4719 | } |
4720 | else |
4721 | { |
4722 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4723 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4724 | GR_COMBINE_LOCAL_CONSTANT, |
4725 | GR_COMBINE_OTHER_ITERATED); |
4726 | MULSHADE_SHADEA(); |
4727 | CC_ENV (); |
4728 | MOD_0 (TMOD_TEX_SUB_COL); |
4729 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
4730 | USE_T0 (); |
4731 | } |
4732 | } |
4733 | |
4734 | static void cc__t0_mul_shade__sub_env_mul_shadea_add_env () //Aded by Gonetz |
4735 | { |
4736 | if (rdp.tiles[rdp.cur_tile].format == 4) |
4737 | { |
4738 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
4739 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
4740 | GR_COMBINE_LOCAL_CONSTANT, |
4741 | GR_COMBINE_OTHER_ITERATED); |
4742 | CC_ENV (); |
4743 | } |
4744 | else if (rdp.tiles[rdp.cur_tile].format == 2) |
4745 | { |
4746 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4747 | GR_COMBINE_FACTOR_LOCAL, |
4748 | GR_COMBINE_LOCAL_ITERATED, |
4749 | GR_COMBINE_OTHER_TEXTURE); |
4750 | USE_T0 (); |
4751 | } |
4752 | else |
4753 | { |
4754 | cc_t0 (); |
4755 | } |
4756 | } |
4757 | |
4758 | static void cc_t0_sub_env_mul_k5_add_prim () //Aded by Gonetz |
4759 | { |
4760 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4761 | GR_COMBINE_FACTOR_ONE, |
4762 | GR_COMBINE_LOCAL_CONSTANT, |
4763 | GR_COMBINE_OTHER_TEXTURE); |
4764 | CC_PRIM (); |
4765 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); |
4766 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
4767 | MOD_0_FAC (rdp.K5); |
4768 | USE_T0 (); |
4769 | } |
4770 | |
4771 | static void cc_t0_sub_k4_mul_k5_add_t0 () //Aded by Gonetz |
4772 | { |
4773 | if (cmb.combine_ext) |
4774 | { |
4775 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4776 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4777 | GR_CMBX_CONSTANT_COLOR, 0, |
4778 | GR_CMBX_B, 0); |
4779 | wxUint32 temp = rdp.prim_lodfrac; |
4780 | rdp.prim_lodfrac = rdp.K4; |
4781 | SETSHADE_PRIMLOD (); |
4782 | rdp.prim_lodfrac = temp; |
4783 | CC_K5 (); |
4784 | USE_T0 (); |
4785 | } |
4786 | else |
4787 | { |
4788 | cc_t0 (); |
4789 | } |
4790 | } |
4791 | |
4792 | static void cc__t0_inter_t1_using_t0__sub_shade_mul_prima_add_shade () //Aded by Gonetz |
4793 | { |
4794 | if (cmb.combine_ext) |
4795 | { |
4796 | cmb.tex |= 3; |
4797 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4798 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
4799 | GR_CMBX_CONSTANT_COLOR, 0, |
4800 | GR_CMBX_B, 0); |
4801 | CC_PRIMA(); |
4802 | T0_INTER_T1_USING_T0 (); |
4803 | } |
4804 | else |
4805 | { |
4806 | // * not guaranteed to work if another iterated alpha is set |
4807 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4808 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4809 | GR_COMBINE_LOCAL_ITERATED, |
4810 | GR_COMBINE_OTHER_TEXTURE); |
4811 | SETSHADE_A_PRIM (); |
4812 | T1_INTER_T0_USING_T0 (); //strange, but this one looks better |
4813 | } |
4814 | } |
4815 | |
4816 | static void cc_t0_sub__prim_mul_shade__mul_enva_add__prim_mul_shade () //Aded by Gonetz |
4817 | { |
4818 | // * not guaranteed to work if another iterated alpha is set |
4819 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4820 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4821 | GR_COMBINE_LOCAL_ITERATED, |
4822 | GR_COMBINE_OTHER_TEXTURE); |
4823 | MULSHADE_PRIM (); |
4824 | SETSHADE_A_ENV (); |
4825 | USE_T0 (); |
4826 | } |
4827 | |
4828 | static void cc_t0_sub_env_mul_t0_add_env () //Aded by Gonetz |
4829 | { |
4830 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4831 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4832 | GR_COMBINE_LOCAL_CONSTANT, |
4833 | GR_COMBINE_OTHER_TEXTURE); |
4834 | CC_ENV (); |
4835 | USE_T0 (); |
4836 | //(t0-env)*t0+env = t0*t0 + (1-t0)*env |
4837 | } |
4838 | |
4839 | static void cc_t0_sub_env_mul_prima_add_env () //Aded by Gonetz |
4840 | { |
4841 | if (cmb.combine_ext) |
4842 | { |
4843 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4844 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4845 | GR_CMBX_DETAIL_FACTOR, 0, |
4846 | GR_CMBX_B, 0); |
4847 | cmb.tex |= 1; |
4848 | percent = (rdp.prim_color&0xFF) / 255.0f; |
4849 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
4850 | } |
4851 | else |
4852 | { |
4853 | MOD_0 (TMOD_COL_INTER_TEX_USING_COL1); |
4854 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
4855 | wxUint32 prima = rdp.prim_color & 0xFF; |
4856 | MOD_0_COL1 ((prima<<24)|(prima|16)|(prima<<8)); |
4857 | USE_T0 (); |
4858 | } |
4859 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
4860 | GR_COMBINE_FACTOR_ONE, |
4861 | GR_COMBINE_LOCAL_NONE, |
4862 | GR_COMBINE_OTHER_TEXTURE); |
4863 | } |
4864 | |
4865 | static void cc_t0_sub_env_mul_k5_add_env () //Aded by Gonetz |
4866 | { |
4867 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
4868 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
4869 | GR_COMBINE_LOCAL_CONSTANT, |
4870 | GR_COMBINE_OTHER_TEXTURE); |
4871 | cmb.ccolor = (rdp.env_color&0xFFFFFF00) | rdp.K5; |
4872 | USE_T0 (); |
4873 | } |
4874 | |
4875 | static void cc_t0_sub_env_mul_prim_add_shade () //Aded by Gonetz |
4876 | { |
4877 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4878 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4879 | GR_COMBINE_LOCAL_ITERATED, |
4880 | GR_COMBINE_OTHER_CONSTANT); |
4881 | CC_PRIM (); |
4882 | MOD_0 (TMOD_TEX_SUB_COL); |
4883 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
4884 | USE_T0 (); |
4885 | } |
4886 | |
4887 | static void cc_t0_sub_env_mul_shade_add_prim () //Aded by Gonetz |
4888 | { |
4889 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
4890 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
4891 | GR_COMBINE_LOCAL_CONSTANT, |
4892 | GR_COMBINE_OTHER_ITERATED); |
4893 | CC_PRIM (); |
4894 | if (cmb.combine_ext) |
4895 | { |
4896 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4897 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4898 | GR_CMBX_ZERO, 1, |
4899 | GR_CMBX_ZERO, 0); |
4900 | cmb.tex |= 1; |
4901 | cmb.tex_ccolor = rdp.env_color; |
4902 | } |
4903 | else |
4904 | { |
4905 | MOD_0 (TMOD_TEX_SUB_COL); |
4906 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
4907 | USE_T0 (); |
4908 | } |
4909 | } |
4910 | |
4911 | static void cc__t0_sub_t1_mul_enva_add_shade__sub_env_mul_prim () |
4912 | // (t0-t1)*env_a+shade, (cmb-env)*prim+0 |
4913 | { |
4914 | if (cmb.combine_ext) |
4915 | { |
4916 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4917 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
4918 | GR_CMBX_ZERO, 0, |
4919 | GR_CMBX_B, 0); |
4920 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4921 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
4922 | GR_CMBX_TMU_CCOLOR, 0, |
4923 | GR_CMBX_ITRGB, 0); |
4924 | cmb.tex |= 3; |
4925 | CC_COLMULBYTE(rdp.prim_color, (rdp.env_color&0xFF)); |
4926 | cmb.tex_ccolor = cmb.ccolor; |
4927 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
4928 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
4929 | GR_CMBX_ZERO, 1, |
4930 | GR_CMBX_TEXTURE_RGB, 0); |
4931 | MULSHADE_PRIM (); |
4932 | CC_PRIMMULENV (); |
4933 | } |
4934 | else |
4935 | { |
4936 | cc_t0_sub_env_mul_prim_add_shade(); |
4937 | } |
4938 | } |
4939 | |
4940 | static void cc__t0_inter_t1_using_primlod__sub_env_mul_shade_add_prim () //Aded by Gonetz |
4941 | { |
4942 | if (!(rdp.env_color&0xFFFFFF00)) |
4943 | { |
4944 | cc__t0_inter_t1_using_primlod__mul_shade_add_prim (); |
4945 | return; |
4946 | } |
4947 | if (!(rdp.prim_color&0xFFFFFF00)) |
4948 | { |
4949 | if (!cmb.combine_ext) |
4950 | { |
4951 | cc_t0_sub_env_mul_shade (); |
4952 | return; |
4953 | } |
4954 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4955 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
4956 | GR_CMBX_ITRGB, 0, |
4957 | GR_CMBX_ZERO, 0); |
4958 | CC_ENV (); |
4959 | T0_INTER_T1_USING_FACTOR (lod_frac); |
4960 | return; |
4961 | } |
4962 | cc__t0_inter_t1_using_primlod__mul_shade_add_prim (); |
4963 | } |
4964 | |
4965 | static void cc__t0_sub_env_mul_shade_add_prim__mul_shade () //Aded by Gonetz |
4966 | { |
4967 | if (!cmb.combine_ext) |
4968 | { |
4969 | cc_t0_sub_env_mul_shade_add_prim (); |
4970 | return; |
4971 | } |
4972 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4973 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
4974 | GR_CMBX_ITRGB, 0, |
4975 | GR_CMBX_ZERO, 0); |
4976 | cmb.tex_ccolor = rdp.env_color; |
4977 | cmb.tex |= 1; |
4978 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
4979 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
4980 | GR_CMBX_ITRGB, 0, |
4981 | GR_CMBX_ZERO, 0); |
4982 | CC_PRIM (); |
4983 | } |
4984 | |
4985 | static void cc__t0_sub_env_mul_shade_add_prim__mul_shadea () //Aded by Gonetz |
4986 | { |
4987 | if (!cmb.combine_ext) |
4988 | { |
4989 | cc_t0_sub_env_mul_shade_add_prim (); |
4990 | return; |
4991 | } |
4992 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
4993 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
4994 | GR_CMBX_ITRGB, 0, |
4995 | GR_CMBX_B, 0); |
4996 | cmb.tex_ccolor = rdp.prim_color; |
4997 | cmb.tex |= 1; |
4998 | MOD_0 (TMOD_TEX_SUB_COL); |
4999 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
5000 | |
5001 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5002 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
5003 | GR_CMBX_ITALPHA, 0, |
5004 | GR_CMBX_ZERO, 0); |
5005 | } |
5006 | |
5007 | static void cc__t0_inter_t1_using_primlod__sub_env_mul_shade_add_env () |
5008 | { |
5009 | // (t1-t0)*primlod+t0, (cmb-env)*shade+env |
5010 | if (cmb.combine_ext) |
5011 | { |
5012 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5013 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
5014 | GR_CMBX_ITRGB, 0, |
5015 | GR_CMBX_B, 0); |
5016 | } |
5017 | else |
5018 | { |
5019 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5020 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5021 | GR_COMBINE_LOCAL_CONSTANT, |
5022 | GR_COMBINE_OTHER_ITERATED); |
5023 | } |
5024 | CC_ENV (); |
5025 | T0_INTER_T1_USING_FACTOR (lod_frac); |
5026 | } |
5027 | |
5028 | |
5029 | static void cc_t0_sub_env_mul_enva_add_prim () //Aded by Gonetz |
5030 | { |
5031 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5032 | GR_COMBINE_FACTOR_ONE, |
5033 | GR_COMBINE_LOCAL_CONSTANT, |
5034 | GR_COMBINE_OTHER_TEXTURE); |
5035 | CC_PRIM (); |
5036 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC); |
5037 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
5038 | MOD_0_FAC (rdp.env_color & 0xFF); |
5039 | USE_T0 (); |
5040 | } |
5041 | |
5042 | static void cc_one_sub_t0_mul_prim_add_t0 () //Aded by Gonetz |
5043 | { |
5044 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5045 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5046 | GR_COMBINE_LOCAL_CONSTANT, |
5047 | GR_COMBINE_OTHER_TEXTURE); |
5048 | CC_PRIM (); |
5049 | USE_T0 (); |
5050 | //(1-t)*prim+t == (1-prim)*t+prim |
5051 | } |
5052 | |
5053 | static void cc_one_sub_t1_mul_prim_add_t1 () //Aded by Gonetz |
5054 | { |
5055 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5056 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5057 | GR_COMBINE_LOCAL_CONSTANT, |
5058 | GR_COMBINE_OTHER_TEXTURE); |
5059 | CC_PRIM (); |
5060 | USE_T1 (); |
5061 | //(1-t)*prim+t == (1-prim)*t+prim |
5062 | } |
5063 | |
5064 | static void cc_one_sub_t1_mul_env_add_t1 () //Aded by Gonetz |
5065 | { |
5066 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5067 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5068 | GR_COMBINE_LOCAL_CONSTANT, |
5069 | GR_COMBINE_OTHER_TEXTURE); |
5070 | CC_ENV (); |
5071 | USE_T1 (); |
5072 | //(1-t)*env+t == (1-env)*t+env |
5073 | } |
5074 | |
5075 | static void cc_one_sub_t0_mul_primlod_add_t0 () //Aded by Gonetz |
5076 | { |
5077 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5078 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5079 | GR_COMBINE_LOCAL_CONSTANT, |
5080 | GR_COMBINE_OTHER_TEXTURE); |
5081 | CC_PRIMLOD (); |
5082 | USE_T0 (); |
5083 | //(1-t)*primlod+t == (1-primlod)*t+primlod |
5084 | } |
5085 | |
5086 | static void cc_one_sub_t0_mul_prima_add_t0 () //Aded by Gonetz |
5087 | { |
5088 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5089 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA, |
5090 | GR_COMBINE_LOCAL_CONSTANT, |
5091 | GR_COMBINE_OTHER_TEXTURE); |
5092 | CA_PRIM (); |
5093 | USE_T0 (); |
5094 | //(1-t)*prima+t == (1-prima)*t+prima |
5095 | } |
5096 | |
5097 | static void cc_one_sub__t0_inter_t1_using_enva__mul_prim_add__t0_inter_t1_using_enva () //Aded by Gonetz |
5098 | { |
5099 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5100 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5101 | GR_COMBINE_LOCAL_CONSTANT, |
5102 | GR_COMBINE_OTHER_TEXTURE); |
5103 | CC_PRIM (); |
5104 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
5105 | T0_INTER_T1_USING_FACTOR (factor); |
5106 | //(1-t)*prim+t == (1-prim)*t+prim |
5107 | } |
5108 | |
5109 | static void cc_one_sub_t0_mul_shade_add_t0 () |
5110 | { |
5111 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5112 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5113 | GR_COMBINE_LOCAL_ITERATED, |
5114 | GR_COMBINE_OTHER_CONSTANT); |
5115 | CC (0xFFFFFFFF); |
5116 | USE_T0 (); |
5117 | } |
5118 | |
5119 | static void cc_one_sub_prim_mul_t0_add_prim () //Aded by Gonetz |
5120 | { |
5121 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5122 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5123 | GR_COMBINE_LOCAL_CONSTANT, |
5124 | GR_COMBINE_OTHER_TEXTURE); |
5125 | CC_PRIM (); |
5126 | USE_T0 (); |
5127 | } |
5128 | |
5129 | static void cc_one_sub_prim_mul_t0a_add_prim () |
5130 | { |
5131 | if (cmb.combine_ext) |
5132 | { |
5133 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ONE_MINUS_X, |
5134 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
5135 | GR_CMBX_TEXTURE_ALPHA, 0, |
5136 | GR_CMBX_B, 0); |
5137 | CC_PRIM (); |
5138 | } else { |
5139 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
5140 | GR_COMBINE_FACTOR_ONE, |
5141 | GR_COMBINE_LOCAL_NONE, |
5142 | GR_COMBINE_OTHER_TEXTURE); |
5143 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEXA); |
5144 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
5145 | MOD_0_COL1 (0xFFFFFF00); |
5146 | } |
5147 | USE_T0 (); |
5148 | } |
5149 | |
5150 | static void cc_one_sub_prim_mul__t0_inter_t1_using_primlod__add_prim () //Aded by Gonetz |
5151 | { |
5152 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5153 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5154 | GR_COMBINE_LOCAL_CONSTANT, |
5155 | GR_COMBINE_OTHER_TEXTURE); |
5156 | CC_PRIM (); |
5157 | T0_INTER_T1_USING_FACTOR (lod_frac); |
5158 | } |
5159 | |
5160 | static void cc__one_sub_prim_mul_shade__mul_t0_add__prim_mul_shade () //Aded by Gonetz |
5161 | { |
5162 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5163 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5164 | GR_COMBINE_LOCAL_ITERATED, |
5165 | GR_COMBINE_OTHER_TEXTURE); |
5166 | MULSHADE_PRIM (); |
5167 | USE_T0 (); |
5168 | } |
5169 | |
5170 | static void cc_one_sub_shade_mul__t0_inter_t1_using_primlod__add_shade () //Aded by Gonetz |
5171 | { |
5172 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5173 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5174 | GR_COMBINE_LOCAL_ITERATED, |
5175 | GR_COMBINE_OTHER_TEXTURE); |
5176 | T0_INTER_T1_USING_FACTOR (lod_frac); |
5177 | } |
5178 | |
5179 | static void cc_one_sub_prim_mul_t1_add_prim () //Aded by Gonetz |
5180 | { |
5181 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5182 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5183 | GR_COMBINE_LOCAL_CONSTANT, |
5184 | GR_COMBINE_OTHER_TEXTURE); |
5185 | CC_PRIM (); |
5186 | USE_T1 (); |
5187 | } |
5188 | |
5189 | static void cc_one_sub_prim_mul_env_add_prim () //Aded by Gonetz |
5190 | { |
5191 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5192 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5193 | GR_COMBINE_LOCAL_CONSTANT, |
5194 | GR_COMBINE_OTHER_ITERATED); |
5195 | CC_PRIM (); |
5196 | SETSHADE_ENV (); |
5197 | } |
5198 | |
5199 | static void cc_t0_sub_prim_mul_shade_add_shade () //Aded by Gonetz |
5200 | { |
5201 | if (cmb.combine_ext) |
5202 | { |
5203 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5204 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
5205 | GR_CMBX_ITRGB, 0, |
5206 | GR_CMBX_ITRGB, 0); |
5207 | CC_PRIM (); |
5208 | } |
5209 | else |
5210 | { |
5211 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5212 | GR_COMBINE_FACTOR_LOCAL, |
5213 | GR_COMBINE_LOCAL_ITERATED, |
5214 | GR_COMBINE_OTHER_TEXTURE); |
5215 | if (rdp.prim_color & 0xFFFFFF00) |
5216 | { |
5217 | MOD_0 (TMOD_TEX_SUB_COL); |
5218 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
5219 | } |
5220 | } |
5221 | USE_T0 (); |
5222 | } |
5223 | |
5224 | static void cc__t0_mul_t0__sub_prim_mul_shade_add_shade () //Aded by Gonetz |
5225 | { |
5226 | if (cmb.combine_ext) |
5227 | { |
5228 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5229 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5230 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
5231 | GR_CMBX_ZERO, 0); |
5232 | cmb.tex |= 1; |
5233 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5234 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
5235 | GR_CMBX_ITRGB, 0, |
5236 | GR_CMBX_ITRGB, 0); |
5237 | CC_PRIM (); |
5238 | } |
5239 | else |
5240 | cc_t0_sub_prim_mul_shade_add_shade(); |
5241 | } |
5242 | |
5243 | static void cc__t0_mul_t1__sub_prim_mul_shade_add_shade () //Aded by Gonetz |
5244 | { |
5245 | if (cmb.combine_ext) |
5246 | { |
5247 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5248 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
5249 | GR_CMBX_ITRGB, 0, |
5250 | GR_CMBX_ITRGB, 0); |
5251 | CC_PRIM (); |
5252 | } |
5253 | else |
5254 | { |
5255 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5256 | GR_COMBINE_FACTOR_LOCAL, |
5257 | GR_COMBINE_LOCAL_ITERATED, |
5258 | GR_COMBINE_OTHER_TEXTURE); |
5259 | } |
5260 | T0_MUL_T1 (); |
5261 | } |
5262 | |
5263 | static void cc__t0_mul_t1__sub_env_mul_shade_add_shade () //Aded by Gonetz |
5264 | { |
5265 | if (cmb.combine_ext) |
5266 | { |
5267 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
5268 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
5269 | GR_CMBX_ITRGB, 0, |
5270 | GR_CMBX_ITRGB, 0); |
5271 | CC_ENV (); |
5272 | } |
5273 | else |
5274 | { |
5275 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5276 | GR_COMBINE_FACTOR_LOCAL, |
5277 | GR_COMBINE_LOCAL_ITERATED, |
5278 | GR_COMBINE_OTHER_TEXTURE); |
5279 | } |
5280 | T0_MUL_T1 (); |
5281 | } |
5282 | |
5283 | static void cc_one_sub_prim_mul_shade_add_shade () //Aded by Gonetz |
5284 | { |
5285 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5286 | GR_COMBINE_FACTOR_LOCAL, |
5287 | GR_COMBINE_LOCAL_ITERATED, |
5288 | GR_COMBINE_OTHER_CONSTANT); |
5289 | CC_1SUBPRIM (); |
5290 | } |
5291 | |
5292 | static void cc_t0_inter_env_using_prima () |
5293 | { |
5294 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
5295 | GR_COMBINE_FACTOR_ONE, |
5296 | GR_COMBINE_LOCAL_NONE, |
5297 | GR_COMBINE_OTHER_TEXTURE); |
5298 | USE_T0 (); |
5299 | |
5300 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
5301 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
5302 | MOD_0_FAC (rdp.prim_color & 0xFF); |
5303 | } |
5304 | |
5305 | static void cc_t0_inter_env_using_enva () |
5306 | { |
5307 | //(env-t0)*env_a+t0 |
5308 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
5309 | GR_COMBINE_FACTOR_ONE, |
5310 | GR_COMBINE_LOCAL_NONE, |
5311 | GR_COMBINE_OTHER_TEXTURE); |
5312 | if (cmb.combine_ext) |
5313 | { |
5314 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
5315 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
5316 | GR_CMBX_TMU_CALPHA, 0, |
5317 | GR_CMBX_B, 0); |
5318 | cmb.tex_ccolor = rdp.env_color; |
5319 | cmb.tex |= 1; |
5320 | } |
5321 | else |
5322 | { |
5323 | USE_T0 (); |
5324 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
5325 | MOD_0_COL (rdp.env_color & 0xFFFFFFFF); |
5326 | MOD_0_FAC (rdp.env_color & 0xFF); |
5327 | } |
5328 | } |
5329 | |
5330 | static void cc_t0_inter_noise_using_prim () |
5331 | { |
5332 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
5333 | GR_COMBINE_FACTOR_ONE, |
5334 | GR_COMBINE_LOCAL_NONE, |
5335 | GR_COMBINE_OTHER_TEXTURE); |
5336 | USE_T0 (); |
5337 | |
5338 | MOD_0 (TMOD_TEX_INTER_NOISE_USING_COL); |
5339 | MOD_0_COL (rdp.prim_color); |
5340 | rdp.noise = RDP::noise_texture; |
5341 | } |
5342 | |
5343 | static void cc_t0_inter_noise_using_env () |
5344 | { |
5345 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
5346 | GR_COMBINE_FACTOR_ONE, |
5347 | GR_COMBINE_LOCAL_NONE, |
5348 | GR_COMBINE_OTHER_TEXTURE); |
5349 | USE_T0 (); |
5350 | |
5351 | MOD_0 (TMOD_TEX_INTER_NOISE_USING_COL); |
5352 | MOD_0_COL (rdp.env_color); |
5353 | rdp.noise = RDP::noise_texture; |
5354 | } |
5355 | |
5356 | static void cc_t0_sub_env_mul_enva_add_env () |
5357 | { |
5358 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5359 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5360 | GR_COMBINE_LOCAL_CONSTANT, |
5361 | GR_COMBINE_OTHER_TEXTURE); |
5362 | CC_ENV (); |
5363 | CA_ENV (); |
5364 | USE_T0 (); |
5365 | } |
5366 | |
5367 | //Added by Gonetz |
5368 | static void cc_one_sub_prim_mul__t0_mul_t1__add__prim_mul_env () |
5369 | { |
5370 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5371 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5372 | GR_COMBINE_LOCAL_ITERATED, |
5373 | GR_COMBINE_OTHER_CONSTANT); |
5374 | CC_1SUBPRIM (); |
5375 | SETSHADE_PRIM (); |
5376 | SETSHADE_ENV (); |
5377 | T0_MUL_T1 (); |
5378 | } |
5379 | |
5380 | //Added by Gonetz |
5381 | static void cc_one_sub_prim_mul__t0_mul_t1__add__prim_mul_shade () |
5382 | { |
5383 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5384 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5385 | GR_COMBINE_LOCAL_ITERATED, |
5386 | GR_COMBINE_OTHER_CONSTANT); |
5387 | CC_1SUBPRIM (); |
5388 | MULSHADE_PRIM (); |
5389 | T0_MUL_T1 (); |
5390 | } |
5391 | |
5392 | //Added by Gonetz |
5393 | static void cc_one_sub_prim_mul__t0_inter_t1_using_enva__add_prim () |
5394 | { |
5395 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5396 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5397 | GR_COMBINE_LOCAL_ITERATED, |
5398 | GR_COMBINE_OTHER_CONSTANT); |
5399 | CC_1SUBPRIM (); |
5400 | SETSHADE_PRIM (); |
5401 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
5402 | T0_INTER_T1_USING_FACTOR (factor); |
5403 | } |
5404 | |
5405 | static void cc_one_sub_env_mul__t0_inter_t1_using_primlod__add_env () //Aded by Gonetz |
5406 | { |
5407 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5408 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5409 | GR_COMBINE_LOCAL_CONSTANT, |
5410 | GR_COMBINE_OTHER_TEXTURE); |
5411 | CC_ENV (); |
5412 | T0_INTER_T1_USING_FACTOR (lod_frac); |
5413 | } |
5414 | |
5415 | static void cc_one_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env () //Aded by Gonetz |
5416 | { |
5417 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5418 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5419 | GR_COMBINE_LOCAL_CONSTANT, |
5420 | GR_COMBINE_OTHER_TEXTURE); |
5421 | CC_ENV (); |
5422 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
5423 | } |
5424 | |
5425 | static void cc_one_sub_env_mul_t0_add_prim_mul_env () //Aded by Gonetz |
5426 | { |
5427 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5428 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5429 | GR_COMBINE_LOCAL_ITERATED, |
5430 | GR_COMBINE_OTHER_CONSTANT); |
5431 | CC_1SUBENV (); |
5432 | SETSHADE_PRIM (); |
5433 | SETSHADE_ENV (); |
5434 | USE_T0 (); |
5435 | } |
5436 | |
5437 | static void cc_one_sub_env_mul_t0_add_env () //Aded by Gonetz |
5438 | { |
5439 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5440 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5441 | GR_COMBINE_LOCAL_CONSTANT, |
5442 | GR_COMBINE_OTHER_TEXTURE); |
5443 | CC_ENV (); |
5444 | USE_T0 (); |
5445 | } |
5446 | |
5447 | static void cc_one_sub_env_mul_t0_add_shade () //Aded by Gonetz |
5448 | { |
5449 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5450 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5451 | GR_COMBINE_LOCAL_ITERATED, |
5452 | GR_COMBINE_OTHER_CONSTANT); |
5453 | CC_1SUBENV (); |
5454 | USE_T0 (); |
5455 | } |
5456 | |
5457 | static void cc_one_sub_env_mul_prim_add_env () //Aded by Gonetz |
5458 | { |
5459 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5460 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5461 | GR_COMBINE_LOCAL_CONSTANT, |
5462 | GR_COMBINE_OTHER_ITERATED); |
5463 | CC_ENV (); |
5464 | SETSHADE_PRIM (); |
5465 | } |
5466 | |
5467 | static void cc_one_sub_env_mul_prim_add_shade () //Aded by Gonetz |
5468 | { |
5469 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5470 | GR_COMBINE_FACTOR_ONE, |
5471 | GR_COMBINE_LOCAL_ITERATED, |
5472 | GR_COMBINE_OTHER_CONSTANT); |
5473 | CC_1SUBENV (); |
5474 | CC_C1MULC2 (rdp.prim_color, cmb.ccolor); |
5475 | } |
5476 | |
5477 | static void cc_one_sub_env_mul_shade_add_env () //Aded by Gonetz |
5478 | { |
5479 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5480 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5481 | GR_COMBINE_LOCAL_CONSTANT, |
5482 | GR_COMBINE_OTHER_ITERATED); |
5483 | CC_ENV (); |
5484 | } |
5485 | |
5486 | static void cc_one_sub_env_mul_prim_add__t0_inter_t1_using_env () //Aded by Gonetz |
5487 | { |
5488 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5489 | GR_COMBINE_FACTOR_ONE, |
5490 | GR_COMBINE_LOCAL_ITERATED, |
5491 | GR_COMBINE_OTHER_TEXTURE); |
5492 | SETSHADE_PRIM (); |
5493 | SETSHADE_1MENV (); |
5494 | T0_INTER_T1_USING_ENV (); |
5495 | } |
5496 | |
5497 | static void cc_one_sub_shade_mul_t0_add_shade () |
5498 | { |
5499 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5500 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5501 | GR_COMBINE_LOCAL_ITERATED, |
5502 | GR_COMBINE_OTHER_TEXTURE); |
5503 | USE_T0 (); |
5504 | } |
5505 | |
5506 | static void cc_one_sub_shade_mul__t0_mul_shadea__add_shade () |
5507 | { |
5508 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5509 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5510 | GR_COMBINE_LOCAL_ITERATED, |
5511 | GR_COMBINE_OTHER_TEXTURE); |
5512 | if (cmb.combine_ext) |
5513 | { |
5514 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5515 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5516 | GR_CMBX_ITALPHA, 0, |
5517 | GR_CMBX_ZERO, 0); |
5518 | cmb.tex |= 1; |
5519 | } |
5520 | else |
5521 | { |
5522 | USE_T0 (); |
5523 | } |
5524 | } |
5525 | |
5526 | static void cc_one_sub_shade_mul_env_add_shade () |
5527 | { |
5528 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5529 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
5530 | GR_COMBINE_LOCAL_ITERATED, |
5531 | GR_COMBINE_OTHER_CONSTANT); |
5532 | CC_ENV (); |
5533 | } |
5534 | |
5535 | static void cc_one_sub_shade_mul_shadea_add_shade () |
5536 | { |
5537 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5538 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5539 | GR_COMBINE_LOCAL_ITERATED, |
5540 | GR_COMBINE_OTHER_CONSTANT); |
5541 | CC (0xFFFFFFFF); |
5542 | } |
5543 | |
5544 | ///* |
5545 | static void cc_t0_sub_env_mul_prim_add_env () //Aded by Gonetz |
5546 | { |
5547 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5548 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5549 | GR_COMBINE_LOCAL_ITERATED, |
5550 | GR_COMBINE_OTHER_CONSTANT); |
5551 | SETSHADE_1MPRIM(); |
5552 | SETSHADE_ENV(); |
5553 | CC_PRIM (); |
5554 | USE_T0 (); |
5555 | //(t0-env)*prim+env == t0*prim + env*(1-prim) |
5556 | } |
5557 | //*/ |
5558 | static void cc__t0_inter_t1_using_t1a__sub_env_mul_enva_add_env () //Aded by Gonetz |
5559 | { |
5560 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5561 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5562 | GR_COMBINE_LOCAL_CONSTANT, |
5563 | GR_COMBINE_OTHER_TEXTURE); |
5564 | cmb.ccolor = rdp.env_color; |
5565 | T0_INTER_T1_USING_T1A (); |
5566 | } |
5567 | |
5568 | static void cc_t0_sub_shade_mul_t0a_add_shade () |
5569 | { |
5570 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5571 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
5572 | GR_COMBINE_LOCAL_ITERATED, |
5573 | GR_COMBINE_OTHER_TEXTURE); |
5574 | USE_T0 (); |
5575 | A_USE_T0 (); |
5576 | } |
5577 | |
5578 | static void cc_t0_sub_shade_mul_prima_add_shade () //Aded by Gonetz |
5579 | { |
5580 | // * not guaranteed to work if another iterated alpha is set |
5581 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5582 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5583 | GR_COMBINE_LOCAL_ITERATED, |
5584 | GR_COMBINE_OTHER_TEXTURE); |
5585 | SETSHADE_A_PRIM (); |
5586 | USE_T0 (); |
5587 | } |
5588 | |
5589 | static void cc_t0_sub_shade_mul_shadea_add_shade () //Aded by Gonetz |
5590 | { |
5591 | // * not guaranteed to work if another iterated alpha is set |
5592 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5593 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5594 | GR_COMBINE_LOCAL_ITERATED, |
5595 | GR_COMBINE_OTHER_TEXTURE); |
5596 | USE_T0 (); |
5597 | } |
5598 | |
5599 | static void cc__t0_mul_t1_add_env__mul_shadea_add_shade () |
5600 | { |
5601 | if (cmb.combine_ext) |
5602 | { |
5603 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5604 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5605 | GR_CMBX_ZERO, 0, |
5606 | GR_CMBX_B, 0); |
5607 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
5608 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
5609 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
5610 | GR_CMBX_B, 0); |
5611 | cmb.tex_ccolor = rdp.env_color; |
5612 | cmb.tex |= 3; |
5613 | } |
5614 | else |
5615 | { |
5616 | T0_MUL_T1 (); |
5617 | } |
5618 | // * not guaranteed to work if another iterated alpha is set |
5619 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5620 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
5621 | GR_COMBINE_LOCAL_ITERATED, |
5622 | GR_COMBINE_OTHER_TEXTURE); |
5623 | } |
5624 | |
5625 | static void cc_prim_sub_t0_mul_env_add_t0 () //Aded by Gonetz |
5626 | { |
5627 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5628 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5629 | GR_COMBINE_LOCAL_ITERATED, |
5630 | GR_COMBINE_OTHER_CONSTANT); |
5631 | CC_1SUBENV (); |
5632 | SETSHADE_PRIM (); |
5633 | SETSHADE_ENV (); |
5634 | USE_T0 (); |
5635 | //(prim-t0)*env+t0 == prim*env + t0*(1-env) |
5636 | } |
5637 | |
5638 | static void cc_prim_sub_t0_mul_t1_add_t0 () //Aded by Gonetz |
5639 | { |
5640 | if (!cmb.combine_ext) |
5641 | { |
5642 | cc_t0_mul_t1 (); |
5643 | return; |
5644 | } |
5645 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5646 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5647 | GR_CMBX_ZERO, 0, |
5648 | GR_CMBX_B, 0); |
5649 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
5650 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
5651 | GR_CMBX_OTHER_TEXTURE_RGB, 0, |
5652 | GR_CMBX_B, 0); |
5653 | cmb.tex_ccolor = rdp.prim_color; |
5654 | cmb.tex |= 3; |
5655 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5656 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5657 | GR_CMBX_ZERO, 0, |
5658 | GR_CMBX_B, 0); |
5659 | } |
5660 | |
5661 | static void cc_env_sub_t0_mul_prim_add_t0 () //Aded by Gonetz |
5662 | { |
5663 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5664 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5665 | GR_COMBINE_LOCAL_ITERATED, |
5666 | GR_COMBINE_OTHER_CONSTANT); |
5667 | CC_1SUBPRIM (); |
5668 | SETSHADE_PRIM (); |
5669 | SETSHADE_ENV (); |
5670 | USE_T0 (); |
5671 | //(env-t0)*prim+t0 == prim*env + t0*(1-prim) |
5672 | } |
5673 | |
5674 | static void cc_env_sub_t0_mul_shade_add_t0 () //Aded by Gonetz |
5675 | { |
5676 | if (!cmb.combine_ext) |
5677 | { |
5678 | cc_t0_mul_shade (); |
5679 | return; |
5680 | } |
5681 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
5682 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
5683 | GR_CMBX_ITRGB, 0, |
5684 | GR_CMBX_B, 0); |
5685 | CC_ENV (); |
5686 | USE_T0 (); |
5687 | } |
5688 | |
5689 | static void cc_prim_sub_env_mul_t0_add_prim () |
5690 | { |
5691 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5692 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5693 | GR_COMBINE_LOCAL_CONSTANT, |
5694 | GR_COMBINE_OTHER_ITERATED); |
5695 | CC_PRIM (); |
5696 | SETSHADE_PRIMSUBENV (); |
5697 | USE_T0 (); |
5698 | } |
5699 | |
5700 | static void cc_prim_sub_env_mul_t0_add_env () |
5701 | { |
5702 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5703 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5704 | GR_COMBINE_LOCAL_ITERATED, |
5705 | GR_COMBINE_OTHER_CONSTANT); |
5706 | CC_PRIM (); |
5707 | SETSHADE_ENV (); |
5708 | USE_T0 (); |
5709 | } |
5710 | |
5711 | static void cc__prim_sub_env_mul_t0_add_env__add_primlod () |
5712 | { |
5713 | if (!cmb.combine_ext) |
5714 | { |
5715 | cc_prim_sub_env_mul_t0_add_env (); |
5716 | return; |
5717 | } |
5718 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5719 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
5720 | GR_CMBX_ITRGB, 0, |
5721 | GR_CMBX_B, 0); |
5722 | cmb.tex_ccolor = rdp.env_color; |
5723 | cmb.tex |= 1; |
5724 | SETSHADE_PRIMSUBENV (); |
5725 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
5726 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
5727 | GR_CMBX_ZERO, 1, |
5728 | GR_CMBX_TEXTURE_RGB, 0); |
5729 | CC_PRIMLOD (); |
5730 | } |
5731 | |
5732 | static void cc__prim_sub_env_mul_t0_add_env__add_shadea () |
5733 | { |
5734 | if (!cmb.combine_ext) |
5735 | { |
5736 | cc_prim_sub_env_mul_t0_add_env (); |
5737 | return; |
5738 | } |
5739 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5740 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
5741 | GR_CMBX_ITRGB, 0, |
5742 | GR_CMBX_B, 0); |
5743 | cmb.tex_ccolor = rdp.env_color; |
5744 | cmb.tex |= 1; |
5745 | SETSHADE_PRIMSUBENV (); |
5746 | CCMBEXT(GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
5747 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
5748 | GR_CMBX_ZERO, 1, |
5749 | GR_CMBX_TEXTURE_RGB, 0); |
5750 | } |
5751 | |
5752 | static void cc_prim_sub_env_mul__t0_mul_t1a__add_env () |
5753 | { |
5754 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5755 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5756 | GR_COMBINE_LOCAL_ITERATED, |
5757 | GR_COMBINE_OTHER_CONSTANT); |
5758 | CC_PRIM (); |
5759 | SETSHADE_ENV (); |
5760 | T0_MUL_T1A (); |
5761 | } |
5762 | |
5763 | static void cc_prim_sub_env_mul__t0_mul_prim__add_env () |
5764 | { |
5765 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5766 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5767 | GR_COMBINE_LOCAL_ITERATED, |
5768 | GR_COMBINE_OTHER_CONSTANT); |
5769 | CC_PRIM (); |
5770 | SETSHADE_ENV (); |
5771 | if (cmb.combine_ext) |
5772 | { |
5773 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5774 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5775 | GR_CMBX_TMU_CCOLOR, 0, |
5776 | GR_CMBX_ZERO, 0); |
5777 | cmb.tex_ccolor = rdp.prim_color; |
5778 | cmb.tex |= 1; |
5779 | } |
5780 | else |
5781 | { |
5782 | USE_T0 (); |
5783 | } |
5784 | } |
5785 | |
5786 | static void cc_prim_sub_env_mul_t0_mul_shade_add_env () |
5787 | { |
5788 | if (cmb.combine_ext) |
5789 | { |
5790 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5791 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5792 | GR_CMBX_TMU_CCOLOR, 0, |
5793 | GR_CMBX_ZERO, 0); |
5794 | CC_PRIMSUBENV (); |
5795 | cmb.tex_ccolor = cmb.ccolor; |
5796 | cmb.tex |= 1; |
5797 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
5798 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5799 | GR_COMBINE_LOCAL_CONSTANT, |
5800 | GR_COMBINE_OTHER_ITERATED); |
5801 | CC_ENV (); |
5802 | } |
5803 | else |
5804 | { |
5805 | cc_t0_mul_prim_mul_shade (); |
5806 | } |
5807 | } |
5808 | |
5809 | static void cc_prim_sub_env_mul__t0_sub_t0_mul_prima__add_env () |
5810 | { |
5811 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5812 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5813 | GR_COMBINE_LOCAL_ITERATED, |
5814 | GR_COMBINE_OTHER_CONSTANT); |
5815 | CC_PRIM (); |
5816 | SETSHADE_ENV (); |
5817 | rdp.best_tex = 0; |
5818 | cmb.tex |= 1; |
5819 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
5820 | cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
5821 | percent = (float)(rdp.prim_color&0xFF) / 255.0f; |
5822 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
5823 | } |
5824 | |
5825 | static void cc_prim_sub_env_mul__one_sub_t0_mul_primlod_add_prim__add_env () |
5826 | { |
5827 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5828 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5829 | GR_COMBINE_LOCAL_CONSTANT, |
5830 | GR_COMBINE_OTHER_ITERATED); |
5831 | CC_ENV (); |
5832 | SETSHADE_PRIM (); |
5833 | if (cmb.combine_ext) |
5834 | { |
5835 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
5836 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
5837 | GR_CMBX_DETAIL_FACTOR, 0, |
5838 | GR_CMBX_B, 0); |
5839 | cmb.tex_ccolor = rdp.prim_color; |
5840 | cmb.tex |= 1; |
5841 | cmb.dc0_detailmax = cmb.dc1_detailmax = (float)lod_frac / 255.0f; |
5842 | } |
5843 | else |
5844 | { |
5845 | USE_T0 (); |
5846 | } |
5847 | } |
5848 | |
5849 | static void cc_prim_sub_env_mul__t0_add_t1a__add_env () |
5850 | { |
5851 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5852 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5853 | GR_COMBINE_LOCAL_ITERATED, |
5854 | GR_COMBINE_OTHER_CONSTANT); |
5855 | CC_PRIM (); |
5856 | SETSHADE_ENV (); |
5857 | rdp.best_tex = 0; |
5858 | cmb.tex |= 3; |
5859 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL_ALPHA; |
5860 | cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL; |
5861 | cmb.tmu0_fac = GR_COMBINE_FACTOR_ONE; |
5862 | } |
5863 | |
5864 | static void cc_prim_sub_env_mul__t0_sub_prim_mul_enva_add_t0__add_env () |
5865 | { |
5866 | // (t0-prim)*env_a+t0, (prim-env)*cmb+env |
5867 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5868 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5869 | GR_COMBINE_LOCAL_CONSTANT, |
5870 | GR_COMBINE_OTHER_ITERATED); |
5871 | CC_ENV (); |
5872 | SETSHADE_PRIM (); |
5873 | USE_T0 (); |
5874 | |
5875 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC_ADD_TEX); |
5876 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
5877 | MOD_0_FAC (rdp.env_color & 0xFF); |
5878 | } |
5879 | |
5880 | static void cc_prim_sub_env_mul__t1_sub_prim_mul_enva_add_t0__add_env () |
5881 | { |
5882 | //(t1-prim)*env_a+t0, (prim-env)*cmb+env |
5883 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5884 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5885 | GR_COMBINE_LOCAL_CONSTANT, |
5886 | GR_COMBINE_OTHER_ITERATED); |
5887 | CC_ENV (); |
5888 | SETSHADE_PRIM (); |
5889 | if (cmb.combine_ext) |
5890 | { |
5891 | if (rdp.tiles[rdp.cur_tile].format > 2) |
5892 | { |
5893 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5894 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5895 | GR_CMBX_ZERO, 0, |
5896 | GR_CMBX_B, 0); |
5897 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
5898 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
5899 | GR_CMBX_DETAIL_FACTOR, 0, |
5900 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
5901 | } |
5902 | else |
5903 | { |
5904 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5905 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
5906 | GR_CMBX_DETAIL_FACTOR, 0, |
5907 | GR_CMBX_ZERO, 0); |
5908 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
5909 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5910 | GR_CMBX_ZERO, 1, |
5911 | GR_CMBX_ZERO, 0); |
5912 | } |
5913 | cmb.tex_ccolor = rdp.prim_color; |
5914 | cmb.tex |= 3; |
5915 | cmb.dc0_detailmax = cmb.dc1_detailmax = (float)(rdp.env_color&0xFF) / 255.0f; |
5916 | } |
5917 | else |
5918 | { |
5919 | MOD_1 (TMOD_TEX_SUB_COL_MUL_FAC); |
5920 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
5921 | MOD_1_FAC (rdp.env_color & 0xFF); |
5922 | T0_ADD_T1 (); |
5923 | } |
5924 | } |
5925 | |
5926 | static void cc_prim_sub_env_mul__t1_sub_prim_mul_prima_add_t0__add_env () |
5927 | { |
5928 | // (t1-prim)*prim_a+t0, (prim-env)*cmb+env |
5929 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5930 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5931 | GR_COMBINE_LOCAL_CONSTANT, |
5932 | GR_COMBINE_OTHER_ITERATED); |
5933 | CC_ENV (); |
5934 | SETSHADE_PRIM (); |
5935 | if (cmb.combine_ext) |
5936 | { |
5937 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
5938 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
5939 | GR_CMBX_ZERO, 1, |
5940 | GR_CMBX_ZERO, 0); |
5941 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
5942 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
5943 | GR_CMBX_DETAIL_FACTOR, 0, |
5944 | GR_CMBX_B, 0); |
5945 | cmb.tex_ccolor = rdp.prim_color; |
5946 | cmb.tex |= 3; |
5947 | cmb.dc0_detailmax = cmb.dc1_detailmax = (float)(rdp.prim_color&0xFF) / 255.0f; |
5948 | } |
5949 | else |
5950 | { |
5951 | MOD_1 (TMOD_TEX_SUB_COL_MUL_FAC); |
5952 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
5953 | MOD_1_FAC (rdp.prim_color & 0xFF); |
5954 | T0_ADD_T1 (); |
5955 | } |
5956 | } |
5957 | |
5958 | static void cc__prim_sub_env_mul_t0_add_env__mul_primlod () |
5959 | { |
5960 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5961 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5962 | GR_COMBINE_LOCAL_ITERATED, |
5963 | GR_COMBINE_OTHER_CONSTANT); |
5964 | float factor = (float)rdp.prim_lodfrac / 255.0f; |
5965 | wxUint8 r = (wxUint8)((rdp.prim_color >> 24) & 0xFF); |
5966 | r = (wxUint8)((float)r * factor); |
5967 | wxUint8 g = (wxUint8)((rdp.prim_color >> 16) & 0xFF); |
5968 | g = (wxUint8)((float)g * factor); |
5969 | wxUint8 b = (wxUint8)((rdp.prim_color >> 8) & 0xFF); |
5970 | b = (wxUint8)((float)b * factor); |
5971 | CC ((r<<24) | (g<<16) | (b<<8)); |
5972 | SETSHADE_ENV (); |
5973 | MULSHADE_PRIMLOD (); |
5974 | USE_T0 (); |
5975 | } |
5976 | |
5977 | static void cc__prim_sub_env_mul_t0_add_env__mul_k5 () |
5978 | { |
5979 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
5980 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
5981 | GR_COMBINE_LOCAL_ITERATED, |
5982 | GR_COMBINE_OTHER_CONSTANT); |
5983 | float factor = (float)rdp.K5 / 255.0f; |
5984 | wxUint8 r = (wxUint8)((rdp.prim_color >> 24) & 0xFF); |
5985 | r = (wxUint8)((float)r * factor); |
5986 | wxUint8 g = (wxUint8)((rdp.prim_color >> 16) & 0xFF); |
5987 | g = (wxUint8)((float)g * factor); |
5988 | wxUint8 b = (wxUint8)((rdp.prim_color >> 8) & 0xFF); |
5989 | b = (wxUint8)((float)b * factor); |
5990 | CC ((r<<24) | (g<<16) | (b<<8)); |
5991 | SETSHADE_ENV (); |
5992 | MULSHADE_K5 (); |
5993 | USE_T0 (); |
5994 | } |
5995 | |
5996 | static void cc_prim_sub_env_mul_t1_add_env () |
5997 | { |
5998 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
5999 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6000 | GR_COMBINE_LOCAL_ITERATED, |
6001 | GR_COMBINE_OTHER_CONSTANT); |
6002 | CC_PRIM (); |
6003 | SETSHADE_ENV (); |
6004 | if (rdp.cycle_mode == 0 || ((settings.hacks&hack_KI) && (rdp.cycle2 & 0x0FFFFFFF) == 0x01FF1FFF)) |
6005 | { |
6006 | USE_T0 (); |
6007 | } |
6008 | else |
6009 | { |
6010 | USE_T1 (); |
6011 | } |
6012 | } |
6013 | |
6014 | static void cc_prim_sub_env_mul_t1_add_env_mul_t0 () |
6015 | { |
6016 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
6017 | GR_COMBINE_FACTOR_ONE, |
6018 | GR_COMBINE_LOCAL_NONE, |
6019 | GR_COMBINE_OTHER_TEXTURE); |
6020 | MOD_1 (TMOD_COL_INTER_COL1_USING_TEX); |
6021 | MOD_1_COL (rdp.env_color & 0xFFFFFF00); |
6022 | MOD_1_COL1 (rdp.prim_color & 0xFFFFFF00); |
6023 | T0_MUL_T1 (); |
6024 | } |
6025 | |
6026 | static void cc_prim_sub_env_mul_t0a_add_t0 () |
6027 | { |
6028 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
6029 | GR_COMBINE_FACTOR_ONE, |
6030 | GR_COMBINE_LOCAL_NONE, |
6031 | GR_COMBINE_OTHER_TEXTURE); |
6032 | CC_PRIMSUBENV (); |
6033 | if (cmb.combine_ext) |
6034 | { |
6035 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
6036 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6037 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
6038 | GR_CMBX_B, 0); |
6039 | cmb.tex_ccolor = cmb.ccolor; |
6040 | cmb.tex |= 1; |
6041 | } |
6042 | else |
6043 | { |
6044 | MOD_0 (TMOD_COL_MUL_TEXA_ADD_TEX); |
6045 | MOD_0_COL (cmb.ccolor & 0xFFFFFF00); |
6046 | USE_T0 (); |
6047 | } |
6048 | } |
6049 | |
6050 | //Added by Gonetz |
6051 | static void cc_prim_sub_env_mul_t0a_add_env () |
6052 | { |
6053 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6054 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6055 | GR_COMBINE_LOCAL_CONSTANT, |
6056 | GR_COMBINE_OTHER_ITERATED); |
6057 | CC_ENV (); |
6058 | SETSHADE_PRIM (); |
6059 | USE_T0 (); |
6060 | } |
6061 | |
6062 | //Added by Gonetz |
6063 | static void cc_prim_sub_env_mul_t1a_add_env () |
6064 | { |
6065 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6066 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6067 | GR_COMBINE_LOCAL_CONSTANT, |
6068 | GR_COMBINE_OTHER_ITERATED); |
6069 | CC_ENV (); |
6070 | SETSHADE_PRIM (); |
6071 | USE_T1 (); |
6072 | } |
6073 | |
6074 | //Added by Gonetz |
6075 | static void cc_prim_sub_env_mul__t0_mul_t1__add_env () |
6076 | { |
6077 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6078 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6079 | GR_COMBINE_LOCAL_ITERATED, |
6080 | GR_COMBINE_OTHER_CONSTANT); |
6081 | CC_PRIM (); |
6082 | SETSHADE_ENV (); |
6083 | T0_MUL_T1 (); |
6084 | } |
6085 | |
6086 | //Added by Gonetz |
6087 | static void cc_prim_sub_env_mul__t0_add_t1__add_env () |
6088 | { |
6089 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6090 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6091 | GR_COMBINE_LOCAL_ITERATED, |
6092 | GR_COMBINE_OTHER_CONSTANT); |
6093 | CC_PRIM (); |
6094 | SETSHADE_ENV (); |
6095 | T0_ADD_T1 (); |
6096 | } |
6097 | |
6098 | //Added by Gonetz |
6099 | static void cc_prim_sub_env_mul__t0_mul_enva__add_env () |
6100 | { |
6101 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6102 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6103 | GR_COMBINE_LOCAL_CONSTANT, |
6104 | GR_COMBINE_OTHER_ITERATED); |
6105 | CC_ENV (); |
6106 | SETSHADE_PRIMSUBENV (); |
6107 | SETSHADE_ENVA (); |
6108 | USE_T0 (); |
6109 | } |
6110 | |
6111 | //Added by Gonetz |
6112 | static void cc_prim_sub_env_mul__t0_mul_shade__add_env () |
6113 | { |
6114 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6115 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6116 | GR_COMBINE_LOCAL_CONSTANT, |
6117 | GR_COMBINE_OTHER_ITERATED); |
6118 | CC_ENV (); |
6119 | MULSHADE_PRIMSUBENV (); |
6120 | USE_T0 (); |
6121 | } |
6122 | |
6123 | //Added by Gonetz |
6124 | static void cc_prim_sub_env_mul__prim_inter_t0_using_shadea__add_env () |
6125 | { |
6126 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6127 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6128 | GR_COMBINE_LOCAL_CONSTANT, |
6129 | GR_COMBINE_OTHER_ITERATED); |
6130 | CC_ENV (); |
6131 | if (cmb.combine_ext) |
6132 | { |
6133 | SETSHADE_PRIM (); |
6134 | PRIM_INTER_T0_USING_SHADEA (); |
6135 | } |
6136 | else |
6137 | { |
6138 | SETSHADE_PRIMSUBENV (); |
6139 | MULSHADE_SHADEA (); |
6140 | USE_T0 (); |
6141 | } |
6142 | } |
6143 | |
6144 | //Added by Gonetz |
6145 | static void cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_t0__add_env () |
6146 | { |
6147 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6148 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6149 | GR_COMBINE_LOCAL_ITERATED, |
6150 | GR_COMBINE_OTHER_CONSTANT); |
6151 | CC_PRIM (); |
6152 | SETSHADE_ENV (); |
6153 | if (cmb.combine_ext) |
6154 | { |
6155 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
6156 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6157 | GR_CMBX_DETAIL_FACTOR, 0, |
6158 | GR_CMBX_B, 0); |
6159 | cmb.tex_ccolor = rdp.prim_color; |
6160 | cmb.tex |= 1; |
6161 | percent = (float)(lod_frac) / 255.0f; |
6162 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
6163 | } |
6164 | else |
6165 | { |
6166 | USE_T0 (); |
6167 | MOD_0 (TMOD_TEX_SUB_COL_MUL_FAC_ADD_TEX); |
6168 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
6169 | MOD_0_FAC (lod_frac & 0xFF); |
6170 | } |
6171 | } |
6172 | |
6173 | static void cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_shade__add_env () |
6174 | { |
6175 | if (!cmb.combine_ext) |
6176 | { |
6177 | cc_prim_sub_env_mul_t0_add_env (); |
6178 | return; |
6179 | } |
6180 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6181 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
6182 | GR_CMBX_DETAIL_FACTOR, 0, |
6183 | GR_CMBX_ITRGB, 0); |
6184 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
6185 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6186 | GR_CMBX_TEXTURE_RGB, 0, |
6187 | GR_CMBX_B, 0); |
6188 | cmb.tex_ccolor = rdp.prim_color; |
6189 | CC_PRIM (); |
6190 | SETSHADE_ENV (); |
6191 | cmb.tex |= 1; |
6192 | percent = (float)(lod_frac) / 255.0f; |
6193 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
6194 | } |
6195 | |
6196 | static void cc_prim_sub_env_mul__t0_sub_shade_mul_primlod_add_shade__add_env () |
6197 | { |
6198 | if (!cmb.combine_ext) |
6199 | { |
6200 | cc_prim_sub_env_mul_t0_add_env (); |
6201 | return; |
6202 | } |
6203 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6204 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6205 | GR_CMBX_DETAIL_FACTOR, 0, |
6206 | GR_CMBX_B, 0); |
6207 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
6208 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6209 | GR_CMBX_TEXTURE_RGB, 0, |
6210 | GR_CMBX_B, 0); |
6211 | CC_PRIM (); |
6212 | SETSHADE_ENV (); |
6213 | cmb.tex |= 1; |
6214 | percent = (float)(lod_frac) / 255.0f; |
6215 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
6216 | } |
6217 | |
6218 | //Added by Gonetz |
6219 | static void cc_lavatex_sub_prim_mul_shade_add_lavatex () |
6220 | { |
6221 | if (cmb.combine_ext) |
6222 | { |
6223 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
6224 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
6225 | GR_CMBX_ITRGB, 0, |
6226 | GR_CMBX_B, 0); |
6227 | CC_PRIM (); |
6228 | T0_SUB_PRIM_MUL_PRIMLOD_ADD_T1 (); |
6229 | } |
6230 | else |
6231 | { |
6232 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
6233 | GR_COMBINE_FACTOR_ONE, |
6234 | GR_COMBINE_LOCAL_NONE, |
6235 | GR_COMBINE_OTHER_TEXTURE); |
6236 | T0_ADD_T1 (); |
6237 | } |
6238 | } |
6239 | |
6240 | //Added by Gonetz |
6241 | static void cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_t1__add_env () |
6242 | { |
6243 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6244 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6245 | GR_COMBINE_LOCAL_ITERATED, |
6246 | GR_COMBINE_OTHER_CONSTANT); |
6247 | CC_PRIM (); |
6248 | SETSHADE_ENV (); |
6249 | T0_SUB_PRIM_MUL_PRIMLOD_ADD_T1 (); |
6250 | } |
6251 | |
6252 | //Added by Gonetz |
6253 | static void cc_prim_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env () |
6254 | { |
6255 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6256 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6257 | GR_COMBINE_LOCAL_ITERATED, |
6258 | GR_COMBINE_OTHER_CONSTANT); |
6259 | CC_PRIM (); |
6260 | SETSHADE_ENV (); |
6261 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
6262 | } |
6263 | |
6264 | //Added by Gonetz |
6265 | static void cc_prim_sub_env_mul__t0_inter_t1_using_t1__add_env () |
6266 | { |
6267 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6268 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6269 | GR_COMBINE_LOCAL_ITERATED, |
6270 | GR_COMBINE_OTHER_CONSTANT); |
6271 | CC_PRIM (); |
6272 | SETSHADE_ENV (); |
6273 | T0_INTER_T1_USING_T1 (); |
6274 | } |
6275 | |
6276 | //Added by Gonetz |
6277 | static void cc_prim_sub_env_mul__t0_inter_t1_using_enva_alpha__add_env () |
6278 | { |
6279 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6280 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6281 | GR_COMBINE_LOCAL_ITERATED, |
6282 | GR_COMBINE_OTHER_CONSTANT); |
6283 | CC_PRIM (); |
6284 | SETSHADE_ENV (); |
6285 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
6286 | T0_INTER_T1_USING_FACTOR (factor); |
6287 | A_T0_INTER_T1_USING_FACTOR (factor); |
6288 | } |
6289 | |
6290 | //Added by Gonetz |
6291 | static void cc__env_inter_prim_using_t0__sub_shade_mul_t0a_add_shade () |
6292 | { |
6293 | if (!cmb.combine_ext) |
6294 | { |
6295 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6296 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6297 | GR_COMBINE_LOCAL_ITERATED, |
6298 | GR_COMBINE_OTHER_TEXTURE); |
6299 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
6300 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
6301 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
6302 | USE_T0 (); |
6303 | A_USE_T0 (); |
6304 | } |
6305 | else |
6306 | { |
6307 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6308 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
6309 | GR_CMBX_DETAIL_FACTOR, 0, |
6310 | GR_CMBX_B, 0); |
6311 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
6312 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6313 | GR_CMBX_TEXTURE_ALPHA, 0, |
6314 | GR_CMBX_B, 0); |
6315 | cmb.tex_ccolor = rdp.env_color; |
6316 | cmb.tex |= 1; |
6317 | wxUint32 pse = (rdp.prim_color>>24) - (rdp.env_color>>24); |
6318 | percent = (float)(pse) / 255.0f; |
6319 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
6320 | } |
6321 | } |
6322 | |
6323 | //Added by Gonetz |
6324 | static void cc_prim_sub_env_mul_shade_add_t0 () |
6325 | { |
6326 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6327 | GR_COMBINE_FACTOR_ONE, |
6328 | GR_COMBINE_LOCAL_ITERATED, |
6329 | GR_COMBINE_OTHER_TEXTURE); |
6330 | MULSHADE_PRIMSUBENV (); |
6331 | USE_T0 (); |
6332 | } |
6333 | |
6334 | //Added by Gonetz |
6335 | static void cc_prim_sub_env_mul_prima_add_t0 () |
6336 | { |
6337 | if (rdp.prim_color != 0x000000ff) |
6338 | { |
6339 | if (cmb.combine_ext) |
6340 | { |
6341 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
6342 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6343 | GR_CMBX_CONSTANT_ALPHA, 0, |
6344 | GR_CMBX_TEXTURE_RGB, 0); |
6345 | CC_PRIM (); |
6346 | SETSHADE_ENV (); |
6347 | } |
6348 | else |
6349 | { |
6350 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6351 | GR_COMBINE_FACTOR_ONE, |
6352 | GR_COMBINE_LOCAL_ITERATED, |
6353 | GR_COMBINE_OTHER_TEXTURE); |
6354 | SETSHADE_PRIMSUBENV (); |
6355 | SETSHADE_PRIMA (); |
6356 | } |
6357 | } |
6358 | else if ((rdp.prim_color&0xFFFFFF00) - (rdp.env_color&0xFFFFFF00) == 0) |
6359 | { |
6360 | cc_t0 (); |
6361 | return; |
6362 | } |
6363 | else |
6364 | { |
6365 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
6366 | GR_COMBINE_FACTOR_ONE, |
6367 | GR_COMBINE_LOCAL_CONSTANT, |
6368 | GR_COMBINE_OTHER_TEXTURE); |
6369 | CC_ENV (); |
6370 | } |
6371 | USE_T0 (); |
6372 | } |
6373 | |
6374 | //Added by Gonetz |
6375 | static void cc_prim_sub_env_mul_shade_add_env () |
6376 | { |
6377 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6378 | GR_COMBINE_FACTOR_ONE, |
6379 | GR_COMBINE_LOCAL_CONSTANT, |
6380 | GR_COMBINE_OTHER_ITERATED); |
6381 | CC_ENV (); |
6382 | MULSHADE_PRIMSUBENV (); |
6383 | } |
6384 | |
6385 | static void cc_prim_sub_env_mul_shadea_add_env () |
6386 | { |
6387 | // * not guaranteed to work if another iterated alpha is set |
6388 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6389 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
6390 | GR_COMBINE_LOCAL_CONSTANT, |
6391 | GR_COMBINE_OTHER_ITERATED); |
6392 | CC_ENV (); |
6393 | SETSHADE_PRIM (); |
6394 | } |
6395 | |
6396 | //Added by Gonetz |
6397 | static void cc_prim_sub_env_mul__t0_inter_t1_using_prima__add_env () |
6398 | { |
6399 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6400 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6401 | GR_COMBINE_LOCAL_CONSTANT, |
6402 | GR_COMBINE_OTHER_ITERATED); |
6403 | CC_ENV (); |
6404 | SETSHADE_PRIM (); |
6405 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
6406 | T0_INTER_T1_USING_FACTOR (factor); |
6407 | } |
6408 | |
6409 | //Added by Gonetz |
6410 | static void cc_prim_sub_env_mul__t1_inter_t0_using_prima__add_env () |
6411 | { |
6412 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6413 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6414 | GR_COMBINE_LOCAL_CONSTANT, |
6415 | GR_COMBINE_OTHER_ITERATED); |
6416 | CC_ENV (); |
6417 | SETSHADE_PRIM (); |
6418 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
6419 | T1_INTER_T0_USING_FACTOR (factor); |
6420 | } |
6421 | |
6422 | static void cc_prim_sub_env_mul__t0_inter_t1_using_enva__add_env () |
6423 | { |
6424 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6425 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6426 | GR_COMBINE_LOCAL_CONSTANT, |
6427 | GR_COMBINE_OTHER_ITERATED); |
6428 | CC_ENV (); |
6429 | SETSHADE_PRIM (); |
6430 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
6431 | T0_INTER_T1_USING_FACTOR (factor); |
6432 | } |
6433 | |
6434 | static void cc_prim_sub_center_mul__t0_inter_t1_using_enva__add_env () |
6435 | { |
6436 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6437 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6438 | GR_COMBINE_LOCAL_ITERATED, |
6439 | GR_COMBINE_OTHER_CONSTANT); |
6440 | CC_C1SUBC2 (rdp.prim_color, rdp.CENTER); |
6441 | SETSHADE_ENV (); |
6442 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
6443 | T0_INTER_T1_USING_FACTOR (factor); |
6444 | } |
6445 | |
6446 | static void cc_prim_sub_env_mul__t1_inter_t0_using_enva__add_env () |
6447 | { |
6448 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6449 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6450 | GR_COMBINE_LOCAL_CONSTANT, |
6451 | GR_COMBINE_OTHER_ITERATED); |
6452 | CC_ENV (); |
6453 | SETSHADE_PRIM (); |
6454 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
6455 | T1_INTER_T0_USING_FACTOR (factor); |
6456 | } |
6457 | |
6458 | static void cc_prim_sub_env_mul__t0_mul_enva_add_t1__add_env () |
6459 | { |
6460 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6461 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6462 | GR_COMBINE_LOCAL_CONSTANT, |
6463 | GR_COMBINE_OTHER_ITERATED); |
6464 | CC_ENV (); |
6465 | SETSHADE_PRIM (); |
6466 | if (cmb.combine_ext) |
6467 | { |
6468 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6469 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6470 | GR_CMBX_ZERO, 1, |
6471 | GR_CMBX_ZERO, 0); |
6472 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6473 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6474 | GR_CMBX_DETAIL_FACTOR, 0, |
6475 | GR_CMBX_B, 0); |
6476 | cmb.tex |= 3; |
6477 | percent = (float)(rdp.env_color&0xFF) / 255.0f; |
6478 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
6479 | } |
6480 | else |
6481 | { |
6482 | T0_ADD_T1 (); |
6483 | } |
6484 | } |
6485 | |
6486 | static void cc_prim_sub_env_mul__t1_mul_enva_add_t0__add_env () |
6487 | { |
6488 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6489 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6490 | GR_COMBINE_LOCAL_CONSTANT, |
6491 | GR_COMBINE_OTHER_ITERATED); |
6492 | CC_ENV (); |
6493 | SETSHADE_PRIM (); |
6494 | T1_MUL_ENVA_ADD_T0 (); |
6495 | } |
6496 | |
6497 | //Added by Gonetz |
6498 | static void cc_prim_sub_env_mul_primlod_add__t0_inter_t1_using_primlod () |
6499 | { |
6500 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6501 | GR_COMBINE_FACTOR_ONE, |
6502 | GR_COMBINE_LOCAL_CONSTANT, |
6503 | GR_COMBINE_OTHER_TEXTURE); |
6504 | CC_PRIMSUBENV(); |
6505 | CC_COLMULBYTE(cmb.ccolor, rdp.prim_lodfrac); |
6506 | T0_INTER_T1_USING_FACTOR (lod_frac); |
6507 | } |
6508 | |
6509 | static void cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env () |
6510 | { |
6511 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6512 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6513 | GR_COMBINE_LOCAL_CONSTANT, |
6514 | GR_COMBINE_OTHER_ITERATED); |
6515 | CC_ENV (); |
6516 | SETSHADE_PRIM (); |
6517 | T0_INTER_T1_USING_FACTOR (lod_frac); |
6518 | } |
6519 | |
6520 | static void cc_prim_sub_env_mul__t1_inter_t0_using_primlod__add_env () |
6521 | { |
6522 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6523 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6524 | GR_COMBINE_LOCAL_CONSTANT, |
6525 | GR_COMBINE_OTHER_ITERATED); |
6526 | CC_ENV (); |
6527 | SETSHADE_PRIM (); |
6528 | T1_INTER_T0_USING_FACTOR (lod_frac); |
6529 | } |
6530 | |
6531 | static void cc_prim_sub_env_mul__t1_mul_primlod_add_t0__add_env () |
6532 | { |
6533 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6534 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6535 | GR_COMBINE_LOCAL_CONSTANT, |
6536 | GR_COMBINE_OTHER_ITERATED); |
6537 | CC_ENV (); |
6538 | SETSHADE_PRIM (); |
6539 | T1_MUL_PRIMLOD_ADD_T0 (); |
6540 | } |
6541 | |
6542 | static void cc_prim_sub_env_mul__t1_sub_prim_mul_t0_add_t0__add_env () |
6543 | { |
6544 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6545 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6546 | GR_COMBINE_LOCAL_CONSTANT, |
6547 | GR_COMBINE_OTHER_ITERATED); |
6548 | CC_ENV (); |
6549 | SETSHADE_PRIM (); |
6550 | if (cmb.combine_ext) |
6551 | { |
6552 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6553 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
6554 | GR_CMBX_ZERO, 1, |
6555 | GR_CMBX_ZERO, 0); |
6556 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
6557 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6558 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
6559 | GR_CMBX_B, 0); |
6560 | cmb.tex_ccolor = rdp.prim_color; |
6561 | cmb.tex |= 3; |
6562 | } |
6563 | else |
6564 | { |
6565 | MOD_1 (TMOD_TEX_SUB_COL); |
6566 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
6567 | T0_MUL_T1_ADD_T0 (); |
6568 | } |
6569 | } |
6570 | |
6571 | //Added by Gonetz |
6572 | static void cc__prim_sub_env_mul_prim_add_t0__mul_prim () |
6573 | { |
6574 | if (cmb.combine_ext) |
6575 | { |
6576 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6577 | GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
6578 | GR_CMBX_ZERO, 1, |
6579 | GR_CMBX_ZERO, 0); |
6580 | cmb.tex |= 1; |
6581 | SETSHADE_PRIMSUBENV (); |
6582 | SETSHADE_PRIM (); |
6583 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
6584 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
6585 | GR_CMBX_CONSTANT_COLOR, 0, |
6586 | GR_CMBX_ZERO, 0); |
6587 | CC_PRIM() ; |
6588 | } |
6589 | else |
6590 | { |
6591 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6592 | GR_COMBINE_FACTOR_ONE, |
6593 | GR_COMBINE_LOCAL_ITERATED, |
6594 | GR_COMBINE_OTHER_TEXTURE); |
6595 | SETSHADE_PRIMSUBENV (); |
6596 | SETSHADE_PRIM (); |
6597 | USE_T0 (); |
6598 | } |
6599 | } |
6600 | |
6601 | //Added by Gonetz |
6602 | static void cc_prim_sub_env_mul_prim_add_env () |
6603 | { |
6604 | if (cmb.combine_ext) |
6605 | { |
6606 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
6607 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6608 | GR_CMBX_CONSTANT_COLOR, 0, |
6609 | GR_CMBX_B, 0); |
6610 | SETSHADE_ENV(); |
6611 | CC_PRIM (); |
6612 | } |
6613 | else |
6614 | { |
6615 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6616 | GR_COMBINE_FACTOR_ONE, |
6617 | GR_COMBINE_LOCAL_CONSTANT, |
6618 | GR_COMBINE_OTHER_ITERATED); |
6619 | SETSHADE_PRIMSUBENV (); |
6620 | SETSHADE_PRIM (); |
6621 | CC_ENV (); |
6622 | } |
6623 | } |
6624 | |
6625 | static void cc_prim_sub_env_mul_primlod_add_env () |
6626 | { |
6627 | if (cmb.combine_ext) |
6628 | { |
6629 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6630 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
6631 | GR_CMBX_ZERO, 0, |
6632 | GR_CMBX_B, 0); |
6633 | cmb.tex |= 1; |
6634 | CC_PRIMLOD (); |
6635 | cmb.tex_ccolor = cmb.ccolor; |
6636 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
6637 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
6638 | GR_CMBX_TEXTURE_RGB, 0, |
6639 | GR_CMBX_B, 0); |
6640 | SETSHADE_PRIM(); |
6641 | CC_ENV (); |
6642 | } |
6643 | else |
6644 | { |
6645 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6646 | GR_COMBINE_FACTOR_ONE, |
6647 | GR_COMBINE_LOCAL_CONSTANT, |
6648 | GR_COMBINE_OTHER_ITERATED); |
6649 | SETSHADE_PRIMSUBENV (); |
6650 | SETSHADE_PRIMLOD (); |
6651 | CC_ENV (); |
6652 | } |
6653 | } |
6654 | |
6655 | //Added by Gonetz |
6656 | static void cc_prim_sub_env_mul_enva_add_t0 () |
6657 | { |
6658 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6659 | GR_COMBINE_FACTOR_ONE, |
6660 | GR_COMBINE_LOCAL_ITERATED, |
6661 | GR_COMBINE_OTHER_TEXTURE); |
6662 | SETSHADE_PRIMSUBENV (); |
6663 | SETSHADE_ENVA (); |
6664 | USE_T0 (); |
6665 | } |
6666 | |
6667 | static void cc_prim_sub_env_mul_enva_add_env () |
6668 | { |
6669 | if (cmb.combine_ext) |
6670 | { |
6671 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
6672 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
6673 | GR_CMBX_ZERO, 0, |
6674 | GR_CMBX_B, 0); |
6675 | cmb.tex |= 1; |
6676 | CC_ENVA (); |
6677 | cmb.tex_ccolor = cmb.ccolor; |
6678 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
6679 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
6680 | GR_CMBX_TEXTURE_RGB, 0, |
6681 | GR_CMBX_B, 0); |
6682 | SETSHADE_PRIM(); |
6683 | CC_ENV (); |
6684 | } |
6685 | else |
6686 | { |
6687 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6688 | GR_COMBINE_FACTOR_ONE, |
6689 | GR_COMBINE_LOCAL_CONSTANT, |
6690 | GR_COMBINE_OTHER_ITERATED); |
6691 | SETSHADE_PRIMSUBENV (); |
6692 | SETSHADE_ENVA (); |
6693 | CC_ENV (); |
6694 | } |
6695 | } |
6696 | |
6697 | //Added by Gonetz |
6698 | static void cc_prim_sub_shade_mul_t0_add_env () |
6699 | { |
6700 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6701 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6702 | GR_COMBINE_LOCAL_CONSTANT, |
6703 | GR_COMBINE_OTHER_ITERATED); |
6704 | CC_ENV (); |
6705 | COLSUBSHADE_PRIM (); |
6706 | USE_T0 (); |
6707 | } |
6708 | |
6709 | //Added by Gonetz |
6710 | static void cc_prim_sub_shade_mul__t1_sub_prim_mul_primlod_add_t0__add_shade () |
6711 | { |
6712 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6713 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6714 | GR_COMBINE_LOCAL_ITERATED, |
6715 | GR_COMBINE_OTHER_CONSTANT); |
6716 | CC_PRIM (); |
6717 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
6718 | } |
6719 | |
6720 | static void cc_prim_sub_shade_mul_t1a_add_shade () |
6721 | { |
6722 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6723 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6724 | GR_COMBINE_LOCAL_ITERATED, |
6725 | GR_COMBINE_OTHER_CONSTANT); |
6726 | CC_PRIM (); |
6727 | USE_T1 (); |
6728 | } |
6729 | |
6730 | //Added by Gonetz |
6731 | static void cc_prim_sub_shade_mul_t0_add_shade () |
6732 | { |
6733 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6734 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6735 | GR_COMBINE_LOCAL_ITERATED, |
6736 | GR_COMBINE_OTHER_CONSTANT); |
6737 | CC_PRIM (); |
6738 | USE_T0 (); |
6739 | } |
6740 | |
6741 | //Added by Gonetz |
6742 | static void cc_prim_sub_shade_mul_t1_add_shade () |
6743 | { |
6744 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6745 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6746 | GR_COMBINE_LOCAL_ITERATED, |
6747 | GR_COMBINE_OTHER_CONSTANT); |
6748 | CC_PRIM (); |
6749 | USE_T1 (); |
6750 | } |
6751 | |
6752 | //Added by Gonetz |
6753 | static void cc_prim_sub_shade_mul__t0a_mul_t1__add_shade () |
6754 | { |
6755 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6756 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6757 | GR_COMBINE_LOCAL_ITERATED, |
6758 | GR_COMBINE_OTHER_CONSTANT); |
6759 | CC_PRIM (); |
6760 | T0A_MUL_T1(); |
6761 | } |
6762 | |
6763 | //Added by Gonetz |
6764 | static void cc_prim_sub_shade_mul__t0_inter_t1_using_enva__add_shade () |
6765 | { |
6766 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6767 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6768 | GR_COMBINE_LOCAL_ITERATED, |
6769 | GR_COMBINE_OTHER_CONSTANT); |
6770 | CC_PRIM (); |
6771 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
6772 | T0_INTER_T1_USING_FACTOR (factor); |
6773 | } |
6774 | |
6775 | //Added by Gonetz |
6776 | static void cc_prim_sub_shade_mul__t0_inter_t1_using_shadea__add_shade () |
6777 | { |
6778 | if (cmb.combine_ext) |
6779 | { |
6780 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
6781 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
6782 | GR_CMBX_TEXTURE_RGB, 0, |
6783 | GR_CMBX_B, 0); |
6784 | } |
6785 | else |
6786 | { |
6787 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6788 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6789 | GR_COMBINE_LOCAL_ITERATED, |
6790 | GR_COMBINE_OTHER_CONSTANT); |
6791 | } |
6792 | CC_PRIM (); |
6793 | T0_INTER_T1_USING_SHADEA (); |
6794 | } |
6795 | |
6796 | //Added by Gonetz |
6797 | static void cc_prim_sub_shade_mul_prima_add_shade () |
6798 | { |
6799 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6800 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
6801 | GR_COMBINE_LOCAL_ITERATED, |
6802 | GR_COMBINE_OTHER_CONSTANT); |
6803 | CC_PRIM (); |
6804 | CA_PRIM (); |
6805 | } |
6806 | |
6807 | //Added by Gonetz |
6808 | static void cc_prim_sub_shade_mul_env_add_shade () |
6809 | { |
6810 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
6811 | GR_COMBINE_FACTOR_ONE, |
6812 | GR_COMBINE_LOCAL_ITERATED, |
6813 | GR_COMBINE_OTHER_CONSTANT); |
6814 | CC_PRIMMULENV (); |
6815 | MULSHADE_1MENV (); |
6816 | } |
6817 | |
6818 | //Added by Gonetz |
6819 | static void cc_prim_sub_shade_mul_shadea_add_shade () |
6820 | { |
6821 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6822 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
6823 | GR_COMBINE_LOCAL_ITERATED, |
6824 | GR_COMBINE_OTHER_CONSTANT); |
6825 | CC_PRIM (); |
6826 | } |
6827 | |
6828 | static void cc_env_sub_prim_mul_t0_add_prim () |
6829 | { |
6830 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6831 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6832 | GR_COMBINE_LOCAL_ITERATED, |
6833 | GR_COMBINE_OTHER_CONSTANT); |
6834 | CC_ENV (); |
6835 | SETSHADE_PRIM (); |
6836 | USE_T0 (); |
6837 | } |
6838 | |
6839 | static void cc_env_sub_prim_mul_t1_add_prim () |
6840 | { |
6841 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6842 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6843 | GR_COMBINE_LOCAL_ITERATED, |
6844 | GR_COMBINE_OTHER_CONSTANT); |
6845 | CC_ENV (); |
6846 | SETSHADE_PRIM (); |
6847 | USE_T1 (); |
6848 | } |
6849 | |
6850 | static void cc_env_sub_prim_mul_t0a_add_prim () |
6851 | { |
6852 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6853 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6854 | GR_COMBINE_LOCAL_ITERATED, |
6855 | GR_COMBINE_OTHER_CONSTANT); |
6856 | CC_ENV (); |
6857 | SETSHADE_PRIM (); |
6858 | A_USE_T0 (); |
6859 | } |
6860 | |
6861 | static void cc_env_sub_prim_mul_t1a_add_prim () |
6862 | { |
6863 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6864 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6865 | GR_COMBINE_LOCAL_ITERATED, |
6866 | GR_COMBINE_OTHER_CONSTANT); |
6867 | CC_ENV (); |
6868 | SETSHADE_PRIM (); |
6869 | A_USE_T1 (); |
6870 | } |
6871 | |
6872 | static void cc_env_sub_prim_mul__t0_add_t1__add_prim () |
6873 | { |
6874 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6875 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6876 | GR_COMBINE_LOCAL_ITERATED, |
6877 | GR_COMBINE_OTHER_CONSTANT); |
6878 | CC_ENV (); |
6879 | SETSHADE_PRIM (); |
6880 | T0_ADD_T1 (); |
6881 | } |
6882 | |
6883 | static void cc_env_sub_prim_mul__t0_mul_t1__add_prim () //Added by Gonetz |
6884 | { |
6885 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6886 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6887 | GR_COMBINE_LOCAL_ITERATED, |
6888 | GR_COMBINE_OTHER_CONSTANT); |
6889 | CC_ENV (); |
6890 | SETSHADE_PRIM (); |
6891 | T0_MUL_T1 (); |
6892 | } |
6893 | |
6894 | static void cc_env_sub_prim_mul__t0t1a__add_prim () //Added by Gonetz |
6895 | { |
6896 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6897 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6898 | GR_COMBINE_LOCAL_ITERATED, |
6899 | GR_COMBINE_OTHER_CONSTANT); |
6900 | CC_ENV (); |
6901 | SETSHADE_PRIM (); |
6902 | A_T0_MUL_T1 (); |
6903 | } |
6904 | |
6905 | static void cc_env_sub_prim_mul__t0_inter_t1_using_t1__add_prim () //Added by Gonetz |
6906 | { |
6907 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6908 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6909 | GR_COMBINE_LOCAL_ITERATED, |
6910 | GR_COMBINE_OTHER_CONSTANT); |
6911 | CC_ENV (); |
6912 | SETSHADE_PRIM (); |
6913 | T0_INTER_T1_USING_T1 (); |
6914 | } |
6915 | |
6916 | static void cc_env_sub_prim_mul__t0_inter_t1_using_half__add_prim () //Added by Gonetz |
6917 | { |
6918 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6919 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6920 | GR_COMBINE_LOCAL_ITERATED, |
6921 | GR_COMBINE_OTHER_CONSTANT); |
6922 | CC_ENV (); |
6923 | SETSHADE_PRIM (); |
6924 | T0_INTER_T1_USING_FACTOR (0x7F); |
6925 | } |
6926 | |
6927 | static void cc_env_sub_prim_mul__t1_inter_t0_using_t0__add_prim () //Added by Gonetz |
6928 | { |
6929 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6930 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6931 | GR_COMBINE_LOCAL_ITERATED, |
6932 | GR_COMBINE_OTHER_CONSTANT); |
6933 | CC_ENV (); |
6934 | SETSHADE_PRIM (); |
6935 | T1_INTER_T0_USING_T0 (); |
6936 | } |
6937 | |
6938 | static void cc_env_sub_shade_mul__t0_mul_t1__add_shade () //Added by Gonetz |
6939 | { |
6940 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
6941 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
6942 | GR_COMBINE_LOCAL_ITERATED, |
6943 | GR_COMBINE_OTHER_CONSTANT); |
6944 | CC_ENV (); |
6945 | T0_MUL_T1 (); |
6946 | } |
6947 | |
6948 | static void cc_env_sub_prim_mul__t0a_mul_t1a__add_prim () |
6949 | { |
6950 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
6951 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
6952 | GR_COMBINE_LOCAL_CONSTANT, |
6953 | GR_COMBINE_OTHER_ITERATED); |
6954 | CC_PRIM (); |
6955 | SETSHADE_ENV (); |
6956 | A_T0_MUL_T1 (); |
6957 | } |
6958 | |
6959 | |
6960 | static void cc_env_sub_prim_mul_prima_add_prim () //Aded by Gonetz |
6961 | { |
6962 | // * not guaranteed to work if another iterated alpha is set |
6963 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
6964 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
6965 | GR_COMBINE_LOCAL_CONSTANT, |
6966 | GR_COMBINE_OTHER_ITERATED); |
6967 | CC_PRIM (); |
6968 | CA_PRIM (); |
6969 | SETSHADE_ENV (); |
6970 | } |
6971 | |
6972 | static void cc_env_sub_prim_mul_enva_add_prim () //Aded by Gonetz |
6973 | { |
6974 | // * not guaranteed to work if another iterated alpha is set |
6975 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
6976 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
6977 | GR_COMBINE_LOCAL_ITERATED, |
6978 | GR_COMBINE_OTHER_CONSTANT); |
6979 | CC_ENV (); |
6980 | CA_ENV (); |
6981 | SETSHADE_PRIM (); |
6982 | } |
6983 | |
6984 | static void cc__t0_sub_env_mul_shade__sub_prim_mul_shade_add_prim () |
6985 | { |
6986 | if (cmb.combine_ext) |
6987 | { |
6988 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
6989 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
6990 | GR_CMBX_ITRGB, 0, |
6991 | GR_CMBX_ZERO, 0); |
6992 | cmb.tex_ccolor = rdp.env_color; |
6993 | cmb.tex |= 1; |
6994 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
6995 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
6996 | GR_CMBX_ITRGB, 0, |
6997 | GR_CMBX_B, 0); |
6998 | CC_PRIM (); |
6999 | } |
7000 | else |
7001 | { |
7002 | cc_t0_mul_shade (); |
7003 | } |
7004 | } |
7005 | |
7006 | static void cc_env_sub_prim_mul_shade_add_prim () //Added by Gonetz |
7007 | { |
7008 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7009 | GR_COMBINE_FACTOR_ONE, |
7010 | GR_COMBINE_LOCAL_CONSTANT, |
7011 | GR_COMBINE_OTHER_ITERATED); |
7012 | CC_PRIM (); |
7013 | MULSHADE_ENVSUBPRIM (); |
7014 | } |
7015 | |
7016 | static void cc_env_sub_prim_mul_shadea_add_prim () //Added by Gonetz |
7017 | { |
7018 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7019 | GR_COMBINE_FACTOR_ONE, |
7020 | GR_COMBINE_LOCAL_CONSTANT, |
7021 | GR_COMBINE_OTHER_ITERATED); |
7022 | CC_PRIM (); |
7023 | SETSHADE_ENVSUBPRIM (); |
7024 | MULSHADE_SHADEA (); |
7025 | } |
7026 | |
7027 | static void cc_env_sub_prim_mul__t0_inter_t1_using_prima__add_prim () |
7028 | { |
7029 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7030 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7031 | GR_COMBINE_LOCAL_ITERATED, |
7032 | GR_COMBINE_OTHER_CONSTANT); |
7033 | CC_ENV (); |
7034 | SETSHADE_PRIM (); |
7035 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7036 | T0_INTER_T1_USING_FACTOR (factor); |
7037 | } |
7038 | |
7039 | static void cc_env_sub_prim_mul__t0_inter_t1_using_primlod__add_prim () |
7040 | { |
7041 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7042 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7043 | GR_COMBINE_LOCAL_ITERATED, |
7044 | GR_COMBINE_OTHER_CONSTANT); |
7045 | CC_ENV (); |
7046 | SETSHADE_PRIM (); |
7047 | T0_INTER_T1_USING_FACTOR (lod_frac); |
7048 | } |
7049 | |
7050 | static void cc_env_sub_primshade_mul_t0_add_primshade () |
7051 | { |
7052 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7053 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7054 | GR_COMBINE_LOCAL_ITERATED, |
7055 | GR_COMBINE_OTHER_CONSTANT); |
7056 | CC_ENV (); |
7057 | MULSHADE_PRIM (); |
7058 | USE_T0 (); |
7059 | } |
7060 | |
7061 | static void cc_env_sub_primshade_mul_t1_add_primshade () |
7062 | { |
7063 | // cc_prim_mul_shade(); |
7064 | // return; |
7065 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7066 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7067 | GR_COMBINE_LOCAL_ITERATED, |
7068 | GR_COMBINE_OTHER_CONSTANT); |
7069 | CC_ENV (); |
7070 | MULSHADE_PRIM (); |
7071 | USE_T0 (); |
7072 | } |
7073 | |
7074 | static void cc_env_sub_shade_mul_t0_add_shade () |
7075 | { |
7076 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7077 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7078 | GR_COMBINE_LOCAL_ITERATED, |
7079 | GR_COMBINE_OTHER_CONSTANT); |
7080 | CC_ENV (); |
7081 | USE_T0 (); |
7082 | } |
7083 | |
7084 | static void cc__env_sub_shade_mul_t0_add_shade__mul_prim () |
7085 | { |
7086 | if (cmb.combine_ext) |
7087 | { |
7088 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
7089 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
7090 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
7091 | GR_CMBX_B, 0); |
7092 | cmb.tex |= 1; |
7093 | cmb.tex_ccolor = rdp.prim_color; |
7094 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7095 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
7096 | GR_CMBX_CONSTANT_COLOR, 0, |
7097 | GR_CMBX_ZERO, 0); |
7098 | CC_PRIM() ; |
7099 | } |
7100 | else |
7101 | { |
7102 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7103 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7104 | GR_COMBINE_LOCAL_ITERATED, |
7105 | GR_COMBINE_OTHER_CONSTANT); |
7106 | CC_ENV (); |
7107 | MULSHADE_PRIM (); |
7108 | USE_T0 (); |
7109 | } |
7110 | } |
7111 | |
7112 | static void cc_env_sub_shade_mul_t1_add_shade () |
7113 | { |
7114 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7115 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7116 | GR_COMBINE_LOCAL_ITERATED, |
7117 | GR_COMBINE_OTHER_CONSTANT); |
7118 | CC_ENV (); |
7119 | USE_T1 (); |
7120 | } |
7121 | |
7122 | //Added by Gonetz |
7123 | static void cc_env_sub_shade_mul__t0_inter_t1_using_shadea__add_shade () |
7124 | { |
7125 | if (cmb.combine_ext) |
7126 | { |
7127 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
7128 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
7129 | GR_CMBX_TEXTURE_RGB, 0, |
7130 | GR_CMBX_B, 0); |
7131 | } |
7132 | else |
7133 | { |
7134 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7135 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7136 | GR_COMBINE_LOCAL_ITERATED, |
7137 | GR_COMBINE_OTHER_CONSTANT); |
7138 | } |
7139 | CC_ENV (); |
7140 | T0_INTER_T1_USING_SHADEA (); |
7141 | } |
7142 | |
7143 | //Added by Gonetz |
7144 | static void cc_env_sub_shade_mul_enva_add_shade () |
7145 | { |
7146 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7147 | GR_COMBINE_FACTOR_OTHER_ALPHA, |
7148 | GR_COMBINE_LOCAL_ITERATED, |
7149 | GR_COMBINE_OTHER_CONSTANT); |
7150 | cmb.ccolor = rdp.env_color; |
7151 | } |
7152 | |
7153 | //Added by Gonetz |
7154 | static void cc_shade_sub_t0_mul_shadea_add_t0 () |
7155 | { |
7156 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7157 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA, |
7158 | GR_COMBINE_LOCAL_ITERATED, |
7159 | GR_COMBINE_OTHER_TEXTURE); |
7160 | MULSHADE_SHADEA (); |
7161 | USE_T0 (); |
7162 | } |
7163 | |
7164 | |
7165 | static void cc__t0_mul_shade_mul_shadea__add__t1_mul_one_sub_shadea () |
7166 | { |
7167 | // (t0-0)*shade+0, (cmb-t0)*shadea+t0 |
7168 | if (cmb.combine_ext) |
7169 | { |
7170 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
7171 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7172 | GR_CMBX_ITALPHA, 1, |
7173 | GR_CMBX_ZERO, 0); |
7174 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
7175 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7176 | GR_CMBX_ITRGB, 0, |
7177 | GR_CMBX_B, 0); |
7178 | MULSHADE_SHADEA (); |
7179 | cmb.tex |= 3; |
7180 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
7181 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
7182 | GR_CMBX_ZERO, 0, |
7183 | GR_CMBX_TEXTURE_RGB, 0); |
7184 | } |
7185 | else |
7186 | { |
7187 | cc_t0_mul_shade (); |
7188 | } |
7189 | } |
7190 | |
7191 | static void cc_shade_sub_prim_mul__t0_inter_t1_using_primlod__add_prim () |
7192 | { |
7193 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7194 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7195 | GR_COMBINE_LOCAL_CONSTANT, |
7196 | GR_COMBINE_OTHER_ITERATED); |
7197 | CC_PRIM (); |
7198 | T0_INTER_T1_USING_FACTOR (lod_frac); |
7199 | } |
7200 | |
7201 | static void cc_shade_sub_prim_mul_t0_add_prim () |
7202 | { |
7203 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7204 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7205 | GR_COMBINE_LOCAL_CONSTANT, |
7206 | GR_COMBINE_OTHER_ITERATED); |
7207 | CC_PRIM (); |
7208 | USE_T0 (); |
7209 | } |
7210 | |
7211 | //Added by Gonetz |
7212 | static void cc_shade_sub_prim_mul_t1_add_prim () |
7213 | { |
7214 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7215 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7216 | GR_COMBINE_LOCAL_CONSTANT, |
7217 | GR_COMBINE_OTHER_ITERATED); |
7218 | CC_PRIM (); |
7219 | USE_T1 (); |
7220 | } |
7221 | |
7222 | //Added by Gonetz |
7223 | static void cc_shade_sub_env_mul__t0_mul_t1__add__t0_mul_t1 () |
7224 | { |
7225 | if (cmb.combine_ext) |
7226 | { |
7227 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
7228 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
7229 | GR_CMBX_TEXTURE_RGB, 0, |
7230 | GR_CMBX_TEXTURE_RGB, 0); |
7231 | CC_ENV (); |
7232 | T0_MUL_T1 (); |
7233 | } |
7234 | else |
7235 | { |
7236 | cc_t0_mul_t1 (); |
7237 | } |
7238 | } |
7239 | |
7240 | //Added by Gonetz |
7241 | static void cc_shade_sub_env_mul_t0_add_prim () |
7242 | { |
7243 | if (rdp.cur_image && (rdp.cur_image->format != 0)) |
7244 | { |
7245 | cc_prim (); |
7246 | return; |
7247 | } |
7248 | |
7249 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7250 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7251 | GR_COMBINE_LOCAL_CONSTANT, |
7252 | GR_COMBINE_OTHER_ITERATED); |
7253 | CC_PRIM (); |
7254 | SUBSHADE_ENV (); |
7255 | USE_T0 (); |
7256 | } |
7257 | |
7258 | //Added by Gonetz |
7259 | static void cc_shade_sub_env_mul__t0_inter_t1_using_primlod__add_prim () |
7260 | { |
7261 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7262 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7263 | GR_COMBINE_LOCAL_CONSTANT, |
7264 | GR_COMBINE_OTHER_ITERATED); |
7265 | CC_PRIM (); |
7266 | SUBSHADE_ENV (); |
7267 | T0_INTER_T1_USING_FACTOR (lod_frac); |
7268 | } |
7269 | |
7270 | //Added by Gonetz |
7271 | static void cc_shade_sub_env_mul__t0_inter_t1_using_primlod__add_env () |
7272 | { |
7273 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7274 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7275 | GR_COMBINE_LOCAL_CONSTANT, |
7276 | GR_COMBINE_OTHER_ITERATED); |
7277 | CC_ENV (); |
7278 | T0_INTER_T1_USING_FACTOR (lod_frac); |
7279 | } |
7280 | |
7281 | //Added by Gonetz |
7282 | static void cc_shade_sub_env_mul__t0_mul_t1__add_env () |
7283 | { |
7284 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7285 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7286 | GR_COMBINE_LOCAL_CONSTANT, |
7287 | GR_COMBINE_OTHER_ITERATED); |
7288 | CC_ENV (); |
7289 | T0_MUL_T1 (); |
7290 | } |
7291 | |
7292 | //Added by Gonetz |
7293 | static void cc_shade_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env () |
7294 | { |
7295 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7296 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7297 | GR_COMBINE_LOCAL_CONSTANT, |
7298 | GR_COMBINE_OTHER_ITERATED); |
7299 | CC_ENV (); |
7300 | SETSHADE_ENV (); |
7301 | T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0 (); |
7302 | } |
7303 | |
7304 | //Added by Gonetz |
7305 | static void cc_shade_sub_env_mul_t0_add_env () |
7306 | { |
7307 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7308 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7309 | GR_COMBINE_LOCAL_CONSTANT, |
7310 | GR_COMBINE_OTHER_ITERATED); |
7311 | CC_ENV (); |
7312 | USE_T0 (); |
7313 | } |
7314 | |
7315 | //Added by Gonetz |
7316 | static void cc_shade_sub_env_mul_t0_mul_prim_add_prim_mul_env () |
7317 | { |
7318 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7319 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7320 | GR_COMBINE_LOCAL_CONSTANT, |
7321 | GR_COMBINE_OTHER_ITERATED); |
7322 | CC_PRIMMULENV (); |
7323 | SUBSHADE_ENV (); |
7324 | MULSHADE_PRIM() |
7325 | USE_T0 (); |
7326 | } |
7327 | |
7328 | //Added by Gonetz |
7329 | static void cc_shade_sub_env_mul_t1_add_env () |
7330 | { |
7331 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
7332 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7333 | GR_COMBINE_LOCAL_CONSTANT, |
7334 | GR_COMBINE_OTHER_ITERATED); |
7335 | CC_ENV (); |
7336 | USE_T1 (); |
7337 | } |
7338 | |
7339 | //Added by Gonetz |
7340 | static void cc_shade_sub_env_mul_prim_add_t0 () |
7341 | { |
7342 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7343 | GR_COMBINE_FACTOR_ONE, |
7344 | GR_COMBINE_LOCAL_ITERATED, |
7345 | GR_COMBINE_OTHER_TEXTURE); |
7346 | SUBSHADE_ENV (); |
7347 | MULSHADE_PRIM (); |
7348 | USE_T0 (); |
7349 | } |
7350 | |
7351 | static void cc__t0_add_prim_mul_shade__mul_shade_add_env () |
7352 | { |
7353 | if (!cmb.combine_ext) |
7354 | { |
7355 | cc_shade_sub_env_mul_prim_add_t0 (); |
7356 | return; |
7357 | } |
7358 | T1CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
7359 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7360 | GR_CMBX_ITRGB, 0, |
7361 | GR_CMBX_B, 0); |
7362 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
7363 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7364 | GR_CMBX_ITRGB, 0, |
7365 | GR_CMBX_B, 0); |
7366 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7367 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_ZERO, |
7368 | GR_CMBX_ITRGB, 0, |
7369 | GR_CMBX_B, 0); |
7370 | cmb.tex_ccolor = rdp.prim_color; |
7371 | CC_ENV (); |
7372 | cmb.tex |= 1; |
7373 | } |
7374 | |
7375 | static void cc__t0_add_prim_mul_shade__mul_shade () |
7376 | { |
7377 | if (!cmb.combine_ext) |
7378 | { |
7379 | cc_shade_sub_env_mul_prim_add_t0 (); |
7380 | return; |
7381 | } |
7382 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
7383 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7384 | GR_CMBX_ITRGB, 0, |
7385 | GR_CMBX_B, 0); |
7386 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7387 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
7388 | GR_CMBX_ITRGB, 0, |
7389 | GR_CMBX_ZERO, 0); |
7390 | cmb.tex_ccolor = rdp.prim_color; |
7391 | cmb.tex |= 1; |
7392 | } |
7393 | |
7394 | //Added by Gonetz |
7395 | static void cc_shade_sub_env_mul_prim_add_env () |
7396 | { |
7397 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7398 | GR_COMBINE_FACTOR_ONE, |
7399 | GR_COMBINE_LOCAL_CONSTANT, |
7400 | GR_COMBINE_OTHER_ITERATED); |
7401 | SUBSHADE_ENV (); |
7402 | MULSHADE_PRIM (); |
7403 | CC_ENV (); |
7404 | } |
7405 | |
7406 | //Added by Gonetz |
7407 | static void cc_shade_sub_env_mul_prima_add_prim () |
7408 | { |
7409 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7410 | GR_COMBINE_FACTOR_ONE, |
7411 | GR_COMBINE_LOCAL_CONSTANT, |
7412 | GR_COMBINE_OTHER_ITERATED); |
7413 | SUBSHADE_ENV (); |
7414 | MULSHADE_PRIMA (); |
7415 | CC_PRIM (); |
7416 | } |
7417 | |
7418 | static void cc_shade_sub_env_mul_k5_add_prim () |
7419 | { |
7420 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7421 | GR_COMBINE_FACTOR_ONE, |
7422 | GR_COMBINE_LOCAL_CONSTANT, |
7423 | GR_COMBINE_OTHER_ITERATED); |
7424 | SUBSHADE_ENV (); |
7425 | wxUint32 temp = rdp.prim_color; |
7426 | rdp.prim_color = rdp.K5; |
7427 | MULSHADE_PRIMA (); |
7428 | rdp.prim_color = temp; |
7429 | CC_PRIM (); |
7430 | } |
7431 | |
7432 | // ** A inter B using C ** |
7433 | static void cc_t0_inter_t1_using_t1a () |
7434 | { |
7435 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7436 | GR_COMBINE_FACTOR_ONE, |
7437 | GR_COMBINE_LOCAL_NONE, |
7438 | GR_COMBINE_OTHER_TEXTURE); |
7439 | T0_INTER_T1_USING_T1A (); |
7440 | } |
7441 | |
7442 | static void cc_t0_inter_t1_using_prima () |
7443 | { |
7444 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7445 | GR_COMBINE_FACTOR_ONE, |
7446 | GR_COMBINE_LOCAL_NONE, |
7447 | GR_COMBINE_OTHER_TEXTURE); |
7448 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7449 | T0_INTER_T1_USING_FACTOR (factor); |
7450 | } |
7451 | |
7452 | static void cc_t1_inter_t0_using_prima () |
7453 | { |
7454 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7455 | GR_COMBINE_FACTOR_ONE, |
7456 | GR_COMBINE_LOCAL_NONE, |
7457 | GR_COMBINE_OTHER_TEXTURE); |
7458 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7459 | T1_INTER_T0_USING_FACTOR (factor); |
7460 | } |
7461 | |
7462 | static void cc_t1_inter_t0_using_prim () |
7463 | { |
7464 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7465 | GR_COMBINE_FACTOR_ONE, |
7466 | GR_COMBINE_LOCAL_NONE, |
7467 | GR_COMBINE_OTHER_TEXTURE); |
7468 | T1_INTER_T0_USING_PRIM (); |
7469 | } |
7470 | |
7471 | static void cc_t0_inter_t1_using_env () |
7472 | { |
7473 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7474 | GR_COMBINE_FACTOR_ONE, |
7475 | GR_COMBINE_LOCAL_NONE, |
7476 | GR_COMBINE_OTHER_TEXTURE); |
7477 | T0_INTER_T1_USING_ENV (); |
7478 | } |
7479 | |
7480 | static void cc_t0_inter_t1_using_enva () |
7481 | { |
7482 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7483 | GR_COMBINE_FACTOR_ONE, |
7484 | GR_COMBINE_LOCAL_NONE, |
7485 | GR_COMBINE_OTHER_TEXTURE); |
7486 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
7487 | T0_INTER_T1_USING_FACTOR (factor); |
7488 | } |
7489 | |
7490 | static void cc__t0_inter_t1_using_prim__inter_env_using_enva () |
7491 | { |
7492 | // (t1-t0)*prim+t0, (env-cmb)*env_a+cmb |
7493 | if (!cmb.combine_ext) |
7494 | { |
7495 | cc_t0_inter_t1_using_prima (); |
7496 | return; |
7497 | } |
7498 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7499 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7500 | GR_CMBX_ZERO, 0, |
7501 | GR_CMBX_B, 0); |
7502 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
7503 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7504 | GR_CMBX_TMU_CCOLOR, 0, |
7505 | GR_CMBX_B, 0); |
7506 | cmb.tex_ccolor = rdp.prim_color; |
7507 | cmb.tex |= 3; |
7508 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
7509 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7510 | GR_CMBX_CONSTANT_ALPHA, 0, |
7511 | GR_CMBX_B, 0); |
7512 | cmb.ccolor = rdp.env_color; |
7513 | } |
7514 | |
7515 | static void cc__t0_inter_t1_using_shade__inter_env_using_enva () |
7516 | { |
7517 | // (t1-t0)*shade+t0, (env-cmb)*env_a+cmb |
7518 | if (!cmb.combine_ext) |
7519 | { |
7520 | cc_t0_inter_t1_using_enva (); |
7521 | return; |
7522 | } |
7523 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7524 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7525 | GR_CMBX_ZERO, 0, |
7526 | GR_CMBX_B, 0); |
7527 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
7528 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7529 | GR_CMBX_ITRGB, 0, |
7530 | GR_CMBX_B, 0); |
7531 | cmb.tex |= 3; |
7532 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
7533 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7534 | GR_CMBX_CONSTANT_ALPHA, 0, |
7535 | GR_CMBX_B, 0); |
7536 | cmb.ccolor = rdp.env_color; |
7537 | } |
7538 | |
7539 | //Added by Gonetz |
7540 | static void cc_t0_inter_t1_using_shade () |
7541 | { |
7542 | if (cmb.combine_ext) |
7543 | { |
7544 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7545 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7546 | GR_CMBX_ZERO, 0, |
7547 | GR_CMBX_B, 0); |
7548 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
7549 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7550 | GR_CMBX_ITRGB, 0, |
7551 | GR_CMBX_B, 0); |
7552 | cmb.tex |= 3; |
7553 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7554 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
7555 | GR_CMBX_ZERO, 1, |
7556 | GR_CMBX_ZERO, 0); |
7557 | } |
7558 | else |
7559 | { |
7560 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7561 | GR_COMBINE_FACTOR_ONE, |
7562 | GR_COMBINE_LOCAL_NONE, |
7563 | GR_COMBINE_OTHER_TEXTURE); |
7564 | T0_INTER_T1_USING_FACTOR (0x7F); |
7565 | } |
7566 | } |
7567 | |
7568 | //Added by Gonetz |
7569 | static void cc_t1_inter_t0_using_shade () |
7570 | { |
7571 | if (cmb.combine_ext) |
7572 | { |
7573 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7574 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7575 | GR_CMBX_ZERO, 0, |
7576 | GR_CMBX_B, 0); |
7577 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
7578 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7579 | GR_CMBX_ITRGB, 0, |
7580 | GR_CMBX_B, 0); |
7581 | cmb.tex |= 3; |
7582 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7583 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
7584 | GR_CMBX_ZERO, 1, |
7585 | GR_CMBX_ZERO, 0); |
7586 | } |
7587 | else |
7588 | { |
7589 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7590 | GR_COMBINE_FACTOR_ONE, |
7591 | GR_COMBINE_LOCAL_NONE, |
7592 | GR_COMBINE_OTHER_TEXTURE); |
7593 | T0_INTER_T1_USING_FACTOR (0x7F); |
7594 | } |
7595 | } |
7596 | |
7597 | //Added by Gonetz |
7598 | static void cc_t1_inter_t0_using_shadea () |
7599 | { |
7600 | if (cmb.combine_ext) |
7601 | { |
7602 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7603 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
7604 | GR_CMBX_ZERO, 1, |
7605 | GR_CMBX_ZERO, 0); |
7606 | } |
7607 | else |
7608 | { |
7609 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7610 | GR_COMBINE_FACTOR_ONE, |
7611 | GR_COMBINE_LOCAL_NONE, |
7612 | GR_COMBINE_OTHER_TEXTURE); |
7613 | } |
7614 | T1_INTER_T0_USING_SHADEA (); |
7615 | } |
7616 | |
7617 | //Added by Gonetz |
7618 | static void cc_t0_inter_t1_using_primlod () |
7619 | { |
7620 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7621 | GR_COMBINE_FACTOR_ONE, |
7622 | GR_COMBINE_LOCAL_NONE, |
7623 | GR_COMBINE_OTHER_TEXTURE); |
7624 | T0_INTER_T1_USING_FACTOR (lod_frac); |
7625 | } |
7626 | |
7627 | //Added by Gonetz |
7628 | static void cc_t1_inter_t0_using_primlod () |
7629 | { |
7630 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7631 | GR_COMBINE_FACTOR_ONE, |
7632 | GR_COMBINE_LOCAL_NONE, |
7633 | GR_COMBINE_OTHER_TEXTURE); |
7634 | T1_INTER_T0_USING_FACTOR (lod_frac); |
7635 | } |
7636 | |
7637 | //Added by Gonetz |
7638 | static void cc_t1_inter_t0_using_t0 () |
7639 | { |
7640 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7641 | GR_COMBINE_FACTOR_ONE, |
7642 | GR_COMBINE_LOCAL_NONE, |
7643 | GR_COMBINE_OTHER_TEXTURE); |
7644 | T1_INTER_T0_USING_T0 (); |
7645 | } |
7646 | |
7647 | //Added by Gonetz |
7648 | static void cc_t0_inter_t1_using_k5 () |
7649 | { |
7650 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7651 | GR_COMBINE_FACTOR_ONE, |
7652 | GR_COMBINE_LOCAL_NONE, |
7653 | GR_COMBINE_OTHER_TEXTURE); |
7654 | T0_INTER_T1_USING_FACTOR (rdp.K5); |
7655 | } |
7656 | |
7657 | static void cc_t0_inter_env_using_prim () |
7658 | { |
7659 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7660 | GR_COMBINE_FACTOR_ONE, |
7661 | GR_COMBINE_LOCAL_NONE, |
7662 | GR_COMBINE_OTHER_TEXTURE); |
7663 | USE_T0 (); |
7664 | |
7665 | MOD_0 (TMOD_TEX_INTER_COL_USING_COL1); |
7666 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
7667 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
7668 | } |
7669 | |
7670 | //Added by Gonetz |
7671 | static void cc_t0_inter_prim_using_primlod () |
7672 | { |
7673 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7674 | GR_COMBINE_FACTOR_ONE, |
7675 | GR_COMBINE_LOCAL_NONE, |
7676 | GR_COMBINE_OTHER_TEXTURE); |
7677 | USE_T0 (); |
7678 | |
7679 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
7680 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
7681 | MOD_0_FAC (lod_frac & 0xFF); |
7682 | } |
7683 | |
7684 | static void cc_t0_inter_shade_using_t0a () |
7685 | { |
7686 | if (cmb.combine_ext) |
7687 | { |
7688 | CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
7689 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
7690 | GR_CMBX_TEXTURE_ALPHA, 0, |
7691 | GR_CMBX_B, 0); |
7692 | USE_T0(); |
7693 | A_USE_T0(); |
7694 | } |
7695 | else |
7696 | { |
7697 | //(shade-t0)*t0a+t0 = t0*(1-t0a)+shade*t0a |
7698 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7699 | GR_COMBINE_FACTOR_ONE, |
7700 | GR_COMBINE_LOCAL_ITERATED, |
7701 | GR_COMBINE_OTHER_TEXTURE); |
7702 | rdp.best_tex = 1; |
7703 | cmb.tex = 1; |
7704 | cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
7705 | cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL_ALPHA; |
7706 | } |
7707 | } |
7708 | |
7709 | static void cc_t0_inter_shade_using_primlod () |
7710 | { |
7711 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7712 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7713 | GR_COMBINE_LOCAL_ITERATED, |
7714 | GR_COMBINE_OTHER_CONSTANT); |
7715 | CC_PRIMLOD(); |
7716 | cmb.ccolor=(~cmb.ccolor)&0xFFFFFF00; |
7717 | MULSHADE_PRIMLOD (); |
7718 | USE_T0 (); |
7719 | //(shade-t0)*primlod+t0 = t0*(1-primlod)+shade*primlod |
7720 | } |
7721 | |
7722 | //Added by Gonetz |
7723 | static void cc__env_inter_t0_using_primlod__mul_prim () |
7724 | { |
7725 | //((t0-env)*primlod+env)*prim = t0*prim*primlod+env*prim*(1-primlod); |
7726 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7727 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7728 | GR_COMBINE_LOCAL_ITERATED, |
7729 | GR_COMBINE_OTHER_CONSTANT); |
7730 | CC_PRIM (); |
7731 | cmb.ccolor = ((((cmb.ccolor & 0xFF000000) >> 24) * (lod_frac & 0xFF))<<24) | ((((cmb.ccolor & 0x00FF0000) >> 16) * (lod_frac & 0xFF))<<16) | ((((cmb.ccolor & 0x0000FF00) >> 8) * (lod_frac & 0xFF))<<8); |
7732 | SETSHADE_PRIM (); |
7733 | SETSHADE_ENV (); |
7734 | SETSHADE_1MPRIMLOD (); |
7735 | USE_T0 (); |
7736 | } |
7737 | |
7738 | //Added by Gonetz |
7739 | static void cc__env_inter_t0_using_shadea__mul_shade () |
7740 | { |
7741 | //((t0-env)*shadea+env)*shade |
7742 | if (!cmb.combine_ext) |
7743 | { |
7744 | cc_t0_mul_shade (); |
7745 | return; |
7746 | } |
7747 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
7748 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
7749 | GR_CMBX_ITALPHA, 0, |
7750 | GR_CMBX_B, 0); |
7751 | cmb.tex_ccolor = rdp.env_color; |
7752 | cmb.tex |= 1; |
7753 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7754 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
7755 | GR_CMBX_ITRGB, 0, |
7756 | GR_CMBX_ZERO, 0); |
7757 | } |
7758 | |
7759 | //Added by Gonetz |
7760 | static void cc_env_inter_prim_using_primlod () |
7761 | { |
7762 | if (rdp.prim_color&0xFFFFFF00) |
7763 | { |
7764 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7765 | GR_COMBINE_FACTOR_ONE, |
7766 | GR_COMBINE_LOCAL_CONSTANT, |
7767 | GR_COMBINE_OTHER_ITERATED); |
7768 | SETSHADE_PRIMSUBENV (); |
7769 | SETSHADE_PRIMLOD (); |
7770 | CC_ENV (); |
7771 | } |
7772 | else |
7773 | { |
7774 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
7775 | GR_COMBINE_FACTOR_ONE, |
7776 | GR_COMBINE_LOCAL_ITERATED, |
7777 | GR_COMBINE_OTHER_CONSTANT); |
7778 | SETSHADE_ENV (); |
7779 | SETSHADE_PRIMLOD (); |
7780 | CC_ENV (); |
7781 | } |
7782 | } |
7783 | |
7784 | static void cc_prim_inter__t0_mul_t1_add_env__using_shadea () |
7785 | { |
7786 | if (cmb.combine_ext) |
7787 | { |
7788 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7789 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7790 | GR_CMBX_ZERO, 0, |
7791 | GR_CMBX_B, 0); |
7792 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
7793 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
7794 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
7795 | GR_CMBX_B, 0); |
7796 | cmb.tex_ccolor = rdp.env_color; |
7797 | cmb.tex |= 3; |
7798 | } |
7799 | else |
7800 | { |
7801 | T0_MUL_T1 (); |
7802 | } |
7803 | // * not guaranteed to work if another iterated alpha is set |
7804 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
7805 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
7806 | GR_COMBINE_LOCAL_ITERATED, |
7807 | GR_COMBINE_OTHER_TEXTURE); |
7808 | SETSHADE_PRIM (); |
7809 | } |
7810 | |
7811 | static void cc_env_inter__prim_inter_shade_using_t0__using_shadea () |
7812 | { |
7813 | if (!cmb.combine_ext) |
7814 | { |
7815 | cc_shade_sub_prim_mul_t0_add_prim (); |
7816 | return; |
7817 | } |
7818 | T0CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
7819 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
7820 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
7821 | GR_CMBX_B, 0); |
7822 | cmb.tex_ccolor = rdp.prim_color; |
7823 | cmb.tex |= 1; |
7824 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7825 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_NEGATIVE_X, |
7826 | GR_CMBX_ITALPHA, 0, |
7827 | GR_CMBX_B, 0); |
7828 | CC_ENV (); |
7829 | } |
7830 | |
7831 | static void cc_shade_inter__prim_inter_shade_using_t0__using_shadea () |
7832 | { |
7833 | if (!cmb.combine_ext) |
7834 | { |
7835 | cc_shade_sub_prim_mul_t0_add_prim (); |
7836 | return; |
7837 | } |
7838 | T0CCMBEXT(GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
7839 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
7840 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
7841 | GR_CMBX_B, 0); |
7842 | cmb.tex_ccolor = rdp.prim_color; |
7843 | cmb.tex |= 1; |
7844 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7845 | GR_CMBX_ITRGB, GR_FUNC_MODE_NEGATIVE_X, |
7846 | GR_CMBX_ITALPHA, 0, |
7847 | GR_CMBX_B, 0); |
7848 | } |
7849 | |
7850 | // ** (A-B)*C+D*E ** |
7851 | static void cc_one_sub_env_mul_prim_add__t0_mul_env () //Aded by Gonetz |
7852 | { |
7853 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7854 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
7855 | GR_COMBINE_LOCAL_ITERATED, |
7856 | GR_COMBINE_OTHER_CONSTANT); |
7857 | CC_ENV (); |
7858 | SETSHADE_1MENV (); |
7859 | SETSHADE_PRIM (); |
7860 | USE_T0 (); |
7861 | } |
7862 | |
7863 | // ** ((A-B)*C+D)*E ** |
7864 | static void cc_t0_sub_env_mul_prim_mul_shade_add_prim_mul_shade () //Aded by Gonetz |
7865 | { |
7866 | //(t0-env)*shade+shade, (cmb-0)*prim+0 |
7867 | if (cmb.combine_ext) |
7868 | { |
7869 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
7870 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
7871 | GR_CMBX_ITRGB, 0, |
7872 | GR_CMBX_ZERO, 0); |
7873 | cmb.tex_ccolor = rdp.env_color; |
7874 | cmb.tex |= 1; |
7875 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7876 | GR_CMBX_ITRGB, GR_FUNC_MODE_X, |
7877 | GR_CMBX_CONSTANT_COLOR, 0, |
7878 | GR_CMBX_ZERO, 0); |
7879 | CC_PRIM (); |
7880 | } |
7881 | else |
7882 | { |
7883 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
7884 | GR_COMBINE_FACTOR_LOCAL, |
7885 | GR_COMBINE_LOCAL_ITERATED, |
7886 | GR_COMBINE_OTHER_TEXTURE); |
7887 | if (rdp.env_color & 0xFFFFFF00) |
7888 | { |
7889 | MOD_0 (TMOD_TEX_SUB_COL); |
7890 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
7891 | } |
7892 | MULSHADE_PRIM (); |
7893 | USE_T0 (); |
7894 | } |
7895 | } |
7896 | |
7897 | static void cc__t1_sub_prim_mul_t0_add_env__mul_shade () //Aded by Gonetz |
7898 | { |
7899 | // (t1-prim)*t0+env, (cmb-0)*shade+0 |
7900 | if (cmb.combine_ext) |
7901 | { |
7902 | T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7903 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
7904 | GR_CMBX_ZERO, 0, |
7905 | GR_CMBX_B, 0); |
7906 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_X, |
7907 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, |
7908 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
7909 | GR_CMBX_ZERO, 0); |
7910 | cmb.tex_ccolor = rdp.prim_color; |
7911 | cmb.tex |= 3; |
7912 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
7913 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
7914 | GR_CMBX_ITRGB, 0, |
7915 | GR_CMBX_ZERO, 0); |
7916 | CC_ENV (); |
7917 | } |
7918 | else |
7919 | { |
7920 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7921 | GR_COMBINE_FACTOR_LOCAL, |
7922 | GR_COMBINE_LOCAL_ITERATED, |
7923 | GR_COMBINE_OTHER_TEXTURE); |
7924 | if (rdp.prim_color & 0xFFFFFF00) |
7925 | { |
7926 | MOD_1 (TMOD_TEX_SUB_COL); |
7927 | MOD_1_COL (rdp.prim_color & 0xFFFFFF00); |
7928 | } |
7929 | T0_MUL_T1 (); |
7930 | } |
7931 | } |
7932 | |
7933 | // ** (A inter B using C) * D ** |
7934 | //Added by Gonetz |
7935 | static void cc__t0_inter_t1_using_prima__mul_prim () |
7936 | { |
7937 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7938 | GR_COMBINE_FACTOR_LOCAL, |
7939 | GR_COMBINE_LOCAL_CONSTANT, |
7940 | GR_COMBINE_OTHER_TEXTURE); |
7941 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7942 | T0_INTER_T1_USING_FACTOR (factor); |
7943 | CC_PRIM (); |
7944 | } |
7945 | |
7946 | //Added by Gonetz |
7947 | static void cc__t1_inter_t0_using_prima__mul_prim () |
7948 | { |
7949 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7950 | GR_COMBINE_FACTOR_LOCAL, |
7951 | GR_COMBINE_LOCAL_CONSTANT, |
7952 | GR_COMBINE_OTHER_TEXTURE); |
7953 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7954 | T1_INTER_T0_USING_FACTOR (factor); |
7955 | CC_PRIM (); |
7956 | } |
7957 | |
7958 | //Added by Gonetz |
7959 | static void cc__t0_inter_t1_using_prim__mul_shade () |
7960 | { |
7961 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7962 | GR_COMBINE_FACTOR_LOCAL, |
7963 | GR_COMBINE_LOCAL_ITERATED, |
7964 | GR_COMBINE_OTHER_TEXTURE); |
7965 | T0_INTER_T1_USING_PRIM (); |
7966 | } |
7967 | |
7968 | //Added by Gonetz |
7969 | static void cc__t0_inter_t1_using_prima__mul_shade () |
7970 | { |
7971 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7972 | GR_COMBINE_FACTOR_LOCAL, |
7973 | GR_COMBINE_LOCAL_ITERATED, |
7974 | GR_COMBINE_OTHER_TEXTURE); |
7975 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7976 | T0_INTER_T1_USING_FACTOR (factor); |
7977 | } |
7978 | |
7979 | //Added by Gonetz |
7980 | static void cc__t1_inter_t0_using_prima__mul_shade () |
7981 | { |
7982 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7983 | GR_COMBINE_FACTOR_LOCAL, |
7984 | GR_COMBINE_LOCAL_ITERATED, |
7985 | GR_COMBINE_OTHER_TEXTURE); |
7986 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
7987 | T1_INTER_T0_USING_FACTOR (factor); |
7988 | } |
7989 | |
7990 | static void cc__t0_inter_t1_using_env__mul_shade () |
7991 | { |
7992 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
7993 | GR_COMBINE_FACTOR_LOCAL, |
7994 | GR_COMBINE_LOCAL_ITERATED, |
7995 | GR_COMBINE_OTHER_TEXTURE); |
7996 | T0_INTER_T1_USING_ENV (); |
7997 | } |
7998 | |
7999 | static void cc__t0_inter_t1_using_enva__mul_shade () |
8000 | { |
8001 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8002 | GR_COMBINE_FACTOR_LOCAL, |
8003 | GR_COMBINE_LOCAL_ITERATED, |
8004 | GR_COMBINE_OTHER_TEXTURE); |
8005 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
8006 | T0_INTER_T1_USING_FACTOR (factor); |
8007 | } |
8008 | |
8009 | static void cc__t0_inter_t1_using_enva__mul_prim () |
8010 | { |
8011 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8012 | GR_COMBINE_FACTOR_LOCAL, |
8013 | GR_COMBINE_LOCAL_CONSTANT, |
8014 | GR_COMBINE_OTHER_TEXTURE); |
8015 | CC_PRIM (); |
8016 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
8017 | T0_INTER_T1_USING_FACTOR (factor); |
8018 | } |
8019 | |
8020 | //Added by Gonetz |
8021 | static void cc__t0_inter_t1_using_enva__mul_env () |
8022 | { |
8023 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8024 | GR_COMBINE_FACTOR_LOCAL, |
8025 | GR_COMBINE_LOCAL_CONSTANT, |
8026 | GR_COMBINE_OTHER_TEXTURE); |
8027 | CC_ENV (); |
8028 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
8029 | T0_INTER_T1_USING_FACTOR (factor); |
8030 | } |
8031 | |
8032 | //Added by Gonetz |
8033 | static void cc__t0_inter_t1_using_primlod__mul_prim () |
8034 | { |
8035 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8036 | GR_COMBINE_FACTOR_LOCAL, |
8037 | GR_COMBINE_LOCAL_CONSTANT, |
8038 | GR_COMBINE_OTHER_TEXTURE); |
8039 | CC_PRIM (); |
8040 | T0_INTER_T1_USING_FACTOR (lod_frac); |
8041 | } |
8042 | |
8043 | //Added by Gonetz |
8044 | static void cc__t0_inter_t1_using_primlod__mul_prima () |
8045 | { |
8046 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8047 | GR_COMBINE_FACTOR_LOCAL, |
8048 | GR_COMBINE_LOCAL_CONSTANT, |
8049 | GR_COMBINE_OTHER_TEXTURE); |
8050 | CC_PRIMA (); |
8051 | T0_INTER_T1_USING_FACTOR (lod_frac); |
8052 | } |
8053 | |
8054 | //Added by Gonetz |
8055 | static void cc__t1_mul_primlod_add_t0__mul_prim () |
8056 | { |
8057 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8058 | GR_COMBINE_FACTOR_LOCAL, |
8059 | GR_COMBINE_LOCAL_CONSTANT, |
8060 | GR_COMBINE_OTHER_TEXTURE); |
8061 | CC_PRIM (); |
8062 | T1_MUL_PRIMLOD_ADD_T0 (); |
8063 | } |
8064 | |
8065 | //Added by Gonetz |
8066 | static void cc__t0_inter_t1_using_primlod__mul_env () |
8067 | { |
8068 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8069 | GR_COMBINE_FACTOR_LOCAL, |
8070 | GR_COMBINE_LOCAL_CONSTANT, |
8071 | GR_COMBINE_OTHER_TEXTURE); |
8072 | CC_ENV (); |
8073 | T0_INTER_T1_USING_FACTOR (lod_frac); |
8074 | } |
8075 | |
8076 | //Added by Gonetz |
8077 | static void cc__t1_mul_primlod_add_t0__mul_env () |
8078 | { |
8079 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8080 | GR_COMBINE_FACTOR_LOCAL, |
8081 | GR_COMBINE_LOCAL_CONSTANT, |
8082 | GR_COMBINE_OTHER_TEXTURE); |
8083 | CC_ENV (); |
8084 | T1_MUL_PRIMLOD_ADD_T0 (); |
8085 | } |
8086 | |
8087 | //Added by Gonetz |
8088 | static void cc__t1_inter_t0_using_prim__mul_env () |
8089 | { |
8090 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8091 | GR_COMBINE_FACTOR_LOCAL, |
8092 | GR_COMBINE_LOCAL_CONSTANT, |
8093 | GR_COMBINE_OTHER_TEXTURE); |
8094 | CC_ENV (); |
8095 | T1_INTER_T0_USING_PRIM (); |
8096 | } |
8097 | |
8098 | static void cc__one_sub_shade_mul_t0_add_shade__mul_prim () |
8099 | { |
8100 | if (cmb.combine_ext) |
8101 | { |
8102 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8103 | GR_CMBX_ITRGB, GR_FUNC_MODE_ONE_MINUS_X, |
8104 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
8105 | GR_CMBX_B, 0); |
8106 | cmb.tex |= 1; |
8107 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8108 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
8109 | GR_CMBX_CONSTANT_COLOR, 0, |
8110 | GR_CMBX_ZERO, 0); |
8111 | CC_PRIM (); |
8112 | } |
8113 | else |
8114 | { |
8115 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8116 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
8117 | GR_COMBINE_LOCAL_ITERATED, |
8118 | GR_COMBINE_OTHER_TEXTURE); |
8119 | USE_T0 (); |
8120 | } |
8121 | } |
8122 | |
8123 | static void cc__one_sub_shade_mul_t0_add_shade__mul_env () |
8124 | { |
8125 | if (cmb.combine_ext) |
8126 | { |
8127 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8128 | GR_CMBX_ITRGB, GR_FUNC_MODE_ONE_MINUS_X, |
8129 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
8130 | GR_CMBX_B, 0); |
8131 | cmb.tex |= 1; |
8132 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8133 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
8134 | GR_CMBX_CONSTANT_COLOR, 0, |
8135 | GR_CMBX_ZERO, 0); |
8136 | CC_ENV (); |
8137 | } |
8138 | else |
8139 | { |
8140 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8141 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
8142 | GR_COMBINE_LOCAL_ITERATED, |
8143 | GR_COMBINE_OTHER_TEXTURE); |
8144 | USE_T0 (); |
8145 | } |
8146 | } |
8147 | |
8148 | static void cc__t1_inter_t0_using_prim__mul_shade () |
8149 | { |
8150 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8151 | GR_COMBINE_FACTOR_LOCAL, |
8152 | GR_COMBINE_LOCAL_ITERATED, |
8153 | GR_COMBINE_OTHER_TEXTURE); |
8154 | T1_INTER_T0_USING_PRIM (); |
8155 | } |
8156 | |
8157 | static void cc__t0_inter_t1_using_primlod__mul_shade () |
8158 | { |
8159 | //* |
8160 | if (rdp.LOD_en && (rdp.mipmap_level == 0) && !(settings.hacks&hack_Fifa98)) |
8161 | { |
8162 | cc_t0_mul_shade (); |
8163 | return; |
8164 | } |
8165 | //*/ |
8166 | if (settings.ucode == 7) |
8167 | lod_frac = rdp.prim_lodfrac; |
8168 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8169 | GR_COMBINE_FACTOR_LOCAL, |
8170 | GR_COMBINE_LOCAL_ITERATED, |
8171 | GR_COMBINE_OTHER_TEXTURE); |
8172 | T0_INTER_T1_USING_FACTOR (lod_frac); |
8173 | } |
8174 | |
8175 | static void cc__t1_inter_t0_using_primlod__mul_shade () |
8176 | { |
8177 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8178 | GR_COMBINE_FACTOR_LOCAL, |
8179 | GR_COMBINE_LOCAL_ITERATED, |
8180 | GR_COMBINE_OTHER_TEXTURE); |
8181 | T1_INTER_T0_USING_FACTOR (lod_frac); |
8182 | } |
8183 | |
8184 | static void cc__t0_inter_t1_using_half__mul_shade () |
8185 | { |
8186 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8187 | GR_COMBINE_FACTOR_LOCAL, |
8188 | GR_COMBINE_LOCAL_ITERATED, |
8189 | GR_COMBINE_OTHER_TEXTURE); |
8190 | T0_INTER_T1_USING_FACTOR (0x7F); |
8191 | } |
8192 | |
8193 | static void cc__t0_inter_t1_using_t0__mul_shade () |
8194 | { |
8195 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8196 | GR_COMBINE_FACTOR_LOCAL, |
8197 | GR_COMBINE_LOCAL_ITERATED, |
8198 | GR_COMBINE_OTHER_TEXTURE); |
8199 | T0_INTER_T1_USING_T0(); |
8200 | } |
8201 | |
8202 | static void cc__t0_inter_t1_using_t1a__mul_shade () |
8203 | { |
8204 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8205 | GR_COMBINE_FACTOR_LOCAL, |
8206 | GR_COMBINE_LOCAL_ITERATED, |
8207 | GR_COMBINE_OTHER_TEXTURE); |
8208 | T0_INTER_T1_USING_T1A(); |
8209 | } |
8210 | |
8211 | static void cc__t0_inter_t1_using_shadea__mul_shade () |
8212 | { |
8213 | if (cmb.combine_ext) |
8214 | { |
8215 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8216 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
8217 | GR_CMBX_ITRGB, 0, |
8218 | GR_CMBX_ZERO, 0); |
8219 | } |
8220 | else |
8221 | { |
8222 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8223 | GR_COMBINE_FACTOR_LOCAL, |
8224 | GR_COMBINE_LOCAL_ITERATED, |
8225 | GR_COMBINE_OTHER_TEXTURE); |
8226 | } |
8227 | T0_INTER_T1_USING_SHADEA (); |
8228 | } |
8229 | |
8230 | static void cc__t0_inter_t1_using_k5__mul_shade () |
8231 | { |
8232 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8233 | GR_COMBINE_FACTOR_LOCAL, |
8234 | GR_COMBINE_LOCAL_ITERATED, |
8235 | GR_COMBINE_OTHER_TEXTURE); |
8236 | T0_INTER_T1_USING_FACTOR (rdp.K5); |
8237 | } |
8238 | |
8239 | static void cc__t1_inter_t0_using_k5__mul_shade () |
8240 | { |
8241 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8242 | GR_COMBINE_FACTOR_LOCAL, |
8243 | GR_COMBINE_LOCAL_ITERATED, |
8244 | GR_COMBINE_OTHER_TEXTURE); |
8245 | T1_INTER_T0_USING_FACTOR (rdp.K5); |
8246 | } |
8247 | |
8248 | static void cc_t0_inter_prim_using_prima () |
8249 | { |
8250 | if (cmb.combine_ext) |
8251 | { |
8252 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
8253 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
8254 | GR_CMBX_TMU_CALPHA, 0, |
8255 | GR_CMBX_B, 0); |
8256 | cmb.tex_ccolor = rdp.prim_color; |
8257 | cmb.tex |= 1; |
8258 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8259 | GR_COMBINE_FACTOR_ONE, |
8260 | GR_COMBINE_LOCAL_NONE, |
8261 | GR_COMBINE_OTHER_TEXTURE); |
8262 | } |
8263 | else |
8264 | { |
8265 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8266 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
8267 | GR_COMBINE_LOCAL_ITERATED, |
8268 | GR_COMBINE_OTHER_CONSTANT); |
8269 | CC_1SUBPRIMA (); |
8270 | SETSHADE_PRIM (); |
8271 | SETSHADE_PRIMA (); |
8272 | USE_T0 (); |
8273 | } |
8274 | } |
8275 | |
8276 | static void cc__t0_inter_prim_using_t0a__mul_shade () |
8277 | { |
8278 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8279 | GR_COMBINE_FACTOR_LOCAL, |
8280 | GR_COMBINE_LOCAL_ITERATED, |
8281 | GR_COMBINE_OTHER_TEXTURE); |
8282 | MOD_0 (TMOD_TEX_INTER_COL_USING_TEXA); |
8283 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
8284 | USE_T0 (); |
8285 | } |
8286 | |
8287 | static void cc__env_inter_prim_using_t0__mul_prim () |
8288 | { |
8289 | // (prim-env)*t0+env, (cmb-0)*prim+0 |
8290 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8291 | GR_COMBINE_FACTOR_LOCAL, |
8292 | GR_COMBINE_LOCAL_CONSTANT, |
8293 | GR_COMBINE_OTHER_TEXTURE); |
8294 | CC_PRIM (); |
8295 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8296 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8297 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8298 | USE_T0 (); |
8299 | } |
8300 | |
8301 | static void cc__env_inter_prim_using_t0__mul_shade () |
8302 | { |
8303 | // amazing... mace actually uses the blender as part of the combine |
8304 | if ((rdp.othermode_l & 0xFFFF0000) == 0x03820000 || |
8305 | (rdp.othermode_l & 0xFFFF0000) == 0x00910000) |
8306 | { |
8307 | // blender: |
8308 | // 1ST = CLR_IN * A_IN + CLR_BL * 1MA |
8309 | // OUT = 1ST * 0 + 1ST * 1 |
8310 | |
8311 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8312 | GR_COMBINE_FACTOR_LOCAL, |
8313 | GR_COMBINE_LOCAL_ITERATED, |
8314 | GR_COMBINE_OTHER_TEXTURE); |
8315 | MOD_0 (TMOD_COL2_INTER__COL_INTER_COL1_USING_TEX__USING_TEXA); |
8316 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8317 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8318 | MOD_0_COL2 (rdp.blend_color & 0xFFFFFF00); |
8319 | USE_T0 (); |
8320 | return; |
8321 | } |
8322 | //(prim-env)*t0+env, (shade-0)*cmb+0 |
8323 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8324 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8325 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8326 | USE_T0 (); |
8327 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8328 | GR_COMBINE_FACTOR_LOCAL, |
8329 | GR_COMBINE_LOCAL_ITERATED, |
8330 | GR_COMBINE_OTHER_TEXTURE); |
8331 | } |
8332 | |
8333 | static void cc__env_inter_one_using_t0__mul_shade () |
8334 | { |
8335 | //(one-env)*t0+env, (cmb-0)*shade+0 |
8336 | if (cmb.combine_ext) |
8337 | { |
8338 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8339 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ONE_MINUS_X, |
8340 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
8341 | GR_CMBX_B, 0); |
8342 | cmb.tex_ccolor = rdp.env_color&0xFFFFFF00; |
8343 | cmb.tex |= 1; |
8344 | } |
8345 | else |
8346 | { |
8347 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8348 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8349 | MOD_0_COL1 (0xFFFFFF00); |
8350 | USE_T0 (); |
8351 | } |
8352 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8353 | GR_COMBINE_FACTOR_LOCAL, |
8354 | GR_COMBINE_LOCAL_ITERATED, |
8355 | GR_COMBINE_OTHER_TEXTURE); |
8356 | } |
8357 | |
8358 | static void cc_env_inter_one_using__one_sub_t0_mul_primlod () |
8359 | { |
8360 | if (cmb.combine_ext) |
8361 | { |
8362 | // (noise-t0)*primlod+0, (1-env)*cmb+env |
8363 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
8364 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
8365 | GR_CMBX_DETAIL_FACTOR, 0, |
8366 | GR_CMBX_ZERO, 0); |
8367 | cmb.tex_ccolor = rand()&0xFFFFFF00; |
8368 | cmb.tex |= 1; |
8369 | percent = (float)(lod_frac) / 255.0f; |
8370 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
8371 | cmb.tex |= 1; |
8372 | } |
8373 | else |
8374 | { |
8375 | USE_T0 (); |
8376 | } |
8377 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8378 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
8379 | GR_COMBINE_LOCAL_CONSTANT, |
8380 | GR_COMBINE_OTHER_TEXTURE); |
8381 | CC_ENV (); |
8382 | } |
8383 | |
8384 | static void cc__env_inter_prim_using_prima__mul_shade () |
8385 | { |
8386 | int primr = (rdp.prim_color>>24)&0xFF; |
8387 | int primg = (rdp.prim_color>>16)&0xFF; |
8388 | int primb = (rdp.prim_color>>8)&0xFF; |
8389 | int prima = rdp.prim_color&0xFF; |
8390 | int envr = (rdp.env_color>>24)&0xFF; |
8391 | int envg = (rdp.env_color>>16)&0xFF; |
8392 | int envb = (rdp.env_color>>8)&0xFF; |
8393 | int r = (((primr-envr)*prima)/256)+envr; |
8394 | int g = (((primg-envg)*prima)/256)+envg; |
8395 | int b = (((primb-envb)*prima)/256)+envb; |
8396 | cmb.ccolor = (r<<24) | (g<<16) | (b<<8); |
8397 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8398 | GR_COMBINE_FACTOR_LOCAL, |
8399 | GR_COMBINE_LOCAL_ITERATED, |
8400 | GR_COMBINE_OTHER_CONSTANT); |
8401 | } |
8402 | |
8403 | static void cc__prim_inter_t0_using_env__mul_shade () |
8404 | { |
8405 | // (t0-prim)*env+prim, (cmb-0)*shade+0 |
8406 | if ((rdp.prim_color & 0xFFFFFF00) == 0) |
8407 | { |
8408 | cc_t0_mul_env_mul_shade (); |
8409 | } |
8410 | else if (cmb.combine_ext) |
8411 | { |
8412 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
8413 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8414 | GR_CMBX_TMU_CCOLOR, 0, |
8415 | GR_CMBX_ZERO, 0); |
8416 | cmb.tex_ccolor = rdp.env_color & 0xFFFFFF00; |
8417 | cmb.tex |= 1; |
8418 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8419 | GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
8420 | GR_CMBX_ITRGB, 0, |
8421 | GR_CMBX_ZERO, 0); |
8422 | wxUint32 onesubenv = ~rdp.env_color; |
8423 | CC_C1MULC2(rdp.prim_color, onesubenv); |
8424 | } |
8425 | else |
8426 | { |
8427 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8428 | GR_COMBINE_FACTOR_LOCAL, |
8429 | GR_COMBINE_LOCAL_ITERATED, |
8430 | GR_COMBINE_OTHER_TEXTURE); |
8431 | MOD_0 (TMOD_COL_INTER_TEX_USING_COL1); |
8432 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
8433 | MOD_0_COL1 (rdp.env_color & 0xFFFFFF00); |
8434 | USE_T0 (); |
8435 | } |
8436 | } |
8437 | |
8438 | static void cc__one_inter_prim_using_t1__mul_shade () |
8439 | { |
8440 | if (cmb.combine_ext) |
8441 | { |
8442 | if ((settings.hacks&hack_BAR) && rdp.cur_tile == 1) |
8443 | { |
8444 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
8445 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
8446 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
8447 | GR_CMBX_ZERO, 1); |
8448 | cmb.tex |= 1; |
8449 | } |
8450 | else |
8451 | { |
8452 | T1CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
8453 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
8454 | GR_CMBX_LOCAL_TEXTURE_RGB, 0, |
8455 | GR_CMBX_ZERO, 1); |
8456 | T0CCMBEXT(GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8457 | GR_CMBX_OTHER_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8458 | GR_CMBX_ZERO, 0, |
8459 | GR_CMBX_B, 0); |
8460 | cmb.tex |= 2; |
8461 | } |
8462 | cmb.tex_ccolor = rdp.prim_color | 0xFF; |
8463 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8464 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
8465 | GR_CMBX_ITRGB, 0, |
8466 | GR_CMBX_ZERO, 0); |
8467 | } |
8468 | else |
8469 | { |
8470 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8471 | GR_COMBINE_FACTOR_LOCAL, |
8472 | GR_COMBINE_LOCAL_ITERATED, |
8473 | GR_COMBINE_OTHER_TEXTURE); |
8474 | if ((settings.hacks&hack_BAR) && rdp.cur_tile == 1) |
8475 | { |
8476 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8477 | MOD_0_COL (0xFFFFFF00); |
8478 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8479 | USE_T0 (); |
8480 | } |
8481 | else |
8482 | { |
8483 | MOD_1 (TMOD_COL_INTER_COL1_USING_TEX); |
8484 | MOD_1_COL (0xFFFFFF00); |
8485 | MOD_1_COL1 (rdp.prim_color & 0xFFFFFF00); |
8486 | USE_T1 (); |
8487 | } |
8488 | } |
8489 | } |
8490 | |
8491 | static void cc_prim_sub__prim_sub_t0_mul_prima__mul_shade () |
8492 | { |
8493 | // (prim-t0)*prim_a+0, (prim-cmb)*shade+0 |
8494 | if (cmb.combine_ext) |
8495 | { |
8496 | T0CCMBEXT(GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_X, |
8497 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
8498 | GR_CMBX_TMU_CALPHA, 0, |
8499 | GR_CMBX_ZERO, 0); |
8500 | cmb.tex_ccolor = rdp.prim_color; |
8501 | cmb.tex |= 1; |
8502 | CCMBEXT(GR_CMBX_CONSTANT_COLOR, GR_FUNC_MODE_X, |
8503 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_NEGATIVE_X, |
8504 | GR_CMBX_ITRGB, 0, |
8505 | GR_CMBX_ZERO, 0); |
8506 | CC_PRIM(); |
8507 | } |
8508 | else |
8509 | { |
8510 | if ((rdp.prim_color & 0xFFFFFF00) == 0) |
8511 | { |
8512 | cc_t0_mul_prima_mul_shade (); |
8513 | return; |
8514 | } |
8515 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8516 | GR_COMBINE_FACTOR_LOCAL, |
8517 | GR_COMBINE_LOCAL_ITERATED, |
8518 | GR_COMBINE_OTHER_TEXTURE); |
8519 | MOD_0 (TMOD_COL_INTER_TEX_USING_COL1); |
8520 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
8521 | wxUint8 prima = (wxUint8)(rdp.prim_color&0xFF); |
8522 | MOD_0_COL1 ((prima<<24)|(prima<<16)|(prima<<8)); |
8523 | USE_T0 (); |
8524 | } |
8525 | } |
8526 | |
8527 | static void cc__prim_inter_env_using_t0__mul_shade () |
8528 | { |
8529 | // (env-prim)*t0+prim, (cmb-0)*shade+0 |
8530 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8531 | GR_COMBINE_FACTOR_LOCAL, |
8532 | GR_COMBINE_LOCAL_ITERATED, |
8533 | GR_COMBINE_OTHER_TEXTURE); |
8534 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8535 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
8536 | MOD_0_COL1 (rdp.env_color & 0xFFFFFF00); |
8537 | USE_T0 (); |
8538 | } |
8539 | |
8540 | static void cc__prim_inter_one_using_env__mul_shade () |
8541 | { |
8542 | // (one-prim)*env+prim, (cmb-0)*shade+0 |
8543 | if ((rdp.prim_color&0xFFFFFF00) == 0) |
8544 | { |
8545 | cc_env_mul_shade (); |
8546 | return; |
8547 | } |
8548 | if ((rdp.env_color&0xFFFFFF00) == 0) |
8549 | { |
8550 | cc_prim_mul_shade (); |
8551 | return; |
8552 | } |
8553 | if ((rdp.prim_color&0xFFFFFF00) == 0xFFFFFF00 || (rdp.env_color&0xFFFFFF00) == 0xFFFFFF00) |
8554 | { |
8555 | cc_shade (); |
8556 | return; |
8557 | } |
8558 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8559 | GR_COMBINE_FACTOR_LOCAL, |
8560 | GR_COMBINE_LOCAL_ITERATED, |
8561 | GR_COMBINE_OTHER_CONSTANT); |
8562 | CC_1SUBPRIM (); |
8563 | CC_C1MULC2 (cmb.ccolor, rdp.env_color); |
8564 | cmb.ccolor=(wxUint8)( min(255, (int)((cmb.ccolor & 0xFF000000) >> 24) + (int)((rdp.prim_color & 0xFF000000) >> 24)) ) << 24 | |
8565 | (wxUint8)( min(255, (int)((cmb.ccolor & 0x00FF0000) >> 16) + (int)((rdp.prim_color & 0x00FF0000) >> 16)) ) << 16 | |
8566 | (wxUint8)( min(255, (int)((cmb.ccolor & 0x0000FF00) >> 8) + (int)((rdp.prim_color & 0x0000FF00) >> 8)) ) << 8 ; |
8567 | } |
8568 | |
8569 | static void cc__env_inter_prim_using_t0a__mul_t0 () |
8570 | { |
8571 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8572 | GR_COMBINE_FACTOR_ONE, |
8573 | GR_COMBINE_LOCAL_NONE, |
8574 | GR_COMBINE_OTHER_TEXTURE); |
8575 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEXA__MUL_TEX); |
8576 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8577 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8578 | USE_T0 (); |
8579 | } |
8580 | |
8581 | static void cc__env_inter_prim_using_t0a__mul_prim () |
8582 | { |
8583 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8584 | GR_COMBINE_FACTOR_LOCAL, |
8585 | GR_COMBINE_LOCAL_CONSTANT, |
8586 | GR_COMBINE_OTHER_TEXTURE); |
8587 | CC_PRIM (); |
8588 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEXA); |
8589 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8590 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8591 | USE_T0 (); |
8592 | } |
8593 | |
8594 | static void cc__env_inter_prim_using__t0_sub_shade_mul_primlod_add_env () |
8595 | { |
8596 | // (t0-shade)*lodf+env, (prim-env)*cmb+env |
8597 | if (cmb.combine_ext) |
8598 | { |
8599 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
8600 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
8601 | GR_CMBX_DETAIL_FACTOR, 0, |
8602 | GR_CMBX_B, 0); |
8603 | cmb.tex_ccolor = rdp.env_color; |
8604 | percent = (float)lod_frac / 255.0f; |
8605 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
8606 | cmb.tex |= 1; |
8607 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
8608 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
8609 | GR_COMBINE_LOCAL_ITERATED, |
8610 | GR_COMBINE_OTHER_CONSTANT); |
8611 | CC_PRIM (); |
8612 | SETSHADE_ENV (); |
8613 | } |
8614 | else |
8615 | { |
8616 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
8617 | GR_COMBINE_FACTOR_ONE,//TEXTURE_RGB, |
8618 | GR_COMBINE_LOCAL_ITERATED, |
8619 | GR_COMBINE_OTHER_TEXTURE);//CONSTANT); |
8620 | MOD_0 (TMOD_COL_INTER_COL1_USING_TEX); |
8621 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8622 | MOD_0_COL1 (rdp.prim_color & 0xFFFFFF00); |
8623 | USE_T0 (); |
8624 | MULSHADE_PRIMSUBENV (); |
8625 | MULSHADE_PRIMLOD(); |
8626 | SUBSHADE_PRIMSUBENV (); |
8627 | } |
8628 | } |
8629 | |
8630 | static void cc__prim_inter_t0_using_t0__mul_shade () |
8631 | { |
8632 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8633 | GR_COMBINE_FACTOR_LOCAL, |
8634 | GR_COMBINE_LOCAL_ITERATED, |
8635 | GR_COMBINE_OTHER_TEXTURE); |
8636 | MOD_0 (TMOD_COL_INTER_TEX_USING_TEX); |
8637 | MOD_0_COL (rdp.prim_color & 0xFFFFFF00); |
8638 | USE_T0 (); |
8639 | } |
8640 | |
8641 | static void cc__env_inter_t0_using_t0a__mul_shade () |
8642 | { |
8643 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8644 | GR_COMBINE_FACTOR_LOCAL, |
8645 | GR_COMBINE_LOCAL_ITERATED, |
8646 | GR_COMBINE_OTHER_TEXTURE); |
8647 | MOD_0 (TMOD_COL_INTER_TEX_USING_TEXA); |
8648 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8649 | USE_T0 (); |
8650 | } |
8651 | |
8652 | static void cc__env_inter_t0_using_prima__mul_shade () |
8653 | { |
8654 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8655 | GR_COMBINE_FACTOR_LOCAL, |
8656 | GR_COMBINE_LOCAL_ITERATED, |
8657 | GR_COMBINE_OTHER_TEXTURE); |
8658 | MOD_0 (TMOD_COL_INTER_TEX_USING_COL1); |
8659 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8660 | wxUint32 prima = rdp.prim_color & 0xFF; |
8661 | MOD_0_COL1 ((prima<<24)|(prima|16)|(prima<<8)); |
8662 | USE_T0 (); |
8663 | } |
8664 | |
8665 | static void cc_shade_mul_prima () |
8666 | { |
8667 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8668 | GR_COMBINE_FACTOR_ONE, |
8669 | GR_COMBINE_LOCAL_NONE, |
8670 | GR_COMBINE_OTHER_ITERATED); |
8671 | MULSHADE_PRIMA (); |
8672 | } |
8673 | |
8674 | static void cc_shade_mul_shadea () |
8675 | { |
8676 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8677 | GR_COMBINE_FACTOR_ONE, |
8678 | GR_COMBINE_LOCAL_NONE, |
8679 | GR_COMBINE_OTHER_ITERATED); |
8680 | MULSHADE_SHADEA (); |
8681 | } |
8682 | |
8683 | static void cc__t0_mul_shade__inter_env_using_enva () |
8684 | { |
8685 | // (t0-0)*shade+0, (env-cmb)*env_a+cmb ** INC ** |
8686 | wxUint32 enva = rdp.env_color&0xFF; |
8687 | if (enva == 0xFF) |
8688 | cc_env (); |
8689 | else if (enva == 0) |
8690 | cc_t0_mul_shade (); |
8691 | else if (cmb.combine_ext) |
8692 | { |
8693 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
8694 | GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_ZERO, |
8695 | GR_CMBX_ITRGB, 0, |
8696 | GR_CMBX_B, 0); |
8697 | cmb.tex |= 1; |
8698 | CCMBEXT(GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_X, |
8699 | GR_CMBX_ITRGB, GR_FUNC_MODE_ZERO, |
8700 | GR_CMBX_ZERO, 1, |
8701 | GR_CMBX_ZERO, 0); |
8702 | MULSHADE_1MENVA (); |
8703 | CC_COLMULBYTE(rdp.env_color, (rdp.env_color&0xFF)); |
8704 | cmb.tex_ccolor = cmb.ccolor; |
8705 | } |
8706 | else |
8707 | { |
8708 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8709 | GR_COMBINE_FACTOR_LOCAL, |
8710 | GR_COMBINE_LOCAL_ITERATED, |
8711 | GR_COMBINE_OTHER_TEXTURE); |
8712 | INTERSHADE_2 (rdp.env_color & 0xFFFFFF00, rdp.env_color & 0xFF); |
8713 | USE_T0 (); |
8714 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
8715 | MOD_0_COL (rdp.env_color & 0xFFFFFF00); |
8716 | MOD_0_FAC (rdp.env_color & 0xFF); |
8717 | } |
8718 | } |
8719 | |
8720 | static void cc__t0_mul_shade__inter_one_using_enva () |
8721 | { |
8722 | CCMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8723 | GR_COMBINE_FACTOR_TEXTURE_RGB, |
8724 | GR_COMBINE_LOCAL_CONSTANT, |
8725 | GR_COMBINE_OTHER_ITERATED); |
8726 | CC_ENVA (); |
8727 | MULSHADE_1MENVA (); |
8728 | USE_T0 (); |
8729 | } |
8730 | |
8731 | static void cc__t0_mul_shade__inter_one_using_shadea () |
8732 | { |
8733 | if (cmb.combine_ext) |
8734 | { |
8735 | T0CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_ZERO, |
8736 | GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, |
8737 | GR_CMBX_ITRGB, 0, |
8738 | GR_CMBX_ZERO, 0); |
8739 | cmb.tex |= 1; |
8740 | CCMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_X, |
8741 | GR_CMBX_TEXTURE_RGB, GR_FUNC_MODE_ONE_MINUS_X, |
8742 | GR_CMBX_ITALPHA, 0, |
8743 | GR_CMBX_B, 0); |
8744 | } |
8745 | else |
8746 | { |
8747 | cc_t0_mul_shade (); |
8748 | } |
8749 | } |
8750 | |
8751 | static void cc__prim_mul_shade__inter_env_using_enva () |
8752 | { |
8753 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
8754 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
8755 | GR_COMBINE_LOCAL_ITERATED, |
8756 | GR_COMBINE_OTHER_CONSTANT); |
8757 | CC_ENV (); |
8758 | MULSHADE_PRIM (); |
8759 | SETSHADE_A_ENV (); |
8760 | } |
8761 | |
8762 | static void cc__prim_mul_shade__inter_env_using__prim_mul_shade_alpha () |
8763 | { |
8764 | CCMB (GR_COMBINE_FUNCTION_BLEND, |
8765 | GR_COMBINE_FACTOR_LOCAL_ALPHA, |
8766 | GR_COMBINE_LOCAL_ITERATED, |
8767 | GR_COMBINE_OTHER_CONSTANT); |
8768 | CC_ENV (); |
8769 | MULSHADE_PRIM (); |
8770 | MULSHADE_A_PRIM (); |
8771 | } |
8772 | |
8773 | |
8774 | //**************************************************************** |
8775 | |
8776 | static void ac_one () |
8777 | { |
8778 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8779 | GR_COMBINE_FACTOR_NONE, |
8780 | GR_COMBINE_LOCAL_CONSTANT, |
8781 | GR_COMBINE_OTHER_NONE); |
8782 | cmb.ccolor |= 0xFF; |
8783 | } |
8784 | |
8785 | static void ac_t0 () |
8786 | { |
8787 | if ((rdp.othermode_l & 0x4000) && (rdp.cycle_mode < 2)) |
8788 | { |
8789 | wxUint32 blend_mode = (rdp.othermode_l >> 16); |
8790 | if (blend_mode == 0x0550) |
8791 | { |
8792 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8793 | GR_COMBINE_FACTOR_LOCAL, |
8794 | GR_COMBINE_LOCAL_CONSTANT, |
8795 | GR_COMBINE_OTHER_TEXTURE); |
8796 | CA(rdp.fog_color); |
8797 | } |
8798 | else if (blend_mode == 0x55f0) //cmem*afog + cfog*1ma |
8799 | { |
8800 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8801 | GR_COMBINE_FACTOR_ONE, |
8802 | GR_COMBINE_LOCAL_CONSTANT, |
8803 | GR_COMBINE_OTHER_NONE); |
8804 | CA(~rdp.fog_color); |
8805 | } |
8806 | else |
8807 | { |
8808 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8809 | GR_COMBINE_FACTOR_ONE, |
8810 | GR_COMBINE_LOCAL_NONE, |
8811 | GR_COMBINE_OTHER_TEXTURE); |
8812 | } |
8813 | } |
8814 | else |
8815 | { |
8816 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8817 | GR_COMBINE_FACTOR_ONE, |
8818 | GR_COMBINE_LOCAL_NONE, |
8819 | GR_COMBINE_OTHER_TEXTURE); |
8820 | } |
8821 | A_USE_T0 (); |
8822 | } |
8823 | |
8824 | static void ac_zero () |
8825 | { |
8826 | if (cmb.tex > 0) |
8827 | { |
8828 | ac_t0 (); |
8829 | return; |
8830 | } |
8831 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8832 | GR_COMBINE_FACTOR_NONE, |
8833 | GR_COMBINE_LOCAL_CONSTANT, |
8834 | GR_COMBINE_OTHER_NONE); |
8835 | cmb.ccolor &= 0xFFFFFF00; |
8836 | } |
8837 | |
8838 | static void ac_t1 () |
8839 | { |
8840 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8841 | GR_COMBINE_FACTOR_ONE, |
8842 | GR_COMBINE_LOCAL_NONE, |
8843 | GR_COMBINE_OTHER_TEXTURE); |
8844 | if ((settings.hacks&hack_BAR) && rdp.tiles[rdp.cur_tile].format == 3) |
8845 | A_USE_T0 (); |
8846 | else |
8847 | A_USE_T1 (); |
8848 | } |
8849 | |
8850 | static void ac_prim () |
8851 | { |
8852 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8853 | GR_COMBINE_FACTOR_NONE, |
8854 | GR_COMBINE_LOCAL_CONSTANT, |
8855 | GR_COMBINE_OTHER_NONE); |
8856 | CA_PRIM (); |
8857 | } |
8858 | |
8859 | static void ac_primlod () |
8860 | { |
8861 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8862 | GR_COMBINE_FACTOR_NONE, |
8863 | GR_COMBINE_LOCAL_CONSTANT, |
8864 | GR_COMBINE_OTHER_NONE); |
8865 | CA_PRIMLOD (); |
8866 | } |
8867 | |
8868 | static void ac_one_sub_t0 () |
8869 | { |
8870 | ACMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
8871 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
8872 | GR_COMBINE_LOCAL_CONSTANT, |
8873 | GR_COMBINE_OTHER_NONE); |
8874 | CA (0xFF); |
8875 | A_USE_T0 (); |
8876 | } |
8877 | |
8878 | static void ac_one_sub_prim () |
8879 | { |
8880 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8881 | GR_COMBINE_FACTOR_NONE, |
8882 | GR_COMBINE_LOCAL_CONSTANT, |
8883 | GR_COMBINE_OTHER_NONE); |
8884 | CA_INVPRIM (); |
8885 | } |
8886 | |
8887 | static void ac_env () |
8888 | { |
8889 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8890 | GR_COMBINE_FACTOR_NONE, |
8891 | GR_COMBINE_LOCAL_CONSTANT, |
8892 | GR_COMBINE_OTHER_NONE); |
8893 | CA_ENV (); |
8894 | } |
8895 | |
8896 | static void ac_shade () |
8897 | { |
8898 | ACMB (GR_COMBINE_FUNCTION_LOCAL, |
8899 | GR_COMBINE_FACTOR_NONE, |
8900 | GR_COMBINE_LOCAL_ITERATED, |
8901 | GR_COMBINE_OTHER_NONE); |
8902 | } |
8903 | |
8904 | // ** A+B ** |
8905 | static void ac_t0_add_t1 () //Aded by Gonetz |
8906 | { |
8907 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8908 | GR_COMBINE_FACTOR_ONE, |
8909 | GR_COMBINE_LOCAL_NONE, |
8910 | GR_COMBINE_OTHER_TEXTURE); |
8911 | A_T0_ADD_T1 (); |
8912 | } |
8913 | |
8914 | static void ac__t0_mul_prim__add__t1_mul_primlod () //Aded by Gonetz |
8915 | { |
8916 | if (lod_frac == 0) |
8917 | { |
8918 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8919 | GR_COMBINE_FACTOR_LOCAL, |
8920 | GR_COMBINE_LOCAL_CONSTANT, |
8921 | GR_COMBINE_OTHER_TEXTURE); |
8922 | CA_PRIM (); |
8923 | A_USE_T0 (); |
8924 | } |
8925 | else if ((rdp.prim_color&0xFF) == 0) |
8926 | { |
8927 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8928 | GR_COMBINE_FACTOR_LOCAL, |
8929 | GR_COMBINE_LOCAL_CONSTANT, |
8930 | GR_COMBINE_OTHER_TEXTURE); |
8931 | CA_PRIMLOD (); |
8932 | A_USE_T1 (); |
8933 | } |
8934 | else if ((rdp.prim_color&0xFF) == 0xFF) |
8935 | { |
8936 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8937 | GR_COMBINE_FACTOR_ONE, |
8938 | GR_COMBINE_LOCAL_NONE, |
8939 | GR_COMBINE_OTHER_TEXTURE); |
8940 | A_T1_MUL_PRIMLOD_ADD_T0(); |
8941 | } |
8942 | else |
8943 | { |
8944 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
8945 | GR_COMBINE_FACTOR_LOCAL, |
8946 | GR_COMBINE_LOCAL_CONSTANT, |
8947 | GR_COMBINE_OTHER_TEXTURE); |
8948 | CA_PRIM (); |
8949 | A_T0_ADD_T1 (); |
8950 | } |
8951 | } |
8952 | |
8953 | static void ac_t0_add_prim () //Aded by Gonetz |
8954 | { |
8955 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8956 | GR_COMBINE_FACTOR_ONE, |
8957 | GR_COMBINE_LOCAL_CONSTANT, |
8958 | GR_COMBINE_OTHER_TEXTURE); |
8959 | CA_PRIM (); |
8960 | A_USE_T0 (); |
8961 | } |
8962 | |
8963 | static void ac_t0_add_env () //Aded by Gonetz |
8964 | { |
8965 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8966 | GR_COMBINE_FACTOR_ONE, |
8967 | GR_COMBINE_LOCAL_CONSTANT, |
8968 | GR_COMBINE_OTHER_TEXTURE); |
8969 | CA_ENV (); |
8970 | A_USE_T0 (); |
8971 | } |
8972 | |
8973 | static void ac_t1_add_env () //Added by Gonetz |
8974 | { |
8975 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8976 | GR_COMBINE_FACTOR_ONE, |
8977 | GR_COMBINE_LOCAL_CONSTANT, |
8978 | GR_COMBINE_OTHER_TEXTURE); |
8979 | CA_ENV (); |
8980 | A_USE_T1 (); |
8981 | } |
8982 | |
8983 | static void ac__t0_add_t1__add_prim () //Aded by Gonetz |
8984 | { |
8985 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8986 | GR_COMBINE_FACTOR_ONE, |
8987 | GR_COMBINE_LOCAL_CONSTANT, |
8988 | GR_COMBINE_OTHER_TEXTURE); |
8989 | CA_PRIM (); |
8990 | A_T0_ADD_T1 (); |
8991 | } |
8992 | |
8993 | static void ac_prim_add_shade () //Aded by Gonetz |
8994 | { |
8995 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
8996 | GR_COMBINE_FACTOR_ONE, |
8997 | GR_COMBINE_LOCAL_ITERATED, |
8998 | GR_COMBINE_OTHER_CONSTANT); |
8999 | CA_PRIM (); |
9000 | } |
9001 | |
9002 | static void ac_env_add_shade () //Aded by Gonetz |
9003 | { |
9004 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9005 | GR_COMBINE_FACTOR_ONE, |
9006 | GR_COMBINE_LOCAL_ITERATED, |
9007 | GR_COMBINE_OTHER_CONSTANT); |
9008 | CA_ENV (); |
9009 | } |
9010 | |
9011 | // ** A*B ** |
9012 | static void ac_t0_mul_t0 () //Added by Gonetz |
9013 | { |
9014 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9015 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9016 | GR_COMBINE_LOCAL_NONE, |
9017 | GR_COMBINE_OTHER_TEXTURE); |
9018 | A_USE_T0 (); |
9019 | } |
9020 | |
9021 | static void ac_t0_mul_t1 () |
9022 | { |
9023 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9024 | GR_COMBINE_FACTOR_ONE, |
9025 | GR_COMBINE_LOCAL_NONE, |
9026 | GR_COMBINE_OTHER_TEXTURE); |
9027 | A_T0_MUL_T1 (); |
9028 | } |
9029 | |
9030 | static void ac_t0_mul_t1_add_t1 () |
9031 | { |
9032 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9033 | GR_COMBINE_FACTOR_ONE, |
9034 | GR_COMBINE_LOCAL_NONE, |
9035 | GR_COMBINE_OTHER_TEXTURE); |
9036 | if (cmb.combine_ext) |
9037 | { |
9038 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9039 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9040 | GR_CMBX_ZERO, 0, |
9041 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9042 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9043 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9044 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
9045 | GR_CMBX_B, 0); |
9046 | cmb.tex |= 3; |
9047 | } |
9048 | else |
9049 | { |
9050 | A_T0_MUL_T1 (); |
9051 | } |
9052 | } |
9053 | |
9054 | static void ac_t0_mul_t1_add_prim () |
9055 | { |
9056 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9057 | GR_COMBINE_FACTOR_ONE, |
9058 | GR_COMBINE_LOCAL_CONSTANT, |
9059 | GR_COMBINE_OTHER_TEXTURE); |
9060 | CA_PRIM (); |
9061 | A_T0_MUL_T1 (); |
9062 | } |
9063 | |
9064 | static void ac_t0_mul_prim () |
9065 | { |
9066 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9067 | GR_COMBINE_FACTOR_LOCAL, |
9068 | GR_COMBINE_LOCAL_CONSTANT, |
9069 | GR_COMBINE_OTHER_TEXTURE); |
9070 | CA_PRIM (); |
9071 | A_USE_T0 (); |
9072 | } |
9073 | |
9074 | static void ac_t0_mul_prim_mul_primlod () |
9075 | { |
9076 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9077 | GR_COMBINE_FACTOR_LOCAL, |
9078 | GR_COMBINE_LOCAL_CONSTANT, |
9079 | GR_COMBINE_OTHER_TEXTURE); |
9080 | CA_PRIM_MUL_PRIMLOD (); |
9081 | A_USE_T0 (); |
9082 | } |
9083 | |
9084 | static void ac_t1_mul_prim () |
9085 | { |
9086 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9087 | GR_COMBINE_FACTOR_LOCAL, |
9088 | GR_COMBINE_LOCAL_CONSTANT, |
9089 | GR_COMBINE_OTHER_TEXTURE); |
9090 | CA_PRIM (); |
9091 | if (rdp.cycle_mode == 0) |
9092 | A_USE_T0 (); |
9093 | else |
9094 | A_USE_T1 (); |
9095 | } |
9096 | |
9097 | //Added by Gonetz |
9098 | static void ac__t1_sub_one_mul_primlod_add_t0__mul_prim () |
9099 | { |
9100 | if (cmb.combine_ext) |
9101 | { |
9102 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9103 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9104 | GR_CMBX_ZERO, 0, |
9105 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9106 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9107 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9108 | GR_CMBX_DETAIL_FACTOR, 0, |
9109 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9110 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
9111 | percent = (float)lod_frac / 255.0f; |
9112 | } |
9113 | else |
9114 | { |
9115 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
9116 | cmb.tmu1_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
9117 | percent = (255 - lod_frac) / 255.0f; |
9118 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA; |
9119 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA; |
9120 | } |
9121 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9122 | GR_COMBINE_FACTOR_LOCAL, |
9123 | GR_COMBINE_LOCAL_CONSTANT, |
9124 | GR_COMBINE_OTHER_TEXTURE); |
9125 | CA_PRIM (); |
9126 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9127 | cmb.tex |= 3; |
9128 | } |
9129 | |
9130 | static void ac__t0_sub_t1_mul_enva_add_t0__mul_prim () |
9131 | { |
9132 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9133 | GR_COMBINE_FACTOR_LOCAL, |
9134 | GR_COMBINE_LOCAL_CONSTANT, |
9135 | GR_COMBINE_OTHER_TEXTURE); |
9136 | CA_PRIM (); |
9137 | if (cmb.combine_ext) |
9138 | { |
9139 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9140 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9141 | GR_CMBX_ZERO, 0, |
9142 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9143 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9144 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9145 | GR_CMBX_TMU_CALPHA, 0, |
9146 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9147 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
9148 | cmb.tex |= 3; |
9149 | } |
9150 | else |
9151 | { |
9152 | A_T0_MUL_T1 (); |
9153 | } |
9154 | } |
9155 | |
9156 | static void ac__t0_sub_one_mul_enva_add_t0__mul_prim () |
9157 | { |
9158 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9159 | GR_COMBINE_FACTOR_LOCAL, |
9160 | GR_COMBINE_LOCAL_CONSTANT, |
9161 | GR_COMBINE_OTHER_TEXTURE); |
9162 | CA_PRIM (); |
9163 | if (cmb.combine_ext) |
9164 | { |
9165 | T0ACMBEXT(GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9166 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9167 | GR_CMBX_TMU_CALPHA, 0, |
9168 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9169 | SETSHADE_A(0xFF); |
9170 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
9171 | cmb.tex |= 1; |
9172 | } |
9173 | else |
9174 | { |
9175 | A_USE_T0 (); |
9176 | } |
9177 | } |
9178 | |
9179 | static void ac__t0_sub_t1_mul_primlod_add_t0__mul_prim () |
9180 | { |
9181 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9182 | GR_COMBINE_FACTOR_LOCAL, |
9183 | GR_COMBINE_LOCAL_CONSTANT, |
9184 | GR_COMBINE_OTHER_TEXTURE); |
9185 | CA_PRIM (); |
9186 | if (cmb.combine_ext) |
9187 | { |
9188 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9189 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9190 | GR_CMBX_ZERO, 0, |
9191 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9192 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9193 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9194 | GR_CMBX_DETAIL_FACTOR, 0, |
9195 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9196 | cmb.tex |= 3; |
9197 | percent = (float)lod_frac / 255.0f; |
9198 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9199 | } |
9200 | else |
9201 | { |
9202 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
9203 | } |
9204 | } |
9205 | |
9206 | static void ac__t1_sub_prim_mul_primlod_add_t0__mul_prim () |
9207 | { |
9208 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9209 | GR_COMBINE_FACTOR_LOCAL, |
9210 | GR_COMBINE_LOCAL_CONSTANT, |
9211 | GR_COMBINE_OTHER_TEXTURE); |
9212 | CA_PRIM (); |
9213 | if (cmb.combine_ext) |
9214 | { |
9215 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9216 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9217 | GR_CMBX_ZERO, 0, |
9218 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9219 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9220 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9221 | GR_CMBX_DETAIL_FACTOR, 0, |
9222 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9223 | cmb.tex |= 3; |
9224 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
9225 | percent = (float)lod_frac / 255.0f; |
9226 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9227 | } |
9228 | else |
9229 | { |
9230 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
9231 | } |
9232 | } |
9233 | |
9234 | static void ac__t1_sub_t0_mul_enva_add_t1__mul_prim () |
9235 | { |
9236 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9237 | GR_COMBINE_FACTOR_LOCAL, |
9238 | GR_COMBINE_LOCAL_CONSTANT, |
9239 | GR_COMBINE_OTHER_TEXTURE); |
9240 | CA_PRIM (); |
9241 | if (cmb.combine_ext) |
9242 | { |
9243 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9244 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9245 | GR_CMBX_ZERO, 0, |
9246 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9247 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9248 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9249 | GR_CMBX_TMU_CALPHA, 0, |
9250 | GR_CMBX_B, 0); |
9251 | cmb.tex |= 3; |
9252 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF); |
9253 | } |
9254 | else |
9255 | { |
9256 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
9257 | A_T0_INTER_T1_USING_FACTOR (factor); |
9258 | } |
9259 | } |
9260 | |
9261 | static void ac__t1_sub_t0_mul_primlod__mul_env_add_prim () |
9262 | { |
9263 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9264 | GR_COMBINE_FACTOR_ONE, |
9265 | GR_COMBINE_LOCAL_CONSTANT, |
9266 | GR_COMBINE_OTHER_TEXTURE); |
9267 | CA_PRIM (); |
9268 | if (cmb.combine_ext) |
9269 | { |
9270 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9271 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9272 | GR_CMBX_ZERO, 0, |
9273 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9274 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9275 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9276 | GR_CMBX_TMU_CALPHA, 0, |
9277 | GR_CMBX_ZERO, 0); |
9278 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (wxUint32)((float)(rdp.env_color&0xFF)*(float)rdp.prim_lodfrac/255.0f); |
9279 | } |
9280 | else |
9281 | { |
9282 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL; |
9283 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL; |
9284 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
9285 | percent = (rdp.prim_lodfrac * (rdp.env_color&0xFF)) / 65025.0f; |
9286 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ |
9287 | } |
9288 | cmb.tex |= 3; |
9289 | } |
9290 | |
9291 | static void ac__t0_sub_one_mul_enva_add_t1__mul_prim () |
9292 | { |
9293 | if (cmb.combine_ext) |
9294 | { |
9295 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9296 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9297 | GR_CMBX_ZERO, 0, |
9298 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9299 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9300 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9301 | GR_CMBX_TMU_CALPHA, 0, |
9302 | GR_CMBX_B, 0); |
9303 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
9304 | cmb.tex |= 3; |
9305 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9306 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9307 | GR_CMBX_ITALPHA, 0, |
9308 | GR_CMBX_ZERO, 0); |
9309 | CA_ENV (); |
9310 | SETSHADE_A_PRIM (); |
9311 | } |
9312 | else |
9313 | { |
9314 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9315 | GR_COMBINE_FACTOR_LOCAL, |
9316 | GR_COMBINE_LOCAL_ITERATED, |
9317 | GR_COMBINE_OTHER_TEXTURE); |
9318 | SETSHADE_A_PRIM (); |
9319 | SETSHADE_A_ENV (); |
9320 | A_T0_MUL_T1 (); |
9321 | } |
9322 | } |
9323 | |
9324 | static void ac__t1_mul_prima_add_t0__mul_env () |
9325 | { |
9326 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9327 | GR_COMBINE_FACTOR_LOCAL, |
9328 | GR_COMBINE_LOCAL_CONSTANT, |
9329 | GR_COMBINE_OTHER_TEXTURE); |
9330 | CA_ENV (); |
9331 | A_T1_MUL_PRIMA_ADD_T0 (); |
9332 | } |
9333 | |
9334 | static void ac__t1_mul_enva_add_t0__mul_prim () |
9335 | { |
9336 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9337 | GR_COMBINE_FACTOR_LOCAL, |
9338 | GR_COMBINE_LOCAL_CONSTANT, |
9339 | GR_COMBINE_OTHER_TEXTURE); |
9340 | CA_PRIM (); |
9341 | A_T1_MUL_ENVA_ADD_T0 (); |
9342 | } |
9343 | |
9344 | static void ac_t0_mul_primlod () |
9345 | { |
9346 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9347 | GR_COMBINE_FACTOR_LOCAL, |
9348 | GR_COMBINE_LOCAL_CONSTANT, |
9349 | GR_COMBINE_OTHER_TEXTURE); |
9350 | CA_PRIMLOD (); |
9351 | A_USE_T0 (); |
9352 | } |
9353 | |
9354 | static void ac_t1_mul_primlod () |
9355 | { |
9356 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9357 | GR_COMBINE_FACTOR_LOCAL, |
9358 | GR_COMBINE_LOCAL_CONSTANT, |
9359 | GR_COMBINE_OTHER_TEXTURE); |
9360 | CA_PRIMLOD (); |
9361 | A_USE_T1 (); |
9362 | } |
9363 | |
9364 | //Added by Gonetz |
9365 | static void ac__t0_add_t1__mul_prim () |
9366 | { |
9367 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9368 | GR_COMBINE_FACTOR_LOCAL, |
9369 | GR_COMBINE_LOCAL_CONSTANT, |
9370 | GR_COMBINE_OTHER_TEXTURE); |
9371 | CA_PRIM (); |
9372 | A_T0_ADD_T1 (); |
9373 | } |
9374 | |
9375 | //Added by Gonetz |
9376 | static void ac__t0_add_t1__mul_primlod () |
9377 | { |
9378 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9379 | GR_COMBINE_FACTOR_LOCAL, |
9380 | GR_COMBINE_LOCAL_CONSTANT, |
9381 | GR_COMBINE_OTHER_TEXTURE); |
9382 | CA_PRIMLOD (); |
9383 | A_T0_ADD_T1 (); |
9384 | } |
9385 | |
9386 | //Added by Gonetz |
9387 | static void ac__t0_mul_t1__mul_primlod () |
9388 | { |
9389 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9390 | GR_COMBINE_FACTOR_LOCAL, |
9391 | GR_COMBINE_LOCAL_CONSTANT, |
9392 | GR_COMBINE_OTHER_TEXTURE); |
9393 | CA_PRIMLOD (); |
9394 | A_T0_MUL_T1 (); |
9395 | } |
9396 | |
9397 | static void ac_t0_mul_env () |
9398 | { |
9399 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9400 | GR_COMBINE_FACTOR_LOCAL, |
9401 | GR_COMBINE_LOCAL_CONSTANT, |
9402 | GR_COMBINE_OTHER_TEXTURE); |
9403 | CA_ENV (); |
9404 | A_USE_T0 (); |
9405 | } |
9406 | |
9407 | static void ac_t0_mul_env_mul_primlod () |
9408 | { |
9409 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9410 | GR_COMBINE_FACTOR_LOCAL, |
9411 | GR_COMBINE_LOCAL_CONSTANT, |
9412 | GR_COMBINE_OTHER_TEXTURE); |
9413 | CA_ENV_MUL_PRIMLOD (); |
9414 | A_USE_T0 (); |
9415 | } |
9416 | |
9417 | static void ac_t1_mul_env () //Added by Gonetz |
9418 | { |
9419 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9420 | GR_COMBINE_FACTOR_LOCAL, |
9421 | GR_COMBINE_LOCAL_CONSTANT, |
9422 | GR_COMBINE_OTHER_TEXTURE); |
9423 | CA_ENV (); |
9424 | // if ((settings.hacks&hack_Powerpuff) && (rdp.last_tile == 0)) |
9425 | if (rdp.cycle_mode == 0) |
9426 | A_USE_T0 (); |
9427 | else |
9428 | A_USE_T1 (); |
9429 | } |
9430 | |
9431 | static void ac__t1_sub_one_mul_primlod_add_t0__mul_env () |
9432 | { |
9433 | if (cmb.combine_ext) |
9434 | { |
9435 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9436 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9437 | GR_CMBX_ZERO, 0, |
9438 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9439 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9440 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9441 | GR_CMBX_DETAIL_FACTOR, 0, |
9442 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9443 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
9444 | percent = (float)lod_frac / 255.0f; |
9445 | } |
9446 | else |
9447 | { |
9448 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
9449 | cmb.tmu1_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
9450 | percent = (255 - lod_frac) / 255.0f; |
9451 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA; |
9452 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA; |
9453 | } |
9454 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9455 | GR_COMBINE_FACTOR_LOCAL, |
9456 | GR_COMBINE_LOCAL_CONSTANT, |
9457 | GR_COMBINE_OTHER_TEXTURE); |
9458 | CA_ENV (); |
9459 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9460 | cmb.tex |= 3; |
9461 | } |
9462 | |
9463 | static void ac_t0_mul_shade () |
9464 | { |
9465 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9466 | GR_COMBINE_FACTOR_LOCAL, |
9467 | GR_COMBINE_LOCAL_ITERATED, |
9468 | GR_COMBINE_OTHER_TEXTURE); |
9469 | A_USE_T0 (); |
9470 | } |
9471 | |
9472 | static void ac_t1_mul_shade () |
9473 | { |
9474 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9475 | GR_COMBINE_FACTOR_LOCAL, |
9476 | GR_COMBINE_LOCAL_ITERATED, |
9477 | GR_COMBINE_OTHER_TEXTURE); |
9478 | A_USE_T1 (); |
9479 | } |
9480 | |
9481 | //Added by Gonetz |
9482 | static void ac__t0_add_t1__mul_shade () |
9483 | { |
9484 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9485 | GR_COMBINE_FACTOR_LOCAL, |
9486 | GR_COMBINE_LOCAL_ITERATED, |
9487 | GR_COMBINE_OTHER_TEXTURE); |
9488 | A_T0_ADD_T1 (); |
9489 | } |
9490 | |
9491 | static void ac__t0_mul_primlod_add_t0__mul_shade () |
9492 | { |
9493 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9494 | GR_COMBINE_FACTOR_LOCAL, |
9495 | GR_COMBINE_LOCAL_ITERATED, |
9496 | GR_COMBINE_OTHER_TEXTURE); |
9497 | if (cmb.combine_ext) |
9498 | { |
9499 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9500 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9501 | GR_CMBX_DETAIL_FACTOR, 0, |
9502 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9503 | cmb.tex |= 1; |
9504 | percent = (float)lod_frac / 255.0f; |
9505 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9506 | } |
9507 | else |
9508 | { |
9509 | A_USE_T0 (); |
9510 | } |
9511 | } |
9512 | |
9513 | static void ac__t1_mul_prima_add_t0__mul_shade () |
9514 | { |
9515 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9516 | GR_COMBINE_FACTOR_LOCAL, |
9517 | GR_COMBINE_LOCAL_ITERATED, |
9518 | GR_COMBINE_OTHER_TEXTURE); |
9519 | A_T1_MUL_PRIMA_ADD_T0 (); |
9520 | } |
9521 | |
9522 | //Added by Gonetz |
9523 | static void ac__t0_sub_t1__mul_shade () |
9524 | { |
9525 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9526 | GR_COMBINE_FACTOR_LOCAL, |
9527 | GR_COMBINE_LOCAL_ITERATED, |
9528 | GR_COMBINE_OTHER_TEXTURE); |
9529 | if (cmb.combine_ext) |
9530 | { |
9531 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9532 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9533 | GR_CMBX_ZERO, 0, |
9534 | GR_CMBX_B, 0); |
9535 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9536 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9537 | GR_CMBX_ZERO, 1, |
9538 | GR_CMBX_ZERO, 0); |
9539 | cmb.tex |= 3; |
9540 | } |
9541 | else |
9542 | { |
9543 | A_T0_SUB_T1 (); |
9544 | } |
9545 | } |
9546 | |
9547 | static void ac__t1_mul_t1_add_t1__mul_shade () |
9548 | { |
9549 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9550 | GR_COMBINE_FACTOR_LOCAL, |
9551 | GR_COMBINE_LOCAL_ITERATED, |
9552 | GR_COMBINE_OTHER_TEXTURE); |
9553 | if (cmb.combine_ext) |
9554 | { |
9555 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9556 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9557 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
9558 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9559 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9560 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9561 | GR_CMBX_ZERO, 1, |
9562 | GR_CMBX_ZERO, 0); |
9563 | cmb.tex |= 2; |
9564 | } |
9565 | else |
9566 | { |
9567 | A_USE_T1 (); |
9568 | } |
9569 | } |
9570 | |
9571 | static void ac__t1_mul_enva_add_t0__mul_shade () |
9572 | { |
9573 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9574 | GR_COMBINE_FACTOR_LOCAL, |
9575 | GR_COMBINE_LOCAL_ITERATED, |
9576 | GR_COMBINE_OTHER_TEXTURE); |
9577 | A_T1_MUL_ENVA_ADD_T0 (); |
9578 | } |
9579 | |
9580 | static void ac__t1_sub_one_mul_primlod_add_t0__mul_shade () |
9581 | { |
9582 | if (cmb.combine_ext) |
9583 | { |
9584 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9585 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9586 | GR_CMBX_ZERO, 0, |
9587 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9588 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9589 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9590 | GR_CMBX_DETAIL_FACTOR, 0, |
9591 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9592 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
9593 | percent = (float)lod_frac / 255.0f; |
9594 | } |
9595 | else |
9596 | { |
9597 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
9598 | cmb.tmu1_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
9599 | percent = (255 - lod_frac) / 255.0f; |
9600 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA; |
9601 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA; |
9602 | } |
9603 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9604 | GR_COMBINE_FACTOR_LOCAL, |
9605 | GR_COMBINE_LOCAL_ITERATED, |
9606 | GR_COMBINE_OTHER_TEXTURE); |
9607 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9608 | cmb.tex |= 3; |
9609 | } |
9610 | |
9611 | static void ac__t1_sub_shade_mul_primlod_add_t0__mul_shade () |
9612 | { |
9613 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9614 | GR_COMBINE_FACTOR_LOCAL, |
9615 | GR_COMBINE_LOCAL_CONSTANT, |
9616 | GR_COMBINE_OTHER_TEXTURE); |
9617 | CA_PRIM (); |
9618 | if (cmb.combine_ext) |
9619 | { |
9620 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9621 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9622 | GR_CMBX_ZERO, 0, |
9623 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9624 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9625 | GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9626 | GR_CMBX_DETAIL_FACTOR, 0, |
9627 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9628 | cmb.tex |= 3; |
9629 | percent = (float)lod_frac / 255.0f; |
9630 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9631 | } |
9632 | else |
9633 | { |
9634 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
9635 | } |
9636 | } |
9637 | |
9638 | //Added by Gonetz |
9639 | static void ac_prim_mul_prim () |
9640 | { |
9641 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9642 | GR_COMBINE_FACTOR_LOCAL, |
9643 | GR_COMBINE_LOCAL_CONSTANT, |
9644 | GR_COMBINE_OTHER_ITERATED); |
9645 | CA_PRIM (); |
9646 | SETSHADE_A_PRIM (); |
9647 | } |
9648 | |
9649 | //Added by Gonetz |
9650 | static void ac_prim_mul_primlod () |
9651 | { |
9652 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9653 | GR_COMBINE_FACTOR_LOCAL, |
9654 | GR_COMBINE_LOCAL_CONSTANT, |
9655 | GR_COMBINE_OTHER_ITERATED); |
9656 | CA_PRIMLOD (); |
9657 | SETSHADE_A_PRIM (); |
9658 | } |
9659 | |
9660 | static void ac_prim_mul_env () |
9661 | { |
9662 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9663 | GR_COMBINE_FACTOR_LOCAL, |
9664 | GR_COMBINE_LOCAL_CONSTANT, |
9665 | GR_COMBINE_OTHER_ITERATED); |
9666 | CA_ENV (); |
9667 | SETSHADE_A_PRIM (); |
9668 | } |
9669 | |
9670 | static void ac__prim_sub_one_mul_primlod_add_t0__mul_env () |
9671 | { |
9672 | if (cmb.combine_ext) |
9673 | { |
9674 | T0ACMBEXT(GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
9675 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
9676 | GR_CMBX_DETAIL_FACTOR, 0, |
9677 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9678 | SETSHADE_A_PRIM (); |
9679 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
9680 | percent = (float)lod_frac / 255.0f; |
9681 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9682 | cmb.tex |= 1; |
9683 | } |
9684 | else |
9685 | { |
9686 | A_USE_T0 (); |
9687 | } |
9688 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9689 | GR_COMBINE_FACTOR_LOCAL, |
9690 | GR_COMBINE_LOCAL_CONSTANT, |
9691 | GR_COMBINE_OTHER_TEXTURE); |
9692 | CA_ENV (); |
9693 | } |
9694 | |
9695 | static void ac_prim_mul_shade () |
9696 | { |
9697 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9698 | GR_COMBINE_FACTOR_LOCAL, |
9699 | GR_COMBINE_LOCAL_CONSTANT, |
9700 | GR_COMBINE_OTHER_ITERATED); |
9701 | CA_PRIM (); |
9702 | } |
9703 | |
9704 | static void ac_env_mul_shade () |
9705 | { |
9706 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9707 | GR_COMBINE_FACTOR_LOCAL, |
9708 | GR_COMBINE_LOCAL_CONSTANT, |
9709 | GR_COMBINE_OTHER_ITERATED); |
9710 | CA_ENV (); |
9711 | } |
9712 | |
9713 | static void ac_primlod_mul_shade () |
9714 | { |
9715 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9716 | GR_COMBINE_FACTOR_LOCAL, |
9717 | GR_COMBINE_LOCAL_CONSTANT, |
9718 | GR_COMBINE_OTHER_ITERATED); |
9719 | CA_PRIMLOD (); |
9720 | } |
9721 | |
9722 | // ** A-B ** |
9723 | static void ac_prim_sub_t0 () |
9724 | { |
9725 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9726 | GR_COMBINE_FACTOR_ONE, |
9727 | GR_COMBINE_LOCAL_NONE, |
9728 | GR_COMBINE_OTHER_TEXTURE); |
9729 | A_USE_T0 (); |
9730 | |
9731 | MOD_0 (TMOD_FULL_COLOR_SUB_TEX); |
9732 | MOD_0_COL (rdp.prim_color); |
9733 | } |
9734 | |
9735 | // ** A*B+C ** |
9736 | static void ac_t0_mul_prim_add_t0 () |
9737 | { |
9738 | if (cmb.combine_ext) |
9739 | { |
9740 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9741 | GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9742 | GR_CMBX_CONSTANT_ALPHA, 0, |
9743 | GR_CMBX_B, 0); |
9744 | CA_PRIM (); |
9745 | A_USE_T0 (); |
9746 | } |
9747 | else |
9748 | ac_t0(); |
9749 | } |
9750 | |
9751 | static void ac_t1_mul_prim_add_t0 () |
9752 | { |
9753 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9754 | GR_COMBINE_FACTOR_ONE, |
9755 | GR_COMBINE_LOCAL_NONE, |
9756 | GR_COMBINE_OTHER_TEXTURE); |
9757 | A_T1_MUL_PRIMA_ADD_T0 (); |
9758 | } |
9759 | |
9760 | static void ac__t0_inter_t1_using_t1a__mul_prim_add__t0_inter_t1_using_t1a () |
9761 | { |
9762 | if (cmb.combine_ext) |
9763 | { |
9764 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9765 | GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9766 | GR_CMBX_CONSTANT_ALPHA, 0, |
9767 | GR_CMBX_B, 0); |
9768 | CA_PRIM (); |
9769 | } |
9770 | else |
9771 | { |
9772 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9773 | GR_COMBINE_FACTOR_LOCAL, |
9774 | GR_COMBINE_LOCAL_CONSTANT, |
9775 | GR_COMBINE_OTHER_TEXTURE); |
9776 | CA_PRIM (); |
9777 | } |
9778 | A_T0_INTER_T1_USING_T1A (); |
9779 | } |
9780 | |
9781 | static void ac__t1_inter_t0_using_t0a__mul_prim_add__t1_inter_t0_using_t0a () |
9782 | { |
9783 | if (cmb.combine_ext) |
9784 | { |
9785 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9786 | GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9787 | GR_CMBX_CONSTANT_ALPHA, 0, |
9788 | GR_CMBX_B, 0); |
9789 | CA_PRIM (); |
9790 | } |
9791 | else |
9792 | { |
9793 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9794 | GR_COMBINE_FACTOR_LOCAL, |
9795 | GR_COMBINE_LOCAL_CONSTANT, |
9796 | GR_COMBINE_OTHER_TEXTURE); |
9797 | CA_PRIM (); |
9798 | } |
9799 | A_T1_INTER_T0_USING_T0A (); |
9800 | } |
9801 | |
9802 | //Added by Gonetz |
9803 | static void ac_t0_mul_prim_add_env () |
9804 | { |
9805 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9806 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9807 | GR_COMBINE_LOCAL_CONSTANT, |
9808 | GR_COMBINE_OTHER_ITERATED); |
9809 | SETSHADE_A_PRIM (); |
9810 | CA_ENV (); |
9811 | A_USE_T0 (); |
9812 | } |
9813 | |
9814 | //Added by Gonetz |
9815 | static void ac__t0_add_t1__mul_prim_add_env () |
9816 | { |
9817 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9818 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9819 | GR_COMBINE_LOCAL_CONSTANT, |
9820 | GR_COMBINE_OTHER_ITERATED); |
9821 | SETSHADE_A_PRIM (); |
9822 | CA_ENV (); |
9823 | A_T0_ADD_T1 (); |
9824 | } |
9825 | |
9826 | //Aded by Gonetz |
9827 | static void ac__t0_inter_t1_using_enva__mul_prim_add_env () |
9828 | { |
9829 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9830 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9831 | GR_COMBINE_LOCAL_CONSTANT, |
9832 | GR_COMBINE_OTHER_ITERATED); |
9833 | SETSHADE_A_PRIM (); |
9834 | CA_ENV (); |
9835 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
9836 | A_T0_INTER_T1_USING_FACTOR (factor); |
9837 | } |
9838 | |
9839 | //Aded by Gonetz |
9840 | static void ac_t0_mul_primlod_add_t0 () |
9841 | { |
9842 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9843 | GR_COMBINE_FACTOR_ONE, |
9844 | GR_COMBINE_LOCAL_NONE, |
9845 | GR_COMBINE_OTHER_TEXTURE); |
9846 | if (cmb.combine_ext) |
9847 | { |
9848 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
9849 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9850 | GR_CMBX_DETAIL_FACTOR, 0, |
9851 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
9852 | cmb.tex |= 1; |
9853 | percent = (float)lod_frac / 255.0f; |
9854 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9855 | } |
9856 | else |
9857 | { |
9858 | A_USE_T0 (); |
9859 | } |
9860 | } |
9861 | |
9862 | //Aded by Gonetz |
9863 | static void ac_t1_mul_primlod_add_t0 () |
9864 | { |
9865 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
9866 | GR_COMBINE_FACTOR_ONE, |
9867 | GR_COMBINE_LOCAL_NONE, |
9868 | GR_COMBINE_OTHER_TEXTURE); |
9869 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
9870 | } |
9871 | |
9872 | //Aded by Gonetz |
9873 | static void ac_t0_mul_primlod_add_prim () |
9874 | { |
9875 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9876 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9877 | GR_COMBINE_LOCAL_ITERATED, |
9878 | GR_COMBINE_OTHER_CONSTANT); |
9879 | CA_PRIMLOD (); |
9880 | SETSHADE_A_PRIM (); |
9881 | A_USE_T0 (); |
9882 | } |
9883 | |
9884 | static void ac_t0_mul_primlod_add_env () |
9885 | { |
9886 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9887 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9888 | GR_COMBINE_LOCAL_ITERATED, |
9889 | GR_COMBINE_OTHER_CONSTANT); |
9890 | CA_PRIMLOD (); |
9891 | SETSHADE_A_ENV (); |
9892 | A_USE_T0 (); |
9893 | } |
9894 | |
9895 | //Aded by Gonetz |
9896 | static void ac__t0_add_t1__mul_primlod_add_prim () |
9897 | { |
9898 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9899 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9900 | GR_COMBINE_LOCAL_ITERATED, |
9901 | GR_COMBINE_OTHER_CONSTANT); |
9902 | CA_PRIMLOD (); |
9903 | SETSHADE_A_PRIM (); |
9904 | A_T0_ADD_T1 (); |
9905 | } |
9906 | |
9907 | //Added by Gonetz |
9908 | static void ac_t0_mul_env_add_prim () |
9909 | { |
9910 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9911 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9912 | GR_COMBINE_LOCAL_CONSTANT, |
9913 | GR_COMBINE_OTHER_ITERATED); |
9914 | SETSHADE_A_ENV (); |
9915 | CA_PRIM (); |
9916 | A_USE_T0 (); |
9917 | } |
9918 | |
9919 | //Added by Gonetz |
9920 | static void ac_t1_mul_prim_add_prim () |
9921 | { |
9922 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9923 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9924 | GR_COMBINE_LOCAL_CONSTANT, |
9925 | GR_COMBINE_OTHER_ITERATED); |
9926 | SETSHADE_A_PRIM (); |
9927 | CA_PRIM (); |
9928 | A_USE_T1 (); |
9929 | } |
9930 | |
9931 | //Added by Gonetz |
9932 | static void ac_prim_mul_shade_add_shade () |
9933 | { |
9934 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9935 | GR_COMBINE_FACTOR_LOCAL, |
9936 | GR_COMBINE_LOCAL_ITERATED, |
9937 | GR_COMBINE_OTHER_CONSTANT); |
9938 | CA_PRIM (); |
9939 | } |
9940 | |
9941 | //Added by Gonetz |
9942 | static void ac_t0_mul_shade_add_prim () |
9943 | { |
9944 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9945 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9946 | GR_COMBINE_LOCAL_CONSTANT, |
9947 | GR_COMBINE_OTHER_ITERATED); |
9948 | CA_PRIM (); |
9949 | A_USE_T0 (); |
9950 | } |
9951 | |
9952 | static void ac_t0_mul_shade_add_env () |
9953 | { |
9954 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9955 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9956 | GR_COMBINE_LOCAL_CONSTANT, |
9957 | GR_COMBINE_OTHER_ITERATED); |
9958 | CA_ENV (); |
9959 | A_USE_T0 (); |
9960 | } |
9961 | |
9962 | static void ac_one_sub_prim_mul__t0_mul_t1__add__prim_mul_shade () |
9963 | { |
9964 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9965 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9966 | GR_COMBINE_LOCAL_ITERATED, |
9967 | GR_COMBINE_OTHER_CONSTANT); |
9968 | CA_INVPRIM (); |
9969 | MULSHADE_A_PRIM (); |
9970 | A_T0_MUL_T1 (); |
9971 | } |
9972 | |
9973 | // ** A*B+C*D ** |
9974 | static void ac_t0_mul_prim_add_shade_mul_one_minus_prim () |
9975 | { |
9976 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
9977 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
9978 | GR_COMBINE_LOCAL_ITERATED, |
9979 | GR_COMBINE_OTHER_CONSTANT); |
9980 | MULSHADE_A_1MPRIM (); |
9981 | CA_PRIM (); |
9982 | A_USE_T0 (); |
9983 | } |
9984 | |
9985 | // ** (A*B+C)*D ** |
9986 | static void ac__t0_mul_primlod_add_shade__mul_shade () |
9987 | { |
9988 | if (cmb.combine_ext) |
9989 | { |
9990 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9991 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
9992 | GR_CMBX_DETAIL_FACTOR, 0, |
9993 | GR_CMBX_B, 0); |
9994 | cmb.tex |= 1; |
9995 | percent = (float)lod_frac / 255.0f; |
9996 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
9997 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
9998 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
9999 | GR_CMBX_ITALPHA, 0, |
10000 | GR_CMBX_ZERO, 0); |
10001 | } |
10002 | else |
10003 | { |
10004 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10005 | GR_COMBINE_FACTOR_LOCAL, |
10006 | GR_COMBINE_LOCAL_ITERATED, |
10007 | GR_COMBINE_OTHER_TEXTURE); |
10008 | A_USE_T0 (); |
10009 | } |
10010 | } |
10011 | |
10012 | static void ac__t1_mul_primlod_add_shade__mul_shade () |
10013 | { |
10014 | if (cmb.combine_ext) |
10015 | { |
10016 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10017 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10018 | GR_CMBX_ZERO, 0, |
10019 | GR_CMBX_B, 0); |
10020 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10021 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10022 | GR_CMBX_DETAIL_FACTOR, 0, |
10023 | GR_CMBX_B, 0); |
10024 | cmb.tex |= 2; |
10025 | percent = (float)lod_frac / 255.0f; |
10026 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
10027 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10028 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
10029 | GR_CMBX_ITALPHA, 0, |
10030 | GR_CMBX_ZERO, 0); |
10031 | } |
10032 | else |
10033 | { |
10034 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10035 | GR_COMBINE_FACTOR_LOCAL, |
10036 | GR_COMBINE_LOCAL_ITERATED, |
10037 | GR_COMBINE_OTHER_TEXTURE); |
10038 | A_USE_T1 (); |
10039 | } |
10040 | } |
10041 | |
10042 | // ** ((A-B)*C+D)+E ** |
10043 | static void ac__t0_sub_t1_mul_prim_add_shade__mul_shade () |
10044 | //(t0-t1)*prim+shade, (cmb-0)*shade+0 |
10045 | { |
10046 | if (cmb.combine_ext) |
10047 | { |
10048 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10049 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10050 | GR_CMBX_ZERO, 0, |
10051 | GR_CMBX_B, 0); |
10052 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10053 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10054 | GR_CMBX_TMU_CALPHA, 0, |
10055 | GR_CMBX_ZERO, 0); |
10056 | cmb.tex |= 3; |
10057 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10058 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10059 | GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
10060 | GR_CMBX_ITALPHA, 0, |
10061 | GR_CMBX_ZERO, 0); |
10062 | } |
10063 | else |
10064 | { |
10065 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA, |
10066 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10067 | GR_COMBINE_LOCAL_ITERATED, |
10068 | GR_COMBINE_OTHER_CONSTANT); |
10069 | CA_PRIM (); |
10070 | A_T1_SUB_T0 (); |
10071 | } |
10072 | } |
10073 | |
10074 | static void ac__t1_sub_t0_mul_prim_add_shade__mul_shade () |
10075 | //(t1-t0)*prim+shade, (cmb-0)*shade+0 |
10076 | { |
10077 | if (cmb.combine_ext) |
10078 | { |
10079 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10080 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10081 | GR_CMBX_ZERO, 0, |
10082 | GR_CMBX_B, 0); |
10083 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10084 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10085 | GR_CMBX_TMU_CALPHA, 0, |
10086 | GR_CMBX_ZERO, 0); |
10087 | cmb.tex |= 3; |
10088 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10089 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10090 | GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
10091 | GR_CMBX_ITALPHA, 0, |
10092 | GR_CMBX_ZERO, 0); |
10093 | } |
10094 | else |
10095 | { |
10096 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA, |
10097 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10098 | GR_COMBINE_LOCAL_ITERATED, |
10099 | GR_COMBINE_OTHER_CONSTANT); |
10100 | CA_PRIM (); |
10101 | A_T1_SUB_T0 (); |
10102 | } |
10103 | } |
10104 | |
10105 | // ** A*B*C ** |
10106 | static void ac__t0_mul_t1__mul_prim () |
10107 | { |
10108 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10109 | GR_COMBINE_FACTOR_LOCAL, |
10110 | GR_COMBINE_LOCAL_CONSTANT, |
10111 | GR_COMBINE_OTHER_TEXTURE); |
10112 | CA_PRIM (); |
10113 | if (voodoo.sup_large_tex || rdp.tiles[1].lr_s < 256) //hack for RR64 pause screen |
10114 | { |
10115 | A_T0_MUL_T1 (); |
10116 | } |
10117 | else |
10118 | { |
10119 | A_USE_T0 (); |
10120 | } |
10121 | } |
10122 | |
10123 | static void ac__t0_mul_t1__mul_env () |
10124 | { |
10125 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10126 | GR_COMBINE_FACTOR_LOCAL, |
10127 | GR_COMBINE_LOCAL_CONSTANT, |
10128 | GR_COMBINE_OTHER_TEXTURE); |
10129 | CA_ENV (); |
10130 | A_T0_MUL_T1 (); |
10131 | } |
10132 | |
10133 | static void ac__t0_mul_t1__mul_env_mul_shade () |
10134 | { |
10135 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10136 | GR_COMBINE_FACTOR_LOCAL, |
10137 | GR_COMBINE_LOCAL_ITERATED, |
10138 | GR_COMBINE_OTHER_TEXTURE); |
10139 | MULSHADE_A_ENV (); |
10140 | A_T0_MUL_T1 (); |
10141 | } |
10142 | |
10143 | static void ac__t0_mul_t1__mul_prim_mul_shade () |
10144 | { |
10145 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10146 | GR_COMBINE_FACTOR_LOCAL, |
10147 | GR_COMBINE_LOCAL_ITERATED, |
10148 | GR_COMBINE_OTHER_TEXTURE); |
10149 | MULSHADE_A_PRIM (); |
10150 | A_T0_MUL_T1 (); |
10151 | } |
10152 | |
10153 | static void ac__t0_mul_t1__mul_shade () |
10154 | { |
10155 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10156 | GR_COMBINE_FACTOR_LOCAL, |
10157 | GR_COMBINE_LOCAL_ITERATED, |
10158 | GR_COMBINE_OTHER_TEXTURE); |
10159 | A_T0_MUL_T1 (); |
10160 | } |
10161 | |
10162 | static void ac__t0_add_prim_mul_shade__mul_shade () |
10163 | { |
10164 | // (shade-0)*prim+t0, (cmb-0)*shade+0 |
10165 | if (cmb.combine_ext) |
10166 | { |
10167 | T0ACMBEXT(GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
10168 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10169 | GR_CMBX_TMU_CALPHA, 0, |
10170 | GR_CMBX_B, 0); |
10171 | cmb.tex |= 1; |
10172 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10173 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10174 | GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
10175 | GR_CMBX_ITALPHA, 0, |
10176 | GR_CMBX_ZERO, 0); |
10177 | } |
10178 | else |
10179 | { |
10180 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10181 | GR_COMBINE_FACTOR_ONE, |
10182 | GR_COMBINE_LOCAL_ITERATED, |
10183 | GR_COMBINE_OTHER_TEXTURE); |
10184 | MULSHADE_A_PRIM (); |
10185 | A_USE_T0(); |
10186 | } |
10187 | } |
10188 | |
10189 | //Added by Gonetz |
10190 | static void ac_t0_mul_prim_mul_prim () |
10191 | { |
10192 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10193 | GR_COMBINE_FACTOR_LOCAL, |
10194 | GR_COMBINE_LOCAL_ITERATED, |
10195 | GR_COMBINE_OTHER_TEXTURE); |
10196 | SETSHADE_A_PRIM (); |
10197 | SETSHADE_A_PRIM (); |
10198 | A_USE_T0 (); |
10199 | } |
10200 | |
10201 | static void ac_t0_mul_prim_mul_env () |
10202 | { |
10203 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10204 | GR_COMBINE_FACTOR_LOCAL, |
10205 | GR_COMBINE_LOCAL_CONSTANT, |
10206 | GR_COMBINE_OTHER_TEXTURE); |
10207 | CA_PRIMENV(); |
10208 | A_USE_T0 (); |
10209 | } |
10210 | |
10211 | static void ac_t0_mul_prim_mul_shade () |
10212 | { |
10213 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10214 | GR_COMBINE_FACTOR_LOCAL, |
10215 | GR_COMBINE_LOCAL_ITERATED, |
10216 | GR_COMBINE_OTHER_TEXTURE); |
10217 | MULSHADE_A_PRIM (); |
10218 | A_USE_T0 (); |
10219 | } |
10220 | |
10221 | static void ac_t1_mul_prim_mul_shade () |
10222 | { |
10223 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10224 | GR_COMBINE_FACTOR_LOCAL, |
10225 | GR_COMBINE_LOCAL_ITERATED, |
10226 | GR_COMBINE_OTHER_TEXTURE); |
10227 | MULSHADE_A_PRIM (); |
10228 | A_USE_T1 (); |
10229 | } |
10230 | |
10231 | static void ac_t0_mul_env_mul_shade () |
10232 | { |
10233 | if (rdp.cur_image && (rdp.cur_image->format != 0)) |
10234 | { |
10235 | ac_shade (); |
10236 | return; |
10237 | } |
10238 | |
10239 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10240 | GR_COMBINE_FACTOR_LOCAL, |
10241 | GR_COMBINE_LOCAL_ITERATED, |
10242 | GR_COMBINE_OTHER_TEXTURE); |
10243 | MULSHADE_A_ENV (); |
10244 | A_USE_T0 (); |
10245 | } |
10246 | |
10247 | static void ac_t1_mul_env_mul_shade () |
10248 | { |
10249 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10250 | GR_COMBINE_FACTOR_LOCAL, |
10251 | GR_COMBINE_LOCAL_ITERATED, |
10252 | GR_COMBINE_OTHER_TEXTURE); |
10253 | MULSHADE_A_ENV (); |
10254 | A_USE_T1 (); |
10255 | } |
10256 | |
10257 | static void ac_t0_mul_primlod_mul_prim () //Aded by Gonetz |
10258 | { |
10259 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10260 | GR_COMBINE_FACTOR_LOCAL, |
10261 | GR_COMBINE_LOCAL_CONSTANT, |
10262 | GR_COMBINE_OTHER_TEXTURE); |
10263 | cmb.ccolor |= (wxUint32)(lod_frac * (rdp.prim_color&0xFF) / 255); |
10264 | A_USE_T0 (); |
10265 | } |
10266 | |
10267 | // ** (A+B)*C ** |
10268 | static void ac_prim_add_env_mul_t0 () //Aded by Gonetz |
10269 | { |
10270 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10271 | GR_COMBINE_FACTOR_LOCAL, |
10272 | GR_COMBINE_LOCAL_ITERATED, |
10273 | GR_COMBINE_OTHER_TEXTURE); |
10274 | SETSHADE_A_PRIM (); |
10275 | ADDSHADE_A_ENV (); |
10276 | A_USE_T0 (); |
10277 | } |
10278 | |
10279 | static void ac_t1_add_prim_mul_env () //Aded by Gonetz |
10280 | { |
10281 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10282 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10283 | GR_COMBINE_LOCAL_ITERATED, |
10284 | GR_COMBINE_OTHER_CONSTANT); |
10285 | CA_ENV (); |
10286 | SETSHADE_A_PRIM (); |
10287 | SETSHADE_A_ENV (); |
10288 | A_USE_T1 (); |
10289 | //(t1+prim)*env = t1*env + prim*env |
10290 | } |
10291 | |
10292 | // ** (A-B)*C ** |
10293 | static void ac_t0_sub_prim_mul_shade () |
10294 | { |
10295 | if (cmb.combine_ext) |
10296 | { |
10297 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10298 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10299 | GR_CMBX_ITALPHA, 0, |
10300 | GR_CMBX_ZERO, 0); |
10301 | cmb.tex |= 1; |
10302 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10303 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10304 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10305 | GR_CMBX_ZERO, 1, |
10306 | GR_CMBX_ZERO, 0); |
10307 | } else { |
10308 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10309 | GR_COMBINE_FACTOR_ONE, |
10310 | GR_COMBINE_LOCAL_ITERATED, |
10311 | GR_COMBINE_OTHER_TEXTURE); |
10312 | MULSHADE_A_PRIM (); |
10313 | A_USE_T0 (); |
10314 | } |
10315 | } |
10316 | |
10317 | static void ac_t0_sub_prim_mul_shade_mul_env () |
10318 | { |
10319 | if (cmb.combine_ext) |
10320 | { |
10321 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10322 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10323 | GR_CMBX_ITALPHA, 0, |
10324 | GR_CMBX_ZERO, 0); |
10325 | cmb.tex |= 1; |
10326 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10327 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10328 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10329 | GR_CMBX_CONSTANT_ALPHA, 0, |
10330 | GR_CMBX_ZERO, 0); |
10331 | CA_ENV (); |
10332 | } else { |
10333 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10334 | GR_COMBINE_FACTOR_ONE, |
10335 | GR_COMBINE_LOCAL_ITERATED, |
10336 | GR_COMBINE_OTHER_TEXTURE); |
10337 | MULSHADE_A_PRIM (); |
10338 | MULSHADE_A_ENV (); |
10339 | A_USE_T0 (); |
10340 | } |
10341 | } |
10342 | |
10343 | static void ac_t0_sub_shade_mul_prim () |
10344 | { |
10345 | if (cmb.combine_ext) |
10346 | { |
10347 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10348 | GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10349 | GR_CMBX_TMU_CALPHA, 0, |
10350 | GR_CMBX_ZERO, 0); |
10351 | cmb.tex |= 1; |
10352 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF); |
10353 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10354 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10355 | GR_CMBX_ZERO, 1, |
10356 | GR_CMBX_ZERO, 0); |
10357 | } else { |
10358 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10359 | GR_COMBINE_FACTOR_ONE, |
10360 | GR_COMBINE_LOCAL_ITERATED, |
10361 | GR_COMBINE_OTHER_TEXTURE); |
10362 | MULSHADE_A_PRIM (); |
10363 | A_USE_T0 (); |
10364 | } |
10365 | } |
10366 | |
10367 | static void ac__t0_mul_t1__sub_prim_mul_shade () //Aded by Gonetz |
10368 | { |
10369 | if (cmb.combine_ext) |
10370 | { |
10371 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10372 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10373 | GR_CMBX_ITALPHA, 0, |
10374 | GR_CMBX_ZERO, 0); |
10375 | CA_PRIM(); |
10376 | } |
10377 | else |
10378 | { |
10379 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10380 | GR_COMBINE_FACTOR_LOCAL, |
10381 | GR_COMBINE_LOCAL_ITERATED, |
10382 | GR_COMBINE_OTHER_TEXTURE); |
10383 | } |
10384 | A_T0_MUL_T1 (); |
10385 | } |
10386 | |
10387 | static void ac__one_sub_t1_mul_t0_add_shade__sub_prim_mul_shade () //Aded by Gonetz |
10388 | { |
10389 | // (1-t1)*t0+shade, (cmb-prim)*shade+0 |
10390 | if (cmb.combine_ext) |
10391 | { |
10392 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10393 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10394 | GR_CMBX_ZERO, 0, |
10395 | GR_CMBX_B, 0); |
10396 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_ONE_MINUS_X, |
10397 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10398 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
10399 | GR_CMBX_B, 0); |
10400 | cmb.tex |= 3; |
10401 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10402 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10403 | GR_CMBX_ITALPHA, 0, |
10404 | GR_CMBX_ZERO, 0); |
10405 | CA_PRIM(); |
10406 | } |
10407 | else |
10408 | { |
10409 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10410 | GR_COMBINE_FACTOR_LOCAL, |
10411 | GR_COMBINE_LOCAL_ITERATED, |
10412 | GR_COMBINE_OTHER_TEXTURE); |
10413 | A_T0_MUL_T1 (); |
10414 | } |
10415 | } |
10416 | |
10417 | static void ac__t1_mul_primlod_add_t0__sub_prim_mul_shade () |
10418 | { |
10419 | if (cmb.combine_ext) |
10420 | { |
10421 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10422 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10423 | GR_CMBX_ITALPHA, 0, |
10424 | GR_CMBX_ZERO, 0); |
10425 | CA_PRIM (); |
10426 | } |
10427 | else |
10428 | { |
10429 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10430 | GR_COMBINE_FACTOR_LOCAL, |
10431 | GR_COMBINE_LOCAL_ITERATED, |
10432 | GR_COMBINE_OTHER_TEXTURE); |
10433 | } |
10434 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
10435 | } |
10436 | |
10437 | static void ac__t1_mul_primlod_add_t0__sub_env_mul_prim () //Aded by Gonetz |
10438 | { |
10439 | if (cmb.combine_ext) |
10440 | { |
10441 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10442 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10443 | GR_CMBX_ITALPHA, 0, |
10444 | GR_CMBX_ZERO, 0); |
10445 | CA_ENV (); |
10446 | SETSHADE_A_PRIM (); |
10447 | } |
10448 | else |
10449 | { |
10450 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10451 | GR_COMBINE_FACTOR_LOCAL, |
10452 | GR_COMBINE_LOCAL_CONSTANT, |
10453 | GR_COMBINE_OTHER_TEXTURE); |
10454 | CA_PRIM (); |
10455 | } |
10456 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
10457 | } |
10458 | |
10459 | static void ac__t1_mul_prima_add_t0__sub_env_mul_shade () //Aded by Gonetz |
10460 | { |
10461 | if (cmb.combine_ext) |
10462 | { |
10463 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10464 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10465 | GR_CMBX_ITALPHA, 0, |
10466 | GR_CMBX_ZERO, 0); |
10467 | CA_ENV (); |
10468 | } |
10469 | else |
10470 | { |
10471 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10472 | GR_COMBINE_FACTOR_LOCAL, |
10473 | GR_COMBINE_LOCAL_ITERATED, |
10474 | GR_COMBINE_OTHER_TEXTURE); |
10475 | } |
10476 | A_T1_MUL_PRIMA_ADD_T0 (); |
10477 | } |
10478 | |
10479 | static void ac_one_sub_t0_mul_prim () //Aded by Gonetz |
10480 | { |
10481 | ACMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
10482 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10483 | GR_COMBINE_LOCAL_CONSTANT, |
10484 | GR_COMBINE_OTHER_NONE); |
10485 | CA_PRIM (); |
10486 | A_USE_T0 (); |
10487 | } |
10488 | |
10489 | static void ac_one_sub_t0_mul_shade () //Aded by Gonetz |
10490 | { |
10491 | if (rdp.aTBuffTex[0] || rdp.aTBuffTex[1]) |
10492 | { |
10493 | ACMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
10494 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10495 | GR_COMBINE_LOCAL_ITERATED, |
10496 | GR_COMBINE_OTHER_NONE); |
10497 | A_USE_T0 (); |
10498 | } |
10499 | else |
10500 | ac_zero(); |
10501 | } |
10502 | |
10503 | static void ac_one_sub_prim_mul_t0 () //Aded by Gonetz |
10504 | { |
10505 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10506 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
10507 | GR_COMBINE_LOCAL_CONSTANT, |
10508 | GR_COMBINE_OTHER_TEXTURE); |
10509 | CA_PRIM (); |
10510 | A_USE_T0 (); |
10511 | } |
10512 | |
10513 | static void ac_one_sub_env_mul_t0 () //Aded by Gonetz |
10514 | { |
10515 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10516 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
10517 | GR_COMBINE_LOCAL_CONSTANT, |
10518 | GR_COMBINE_OTHER_TEXTURE); |
10519 | CA_ENV (); |
10520 | A_USE_T0 (); |
10521 | } |
10522 | |
10523 | static void ac_one_sub_shade_mul_t0 () //Aded by Gonetz |
10524 | { |
10525 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10526 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
10527 | GR_COMBINE_LOCAL_ITERATED, |
10528 | GR_COMBINE_OTHER_TEXTURE); |
10529 | A_USE_T0 (); |
10530 | } |
10531 | |
10532 | static void ac_one_sub_shade_mul_env () //Aded by Gonetz |
10533 | { |
10534 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10535 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL, |
10536 | GR_COMBINE_LOCAL_ITERATED, |
10537 | GR_COMBINE_OTHER_CONSTANT); |
10538 | CA_ENV (); |
10539 | } |
10540 | |
10541 | static void ac_prim_sub_shade_mul_t0 () //Aded by Gonetz |
10542 | { |
10543 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10544 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10545 | GR_COMBINE_LOCAL_ITERATED, |
10546 | GR_COMBINE_OTHER_CONSTANT); |
10547 | CA_PRIM (); |
10548 | A_USE_T0 (); |
10549 | } |
10550 | |
10551 | static void ac_prim_sub_shade_mul_prim () //Aded by Gonetz |
10552 | { |
10553 | if (cmb.combine_ext) |
10554 | { |
10555 | ACMBEXT(GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_X, |
10556 | GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10557 | GR_CMBX_CONSTANT_ALPHA, 0, |
10558 | GR_CMBX_ZERO, 0); |
10559 | CA_PRIM(); |
10560 | } |
10561 | else |
10562 | { |
10563 | if (!(rdp.prim_color & 0xFF)) |
10564 | { |
10565 | ac_zero(); |
10566 | } |
10567 | else |
10568 | { |
10569 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10570 | GR_COMBINE_FACTOR_ONE, |
10571 | GR_COMBINE_LOCAL_ITERATED, |
10572 | GR_COMBINE_OTHER_CONSTANT); |
10573 | CA_PRIM(); |
10574 | } |
10575 | } |
10576 | } |
10577 | |
10578 | static void ac_shade_sub_env_mul_t0 () //Aded by Gonetz |
10579 | { |
10580 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10581 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10582 | GR_COMBINE_LOCAL_CONSTANT, |
10583 | GR_COMBINE_OTHER_ITERATED); |
10584 | CA_ENV (); |
10585 | A_USE_T0 (); |
10586 | } |
10587 | |
10588 | // ** (A-B)*C*D ** |
10589 | static void ac_one_sub_t0_mul_prim_mul_shade () //Aded by Gonetz |
10590 | { |
10591 | ACMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
10592 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10593 | GR_COMBINE_LOCAL_ITERATED, |
10594 | GR_COMBINE_OTHER_NONE); |
10595 | MULSHADE_A_PRIM (); |
10596 | A_USE_T0 (); |
10597 | } |
10598 | |
10599 | // ** (A+B)*C*D ** |
10600 | static void ac_one_plus_env_mul_prim_mul_shade () |
10601 | { |
10602 | if (cmb.combine_ext) |
10603 | { |
10604 | ACMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_ONE_MINUS_X, |
10605 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_X, |
10606 | GR_CMBX_ITALPHA, 0, |
10607 | GR_CMBX_ZERO, 0); |
10608 | MULSHADE_A_PRIM (); |
10609 | CA_ENV(); |
10610 | } |
10611 | else |
10612 | ac_prim_mul_shade (); |
10613 | } |
10614 | |
10615 | // ** (A-B)*C+A ** |
10616 | static void ac__t0_mul_t1__sub_env_mul_prim_add__t0_mul_t1 () //Aded by Gonetz |
10617 | { |
10618 | if (cmb.combine_ext) |
10619 | { |
10620 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10621 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10622 | GR_CMBX_ITALPHA, 0, |
10623 | GR_CMBX_TEXTURE_ALPHA, 0); |
10624 | CA_ENV(); |
10625 | SETSHADE_A_PRIM (); |
10626 | } |
10627 | else |
10628 | { |
10629 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10630 | GR_COMBINE_FACTOR_ONE, |
10631 | GR_COMBINE_LOCAL_NONE, |
10632 | GR_COMBINE_OTHER_TEXTURE); |
10633 | } |
10634 | A_T0_MUL_T1 (); |
10635 | } |
10636 | |
10637 | // ** (A-B)*C+D ** |
10638 | static void ac__t0_sub_prim_mul_shade_add_shade__mul_env () //Aded by Gonetz |
10639 | { |
10640 | if (cmb.combine_ext) |
10641 | { |
10642 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10643 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10644 | GR_CMBX_ITALPHA, 0, |
10645 | GR_CMBX_ITALPHA, 0); |
10646 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF) ; |
10647 | cmb.tex |= 1; |
10648 | ACMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
10649 | GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10650 | GR_CMBX_CONSTANT_ALPHA, 0, |
10651 | GR_CMBX_ZERO, 0); |
10652 | CA_ENV(); |
10653 | } |
10654 | else |
10655 | { |
10656 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10657 | GR_COMBINE_FACTOR_LOCAL, |
10658 | GR_COMBINE_LOCAL_ITERATED, |
10659 | GR_COMBINE_OTHER_TEXTURE); |
10660 | MULSHADE_A_ENV (); |
10661 | MOD_0 (TMOD_TEX_SUB_COL); |
10662 | MOD_0_COL (rdp.prim_color & 0xFF); |
10663 | A_USE_T0 (); |
10664 | } |
10665 | } |
10666 | |
10667 | static void ac_t0_sub_t1_mul_env_add_env () //Aded by Gonetz |
10668 | { |
10669 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10670 | GR_COMBINE_FACTOR_LOCAL, |
10671 | GR_COMBINE_LOCAL_CONSTANT, |
10672 | GR_COMBINE_OTHER_TEXTURE); |
10673 | CA_ENV(); |
10674 | A_T0_SUB_T1 (); |
10675 | } |
10676 | |
10677 | static void ac_t0_sub_one_mul_enva_add_t1 () //Aded by Gonetz |
10678 | { |
10679 | if (cmb.combine_ext) |
10680 | { |
10681 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10682 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10683 | GR_CMBX_ZERO, 0, |
10684 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
10685 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10686 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10687 | GR_CMBX_TMU_CALPHA, 0, |
10688 | GR_CMBX_B, 0); |
10689 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
10690 | cmb.tex |= 3; |
10691 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
10692 | GR_COMBINE_FACTOR_ONE, |
10693 | GR_COMBINE_LOCAL_CONSTANT, |
10694 | GR_COMBINE_OTHER_TEXTURE); |
10695 | CA_ENV(); |
10696 | } |
10697 | else |
10698 | { |
10699 | ac__t0_mul_t1__mul_env (); |
10700 | } |
10701 | } |
10702 | |
10703 | static void ac_t1_sub_one_mul_enva_add_t0 () //Aded by Gonetz |
10704 | { |
10705 | if (cmb.combine_ext) |
10706 | { |
10707 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10708 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10709 | GR_CMBX_ZERO, 0, |
10710 | GR_CMBX_B, 0); |
10711 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10712 | GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10713 | GR_CMBX_TMU_CALPHA, 0, |
10714 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
10715 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
10716 | SETSHADE_A (0xFF); |
10717 | cmb.tex |= 3; |
10718 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10719 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
10720 | GR_CMBX_ZERO, 1, |
10721 | GR_CMBX_ZERO, 0); |
10722 | } |
10723 | else |
10724 | { |
10725 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10726 | GR_COMBINE_FACTOR_ONE, |
10727 | GR_COMBINE_LOCAL_NONE, |
10728 | GR_COMBINE_OTHER_TEXTURE); |
10729 | A_USE_T0 (); |
10730 | } |
10731 | } |
10732 | |
10733 | static void ac_t1_sub_one_mul_primlod_add_t0 () //Aded by Gonetz |
10734 | { |
10735 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10736 | GR_COMBINE_FACTOR_ONE, |
10737 | GR_COMBINE_LOCAL_NONE, |
10738 | GR_COMBINE_OTHER_TEXTURE); |
10739 | if (cmb.combine_ext) |
10740 | { |
10741 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10742 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10743 | GR_CMBX_ZERO, 0, |
10744 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
10745 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10746 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10747 | GR_CMBX_DETAIL_FACTOR, 0, |
10748 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
10749 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
10750 | percent = (float)lod_frac / 255.0f; |
10751 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
10752 | cmb.tex |= 3; |
10753 | } |
10754 | else |
10755 | { |
10756 | // A_T0_MUL_T1 (); |
10757 | // A_T1_MUL_PRIMLOD_ADD_T0 (); |
10758 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_BLEND_LOCAL; |
10759 | cmb.tmu1_a_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR; |
10760 | percent = (255 - lod_frac) / 255.0f; |
10761 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA; |
10762 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_OTHER_ALPHA; |
10763 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
10764 | cmb.tex |= 3; |
10765 | } |
10766 | } |
10767 | |
10768 | static void ac_t1_sub_prim_mul_shade_add_prim () //Aded by Gonetz |
10769 | { |
10770 | if (cmb.combine_ext) |
10771 | { |
10772 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10773 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10774 | GR_CMBX_ITALPHA, 0, |
10775 | GR_CMBX_B, 0); |
10776 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10777 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10778 | GR_CMBX_ZERO, 1, |
10779 | GR_CMBX_ZERO, 0); |
10780 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.prim_color&0xFF) ; |
10781 | cmb.tex |= 2; |
10782 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10783 | GR_CMBX_ZERO, GR_FUNC_MODE_X, |
10784 | GR_CMBX_ZERO, 1, |
10785 | GR_CMBX_ZERO, 0); |
10786 | } |
10787 | else |
10788 | { |
10789 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10790 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10791 | GR_COMBINE_LOCAL_CONSTANT, |
10792 | GR_COMBINE_OTHER_ITERATED); |
10793 | CA_PRIM (); |
10794 | MOD_1 (TMOD_TEX_SUB_COL); |
10795 | MOD_1_COL (rdp.prim_color & 0xFF); |
10796 | A_USE_T1 (); |
10797 | } |
10798 | } |
10799 | |
10800 | static void ac_t0_sub_env_mul_prim_add_env () //Aded by Gonetz |
10801 | { |
10802 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10803 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10804 | GR_COMBINE_LOCAL_CONSTANT, |
10805 | GR_COMBINE_OTHER_ITERATED); |
10806 | SETSHADE_A_PRIM (); |
10807 | CA_ENV1MPRIM (); |
10808 | A_USE_T0 (); |
10809 | //(t0-env)*prim+env == t0*prim + env*(1-prim) |
10810 | } |
10811 | |
10812 | static void ac_t0_sub_env_mul_shadea_add_env () //Aded by Gonetz |
10813 | { |
10814 | if (!cmb.combine_ext) |
10815 | { |
10816 | ac_t0_mul_shade (); |
10817 | return; |
10818 | } |
10819 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10820 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10821 | GR_CMBX_ZERO, 1, |
10822 | GR_CMBX_ZERO, 0); |
10823 | cmb.tex |= 1; |
10824 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10825 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
10826 | GR_CMBX_ITALPHA, 0, |
10827 | GR_CMBX_B, 0); |
10828 | CA_ENV (); |
10829 | } |
10830 | |
10831 | static void ac__one_sub_t0_mul_t1_add_t0__mul_prim () //Aded by Gonetz |
10832 | { |
10833 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
10834 | GR_COMBINE_FACTOR_LOCAL, |
10835 | GR_COMBINE_LOCAL_CONSTANT, |
10836 | GR_COMBINE_OTHER_TEXTURE); |
10837 | CA_PRIM (); |
10838 | rdp.best_tex = 0; |
10839 | cmb.tex |= 3; |
10840 | cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL; |
10841 | cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL; |
10842 | cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA; |
10843 | } |
10844 | |
10845 | static void ac_one_sub_t0_mul_prim_add_t0 () //Aded by Gonetz |
10846 | { |
10847 | ACMB (GR_COMBINE_FUNCTION_BLEND, |
10848 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10849 | GR_COMBINE_LOCAL_ITERATED, |
10850 | GR_COMBINE_OTHER_CONSTANT); |
10851 | SETSHADE_A_PRIM (); |
10852 | CA (0xFF); |
10853 | A_USE_T0 (); |
10854 | } |
10855 | |
10856 | static void ac_one_sub_t0_mul_env_add_t0 () //Aded by Gonetz |
10857 | { |
10858 | ACMB (GR_COMBINE_FUNCTION_BLEND, |
10859 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10860 | GR_COMBINE_LOCAL_ITERATED, |
10861 | GR_COMBINE_OTHER_CONSTANT); |
10862 | SETSHADE_A_ENV (); |
10863 | CA (0xFF); |
10864 | A_USE_T0 (); |
10865 | } |
10866 | |
10867 | static void ac_one_sub_t0_mul_primlod_add_prim () //Aded by Gonetz |
10868 | { |
10869 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10870 | GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA, |
10871 | GR_COMBINE_LOCAL_ITERATED, |
10872 | GR_COMBINE_OTHER_CONSTANT); |
10873 | SETSHADE_A_PRIM (); |
10874 | CA_PRIMLOD(); |
10875 | A_USE_T0 (); |
10876 | } |
10877 | |
10878 | static void ac_prim_sub_t0_mul_env_add_t0 () //Aded by Gonetz |
10879 | { |
10880 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10881 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10882 | GR_COMBINE_LOCAL_ITERATED, |
10883 | GR_COMBINE_OTHER_CONSTANT); |
10884 | CA_INVENV (); |
10885 | SETSHADE_A_PRIM (); |
10886 | SETSHADE_A_ENV (); |
10887 | A_USE_T0 (); |
10888 | //(prim-t0)*env+t0 = prim*env + t0*(1-env) |
10889 | } |
10890 | |
10891 | static void ac_prim_sub_env_mul_t0_add_env () |
10892 | { |
10893 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
10894 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10895 | GR_COMBINE_LOCAL_ITERATED, |
10896 | GR_COMBINE_OTHER_CONSTANT); |
10897 | CA_PRIM (); |
10898 | SETSHADE_A_ENV (); |
10899 | A_USE_T0 (); |
10900 | } |
10901 | |
10902 | static void ac_prim_sub_env_mul_t1_add_env () |
10903 | { |
10904 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
10905 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10906 | GR_COMBINE_LOCAL_ITERATED, |
10907 | GR_COMBINE_OTHER_CONSTANT); |
10908 | CA_PRIM (); |
10909 | SETSHADE_A_ENV (); |
10910 | A_USE_T1 (); |
10911 | } |
10912 | |
10913 | static void ac_prim_sub_env_mul_t0_add_one () |
10914 | { |
10915 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10916 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10917 | GR_COMBINE_LOCAL_CONSTANT, |
10918 | GR_COMBINE_OTHER_ITERATED); |
10919 | CA (0xFF); |
10920 | SETSHADE_A_PRIMSUBENV (); |
10921 | A_USE_T0 (); |
10922 | } |
10923 | |
10924 | //Added by Gonetz |
10925 | static void ac_prim_sub_env_mul_shade_add_env () |
10926 | { |
10927 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10928 | GR_COMBINE_FACTOR_ONE, |
10929 | GR_COMBINE_LOCAL_CONSTANT, |
10930 | GR_COMBINE_OTHER_ITERATED); |
10931 | CA_ENV (); |
10932 | MULSHADE_A_PRIMSUBENV (); |
10933 | } |
10934 | |
10935 | //Added by Gonetz |
10936 | static void ac_prim_sub_env_mul_shade_add_env_mul_t1 () |
10937 | { |
10938 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10939 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10940 | GR_COMBINE_LOCAL_CONSTANT, |
10941 | GR_COMBINE_OTHER_ITERATED); |
10942 | CA_ENV (); |
10943 | MULSHADE_A_PRIMSUBENV (); |
10944 | A_USE_T1 (); |
10945 | } |
10946 | |
10947 | //Added by Gonetz |
10948 | static void ac_prim_sub_shade_mul_t0_add_shade () |
10949 | { |
10950 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
10951 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10952 | GR_COMBINE_LOCAL_ITERATED, |
10953 | GR_COMBINE_OTHER_CONSTANT); |
10954 | CA_PRIM (); |
10955 | A_USE_T0 (); |
10956 | } |
10957 | |
10958 | //Added by Gonetz |
10959 | static void ac_one_sub_shade_mul_t1_add_shade () |
10960 | { |
10961 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10962 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA, |
10963 | GR_COMBINE_LOCAL_ITERATED, |
10964 | GR_COMBINE_OTHER_TEXTURE); |
10965 | A_USE_T1 (); |
10966 | } |
10967 | |
10968 | //Added by Gonetz |
10969 | static void ac_one_sub_env_mul_shade_add_env () |
10970 | { |
10971 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
10972 | GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA, |
10973 | GR_COMBINE_LOCAL_CONSTANT, |
10974 | GR_COMBINE_OTHER_ITERATED); |
10975 | CA_ENV (); |
10976 | } |
10977 | |
10978 | //Added by Gonetz |
10979 | static void ac_env_sub_prim_mul_t0_add_prim () |
10980 | { |
10981 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
10982 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
10983 | GR_COMBINE_LOCAL_ITERATED, |
10984 | GR_COMBINE_OTHER_CONSTANT); |
10985 | CA_ENV (); |
10986 | SETSHADE_A_PRIM (); |
10987 | A_USE_T0 (); |
10988 | } |
10989 | |
10990 | static void ac_one_sub_t1_add_t0_mul_env () |
10991 | { |
10992 | if (cmb.combine_ext) |
10993 | { |
10994 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10995 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
10996 | GR_CMBX_ZERO, 0, |
10997 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
10998 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
10999 | GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
11000 | GR_CMBX_TMU_CALPHA, 0, |
11001 | GR_CMBX_B, 1); |
11002 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF); |
11003 | cmb.tex |= 3; |
11004 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11005 | GR_COMBINE_FACTOR_ONE, |
11006 | GR_COMBINE_LOCAL_NONE, |
11007 | GR_COMBINE_OTHER_TEXTURE); |
11008 | } |
11009 | else |
11010 | { |
11011 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11012 | GR_COMBINE_FACTOR_LOCAL, |
11013 | GR_COMBINE_LOCAL_CONSTANT, |
11014 | GR_COMBINE_OTHER_TEXTURE); |
11015 | CA_ENV (); |
11016 | A_T0_ADD_T1(); |
11017 | cmb.tmu1_a_invert = FXTRUE; |
11018 | } |
11019 | } |
11020 | |
11021 | static void ac_env_sub_prim_mul_shade_add_prim () //Added by Gonetz |
11022 | { |
11023 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
11024 | GR_COMBINE_FACTOR_ONE, |
11025 | GR_COMBINE_LOCAL_CONSTANT, |
11026 | GR_COMBINE_OTHER_ITERATED); |
11027 | CA_PRIM (); |
11028 | MULSHADE_A_ENVSUBPRIM (); |
11029 | } |
11030 | |
11031 | static void ac_env_sub_primshade_mul_t1_add_primshade () |
11032 | { |
11033 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
11034 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11035 | GR_COMBINE_LOCAL_ITERATED, |
11036 | GR_COMBINE_OTHER_CONSTANT); |
11037 | CA_ENV (); |
11038 | MULSHADE_A_PRIM (); |
11039 | A_USE_T1 (); |
11040 | } |
11041 | |
11042 | static void ac_one_sub_prim_mul_t0_add_prim () |
11043 | { |
11044 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
11045 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11046 | GR_COMBINE_LOCAL_ITERATED, |
11047 | GR_COMBINE_OTHER_CONSTANT); |
11048 | CA (0xFF); |
11049 | SETSHADE_A_PRIM (); |
11050 | A_USE_T0 (); |
11051 | } |
11052 | |
11053 | static void ac_one_sub_prim_mul_t0_add__prim_mul_env () |
11054 | { |
11055 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
11056 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11057 | GR_COMBINE_LOCAL_ITERATED, |
11058 | GR_COMBINE_OTHER_CONSTANT); |
11059 | CA_INVPRIM (); |
11060 | SETSHADE_A_PRIM (); |
11061 | SETSHADE_A_ENV (); |
11062 | A_USE_T0 (); |
11063 | } |
11064 | |
11065 | static void ac_shade_sub_t0_mul_primlod_add_prim () |
11066 | { |
11067 | if (cmb.combine_ext) |
11068 | { |
11069 | T0ACMBEXT(GR_CMBX_ITALPHA, GR_FUNC_MODE_X, |
11070 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11071 | GR_CMBX_TMU_CALPHA, 0, |
11072 | GR_CMBX_ZERO, 0); |
11073 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (lod_frac&0xFF); |
11074 | cmb.tex |= 1; |
11075 | ACMBEXT(GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_X, |
11076 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
11077 | GR_CMBX_ZERO, 1, |
11078 | GR_CMBX_TEXTURE_ALPHA, 0); |
11079 | CA_PRIM (); |
11080 | } |
11081 | else |
11082 | ac_t0(); |
11083 | } |
11084 | |
11085 | static void ac_shade_sub_env_mul_t0_add_prim () |
11086 | { |
11087 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
11088 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11089 | GR_COMBINE_LOCAL_CONSTANT, |
11090 | GR_COMBINE_OTHER_ITERATED); |
11091 | SUBSHADE_A_ENV (); |
11092 | CA_PRIM (); |
11093 | A_USE_T0 (); |
11094 | } |
11095 | |
11096 | // ** A inter B using C ** |
11097 | static void ac_t0_inter_t1_using_prima () |
11098 | { |
11099 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11100 | GR_COMBINE_FACTOR_ONE, |
11101 | GR_COMBINE_LOCAL_NONE, |
11102 | GR_COMBINE_OTHER_TEXTURE); |
11103 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11104 | A_T0_INTER_T1_USING_FACTOR (factor); |
11105 | } |
11106 | |
11107 | static void ac_t1_inter_t0_using_prima () |
11108 | { |
11109 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11110 | GR_COMBINE_FACTOR_ONE, |
11111 | GR_COMBINE_LOCAL_NONE, |
11112 | GR_COMBINE_OTHER_TEXTURE); |
11113 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11114 | A_T1_INTER_T0_USING_FACTOR (factor); |
11115 | } |
11116 | |
11117 | static void ac_t0_inter_t1_using_primlod () |
11118 | { |
11119 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11120 | GR_COMBINE_FACTOR_ONE, |
11121 | GR_COMBINE_LOCAL_NONE, |
11122 | GR_COMBINE_OTHER_TEXTURE); |
11123 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11124 | } |
11125 | |
11126 | static void ac_t0_inter_t1_using_enva () |
11127 | { |
11128 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11129 | GR_COMBINE_FACTOR_ONE, |
11130 | GR_COMBINE_LOCAL_NONE, |
11131 | GR_COMBINE_OTHER_TEXTURE); |
11132 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11133 | A_T0_INTER_T1_USING_FACTOR (factor); |
11134 | } |
11135 | |
11136 | static void ac_t1_inter_t0_using_enva () |
11137 | { |
11138 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11139 | GR_COMBINE_FACTOR_ONE, |
11140 | GR_COMBINE_LOCAL_NONE, |
11141 | GR_COMBINE_OTHER_TEXTURE); |
11142 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11143 | A_T1_INTER_T0_USING_FACTOR (factor); |
11144 | } |
11145 | |
11146 | //Added by Gonetz |
11147 | static void ac_t0_inter_t1_using_t0a () |
11148 | { |
11149 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11150 | GR_COMBINE_FACTOR_ONE, |
11151 | GR_COMBINE_LOCAL_NONE, |
11152 | GR_COMBINE_OTHER_TEXTURE); |
11153 | A_T0_INTER_T1_USING_T0A (); |
11154 | } |
11155 | |
11156 | //Added by Gonetz |
11157 | static void ac_t0_inter_t1_using_t1a () |
11158 | { |
11159 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11160 | GR_COMBINE_FACTOR_ONE, |
11161 | GR_COMBINE_LOCAL_NONE, |
11162 | GR_COMBINE_OTHER_TEXTURE); |
11163 | A_T0_INTER_T1_USING_T1A (); |
11164 | } |
11165 | |
11166 | //Added by Gonetz |
11167 | static void ac_t0_inter_t1_using_shadea () |
11168 | { |
11169 | if (cmb.combine_ext) |
11170 | { |
11171 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11172 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
11173 | GR_CMBX_ZERO, 1, |
11174 | GR_CMBX_ZERO, 0); |
11175 | } |
11176 | else |
11177 | { |
11178 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11179 | GR_COMBINE_FACTOR_ONE, |
11180 | GR_COMBINE_LOCAL_NONE, |
11181 | GR_COMBINE_OTHER_TEXTURE); |
11182 | } |
11183 | A_T0_INTER_T1_USING_SHADEA (); |
11184 | } |
11185 | |
11186 | // ** (A inter B using C) * D ** |
11187 | |
11188 | static void ac__t0_inter_t1_using_primlod__mul_prim () |
11189 | { |
11190 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11191 | GR_COMBINE_FACTOR_LOCAL, |
11192 | GR_COMBINE_LOCAL_CONSTANT, |
11193 | GR_COMBINE_OTHER_TEXTURE); |
11194 | CA_PRIM (); |
11195 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11196 | } |
11197 | |
11198 | static void ac__t1_mul_primlod_add_t0__mul_prim () |
11199 | { |
11200 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11201 | GR_COMBINE_FACTOR_LOCAL, |
11202 | GR_COMBINE_LOCAL_CONSTANT, |
11203 | GR_COMBINE_OTHER_TEXTURE); |
11204 | CA_PRIM (); |
11205 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
11206 | } |
11207 | |
11208 | static void ac__t0_inter_t1_using_primlod__mul_env () |
11209 | { |
11210 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11211 | GR_COMBINE_FACTOR_LOCAL, |
11212 | GR_COMBINE_LOCAL_CONSTANT, |
11213 | GR_COMBINE_OTHER_TEXTURE); |
11214 | CA_ENV (); |
11215 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11216 | } |
11217 | |
11218 | static void ac__t1_mul_primlod_add_t0__mul_env () |
11219 | { |
11220 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11221 | GR_COMBINE_FACTOR_LOCAL, |
11222 | GR_COMBINE_LOCAL_CONSTANT, |
11223 | GR_COMBINE_OTHER_TEXTURE); |
11224 | CA_ENV (); |
11225 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
11226 | } |
11227 | |
11228 | static void ac__t0_inter_t1_using_primlod__mul_shade () |
11229 | { |
11230 | if (settings.hacks & hack_Makers) |
11231 | { |
11232 | //rolling rock issue - it has zero shade alpha and thus rejected by alpha compare |
11233 | ac_t0_inter_t1_using_primlod(); |
11234 | return; |
11235 | } |
11236 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11237 | GR_COMBINE_FACTOR_LOCAL, |
11238 | GR_COMBINE_LOCAL_ITERATED, |
11239 | GR_COMBINE_OTHER_TEXTURE); |
11240 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11241 | } |
11242 | |
11243 | static void ac__t1_mul_primlod_add_t0__mul_shade () |
11244 | { |
11245 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11246 | GR_COMBINE_FACTOR_LOCAL, |
11247 | GR_COMBINE_LOCAL_ITERATED, |
11248 | GR_COMBINE_OTHER_TEXTURE); |
11249 | A_T1_MUL_PRIMLOD_ADD_T0 (); |
11250 | } |
11251 | |
11252 | //Added by Gonetz |
11253 | static void ac__t0_inter_t1_using_prima__mul_env () |
11254 | { |
11255 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11256 | GR_COMBINE_FACTOR_LOCAL, |
11257 | GR_COMBINE_LOCAL_CONSTANT, |
11258 | GR_COMBINE_OTHER_TEXTURE); |
11259 | CA_ENV (); |
11260 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11261 | A_T0_INTER_T1_USING_FACTOR (factor); |
11262 | } |
11263 | |
11264 | //Added by Gonetz |
11265 | static void ac__t1_inter_t0_using_t0a__mul_prim () |
11266 | { |
11267 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11268 | GR_COMBINE_FACTOR_LOCAL, |
11269 | GR_COMBINE_LOCAL_CONSTANT, |
11270 | GR_COMBINE_OTHER_TEXTURE); |
11271 | CA_PRIM (); |
11272 | A_T1_INTER_T0_USING_T0A (); |
11273 | } |
11274 | |
11275 | static void ac__t1_inter_t0_using_primlod__mul_prim () |
11276 | { |
11277 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11278 | GR_COMBINE_FACTOR_LOCAL, |
11279 | GR_COMBINE_LOCAL_CONSTANT, |
11280 | GR_COMBINE_OTHER_TEXTURE); |
11281 | CA_PRIM (); |
11282 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11283 | } |
11284 | |
11285 | static void ac__t1_inter_t0_using_prima__mul_env () |
11286 | { |
11287 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11288 | GR_COMBINE_FACTOR_LOCAL, |
11289 | GR_COMBINE_LOCAL_CONSTANT, |
11290 | GR_COMBINE_OTHER_TEXTURE); |
11291 | CA_ENV (); |
11292 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11293 | A_T1_INTER_T0_USING_FACTOR (factor); |
11294 | } |
11295 | |
11296 | //Added by Gonetz |
11297 | static void ac__t0_inter_t1_using_prima__mul_shade () |
11298 | { |
11299 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11300 | GR_COMBINE_FACTOR_LOCAL, |
11301 | GR_COMBINE_LOCAL_ITERATED, |
11302 | GR_COMBINE_OTHER_TEXTURE); |
11303 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11304 | A_T0_INTER_T1_USING_FACTOR (factor); |
11305 | } |
11306 | |
11307 | static void ac__t1_inter_t0_using_prima__mul_shade () |
11308 | { |
11309 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11310 | GR_COMBINE_FACTOR_LOCAL, |
11311 | GR_COMBINE_LOCAL_ITERATED, |
11312 | GR_COMBINE_OTHER_TEXTURE); |
11313 | wxUint8 factor = (wxUint8)(rdp.prim_color&0xFF); |
11314 | A_T1_INTER_T0_USING_FACTOR (factor); |
11315 | } |
11316 | |
11317 | static void ac__t0_inter_t1_using_enva__mul_prim () |
11318 | { |
11319 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11320 | GR_COMBINE_FACTOR_LOCAL, |
11321 | GR_COMBINE_LOCAL_CONSTANT, |
11322 | GR_COMBINE_OTHER_TEXTURE); |
11323 | CA_PRIM (); |
11324 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11325 | A_T0_INTER_T1_USING_FACTOR (factor); |
11326 | } |
11327 | |
11328 | static void ac__env_sub_one_mul_t1_add_t0__mul_prim () |
11329 | { |
11330 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11331 | GR_COMBINE_FACTOR_LOCAL, |
11332 | GR_COMBINE_LOCAL_CONSTANT, |
11333 | GR_COMBINE_OTHER_TEXTURE); |
11334 | CA_PRIM (); |
11335 | if (cmb.combine_ext) |
11336 | { |
11337 | T1ACMBEXT(GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_X, |
11338 | GR_CMBX_ITALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11339 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0, |
11340 | GR_CMBX_ZERO, 0); |
11341 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11342 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11343 | GR_CMBX_ZERO, 1, |
11344 | GR_CMBX_ZERO, 0); |
11345 | SETSHADE_A(0xFF); |
11346 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (rdp.env_color&0xFF) ; |
11347 | cmb.tex |= 3; |
11348 | } |
11349 | else |
11350 | { |
11351 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11352 | A_T0_INTER_T1_USING_FACTOR (factor); |
11353 | } |
11354 | } |
11355 | |
11356 | static void ac__t0_inter_t1_using_enva__mul_primlod () |
11357 | { |
11358 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11359 | GR_COMBINE_FACTOR_LOCAL, |
11360 | GR_COMBINE_LOCAL_CONSTANT, |
11361 | GR_COMBINE_OTHER_TEXTURE); |
11362 | CA_PRIMLOD (); |
11363 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11364 | A_T0_INTER_T1_USING_FACTOR (factor); |
11365 | } |
11366 | |
11367 | static void ac__t1_mul_enva_add_t0__sub_prim_mul_shade () |
11368 | { |
11369 | if (cmb.combine_ext) |
11370 | { |
11371 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11372 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11373 | GR_CMBX_ITALPHA, 0, |
11374 | GR_CMBX_ZERO, 0); |
11375 | CA_PRIM (); |
11376 | } |
11377 | else |
11378 | { |
11379 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL, |
11380 | GR_COMBINE_FACTOR_LOCAL, |
11381 | GR_COMBINE_LOCAL_ITERATED, |
11382 | GR_COMBINE_OTHER_TEXTURE); |
11383 | MULSHADE_A_PRIM (); |
11384 | } |
11385 | A_T1_MUL_ENVA_ADD_T0 (); |
11386 | } |
11387 | |
11388 | //Added by Gonetz |
11389 | static void ac__t0_inter_t1_using_t0a__mul_prim () |
11390 | { |
11391 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11392 | GR_COMBINE_FACTOR_LOCAL, |
11393 | GR_COMBINE_LOCAL_CONSTANT, |
11394 | GR_COMBINE_OTHER_TEXTURE); |
11395 | CA_PRIM (); |
11396 | A_T0_INTER_T1_USING_T0A (); |
11397 | } |
11398 | |
11399 | //Added by Gonetz |
11400 | static void ac__t0_inter_t1_using_t1a__mul_prim () |
11401 | { |
11402 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11403 | GR_COMBINE_FACTOR_LOCAL, |
11404 | GR_COMBINE_LOCAL_CONSTANT, |
11405 | GR_COMBINE_OTHER_TEXTURE); |
11406 | CA_PRIM (); |
11407 | A_T0_INTER_T1_USING_T1A (); |
11408 | } |
11409 | |
11410 | static void ac__t0_inter_t1_using_t1a__mul_shade () |
11411 | { |
11412 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11413 | GR_COMBINE_FACTOR_LOCAL, |
11414 | GR_COMBINE_LOCAL_ITERATED, |
11415 | GR_COMBINE_OTHER_TEXTURE); |
11416 | A_T0_INTER_T1_USING_T1A (); |
11417 | } |
11418 | |
11419 | //Added by Gonetz |
11420 | static void ac__t0_inter_t1_using_shadea__mul_prim () |
11421 | { |
11422 | if (cmb.combine_ext) |
11423 | { |
11424 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11425 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
11426 | GR_CMBX_CONSTANT_ALPHA, 0, |
11427 | GR_CMBX_ZERO, 0); |
11428 | A_T0_INTER_T1_USING_SHADEA (); |
11429 | } |
11430 | else |
11431 | { |
11432 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11433 | GR_COMBINE_FACTOR_LOCAL, |
11434 | GR_COMBINE_LOCAL_CONSTANT, |
11435 | GR_COMBINE_OTHER_TEXTURE); |
11436 | A_T0_INTER_T1_USING_FACTOR (0x7F); |
11437 | } |
11438 | CA_PRIM (); |
11439 | } |
11440 | |
11441 | //Added by Gonetz |
11442 | static void ac__t0_inter_t1_using_shadea__mul_env () |
11443 | { |
11444 | if (cmb.combine_ext) |
11445 | { |
11446 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11447 | GR_CMBX_ITALPHA, GR_FUNC_MODE_ZERO, |
11448 | GR_CMBX_CONSTANT_ALPHA, 0, |
11449 | GR_CMBX_ZERO, 0); |
11450 | A_T0_INTER_T1_USING_SHADEA (); |
11451 | } |
11452 | else |
11453 | { |
11454 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11455 | GR_COMBINE_FACTOR_LOCAL, |
11456 | GR_COMBINE_LOCAL_CONSTANT, |
11457 | GR_COMBINE_OTHER_TEXTURE); |
11458 | A_T0_INTER_T1_USING_FACTOR (0x7F); |
11459 | } |
11460 | CA_ENV (); |
11461 | } |
11462 | |
11463 | static void ac__t0_inter_t1_using_primlod__sub_env_mul_shade_add_shade () |
11464 | { |
11465 | if (cmb.combine_ext) |
11466 | { |
11467 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11468 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11469 | GR_CMBX_ITALPHA, 0, |
11470 | GR_CMBX_ALOCAL, 0); |
11471 | CA_ENV (); |
11472 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11473 | } |
11474 | else |
11475 | ac__t0_inter_t1_using_primlod__mul_shade (); |
11476 | } |
11477 | |
11478 | //Added by Gonetz |
11479 | static void ac__t0_inter_t1_using_enva__mul_shade () |
11480 | { |
11481 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11482 | GR_COMBINE_FACTOR_LOCAL, |
11483 | GR_COMBINE_LOCAL_ITERATED, |
11484 | GR_COMBINE_OTHER_TEXTURE); |
11485 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11486 | A_T0_INTER_T1_USING_FACTOR (factor); |
11487 | } |
11488 | |
11489 | static void ac__t0_inter_t1_using_primlod__mul_prim_add_env () |
11490 | { |
11491 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
11492 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11493 | GR_COMBINE_LOCAL_CONSTANT, |
11494 | GR_COMBINE_OTHER_ITERATED); |
11495 | CA_ENV (); |
11496 | SETSHADE_A_PRIM (); |
11497 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11498 | } |
11499 | |
11500 | //Added by Gonetz |
11501 | static void ac__t0_inter_t1_using_primlod__mul_shade_add_prim () |
11502 | { |
11503 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL, |
11504 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11505 | GR_COMBINE_LOCAL_CONSTANT, |
11506 | GR_COMBINE_OTHER_ITERATED); |
11507 | CA_PRIM (); |
11508 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11509 | } |
11510 | |
11511 | //Added by Gonetz |
11512 | static void ac__t0_inter_t1_using_primlod__mul_env_add__t0_inter_t1_using_primlod () |
11513 | { |
11514 | if (cmb.combine_ext) |
11515 | { |
11516 | ACMBEXT(GR_CMBX_ZERO, GR_FUNC_MODE_ZERO, |
11517 | GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11518 | GR_CMBX_CONSTANT_ALPHA, 0, |
11519 | GR_CMBX_B, 0); |
11520 | CA_ENV (); |
11521 | } |
11522 | else |
11523 | { |
11524 | ACMB (GR_COMBINE_FUNCTION_BLEND, |
11525 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11526 | GR_COMBINE_LOCAL_CONSTANT, |
11527 | GR_COMBINE_OTHER_ITERATED); |
11528 | SETSHADE_A_ENV (); |
11529 | CA (0xFF); |
11530 | } |
11531 | A_T0_INTER_T1_USING_FACTOR (lod_frac); |
11532 | } |
11533 | |
11534 | static void ac__t1_sub_one_mul_enva_add_t0__mul_prim () |
11535 | { |
11536 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11537 | GR_COMBINE_FACTOR_LOCAL, |
11538 | GR_COMBINE_LOCAL_CONSTANT, |
11539 | GR_COMBINE_OTHER_TEXTURE); |
11540 | CA_PRIM (); |
11541 | if (cmb.combine_ext) |
11542 | { |
11543 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
11544 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
11545 | GR_CMBX_ZERO, 0, |
11546 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
11547 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11548 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11549 | GR_CMBX_DETAIL_FACTOR, 0, |
11550 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
11551 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
11552 | cmb.tex |= 3; |
11553 | cmb.dc0_detailmax = cmb.dc1_detailmax = (float)(rdp.env_color&0xFF) / 255.0f; |
11554 | } |
11555 | else |
11556 | { |
11557 | // (t1-1)*env+t0, (cmb-0)*prim+0 |
11558 | A_T0_MUL_T1 (); |
11559 | |
11560 | MOD_1 (TMOD_TEX_SCALE_FAC_ADD_FAC); |
11561 | MOD_1_FAC (rdp.env_color & 0xFF); |
11562 | } |
11563 | } |
11564 | |
11565 | static void ac__one_inter_t0_using_prim__mul_env () |
11566 | { |
11567 | if (cmb.combine_ext) |
11568 | { |
11569 | T0ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11570 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11571 | GR_CMBX_DETAIL_FACTOR, 0, |
11572 | GR_CMBX_B, 0); |
11573 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | (0xFF) ; |
11574 | cmb.tex |= 1; |
11575 | cmb.dc0_detailmax = cmb.dc1_detailmax = (float)(rdp.prim_color&0xFF) / 255.0f; |
11576 | ACMBEXT(GR_CMBX_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11577 | GR_CMBX_CONSTANT_ALPHA, GR_FUNC_MODE_ZERO, |
11578 | GR_CMBX_CONSTANT_ALPHA, 0, |
11579 | GR_CMBX_ZERO, 0); |
11580 | CA_ENV (); |
11581 | } |
11582 | else |
11583 | { |
11584 | ac_t0_mul_prim_add_env (); |
11585 | } |
11586 | } |
11587 | |
11588 | static void ac__t1_sub_one_mul_enva_add_t0__mul_shade () |
11589 | { |
11590 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER, |
11591 | GR_COMBINE_FACTOR_LOCAL, |
11592 | GR_COMBINE_LOCAL_ITERATED, |
11593 | GR_COMBINE_OTHER_TEXTURE); |
11594 | CA_PRIM (); |
11595 | if (cmb.combine_ext) |
11596 | { |
11597 | T1ACMBEXT(GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
11598 | GR_CMBX_LOCAL_TEXTURE_ALPHA, GR_FUNC_MODE_ZERO, |
11599 | GR_CMBX_ZERO, 0, |
11600 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
11601 | T0ACMBEXT(GR_CMBX_OTHER_TEXTURE_ALPHA, GR_FUNC_MODE_X, |
11602 | GR_CMBX_TMU_CALPHA, GR_FUNC_MODE_NEGATIVE_X, |
11603 | GR_CMBX_DETAIL_FACTOR, 0, |
11604 | GR_CMBX_LOCAL_TEXTURE_ALPHA, 0); |
11605 | cmb.tex_ccolor = (cmb.tex_ccolor&0xFFFFFF00) | 0xFF ; |
11606 | percent = (rdp.env_color&0xFF) / 255.0f; |
11607 | cmb.dc0_detailmax = cmb.dc1_detailmax = percent; |
11608 | cmb.tex |= 3; |
11609 | } |
11610 | else |
11611 | { |
11612 | wxUint8 factor = (wxUint8)(rdp.env_color&0xFF); |
11613 | A_T0_INTER_T1_USING_FACTOR (factor); |
11614 | } |
11615 | } |
11616 | |
11617 | static void ac_zero_sub_prim_mul_t0_add_prim () |
11618 | { |
11619 | ACMB (GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL, |
11620 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11621 | GR_COMBINE_LOCAL_CONSTANT, |
11622 | GR_COMBINE_OTHER_ITERATED); |
11623 | SETSHADE_A (0); |
11624 | CA_PRIM (); |
11625 | A_USE_T0 (); |
11626 | } |
11627 | |
11628 | static void ac_one_sub_t0_mul_primshade () |
11629 | { |
11630 | ACMB (GR_COMBINE_FUNCTION_BLEND_LOCAL, |
11631 | GR_COMBINE_FACTOR_TEXTURE_ALPHA, |
11632 | GR_COMBINE_LOCAL_ITERATED, |
11633 | GR_COMBINE_OTHER_NONE); |
11634 | MULSHADE_A_PRIM (); |
11635 | A_USE_T0 (); |
11636 | } |
11637 | |
11638 | //**************************************************************** |
11639 | // Combine List |
11640 | // |
11641 | // 3/13/02: I have converted the combine descriptions, now using |
11642 | // the correct values for each slot, instead of a one-for-all- |
11643 | // slot version. All of the descriptions marked with 'z' have |
11644 | // not yet been converted or checked. I have not totally redone |
11645 | // the modes, because they should be for the most part correct |
11646 | // as they are, even with the wrong descriptions. [Dave2001] |
11647 | //**************************************************************** |
11648 | |
11649 | typedef void (*cmb_func)(); |
11650 | typedef struct { |
11651 | wxUint32 key; |
11652 | cmb_func func; |
11653 | } COMBINER; |
11654 | |
11655 | static COMBINER color_cmb_list[] = { |
11656 | // { #CCSTART } |
11657 | // intro, Aidyn Chronicles. Added by Gonetz |
11658 | // (0-cmb)*env+cmb, (t1-t0)*0+t0 |
11659 | {0x05083812, cc_t0}, |
11660 | //terminal, Spacestation Silicon Valley. Added by Gonetz |
11661 | // (0-0)*0+cmb, (0-0)*0+prim |
11662 | {0x1fff7fff, cc_prim}, |
11663 | //chip in Spacestation Silicon Valley intro. Added by Gonetz |
11664 | // (0-0)*0+cmb, (prim-0)*shade+0 |
11665 | {0x1fffe4f3, cc_prim_mul_shade}, |
11666 | // car, beetle adventure racing. Added by Gonetz |
11667 | // (t1-t0)*t0+t0, (cmb-shade)*prima+shade **can work incorrect** |
11668 | {0x21128a40, cc__t0_inter_t1_using_t0__sub_shade_mul_prima_add_shade}, |
11669 | // Treasure opening, zelda |
11670 | // (t1-prim)*t0+t0, (prim-env)*cmb+env |
11671 | {0x2132a053, cc_prim_sub_env_mul__t1_sub_prim_mul_t0_add_t0__add_env}, |
11672 | // yellow carpet, Pokemon Stadium 2 |
11673 | // (t1-env)*t0+t0, (cmb-0)*shade+0 |
11674 | {0x2152e4f0, cc__t1_sub_env_mul_t0_add_t0__mul_shade}, |
11675 | // Water, doubut no mori |
11676 | // (t1-0)*t0+t0, (prim-0)*shade+cmb |
11677 | {0x21f204f3, cc__t1_mul_t0_add_t0__add_prim_mul_shade}, |
11678 | // enemy transparent, paper mario. Addd by Gonetz |
11679 | // (t1-t0)*t1+t0, (env-prim)*cmb+prim |
11680 | {0x22126035, cc_env_sub_prim_mul__t0_inter_t1_using_t1__add_prim}, |
11681 | // snowhead temple, zelda 2. Addd by Gonetz |
11682 | // (t1-t0)*t1+t0, (cmb-0)*shade+prim |
11683 | {0x221264f0, cc__t0_inter_t1_using_t1__mul_shade_add_prim}, |
11684 | // snowhead temple entrance, zelda 2. Addd by Gonetz |
11685 | // (t1-t0)*t1+t0, (cmb-0)*prim+shade |
11686 | {0x221283f0, cc__t0_inter_t1_using_t1__mul_prim_add_shade}, |
11687 | // teleportation, Spacestation Silicon Valley. Added by Gonetz |
11688 | // (t1-t0)*t1+t0, (prim-env)*cmb+env |
11689 | {0x2212a053, cc_prim_sub_env_mul__t0_inter_t1_using_t1__add_env}, |
11690 | // pokemon fainted, Pokemon Stadium 2 |
11691 | // (prim-t0)*t1+t0 |
11692 | {0x22132213, cc_prim_sub_t0_mul_t1_add_t0}, |
11693 | // attack, Ogre Battle 64 |
11694 | // (1-t0)*t1+t0, (cmb-0)*prim+0 |
11695 | {0x2216e3f0, cc__t0_inter_one_using_t1__mul_prim}, |
11696 | // Some gannon spell, zelda |
11697 | // (t1-0)*t1+t0, (prim-0)*cmb+0 |
11698 | {0x22f2e0f3, cc__t1_mul_t1_add_t0__mul_prim}, |
11699 | // battle tanks 2 [Ogy] |
11700 | // (1-0)*t1+t0, (env-prim)*cmb+prim |
11701 | {0x22f66035, cc_env_sub_prim_mul__t0_add_t1__add_prim}, |
11702 | // GASP Fighters |
11703 | // (1-0)*t1+t0, (shade-0)*cmb+0 |
11704 | {0x22f6e0f4, cc__t0_add_t1__mul_shade}, |
11705 | // parts of a car, F1 World Grand Prix. Added by Gonetz |
11706 | // (1-0)*t1+t0, (cmb-0)*shade+0 |
11707 | {0x22f6e4f0, cc__t0_add_t1__mul_shade}, |
11708 | // ???, zelda |
11709 | // (noise-0)*t1+t0, (prim-env)*cmb+env |
11710 | {0x22f7a053, cc_prim_sub_env_mul__t0_add_t1__add_env}, |
11711 | // flashing arrow over buoy, wave race. Added by Gonetz |
11712 | // (t1-t0)*prim+t0, (env-cmb)*enva+cmb ** INC ** |
11713 | {0x23120c05, cc__t0_inter_t1_using_prim__inter_env_using_enva}, |
11714 | // ground, zelda2. Added by Gonetz |
11715 | // (t1-t0)*prim+t0, (cmb-0)*shade+0 |
11716 | {0x2312e4f0, cc__t0_inter_t1_using_prim__mul_shade}, |
11717 | // wwf rules |
11718 | // (env-t0)*prim+t0 |
11719 | {0x23152315, cc_t0_inter_env_using_prim}, |
11720 | // Paper Mario |
11721 | // (1-t0)*prim+t0, (1-t0)*t0+cmb ** INC ** |
11722 | {0x23160116, cc_t0_add_prim_mul_one_sub_t0_add_t0}, |
11723 | // intro, castlevania. Added by Gonetz |
11724 | // (1-t0)*prim+t0 |
11725 | {0x23162316, cc_one_sub_t0_mul_prim_add_t0}, |
11726 | // Explosions, aerofighter's assault |
11727 | // (1-t0)*prim+t0, (shade-0)*cmb+0 |
11728 | {0x2316e0f4, cc_t0_mul_shade}, |
11729 | //beetle adventure racing. Added by Gonetz |
11730 | // (1-t0)*prim+t0, (cmb-0)*shade+0 **INC** |
11731 | {0x2316e4f0, cc__t0_inter_one_using_prim__mul_shade}, |
11732 | // Unknown player background, smash bros |
11733 | // (noise-t0)*prim+t0 ** INC ** |
11734 | // {0x23172317, cc_t0}, |
11735 | {0x23172317, cc_t0_inter_noise_using_prim}, |
11736 | // paper mario. Added by Gonetz |
11737 | // (noise-prim)*prim+t0 ** INC ** |
11738 | {0x23372337, cc_t0_add_prim}, |
11739 | // strange mirror in stone temple, zelda 2. Added by Gonetz |
11740 | // (prim-env)*prim+t0, (cmb-0)*prim+0 ** INC ** |
11741 | {0x2353e3f0, cc__prim_sub_env_mul_prim_add_t0__mul_prim}, |
11742 | // Gilded sword, zelda 2. Added by Gonetz |
11743 | // (shade-env)*prim+t0, (cmb-0)*shade+env ** INC ** |
11744 | {0x2354a4f0, cc__t0_add_prim_mul_shade__mul_shade_add_env}, |
11745 | // Razor sword, zelda 2. Added by Gonetz |
11746 | // (shade-env)*prim+t0, (cmb-0)*shade+0 ** INC ** |
11747 | {0x2354e4f0, cc__t0_add_prim_mul_shade__mul_shade}, |
11748 | // menu, Mischief Makers. Added by Gonetz |
11749 | // (0-env)*prim+t0, (cmb-0)*shade+0 |
11750 | {0x235f235f, cc_t0_sub__prim_mul_env}, |
11751 | // Deadly Arts logo. Added by Gonetz |
11752 | // (t0-0)*prim+t0 |
11753 | {0x23f123f1, cc_t0_mul_prim}, |
11754 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
11755 | // (shade-0)*prim+t0, (cmb-0)*shade+0 ** INC ** |
11756 | {0x23f4e4f0, cc_t0_mul_shade}, |
11757 | // Mischief Makers logo. Added by Gonetz |
11758 | // (env-0)*prim+t0 |
11759 | {0x23f523f5, cc_prim_mul_env_add_t0}, |
11760 | // Taken out bomb, zelda |
11761 | // (1-0)*prim+t0 |
11762 | {0x23f623f6, cc_t0_add_prim}, |
11763 | // waterfall, Dobutsu_no_Mori |
11764 | // (1-0)*prim+t0, (cmb-0)*shade+t0 |
11765 | {0x23f624f0, cc__t0_add_prim__mul_shade_add_t0}, |
11766 | // waterfall, Dobutsu_no_Mori |
11767 | // (1-0)*prim+t0, (cmb-0)*shade+t1 |
11768 | {0x23f644f0, cc__t0_add_prim__mul_shade_add_t1}, |
11769 | // Jabu-Jabu's Belly, zelda |
11770 | // (noise-0)*prim+t0 |
11771 | {0x23f723f7, cc_t0_add_prim}, |
11772 | // carmagedon |
11773 | // (0-0)*prim+t0 |
11774 | {0x23ff23ff, cc_t0}, |
11775 | // water, diddy kong racing. Added by Gonetz |
11776 | // (t1-t0)*shade+t0, (env-cmb)*env_a+cmb **INC** |
11777 | {0x24120c05, cc__t0_inter_t1_using_shade__inter_env_using_enva}, |
11778 | // Advertisement hoarding, Mia Soccer. Added by Gonetz |
11779 | // (t1-t0)*shade+t0, (1-0)*cmb+0 |
11780 | {0x2412e0f6, cc_t0_inter_t1_using_shade}, |
11781 | // ground, f-zero x |
11782 | // (prim-t0)*shade+t0 ** INC ** |
11783 | {0x24132413, cc__one_sub_prim_mul_shade__mul_t0_add__prim_mul_shade}, |
11784 | // intro, F1 Racing Championship. Added by Gonetz |
11785 | // (env-t0)*shade+t0 ** INC * |
11786 | {0x24152415, cc_one_sub_t0_mul_shade_add_t0}, |
11787 | // Sky, pilotwings |
11788 | // (1-t0)*shade+t0 |
11789 | {0x24162416, cc_one_sub_t0_mul_shade_add_t0}, |
11790 | // zelda 2 [Ogy]. Added by Gonetz |
11791 | // (prim-env)*shade+t0, (prim-prim)*shade+cmb ** INC ** ? |
11792 | {0x24530433, cc_prim_sub_env_mul_shade_add_t0}, |
11793 | // waves, Dr. Mario |
11794 | // (0-center)*shade+t0 |
11795 | {0x246f246f, cc_t0_sub__shade_mul_center}, |
11796 | // lums, Rayman2. Added by Gonetz |
11797 | // (t0-0)*shade+t0 ** INC ** |
11798 | {0x24f124f1, cc_t0}, //this one works better |
11799 | // {0x24f124f1, cc_t0_mul_shade}, |
11800 | // Goemon, mystical ninja. Added by Gonetz |
11801 | // (prim-0)*shade+t0 |
11802 | {0x24f324f3, cc_prim_mul_shade_add_t0}, |
11803 | // Sky, waverace |
11804 | //z (t1-t0)*env+t0 ** INC ** |
11805 | {0x25122512, cc_t0_inter_t1_using_env}, |
11806 | // Rare logo, Jet Force. Added by Gonetz |
11807 | // (t1-t0)*env+t0, (cmb-0)*prim+0 ** INC ** |
11808 | {0x2512e3f0, cc__t0_inter_t1_using_enva__mul_prim}, |
11809 | // ridge recer, unimp log. Added by Gonetz |
11810 | // (t1-t0)*env+t0, (cmb-0)*shade+0 ** INC ** |
11811 | {0x2512e4f0, cc__t0_inter_t1_using_env__mul_shade}, |
11812 | // menu, Mischief Makers. Added by Gonetz |
11813 | //(prim-t0)*env+t0 ** INC ** |
11814 | {0x25132513, cc_one_sub_env_mul_t0_add_prim_mul_env}, |
11815 | // Battle border, quest64 |
11816 | // (1-t0)*env+t0 |
11817 | {0x25162516, cc_one_sub_env_mul_t0_add_env}, |
11818 | // Paper Mario |
11819 | // (noise-t0)*env+t0 |
11820 | {0x25172517, cc_t0_inter_noise_using_env}, |
11821 | // the lamp in the bomb shop in town, zelda 2 [Ogy]. Added by Gonetz |
11822 | // (t0-t1)*env+t0, (1-env)*prim+cmb ** INC ** |
11823 | {0x25210356, cc_one_sub_env_mul_prim_add__t0_inter_t1_using_env}, |
11824 | // Darmani's necklace, zelda 2 [Ogy]. Added by Gonetz |
11825 | // (prim-shade)*env+t0, (cmb-0)*shade+0 ** INC ** |
11826 | {0x2543e4f0, cc_t0_mul_shade_add_prim_mul_env}, |
11827 | // {0x2543e4f0, cc_t0_mul_shade}, |
11828 | // mystical ninja. Added by Gonetz |
11829 | // (1-0)*env+t0 |
11830 | {0x25f625f6, cc_t0_add_env}, |
11831 | // smoke, Starshot. Added by Gonetz |
11832 | // (1-0)*env+t0, (1-0)*cmb+0 |
11833 | {0x25f6e0f6, cc_t0_add_env}, |
11834 | // mega shock, Paper Mario. Added by Gonetz |
11835 | // (t1-0)*scale+t0, (env-center)*cmb+prim |
11836 | {0x26f26065, cc__t0_add__t1_mul_scale__mul_env_sub_center_add_prim}, |
11837 | // character select, Duck Dodgers. Added by Gonetz |
11838 | // (prim-t0)*t0_alpha+t0, (cmb-0)*shade+0 **INC** |
11839 | {0x2813e4f0, cc__t0_inter_prim_using_t0a__mul_shade}, |
11840 | // intro, Duck Dodgers. Added by Gonetz |
11841 | // (shade-t0)*t0_alpha+t0 **INC** |
11842 | {0x28142814, cc_t0_inter_shade_using_t0a}, |
11843 | // vermilion gym torches, Pokemon Stadium 2. |
11844 | // (prim-env)*t0_a+t0, (cmb-cmb)*cmb+cmb |
11845 | {0x28530000, cc_prim_sub_env_mul_t0a_add_t0}, |
11846 | // F1 World Grand Prix. Added by Gonetz |
11847 | // (prim-0)*t0_a+t0, (cmb-0)*shade+0 ** INC ** |
11848 | {0x28f3e4f0, cc__t0a_mul_prim_add_t0__mul_shade}, |
11849 | // battle tanks 2 [Ogy] |
11850 | // (env-0)*t0_a+t0, (cmb-0)*shade+0 |
11851 | {0x28f5e4f0, cc__t0a_mul_env_add_t0__mul_shade}, |
11852 | // blastcorps, unimp log. Added by Gonetz |
11853 | // (t1-t0)*t1_alpha+t0 |
11854 | {0x29122912, cc_t0_inter_t1_using_t1a}, |
11855 | // paper mario. Added by Gonetz |
11856 | // (t1-t0)*t1_alpha+t0, (cmb-env)*env_a+env |
11857 | {0x2912ac50, cc__t0_inter_t1_using_t1a__sub_env_mul_enva_add_env}, |
11858 | // Rally 2000. Added by Gonetz |
11859 | // (t1-t0)*t1_alpha+t0, (cmb-0)*shade+0 |
11860 | {0x2912e4f0, cc__t0_inter_t1_using_t1a__mul_shade}, |
11861 | // ??? in zelda ending, zelda |
11862 | // (1-0)*t1_alpha+t0, (prim-env)*cmb+env |
11863 | {0x29f6a053, cc_prim_sub_env_mul__t0_add_t1a__add_env}, |
11864 | // Sky, zelda |
11865 | //z (t1-t0)*prim_a+t0 |
11866 | {0x2a122a12, cc_t0_inter_t1_using_prima}, |
11867 | // battle tanks [Ogy] |
11868 | // (t1-t0)*prim_a+t0, (env-prim)*cmb+prim |
11869 | {0x2a126035, cc_env_sub_prim_mul__t0_inter_t1_using_prima__add_prim}, |
11870 | // clothes, zelda 2. Added by Gonetz |
11871 | // (t1-t0)*prim_a+t0, (prim-env)*cmb+env |
11872 | {0x2a12a053, cc_prim_sub_env_mul__t0_inter_t1_using_prima__add_env}, |
11873 | // N64 BIOS |
11874 | // (t1-t0)*prim_a+t0, (cmb-0)*shade+0 |
11875 | {0x2a12e0f4, cc__t0_inter_t1_using_prima__mul_shade}, |
11876 | // flame, Doraemon 2. Added by Gonetz |
11877 | // (t1-t0)*prim_a+t0, (cmb-0)*prim+0 |
11878 | {0x2a12e3f0, cc__t0_inter_t1_using_prima__mul_prim}, |
11879 | // logo, PD. Added by Gonetz |
11880 | // (t1-t0)*prim_a+t0, (cmb-0)*shade+0 |
11881 | {0x2a12e4f0, cc__t0_inter_t1_using_prima__mul_shade}, |
11882 | // Pikachu |
11883 | // (prim-t0)*prim_a+t0, (env-cmb)*enva+cmb |
11884 | {0x2a130c05, cc__t0_inter_prim_using_prima__inter_env_using_enva}, |
11885 | // 1080 snowboarding [Ogy] - 7/03/02 fixed by Dave2001. 15 Mar 2005 fixed by Gonetz. |
11886 | // (prim-t0)*prim_a+t0 |
11887 | {0x2a132a13, cc_t0_inter_prim_using_prima}, |
11888 | // menu background, Paper Mario |
11889 | // (prim-t0)*prim_a+t0, (prim-t1)*prim_a+t1 |
11890 | {0x2a134a23, cc_t0_inter_prim_using_prima}, |
11891 | // {0x2a134a23, cc_t0}, |
11892 | // Mickey USA |
11893 | // (prim-t0)*prim_a+t0, (cmb-0)*shade+0 ** INC ** |
11894 | {0x2a13e4f0, cc_t0_mul_shade}, |
11895 | // gunfire, Sin and Punishmen. Added by Gonetz |
11896 | // (env-t0)*prima+t0 **INC** |
11897 | {0x2a152a15, cc_t0_inter_env_using_prima}, |
11898 | // Mystical Ninja |
11899 | // (0-t0)*prima+t0, (prim-env)*cmb+env ** INC ** |
11900 | {0x2a1fa053, cc_prim_sub_env_mul__t0_sub_t0_mul_prima__add_env}, |
11901 | // foresight attack, Pokemon Stadium 2. |
11902 | // (t1-prim)*prim_a+t0, (prim-env)*cmb+env |
11903 | {0x2a32a053, cc_prim_sub_env_mul__t1_sub_prim_mul_prima_add_t0__add_env}, |
11904 | // arena, Pokemon Stadium 2. Added by Gonetz |
11905 | // (shade-prim)*prim_a+t0 ** INC ** |
11906 | {0x2a342a34, cc_t0_mul_shade}, |
11907 | // Torches, Paper Mario |
11908 | // (t1-k4)*prim_a+t0, (t1-k4)*cmb_a+cmb ** INC ** |
11909 | {0x2a720772, cc_t1_sub_k4_mul_prima_add_t0}, |
11910 | // GASP Fighters. Added by Gonetz |
11911 | // (t0-0)*prim_a+t0, (cmb-center)*scale+0 ** INC ** |
11912 | {0x2af1e660, cc__t0_mul_prima_add_t0__sub_center_mul_scale}, |
11913 | // F1 World Grand Prix. Added by Gonetz |
11914 | // (t1-0)*prim_a+t0, (cmb-0)*shade+env |
11915 | {0x2af2a4f0, cc__t1_mul_prima_add_t0__mul_shade_add_env}, |
11916 | // tidal wave, Paper Mario. Added by Gonetz |
11917 | // (prim-0)*prim_a+t0 |
11918 | {0x2af32af3, cc_prim_mul_prima_add_t0}, |
11919 | //Spacestation Silicon Valley intro. Added by Gonetz |
11920 | // (t1-t0)*shade_alpha+t0, (prim-shade)*cmb+shade ** INC ** |
11921 | {0x2b128043, cc_prim_sub_shade_mul__t0_inter_t1_using_shadea__add_shade}, |
11922 | // water, Rocket Robot in Wheels |
11923 | // (t1-t0)*shade_alpha+t0, (env-shade)*cmb+shade ** INC ** |
11924 | {0x2b128045, cc_env_sub_shade_mul__t0_inter_t1_using_shadea__add_shade}, |
11925 | // arena, Pokemon Stadium 2 |
11926 | // (t1-t0)*shade_alpha+t0, (cmb-prim)*env+shade ** INC ** |
11927 | {0x2b128530, cc__t0_inter_t1_using_shadea__sub_prim_mul_env_add_shade}, |
11928 | // Rocket Robot in Wheels intro |
11929 | // (t1-t0)*shade_a+t0, (shade-0)*cmb+0 ** INC ** |
11930 | {0x2b12e0f4, cc__t0_inter_t1_using_shadea__mul_shade}, |
11931 | // water, Mickey USA |
11932 | // (t1-t0)*shade_a+t0, (cmb-0)*shade+0 ** INC ** |
11933 | {0x2b12e4f0, cc__t0_inter_t1_using_shadea__mul_shade}, |
11934 | // Extreme G. Added by Gonetz |
11935 | // (shade-t0)*shade_alpha+t0 |
11936 | {0x2b142b14, cc_shade_sub_t0_mul_shadea_add_t0}, |
11937 | // Jet Force Gemini. Added by Gonetz |
11938 | // (shade-t0)*shade_alpha+t0, (cmb-0)*prim+0 ** INC ** |
11939 | {0x2b14e3f0, cc_t0_mul_prim_add_shade_mul_shadea_mul_prim}, |
11940 | // V8-2 |
11941 | // (env-t0)*shade_alpha+t0, (cmb-0)*shade+0 ** INC ** |
11942 | {0x2b15e4f0, cc__t0_inter_env_using_shadea__mul_shade}, |
11943 | // Earthquake pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
11944 | // (t1-0)*shade_alpha+t0, (prim-env)*cmb+env ** INC ** |
11945 | {0x2bf2a053, cc_prim_sub_env_mul__t0_add_t1__add_env}, |
11946 | // pads, Pokemon Stadium 2. Added by Gonetz |
11947 | // (0-0)*shade_alpha+t0, (prim-env)*cmba+env |
11948 | {0x2bffa753, cc_prim_sub_env_mul_t0a_add_env}, |
11949 | // paper mario. Added by Gonetz |
11950 | // (t1-t0)*env_a+t0, (1-cmb)*prim+cmb |
11951 | {0x2c120306, cc_one_sub__t0_inter_t1_using_enva__mul_prim_add__t0_inter_t1_using_enva}, |
11952 | // Amoeba boss, water temple, zelda |
11953 | // (t1-t0)*env_a+t0, (cmb-env)*prim+t0 ** INC ** |
11954 | {0x2c122350, cc__t0_inter_t1_using_enva__sub_env}, |
11955 | // paper mario. Added by Gonetz |
11956 | // (t1-t0)*env_a+t0 |
11957 | {0x2c122c12, cc_t0_inter_t1_using_enva}, |
11958 | // paper mario. Added by Gonetz |
11959 | // (t1-t0)*env_a+t0, (1-prim)*cmb+prim |
11960 | {0x2c126036, cc_one_sub_prim_mul__t0_inter_t1_using_enva__add_prim}, |
11961 | //Arena, Pokemon Stadium 2 |
11962 | // (t1-t0)*env_a+t0, (cmb-0)*shade+prim |
11963 | {0x2c1264f0, cc__t0_inter_t1_using_enva__mul_shade_add_prim}, |
11964 | // water, jet force. Added by Gonetz |
11965 | // (t1-t0)*env_a+t0, (prim-shade)*cmb+shade |
11966 | {0x2c128043, cc_prim_sub_shade_mul__t0_inter_t1_using_enva__add_shade}, |
11967 | // Faries, zelda |
11968 | //z (t1-t0)*env_a+t0, (prim-env)*cmb+env |
11969 | {0x2c12a053, cc_prim_sub_env_mul__t0_inter_t1_using_enva__add_env}, |
11970 | // paper mario. Added by Gonetz |
11971 | // (t1-t0)*env_a+t0, (prim-center)*cmb+env |
11972 | {0x2c12a063, cc_prim_sub_center_mul__t0_inter_t1_using_enva__add_env}, |
11973 | // pads, Pokemon Stadium 2. Added by Gonetz |
11974 | // (t1-t0)*env_a+t0, (cmb-prim)*shade+env ** INC ** |
11975 | {0x2c12a430, cc__t0_inter_t1_using_enva__mul_shade_add_env}, |
11976 | // Scary dead thing boss, zelda |
11977 | // (t1-t0)*env_a+t0, (cmb-t1)*cmb_a+env |
11978 | {0x2c12a720, cc__t0_inter_t1_using_enva__mul_env}, |
11979 | // something in a menu, PokemonStadium2, [Raziel64] |
11980 | // (t1-t0)*env_a+t0, (prim-env)*cmb_a+env |
11981 | {0x2c12a753, cc_prim_sub_env_mul__t0_inter_t1_using_enva_alpha__add_env}, |
11982 | // Arena, pokemon Stadium |
11983 | // (t1-t0)*env_a+t0, (cmb-shade)*prim+0 |
11984 | {0x2c12e340, cc__t0_inter_t1_using_enva__sub_shade_mul_prim}, |
11985 | // Water in zora's place, zelda |
11986 | // (t1-t0)*env_a+t0, (cmb-0)*prim+0 |
11987 | {0x2c12e3f0, cc__t0_inter_t1_using_enva__mul_prim}, |
11988 | // Ground, zelda |
11989 | //z (t1-t0)*env_a+t0, (cmb-k5)*shade+cmb_a |
11990 | {0x2c12e4f0, cc__t0_inter_t1_using_enva__mul_shade}, |
11991 | // zelda, uninmp log. Added by Gonetz |
11992 | //(t1-t0)*env_a+t0, (cmb-0)*env+0 |
11993 | {0x2c12e5f0, cc__t0_inter_t1_using_enva__mul_env}, |
11994 | // Spheres, waverace |
11995 | //z (env-t0)*env_a+t0 |
11996 | {0x2c152c15, cc_t0_inter_env_using_enva},//cc_t0}, |
11997 | // backgrounds, Mario Golf. Added by Gonetz |
11998 | // (env-t0)*env_a+t0, (shade-0)*cmb+0 |
11999 | {0x2c15e0f4, cc__t0_inter_env_using_enva__mul_shade}, |
12000 | // ground on Volcano level, DKR, [Raziel64] |
12001 | // (env-t0)*env_a+t0, (cmb-0)*shade+0 |
12002 | {0x2c15e4f0, cc__t0_inter_env_using_enva__mul_shade}, |
12003 | // Nintendo 'N', zelda |
12004 | //z (t0-prim)*env_a+t0, (prim-env)*cmb+env |
12005 | {0x2c31a053, cc_prim_sub_env_mul__t0_sub_prim_mul_enva_add_t0__add_env}, |
12006 | // Nintendo title & saria's song, zelda |
12007 | //z (t1-prim)*env_a+t0, (prim-env)*cmb+env |
12008 | {0x2c32a053, cc_prim_sub_env_mul__t1_sub_prim_mul_enva_add_t0__add_env}, |
12009 | // Hover boots flying, zelda |
12010 | // (t1-prim)*env_a+t0, (prim-0)*cmb+env |
12011 | {0x2c32a0f3, cc__t1_sub_prim_mul_enva_add_t0__mul_prim_add_env}, |
12012 | // star beam, paper mario |
12013 | // (prim-env)*env_a+t0 |
12014 | {0x2c532c53, cc_prim_sub_env_mul_enva_add_t0}, |
12015 | // Kotake & koume's hair, zelda |
12016 | // (t1-0)*env_a+t0, (prim-env)*cmb+env |
12017 | {0x2cf2a053, cc_prim_sub_env_mul__t1_mul_enva_add_t0__add_env}, |
12018 | //Goldeneye, [Jeremy]. Added by Gonetz |
12019 | // (t0-t0)*lodf+t0, (cmb-0)*prim+0 |
12020 | {0x2d11e3f0, cc_t0_mul_prim}, |
12021 | // Pilot wings |
12022 | // (t1-t0)*lodf+t0, (one-cmb)*prim+cmb |
12023 | {0x2d120306, cc_one_sub_prim_mul__t0_inter_t1_using_primlod__add_prim}, |
12024 | // Pilot wings |
12025 | // (t1-t0)*lodf+t0, (one-cmb)*shade+cmb |
12026 | {0x2d120406, cc_one_sub_shade_mul__t0_inter_t1_using_primlod__add_shade}, |
12027 | // Indy Racing 2000. Added by Gonetz |
12028 | // (t1-t0)*lodf+t0, (env-cmb)*prima+cmb ** INC ** |
12029 | {0x2d120a05, cc_t0_inter_t1_using_primlod}, |
12030 | // (t1-t0)*lodf+t0 |
12031 | {0x2d122d12, cc_t0_inter_t1_using_primlod}, |
12032 | //broken wall, beetle adventure racing. Added by Gonetz |
12033 | // (t1-t0)*lodf+t0, (shade-prim)*cmb+prim |
12034 | {0x2d126034, cc_shade_sub_prim_mul__t0_inter_t1_using_primlod__add_prim}, |
12035 | //Intro, CBFD. Added by Gonetz |
12036 | // (t1-t0)*lodf+t0, (shade-env)*cmb+prim |
12037 | // {0x2d126054, cc_shade_sub_env_mul_t0_add_prim}, |
12038 | {0x2d126054, cc_shade_sub_env_mul__t0_inter_t1_using_primlod__add_prim}, |
12039 | // bassmasters 2000 [Ogy] |
12040 | // (t1-t0)*lodf+t0, (env-0)*cmb+prim ** INC ** |
12041 | {0x2d1260f5, cc_t0_mul_env_add_prim}, |
12042 | // sign, CBFD. Added by Gonetz |
12043 | // (t1-t0)*lodf+t0, (cmb-env)*shade+prim ** INC ** |
12044 | {0x2d126450, cc__t0_inter_t1_using_primlod__sub_env_mul_shade_add_prim}, |
12045 | // {0x2d126450, cc_t0_sub_env_mul_shade_add_prim}, |
12046 | // landscape, Cruis'n Exotica. Added by Gonetz |
12047 | // (t1-t0)*lodf+t0, (cmb-0)*shade+prim |
12048 | {0x2d1264f0, cc__t0_inter_t1_using_primlod__mul_shade_add_prim}, |
12049 | // blast corps [Ogy] |
12050 | // (t1-t0)*lodf+t0, (0-0)*0+shade |
12051 | {0x2d129fff, cc__t0_inter_t1_using_primlod__mul_shade}, |
12052 | // End of level, zelda |
12053 | // (t1-t0)*lodf+t0, (prim-env)*cmb+env |
12054 | {0x2d12a053, cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12055 | // Rocket Robot in Wheels intro |
12056 | // (t1-t0)*lodf+t0, (shade-env)*cmb+env |
12057 | {0x2d12a054, cc_shade_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12058 | // basket, Fox Sport |
12059 | // (t1-t0)*lodf+t0, (prim-env)*t0+env |
12060 | {0x2d12a153, cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12061 | // paper mario. Added by Gonetz |
12062 | // (t1-t0)*lodf+t0, (cmb-0)*prim+env ** INC ** |
12063 | {0x2d12a3f0, cc__t0_inter_t1_using_primlod__mul_prim_add_env}, |
12064 | // Tony Hawk Pro Skater |
12065 | // (t1-t0)*lodf+t0, (cmb-0)*shade+env |
12066 | {0x2d12a4f0, cc__t0_inter_t1_using_primlod__mul_shade_add_env}, |
12067 | // part of a building, Spiderman. Added by Gonetz |
12068 | // (t1-t0)*lodf+t0, (cmb-env)*cmba+env ** INC ** |
12069 | {0x2d12a750, cc_t0_inter_t1_using_primlod}, |
12070 | // Mike Piazza's Strike Zone |
12071 | // (t1-t0)*lodf+t0, (shade-prim)*cmb+0 |
12072 | {0x2d12e034, cc_shade_sub_prim_mul__t0_inter_t1_using_primlod}, |
12073 | // intro, F1 Racing Championship. Added by Gonetz |
12074 | // (t1-t0)*lodf+t0, (shade-env)*cmb+0 |
12075 | {0x2d12e054, cc_shade_sub_env_mul__t0_inter_t1_using_primlod}, |
12076 | // stands, F1 Racing Championship. Added by Gonetz |
12077 | // (t1-t0)*lodf+t0, (1-env)*cmb+0 |
12078 | {0x2d12e056, cc_one_sub_env_mul__t0_inter_t1_using_primlod}, |
12079 | // court, Mario Tennis. Added by Gonetz |
12080 | // (t1-t0)*lodf+t0, (prim-0)*cmb+0 |
12081 | {0x2d12e0f3, cc__t0_inter_t1_using_primlod__mul_prim}, |
12082 | // Rocket Robot in Wheels intro |
12083 | // (t1-t0)*lodf+t0, (shade-0)*cmb+0 |
12084 | {0x2d12e0f4, cc__t0_inter_t1_using_primlod__mul_shade}, |
12085 | // Pilot wings |
12086 | // (t1-t0)*lodf+t0, (cmb-0)*t0+0 ** INC ** |
12087 | {0x2d12e1f0, cc_t0_inter_t1_using_primlod}, |
12088 | // cars wheels, SF Rush 2049. Added by Gonetz |
12089 | // (t1-t0)*lodf+t0, (cmb-0)*prim+0 |
12090 | {0x2d12e3f0, cc__t0_inter_t1_using_primlod__mul_prim}, |
12091 | // Bridge, sf rush |
12092 | // (t1-t0)*lodf+t0, (cmb-0)*shade+0 |
12093 | // {0x2d12e4f0, cc_t0_mul_shade}, |
12094 | {0x2d12e4f0, cc__t0_inter_t1_using_primlod__mul_shade}, |
12095 | // blast corps [Ogy] |
12096 | // (t1-t0)*lodf+t0, (t0-0)*shade+0 |
12097 | {0x2d12e4f1, cc_t0_mul_shade}, |
12098 | // field, Mike Piazza's Strike Zone |
12099 | // (t1-t0)*lodf+t0, (cmb-prim)*env+0 ** INC ** |
12100 | {0x2d12e530, cc__t0_inter_t1_using_primlod__mul_env}, |
12101 | // radar, Perfect Dark |
12102 | // (t1-t0)*lodf+t0, (cmb-0)*env+0 |
12103 | {0x2d12e5f0, cc__t0_inter_t1_using_primlod__mul_env}, |
12104 | // planet, Blast Corps |
12105 | // (t1-t0)*lodf+t0, (cmb-0)*prima+0 |
12106 | {0x2d12eaf0, cc__t0_inter_t1_using_primlod__mul_prima}, |
12107 | // zelda 2. Added by Gonetz |
12108 | // (t0-t0)*primlod+t0, (prim-env)*cmb+env |
12109 | {0x2e11a053, cc_prim_sub_env_mul_t0_add_env}, |
12110 | // zelda 2. Added by Gonetz |
12111 | // (t1-t0)*primlod+t0, (0-0)*shade+cmb |
12112 | {0x2e1204ff, cc_t0_inter_t1_using_primlod}, |
12113 | // zelda 2. Added by Gonetz |
12114 | // (t1-t0)*primlod+t0, (env-prim)*primlod+cmb |
12115 | {0x2e120d35, cc_prim_sub_env_mul_primlod_add__t0_inter_t1_using_primlod}, |
12116 | // lamppost, Ridge Racer. Added by Gonetz |
12117 | // (t1-t0)*primlod+t0 |
12118 | {0x2e122e12, cc_t0_inter_t1_using_primlod}, |
12119 | // Hearts, zelda |
12120 | //z (t1-t0)*primlod+t0, (shade-prim)*cmb+prim |
12121 | {0x2e126034, cc_shade_sub_prim_mul__t0_inter_t1_using_primlod__add_prim}, |
12122 | // Sunny Day, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12123 | // (t1-t0)*primlod+t0, (env-prim)*cmb+prim |
12124 | {0x2e126035, cc_env_sub_prim_mul__t0_inter_t1_using_primlod__add_prim}, |
12125 | // snowhead temple, zelda 2. Added by Gonetz |
12126 | // (t1-t0)*primlod+t0, (cmb-env)*shade+prim ** INC ** |
12127 | {0x2e126450, cc__t0_inter_t1_using_primlod__mul_shade_add_prim}, |
12128 | // snow on a wall, snowhead temple, zelda 2. Added by Gonetz |
12129 | // (t1-t0)*primlod+t0, (cmb-0)*shade+prim |
12130 | {0x2e1264f0, cc__t0_inter_t1_using_primlod__mul_shade_add_prim}, |
12131 | // Morning Sun, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12132 | // (t1-t0)*primlod+t0, (cmb-0)*0+prim |
12133 | {0x2e127ff0, cc_prim}, |
12134 | // arena, Pokemon Stadium 2. Added by Gonetz |
12135 | // (t1-t0)*primlod+t0, (cmb-prim)*shade+shade ** INC ** |
12136 | {0x2e128430, cc__t0_inter_t1_using_primlod__mul_shade}, |
12137 | // Pokemon Stadium 2. Added by Gonetz |
12138 | // (t1-t0)*primlod+t0, (cmb-env)*cmb+env ** INC ** |
12139 | {0x2e12a050, cc_t0_inter_t1_using_primlod}, |
12140 | // End of level heart, zelda |
12141 | // (t1-t0)*primlod+t0, (prim-env)*cmb+env |
12142 | {0x2e12a053, cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12143 | // Huge turtle appearance, zelda 2. Added by Gonetz |
12144 | // (t1-t0)*primlod+t0, (1-env)*cmb+env |
12145 | {0x2e12a056, cc_one_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12146 | // frozen octorok, zelda 2. Added by Gonetz |
12147 | // (t1-t0)*primlod+t0, (prim-env)*t1+env |
12148 | {0x2e12a253, cc_prim_sub_env_mul_t1_add_env}, |
12149 | // fall headwaters, zelda 2. Added by Gonetz |
12150 | // (t1-t0)*primlod+t0, (cmb-env)*shade+env ** INC ** |
12151 | {0x2e12a450, cc__t0_inter_t1_using_primlod__sub_env_mul_shade_add_env}, |
12152 | // Fissure attack, pokemon stadium 2 |
12153 | // (t1-t0)*primlod+t0, (prim-env)*cmb_a+env |
12154 | {0x2e12a753, cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12155 | // zelda 2. Added by Gonetz |
12156 | // (t1-t0)*primlod+t0, (cmb-0)*t1+0 ** INC ** ? |
12157 | {0x2e12e2f0, cc_t0_inter_t1_using_primlod}, |
12158 | // zelda 2. Added by Gonetz |
12159 | // (t1-t0)*primlod+t0, (cmb-0)*prim+0 |
12160 | {0x2e12e3f0, cc__t0_inter_t1_using_primlod__mul_prim}, |
12161 | // sky, PGA European Tour |
12162 | // (t1-t0)*primlod+t0, (cmb-env)*shade+0 ** INC ** |
12163 | {0x2e12e450, cc__t0_inter_t1_using_primlod__mul_shade}, |
12164 | // Kirby's pool, smash bros |
12165 | // (t1-t0)*primlod+t0, (cmb-0)*shade+0 |
12166 | {0x2e12e4f0, cc__t0_inter_t1_using_primlod__mul_shade}, |
12167 | //Spacestation Silicon Valley intro. Added by Gonetz |
12168 | // (prim-t0)*primlod+t0, (cmb-0)*shade+0 **INC** |
12169 | {0x2e132e13, cc_t0_inter_prim_using_primlod}, |
12170 | // explosions, daikatana. Added by Gonetz |
12171 | // (prim-t0)*primlod+t0, (cmb-0)*shade+0 **INC** |
12172 | {0x2e13e4f0, cc_t0_mul_shade}, |
12173 | //Mike Piazza's Strike Zone logo. Added by Gonetz |
12174 | // (shade-t0)*primlod+t0 |
12175 | {0x2e142e14, cc_t0_inter_shade_using_primlod}, |
12176 | // Cartridge color (transfer pak}, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12177 | // (1-t0)*primlod+t0 |
12178 | {0x2e162e16, cc_one_sub_t0_mul_primlod_add_t0}, |
12179 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
12180 | // (1-t0)*primlod+t0, (prim-0)*cmb+0 |
12181 | {0x2e16e0f3, cc__t0_inter_one_using_primlod__mul_prim}, |
12182 | // Spider Web attack, Pokemon Stadium 2. |
12183 | // (1-t0)*primlod+t0, (cmb-0)*prim+0 |
12184 | {0x2e16e3f0, cc__t0_inter_one_using_primlod__mul_prim}, |
12185 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
12186 | // (1-t0)*primlod+t0, (cmb-0)*shade+0 |
12187 | {0x2e16e4f0, cc__t0_inter_one_using_primlod__mul_shade}, |
12188 | // zelda 2. Added by Gonetz |
12189 | // (t1-t1)*primlod+t0, (prim-env)*cmb+env |
12190 | {0x2e22a053, cc_prim_sub_env_mul_t0_add_env}, |
12191 | // Shadow Ball, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12192 | // (0-t1)*primlod+t0, (prim-env)*cmb+env ** INC ** |
12193 | {0x2e2fa053, cc_prim_sub_env_mul_t0_add_env}, |
12194 | // Skulltula coin solid, zelda |
12195 | // (t0-prim)*primlod+t0, (prim-env)*cmb+env |
12196 | {0x2e31a053, cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_t0__add_env}, |
12197 | // Triforce lines, zelda |
12198 | // (t1-prim)*primlod+t0, (prim-shade)*cmb+shade |
12199 | {0x2e328043, cc_prim_sub_shade_mul__t1_sub_prim_mul_primlod_add_t0__add_shade}, |
12200 | // moon when majora defeated, zelda 2. Added by Gonetz |
12201 | // (t1-prim)*primlod+t0, (1-shade)*cmb+shade |
12202 | {0x2e328046, cc_one_sub_shade_mul__t1_sub_prim_mul_primlod_add_t0__add_shade}, |
12203 | // Fire, zelda |
12204 | //z (t1-prim)*primlod+t0, (prim-env)*cmb+env ** INC ** |
12205 | {0x2e32a053, cc_prim_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env}, |
12206 | // zelda 2 [Ogy]. Added by Gonetz |
12207 | // (t1-prim)*primlod+t0, (shade-env)*cmb+env |
12208 | {0x2e32a054, cc_shade_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env}, |
12209 | // Scary face, pokemon stadium 2 |
12210 | // (t1-prim)*primlod+t0, (1-env)*cmb+env |
12211 | {0x2e32a056, cc_one_sub_env_mul__t1_sub_prim_mul_primlod_add_t0__add_env}, |
12212 | // zelda 2. Added by Gonetz |
12213 | // (t1-prim)*primlod+t0, (prim-0)*cmb+env |
12214 | {0x2e32a0f3, cc__t1_sub_prim_mul_primlod_add_t0__mul_prim_add_env}, |
12215 | // zelda 2. Added by Gonetz |
12216 | // (t1-0)*primlod+t0, (prim-env)*cmb+env |
12217 | {0x2ef2a053, cc_prim_sub_env_mul__t1_mul_primlod_add_t0__add_env}, |
12218 | // zelda 2. Added by Gonetz |
12219 | // (t1-0)*primlod+t0, (cmb-0)*prim+0 |
12220 | {0x2ef2e3f0, cc__t1_mul_primlod_add_t0__mul_prim}, |
12221 | // zelda 2. Added by Gonetz |
12222 | // (t1-0)*primlod+t0, (cmb-0)*env+0 |
12223 | {0x2ef2e5f0, cc__t1_mul_primlod_add_t0__mul_env}, |
12224 | // gun, Doom64. Added by Gonetz |
12225 | // (1-0)*primlod+t0, (cmb-0)*prim+env |
12226 | {0x2ef6a3f0, cc__t0_add_primlod__mul_prim_add_env}, |
12227 | // walls, Doom64. Added by Gonetz |
12228 | // (1-0)*primlod+t0, (cmb-0)*shade+env |
12229 | {0x2ef6a4f0, cc__t0_add_primlod__mul_shade_add_env}, |
12230 | // Pokemon Stadium 2. Added by Gonetz |
12231 | // (noise-0)*primlod+t0, (prim-env)*cmb+env ** INC ** |
12232 | {0x2ef7a053, cc_prim_sub_env_mul_t0_add_env}, |
12233 | // Tony Hawk's Pro Skater. Added by Gonetz |
12234 | // (t1-t0)*k5+t0 |
12235 | {0x2f122f12, cc_t0_inter_t1_using_k5}, |
12236 | // F1 World Grand Prix. Added by Gonetz |
12237 | // (t1-t0)*k5+t0, (cmb-0)*shade+0 **INC** |
12238 | {0x2f12e4f0, cc__t0_inter_t1_using_k5__mul_shade}, |
12239 | // Turok 3 [scorpiove]. Added by Gonetz |
12240 | // (t0-k4)*k5+t0 |
12241 | {0x2f712f71, cc_t0}, |
12242 | // THPS 3 |
12243 | // (env-0)*k5+t0, |
12244 | {0x2ff52ff5, cc_t0_add_env_mul_k5}, |
12245 | // super bowling |
12246 | // (0-0)*k5+t0, |
12247 | {0x2fff0000, cc_t0}, |
12248 | // super bowling |
12249 | // (0-0)*k5+t0 |
12250 | {0x2fff2fff, cc_t0}, |
12251 | // Moonlight attack, pokemon stadium 2 |
12252 | // (t1-t0)*0+t0, (prim-env)*cmb+env |
12253 | {0x3f12a053, cc_prim_sub_env_mul_t0_add_env}, |
12254 | //C&C shadows |
12255 | //(1-env)*0+t0 |
12256 | {0x3f563f56, cc_t0}, |
12257 | // RARE logo, blast corps. Added by Gonetz |
12258 | // (t0-0)*0+t0 |
12259 | {0x3ff13ff1, cc_t0}, |
12260 | // the ground below the scarecrow in the trading post in town, zelda 2 [Ogy]. Added by Gonetz |
12261 | // (t1-0)*0+t0, (cmb-0)*shade+0 |
12262 | {0x3ff2e4f0, cc_t0_mul_shade}, |
12263 | // intro, background, Dezaemon 3D |
12264 | // (1-0)*0+t0 |
12265 | {0x3ff63ff6, cc_t0}, |
12266 | // intro of WWF WrestleMania 2000 |
12267 | // ((0-0)*0+t0, (env-cmb)*prim+cmb |
12268 | {0x3fff0305, cc_env_sub_t0_mul_prim_add_t0}, |
12269 | // pistol fire, Turok |
12270 | // ((0-0)*0+t0, (env-cmb)*shade+cmb |
12271 | {0x3fff0405, cc_env_sub_t0_mul_shade_add_t0}, |
12272 | // Tony Hawk's Pro Skater. Added by Gonetz |
12273 | // ((0-0)*0+t0, (t1-0)*shade+cmb ** INC ** |
12274 | {0x3fff04f2, cc_t0}, |
12275 | // Dr. Mario [Ogy]. Added by Gonetz |
12276 | // ((0-0)*0+t0, (prim-cmb)*env+cmb |
12277 | {0x3fff0503, cc_prim_sub_t0_mul_env_add_t0}, |
12278 | // Stained glass, quest64 |
12279 | // (0-0)*0+t0, (1-0)*env+cmb |
12280 | {0x3fff05f6, cc_t0_add_env}, |
12281 | // Health bar, killer instinct gold |
12282 | // (0-0)*0+t0, (prim-env)*prim_a+cmb |
12283 | {0x3fff0a53, cc_prim_sub_env_mul_prima_add_t0}, |
12284 | // Runes, Turok - Dinosaur Hunter. Added by Gonetz |
12285 | // (0-0)*0+t0, (env-cmb)*env_a+cmb |
12286 | {0x3fff0c05, cc_t0_inter_env_using_enva}, |
12287 | // intro, Mission Impossible. Added by Gonetz |
12288 | // (k5-k5)*0+t0, (0-0)*scale+t0 |
12289 | {0x3fff26ff, cc_t0}, |
12290 | // V8-2 |
12291 | // (0-0)*0+t0, (t0-k4)*k5+t0 |
12292 | {0x3fff2f71, cc_t0_sub_k4_mul_k5_add_t0}, |
12293 | // TM, mario |
12294 | //z (k5-k5)*0+t0 |
12295 | {0x3fff3fff, cc_t0}, |
12296 | // Intro, CBFD. Added by Gonetz |
12297 | // ((0-0)*0+t0, (shade-env)*cmb+prim |
12298 | {0x3fff6054, cc_shade_sub_env_mul_t0_add_prim}, |
12299 | // Text, Mia Soccer. Added by Gonetz |
12300 | // ((0-0)*0+t0, (0-0)*0+prim |
12301 | {0x3fff7fff, cc_t0}, |
12302 | // paper mario. Added by Gonetz |
12303 | // ((0-0)*0+t0, (prim-env)*cmb+env |
12304 | {0x3fffa053, cc_prim_sub_env_mul_t0_add_env}, |
12305 | // Objects in arena, pokemon stadium 2 |
12306 | // (0-0)*0+t0, (cmb-prim)*shade+env |
12307 | {0x3fffa430, cc_t0_mul_prim}, |
12308 | // intro, F1 Racing Championship. Added by Gonetz |
12309 | // (0-0)*0+t0, (shade-env)*cmb+0 |
12310 | {0x3fffe054, cc_shade_sub_env_mul_t0}, |
12311 | // stands, F1 Racing Championship. Added by Gonetz |
12312 | // (0-0)*0+t0, (1-env)*cmb+0 |
12313 | {0x3fffe056, cc_one_sub_env_mul_t0}, |
12314 | // ? (from log) |
12315 | // (0-0)*0+t0, (prim-0)*cmb+0 |
12316 | {0x3fffe0f3, cc_t0_mul_prim}, |
12317 | // background, GASP Fighters |
12318 | // (0-0)*0+t0, (shade-0)*cmb+0 |
12319 | {0x3fffe0f4, cc_t0_mul_shade}, |
12320 | // zelda 2 [Ogy]. Added by Gonetz |
12321 | // (0-0)*0+t0, (env-0)*cmb+0 |
12322 | {0x3fffe0f5, cc_t0_mul_env}, |
12323 | // logo, v-rally 99 |
12324 | // (0-0)*0+t0, (prim-0)*t0+0 |
12325 | {0x3fffe1f3, cc_t0_mul_prim}, |
12326 | // target hit, zelda 2. Added by Gonetz |
12327 | // (0-0)*0+t0, (cmb-0)*prim+0 |
12328 | {0x3fffe3f0, cc_t0_mul_prim}, |
12329 | // Ms. Pac-Man intro background. Added by Gonetz |
12330 | // (0-0)*0+t0, (cmb-0)*shade+0 |
12331 | {0x3fffe4f0, cc_t0_mul_shade}, |
12332 | // Wonder Project J2 logo. Added by Gonetz |
12333 | // (0-0)*0+t0, (t0-0)*shade+0 |
12334 | {0x3fffe4f1, cc_t0_mul_shade}, |
12335 | // tire trace, Monster truck madness. Added by Gonetz |
12336 | // (0-0)*0+t0, (cmb-0)*env+0 |
12337 | {0x3fffe5f0, cc_t0_mul_env}, |
12338 | // Gauntlet Legends intro. Added by Gonetz |
12339 | // (0-0)*0+t0, (cmb-0)*ecale+0 |
12340 | {0x3fffe6f0, cc_t0}, |
12341 | // tire trace, beetle adventure racing. Added by Gonetz |
12342 | // (t1-t0)*t0+t1, (cmb-t0)*shade+t1 **INC** |
12343 | {0x41124410, cc__t0_inter_t1_using_t0__mul_shade}, |
12344 | // Paper Mario. Added by Gonetz |
12345 | // (t0-t1)*t0+t1 **INC** |
12346 | {0x41214121, cc_t1_inter_t0_using_t0}, |
12347 | // Powered Star Beam, Paper Mario. Added by Gonetz |
12348 | // (t0-t1)*t0+t1, (env-prim)*cmb+prim **INC** |
12349 | {0x41216035, cc_env_sub_prim_mul__t1_inter_t0_using_t0__add_prim}, |
12350 | // wetrix raiseland [Raziel64]. Added by Gonetz |
12351 | // (prim-t1)*t0+t1, (env-t0)*cmb+cmb **INC** |
12352 | {0x41230015, cc_env_sub_prim_mul__t0_mul_t1__add_prim}, |
12353 | // SCARS. Added by Gonetz |
12354 | // (t1-t0)*t0+t1, (cmb-t0)*shade+t1 **INC** |
12355 | {0x41250b03, cc__t0_inter_t1_using_half__mul_shade}, |
12356 | //beetle adventure racing. Added by Gonetz |
12357 | //(t0-t1)*t1+t1, (cmb-0)*shade+0 **INC** |
12358 | {0x4221e4f0, cc__t1_inter_t0_using_t1__mul_shade}, |
12359 | // cianwood gym walls, pokemon stadium 2 |
12360 | //(t0-prim)*t1+t1, (cmb-0)*env+shade |
12361 | {0x423185f0, cc__t0_sub_prim_mul_t1_add_t1__mul_env_add_shade}, |
12362 | // cianwood gym walls, pokemon stadium 2 |
12363 | //(t0-prim)*t1+t1, (cmb-0)*shade+0 |
12364 | {0x4231e4f0, cc__t0_sub_prim_mul_t1_add_t1__mul_shade}, |
12365 | // paper mario. Added by Gonetz |
12366 | // (t0-t0)*prim+t1, (t1-cmb)*cmb+env **INC** weird |
12367 | {0x4311a002, cc_env}, |
12368 | // background, Wetrix level 1, [Raziel64]. Added by Gonetz |
12369 | // (t0-t1)*prim+t1 |
12370 | {0x43214321, cc_t1_inter_t0_using_prim}, |
12371 | // Mario Party3 Tidal Toss |
12372 | // (t0-t1)*prim+t1, (cmb-0)*shade+0 **INC** |
12373 | {0x4321e4f0, cc__t1_inter_t0_using_prim__mul_shade}, |
12374 | // grass, ISS 2k. Added by Gonetz |
12375 | // (t0-t1)*prim+t1, (cmb-0)*env+0 **INC** |
12376 | {0x4321e5f0, cc__t1_inter_t0_using_prim__mul_env}, |
12377 | // intro, Paper Mario |
12378 | // (t0-0)*prim+t1 |
12379 | {0x43f143f1, cc_t0_mul_prim_add_t1}, |
12380 | // F1 World Grand Prix. Added by Gonetz |
12381 | // (t0-0)*prim+t1, (cmb-0)*shade+env **INC** |
12382 | {0x43f1a4f0, cc__t0_add_t1__mul_shade_add_env}, |
12383 | // field, ISS64. Added by Gonetz |
12384 | // (t0-t1)*shade+t1, (cmb-t1)*prim+t1 ** INC ** |
12385 | {0x44214320, cc_t0_sub_t1_mul_prim_mul_shade_add_t1}, |
12386 | // {0x44214320, cc__t0_add_t1__mul_prim}, |
12387 | // field, Top gear hyper-bike |
12388 | // (t0-t1)*shade+t1 |
12389 | {0x44214421, cc_t1_inter_t0_using_shade}, |
12390 | // water, goemon great adventure |
12391 | // (t0-t1)*env+t1 ** INC ** |
12392 | {0x45214521, cc_t1_inter_t0_using_env}, |
12393 | // characters, Ogre Battle. Added by Gonetz |
12394 | // (1-t1)*env+t1, (1-cmb)*prim+cmb ** INC ** |
12395 | {0x45260306, cc_one_sub_t1_mul_prim_add_t1}, |
12396 | // characters, Ogre Battle. Added by Gonetz |
12397 | // (1-t1)*env+t1 |
12398 | {0x45264526, cc_one_sub_t1_mul_env_add_t1}, |
12399 | // characters, Ogre Battle. Added by Gonetz |
12400 | // (1-t1)*env+t1, (cmb-0)*prim+0 ** INC ** |
12401 | {0x4526e3f0, cc__t1_inter_one_using_env__mul_prim}, |
12402 | // explosion, body harvest. Added by Gonetz |
12403 | // (t0-t1)*scale+t1, (env-prim)*cmb+prim ** INC ** |
12404 | {0x46216035, cc_env_sub_prim_mul__t0_inter_t1_using_half__add_prim}, |
12405 | // Water, AeroGauge. Added by Gonetz |
12406 | // (t0-t1)*prima+t1, (0-0)*0+cmb |
12407 | {0x4a214a21, cc_t1_inter_t0_using_prima}, |
12408 | // flame, castlevania 2. Added by Gonetz |
12409 | // (t0-t1)*prima+t1, (prim-env)*cmb+env |
12410 | {0x4a21a053, cc_prim_sub_env_mul__t1_inter_t0_using_prima__add_env}, |
12411 | // shadows, Mario Tennis. Added by Gonetz |
12412 | // (t0-t1)*prima+t1, (prim-0)*cmb+0 |
12413 | {0x4a21e0f3, cc__t1_inter_t0_using_prima__mul_prim}, |
12414 | // menu, Mario Golf. Added by Gonetz |
12415 | // (t0-t1)*prima+t1, (shade-0)*cmb+0 |
12416 | {0x4a21e0f4, cc__t1_inter_t0_using_prima__mul_shade}, |
12417 | // intro, castlevania 2. Added by Gonetz |
12418 | // (t0-t1)*prima+t1, (cmb-0)*prim+0 |
12419 | {0x4a21e3f0, cc__t1_inter_t0_using_prima__mul_prim}, |
12420 | // water on map, Ogre Battle64. Added by Gonetz |
12421 | // (t0-t1)*prima+t1, (cmb-0)*shade+0 |
12422 | {0x4a21e4f0, cc__t1_inter_t0_using_prima__mul_shade}, |
12423 | // Ice, Paper Mario |
12424 | // (t0-t1)*shade_a+t1 |
12425 | {0x4b214b21, cc_t1_inter_t0_using_shadea}, |
12426 | // Grass, Beetle Adventure Racing |
12427 | // (t0-t1)*shade_a+t1, (cmb-0)*shade+0 |
12428 | {0x4b21e4f0, cc__t1_inter_t0_using_shadea__mul_shade}, |
12429 | // Ground at kotake & koume, zelda |
12430 | // (t1-t0)*env_a+t0, (prim-env)*cmb+env |
12431 | {0x4c12a053, cc_prim_sub_env_mul__t0_inter_t1_using_enva__add_env}, |
12432 | // Tony Hawk's Pro Skater. Added by Gonetz |
12433 | // (t0-t1)*env_a+t1, (cmb-0)*shade+cmb ** INC ** |
12434 | {0x4c2104f0, cc__t1_inter_t0_using_enva__mul_shade}, |
12435 | // bikes, xg2. Added by Gonetz |
12436 | // (t0-t1)*env_a+t1, (cmb-prim)*prima+prim |
12437 | {0x4c216a30, cc__t1_inter_t0_using_enva__sub_prim_mul_prima_add_prim}, |
12438 | // Yoshi Story |
12439 | // (t0-t1)*env_a+t1, (prim-env)*cmb+env |
12440 | {0x4c21a053, cc_prim_sub_env_mul__t1_inter_t0_using_enva__add_env}, |
12441 | // arena, Pokemon Stadium 1. Added by Gonetz |
12442 | // (t0-t1)*env_a+t1, (cmb-0)*prim+0 |
12443 | {0x4c21e3f0, cc__t1_inter_t0_using_enva__mul_prim}, |
12444 | // "end of chapter" text, paper mario. Added by Gonetz |
12445 | // (1-t1)*env_a+t1, (cmb-0)*t1+0 |
12446 | {0x4c26e2f0, cc__t1_inter_one_using_enva__mul_t0}, |
12447 | // Zelda opening door, zelda |
12448 | // (t0-prim)*env_a+t1, (prim-env)*t0+env |
12449 | {0x4c31a053, cc_prim_sub_env_mul_t0_add_env}, |
12450 | // arena, Pokemon Stadium 2 |
12451 | // (t0-0)*env_a+t1, (cmb-0)*shade+prim |
12452 | {0x4cf164f0, cc__t0_mul_enva_add_t1__mul_shade_add_prim}, |
12453 | // Kotake & koume magic poof, zelda |
12454 | // (t0-0)*env_a+t1, (prim-env)*cmb+env |
12455 | {0x4cf1a053, cc_prim_sub_env_mul__t0_mul_enva_add_t1__add_env}, |
12456 | // ground in stone temple, zelda 2. Added by Gonetz |
12457 | // (t1-t0)*primlod+t1, (cmb-0)*prim+0 |
12458 | {0x4e12e3f0, cc__t0_inter_t1_using_primlod__mul_prim}, |
12459 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
12460 | // (noise-t0)*primlod+t1, (prim-env)*cmb+env ** INC ** |
12461 | {0x4e17a053, cc_prim_sub_env_mul__t0_inter_t1_using_primlod__add_env}, |
12462 | // menu, pokemon stadium 1, [Raziel64] |
12463 | // (t0-t1)*lodf+t1, (prim-env)*cmb+env |
12464 | {0x4e214e21, cc_t1_inter_t0_using_primlod}, |
12465 | // Pokemon backgrounds, pokemon stadium 2 |
12466 | // (t0-t1)*primlod+t1, (cmb-0)*shade+prim |
12467 | {0x4e2164f0, cc__t1_inter_t0_using_primlod__mul_shade_add_prim}, |
12468 | // Pokemon backgrounds, pokemon stadium 2 |
12469 | // (t0-t1)*lodf+t1, (prim-env)*cmb+env |
12470 | {0x4e21a053, cc_prim_sub_env_mul__t1_inter_t0_using_primlod__add_env}, |
12471 | // zelda 2 [Ogy]. Added by Gonetz |
12472 | // (t0-t1)*primlod+t1, (t1-cmb)*prim+env ** INC ** |
12473 | {0x4e21a302, cc_env_sub__t0_sub_t1_mul_primlod__mul_prim}, |
12474 | // Magnitude, pokemon stadium 2 |
12475 | // (t0-t1)*primlod+t1, (prim-env)*cmb_a+env |
12476 | {0x4e21a753, cc_prim_sub_env_mul__t1_inter_t0_using_primlod__add_env}, |
12477 | // Arena, pokemon stadium 2 |
12478 | // (t0-t1)*primlod+t1, (cmb-shade)*prim+0 |
12479 | {0x4e21e340, cc__t1_inter_t0_using_primlod__sub_shade_mul_prim}, |
12480 | // zelda 2 [Ogy]. Added by Gonetz |
12481 | // (t0-t1)*primlod+t1, (cmb-0)*shade+0 |
12482 | {0x4e21e4f0, cc__t1_inter_t0_using_primlod__mul_shade}, |
12483 | // lava in snowhead temple, zelda 2. Added by Gonetz |
12484 | // (t0-prim)*primlod+t1, (cmb-prim)*shade+cmb ** INC ** |
12485 | {0x4e310430, cc_lavatex_sub_prim_mul_shade_add_lavatex}, |
12486 | // Skulltula coin, zelda |
12487 | // (t0-prim)*primlod+t1, (prim-env)*cmb+env |
12488 | {0x4e31a053, cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_t1__add_env}, |
12489 | // Pokemon background, pokemon stadium 2 |
12490 | // (noise-shade)*primlod+t1, (prim-env)*cmb+env |
12491 | {0x4e47a053, cc_prim_sub_env_mul_t1_add_env}, |
12492 | // Reflect, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12493 | // (t0-0)*primlod+t1, (prim-env)*cmb+env |
12494 | {0x4ef1a053, cc_prim_sub_env_mul__t0_add_t1__add_env}, |
12495 | //beetle adventure racing. Added by Gonetz |
12496 | //(t0-t1)*k5+t1, (cmb-0)*shade+0 |
12497 | {0x4f21e4f0, cc__t1_inter_t0_using_k5__mul_shade}, |
12498 | // Spiderman. Added by Gonetz |
12499 | //(t0-t1)*k5+t1, (cmb-0)*env+0 |
12500 | {0x4f21e5f0, cc_t1_mul_env}, |
12501 | // N64 logo, Ogre Battle. Added by Gonetz |
12502 | //(0-0)*0+t1 |
12503 | {0x5fff5fff, cc_t1}, |
12504 | // reversing light, Monster truck madness. Added by Gonetz |
12505 | //(0-0)*0+t0, (0-0)*0+prim |
12506 | {0x5fff7fff, cc_prim}, |
12507 | // battle tanks [Ogy] |
12508 | // (0-0)*0+t1, (env-shade)*cmb+shade |
12509 | {0x5fff8045, cc_env_sub_shade_mul_t1_add_shade}, |
12510 | // minigame, pokemon stadium 1. Added by Gonetz |
12511 | // (0-0)*0+t1, (prim-env)*cmb+env |
12512 | {0x5fffa053, cc_prim_sub_env_mul_t1_add_env}, |
12513 | // F1 World Grand Prix. Added by Gonetz |
12514 | // (t0-prim)*t0+prim, (cmb-0)*shade |
12515 | {0x6131e4f0, cc__prim_inter_t0_using_t0__mul_shade}, |
12516 | // aerofighter's assault [Ogy] |
12517 | // (shade-prim)*t0+prim |
12518 | {0x61346134, cc_shade_sub_prim_mul_t0_add_prim}, |
12519 | // pilot wings |
12520 | // (shade-prim)*t0+prim, (cmb-shade)*shadea+shade |
12521 | {0x61348b40, cc_shade_inter__prim_inter_shade_using_t0__using_shadea}, |
12522 | // club blow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
12523 | // (shade-prim)*t0+prim, (cmb-env)*cmb_a+env ** INC ** |
12524 | {0x6134a750, cc_shade_sub_prim_mul_t0_add_prim}, |
12525 | // sky, Killer Instinct |
12526 | // (shade-prim)*t0+prim, (cmb-env)*shade_a+env ** INC ** |
12527 | {0x6134ab50, cc_env_inter__prim_inter_shade_using_t0__using_shadea}, |
12528 | // lava, beetle adventure racing |
12529 | // (shade-prim)*t0+prim, (cmb-0)*t1+0 ** INC ** |
12530 | {0x6134e2f0, cc_shade_sub_prim_mul_t0_add_prim}, |
12531 | // Monster truck madness intro. Added by Gonetz |
12532 | // (env-prim)*t0+prim, (cmb-0)*scale+cmb ** INC ** |
12533 | {0x613506f0, cc_env_sub_prim_mul_t0_add_prim}, |
12534 | // pokemon attack, Pokemon stadium 1 |
12535 | // (env-prim)*t0+prim, (cmb-0)*0+cmb |
12536 | {0x61351ff0, cc_env_sub_prim_mul_t0_add_prim}, |
12537 | // Paper Mario, fortune teller spheres |
12538 | // (env-prim)*t0+prim, (cmb-0)*t1+t0 ** INC ** |
12539 | {0x613522f0, cc_t0_mul_t1_add_t0}, |
12540 | // Later hearts, zelda |
12541 | // (env-prim)*t0+prim |
12542 | {0x61356135, cc_env_sub_prim_mul_t0_add_prim}, |
12543 | // Mission Impossible. Added by Gonetz |
12544 | // (env-prim)*t0+prim, (shade-0)*cmb+0 ** INC ** |
12545 | {0x6135e0f4, cc__prim_inter_env_using_t0__mul_shade}, |
12546 | // crashing other vehicle, Monster truck madness [Raziel64]. Added by Gonetz |
12547 | // (env-prim)*t0+prim, (cmb-0)*t0+0 ** INC ** |
12548 | {0x6135e1f0, cc_env_sub_prim_mul_t0_add_prim}, |
12549 | // Tony Hawk's Pro Skater. Added by Gonetz |
12550 | // (env-prim)*t0+prim, (cmb-0)*t1+0 ** INC ** |
12551 | {0x6135e2f0, cc_env_sub_prim_mul_t0_add_prim}, |
12552 | // aerofighter's assault [Ogy] |
12553 | // (env-prim)*t0+prim, (cmb-0)*shade+0 ** INC ** |
12554 | {0x6135e4f0, cc__prim_inter_env_using_t0__mul_shade}, |
12555 | // "time out", paper mario. Added by Gonetz |
12556 | // (1-prim)*t0+prim, (1-cmb)*enva+cmb ** INC ** |
12557 | {0x61360c06, cc_one_sub_prim_mul_t0_add_prim}, |
12558 | // intro, paper mario. Added by Gonetz |
12559 | // (1-prim)*t0+prim, (cmb-0)*prima+t0 ** INC ** |
12560 | {0x61362af0, cc__one_sub_prim_mul_t0_add_prim__mul_prima_add__one_sub_prim_mul_t0_add_prim}, |
12561 | // paper mario. Added by Gonetz |
12562 | // (1-prim)*t0+prim |
12563 | {0x61366136, cc_one_sub_prim_mul_t0_add_prim}, |
12564 | // arena, Pokemon Stadium 2. Added by Gonetz |
12565 | // (1-prim)*t0+prim, (cmb-env)*shade+shade ** INC ** |
12566 | {0x61368450, cc_t0_mul_shade}, |
12567 | // F1 World Grand Prix. Added by Gonetz |
12568 | // (1-prim)*t0+prim, (cmb-0)*shade+0 ** INC ** |
12569 | {0x6136e4f0, cc_t0_mul_shade}, |
12570 | // Xena. Added by Gonetz |
12571 | // (0-prim)*t0+prim |
12572 | {0x613f613f, cc_one_sub_t0_mul_prim}, |
12573 | // Kirby64 end [Raziel64]. Added by Gonetz |
12574 | // (prim-env)*t0+prim |
12575 | {0x61536153, cc_prim_sub_env_mul_t0_add_prim}, |
12576 | // Xena. Added by Gonetz |
12577 | // (shade-env)*t0+prim |
12578 | {0x61546154, cc_shade_sub_env_mul_t0_add_prim}, |
12579 | // Karts, mario kart |
12580 | //z (one-env)*t0+prim |
12581 | {0x61566156, cc_t0_mul_1menv_add_prim}, |
12582 | // Famista64. Added by Gonetz |
12583 | //(t0-0)*t0+prim |
12584 | {0x61f161f1, cc_t0_mul_prim}, |
12585 | // Pokemon Stadium 2. Added by Gonetz |
12586 | //(shade-0)*t0+prim |
12587 | {0x61f461f4, cc_t0_mul_shade_add_prim}, |
12588 | // Doom. Added by Gonetz |
12589 | //(1-0)*t0+prim |
12590 | {0x61f661f6, cc_t0_add_prim}, |
12591 | // tire trace, beetle adventure racing. Added by Gonetz |
12592 | // (shade-prim)*t1+prim, (cmb-0)*t1+0 **INC** |
12593 | {0x6234e2f0, cc_shade_sub_prim_mul_t1_add_prim}, |
12594 | // Text, turok |
12595 | // (env-prim)*t1+prim |
12596 | {0x62356235, cc_env_sub_prim_mul_t1_add_prim}, |
12597 | // Pokemon Stadium 2, [gokuss4]. Added by Gonetz |
12598 | // (env-prim)*t1+prim, (cmb-0)*t1+0 |
12599 | // Hack alert! |
12600 | {0x6235e2f0, cc_t1}, |
12601 | // bike trace, xg2 intro. Added by Gonetz |
12602 | // (1-prim)*t1+prim |
12603 | {0x62366236, cc_one_sub_prim_mul_t1_add_prim}, |
12604 | // aerofighter's assault [Ogy] |
12605 | // (1-prim)*t1+prim, (cmb-0)*0+env |
12606 | {0x6236bff0, cc_one_sub_prim_mul_t1_add_prim}, |
12607 | // Tennis court, mario tennis |
12608 | // (t0-0)*t1+prim |
12609 | {0x62f162f1, cc__t0_mul_t1__add_prim}, |
12610 | // Arena, Pokemon Stadium 2 |
12611 | // (t0-0)*t1+prim, (cmb-0)*shade+0 |
12612 | {0x62f1e4f0, cc__t0_mul_t1_add_prim__mul_shade}, |
12613 | // Rush2. Added by Gonetz |
12614 | // (prim-prim)*prim+prim |
12615 | {0x63336333, cc_prim}, |
12616 | //Bowser in final battle, Paper Mario. Added by Gonetz |
12617 | // (t1-0)*prim+prim |
12618 | {0x63f263f2, cc_t1_mul_prim_add_prim}, |
12619 | // wetrix, icelayer, [Raziel64]. Added by Gonetz |
12620 | // (t0-prim)*shade+prim ** INC ** |
12621 | {0x64316431, cc_t0_mul_shade}, |
12622 | // KI. Added by Gonetz |
12623 | // (env-prim)*shade+prim |
12624 | {0x64356435, cc_env_sub_prim_mul_shade_add_prim}, |
12625 | // xg2. Added by Gonetz |
12626 | // (1-prim)*shade+prim, (t0-0)*cmb+0 ** INC ** |
12627 | {0x6436e0f1, cc_t1_mul__one_sub_prim_mul_shade_add_prim}, |
12628 | // Intro, CBFD. Added by Gonetz |
12629 | // (t0-env)*shade+prim |
12630 | {0x64516451, cc_t0_sub_env_mul_shade_add_prim}, |
12631 | // sword in final battle, zelda 2. Added by Gonetz |
12632 | // (t0-env)*shade+prim, (cmb-0)*shade+0 ** INC ** |
12633 | {0x6451e4f0, cc__t0_sub_env_mul_shade_add_prim__mul_shade}, |
12634 | // attack, Pokemon Stadium 2. |
12635 | // (t0-env)*shade+prim, (cmb-0)*shade_a+0 ** INC ** |
12636 | {0x6451ebf0, cc__t0_sub_env_mul_shade_add_prim__mul_shadea}, |
12637 | // Road Rush. Added by Gonetz |
12638 | // (t0-0)*shade+prim |
12639 | {0x64f164f1, cc_t0_mul_shade_add_prim}, |
12640 | // paper mario. Added by Gonetz |
12641 | // (1-0)*shade+prim |
12642 | {0x64f664f6, cc_prim_add_shade}, |
12643 | // Character select, smash bros |
12644 | // (t0-prim)*env+prim |
12645 | {0x65316531, cc_t0_sub_prim_mul_env_add_prim}, |
12646 | // Clear screen intro, banjo kazooie |
12647 | // (t0-prim)*env+prim, (cmb-0)*shade+0 |
12648 | // {0x6531e4f0, cc_t0_mul_env_mul_shade}, |
12649 | {0x6531e4f0, cc__prim_inter_t0_using_env__mul_shade}, |
12650 | // Dragonfly feet, banjo kazooie |
12651 | // (1-prim)*env+prim, (cmb-0)*shade+0 |
12652 | {0x6536e4f0, cc__prim_inter_one_using_env__mul_shade}, |
12653 | // Lava piranha atack, Paper Mario |
12654 | // (t1-k4)*env+prim ** INC ** |
12655 | {0x65726572, cc_t1_mul_env_add_prim}, |
12656 | // zelda 2 [Ogy]. Added by Gonetz |
12657 | // (t0-0)*env+prim, (1-t1)*t0a+cmb ** INC ** |
12658 | {0x65f10826, cc_one_sub_t1_mul_t0a_add_t0_mul_env_add_prim}, |
12659 | // clocks while warping through time, zelda 2 |
12660 | // (t0-0)*env+prim, (cmb-0)*0+cmb |
12661 | {0x65f11ff0, cc_t0_mul_env_add_prim}, |
12662 | // Helicopter, Nuclear Strike. Added by Gonetz |
12663 | // (t0-0)*env+prim |
12664 | {0x65f165f1, cc_t0_mul_env_add_prim}, |
12665 | // Mystical Ninja |
12666 | // (1-0)*env+prim |
12667 | {0x65f665f6, cc_prim_add_env}, |
12668 | // duke nukem: zero hour [Ogy] |
12669 | // (noise-0)*env+prim ** INC ** |
12670 | {0x65f765f7, cc_prim_add_env}, |
12671 | // "terminator", CBFD |
12672 | // (0-0)*env+prim |
12673 | {0x65ff65ff, cc_prim}, |
12674 | // Cliffs, Taz express. Added by Gonetz |
12675 | // (t0-0)*scale+prim |
12676 | {0x66f166f1, cc_t0_mul_scale_add_prim}, |
12677 | // Taz express. Added by Gonetz |
12678 | // (t0-0)*scale+prim, (cmb-0)*shade+0 |
12679 | {0x66f1e4f0, cc_t0_mul_scale_add_prim__mul_shade}, |
12680 | // NFL Quarterback Club 98 Menu [CpUMasteR] |
12681 | // (prim-0)*scale+prim |
12682 | {0x66f366f3, cc_prim}, |
12683 | // Pikachu |
12684 | // (t0-prim)*t0_a+prim, (env-cmb)*enva+cmb |
12685 | {0x68310c05, cc__prim_inter_t0_using_t0a__inter_env_using_enva}, |
12686 | // Character, dual heroes |
12687 | // (t0-prim)*t0_a+prim |
12688 | {0x68316831, cc_t0_sub_prim_mul_t0a_add_prim}, |
12689 | // Indy Racing 2000. Added by Gonetz |
12690 | // (t0-prim)*t0_a+prim, (cmb-0)*shade+0 ** INC ** |
12691 | {0x6831e4f0, cc__prim_inter_t0_using_t0a__mul_shade}, |
12692 | // text, Sin and Punishmen. Added by Gonetz |
12693 | // (env-prim)*t0_a+prim ** INC ** |
12694 | {0x68356835, cc_env_sub_prim_mul_t0a_add_prim}, |
12695 | // arena, Pokemon Stadium 2 |
12696 | // (1-prim)*t0_a+prim |
12697 | {0x68366836, cc_one_sub_prim_mul_t0a_add_prim}, |
12698 | // menu, PD. Added by Gonetz |
12699 | // (env-prim)*t1_a+prim |
12700 | {0x69356935, cc_env_sub_prim_mul_t1a_add_prim}, |
12701 | // {0x69356935, cc_t1}, |
12702 | //xg2. Added by Gonetz |
12703 | // (t0-prim)*prima+prim |
12704 | {0x6a316a31, cc_t0_sub_prim_mul_prima_add_prim}, |
12705 | // menu, battle phoenix 64. Added by Gonetz |
12706 | // (env-prim)*prima+prim |
12707 | {0x6a356a35, cc_env_sub_prim_mul_prima_add_prim}, |
12708 | // ground, KI. Added by Gonetz |
12709 | // (shade-env)*prima+prim |
12710 | {0x6a546a54, cc_shade_sub_env_mul_prima_add_prim}, |
12711 | // F1 World Grand Prix. Added by Gonetz |
12712 | // (t0-0)*prima+prim, (shade-0)*cmb+env **INC** |
12713 | {0x6af1a0f4, cc__t0_mul_prima_add_prim_mul__shade_add_env}, |
12714 | //broken wall, beetle adventure racing. Added by Gonetz |
12715 | // (t0-0)*prima+prim, (cmb-0)*shade+0 **INC** |
12716 | {0x6af1e4f0, cc__t0_mul_prima_add_prim_mul__shade}, |
12717 | // Genie, diddy kong racing |
12718 | // (t0-prim)*shade_alpha+prim, (env-cmb)*shade+cmb |
12719 | // {0x6b310405, cc_env_sub__prim_inter_t0_using_shadea__mul_shade_add_env}, |
12720 | {0x6b310405, cc_t0_mul_shadea}, |
12721 | // Extreme G. Added by Gonetz |
12722 | // (t0-prim)*shade_alpha+prim ** INC ** |
12723 | {0x6b316b31, cc_t0_sub_prim_mul_shadea_add_prim}, |
12724 | // water block, Paper Mario. Added by Gonetz |
12725 | // (t0-prim)*shade_alpha+prim, (prim-env)*cmb+env ** INC ** |
12726 | {0x6b31a053, cc_prim_sub_env_mul__prim_inter_t0_using_shadea__add_env}, |
12727 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
12728 | // (t0-prim)*shade_alpha+prim, (cmb-0)*shade+0 ** INC ** |
12729 | {0x6b31e4f0, cc__prim_inter_t0_using_shadea__mul_shade}, |
12730 | // F1 World Grand Prix sky. Added by Gonetz |
12731 | // (env-prim)*shade_alpha+prim, (shade-cmb)*cmb_a+cmb ** INC ** |
12732 | {0x6b350704, cc_f1_sky}, |
12733 | // lullaby, Paper Mario. Added by Gonetz |
12734 | // (env-prim)*shade_alpha+prim |
12735 | {0x6b356b35, cc_env_sub_prim_mul_shadea_add_prim}, |
12736 | // Some gannon spell, zelda |
12737 | // (noise-t0)*env_a+prim, (0-prim)*cmb+1 ** INC ** |
12738 | {0x6c17c03f, cc_one_sub__one_sub_t0_mul_enva_add_prim__mul_prim}, |
12739 | //Goldeneye, [Jeremy]. Added by Gonetz |
12740 | // (t0-prim)*env_a+prim |
12741 | {0x6c316c31, cc_t0_sub_prim_mul_enva_add_prim}, |
12742 | // button, Sin and Punishmen. Added by Gonetz |
12743 | // (env-prim)*env_a+prim |
12744 | {0x6c356c35, cc_env_sub_prim_mul_enva_add_prim}, |
12745 | // frame buffer effect, Glover2 |
12746 | // (env-prim)*env_a+prim, (cmb-0)*shade+0 |
12747 | {0x6c35e4f0, cc__prim_inter_env_using_enva__mul_shade}, |
12748 | // fallen stars at star summit, Paper Mario. Added by Gonetz |
12749 | // (t0-env)*env_a+prim, (1-0)*primlod+cmb |
12750 | {0x6c510ef6, cc_t0_sub_env_mul_enva_add_prim}, |
12751 | // focus, Paper Mario. Added by Gonetz |
12752 | // (t0-env)*env_a+prim, (cmb-shade)*shadea+shade ** INC ** |
12753 | {0x6c518b40, cc_t0_sub_shade_mul_shadea_add_shade}, |
12754 | // Ring, pokemon stadium 2 |
12755 | // (t0-0)*env_a+prim, (1-0)*cmb+0 |
12756 | {0x6cf1e0f6, cc_t0_mul_enva_add_prim}, |
12757 | // Jet Force |
12758 | // (noise-0)*env_a+prim |
12759 | {0x6cf76cf7, cc_prim}, |
12760 | // snowhead temple, zelda 2. Added by Gonetz |
12761 | // (t1-t0)*primlod+prim, (cmb-0)*shade+shade |
12762 | {0x6e1284f0, cc__t1_sub_t0_mul_primlod_add_prim__mul_shade_add_shade}, |
12763 | // zelda 2. Added by Gonetz |
12764 | // (t1-t0)*primlod+prim, (cmb-0)*shade+0 ** INC ** |
12765 | {0x6e12e4f0, cc__t1_sub_t0_mul_primlod_add_prim__mul_shade}, |
12766 | // mini games quiz monitor backround, Pokemon Stadium 2 |
12767 | // (noise-t0)*primlod+prim, (prim-env)*cmb+env ** INC ** |
12768 | {0x6e17a053, cc_prim_sub_env_mul__one_sub_t0_mul_primlod_add_prim__add_env}, |
12769 | // Morning Sun attack, pokemon stadium 2 |
12770 | // (t0-prim)*primlod+prim, (prim-env)*0+cmb |
12771 | {0x6e311f53, cc_t0_sub_prim_mul_primlod_add_prim}, |
12772 | // sky, daikatana. Added by Gonetz |
12773 | // (t0-prim)*primlod+prim, (cmb-0)*shade+0 |
12774 | {0x6e31e4f0, cc_t0_mul_shade}, |
12775 | // ball's track, NFL Blitz. Added by Gonetz |
12776 | // (t0-0)*primlod+prim |
12777 | {0x6ef16ef1, cc_t0_mul_primlod_add_prim}, |
12778 | // Earthquake pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
12779 | // (t0-0)*primlod+prim, (cmb-env)*cmb_a+env ** INC ** |
12780 | {0x6ef1a750, cc_t0_mul_primlod_add_prim}, |
12781 | // mini games quiz monitor backround, Pokemon Stadium 2 |
12782 | // (noise-0)*primlod+prim, (env-cmb)*cmb_a+cmb ** INC ** |
12783 | // use cmb_a which is ac_t0_mul_t1 |
12784 | {0x6ef70705, cc_env_sub_prim_mul__t0a_mul_t1a__add_prim}, |
12785 | // rope, CBFD |
12786 | // (t0-env)*k5+prim |
12787 | {0x6f516f51, cc_t0_sub_env_mul_k5_add_prim}, |
12788 | // super bowling |
12789 | // (0-0)*k5+prim |
12790 | {0x6fff6fff, cc_prim}, |
12791 | // intro, Aidyn Chronicles. Added by Gonetz |
12792 | // (0-0)*0+prim, (0-0)*0+prim |
12793 | {0x79fb7788, cc_prim}, |
12794 | // Encore attack, Pokemon Stadium 2 |
12795 | // (t0-0)*0+prim, (cmb-0)*shade+0 |
12796 | {0x7ff1e4f0, cc_prim_mul_shade}, |
12797 | // Menu, megaman |
12798 | // (1-0)*0+prim |
12799 | {0x7ff67ff6, cc_prim}, |
12800 | // sky, PGA European Tour |
12801 | // (0-0)*0+prim, (env-0)*t0+cmb |
12802 | {0x7fff01f5, cc_t1_mul_env_add_prim}, |
12803 | // WWF No Mercy? |
12804 | // ((0-0)*0+prim, (env-cmb)*shade+cmb |
12805 | {0x7fff0405, cc_env_sub_prim_mul_shade_add_prim}, |
12806 | // sky, Spiderman. Added by Gonetz |
12807 | // (0-0)*0+prim, (t1-0)*shade+cmb |
12808 | {0x7fff04f2, cc_t1_mul_shade_add_prim}, |
12809 | // ball's shadow, ISS 2k. Added by Gonetz |
12810 | // (0-0)*0+prim, (1-cmb)*env+cmb |
12811 | {0x7fff0506, cc_one_sub_prim_mul_env_add_prim}, |
12812 | // Necklace, quest64 |
12813 | // (0-0)*0+prim, (1-0)*env+cmb |
12814 | {0x7fff05f6, cc_prim_add_env}, |
12815 | // Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
12816 | // (0-0)*0+prim, (1-cmb)*cmba+cmb ** INC ** |
12817 | {0x7fff0706, cc_prim}, |
12818 | // Dobutsu no Mori. Added by Gonetz |
12819 | //(k5-k5)*0+prim, (cmb-0)*0+cmb |
12820 | {0x7fff1ff0, cc_prim}, |
12821 | // Intro background, starfox |
12822 | //z (k5-k5)*0+prim |
12823 | {0x7fff7fff, cc_prim}, |
12824 | // train smoke, Dobutsu No Mori. Added by Gonetz |
12825 | //(0-0)*0+prim, (shade-0)*cmb+0 |
12826 | {0x7fffe0f4, cc_prim_mul_shade}, |
12827 | // Donald Duck intro. Added by Gonetz |
12828 | //(0-0)*0+prim, (cmb-0)*prim+0 |
12829 | {0x7fffe3f0, cc_prim_mul_prim}, |
12830 | // Ms. Pac-Man intro. Added by Gonetz |
12831 | //(0-0)*0+prim, (cmb-0)*shade+0 |
12832 | {0x7fffe4f0, cc_prim_mul_shade}, |
12833 | // zelda 2. Added by Gonetz |
12834 | //(t1-t0)*t0+shade, (cmb-0)*shade+0 |
12835 | {0x8112e4f0, cc__t1_sub_t0_mul_t0_add_shade__mul_shade}, |
12836 | // branches, Beetle Adventure Racing |
12837 | //(t0-shade)*t0+shade, (t0-cmb)*prim+cmb **INC** |
12838 | {0x81410301, cc_t0_mul_prim}, |
12839 | // Namco logo, Famista 64 |
12840 | //(prim-shade)*t0+shade, (env-cmb)*t0+cmb **INC** |
12841 | {0x81430105, cc_prim_sub_shade_mul_t0_add_shade}, |
12842 | // pikachu, hey you pikachu |
12843 | //(prim-shade)*t0+shade, (env-cmb)*enva+cmb **INC** |
12844 | {0x81430c05, cc_prim_sub_shade_mul_t0_add_shade}, |
12845 | // Mario's head, mario //Added by Gonetz |
12846 | //(prim-shade)*t0+shade |
12847 | {0x81438143, cc_prim_sub_shade_mul_t0_add_shade}, |
12848 | // Iguana background, turok |
12849 | // (env-shade)*t0+shade |
12850 | {0x81458145, cc_env_sub_shade_mul_t0_add_shade}, |
12851 | //attack, Pokemon Stadium 2 |
12852 | // (env-shade)*t0+shade, (cmb-0)*prim+0 |
12853 | {0x8145e3f0, cc__env_sub_shade_mul_t0_add_shade__mul_prim}, |
12854 | // Bubbles in Jabu-Jabu's belly, zelda |
12855 | // (1-shade)*t0+shade |
12856 | {0x81468146, cc_one_sub_shade_mul_t0_add_shade}, |
12857 | // saffron city, Pokemon Stadium 2 |
12858 | // (1-shade)*t0+shade, (cmb-0)*prim+0 |
12859 | {0x8146e3f0, cc__one_sub_shade_mul_t0_add_shade__mul_prim}, |
12860 | // duck dodgers intro. Added by Gonetz |
12861 | // (1-shade)*t0+shade, (cmb-0)*shade+0 |
12862 | {0x8146e4f0, cc__one_sub_shade_mul_t0_add_shade__mul_shade}, |
12863 | // saffron city, Pokemon Stadium 2 |
12864 | // (1-shade)*t0+shade, (cmb-0)*prima+0 |
12865 | {0x8146eaf0, cc__one_sub_shade_mul_t0_add_shade__mul_env}, |
12866 | // intro, Madden Footbal |
12867 | // (1-env)*t0+shade |
12868 | {0x81568156, cc_one_sub_env_mul_t0_add_shade}, |
12869 | // sky in doom. Added by Gonetz |
12870 | // (prim-0)*t0+shade, (cmb-0)*primlod+env **INC** |
12871 | {0x81f3aef0, cc_t0_mul_prim_add_shade}, |
12872 | // commercial? in IIS98. Added by Gonetz |
12873 | // (1-0)*t0+shade |
12874 | {0x81f681f6, cc_t0_add_shade}, |
12875 | //attack, Pokemon Stadium 2 |
12876 | //(t0-prim)*t1+shade |
12877 | {0x82318231, cc_t0_sub_prim_mul_t1_add_shade}, |
12878 | //beetle adventure racing. Added by Gonetz |
12879 | //(prim-shade)*t1+shade, (cmb-0)*t1+0 **INC** |
12880 | {0x8243e2f0, cc_prim_sub_shade_mul_t1_add_shade}, |
12881 | //Arena, Pokemon Stadium 2 |
12882 | //(t0-0)*t1+shade |
12883 | {0x82f182f1, cc__t0_mul_t1__add_shade}, |
12884 | //Arena, Pokemon Stadium 2 |
12885 | //(t0-0)*t1+shade, (cmb-0)*prim+0 |
12886 | {0x82f1e3f0, cc__t0_mul_t1__mul_prim_add_prim_mul_shade}, |
12887 | // Scorpion fire breath, MK4 [Jeremy]. Added by Gonetz |
12888 | // (t0-shade)*prim+shade |
12889 | {0x83418341, cc_t0_mul_prim_add_one_sub_prim_mul_shade}, |
12890 | // Menu background, wwf no mercy |
12891 | // (env-shade)*prim+shade |
12892 | {0x83458345, cc_prim_mul_env_add_one_sub_prim_mul_shade}, |
12893 | // Pokemon selection window background, pokemon stadium 2 |
12894 | // (noise-shade)*prim+shade |
12895 | {0x83478347, cc_shade}, |
12896 | // crown of king of ikana, zelda 2. Added by Gonetz |
12897 | // (t0-env)*prim+shade |
12898 | {0x83518351, cc_t0_sub_env_mul_prim_add_shade}, |
12899 | // crown of king of ikana, zelda 2. Added by Gonetz |
12900 | // (t0-env)*prim+shade, (cmb-0)*cmb+0 ** INC ** |
12901 | {0x8351e0f0, cc_t0_sub_env_mul_prim_add_shade}, |
12902 | // salesman's shirt in the bomb shop in town, zelda 2 [Ogy]. Added by Gonetz |
12903 | // (t0-env)*prim+shade, (cmb-0)*shade+0 ** INC ** |
12904 | {0x8351e4f0, cc_t0_mul_prim_mul_shade}, |
12905 | // intro, Madden Footbal |
12906 | // (1-env)*prim+shade |
12907 | {0x83568356, cc_one_sub_env_mul_prim_add_shade}, |
12908 | // Buss hunter 64. Added by Gonetz |
12909 | // (t0-0)*prim+shade |
12910 | {0x83f183f1, cc_t0_mul_prim_add_shade}, |
12911 | // huge water lilies, zelda 2 [Ogy]. Added by Gonetz |
12912 | // (t0-0)*prim+shade, (cmb-env)*shade+0 ** INC ** |
12913 | {0x83f1e450, cc__t0_mul_prim_add_shade__sub_env_mul_shade}, |
12914 | // cynnabar gym fire shield, pokemon stadium 2 |
12915 | // (t0-0)*prim+shade, (cmb-0)*env+0 ** INC ** |
12916 | {0x83f1e5f0, cc__t0_mul_prim_add_shade__mul_env}, |
12917 | // Objects in arena, pokemon stadium 2 |
12918 | // (t1-0)*prim+shade, (cmb-0)*prim_a+0 - not going to bother with prim_a since it is FF |
12919 | {0x83f2eaf0, cc_t1_mul_prim_add_shade}, |
12920 | // Pokemon Stadium 2. Added by Gonetz |
12921 | // (t0-prim)*shade+shade ** INC ** |
12922 | {0x84318431, cc_t0_mul_shade}, |
12923 | // big N, Pokemon Stadium 2. Added by Gonetz |
12924 | // (1-prim)*shade+shade ** INC ** |
12925 | {0x84368436, cc_one_sub_prim_mul_shade_add_shade}, |
12926 | //Arena, Pokemon Stadium 2 |
12927 | //(t0-env)*shade+shade |
12928 | {0x84518451, cc_t0_sub_prim_mul_shade_add_shade}, |
12929 | //Arena, Pokemon Stadium 2 |
12930 | //(t0-env)*shade+shade, (cmb-0)*prim+0 |
12931 | {0x8451e3f0, cc_t0_sub_env_mul_prim_mul_shade_add_prim_mul_shade}, |
12932 | // arena, PokemonStadium2, [Raziel64] |
12933 | // (t0-0)*shade+shade, (cmb-0)*prim+0 |
12934 | {0x84f1e3f0, cc_t0_mul_prim_mul_shade_add_prim_mul_shade}, |
12935 | // Spiderman. Added by Gonetz |
12936 | // (1-0)*shade+shade |
12937 | {0x84f684f6, cc_shade_add_shade}, |
12938 | // the "gekko" ( a monster in a room above the 3rd room of woodfall temple }, zelda 2 [Ogy]. Added by Gonetz |
12939 | // (t0-prim)*env+shade ** INC ** |
12940 | {0x85318531, cc_t0_sub_prim_mul_env_add_shade}, |
12941 | // flower, zelda 2. Added by Gonetz |
12942 | // (t0-prim)*env+shade, (cmb-0)*shade+0 ** INC ** |
12943 | {0x8531e4f0, cc_t0_sub_prim_mul_env_add_shade}, |
12944 | // Robotron 64, [scorpiove] |
12945 | // (env-shade)*env+shade ** INC ** |
12946 | {0x85458545, cc_one_sub_env_mul_shade_add_env}, |
12947 | // Enemy dying, quest64 |
12948 | // (1-shade)*env+shade **changed by Gonetz |
12949 | {0x85468546, cc_one_sub_shade_mul_env_add_shade}, |
12950 | // Arena, Pokemon Stadium |
12951 | // (t0-0)*env+shade, (cmb-0)*prim+0 |
12952 | {0x85f1e3f0, cc__t0_mul_prim_mul_env__add__prim_mul_shade}, |
12953 | // Clouds, Pokemon Stadium |
12954 | // (t1-0)*env+shade, (cmb-0)*prim+0 |
12955 | {0x85f2e3f0, cc__t1_mul_prim_mul_env__add__prim_mul_shade}, |
12956 | // Sky, Beetle Adventure Racing ** INC ** |
12957 | //(t0-shade)*t0_a+shade, (env-cmb)*enva+cmb |
12958 | {0x88410c05, cc_t0_sub_shade_mul_t0a_add_shade}, |
12959 | // Mario's eyes, mario |
12960 | //z (t0-shade)*t0_a+shade |
12961 | {0x88418841, cc_t0_sub_shade_mul_t0a_add_shade}, |
12962 | //beetle adventure racing. Added by Gonetz |
12963 | // (prim-shade)*t0_a+shade, (t1-0)*cmb+0 **INC** |
12964 | {0x8843e0f2, cc_prim_sub_shade_mul__t0a_mul_t1__add_shade}, |
12965 | // blast corps [Ogy] |
12966 | // (prim-shade)*t1_a+shade |
12967 | {0x89438943, cc_prim_sub_shade_mul_t1a_add_shade}, |
12968 | //broken wall, beetle adventure racing. Added by Gonetz |
12969 | // (t0-shade)*prima+shade, (1-0)*0+cmb |
12970 | {0x8a411ff6, cc_t0_sub_shade_mul_prima_add_shade}, |
12971 | // menu, battle phoenix 64. Added by Gonetz |
12972 | // (t0-shade)*prima+shade |
12973 | {0x8a418a41, cc_t0_add_shade}, |
12974 | // intro, castlevania 2. Added by Gonetz |
12975 | // (prim-shade)*prim_a+shade |
12976 | {0x8a438a43, cc_prim_sub_shade_mul_prima_add_shade}, |
12977 | // Pilot wings |
12978 | // (t0-shade)*shade_a+shade, (cmb-0)*shade+0 |
12979 | {0x8b41e4f0, cc__shade_inter_t0_using_shadea__mul_shade}, |
12980 | // ? |
12981 | // (1-shade)*shade_a+shade |
12982 | {0x8b468b46, cc_one_sub_shade_mul_shadea_add_shade}, |
12983 | // Pilot wings, sky in congratulations |
12984 | // (t0-0)*shade_a+shade, |
12985 | {0x8bf18bf1, cc_t0_mul_shadea_add_shade}, |
12986 | // arena, Pokemon Stadium. Added by Gonetz |
12987 | // (t0-t1)*env_a+shade, (cmb-env)*prim+0 ** INC ** |
12988 | {0x8c21e350, cc__t0_sub_t1_mul_enva_add_shade__sub_env_mul_prim}, |
12989 | //diddy kong racing background fill. Added by Gonetz ** Modified by Dave2001 |
12990 | // (env-shade)*env_a+shade, (cmb-0)*prim+0 |
12991 | {0x8c458c45, cc_shade}, // note: previous combiner used other_alpha; doesn't work |
12992 | //diddy kong racing. Added by Gonetz |
12993 | // (env-shade)*env_a+shade, (cmb-0)*prim+0 ** INC ** |
12994 | {0x8c45e3f0, cc_prim_mul_shade}, |
12995 | // sky, Pokemon Stadium, [Raziel64] |
12996 | // (t0-0)*env_a+shade, (cmb-env)*prim+0 ** INC ** |
12997 | {0x8cf1e350, cc_t0_mul_prim_add_shade_sub_env_mul_prim}, |
12998 | // zelda 2 [Ogy]. Added by Gonetz |
12999 | // (t0-prim)*primlod+shade, (prim-env)*cmb+env ** INC ** |
13000 | {0x8e31a053, cc_prim_sub_env_mul__t0_sub_prim_mul_primlod_add_shade__add_env}, |
13001 | // fallen leaves, Dobutsu no Mori. Added by Gonetz |
13002 | // (t0-shade)*primlod+shade, (prim-env)*cmb+env ** INC ** |
13003 | {0x8e41a053, cc_prim_sub_env_mul__t0_sub_shade_mul_primlod_add_shade__add_env}, |
13004 | // the icicle above the part just before the entrance to the mountain village, zelda 2 [Ogy]. Added by Gonetz |
13005 | // (t0-prim)*0+shade, (prim-env)*cmb+env ** INC ** ? |
13006 | {0x9f31a053, cc_prim_sub_env_mul_shade_add_env}, |
13007 | // background on level 3-1, kirby 64 [Raziel64]. Added by Gonetz |
13008 | // (0-env)*0+shade |
13009 | {0x9f5f9f5f, cc_shade}, |
13010 | // Spotlight, smash bros |
13011 | // (1-0)*0+shade |
13012 | {0x9ff69ff6, cc_shade}, |
13013 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13014 | // (0-0)*0+shade, (cmb-cmb)*cmb+cmb |
13015 | {0x9fff0000, cc_shade}, |
13016 | // menu, Dr.Mario. Added by Gonetz |
13017 | // (0-0)*0+shade, (prim-cmb)*env+cmb |
13018 | {0x9fff0503, cc_prim_sub_shade_mul_env_add_shade}, |
13019 | // pikachu, hey you pikachu. Added by Gonetz |
13020 | // (0-0)*0+shade, (env-cmb)*enva+cmb |
13021 | {0x9fff0c05, cc_env_sub_shade_mul_enva_add_shade}, |
13022 | // mega shock, paper mario |
13023 | //(0-0)*0+shade, (env-prim)*cmb+prim |
13024 | {0x9fff6035, cc_env_sub_prim_mul_shade_add_prim}, |
13025 | // Super Mario 64 logo background |
13026 | //z (k5-k5)*0+shade |
13027 | {0x9fff9fff, cc_shade}, |
13028 | // Zelda 2 final movie. Added by Gonetz |
13029 | // (0-0)*0+shade, (prim-0)*cmb+0 |
13030 | {0x9fffe0f3, cc_prim_mul_shade}, |
13031 | // tree shadow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13032 | // (0-0)*0+shade, (env-0)*cmb+0 |
13033 | {0x9fffe0f5, cc_env_mul_shade}, |
13034 | // N64 logo, Aidyn Chronicles. Added by Gonetz |
13035 | // (0-0)*0+shade, (cmb-0)*prim+0 |
13036 | {0x9fffe3f0, cc_prim_mul_shade}, |
13037 | // Hand, smash bros |
13038 | // (0-0)*0+shade, (cmb-0)*env+0 |
13039 | {0x9fffe5f0, cc_env_mul_shade}, |
13040 | // Lave piranha atack, Paper Mario |
13041 | // (t1-t0)*t0+env, (cmb-t1)*t0+prim ** INC ** |
13042 | {0xa1126120, cc__t0_mul_t1__mul_env_add_prim}, |
13043 | //Arena, Pokemon Stadium 2 |
13044 | // (t1-prim)*t0+env, (cmb-0)*shade+0 |
13045 | {0xa132e4f0, cc__t1_sub_prim_mul_t0_add_env__mul_shade}, |
13046 | // Kirby64 end [Raziel64]. Added by Gonetz |
13047 | // (prim-shade)*t0+env |
13048 | {0xa143a143, cc_prim_sub_shade_mul_t0_add_env}, |
13049 | // Superman [scorpiove]. Added by Gonetz |
13050 | // (t0-env)*t0+env |
13051 | {0xa151a151, cc_t0_sub_env_mul_t0_add_env}, |
13052 | // powder keg, zelda 2. Added by Gonetz |
13053 | // (prim-env)*t0+env, (0-0)*shade_a+cmb |
13054 | {0xa1530bff, cc__prim_sub_env_mul_t0_add_env__add_shadea}, |
13055 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
13056 | // (prim-env)*t0+env, (0-0)*prim_lod+cmb |
13057 | {0xa1530ef6, cc__prim_sub_env_mul_t0_add_env__add_primlod}, |
13058 | //attack, Pokemon Stadium 2 |
13059 | // (prim-env)*t0+env, (0-0)*prim_lod+cmb |
13060 | {0xa1530eff, cc_prim_sub_env_mul_t0_add_env}, |
13061 | // Kotake & koume defeated, going into sky, zelda |
13062 | // (prim-env)*t0+env, (prim-env)*0+cmb |
13063 | {0xa1531f53, cc_prim_sub_env_mul_t0_add_env}, |
13064 | // water, Dobutsu no Mori. Added by Gonetz |
13065 | // (prim-env)*t0+env, (cmb-0)*shade+t0 |
13066 | {0xa15324f0, cc_t0_add_shade_mul_env}, |
13067 | //sky, beetle adventure racing. Added by Gonetz |
13068 | // (prim-env)*t0+env, (cmb-shade)*t1+shade **INC** can't be done in one step |
13069 | {0xa1538240, cc__env_inter_prim_using_t0__sub_shade_mul_t0a_add_shade}, |
13070 | //couple's mask, zelda2. Added by Gonetz |
13071 | // (prim-env)*t0+env, (prim-cmb)*shade+shade **INC** can't be done in one step |
13072 | {0xa1538403, cc_t0_mul_shade}, |
13073 | // stadium, Pokemon Stadium 2. Added by Gonetz |
13074 | // (prim-env)*t0+env, (cmb-0)*shade+shade **INC** can't be done in one step |
13075 | {0xa15384f0, cc_t0_mul_shade}, |
13076 | //clothes on girl in inn, zelda2. Added by Gonetz |
13077 | // (prim-env)*t0+env, (cmb-prim)*env+shade **INC** can't be done in one step |
13078 | {0xa1538530, cc_t0_mul_env_add_shade}, |
13079 | // Getting light arrows for the first time, zelda |
13080 | // (prim-env)*t0+env, (prim-env)*cmb+env ** INC ** |
13081 | {0xa153a053, cc_prim_sub_env_mul_t0_add_env}, |
13082 | // Fire, starfox |
13083 | // (prim-env)*t0+env |
13084 | {0xa153a153, cc_prim_sub_env_mul_t0_add_env}, |
13085 | // a spell, Fushigi no Dungeon: Fuurai no Shiren 2 |
13086 | // (prim-env)*t0+env, (cmb-env)*enva+env |
13087 | {0xa153ac50, cc_prim_sub_env_mul__t0_mul_enva__add_env}, |
13088 | // wizrobe's attack, zelda 2. Added by Gonetz. |
13089 | // (prim-env)*t0+env, (cmb-0)*cmb+0 |
13090 | {0xa153e0f0, cc_prim_sub_env_mul_t0_add_env}, |
13091 | // dress, zelda 2. Added by Gonetz. |
13092 | // also for Great Farie's hair - changed to use texture mod by Dave2001. |
13093 | // (prim-env)*t0+env, (shade-0)*cmb+0 |
13094 | {0xa153e0f4, cc__env_inter_prim_using_t0__mul_shade}, |
13095 | // Start menu, paper mario |
13096 | // (prim-env)*t0+env, (cmb-0)*t0+0 |
13097 | {0xa153e1f0, cc_prim_sub_env_mul_t0_add_env}, |
13098 | // {0xa153e0f4, cc_prim_sub_env_mul_t0_add_env}, |
13099 | // Jellyfish tentacles in Jabu-Jabu's belly, zelda |
13100 | // (prim-env)*t0+env, (cmb-0)*prim+0 |
13101 | {0xa153e3f0, cc__env_inter_prim_using_t0__mul_prim}, |
13102 | // Dust, zelda |
13103 | //z (prim-env)*t0+env, (cmb-0)*shade+0 ** INC ** |
13104 | {0xa153e4f0, cc__env_inter_prim_using_t0__mul_shade}, |
13105 | //{0xa153e4f0, cc_prim_sub_env_mul_t0_add_env}, |
13106 | // roof, Kirby 64. Added by Gonetz |
13107 | // (prim-env)*t0+env, (cmb-0)*env+0 ** INC ** |
13108 | {0xa153e5f0, cc_prim_sub_env_mul_t0_add_env}, |
13109 | // hall of fame, Pokemon Stadium |
13110 | // (prim-env)*t0+env, (cmb-0)*primlod+0 |
13111 | {0xa153eef0, cc__prim_sub_env_mul_t0_add_env__mul_primlod}, |
13112 | // Something weird in intro, monster truck madness |
13113 | // (prim-env)*t0+env, (cmb-0)*k5+0 |
13114 | {0xa153eff0, cc__prim_sub_env_mul_t0_add_env__mul_k5}, |
13115 | // clothes, kirby 64. Added by Gonetz |
13116 | // (shade-env)*t0+env |
13117 | {0xa154a154, cc_shade_sub_env_mul_t0_add_env}, |
13118 | // field, Derby Stallion |
13119 | // (shade-env)*t0+env, (cmb-0)*prim+0 ** INC ** |
13120 | {0xa154e3f0, cc_shade_sub_env_mul_t0_mul_prim_add_prim_mul_env}, |
13121 | // background, level 3-5, kirby 64, [Raziel64] |
13122 | // (shade-env)*t0+env, (cmb-0)*shade+0 ** INC ** |
13123 | {0xa154e4f0, cc_shade_sub_env_mul_t0_add_env}, |
13124 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
13125 | // (one-env)*t0+env |
13126 | {0xa156a156, cc_one_sub_env_mul_t0_add_env}, |
13127 | // Arena, Pokemon Stadium 2. |
13128 | // (one-env)*t0+env, (cmb-0)*shade+0 |
13129 | {0xa156e4f0, cc__env_inter_one_using_t0__mul_shade}, |
13130 | //Arena, Pokemon Stadium 2 |
13131 | // (t1-0)*t0+env, (cmb-0)*cmb+0 ** INC ** |
13132 | {0xa1f2e0f0, cc__t0_mul_t1__add_env_mul__t0_mul_t1__add_env}, |
13133 | // quake 2 intro |
13134 | // (prim-0)*t0+env, (prim-0)*primlod+cmb ** INC ** |
13135 | {0xa1f30ef3, cc_t0_mul_prim_add_env}, |
13136 | // Kotake or koume's hair, zelda |
13137 | // (prim-0)*t0+env |
13138 | {0xa1f3a1f3, cc_t0_mul_prim_add_env}, |
13139 | // track, ridge racer. Added by Gonetz |
13140 | // (t0-env)*t1+env, (cmb-0)*shade+0 ** INC ** |
13141 | {0xa251e4f0, cc__t0_mul_t1__mul_shade}, |
13142 | // lava, beetle adventure racing |
13143 | // (t0-env)*t1+env, (cmb-0)*enva+0 ** INC ** |
13144 | {0xa251ecf0, cc__t0_mul_t1__mul_enva}, |
13145 | // Ded Moroz, Paper Mario |
13146 | // (prim-env)*t1+env, (1-cmb)*t1+cmb ** INC ** |
13147 | {0xa2530206, cc_prim_sub_env_mul_t1_add_env}, |
13148 | // text, monster truck madness |
13149 | // (prim-env)*t1+env |
13150 | {0xa253a253, cc_prim_sub_env_mul_t1_add_env}, |
13151 | // car position, Top Gear Rally. Added by Gonetz |
13152 | // (prim-env)*t1+env, (cmb-t0)*t1+0 ** INC ** |
13153 | {0xa253e210, cc_prim_sub_env_mul_t1_add_env_mul_t0}, |
13154 | // text, Top Gear Rally. Added by Gonetz |
13155 | // (prim-env)*t1+env, (cmb-0)*t1+0 ** INC ** |
13156 | {0xa253e2f0, cc_prim_sub_env_mul_t1_add_env_mul_t0}, |
13157 | // {0xa253e2f0, cc_prim_sub_env_mul_t1_add_env}, |
13158 | // a pole in the cut-scene that appears after you receive odolwa's mask, zelda 2 [Ogy]. Added by Gonetz |
13159 | // (prim-env)*t1+env, (cmb-0)*shade+0 ** INC ** |
13160 | {0xa253e4f0, cc_t1_mul_prim_mul_shade}, |
13161 | // Quake 2 intro. Added by Gonetz |
13162 | // (t0-0)*t1+env, (t0-0)*primlod+cmb ** INC ** |
13163 | {0xa2f10ef1, cc__t0_mul_t1__add_env}, |
13164 | // silver cave, pokemon stadium 2 |
13165 | // (t0-0)*t1+env, (cmb-prim)*shadea+prim |
13166 | {0xa2f16b30, cc_prim_inter__t0_mul_t1_add_env__using_shadea}, |
13167 | // silver cave, pokemon stadium 2 |
13168 | // (t0-0)*t1+env, (cmb-0)*shadea+shade |
13169 | {0xa2f18bf0, cc__t0_mul_t1_add_env__mul_shadea_add_shade}, |
13170 | // Quake64. Added by Gonetz |
13171 | // (t0-0)*t1+env |
13172 | {0xa2f1a2f1, cc__t0_mul_t1__add_env}, |
13173 | // Quake II. Added by Gonetz ** INC ** |
13174 | // (t0-0)*t1+env, (cmb-0)*prim+env |
13175 | {0xa2f1a3f0, cc__t0_mul_t1__mul_prim_add_env}, |
13176 | // Dr Mario [Ogy]. Added by Gonetz |
13177 | // (t0-env)*prim+env |
13178 | // {0xa351a351, cc_t0_mul_prim_add_env}, |
13179 | {0xa351a351, cc_t0_sub_env_mul_prim_add_env}, |
13180 | // menu, Dr.Mario. Added by Gonetz |
13181 | // (prim-env)*prim+env |
13182 | {0xa353a353, cc_prim_sub_env_mul_prim_add_env}, |
13183 | // Razor sword, zelda 2. Added by Gonetz |
13184 | // (shade-env)*prim+env, (cmb-0)*shade+0 ** INC ** |
13185 | {0xa354e4f0, cc_shade_sub_env_mul_prim_add_env}, |
13186 | // bomberman 64-2 intro. Added by Gonetz |
13187 | // (1-env)*prim+env |
13188 | {0xa356a356, cc_one_sub_env_mul_prim_add_env}, |
13189 | // thing that escapes from the well, zelda |
13190 | // (noise-env)*prim+env |
13191 | {0xa357a357, cc_prim_add_env}, |
13192 | // Bongo Bongo, zelda |
13193 | // (noise-env)*prim+env, (cmb-0)*shade+0 |
13194 | {0xa357e4f0, cc_env_mul_shade}, |
13195 | // paper mario. Added by Gonetz |
13196 | // (t0-0)*prim+env |
13197 | {0xa3f1a3f1, cc_t0_mul_prim_add_env}, |
13198 | // paper mario. Added by Gonetz |
13199 | // (t0-0)*prim+env, (t0-env)*prim+0 |
13200 | {0xa3f1e351, cc_t0_mul_prim_add_env}, |
13201 | // paper mario. Added by Gonetz |
13202 | // (t0-0)*prim+env, (t0-0)*prim+0 |
13203 | {0xa3f1e3f1, cc_t0_mul_prim}, |
13204 | // mahogany town statue, Pokemon Stadium 2 |
13205 | // (t0-0)*prim+env, (cmb-0)*shade+0 |
13206 | {0xa3f1e4f0, cc__t0_mul_prim_add_env__mul_shade}, |
13207 | // squirt, paper mario. Added by Gonetz |
13208 | // (t1-0)*prim+env, (1-cmb)*t1+cmb |
13209 | {0xa3f20206, cc_t1_mul_prim_add_env}, |
13210 | // paper mario. Added by Gonetz |
13211 | // (shade-0)*prim+env |
13212 | {0xa3f4a3f4, cc_prim_mul_shade_add_env}, |
13213 | // Sharpen attack, pokemon stadium 2 |
13214 | // (shade-0)*prim+env, (cmb-0)*shade+0 |
13215 | {0xa3f4e4f0, cc__prim_mul_shade_add_env__mul_shade}, |
13216 | // Doraemon 2. Added by Gonetz |
13217 | // (1-0)*prim+env |
13218 | {0xa3f6a3f6, cc_prim_add_env}, |
13219 | // Pokemon Stadium 2, [Jeremy]. Added by Gonetz |
13220 | // (noise-0)*prim+env ** INC ** ? |
13221 | {0xa3f7a3f7, cc_prim_add_env}, |
13222 | // monsters, Pokemon Stadium. Added by Gonetz |
13223 | // (t0-t1)*shade+env, (cmb-0)*prim+0 ** INC ** |
13224 | {0xa421e3f0, cc__t0_sub_t1__mul_prim_mul_shade_add_prim_mul_env}, |
13225 | // background, pokemon stadium 2 |
13226 | // (t0-prim)*shade+env |
13227 | {0xa431a431, cc_t0_sub_prim_mul_shade_add_env}, |
13228 | // Arena, pokemon stadium 2 |
13229 | // (t0-prim)*shade+env, (cmb-0)*shade+0 |
13230 | {0xa431e4f0, cc__t0_sub_prim_mul_shade_add_env__mul_shade}, |
13231 | // Trophy, pokemon stadium 2 |
13232 | // (t0-prim)*shade+env, (cmb-0)*shade_a+0 |
13233 | {0xa431ebf0, cc__t0_sub_prim_mul_shade_add_env__mul_shadea}, |
13234 | // Buildings, pokemon stadium 2 |
13235 | // (t1-prim)*shade+env |
13236 | {0xa432a432, cc_t1_sub_prim_mul_shade_add_env}, |
13237 | // bomberman 64 [Ogy] |
13238 | // (t0-env)*shade+env |
13239 | {0xa451a451, cc_t0_mul_shade_add_env}, |
13240 | // kirby drill, kirby 64. Added by Gonetz |
13241 | // (prim-env)*shade+env |
13242 | {0xa453a453, cc_prim_sub_env_mul_shade_add_env}, |
13243 | // ball, ISS98 intro. Added by Gonetz |
13244 | // (t0-0)*shade+env |
13245 | {0xa4f1a4f1, cc_t0_mul_shade_add_env}, |
13246 | // waterfall, Dobutsu_no_Mori |
13247 | // (prim-0)*shade+env, (t0-0)*primlod+cmb |
13248 | {0xa4f30ef1, cc_t0_mul_primlod_add_prim_mul_shade_add_env}, |
13249 | // waterfall, Dobutsu_no_Mori |
13250 | // (prim-0)*shade+env, (t1-0)*primlod+cmb |
13251 | {0xa4f30ef2, cc_t1_mul_primlod_add_prim_mul_shade_add_env}, |
13252 | // score, ISS98 intro. Added by Gonetz |
13253 | // (prim-0)*shade+env |
13254 | {0xa4f3a4f3, cc_prim_mul_shade_add_env}, |
13255 | // magic fist, Rayman2. Added by Gonetz |
13256 | // (env-0)*shade+env |
13257 | {0xa4f5a4f5, cc_env_mul_shade_add_env}, |
13258 | // gunfire, Quake64. Added by Gonetz |
13259 | // (1-0)*shade+env |
13260 | {0xa4f6a4f6, cc_env_add_shade}, |
13261 | // flame, Paper Mario. Added by Gonetz |
13262 | // (t0-center)*scale+env, (0-prim)*cmb+env |
13263 | {0xa661a03f, cc_env_sub__t0_mul_scale_add_env__mul_prim}, |
13264 | // N64 BIOS |
13265 | // (t0-env)*t0_a+env, cmb*shade |
13266 | {0xa851e0f4, cc__env_inter_t0_using_t0a__mul_shade}, |
13267 | // pink car, f-zero x |
13268 | // (t0-env)*t0_a+env, cmb*shade |
13269 | {0xa851e4f0, cc__env_inter_t0_using_t0a__mul_shade}, |
13270 | // PokemonStadium1, [Raziel64] |
13271 | // (prim-env)*t0_a+env, (cmb-cmb)*cmb+cmb |
13272 | {0xa8530000, cc_prim_sub_env_mul_t0a_add_env}, |
13273 | // N64 logo, Ogre Battle |
13274 | // (prim-env)*t0_a+env |
13275 | {0xa853a853, cc_prim_sub_env_mul_t0a_add_env}, |
13276 | // Mud Slap, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
13277 | // (prim-env)*t0_a+env, (cmb-0)*cmb+0 |
13278 | {0xa853e0f0, cc_prim_sub_env_mul_t0a_add_env}, |
13279 | // Tree background, mace |
13280 | // (prim-env)*t0_a+env, (cmb-0)*t0+0 |
13281 | {0xa853e1f0, cc__env_inter_prim_using_t0a__mul_t0}, |
13282 | //attack, Pokemon Stadium 2 |
13283 | // (prim-env)*t0_a+env, (cmb-0)*prim+0 |
13284 | {0xa853e3f0, cc__env_inter_prim_using_t0a__mul_prim}, |
13285 | // logo, Deadly Arts. Added by Gonetz |
13286 | // (prim-env)*t1_a+env |
13287 | {0xa953a953, cc_prim_sub_env_mul_t1a_add_env}, |
13288 | // MarioGolf text "Birdie Put" |
13289 | // (t0-env)*prim_a+env |
13290 | {0xaa51aa51, cc_t0_sub_env_mul_prima_add_env}, |
13291 | // N64 BIOS |
13292 | // (t0-env)*prim_a+env, (shade-0)*cmb+0 |
13293 | {0xaa51e0f4, cc__env_inter_t0_using_prima__mul_shade}, |
13294 | // N64 BIOS |
13295 | // (prim-env)*prima+env, (shade-0)*cmb+0 |
13296 | {0xaa53e0f4, cc__env_inter_prim_using_prima__mul_shade}, |
13297 | // Girl, PD intro. Added by Gonetz |
13298 | // (t0-env)*shade_alpha+env, (cmb-0)*shade+0 ** INC ** |
13299 | {0xab51e4f0, cc__env_inter_t0_using_shadea__mul_shade}, |
13300 | // Some gannon spell, zelda |
13301 | // (prim-env)*shade_alpha+env |
13302 | {0xab53ab53, cc_prim_sub_env_mul_shadea_add_env}, |
13303 | //Arena, Pokemon Stadium 2 |
13304 | // (t0-0)*shade_alpha+env, (cmb-0)*shade+prim |
13305 | {0xabf164f0, cc__t0_mul_shadea_add_env__mul_shade_add_prim}, |
13306 | // Boxes, Taz express. Added by Gonetz |
13307 | // (t0-env)*env_a+env |
13308 | {0xac51ac51, cc_t0_sub_env_mul_enva_add_env}, |
13309 | // paper mario. Added by Gonetz |
13310 | // (t0-env)*env_a+env, (cmb-0)*shade+0 **INC** |
13311 | {0xac51e4f0, cc_t0_mul_env_mul_shade}, |
13312 | // goal, Monster Truck Madness 64 |
13313 | // (noise-0)*env_a+env, (cmb-0)*t1+0 **INC** |
13314 | {0xacf7e2f0, cc_t1_mul_env}, |
13315 | // sword on forge, zelda 2. Added by Gonetz |
13316 | // (t1-t1)*lodf+env, (t1-t0)*cmb+prim |
13317 | {0xae226012, cc__t1_sub_t0__mul_env_add_prim}, |
13318 | // menu background, Pokemon Stadium 2, [Raziel64] |
13319 | // (t0-prim)*lodf+env |
13320 | {0xae31ae31, cc_t0_sub_prim_mul_primlod_add_env}, |
13321 | // odd mushroom, zelda oot. Added by Gonetz |
13322 | // (t0-shade)*lodf+env, (prim-env)*cmb+env ** INC ** |
13323 | {0xae41a053, cc__env_inter_prim_using__t0_sub_shade_mul_primlod_add_env}, |
13324 | // {0xae41a053, cc_prim_sub_env_mul__t0_mul_shade__add_env}, |
13325 | // Morning Sun, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
13326 | // (t0-env)*lodf+env, (cmb-0)*prim+0 |
13327 | {0xae51e3f0, cc__env_inter_t0_using_primlod__mul_prim}, |
13328 | //Spacestation Silicon Valley intro. Added by Gonetz |
13329 | // (prim-env)*lodf+env |
13330 | {0xae53ae53, cc_env_inter_prim_using_primlod}, |
13331 | // Doom, intro. Added by Gonetz |
13332 | // (t0-0)*lodf+env, (t0-0)*lodf+env |
13333 | {0xaef1aef1, cc_t0_add_env}, |
13334 | // Dobutsu no Mori. Added by Gonetz |
13335 | // (prim-0)*lodf+env |
13336 | {0xaef3aef3, cc_prim_add_env}, |
13337 | // forest behind window, Dobutsu no Mori. Added by Gonetz |
13338 | // (prim-0)*prim_lod+env, (t1-0)*cmb+0 |
13339 | {0xaef3e0f2, cc_t0_mul__prim_mul_primlod_add_env }, |
13340 | // tony hawks 2 menu |
13341 | // (t0-rnv)*k5+env, (cmb-t1)*t1_a+t1 ** INC ** (correct combiner does not work because of black t1) |
13342 | {0xaf514920, cc_t0_sub_env_mul_k5_add_env}, |
13343 | // intro, Mission Impossible. Added by Gonetz |
13344 | // (k5-k5)*0+env, (0-0)*scale+env |
13345 | {0xbfffa6ff, cc_env}, |
13346 | // Something blocking the screen, waverace |
13347 | //z (k5-k5)*0+env |
13348 | {0xbfffbfff, cc_env}, |
13349 | // Derby Stallion . Added by Gonetz |
13350 | // (0-0)*0+env, (cmb-0)*prim+0 |
13351 | {0xbfffe3f0, cc_prim_mul_env}, |
13352 | // zelda 2 [Ogy]. Added by Gonetz |
13353 | // (k5-k5)*0+env, ((cmb-0)*shade+0 |
13354 | {0xbfffe4f0, cc_env_mul_shade}, |
13355 | // flame, paper mario. Added by Gonetz |
13356 | // (t0-t1)*t0+1, (0-prim)*cmb+env **INC** weird |
13357 | {0xc121a03f, cc__t0_inter_t1_using_half__mul_prim_add_env}, |
13358 | // tube near big monster on level 5, Kirby64 [Raziel64] |
13359 | // (prim-env)*t0+1, (cmb-0)*shade+0 ** INC ** |
13360 | {0xc153e4f0, cc_prim_sub_env_mul_t0_mul_shade}, |
13361 | // paper mario. Added by Gonetz |
13362 | // (0-env)*t0+1, (prim-cmb)*t0+prim **INC** |
13363 | {0xc15f6103, cc_env_sub_prim_mul_t0_add_prim}, |
13364 | // HAL, smash bros |
13365 | // (0-0)*0+1 |
13366 | {0xdfffdfff, cc_one}, |
13367 | // arena, Pokemon Stadium 1, [Raziel64] |
13368 | // (0-0)*0+1, (cmb-0)*prim+0 |
13369 | {0xdfffe3f0, cc_prim}, |
13370 | // skis, Spacestation Silicon Valley. Added by Gonetz |
13371 | // (shade-0)*cmb+0, (t1-t0)*primlod+t0 |
13372 | {0xe0f42d12, cc_t0_inter_t1_using_primlod}, |
13373 | // paper mario. Added by Gonetz |
13374 | // (1-t1)*t0+0, (env-prim)*cmb+prim ** INC ** |
13375 | {0xe1266035, cc_env_sub_prim_mul__t0_mul_t1__add_prim}, |
13376 | // ground, zelda 2. Added by Gonetz. |
13377 | // (t1-prim)*t0+0, (cmb-0)*shade+0 |
13378 | {0xe132e4f0, cc__t1_sub_prim_mul_t0__mul_shade}, |
13379 | // carmagedon |
13380 | // (shade-prim)*t0+0 |
13381 | {0xe134e134, cc_shade_sub_prim_mul_t0}, |
13382 | // skeleton, castlevania 2. Added by Gonetz |
13383 | // (1-prim)*t0+0, (cmb-0)*shade+0 |
13384 | {0xe136e4f0, cc_t0_mul_1mprim_mul_shade}, |
13385 | // Starshot logo. Added by Gonetz |
13386 | // (shade-env)*t0+0, (1-0)*cmb+cmb |
13387 | {0xe15400f6, cc_shade_sub_env_mul_t0}, |
13388 | // Kirby morfing, smash bros. Added by Gonetz |
13389 | // (shade-env)*t0+0 |
13390 | {0xe154e154, cc_shade_sub_env_mul_t0}, |
13391 | // menu, PGA euro tour. Added by Gonetz |
13392 | // (1-env)*t0+0 |
13393 | {0xe156e156, cc_one_sub_env_mul_t0}, |
13394 | // paper mario. Added by Gonetz |
13395 | // (t0-0)*t0+0, (1-cmb)*prim+cmb |
13396 | {0xe1f10306, cc_one_sub_t0_mul_prim_add_t0}, |
13397 | // F1 World Grand Prix. Added by Gonetz |
13398 | // (t0-0)*t0+0, (shade-prim)*cmb+prim |
13399 | {0xe1f16034, cc_shade_sub_prim_mul_t0_add_prim}, |
13400 | // paper mario. Added by Gonetz |
13401 | // (t0-0)*t0+0, (env-prim)*cmb+prim |
13402 | {0xe1f16035, cc_env_sub_prim_mul_t0_add_prim}, |
13403 | // sparkles, F1 World Grand Prix. Added by Gonetz |
13404 | // (t0-0)*t0+0, (1-prim)*cmb+prim |
13405 | {0xe1f16036, cc_one_sub_prim_mul_t0_add_prim}, |
13406 | // rocket team basket, Pokemon Stadium 2 |
13407 | // (t0-0)*t0+0, (cmb-prim)*shade+shade |
13408 | {0xe1f18430, cc__t0_mul_t0__sub_prim_mul_shade_add_shade}, |
13409 | // Tony Hawk's Pro Skater. Added by Gonetz |
13410 | // (t0-0)*t0+0, (cmb-0)*t0+0 |
13411 | {0xe1f1e1f0, cc_t0}, |
13412 | // something in upper left corner, mario tennis |
13413 | // (t0-0)*t0+0 |
13414 | {0xe1f1e1f1, cc_t0}, |
13415 | // zelda 2. Added by Gonetz |
13416 | // (t0-0)*t0+0, (cmb-0)*prim+0 |
13417 | {0xe1f1e3f0, cc_t0_mul_prim}, |
13418 | // zelda 2 final movie. Added by Gonetz |
13419 | // (t0-0)*t0+0, (cmb-0)*shade+0 |
13420 | {0xe1f1e4f0, cc_t0_mul_shade}, |
13421 | // paper mario. Added by Gonetz |
13422 | // (t0-t1)*t0+1, (env-cmb)*prima+cmb ** INC ** |
13423 | {0xe1f20a05, cc_t1_mul_prima}, |
13424 | // terrain, SCARS. Added by Gonetz |
13425 | // (t1-0)*t0+0, (env-prim)*cmb+prim |
13426 | {0xe1f26035, cc_env_sub_prim_mul__t0_mul_t1__add_prim}, |
13427 | // Trees, Zelda 2 |
13428 | // (t1-0)*t0+0, (cmb-0)*shade+prim |
13429 | {0xe1f264f0, cc__t0_mul_t1__mul_shade_add_prim}, |
13430 | // terrain, SCARS. Added by Gonetz |
13431 | // (t1-0)*t0+0, (env-shade)*cmb+shade |
13432 | {0xe1f28045, cc_env_sub_shade_mul__t0_mul_t1__add_shade}, |
13433 | // arena, Pokemon Stadium 2. Added by Gonetz |
13434 | // (t1-0)*t0+0, (cmb-prim)*shade+shade ** INC ** |
13435 | {0xe1f28430, cc__t0_mul_t1__sub_prim_mul_shade_add_shade}, |
13436 | // arena, Pokemon Stadium 2 |
13437 | // (t1-0)*t0+0, (cmb-env)*shade+shade |
13438 | {0xe1f28450, cc__t0_mul_t1__sub_env_mul_shade_add_shade}, |
13439 | // Zelda 2, [Ogy]. Added by Gonetz |
13440 | // (t1-0)*t0+0, (cmb-prim)*env+shade ** INC ** |
13441 | {0xe1f28530, cc__t0_mul_t1__sub_prim_mul_env_add_shade}, |
13442 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
13443 | // (t1-0)*t0+0, (prim-env)*cmb+env |
13444 | {0xe1f2a053, cc_prim_sub_env_mul__t0_mul_t1__add_env}, |
13445 | // paper mario. Added by Gonetz |
13446 | // (t1-0)*t0+0, (cmb-0)*prim+env |
13447 | {0xe1f2a3f0, cc__t0_mul_t1__mul_prim_add_env}, |
13448 | // Sand, pokemon stadium 2 |
13449 | // (t1-0)*t0+0, (cmb-prim)*shade+env ** INC ** |
13450 | {0xe1f2a430, cc__t0_mul_t1__mul_shade}, |
13451 | // grass, Mission Impossible. Added by Gonetz |
13452 | // (t1-0)*t0+0, (shade-0)*cmb+0 |
13453 | {0xe1f2e0f4, cc__t0_mul_t1__mul_shade}, |
13454 | // flag, Monako Grand Prix |
13455 | // (t1-0)*t0+0 |
13456 | {0xe1f2e1f2, cc_t0_mul_t1}, |
13457 | // lighthouse's beam, zelda 2. Added by Gonetz |
13458 | // (t1-0)*t0+0, (cmb-0)*prim+0 |
13459 | {0xe1f2e3f0, cc__t0_mul_t1__mul_prim}, |
13460 | // Bottom of wings, pilotwings |
13461 | // (t1-0)*t0+0, (cmb-0)*shade+0 |
13462 | {0xe1f2e4f0, cc__t0_mul_t1__mul_shade}, |
13463 | // zelda 2. Added by Gonetz |
13464 | // (t1-0)*t0+0, (cmb-0)*prima+0 |
13465 | {0xe1f2eaf0, cc__t0_mul_t1__mul_prima}, |
13466 | // lava, Roadsters. Added by Gonetz |
13467 | // (prim-0)*t0+0, (1-prim)*t0+cmb |
13468 | {0xe1f30136, cc_t0}, |
13469 | // sky, Pokemon Stadium 2. Added by Gonetz |
13470 | // (prim-0)*t0+0, (cmb-0)*shadea+env |
13471 | {0xe1f3abf0, cc_t0_mul_prim_mul_shadea_add_env}, |
13472 | // cars, Indy Racing 2000. Added by Gonetz |
13473 | // (prim-0)*t0+0, (shade-0)*cmb+0 |
13474 | {0xe1f3e0f4, cc_t0_mul_prim_mul_shade}, |
13475 | // Sign shadows, zelda |
13476 | //z (prim-k5)*t0+cmb_a |
13477 | {0xe1f3e1f3, cc_t0_mul_prim}, |
13478 | // Table, mace |
13479 | // (prim-0)*t0+0, (cmb-0)*shade+0 |
13480 | {0xe1f3e4f0, cc_t0_mul_prim_mul_shade}, |
13481 | // Gauntlet Legends intro |
13482 | // (prim-0)*t0+0, (cmb-0)*prima+0 |
13483 | {0xe1f3eaf0, cc_t0_mul_prim_mul_prima}, |
13484 | // walls, beetle adventure racing. Added by Gonetz |
13485 | // (shade-0)*t0+0, (prim-0)*t0+cmb |
13486 | {0xe1f401f3, cc_t0_mul_shade}, |
13487 | // cars, ridge racer. Added by Gonetz |
13488 | // (shade-0)*t0+0, (prim-cmb)*cmb_a+cmb **INC** |
13489 | {0xe1f40703, cc_t0_mul_shade}, |
13490 | // water block, Paper Mario. Added by Gonetz |
13491 | // (shade-0)*t0+0, (prim-env)*cmb+env |
13492 | {0xe1f4a053, cc_prim_sub_env_mul__t0_mul_shade__add_env}, |
13493 | // a lot in TWINE. Added by Gonetz |
13494 | // (shade-0)*t0+0, (cmb-0)*prim+env |
13495 | {0xe1f4a3f0, cc_t0_mul_prim_mul_shade_add_env}, |
13496 | // Xena. Added by Gonetz |
13497 | // (shade-0)*t0+0, (env-0)*cmb+0 |
13498 | {0xe1f4e0f5, cc_t0_mul_env_mul_shade}, |
13499 | // Starshot logo. Added by Gonetz |
13500 | // (shade-0)*t0+0, (1-0)*cmb+0 |
13501 | {0xe1f4e0f6, cc_t0_mul_shade}, |
13502 | // Duck Dodgers intro. Added by Gonetz |
13503 | // (shade-0)*t0+0 |
13504 | {0xe1f4e1f4, cc_t0_mul_shade}, |
13505 | // shadow, Mission Impossible. Added by Gonetz |
13506 | // (shade-0)*t0+0, (cmb-0)*prim+0 |
13507 | {0xe1f4e3f0, cc_t0_mul_prim_mul_shade}, |
13508 | // Tony Hawk's Pro Skater 3. Added by Gonetz |
13509 | // (env-0)*t0+0, (t1-0)*shade+cmb ** INC ** |
13510 | {0xe1f504f2, cc__t0_add_t1__mul_shade}, |
13511 | // text, tonic trouble. Added by Gonetz |
13512 | // (env-0)*t0+0 |
13513 | {0xe1f5e1f5, cc_t0_mul_env}, |
13514 | // powder keg, zelda 2. Added by Gonetz |
13515 | // (env-0)*t0+0, (cmb-0)*shade+0 |
13516 | {0xe1f5e4f0, cc_t0_mul_env_mul_shade}, |
13517 | // Buss rush |
13518 | // (1-0)*t0+0, (0-cmb)*0+cmb |
13519 | {0xe1f61f0f, cc_t0}, |
13520 | // water, Starshot. Added by Gonetz |
13521 | // (1-0)*t0+0, (1-0)*cmb+0 |
13522 | {0xe1f6e0f6, cc_t0}, |
13523 | // bomberman 64 [Ogy] |
13524 | // (1-0)*t0+0 |
13525 | {0xe1f6e1f6, cc_t0}, |
13526 | // Mermaid attack, Mystical Ninja |
13527 | // (noise-0)*t0+0 |
13528 | {0xe1f7e1f7, cc_t0}, |
13529 | // paper mario. Added by Gonetz * changed because of odd palette copy |
13530 | // (t0-0)*t1+0, (shade-env)*cmb+cmb **INC** ? |
13531 | {0xe2f10054, cc_shade_sub_env_mul__t0_mul_t1__add__t0_mul_t1}, |
13532 | // Duck Dodgers Starring Daffy Duck text background |
13533 | // (t0-0)*t1+0, (shade-cmb)*prim+cmb |
13534 | {0xe2f10304, cc_one_sub_prim_mul__t0_mul_t1__add__prim_mul_shade}, |
13535 | // water, PGA European Tour |
13536 | // (t0-0)*t1+0, (env-cmb)*prim+cmb |
13537 | {0xe2f10305, cc_one_sub_prim_mul__t0_mul_t1__add__prim_mul_env}, |
13538 | // Grass, mario golf |
13539 | // (t0-0)*t1+0, (cmb-t0)*cmb_a+t0 |
13540 | {0xe2f12710, cc_t0_mul_t1}, |
13541 | // xg2, Added by Gonetz |
13542 | // (t0-0)*t1+0, (env-prim)*cmb+prim |
13543 | {0xe2f16035, cc_env_sub_prim_mul__t0_mul_t1__add_prim}, |
13544 | // poo, CBFD, Added by Gonetz |
13545 | // (t0-0)*t1+0, (cmb-env)*shade+prim ** INC ** |
13546 | {0xe2f16450, cc__t0_mul_t1__mul_shade_add_prim}, |
13547 | // the champion stage, Pokemon Stadium 2 |
13548 | // (t0-0)*t1+0, (cmb-0)*shade+prim |
13549 | {0xe2f164f0, cc__t0_mul_t1__mul_shade_add_prim}, |
13550 | // sky, xg2, Added by Gonetz |
13551 | // (t0-0)*t1+0, (cmb-prim)*cmb_a+prim |
13552 | {0xe2f16730, cc__t0_mul_t1__sub_prim_mul__t0t1a__add_prim }, |
13553 | // Sin and Punishment, [scorpiove], Added by Gonetz |
13554 | // (t0-0)*t1+0, (env-prim)*cmb_a+prim |
13555 | {0xe2f16735, cc_env_sub_prim_mul__t0t1a__add_prim}, |
13556 | // cianwood gym walls, pokemon stadium 2 |
13557 | // (t0-0)*t1+0, (cmb-prim)*shade+shade |
13558 | {0xe2f18430, cc__t0_mul_t1__sub_prim_mul_shade_add_shade}, |
13559 | // light, Ridge Racer. Added by Gonetz |
13560 | // (t0-0)*t1+0, (prim-env)*cmb+env |
13561 | {0xe2f1a053, cc_prim_sub_env_mul__t0_mul_t1__add_env}, |
13562 | // Waterfall, duck dodgers. Added by Gonetz |
13563 | // (t0-0)*t1+0, (shade-env)*cmb+env |
13564 | {0xe2f1a054, cc_shade_sub_env_mul__t0_mul_t1__add_env}, |
13565 | // Arena, Pokemon Stadium 2 ** INC ** |
13566 | // (t0-0)*t1+0, (cmb-prim)*shade+env |
13567 | {0xe2f1a430, cc__t0_mul_t1__mul_shade_add_env}, |
13568 | // bikes, xg2 |
13569 | // (t0-0)*t1+0, (shade-0)*cmb+0 |
13570 | {0xe2f1e0f4, cc__t0_mul_t1__mul_shade}, |
13571 | // Sky background, xg2 |
13572 | // (t0-0)*t1+0 |
13573 | {0xe2f1e2f1, cc_t0_mul_t1}, |
13574 | // statistics, Banjo 2. Added by Gonetz |
13575 | // (t0-0)*t1+0, (cmb-0)*prim+0 |
13576 | {0xe2f1e3f0, cc__t0_mul_t1__mul_prim}, |
13577 | // the champion stage, Pokemon Stadium 2 |
13578 | // (t0-0)*t1+0, (cmb-prim)*shade+0 |
13579 | {0xe2f1e430, cc__t0_mul_t1__sub_prim_mul_shade}, |
13580 | // Water, pilotwings |
13581 | // (t0-0)*t1+0, (cmb-0)*shade+0 |
13582 | {0xe2f1e4f0, cc__t0_mul_t1__mul_shade}, |
13583 | //beetle adventure racing. A dded by Gonetz |
13584 | // (t0-0)*t1+0, (cmb-0)*env+0 |
13585 | {0xe2f1e5f0, cc__t0_mul_t1__mul_env}, |
13586 | //fall headwaters, zelda 2. Added by Gonetz |
13587 | // (t1-0)*t1+0, (cmb-0)*shade+0 |
13588 | {0xe2f2e4f0, cc_t1_mul_shade}, |
13589 | //text, Paper Mario |
13590 | // (prim-0)*t1+0 |
13591 | {0xe2f3e2f3, cc_t1_mul_prim}, |
13592 | //terrain, Beetle Adventure Racing. Added by Gonetz |
13593 | // (shade-0)*t1+0 |
13594 | {0xe2f4e2f4, cc_t1_mul_shade}, |
13595 | // Transfer pack, Pokemon Stadium 2 |
13596 | // (noise-0)*t1+0, (prim-env)*cmb+env |
13597 | {0xe2f7a053, cc_prim_sub_env_mul_t1_add_env}, |
13598 | // lens of truth, zelda 2 [Ogy]. Added by Gonetz |
13599 | // (1-t0)*prim+0 |
13600 | {0xe316e316, cc_one_sub_t0_mul_prim}, |
13601 | //C&C pointer |
13602 | //(shade-env)*prim+0 |
13603 | {0xe354e354, cc_shade_sub_env_mul_prim}, |
13604 | //C&C shadows |
13605 | //(1-env)*prim+0 |
13606 | {0xe356e356, cc_one_sub_env_mul_prim}, |
13607 | // Magnitude, pokemon stadium 2 |
13608 | // (t0-0)*prim+0, (t0-0)*env+cmb |
13609 | {0xe3f105f1, cc_t0_mul__prim_add_env}, |
13610 | // night vision, jet force gemini |
13611 | // (t0-0)*prim+0, (noise-0)*env+cmb |
13612 | {0xe3f105f7, cc_t0_mul_prim_add_env}, |
13613 | // Smoke, diddy kong racing |
13614 | // (t0-0)*prim+0, (env-cmb)*env_alpha+cmb |
13615 | {0xe3f10c05, cc__t0_mul_prim__inter_env_using_enva}, |
13616 | // battle menu, Paper Mario. Added by Gonetz |
13617 | // (t0-0)*prim+0, (t0-env)*env_alpha+cmb ** INC ** |
13618 | {0xe3f10c51, cc_t0_mul_prim}, |
13619 | // stalactites, Beetle adventure Racing. Added by Gonetz |
13620 | // (t0-0)*prim+0, (cmb-shade)*t1_alpha+shade ** INC ** |
13621 | {0xe3f18940, cc_t0_mul_prim_add_shade }, |
13622 | // ? in Jabu-Jabu's belly, submitted by gokuss4 |
13623 | // {0xe4f1a053, (t0-0)*prim+0, (prim-env)*cmb+env |
13624 | {0xe3f1a053, cc_prim_sub_env_mul__t0_mul_prim__add_env}, |
13625 | // kirby drill, kirby 64. Added by Gonetz |
13626 | // (t0-0)*prim+0, (cmb-env)*shade+env **INC** |
13627 | {0xe3f1a450, cc_t0_mul_prim_mul_shade_add_env}, |
13628 | // ? sign, zelda 2. Added by Gonetz |
13629 | // (t0-0)*prim+0, (cmb-0)*cmb+0 ** INC ** |
13630 | {0xe3f1e0f0, cc_t0_mul_prim}, |
13631 | // vehicle, Star Wars Ep.1 Racer, [Raziel64]. Added by Gonetz |
13632 | // (t0-0)*prim+0, (shade-0)*cmb+0 |
13633 | {0xe3f1e0f4, cc_t0_mul_prim_mul_shade}, |
13634 | // mini game, Pokemon Stadium 2 |
13635 | // (t0-0)*prim+0, (1-0)*cmb+0 |
13636 | {0xe3f1e0f6, cc_t0_mul_prim}, |
13637 | // magic stuff, buck bumble. Added by Gonetz |
13638 | // (t0-0)*prim+0, (cmb-0)*prim+0 |
13639 | {0xe3f1e3f0, cc_t0_mul_prim_mul_prim}, |
13640 | // The mario face, mario |
13641 | //z (t0-k5)*prim+cmb_a |
13642 | {0xe3f1e3f1, cc_t0_mul_prim}, |
13643 | // Butterflies at Jabu-Jabu's lake, zelda |
13644 | // (t0-0)*prim+0, (cmb-0)*shade+0 |
13645 | {0xe3f1e4f0, cc_t0_mul_prim_mul_shade}, |
13646 | // Sports shirt, Mia Soccer. Added by Gonetz |
13647 | // (t1-0)*prim+0, (1-t0)*t1+cmb **INC** |
13648 | // {0xe3f20216, cc_t0_mul_prim_add_t1}, |
13649 | {0xe3f20216, cc_shirt}, |
13650 | // Sprites, Ogre Battle. Added by Gonetz |
13651 | // (t1-0)*prim+0 |
13652 | {0xe3f2e3f2, cc_t1_mul_prim}, |
13653 | // F1 World Grand Prix. Added by Gonetz |
13654 | // (t1-0)*prim+0, (cmb-0)*shade+0 |
13655 | {0xe3f2e4f0, cc_t1_mul_prim_mul_shade}, |
13656 | // intro background, bio freaks. Added by Gonetz |
13657 | // (prim-0)*prim+0 |
13658 | {0xe3f3e3f3, cc_prim_mul_prim}, |
13659 | // player, Ohzumou2 |
13660 | // (shade-0)*prim+0, (env-cmb)*t0+cmb |
13661 | {0xe3f40105, cc_env_sub_primshade_mul_t0_add_primshade}, |
13662 | // floor in pyramides, beetle adventure racing. |
13663 | // (shade-0)*prim+0, (t1-0)*cmb+0 |
13664 | {0xe3f4e0f2, cc_t1_mul_prim_mul_shade}, |
13665 | // Slingshot string, zelda |
13666 | // (shade-0)*prim+0 |
13667 | {0xe3f4e3f4, cc_prim_mul_shade}, |
13668 | // ? |
13669 | // (shade-0)*prim+0, (cmb-0)*shade+0 ** INC ** |
13670 | {0xe3f4e4f0, cc_prim_mul_shade}, |
13671 | // ???, zelda |
13672 | // (env-0)*prim+0, (0-0)*0+cmb |
13673 | {0xe3f5e3f5, cc_prim_mul_env}, |
13674 | // Option selection, zelda |
13675 | //z (1-0)*prim+0 |
13676 | {0xe3f6e3f6, cc_prim}, |
13677 | // ranco monster, zelda 2. Added by Gonetz |
13678 | // (noise-0)*prim+0, (cmb-0)*prim_a+prim |
13679 | {0xe3f76af0, cc_prim_mul_prima_add_prim}, |
13680 | // F-1_World_Grand_Prix_II, olivieryuyu |
13681 | // (noise-0)*prim+0, (0-cmb)*prim_a+shade |
13682 | {0xe3f78a0f, cc_shade_sub__prim_mul_prima}, |
13683 | // zelda 2 [Ogy]. Added by Gonetz |
13684 | // (noise-0)*prim+0 |
13685 | {0xe3f7e3f7, cc_prim}, |
13686 | // Road rush. Added by Gonetz |
13687 | // (0-0)*prim+0 ** INC ** ? |
13688 | {0xe3ffe3ff, cc_prim}, |
13689 | // Letter to Kafei's mom, zelda 2. Added by Gonetz |
13690 | // (0-0)*prim+0, (cmb-0)*shade+0 |
13691 | {0xe3ffe4f0, cc_prim_mul_shade}, |
13692 | // Jabu-Jabu's Belly, zelda. Added by Gonetz |
13693 | // (1-t0)*shade+0, (cmb-0)*prim+0 |
13694 | {0xe416e3f0, cc_one_sub_t0_mul_prim_mul_shade}, |
13695 | // Arena, Pokemon Stadium 2 |
13696 | // (t0-prim)*shade+0 |
13697 | {0xe431e431, cc_t0_sub_prim_mul_shade}, |
13698 | // silver cave, pokemon stadium 2 |
13699 | // (t0-env)*shade+0, (cmb-prim)*shade+prim |
13700 | {0xe4516430, cc__t0_sub_env_mul_shade__sub_prim_mul_shade_add_prim}, |
13701 | // bomb mask, zelda 2. Added by Gonetz |
13702 | // (t0-env)*shade+0, (cmb-prim)*shade+shade ** INC ** |
13703 | {0xe4518430, cc__t0_sub_env_mul_shade__sub_prim_mul_shade}, |
13704 | // terrain, Top Gear Rally 2. Added by Gonetz |
13705 | // (t0-env)*shade+0 |
13706 | {0xe451e451, cc_t0_sub_env_mul_shade}, |
13707 | // closes, Nightmire Creatures |
13708 | // (1-env)*shade+0 |
13709 | {0xe456e456, cc_one_sub_env_mul_shade}, |
13710 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13711 | // (t0-0)*shade+0, (cmb-cmb)*cmb+cmb |
13712 | {0xe4f10000, cc_t0_mul_shade}, |
13713 | // Monster truck madness intro. Added by Gonetz |
13714 | // (t0-0)*shade+0, (1-0)*cmb+cmb ** INC ** |
13715 | {0xe4f100f6, cc_t0_mul_shade}, |
13716 | // terrain, SCARS. Added by Gonetz |
13717 | // (t0-0)*shade+0, (prim-cmb)*t0+cmb ** INC ** |
13718 | {0xe4f10103, cc_t0_mul_shade}, |
13719 | // Boomerang circle, zelda |
13720 | // (t0-0)*shade+0, (1-cmb)*t0+cmb |
13721 | {0xe4f10106, cc_t0_mul_shade}, |
13722 | // THPS3. |
13723 | // (t0-0)*shade+0, (1-0)*t0+cmb |
13724 | {0xe4f101f6, cc_t0_mul_shade}, |
13725 | // ???, WWF No Mercy [CpuMaster] |
13726 | // (t0-0)*shade+0, (env-cmb)*prim+cmb |
13727 | {0xe4f10305, cc_t0_mul_one_sub_prim_mul_shade_add_prim_mul_env}, |
13728 | // magic bubble, zelda2. Added by Gonetz |
13729 | // (t0-0)*shade+0, (t1-0)*shade+cmb |
13730 | {0xe4f104f2, cc__t0_mul_shade__add__t1_mul_shade}, |
13731 | // bike select, xg2. Added by Gonetz |
13732 | // (t0-0)*shade+0, (1-cmb)*env+cmb ** INC ** |
13733 | {0xe4f10506, cc_t0_mul_shade}, |
13734 | // a bugs life [Ogy] |
13735 | // (t0-0)*shade+0, (cmb-0)*env+cmb |
13736 | // {0xe4f105f0, cc_t0_mul_env_mul_shade}, |
13737 | {0xe4f105f0, cc_t0_mul_shade}, |
13738 | // Wall, quest64 |
13739 | // (t0-0)*shade+0, (1-0)*env+cmb |
13740 | {0xe4f105f6, cc_t0_mul_shade_add_env}, |
13741 | //lava, beetle adventure racing. Added by Gonetz |
13742 | // (t0-0)*shade+0, (prim-cmb)*cmb_a+cmb **INC** |
13743 | {0xe4f10703, cc_t0_mul_shade}, |
13744 | // course map, Ridge Racer. Added by Gonetz |
13745 | // (t0-0)*shade+0, (prim-cmb)*prima+cmb **INC** |
13746 | {0xe4f10a03, cc_t0_mul_shade}, |
13747 | // arena, custom robo. Added by Gonetz |
13748 | // (t0-0)*shade+0, (noise-cmb)*prima+cmb **INC** |
13749 | {0xe4f10a07, cc_t0_mul_shade}, |
13750 | // arena, custom robo 2. Added by Gonetz |
13751 | // (t0-0)*shade+0, (0-cmb)*prima+cmb **INC** |
13752 | {0xe4f10a0f, cc_t0_mul_shade}, |
13753 | //floor in a cave, Paper mario. Added by Gonetz |
13754 | // (t0-0)*shade+0, (cmb-prim)*prima+cmb **INC** |
13755 | {0xe4f10a30, cc_t0_mul_shade}, |
13756 | //beetle adventure racing. Added by Gonetz |
13757 | // (t0-0)*shade+0, (t1-prim)*prima+cmb **INC** |
13758 | {0xe4f10a32, cc_t0_mul_shade}, |
13759 | // Monster truck madness intro. Added by Gonetz |
13760 | // (t0-0)*shade+0, (shade-cmb)*shade_a+cmb ** INC ** |
13761 | {0xe4f10b04, cc_t0_mul_shade}, |
13762 | // xg2 intro. Added by Gonetz |
13763 | // (t0-0)*shade+0, (1-cmb)*shade_a+cmb ** INC ** |
13764 | {0xe4f10b06, cc__t0_mul_shade__inter_one_using_shadea}, |
13765 | // Link's bomb, smash bros |
13766 | // (t0-0)*shade+0, (env-cmb)*env_a+cmb ** INC ** |
13767 | {0xe4f10c05, cc__t0_mul_shade__inter_env_using_enva}, |
13768 | // language selection, Extreme-G XG2 (E) |
13769 | // (t0-0)*shade+0, (1-cmb)*env_a+cmb |
13770 | {0xe4f10c06, cc__t0_mul_shade__inter_one_using_enva}, |
13771 | // A Bugs Life, [Raziel64] |
13772 | // (t0-0)*shade+0, (cmb-0)*k5+cmb |
13773 | {0xe4f10ff0, cc_t0_mul_shade}, |
13774 | // Bass Rush |
13775 | // (t0-0)*shade+0, (cmb-0)*0+cmb |
13776 | {0xe4f11f0f, cc_t0_mul_shade}, |
13777 | // car, Top Gear Rally. Added by Gonetz |
13778 | // (t0-0)*shade+0, (cmb-t0)*t0a+t0 **INC** |
13779 | {0xe4f12810, cc_t0_mul_shade}, |
13780 | // logo, SCARS. Added by Gonetz |
13781 | // (t0-0)*shade+0, (cmb-t0)*shadea+t0 **INC** |
13782 | {0xe4f12b10, cc__t0_mul_shade_mul_shadea__add__t1_mul_one_sub_shadea}, |
13783 | // ? sign, Spiderman. Added by Gonetz |
13784 | // (t0-0)*shade+0, (0-0)*0+t1 |
13785 | {0xe4f15fff, cc_t0_mul_shade}, |
13786 | // Major League Baseball Featuring Ken Griffey Jr. |
13787 | // (t0-0)*shade+0, (1-0)*cmb+prim ** INC ** |
13788 | {0xe4f160f6, cc_t0_mul_shade_add_prim}, |
13789 | // plants, CBFD. Added by Gonetz |
13790 | // (t0-0)*shade+0, (cmb-env)*shade+prim ** INC ** |
13791 | {0xe4f16450, cc_t0_sub_env_mul_shade_add_prim}, |
13792 | // Kirby64. Added by Gonetz |
13793 | // (t0-0)*shade+0, (cmb-prim)*prima+prim |
13794 | {0xe4f16a30, cc_t0_mul_prima_mul_shade_add_prim_mul_one_sub_prima}, |
13795 | // building shadow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13796 | // (t0-0)*shade+0, (0-0)*0+prim |
13797 | {0xe4f17fff, cc_prim}, |
13798 | // tire trace, beetle adventure racing. Added by Gonetz |
13799 | // (t0-0)*shade+0, (env-cmb)*t1+shade **INC** |
13800 | {0xe4f18205, cc_env_sub_shade_mul_t0_add_shade}, |
13801 | // Gold Skulltula, zelda |
13802 | // (t0-0)*shade+0, (prim-env)*cmb+env |
13803 | {0xe4f1a053, cc_prim_sub_env_mul_t0_mul_shade_add_env}, |
13804 | // {0xe4f1a053, cc_t0_mul_prim_mul_shade}, |
13805 | // fighters, GASP Fighters |
13806 | // (t0-0)*shade+0, (1-env)*cmb+env |
13807 | {0xe4f1a056, cc_t0_mul_one_sub_env_mul_shade_add_env}, |
13808 | // Brian, quest64 |
13809 | // (t0-0)*shade+0, (cmb-0)*prim+env |
13810 | {0xe4f1a3f0, cc_t0_mul_prim_mul_shade_add_env}, |
13811 | // Objects in arena, pokemon stadium 2 |
13812 | // (t0-0)*shade+0 |
13813 | // (cmb-prim)*shade+env |
13814 | {0xe4f1a430, cc_t0_mul_shade}, |
13815 | // Monster truck madness intro. Added by Gonetz |
13816 | // (t0-0)*shade+0, (cmb-env)*shadea+env **INC** |
13817 | // {0xe4f1ab50, cc_t0_mul_shade_add_env}, |
13818 | {0xe4f1ab50, cc__t0_mul_shade__sub_env_mul_shadea_add_env}, |
13819 | // Taz express. Added by Gonetz |
13820 | // (t0-0)*shade+0, (cmb-env)*enva+env **INC** |
13821 | {0xe4f1ac50, cc_t0_mul_shade_add_env}, |
13822 | // sky in doom. Added by Gonetz |
13823 | // (t0-0)*shade+0, (cmb-0)*primlod+env **INC** |
13824 | {0xe4f1aef0, cc_t0_mul_shade_add_env}, |
13825 | // fighters, GASP Fighters |
13826 | // (t0-0)*shade+0, (1-env)*cmb+0 |
13827 | {0xe4f1e056, cc_t0_mul_one_sub_env_mul_shade}, |
13828 | // walls, beetle adventure racing. Added by Gonetz |
13829 | // (t0-0)*shade+0, (t0-0)*cmb+0 **INC** |
13830 | {0xe4f1e0f1, cc_t0_mul_shade}, |
13831 | // Link's face, zelda |
13832 | //z (t0-k5)*shade+cmb_a, (prim-k5)*cmb+cmb_a |
13833 | {0xe4f1e0f3, cc_t0_mul_prim_mul_shade}, |
13834 | // Link's suit, zelda |
13835 | //z (t0-k5)*shade+cmb_a, (env-k5)*cmb+cmb_a |
13836 | {0xe4f1e0f5, cc_t0_mul_env_mul_shade}, |
13837 | // Window, starfox |
13838 | //z (t0-k5)*shade+cmb_a, (cmb-k5)*prim+cmb_a |
13839 | {0xe4f1e3f0, cc_t0_mul_prim_mul_shade}, |
13840 | // crystal, Doraemon 2 |
13841 | //(t0-0)*shade+0, (t0-0)*prim+0 |
13842 | {0xe4f1e3f1, cc_t0_mul_prim}, |
13843 | // Characters, mace |
13844 | // (t0-0)*shade+0, (cmb-0)*shade+0 |
13845 | {0xe4f1e4f0, cc_t0_mul_shade}, |
13846 | // Super Mario 64 logo |
13847 | //z (t0-k5)*shade+cmb_a |
13848 | {0xe4f1e4f1, cc_t0_mul_shade}, |
13849 | // Kokiri's hat, zelda |
13850 | // (t0-0)*shade+0, (cmb-0)*env+0 |
13851 | {0xe4f1e5f0, cc_t0_mul_env_mul_shade}, |
13852 | // Gauntlet Legends intro |
13853 | // (t0-0)*shade+0, (cmb-0)*scale+0 |
13854 | {0xe4f1e6f0, cc_t0_mul_scale_mul_shade}, |
13855 | // Something on a tree, Paper Mario. Added by Gonetz |
13856 | // (t0-0)*shade+0, (cmb-0)*prima+0 |
13857 | {0xe4f1eaf0, cc_t0_mul_prima_mul_shade}, |
13858 | // Course map, Ridge Racer. Added by Gonetz |
13859 | // (t0-0)*shade+0, (cmb-0)*shadea+0 |
13860 | {0xe4f1ebf0, cc_t0_mul_shade_mul_shadea}, |
13861 | // Dodongo skull's eyes, zelda |
13862 | // (t0-0)*shade+0, (cmb-0)*env_alpha+0 |
13863 | {0xe4f1ecf0, cc_t0_mul_enva_mul_shade}, |
13864 | // lava, beetle adventure racing. Added by Gonetz |
13865 | // (t1-0)*shade+0, (cmb-prim)*cmb_a+prim **INC** |
13866 | {0xe4f26730, cc_prim_inter_t1_mul_shade_using_texa}, |
13867 | // headlight, beetle adventure racing. Added by Gonetz |
13868 | // (t1-0)*shade+0, (env-cmb)*t0+shade **INC** |
13869 | {0xe4f28105, cc_one_sub__t0_mul_t1__mul_shade}, |
13870 | // bubble, Banjo-Kazooie. Added by Gonetz |
13871 | // (t1-0)*shade+0 |
13872 | {0xe4f2e4f2, cc_t1_mul_shade}, |
13873 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13874 | // (prim-0)*shade+0, (cmb-cmb)*cmb+cmb |
13875 | {0xe4f30000, cc_prim_mul_shade}, |
13876 | // lamp shadow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13877 | // (prim-0)*shade+0, (cmb-cmb)*t0+cmb |
13878 | {0xe4f30100, cc_prim_mul_shade}, |
13879 | // Yoshi, mario golf |
13880 | // (prim-0)*shade+0, (env-cmb)*t0+cmb |
13881 | {0xe4f30105, cc_env_sub_primshade_mul_t0_add_primshade}, |
13882 | //Spacestation Silicon Valley intro. Added by Gonetz |
13883 | // (prim-0)*shade+0, (env-cmb)*t1+cmb |
13884 | {0xe4f30205, cc_env_sub_primshade_mul_t1_add_primshade}, |
13885 | // Tip of brian's hair, quest64 |
13886 | // (prim-0)*shade+0, (1-0)*env+cmb |
13887 | {0xe4f305f6, cc_prim_mul_shade_add_env}, |
13888 | // V8-2 menu |
13889 | // (prim-0)*shade+0, (env-cmb)*cmb_a+cmb |
13890 | {0xe4f30705, cc__prim_mul_shade__inter_env_using__prim_mul_shade_alpha}, |
13891 | // Background circle, xg2 |
13892 | // (prim-0)*shade+0, (1-cmb)*shade_a+cmb |
13893 | {0xe4f30b06, cc_prim_mul_shade}, |
13894 | // circle, waverace. Added by Gonetz |
13895 | // (prim-0)*shade+0, (t0-cmb)*enva+cmb |
13896 | {0xe4f30c01, cc_t0_sub__prim_mul_shade__mul_enva_add__prim_mul_shade}, |
13897 | // enemy hit, Glover2 |
13898 | // (prim-0)*shade+0, (env-cmb)*enva+cmb |
13899 | {0xe4f30c05, cc__prim_mul_shade__inter_env_using_enva}, |
13900 | // player, super bowling |
13901 | // (prim-0)*shade+0, (0-0)*k5+cmb |
13902 | {0xe4f30fff, cc_prim_mul_shade}, |
13903 | //Lure, bass rush |
13904 | // (prim-0)*shade+0, (0-cmb)*0+cmb |
13905 | {0xe4f31f0f, cc_prim_mul_shade}, |
13906 | // walls, beetle adventure racing. Added by Gonetz |
13907 | // (prim-0)*shade+0, (cmb-shade)*t1+shade **INC** |
13908 | {0xe4f38240, cc__one_inter_prim_using_t1__mul_shade}, |
13909 | // GASP fighters |
13910 | //(prim-0)*shade+0, (1-env)*cmb+0 |
13911 | {0xe4f3e056, cc_prim_mul_one_sub_env_mul_shade}, |
13912 | // Flag, mario kart |
13913 | //z (prim-k5)*shade+cmb_a |
13914 | {0xe4f3e4f3, cc_prim_mul_shade}, |
13915 | // Characters, smash bros |
13916 | // (prim-0)*shade+0, (cmb-0)*env+0 |
13917 | {0xe4f3e5f0, cc_prim_mul_env_mul_shade}, |
13918 | // N64 logo, ridge race. Added by Gonetz |
13919 | // (shade-0)*shade+0, (prim-cmb)*prima+cmb **INC** |
13920 | {0xe4f40a03, cc_shade}, |
13921 | // fighter, shield mode, bio freaks. Added by Gonetz |
13922 | // (shade-0)*shade+0 |
13923 | {0xe4f4e4f4, cc_shade}, |
13924 | // truck crush, Monster truck madness. Added by Gonetz |
13925 | // (env-0)*shade+0, (env-0)*shade+cmb |
13926 | {0xe4f504f5, cc_env_mul_shade}, |
13927 | // Course map, Ridge Racer. Added by Gonetz |
13928 | // (env-0)*shade+0 |
13929 | {0xe4f5e4f5, cc_env_mul_shade}, |
13930 | // lava, beetle adventure racing |
13931 | // (1-0)*shade+0, (prim-cmb)*cmb_a+cmb |
13932 | {0xe4f60703, cc_prim_sub_shade_mul_shadea_add_shade}, |
13933 | // the wings in the song of soaring cut-scene, zelda2 [Ogy]. Added by Gonetz |
13934 | // (1-0)*shade+0, (prim-0)*cmb+0 |
13935 | {0xe4f6e0f3, cc_prim_mul_shade}, |
13936 | // parts of vehicle, Star Wars Ep.I Racer. Added by Gonetz |
13937 | // (1-0)*shade+0, (cmb-0)*prim+0 |
13938 | {0xe4f6e3f0, cc_prim_mul_shade}, |
13939 | // Snowflakes???, mario kart. Boxer shadow (fb effect}, Knockout Kings 2000 |
13940 | // (1-0)*shade+0, (1-0)*shade+0 |
13941 | {0xe4f6e4f6, cc_one_mul_shade}, |
13942 | // ??? |
13943 | // (noise-0)*shade+0 |
13944 | {0xe4f7e4f7, cc_shade}, |
13945 | // quest64 [Ogy] |
13946 | // (prim-t0)*env+0, (0-0)*0+prim |
13947 | {0xe5137fff, cc_prim}, |
13948 | // field, Mike Piazza's Strike Zone |
13949 | // (t0-prim)*env+0 ** INC ** |
13950 | {0xe531e531, cc_t0_mul_env}, |
13951 | // Mike Piazza's Strike Zone |
13952 | // (shade-prim)*env+0 |
13953 | {0xe534e534, cc_shade_sub_prim_mul_env}, |
13954 | // rope, CBFD. Added by Gonetz |
13955 | // (t0-0)*env+0, (1-env)*prim+cmb |
13956 | {0xe5f10356, cc_one_sub_env_mul_prim_add__t0_mul_env}, |
13957 | // Bell, Pokemon Stadium 2. Added by Gonetz |
13958 | // (t0-0)*env+0, (shade-0)*prim+cmb |
13959 | {0xe5f103f4, cc_t0_mul_env_add_prim_mul_shade}, |
13960 | // aerofighter's assault [Ogy] |
13961 | // (t0-0)*env+0, (1-t0)*shade+cmb |
13962 | {0xe5f10416, cc_t0_mul_env_add_1mt0_mul_shade}, |
13963 | // foto, Armorines - Project S.W.A.R.M. Added by Gonetz |
13964 | // (t0-0)*env+0, (noise-0)*scale+cmb |
13965 | {0xe5f106f7, cc_t0_mul_env}, |
13966 | // Extreme G2, score. Added by Gonetz |
13967 | // (t0-0)*env+0, (1-cmb)*enva+cmb ** INC ** |
13968 | {0xe5f10c06, cc_t0_mul_env}, |
13969 | // many objects in Tonic Trouble |
13970 | // (t0-0)*env+0, (shade-0)*cmb+0 |
13971 | {0xe5f1e0f4, cc_t0_mul_env_mul_shade}, |
13972 | // Flying skull's eyes, zelda |
13973 | // (t0-0)*env+0, (cmb-0)*prim+0 |
13974 | {0xe5f1e3f0, cc_t0_mul_prim_mul_env}, |
13975 | // Rock spell, quest64 |
13976 | // (t0-0)*env+0, (cmb-0)*shade+0 |
13977 | {0xe5f1e4f0, cc_t0_mul_env_mul_shade}, |
13978 | // Text, mario |
13979 | //z (t0-k5)*env+cmb_a |
13980 | {0xe5f1e5f1, cc_t0_mul_env}, |
13981 | // kirby 64. Added by Gonetz |
13982 | // (prim-0)*env+0, (cmb-0)*shade+0 |
13983 | {0xe5f3e4f0, cc_prim_mul_env_mul_shade}, |
13984 | // wings, kirby 64. Added by Gonetz |
13985 | // (prim-0)*env+0 |
13986 | {0xe5f3e5f3, cc_prim_mul_env}, |
13987 | // Text, xg2 |
13988 | // (shade-0)*env+0, (1-cmb)*env_a+cmb |
13989 | {0xe5f40c06, cc_env_mul_shade}, |
13990 | // Text box, mario |
13991 | //z (shade-k5)*env+cmb_a |
13992 | {0xe5f4e5f4, cc_env_mul_shade}, |
13993 | // bomberman 64 [Ogy] |
13994 | // (1-0)*env+0 |
13995 | {0xe5f6e5f6, cc_env}, |
13996 | // Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
13997 | // (1-t0)*scale+0 |
13998 | {0xe616e616, cc_zero}, |
13999 | // Gauntlet Legends intro. Added by Gonetz |
14000 | // (t0-0)*scale+0, (cmb-0)*shade+0 |
14001 | {0xe6f1e4f0, cc_t0_mul_scale_mul_shade}, |
14002 | // shadows, Taz express. Added by Gonetz |
14003 | // (t0-0)*scale+0 |
14004 | {0xe6f1e6f1, cc_t0_mul_scale}, |
14005 | // shadows, Knockout Kings 2000. Added by Gonetz |
14006 | // (shade-0)*scale+0 |
14007 | {0xe6f4e6f4, cc_scale_mul_shade}, |
14008 | // bomberman 64 2 [Ogy]. Added by Gonetz |
14009 | // (1-0)*scale+0 |
14010 | {0xe6f6e6f6, cc_scale}, |
14011 | // walls, beetle adventure racing. Added by Gonetz |
14012 | // (t1-0)*t0_a+0, (1-t1)*cmb+t1 **INC** |
14013 | {0xe8f24026, cc_t1}, |
14014 | // house on rancho, zelda2. Added by Gonetz |
14015 | // (t1-0)*t0_a+0, (cmb-0)*prim+0 |
14016 | {0xe8f2e3f0, cc__t0a_mul_t1__mul_prim}, |
14017 | // zelda2 [Ogy]. Added by Gonetz |
14018 | // (t1-0)*t0_a+0, (cmb-0)*shade+0 |
14019 | {0xe8f2e4f0, cc__t0a_mul_t1__mul_shade}, |
14020 | // mini quiz, Pokemon Stadium 2 |
14021 | // (prim-0)*t0_a+0, (cmb-t1)*primlod+t1 ** INC ** |
14022 | {0xe8f34e20, cc_t0}, |
14023 | // Major League Baseball Featuring Ken Griffey Jr. |
14024 | // (prim-0)*t0_a+0 |
14025 | {0xe8f3e8f3, cc_t0a_mul_prim}, |
14026 | // Top Gear Hyper-Bike |
14027 | // (1-0)*t0_a+0 |
14028 | {0xe8f6e8f6, cc_t0a}, |
14029 | // waterfall, Dobutsu_no_Mori |
14030 | // (t0-0)*t1_a+0, (prim-env)*cmb+env |
14031 | {0xe9f1a053, cc_prim_sub_env_mul__t0_mul_t1a__add_env}, |
14032 | // logo, Deadly Arts. Added by Gonetz |
14033 | // (t0-0)*t1_a+0, (cmb-0)*shade+0 |
14034 | {0xe9f1e4f0, cc__t0_mul_t1a__mul_shade}, |
14035 | // car, Roadsters. Added by Gonetz |
14036 | // (prim-t0)*prim_a+0, (prim-cmb)*shade+0 ** INC ** |
14037 | {0xea13e403, cc_prim_sub__prim_sub_t0_mul_prima__mul_shade}, |
14038 | // arena, Pokemon Stadium 2. Added by Gonetz |
14039 | // (1-t0)*prim_a+0, (0-prim)*cmb+prim ** INC ** |
14040 | {0xea16603f, cc_t0_mul_prim}, |
14041 | // V8-2 |
14042 | // (1-prim)*prim_a+0 |
14043 | {0xea36ea36, cc_one_sub_prim_mul_prima}, |
14044 | // match start, Mario Tennis. Added by Gonetz |
14045 | // (t0-0)*prim_a+0, (1-t0)*cmb+t0 ** INC ** |
14046 | {0xeaf12016, cc_one_sub_t0_mul_prima_add_t0}, |
14047 | // blast corps [Ogy] |
14048 | // (t0-0)*prim_a+0 |
14049 | {0xeaf1eaf1, cc_t0_mul_prima}, |
14050 | // final battle, CBFD. Added by Gonetz |
14051 | // (prim-0)*prim_a+0 |
14052 | {0xeaf3eaf3, cc_prim_mul_prima}, |
14053 | // flower's stalk, Paper Mario. Added by Gonetz |
14054 | // (shade-0)*prim_a+0 |
14055 | {0xeaf4eaf4, cc_shade_mul_prima}, |
14056 | // blast corps [Ogy] |
14057 | // (noise-0)*prim_a+0, (t1-0)*shade+cmb ** INC ** |
14058 | {0xeaf704f2, cc_t0_mul_shade_add_prima}, |
14059 | // F1 World Grand Prix. Added by Gonetz |
14060 | // (noise-0)*prim_a+0, (t1-0)*env_a+cmb ** INC ** |
14061 | {0xeaf70cf2, cc_t1_mul_enva}, |
14062 | // shadows, killer instinct gold |
14063 | // (0-0)*prim_a+0 |
14064 | {0xeaffeaff, cc_zero}, |
14065 | // background, killer instinct gold |
14066 | // (t0-prim)*shade_a+0 |
14067 | {0xeb31eb31, cc_t0_sub_prim_mul_shadea}, |
14068 | // ground, C&C |
14069 | // (t0-shade)*shade_a+0 |
14070 | {0xeb41eb41, cc_t0_sub_shade_mul_shadea}, |
14071 | // Wreslters, WWF No Mercy, [CpUMasteR] |
14072 | // (t0-0)*shade_alpha+0, (env-cmb)*prim+cmb |
14073 | {0xebf10305, cc_t0_mul_one_sub_prim_mul_shadea_add_prim_mul_env}, |
14074 | // map, Pilot wings. Added by Gonetz |
14075 | // (t0-0)*shade_alpha+0, (1-cmb)*shade+cmb |
14076 | {0xebf10406, cc_one_sub_shade_mul__t0_mul_shadea__add_shade}, |
14077 | // Indy Racing 2000. Added by Gonetz |
14078 | // (t0-0)*shade_alpha+0, (1-0)*shade+cmb |
14079 | {0xebf104f6, cc_t0_mul_shadea_add_shade}, |
14080 | // logo, WCW-nWo Revenge |
14081 | // (t0-0)*shade_alpha+0, (cmb-0)*prim+0 |
14082 | {0xebf1e3f0, cc_t0_mul_prim_mul_shadea}, |
14083 | // sky, pilot wings |
14084 | // (t0-0)*shade_alpha+0, (1-cmb)*shade+0 |
14085 | {0xebf1e406, cc_one_sub__t0_mul_shadea__mul_shade}, |
14086 | // Wrestlers in Game, WWF No mercy [CpUMasteR] |
14087 | // (t0-0)*shade_alpha+0 |
14088 | {0xebf1ebf1, cc_t0_mul_shadea}, |
14089 | // flag, top gear overdrive |
14090 | // (prim-0)*shade_alpha+0 |
14091 | {0xebf3ebf3, cc_prim_mul_shadea}, |
14092 | // Ropes, WWF games |
14093 | // (shade-0)*shade_alpha+0, (env-cmb)*prim+cmb |
14094 | {0xebf40305, cc_shade_mul_shadea}, |
14095 | // Ropes, WWF games |
14096 | // (shade-0)*shade_alpha+0 |
14097 | {0xebf4ebf4, cc_shade_mul_shadea}, |
14098 | // arena, custom robo 2 |
14099 | // (noise-0)*shade_alpha+0 |
14100 | {0xebf7ebf7, cc_shadea}, |
14101 | // Baton Pass attack, Pokemon Stadium 2 |
14102 | // (t0-env)*enva+0, (shade-0)*prim+cmb |
14103 | {0xec5103f4, cc__t0_sub_env_mul_enva__add_prim_mul_shade}, |
14104 | // Bell, Pokemon Stadium 2. Added by Gonetz |
14105 | // (t0-0)*enva+0, (shade-0)*prim+cmb |
14106 | {0xecf103f4, cc_t0_mul_enva_add_prim_mul_shade}, |
14107 | // blastcorps, unimp log. Added by Gonetz |
14108 | // (t0-0)*enva+0 |
14109 | {0xecf1ecf1, cc_t0_mul_enva}, |
14110 | // car, Top Gear Rally. Added by Gonetz |
14111 | // (env-0)*enva+0 |
14112 | {0xecf5ecf5, cc_env_mul_enva}, |
14113 | // Sand attack, pokemon Stadium (J) |
14114 | // (noise-0)*enva+0, (prim-env)*cmb+env |
14115 | {0xecf7a053, cc_prim_sub_env_mul_enva_add_env}, |
14116 | // Walls of well through lens of truth, zelda |
14117 | // (prim-t0)*primlod+0 ** INC ** |
14118 | {0xee13ee13, cc_t0}, // JUST t0 b/c the other combiner handles the subtraction |
14119 | // Pokemon attack, Pokemon Stadium 2 |
14120 | // (noise-t0)*primlod+0, (1-env)*cmb+env ** INC ** |
14121 | {0xee17a056, cc_env_inter_one_using__one_sub_t0_mul_primlod}, |
14122 | // barrage attack, Pokemon Stadium 2 |
14123 | // (t0-0)*primlod+0, (prim-0)*shade+cmb |
14124 | {0xeef104f3, cc__t0_mul_primlod__add__prim_mul_shade}, |
14125 | // something on a flor in stone temple, zelda 2. Added by Gonetz |
14126 | // (t0-0)*primlod+0, (cmb-0)*prim+0 |
14127 | {0xeef1e3f0, cc_t0_mul_primlod_mul_prim}, |
14128 | // entrance to oceanside spider house, zelda 2. Added by Gonetz |
14129 | // (t0-0)*primlod+0, (cmb-0)*shade+0 |
14130 | {0xeef1e4f0, cc_t0_mul_primlod_mul_shade}, |
14131 | // Haze/(all powder status changers}, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14132 | // (noise-0)*primlod+0, (prim-env)*cmb+env ** INC ** |
14133 | {0xeef7a053, cc_prim_sub_env_mul_primlod_add_env}, |
14134 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
14135 | // (noise-0)*primlod+0, (prim-cmb)*cmb+0 ** INC ** |
14136 | {0xeef7e003, cc_zero}, |
14137 | // Night trees, Monster truck madness. Added by Gonetz |
14138 | // (t0-0)*k5+0 |
14139 | {0xeff1eff1, cc_t0_mul_k5}, |
14140 | // submitted by gokuss4 |
14141 | // (0-0)*0+0, (0-0)*0+prim |
14142 | {0xfffd5fe6, cc_prim}, |
14143 | // intro, Bettle Adventure Racing, [Raziel64] |
14144 | // (0-0)*0+0, (0-0)*0+t0 |
14145 | {0xffff3fff, cc_t0}, |
14146 | // Conker's face, CBFD |
14147 | // (0-0)*0+0, (shade-env)*k5+prim |
14148 | {0xffff6f54, cc_shade_sub_env_mul_k5_add_prim}, |
14149 | // Boost, Beetle Adventure Racing. Added by Gonetz |
14150 | // (0-0)*0+0, (0-0)*0+prim |
14151 | {0xffff7fff, cc_prim}, |
14152 | // headlight, beetle adventure racing. Added by Gonetz |
14153 | // (0-0)*0+0, (0-0)*0+shade |
14154 | {0xffff9fff, cc_shade}, |
14155 | // intro, Bettle Adventure Racing, [Raziel64] |
14156 | // (0-0)*0+0, (shade-env)*t1+env |
14157 | {0xffffa254, cc_shade_sub_env_mul_t1_add_env}, |
14158 | // Fly Swooping in, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14159 | // (0-0)*0+0, (1-env)*cmb_a+env |
14160 | {0xffffa756, cc_env}, |
14161 | // Waterfall, Donkey Kong 64 |
14162 | // (0-0)*0+0, (t0-0)*t1+0 |
14163 | {0xffffe1f2, cc_t0_mul_t1}, |
14164 | // Screen clear, banjo kazooie |
14165 | // (0-0)*0+0 |
14166 | {0xffffffff, cc_zero}, |
14167 | // { #CCEND } |
14168 | }; |
14169 | |
14170 | static COMBINER alpha_cmb_list[] = { |
14171 | // { #ACSTART } |
14172 | //Tony Hawk's Pro Skater. Added by Gonetz |
14173 | // (0-0)*0+0 |
14174 | {0x01ff01ff, ac_zero}, |
14175 | //terminal, Spacestation Silicon Valley. Added by Gonetz |
14176 | // (0-0)*0+0, (0-0)*0+prim |
14177 | {0x01ff07ff, ac_prim}, |
14178 | // kirby drill, kirby 64. Added by Gonetz |
14179 | // (0-0)*0+cmb, (0-0)*0+1 |
14180 | {0x01ff0dff, ac_one}, |
14181 | //chip in Spacestation Silicon Valley intro. Added by Gonetz |
14182 | // (0-0)*0+cmb, (prim-0)*shade+0 |
14183 | {0x01ff0f3b, ac_prim_mul_shade}, |
14184 | //Goldeneye, [Jeremy]. Added by Gonetz |
14185 | // (t0-t0)*lodf+t0, (cmb-0)*prim+0 |
14186 | {0x02090ef8, ac_t0_mul_prim}, |
14187 | // Indy Racing 2000. Added by Gonetz |
14188 | // (t1-t0)*lodf+t0, (env-cmb)*prim+cmb ** INC ** |
14189 | {0x020a00c5, ac_t0_inter_t1_using_primlod}, |
14190 | // water, Spacestation Silicon Valley. Added by Gonetz |
14191 | // (t1-t0)*lodf+t0, (0-shade)*0+cmb |
14192 | {0x020a01e7, ac_t0_inter_t1_using_primlod}, |
14193 | // Bridge, sf rush |
14194 | //z (t1-t0)*lodf+t0 |
14195 | {0x020a020a, ac_t0_inter_t1_using_primlod}, |
14196 | // explosion, body harvest. Added by Gonetz |
14197 | //(t1-t0)*lodf+t0, (0-0)*0+t0 |
14198 | {0x020a03ff, ac_t0}, |
14199 | // cars, PD intro. Added by Gonetz |
14200 | // (t1-t0)*lodf+t0, (cmb-0)*shade+prim |
14201 | {0x020a0738, ac__t0_inter_t1_using_primlod__mul_shade_add_prim}, |
14202 | // Rocket Robot in Wheels intro |
14203 | //(t1-t0)*lodf+t0, (0-0)*0+prim |
14204 | {0x020a07ff, ac_prim}, |
14205 | // Iguana background ground, turok |
14206 | // (t1-t0)*lodf+t0, (0-0)*0+shade |
14207 | {0x020a09ff, ac_shade}, |
14208 | // Ground, monster truck madness |
14209 | // (t1-t0)*lodf+t0, (0-0)*0+env |
14210 | {0x020a0bff, ac_env}, |
14211 | // Taz express. Added by Gonetz |
14212 | // (t1-t0)*lodf+t0, (0-0)*0+1 |
14213 | {0x020a0dff, ac_one}, |
14214 | // Mike Piazza's Strike Zone |
14215 | // (t1-t0)*lodf+t0, (cmb-0)*t0+0 |
14216 | {0x020a0e78, ac_t0_inter_t1_using_primlod}, |
14217 | // N64 logo, tetrisphere. Added by Gonetz |
14218 | // (t1-t0)*lodf+t0, (cmb-0)*prim+0 |
14219 | {0x020a0ef8, ac__t0_inter_t1_using_primlod__mul_prim}, |
14220 | // Ground, mace |
14221 | // (t1-t0)*lodf+t0, (cmb-0)*shade+0 |
14222 | // {0x020a0f38, ac_t0_mul_shade}, |
14223 | {0x020a0f38, ac__t0_inter_t1_using_primlod__mul_shade}, |
14224 | // blast corps [Ogy] |
14225 | // (t1-t0)*lodf+t0, (cmb-0)*env+0 |
14226 | {0x020a0f78, ac__t0_inter_t1_using_primlod__mul_env}, |
14227 | // blast corps [Ogy] |
14228 | // (t1-t0)*lodf+t0, (t0-0)*env+0 |
14229 | {0x020a0f79, ac_t0_mul_env}, |
14230 | // blast corps. Added by Gonetz |
14231 | // (t1-t0)*lodf+t0, (shade-0)*env+0 |
14232 | {0x020a0f7c, ac_env_mul_shade}, |
14233 | // field, Mike Piazza's Strike Zone |
14234 | // (t1-t0)*lodf+t0, (0-0)*0+0 |
14235 | {0x020a0fff, ac_t0_inter_t1_using_primlod}, |
14236 | // blast corps, unimp log. Added by Gonetz |
14237 | // (t1-t0)*t0+t0 |
14238 | {0x024a024a, ac_t0_inter_t1_using_t0a}, |
14239 | // zelda 2 [Ogy]. Added by Gonetz |
14240 | // (t1-t0)*t0+t0, (cmb-0)*prim+0 **INC** |
14241 | {0x024a0ef8, ac__t0_inter_t1_using_t0a__mul_prim}, |
14242 | // text in a menu, Twisted_Edge_Extreme_Snowboarding [Razeil64]. Added by Gonetz |
14243 | // (prim-t0)*t0+t0 **INC** |
14244 | {0x024b024b, ac_t0}, |
14245 | // enemy's shot, battle tanks 2 |
14246 | // (env-prim)*t0+t0 **INC** |
14247 | {0x025d025d, ac_t0}, |
14248 | //Bowser in final battle, Paper Mario. Added by Gonetz |
14249 | // (t1-env)*t0+t0, (cmb-env)*prim+0 ** INC ** |
14250 | {0x026a0ee8, ac__t0_mul_t1__mul_prim}, |
14251 | // paper mario. Added by Gonetz |
14252 | // (t1-env)*t0+t0, (cmb-0)*prim+0 ** INC ** |
14253 | {0x026a0ef8, ac__t0_mul_t1__mul_prim}, |
14254 | // V8-2 |
14255 | // (prim-0)*t0+t0 |
14256 | {0x027b027b, ac_t0_mul_prim_add_t0}, |
14257 | // THPS3. Added by Gonetz |
14258 | // (0-0)*t0+t0 |
14259 | {0x027f027f, ac_t0}, |
14260 | // zelda 2. Added by Gonetz |
14261 | // (0-0)*t0+t0, (cmb-0)*prim+0 |
14262 | {0x027f0ef8, ac_t0_mul_prim}, |
14263 | // Spider Web attack, Pokemon Stadium 2. |
14264 | // (t1-t0)*t1+t0, (cmb-0)*prim+cmb |
14265 | {0x028a00f8, ac__t0_inter_t1_using_t1a__mul_prim_add__t0_inter_t1_using_t1a}, |
14266 | // teleportation, Spacestation Silicon Valley. Added by Gonetz |
14267 | // (t1-t0)*t1+t0 |
14268 | {0x028a028a, ac_t0_inter_t1_using_t1a}, |
14269 | // mega shock, paper mario. Added by Gonetz |
14270 | // (t1-t0)*t1+t0, (cmb-0)*prim+0 |
14271 | {0x028a0ef8, ac__t0_inter_t1_using_t1a__mul_prim}, |
14272 | // mini game, Pokemon Stadium 2 |
14273 | // (t1-t0)*t1+t0, (cmb-0)*shade+0 |
14274 | {0x028a0f38, ac__t0_inter_t1_using_t1a__mul_shade}, |
14275 | // Magnitude, pokemon stadium 2 |
14276 | // (shade-t0)*t1+t0, (cmb-0)*shade+env |
14277 | {0x028c0b38, ac__t0_mul_t1__mul_shade}, |
14278 | // paper mario. Added by Gonetz |
14279 | // (1-t0)*t1+t0, (t1-0)*prim+0 ** INC ** |
14280 | {0x028e0efa, ac__one_sub_t0_mul_t1_add_t0__mul_prim}, |
14281 | // {0x028e0efa, ac_t1_mul_prim}, |
14282 | // Spider Web attack, Pokemon Stadium 2. |
14283 | // (1-t0)*t1+t0, (cmb-0)*shade+0 ** INC ** |
14284 | {0x028e0f38, ac__one_sub_t0_mul_t1_add_t0__mul_prim}, |
14285 | // paper mario. Added by Gonetz |
14286 | // (t1-env)*t1+t0, (cmb-0)*shade+0 |
14287 | {0x02aa0f38, ac__t0_inter_t1_using_enva__mul_shade}, |
14288 | // Scary dead boss thing, zelda |
14289 | // (env-1)*t1+t0, (cmb-0)*prim+0 * MAY need t1_inter_t0 instead... |
14290 | {0x02b50ef8, ac__env_sub_one_mul_t1_add_t0__mul_prim}, |
14291 | // first screen, castlevania. Added by Gonetz |
14292 | // (env-0)*t1+t0 **INC** |
14293 | {0x02bd02bd, ac_t0}, |
14294 | // enemy's shot, battle tanks 2 [Flash] |
14295 | // (1-0)*t1+t0, (0-0)*0+env |
14296 | {0x02be0bff, ac_env}, |
14297 | // battle tanks 2 [Ogy] |
14298 | // (1-0)*t1+t0, (0-0)*0+1 |
14299 | {0x02be0dff, ac_one}, |
14300 | // menu screen, Rayman2. Added by Gonetz |
14301 | // (1-0)*t1+t0, (cmb-0)*shade+0 |
14302 | {0x02be0f38, ac__t0_add_t1__mul_shade}, |
14303 | // Sky, zelda |
14304 | //z (t1-t0)*prim+t0 |
14305 | {0x02ca02ca, ac_t0_inter_t1_using_prima}, |
14306 | // F1 World Grand Prix. Added by Gonetz |
14307 | // (t1-t0)*prim+t0, (0-0)*0+1 |
14308 | {0x02ca0dff, ac_t0_inter_t1_using_prima}, |
14309 | // logo, PD. Added by Gonetz |
14310 | // (t1-t0)*prim+t0, (cmb-0)*shade+0 |
14311 | {0x02ca0f38, ac__t0_inter_t1_using_prima__mul_shade}, |
14312 | // battle tanks [Ogy] |
14313 | // (t1-t0)*prim+t0, (cmb-0)*env+0 |
14314 | {0x02ca0f78, ac__t0_inter_t1_using_prima__mul_env}, |
14315 | // logo, Deadly Arts. Added by Gonetz |
14316 | // (env-t0)*prim+t0 |
14317 | {0x02cd02cd, ac_one_sub_prim_mul_t0_add__prim_mul_env}, |
14318 | // intro, castlevania 2. Added by Gonetz |
14319 | // (1-t0)*prim+t0 |
14320 | {0x02ce02ce, ac_one_sub_t0_mul_prim_add_t0}, |
14321 | // intro, diddy kong racing. Added by Gonetz |
14322 | // (1-t0)*prim+t0, (cmb-0)*shade+0 **INC** |
14323 | {0x02ce0f38, ac_t0_mul_shade}, |
14324 | // submitted by Scorpiove, mario party 1 |
14325 | // (0-t0)*prim+t0 |
14326 | {0x02cf02cf, ac_one_sub_prim_mul_t0}, |
14327 | // Pokemon attack, pokemon Stadium (J) |
14328 | // (t1-t1)*prim+t0, (prim-0)*lod_f+env **INC** |
14329 | {0x02d20a3b, ac_env}, |
14330 | // Ground, pokemon stadium 2 |
14331 | // (t0-0)*prim+t0 |
14332 | {0x02f902f9, ac_t0_mul_prim}, |
14333 | // GASP Fighters |
14334 | // (t1-0)*prim+t0, ** INC ** |
14335 | {0x02fa02fa, ac_t1_mul_prim_add_t0}, |
14336 | // foresight attack, Pokemon Stadium 2 |
14337 | // (t1-0)*prim+t0, (cmb-env)*shade+0 |
14338 | {0x02fa0f28, ac__t1_mul_prima_add_t0__sub_env_mul_shade}, |
14339 | // Earthquake pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14340 | // (t1-0)*prim+t0, (cmb-0)*shade+0 |
14341 | {0x02fa0f38, ac__t1_mul_prima_add_t0__mul_shade}, |
14342 | // Paper Mario, fortune teller |
14343 | // (t1-0)*prim+t0, (cmb-0)*env+0 |
14344 | {0x02fa0f78, ac__t1_mul_prima_add_t0__mul_env}, |
14345 | // Hydro Pump Attack, Pokemon Stadium. |
14346 | // (shade-0)*prim+t0, (cmb-0)*shade+0 |
14347 | {0x02fc0f38, ac__t0_add_prim_mul_shade__mul_shade}, |
14348 | // map, Ogre Battle 64. Added by Gonetz |
14349 | // (1-0)*prim+t0 |
14350 | {0x02fe02fe, ac_t0_add_prim}, |
14351 | // borders, Tony Hawk's Pro Skater 2. Added by Gonetz |
14352 | // (t1-t0)*shade+t0 ** INC ** |
14353 | {0x030a030a, ac_t0_inter_t1_using_shadea}, |
14354 | // Mickey USA |
14355 | // (t1-t0)*shade+t0, (cmb-0)*prim+0 ** INC ** |
14356 | {0x030a0ef8, ac__t0_inter_t1_using_shadea__mul_prim}, |
14357 | // Rocket Robot in Wheels intro |
14358 | // (t1-t0)*shade+t0, (cmb-0)*env+0 ** INC ** |
14359 | {0x030a0f78, ac__t0_inter_t1_using_shadea__mul_env}, |
14360 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
14361 | // (1-t0)*shade+t0, (cmb-0)*shade+0 ** INC ** |
14362 | {0x030e0f38, ac_t0_mul_shade}, |
14363 | // sky, f-zero x |
14364 | // (0-t0)*shade+t0 |
14365 | {0x030f030f, ac_one_sub_shade_mul_t0}, |
14366 | // Deku tree from kokiri villiage, zelda |
14367 | //z (t1-t0)*env+t0, (t1-0)*primlod+cmb |
14368 | {0x034a01ba, ac_t0_inter_t1_using_enva}, |
14369 | // Hearts, zelda |
14370 | //z (t1-t0)*env+t0 |
14371 | {0x034a034a, ac_t0_inter_t1_using_enva}, |
14372 | // Faries, zelda |
14373 | //z (t1-t0)*env+t0, (cmb-0)*prim+0 |
14374 | {0x034a0ef8, ac__t0_inter_t1_using_enva__mul_prim}, |
14375 | // zelda, waterfall. Added by Gonetz |
14376 | //z (t1-t0)*env+t0, (cmb-0)*shade+0 |
14377 | {0x034a0f38, ac__t0_inter_t1_using_enva__mul_shade}, |
14378 | // pokemon stadium 1. Added by Gonetz |
14379 | //(t1-t0)*env+t0, (cmb-0)*primlod+0 |
14380 | {0x034a0fb8, ac__t0_inter_t1_using_enva__mul_primlod}, |
14381 | // fruits, Yoshi Story. Added by Gonetz |
14382 | //(prim-t0)*env+t0 |
14383 | {0x034b034b, ac_prim_sub_t0_mul_env_add_t0}, |
14384 | // window, Rayman2. Added by Gonetz |
14385 | //(1-t0)*env+t0 |
14386 | {0x034e034e, ac_one_sub_t0_mul_env_add_t0}, |
14387 | // menu, PokemonStadium1, [Raziel64] |
14388 | //(1-t0)*env+t0, (cmb-0)*shade+0 ** INC ** |
14389 | {0x034e0f38, ac_t0_mul_shade}, |
14390 | // Ganon's sword swinging, zelda |
14391 | // (t0-t1)*env+t0, (cmb-0)*prim+0 ** INC ** |
14392 | {0x03510ef8, ac__t0_sub_t1_mul_enva_add_t0__mul_prim}, |
14393 | // Lave piranha atack, Paper Mario |
14394 | // (t1-prim)*env+t0, (0-cmb)*t1+0 ** INC ** |
14395 | {0x035a0e87, ac_t0_mul_t1}, |
14396 | // Reflected fire at kotake & koume's, zelda |
14397 | // (t0-1)*env+t0, (cmb-0)*prim+0 ** INC ** |
14398 | {0x03710ef8, ac__t0_sub_one_mul_enva_add_t0__mul_prim}, |
14399 | // thing that escapes from the well, zelda |
14400 | // (t1-1)*env+t0 ** INC ** |
14401 | {0x03720372, ac_t1_sub_one_mul_enva_add_t0}, |
14402 | // Sword charge, zelda |
14403 | // (t1-1)*env+t0, (cmb-0)*prim+0 |
14404 | {0x03720ef8, ac__t1_sub_one_mul_enva_add_t0__mul_prim}, |
14405 | // Gannon hitting the ground, zelda |
14406 | // (t1-1)*env+t0, (cmb-0)*shade+0 ** INC ** |
14407 | {0x03720f38, ac__t1_sub_one_mul_enva_add_t0__mul_shade}, |
14408 | // Tony Hawk's Pro Skater 3. Added by Gonetz |
14409 | // (t0-0)*env+t0 |
14410 | {0x03790379, ac_t0_mul_env}, |
14411 | // paper mario. Added by Gonetz |
14412 | // (t0-0)*env+t0, (cmb-0)*prim+0 |
14413 | {0x03790ef8, ac_t0_mul_prim}, |
14414 | // pads, Pokemon Stadium 2. Added by Gonetz |
14415 | // (t1-0)*env+t0, (cmb-0)*prim+env ** INC ** |
14416 | {0x037a0af8, ac__t0_inter_t1_using_enva__mul_prim_add_env}, |
14417 | // attack, Pokemon Stadium 2 |
14418 | // (t1-0)*env+t0, (cmb-t0)*prim+0 ** INC ** |
14419 | {0x037a0ec8, ac__t1_mul_enva_add_t0__mul_prim}, |
14420 | // Ice arrow gfx, zelda |
14421 | // (t1-0)*env+t0, (cmb-0)*prim+0 |
14422 | {0x037a0ef8, ac__t1_mul_enva_add_t0__mul_prim}, |
14423 | // Scary face move, pokemon stadium 2 |
14424 | // (t1-0)*env+t0, (cmb-prim)*shade+0 |
14425 | {0x037a0f18, ac__t1_mul_enva_add_t0__sub_prim_mul_shade}, |
14426 | // Saria's song, zelda |
14427 | // (t1-0)*env+t0, (cmb-0)*shade+0 |
14428 | {0x037a0f38, ac__t1_mul_enva_add_t0__mul_shade}, |
14429 | // eye drops bottle, zelda |
14430 | // (t0-t0)*prim_lodfrac+t0 |
14431 | {0x03890389, ac_t0}, |
14432 | // lighthouse's beam, zelda 2. Added by Gonetz |
14433 | // (t0-t0)*prim_lodfrac+t0, (cmb-0)*prim+0 |
14434 | {0x03890ef8, ac_t0_mul_prim}, |
14435 | // zelda 2. Added by Gonetz |
14436 | // (t1-t0)*primlod+t0, (cmb-0)*env+cmb ** INC ** |
14437 | {0x038a0178, ac__t0_inter_t1_using_primlod__mul_env_add__t0_inter_t1_using_primlod}, |
14438 | // Enter name letter background, zelda |
14439 | //z (t1-t0)*primlod+t0 |
14440 | {0x038a038a, ac_t0_inter_t1_using_primlod}, |
14441 | // Sunny Day, Pokemon Stadium 2 |
14442 | // (t1-t0)*primlod+t0, (cmb-0)*0+prim |
14443 | {0x038a07f8, ac_prim}, |
14444 | //attack, Pokemon Stadium 2 |
14445 | // (t1-t0)*primlod+t0, (cmb-env)*shade+shade ** INC ** |
14446 | {0x038a0928, ac__t0_inter_t1_using_primlod__sub_env_mul_shade_add_shade}, |
14447 | // blastcorps, unimp log. Added by Gonetz |
14448 | // (t1-t0)*primlod+t0, (0-0)*0+shade **INC**? |
14449 | {0x038a09ff, ac_t0_inter_t1_using_primlod}, |
14450 | // pokemon attack, pokemon monsters (J) |
14451 | // (t1-t0)*primlod+t0, (cmb-0)*prim+env |
14452 | {0x038a0af8, ac__t0_inter_t1_using_primlod__mul_prim_add_env}, |
14453 | // sky, PGA European Tour |
14454 | // (t1-t0)*primlod+t0, (0-0)*0+1 |
14455 | {0x038a0dff, ac_one}, |
14456 | // Ice surrounding enemy, zelda |
14457 | // (t1-t0)*primlod+t0, (env-0)*lodf+0 |
14458 | {0x038a0e3d, ac__t0_inter_t1_using_primlod__mul_env}, |
14459 | // the bridge out side the mountain smithy shop, zelda 2 [Ogy]. Added by Gonetz |
14460 | // (t1-t0)*primlod+t0, (cmb-0)*t0+0 |
14461 | {0x038a0e78, ac_t0_inter_t1_using_primlod}, |
14462 | // zelda 2, [Ogy]. Added by Gonetz |
14463 | // (t1-t0)*primlod+t0, (cmb-0)*t1+0 |
14464 | {0x038a0eb8, ac_t0_inter_t1_using_primlod}, |
14465 | // Kirby's pool, smash bros |
14466 | // (t1-t0)*primlod+t0, (cmb-0)*prim+0 |
14467 | {0x038a0ef8, ac__t0_inter_t1_using_primlod__mul_prim}, |
14468 | // Samus stage fire, smash bros |
14469 | // (t1-t0)*primlod+t0, (cmb-0)*shade+0 |
14470 | {0x038a0f38, ac__t0_inter_t1_using_primlod__mul_shade}, |
14471 | // something about ice, zelda |
14472 | // (t1-t0)*primlod+t0, (cmb-0)*env+0 |
14473 | {0x038a0f78, ac__t0_inter_t1_using_primlod__mul_env}, |
14474 | // Blast Corps. Added by Gonetz |
14475 | // (t1-t0)*primlod+t0, (shade-0)*env+0 |
14476 | {0x038a0f7c, ac_env_mul_shade}, |
14477 | // goals, J. League Tactics Soccer. Added by Gonetz |
14478 | // (prim-t0)*primlod+t0 ** INC ** |
14479 | {0x038b038b, ac_t0}, |
14480 | // zelda 2, [Ogy]. Added by Gonetz |
14481 | // (t0-t1)*primlod+t0, (cmb-0)*prim+0 |
14482 | {0x03910ef8, ac__t0_sub_t1_mul_primlod_add_t0__mul_prim}, |
14483 | // a plane in the entrance to the mountain village zelda 2, [Ogy]. Added by Gonetz |
14484 | // (t1-t1)*primlod+t0, (cmb-0)*prim+0 ** INC **? |
14485 | {0x03920ef8, ac_t0_mul_prim}, |
14486 | // zelda 2. Added by Gonetz |
14487 | // (t1-prim)*primlod+t0, (cmb-0)*prim+0 ** INC ** |
14488 | {0x039a0ef8, ac__t1_sub_prim_mul_primlod_add_t0__mul_prim}, |
14489 | // zelda 2. Added by Gonetz |
14490 | // (t1-shade)*primlod+t0, (cmb-0)*shade+0 ** INC ** |
14491 | {0x03a20f38, ac__t1_sub_shade_mul_primlod_add_t0__mul_shade}, |
14492 | // saffron city, Pokemon Stadium 2 |
14493 | // (t1-1)*primlod+t0, (cmb-0)*0+cmb |
14494 | {0x03b201f8, ac_t1_sub_one_mul_primlod_add_t0}, |
14495 | // Candle flame in ganon's castle, zelda |
14496 | // (t1-1)*primlod+t0 |
14497 | {0x03b203b2, ac_t1_sub_one_mul_primlod_add_t0}, |
14498 | // Fire, zelda |
14499 | //z (t1-1)*primlod+t0, (cmb-0)*prim+0 ** INC ** |
14500 | {0x03b20ef8, ac__t1_sub_one_mul_primlod_add_t0__mul_prim}, |
14501 | // explosion, zelda 2. Added by Gonetz |
14502 | // (t1-1)*primlod+t0, (t0-0)*prim+0 ** INC ** |
14503 | {0x03b20ef9, ac_t0_mul_prim}, |
14504 | // Din's fire, zelda |
14505 | // (t1-1)*prim_lodfrac+t0, (cmb-0)*shade+0 ** INC ** |
14506 | {0x03b20f38, ac__t1_sub_one_mul_primlod_add_t0__mul_shade}, |
14507 | // Fire cloud, zelda |
14508 | // (t1-1)*prim_lodfrac+t0, (cmb-0)*env+0 ** INC ** |
14509 | {0x03b20f78, ac__t1_sub_one_mul_primlod_add_t0__mul_env}, |
14510 | // zelda 2 [Ogy]. Added by Gonetz |
14511 | // (prim-1)*prim_lodfrac+t0, (cmb-0)*env+0 ** INC ** |
14512 | {0x03b30f78, ac__prim_sub_one_mul_primlod_add_t0__mul_env}, |
14513 | // fairy's spirit, zelda oot |
14514 | // (t0-0)*primlod+t0 |
14515 | {0x03b903b9, ac_t0_mul_primlod_add_t0}, |
14516 | // Scary face, pokemon stadium 2 |
14517 | // (t0-0)*primlod+t0, (cmb-0)*prim+0 |
14518 | {0x03b90ef8, ac_t0_mul_prim}, |
14519 | // Magnitude attack, Pokemon Stadium 2 |
14520 | // (t0-0)*primlod+t0, (cmb-0)*shade+0 |
14521 | {0x03b90f38, ac__t0_mul_primlod_add_t0__mul_shade}, |
14522 | // Leftovers Recovery, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14523 | // (t1-0)*prim_lodfrac+t0, (cmb-env)*prim+0 ** INC ** |
14524 | {0x03ba0ee8, ac__t1_mul_primlod_add_t0__sub_env_mul_prim}, |
14525 | // zelda 2 [Ogy]. Added by Gonetz |
14526 | // (t1-0)*prim_lodfrac+t0, (cmb-0)*prim+0 |
14527 | {0x03ba0ef8, ac__t1_mul_primlod_add_t0__mul_prim}, |
14528 | // Mega punch attack, Pokemon Stadium 2 |
14529 | // (t1-0)*prim_lodfrac+t0, (cmb-prim)*shade+0 |
14530 | {0x03ba0f18, ac__t1_mul_primlod_add_t0__sub_prim_mul_shade}, |
14531 | // zelda 2 [Ogy]. Added by Gonetz |
14532 | // (t1-0)*prim_lodfrac+t0, (cmb-0)*shade+0 |
14533 | {0x03ba0f38, ac__t1_mul_primlod_add_t0__mul_shade}, |
14534 | // chuchu monsters, zelda 2 [Ogy]. Added by Gonetz |
14535 | // (t1-0)*prim_lodfrac+t0, (cmb-0)*env+0 |
14536 | {0x03ba0f78, ac__t1_mul_primlod_add_t0__mul_env}, |
14537 | // Scary face, pokemon stadium 2 |
14538 | // (env-0)*primlod+t0, (cmb-0)*prim+0 |
14539 | {0x03bd0ef8, ac_t0_mul_prim}, |
14540 | // ground, zelda 2. Added by Gonetz |
14541 | // (t1-t0)*0+t0, (cmb-0)*0+cmb |
14542 | {0x03ca01f8, ac_t0}, |
14543 | // zelda 2. Added by Gonetz |
14544 | // (t1-t0)*0+t0, (cmb-0)*prim+0 |
14545 | {0x03ca0ef8, ac_t0_mul_prim}, |
14546 | // smoke in a night, zelda 2. Added by Gonetz |
14547 | // (t1-t0)*0+t0, (cmb-0)*shade+0 |
14548 | {0x03ca0f38, ac_t0_mul_shade}, |
14549 | //the ice plane out side the mountain smithy shop, zelda 2 [Ogy]. Added by Gonetz |
14550 | //(t1-1)*0+t0, (cmb-0)*env+0 |
14551 | {0x03f20f78, ac_t0_mul_env}, |
14552 | //something on level 5, Kirby64 [Raziel64] |
14553 | //(t0-0)*0+t0 |
14554 | {0x03f903f9, ac_t0}, |
14555 | //spider house, zelda 2 [Ogy]. Added by Gonetz |
14556 | //(t0-0)*0+t0, (cmb-0)*prim+0 |
14557 | {0x03f90ef8, ac_t0_mul_prim}, |
14558 | //Darmani's fire spin, zelda 2 [Ogy]. Added by Gonetz |
14559 | //(t1-0)*0+t0, (cmb-0)*prim+0 |
14560 | {0x03fa0ef8, ac_t0_mul_prim}, |
14561 | // headlight, beetle adventure racing. Added by Gonetz |
14562 | //(1-0)*0+t0 |
14563 | {0x03fe03fe, ac_t0}, |
14564 | // player, super bowling |
14565 | // (0-0)*0+t0, |
14566 | {0x03ff0000, ac_t0}, |
14567 | // Ghost's lantern, zelda |
14568 | // (0-0)*0+t0, (t1-0)*prim_lod+cmb |
14569 | {0x03ff01ba, ac_t1_mul_primlod_add_t0}, |
14570 | // Hand cursor, mario |
14571 | //z (0-0)*0+t0 |
14572 | {0x03ff03ff, ac_t0}, |
14573 | // Taz express. Added by Gonetz |
14574 | // (0-0)*0+t0, (0-0)*0+t1 |
14575 | {0x03ff05ff, ac_t0}, |
14576 | // powder keg, zelda2. Added by Gonetz |
14577 | // (0-0)*0+t0, (0-0)*0+prim |
14578 | {0x03ff07ff, ac_t0}, |
14579 | // water, Spacestation Silicon Valley. Added by Gonetz |
14580 | // (0-0)*0+t0, (0-0)*0+shade |
14581 | {0x03ff09ff, ac_t0}, |
14582 | // Characters, Ogre Battle. Added by Gonetz. |
14583 | // (0-0)*0+t0, (cmb-0)*prim+env |
14584 | {0x03ff0af8, ac_t0_mul_prim_add_env}, |
14585 | // Monster truck madness intro. Added by Gonetz |
14586 | // (0-0)*0+t0, (0-0)*0+env |
14587 | {0x03ff0bff, ac_t0}, |
14588 | // Battlezone |
14589 | // (0-0)*0+t0, (0-0)*0+1 |
14590 | {0x03ff0dff, ac_t0}, |
14591 | // Zoras, zelda |
14592 | // (0-0)*0+t0, (env-0)*lodf+0 |
14593 | {0x03ff0e3d, ac_env}, |
14594 | // logo, v-rally 99 |
14595 | // (0-0)*0+t0, (prim-0)*t0+0 |
14596 | {0x03ff0e7b, ac_t0_mul_prim}, |
14597 | // intro, WWF-War Zone |
14598 | // (0-0)*0+t0, (env-0)*t0+0 |
14599 | {0x03ff0e7d, ac_t0_mul_env}, |
14600 | // Window, starfox |
14601 | //z (0-0)*0+t0, (cmb-0)*prim+0 |
14602 | {0x03ff0ef8, ac_t0_mul_prim}, |
14603 | //beetle adventure racing. Added by Gonetz |
14604 | // (0-0)*0+t0, (cmb-0)*shade+0 |
14605 | {0x03ff0f38, ac_t0_mul_shade}, |
14606 | // Wonder Project J2 logo. Added by Gonetz |
14607 | // (0-0)*0+t0, (t0-0)*shade+0 |
14608 | {0x03ff0f39, ac_t0_mul_shade}, |
14609 | // Saria's suit, zelda |
14610 | // (0-0)*0+t0, (cmb-0)*env+0 |
14611 | {0x03ff0f78, ac_t0_mul_env}, |
14612 | // Pokemon Stadium 2, [Jeremy]. Added by Gonetz |
14613 | // (0-0)*0+t0, (cmb-0)*primlod+0 |
14614 | {0x03ff0fb8, ac_t0_mul_primlod}, |
14615 | // Tony Hawk's Pro Skater. Added by Gonetz |
14616 | // (0-0)*0+t0, (0-0)*0+0 |
14617 | {0x03ff0fff, ac_zero}, |
14618 | // Spider Web attack, Pokemon Stadium 2. |
14619 | // (t0-t1)*t0+t1, (cmb-0)*prim+cmb **INC** |
14620 | {0x045100f8, ac__t1_inter_t0_using_t0a__mul_prim_add__t1_inter_t0_using_t0a}, |
14621 | // Powered Star Beam, Paper Mario. Added by Gonetz |
14622 | // (t0-t1)*t0+t1, (cmb-0)*prim+0 **INC** |
14623 | {0x04510ef8, ac__t1_inter_t0_using_t0a__mul_prim}, |
14624 | // Deadly Arts logo. Added by Gonetz |
14625 | // (1-0)*t0+t1, (1-0)*prim+cmb |
14626 | {0x047e00fe, ac__t0_add_t1__add_prim}, |
14627 | // Spiderman. Added by Gonetz |
14628 | // (1-0)*t0+t1 |
14629 | {0x047e047e, ac_t0_add_t1}, |
14630 | // water, Dobutsu no Mori. Added by Gonetz |
14631 | // (1-0)*t0+t1, (cmb-0)*primlod+prim |
14632 | {0x047e07b8, ac__t0_add_t1__mul_primlod_add_prim}, |
14633 | // paper mario. Added by Gonetz |
14634 | // (1-t0)*t1+t1, (cmb-0)*t1+0 **INC** |
14635 | {0x048e0eb8, ac_t0_mul_t1}, |
14636 | // Pokemon Stadium 2. Added by Gonetz |
14637 | // (t0-prim)*t1+t1, (cmb-0)*shade+0 **INC** |
14638 | {0x04990f38, ac_t1_mul_shade}, |
14639 | // waterfall, Dobutsu no Mori. Added by Gonetz |
14640 | // (t0-0)*t1+t1 |
14641 | {0x04b904b9, ac_t0_mul_t1_add_t1}, |
14642 | // light, Dobutsu no Mori. Added by Gonetz |
14643 | // (t0-0)*t1+t1, (cmb-0)*primlod+0 ** INC ** |
14644 | {0x04b90fb8, ac__t0_add_t1__mul_primlod}, |
14645 | // lava, beetle adventure racing |
14646 | // (t1-0)*t1+t1, (cmb-0)*shade+0 ** INC ** |
14647 | {0x04ba0f38, ac__t1_mul_t1_add_t1__mul_shade}, |
14648 | // wheels, F1 World Grand Prix. Added by Gonetz |
14649 | // (t0-t1)*prim+t1 |
14650 | {0x04d104d1, ac_t1_inter_t0_using_prima}, |
14651 | // intro, castlevania 2. Added by Gonetz |
14652 | // (t0-t1)*prim+t1, (cmb-0)*shade+0 |
14653 | {0x04d10f38, ac__t1_inter_t0_using_prima__mul_shade}, |
14654 | // flame, castlevania 2. Added by Gonetz |
14655 | // (t0-t1)*prim+t1, (cmb-0)*env+0 |
14656 | {0x04d10f78, ac__t1_inter_t0_using_prima__mul_env}, |
14657 | // walls, beetle adventure racing. Added by Gonetz |
14658 | // (t0-0)*prim+t1 **INC** |
14659 | {0x04f904f9, ac_t0_mul_prim}, |
14660 | // Reflect pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14661 | // (t0-0)*prim+t1, (cmb-0)*prim+env **INC** |
14662 | {0x04f90af8, ac__t0_add_t1__mul_prim_add_env}, |
14663 | // Psychic pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14664 | // (t0-0)*prim+t1, (cmb-0)*shade+0 **INC** |
14665 | {0x04f90f38, ac__t0_add_t1__mul_shade}, |
14666 | // Rayman2. Added by Gonetz |
14667 | // (0-0)*shade+t1, (cmb-0)*env+0 |
14668 | {0x053f0f78, ac_t1_mul_env}, |
14669 | // Ground at kotake & koume, zelda |
14670 | // (t1-t0)*env+t1, (cmb-0)*prim+0 ** INC ** |
14671 | {0x054a0ef8, ac__t1_sub_t0_mul_enva_add_t1__mul_prim}, |
14672 | // Tony Hawk's Pro Skater. Added by Gonetz |
14673 | // (t0-t1)*env+t1 |
14674 | {0x05510551, ac_t1_inter_t0_using_enva}, |
14675 | // Shiek's disappearance, zelda |
14676 | // (t0-1)*env+t1 |
14677 | {0x05710571, ac_t0_sub_one_mul_enva_add_t1}, |
14678 | // Kotake or koume's magic poof, zelda |
14679 | // (t0-1)*env+t1, (cmb-0)*prim+0 ** INC ** |
14680 | {0x05710ef8, ac__t0_sub_one_mul_enva_add_t1__mul_prim}, |
14681 | // Gauntlet Legends intro |
14682 | // (t0-0)*env+t1, (cmb-0)*prim+0 ** INC ** |
14683 | {0x05790ef8, ac__t0_add_t1__mul_prim}, |
14684 | // Zelda opening door, zelda |
14685 | // (t0-0)*env+t1, (cmb-0)*shade+0 |
14686 | {0x05790f38, ac_t1_mul_shade}, |
14687 | // paper mario. Added by Gonetz |
14688 | // (t1-0)*env+t1, (cmb-0)*prim+0 ** INC ** |
14689 | {0x057a0ef8, ac_t1_mul_prim}, |
14690 | // pokemon attack, Pokemon Stadium 2. Added by Gonetz |
14691 | // (t0-t1)*prim_lod+t1, (cmb-0)*prim+0 |
14692 | {0x05910ef8, ac__t1_inter_t0_using_primlod__mul_prim}, |
14693 | // Skulltula coin, zelda |
14694 | // (t0-1)*primlod+t1 ** INC ** |
14695 | {0x05b105b1, ac_t0_mul_t1}, |
14696 | // Bell, Pokemon Stadium 2. Added by Gonetz |
14697 | // (t0-0)*primlod+t1, (cmb-env)*prim ** INC ** |
14698 | {0x05b90ee8, ac__t0_add_t1__mul_prim}, |
14699 | // intro, Aidyn Chronicles. Added by Gonetz |
14700 | // (0-cmb)*0+t1, (t1-1)*0+cmb |
14701 | {0x05c701f2, ac_t1}, |
14702 | // zelda 2 [Ogy]. Added by Gonetz |
14703 | // (t1-t0)*0+t1, (cmb-0)*prim+0 |
14704 | {0x05ca0ef8, ac_t1_mul_prim}, |
14705 | // beaver's river, zelda 2. Added by Gonetz |
14706 | // (t1-0)*0+t1, (cmb-0)*prim+0 |
14707 | {0x05fa0ef8, ac_t1_mul_prim}, |
14708 | // Arena, pokemon stadium 2 |
14709 | // (0-0)*0+t1, (0-0)*t0+cmb |
14710 | {0x05ff007f, ac_t1}, |
14711 | // Ogre Battle, unimp log. Added by Gonetz |
14712 | // (0-0)*0+t1, (0-0)*0+cmb |
14713 | {0x05ff05ff, ac_t1}, |
14714 | // lullaby, Paper Mario. Added by Gonetz |
14715 | // (0-0)*0+t1, (cmb-0)*prim+0 |
14716 | {0x05ff0ef8, ac_t1_mul_prim}, |
14717 | // aerofighter's assault [Ogy] |
14718 | // (0-0)*0+t1, (cmb-0)*shade+0 |
14719 | {0x05ff0f38, ac_t1_mul_shade}, |
14720 | // magic fist, Rayman2. Added by Gonetz |
14721 | // (0-0)*0+t1, (cmb-0)*env+0 |
14722 | {0x05ff0f78, ac_t1_mul_env}, |
14723 | // Pokemon selection background, Pokemon stadium 2 |
14724 | // (env-prim)*t0+prim |
14725 | {0x065d065d, ac_env_sub_prim_mul_t0_add_prim}, |
14726 | // text background, Ganbare Goemon - Mononoke Sugoroku |
14727 | // (1-prim)*t0+prim |
14728 | {0x065e065e, ac_one_sub_prim_mul_t0_add_prim}, |
14729 | // shadows, star wars: ep1 racer |
14730 | // (0-prim)*t0+prim |
14731 | {0x065f065f, ac_zero_sub_prim_mul_t0_add_prim}, |
14732 | // lava, beetle adventure racing |
14733 | // (0-1)*t0+prim, (cmb-0)*prim+0 ** INC ** |
14734 | {0x06770ef8, ac_t0_mul_prim}, |
14735 | // menu, Ganbare Goemon - Mononoke Sugoroku |
14736 | // (t0-0)*t0+prim |
14737 | {0x06790679, ac_t0_add_prim}, |
14738 | // Water, pokemon stadium 2 |
14739 | // (t1-0)*t0+prim |
14740 | {0x067a067a, ac_t0_mul_t1_add_prim}, |
14741 | // Smackdown Mall Menu, WWF No Mercy |
14742 | // (shade-0)*t0+prim |
14743 | {0x067c067c, ac_t0_mul_shade_add_prim}, |
14744 | // flag, Top Gear Rally 2. Added by Gonetz |
14745 | // (env-0)*t0+prim |
14746 | {0x067d067d, ac_t0_mul_env_add_prim}, |
14747 | // Mario Tennis. Added by Gonetz |
14748 | // (1-0)*t0+prim |
14749 | {0x067e067e, ac_t0_add_prim}, |
14750 | // sky, PGA European Tour |
14751 | // (t0-0)*t1+prim |
14752 | {0x06b906b9, ac_t0_mul_t1_add_prim}, |
14753 | // lava, beetle adventure racing |
14754 | // (t0-0)*t1+prim, (0-0)*0+1 **INC**? |
14755 | {0x06b90dff, ac_one}, |
14756 | // Pokemon Stadium 2, [Jeremy]. Added by Gonetz |
14757 | // (prim-0)*t1+prim |
14758 | {0x06bb06bb, ac_t1_mul_prim_add_prim}, |
14759 | // pokemon psyattack, Pokemon Stadium 2. Added by Gonetz |
14760 | // (1-0)*t1+prim, (cmb-0)*env+0 |
14761 | {0x06be0f78, ac_t1_add_prim_mul_env}, |
14762 | // Rush2 2. Added by Gonetz |
14763 | // (prim-prim)*prim+prim |
14764 | {0x06db06db, ac_prim}, |
14765 | //Spacestation Silicon Valley intro. Added by Gonetz |
14766 | // (t1-prim)*shade+prim |
14767 | // {0x071a071a, ac_t1_mul_shade}, |
14768 | {0x071a071a, ac_t1_sub_prim_mul_shade_add_prim}, |
14769 | //KI logos. Added by Gonetz |
14770 | // (env-prim)*shade+prim |
14771 | {0x071d071d, ac_env_sub_prim_mul_shade_add_prim}, |
14772 | // Deadly Arts, arena. Added by Gonetz |
14773 | // (1-0)*shade+prim |
14774 | {0x073e073e, ac_prim_add_shade}, |
14775 | // Phantom Gannon's portal, zelda |
14776 | // (t1-t0)*env+prim, (cmb-0)*shade+0 ** INC ** |
14777 | {0x074a0f38, ac__t0_mul_t1__mul_prim_mul_shade}, |
14778 | // Road rush. Added by Gonetz |
14779 | // (t0-0)*env+prim |
14780 | {0x07790779, ac_t0_mul_env_add_prim}, |
14781 | // arena, Pokemon Stadium 2 |
14782 | // (shade-t0)*primlod+prim, (cmb-t0)*shade ** INC ** |
14783 | {0x078c0f08, ac_shade_sub_t0_mul_primlod_add_prim}, |
14784 | // telescope, zelda 2. Added by Gonetz |
14785 | // (1-t0)*primlod+prim |
14786 | {0x078e078e, ac_one_sub_t0_mul_primlod_add_prim}, |
14787 | // zelda 2 [Ogy]. Added by Gonetz |
14788 | // (t0-t1)*primlod+prim, (cmb-0)*t0+0 |
14789 | {0x07910e78, ac_t0_inter_t1_using_primlod}, |
14790 | // Dobutsu no Mori. Added by Gonetz |
14791 | // (t0-0)*primlod+prim |
14792 | {0x07b907b9, ac_t0_mul_primlod_add_prim}, |
14793 | // Lock-On attack, Pokemon Stadium 2 |
14794 | // (t1-t0)*0+prim, (cmb-0)*0+cmb |
14795 | {0x07ca01f8, ac_prim}, |
14796 | // water, DK64 |
14797 | // (0-0)*0+0, (0-t1)*0+prim |
14798 | {0x07d707d7, ac_prim}, |
14799 | // Menu, megaman |
14800 | // (1-0)*0+prim |
14801 | {0x07fe07fe, ac_prim}, |
14802 | // super bowling |
14803 | //(0-0)*0+prim, |
14804 | {0x07ff0000, ac_prim}, |
14805 | // menu, Ganbare Goemon - Mononoke Sugoroku |
14806 | // (0-0)*0+prim, (0-0)*0+t0 |
14807 | {0x07ff03ff, ac_t0}, |
14808 | // Intro background, starfox |
14809 | //z (0-0)*0+prim |
14810 | {0x07ff07ff, ac_prim}, |
14811 | // velva boss, JFG |
14812 | //(0-0)*0+prim, (0-0)*0+env |
14813 | {0x07ff0bff, ac_env}, |
14814 | // gem, castlevania 2. Added by Gonetz |
14815 | // (0-0)*0+prim, (cmb-0)*t0+0 |
14816 | {0x07ff0e78, ac_t0_mul_prim}, |
14817 | // text, Tony Hawk's Pro Skater. Added by Gonetz |
14818 | // (0-0)*0+prim, (cmb-0)*t1+0 |
14819 | {0x07ff0eb8, ac_t1_mul_prim}, //weird, but implementing this makes text unreadable |
14820 | // zelda 2. Added by Gonetz |
14821 | // (0-0)*0+prim, (cmb-0)*prim+0 |
14822 | {0x07ff0ef8, ac_prim_mul_prim}, |
14823 | // explosion, Blast Corps. Added by Gonetz |
14824 | // (0-0)*0+prim, (t0-0)*prim+0 |
14825 | {0x07ff0ef9, ac_t0_mul_prim}, |
14826 | // zelda 2, [Ogy]. Added by Gonetz |
14827 | // (0-0)*0+prim, (cmb-0)*shade+0 |
14828 | {0x07ff0f38, ac_prim_mul_shade}, |
14829 | // Fox's ears and arms, smash bros |
14830 | // (0-0)*0+prim, (cmb-0)*env+0 |
14831 | {0x07ff0f78, ac_prim_mul_env}, |
14832 | // monsters, Pokemon Stadium. Added by Gonetz |
14833 | // (0-0)*0+prim, (cmb-0)*primlod+0 |
14834 | {0x07ff0fb8, ac_prim_mul_primlod}, |
14835 | // Hydro Pump Attack, Pokemon Stadium. |
14836 | // (1-t1)*t0+shade, (cmb-prim)*shade+0 |
14837 | {0x08560f18, ac__one_sub_t1_mul_t0_add_shade__sub_prim_mul_shade}, |
14838 | // focus, Paper Mario. Added by Gonetz |
14839 | //(t0-shade)*t0+shade, (cmb-0)*prim+0 * INC ** |
14840 | {0x08610ef8, ac_t0_mul_prim}, |
14841 | // Mario's head, mario //Added by Gonetz |
14842 | //(prim-shade)*t0+shade |
14843 | {0x08630863, ac_prim_sub_shade_mul_t0_add_shade}, |
14844 | // Fissure attack, pokemon stadium 2 |
14845 | //(t1-t0)*prim+shade, (cmb-0)*shade+0 |
14846 | {0x08ca0f38, ac__t1_sub_t0_mul_prim_add_shade__mul_shade}, |
14847 | // Earthquake pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
14848 | //(t0-t1)*prim+shade, (cmb-0)*shade+0 ** INC ** |
14849 | {0x08d10f38, ac__t0_sub_t1_mul_prim_add_shade__mul_shade}, |
14850 | // ? |
14851 | //(t0-shade)*prim+shade |
14852 | {0x08e108e1, ac_t0_mul_prim_add_shade_mul_one_minus_prim}, |
14853 | // Paper Mario |
14854 | // (t0-prim)*shade+shade, (cmb-0)*env+0 |
14855 | {0x09190f78, ac__t0_sub_prim_mul_shade_add_shade__mul_env}, |
14856 | // pads, Pokemon Stadium 2. Added by Gonetz |
14857 | // (0-t0)*env+shade, (cmb-0)*prim+0 ** INC ** |
14858 | {0x094f0ef8, ac_one_sub_t0_mul_prim_mul_shade}, |
14859 | // sun rays, Pokemon Stadium 2. |
14860 | // (shade-0)*env+shade, (cmb-0)*prim+0 |
14861 | {0x097c0ef8, ac_one_plus_env_mul_prim_mul_shade}, |
14862 | // attack, Pokemon Stadium 2. |
14863 | // (t0-0)*primlod+shade, (cmb-0)*shade+0 |
14864 | {0x09b90f38, ac__t0_mul_primlod_add_shade__mul_shade}, |
14865 | // Huge turtle appearance, zelda 2. Added by Gonetz |
14866 | // (t1-0)*primlod+shade, (cmb-0)*shade+0 ** INC ** |
14867 | {0x09ba0f38, ac__t1_mul_primlod_add_shade__mul_shade}, |
14868 | // roof, Kirby 64. Added by Gonetz |
14869 | // (t0-0)*0+shade |
14870 | {0x09f909f9, ac_shade}, |
14871 | // water, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
14872 | // (0-0)*0+shade, (cmb-cmb)*lodf+cmb |
14873 | {0x09ff0000, ac_shade}, |
14874 | // water temple, zelda 2. Added by Gonetz |
14875 | // (0-0)*0+shade, (cmb-0)*prim+cmb |
14876 | {0x09ff00f8, ac_prim_mul_shade_add_shade}, |
14877 | // damaged car, SCARS. Added by Gonetz |
14878 | // (0-0)*0+shade, (t0-t1)*primlod+prim ** INC ** |
14879 | {0x09ff0791, ac_t0_mul_primlod_add_prim}, |
14880 | // Hyrule castle gate, zelda |
14881 | //z (0-0)*0+shade, (0-0)*0+prim |
14882 | {0x09ff07ff, ac_prim}, |
14883 | // Super Mario 64 logo |
14884 | //z (0-0)*0+shade |
14885 | {0x09ff09ff, ac_shade}, |
14886 | // terrain, SCARS. Added by Gonetz |
14887 | // (0-0)*0+shade, (0-0)*0+1 |
14888 | {0x09ff0dff, ac_one}, |
14889 | // terrain, SCARS. Added by Gonetz |
14890 | // (0-0)*0+shade, (t0-0)*t1+0 |
14891 | {0x09ff0eb9, ac_t0_mul_t1}, |
14892 | // N64 logo, Aidyn Chronicles. Added by Gonetz |
14893 | // (0-0)*0+shade, (cmb-0)*prim+0 |
14894 | {0x09ff0ef8, ac_prim_mul_shade}, |
14895 | // birds?, custom robo. Added by Gonetz |
14896 | // (0-0)*0+shade, (cmb-0)*shade+0 |
14897 | {0x09ff0f38, ac_shade}, |
14898 | // sky, Glover, [Raziel64]. Added by Gonetz |
14899 | // (0-0)*0+shade, (t0-0)*shade+0 |
14900 | {0x09ff0f39, ac_t0_mul_shade}, |
14901 | // Hand, smash bros |
14902 | // (0-0)*0+shade, (cmb-0)*env+0 |
14903 | {0x09ff0f78, ac_env_mul_shade}, |
14904 | // Conker's helicopter tail, CBFD |
14905 | // (0-0)*0+shade, (shade-0)*env+0 |
14906 | {0x09ff0f7c, ac_env_mul_shade}, |
14907 | // menu, PokemonStadium1, [Raziel64] |
14908 | // (0-0)*0+shade, (cmb-0)*primlod+0 |
14909 | {0x09ff0fb8, ac_primlod_mul_shade}, |
14910 | // Link's sword slashing, smash bros |
14911 | // (prim-env)*t0+env |
14912 | {0x0a6b0a6b, ac_prim_sub_env_mul_t0_add_env}, |
14913 | // Reflected beam at kotake & koume's, zelda |
14914 | // (prim-env)*t0+env, (cmb-0)*prim+0 ** INC ** |
14915 | {0x0a6b0ef8, ac_t0_mul_prim}, |
14916 | // teleporter, Spacestation Silicon Valley. Added by Gonetz |
14917 | // (prim-env)*t0+env, (cmb-0)*shade+0 ** INC ** |
14918 | {0x0a6b0f38, ac_t0_mul_shade}, |
14919 | // Ridge Racer, unimp log. Added by Gonetz |
14920 | // (prim-env)*t0+env, (cmb-0)*primlod+0 |
14921 | {0x0a6b0fb8, ac_prim_sub_env_mul_t0_add_env}, |
14922 | // Kotake or koume's hair, zelda |
14923 | // (prim-0)*t0+env |
14924 | {0x0a7b0a7b, ac_t0_mul_prim_add_env}, |
14925 | // menu, doubut no mori |
14926 | // (1-0)*t0+env |
14927 | {0x0a7e0a7e, ac_t0_add_env}, |
14928 | // Grass, mario golf |
14929 | // (env-shade)*t1+env, (0-0)*0+1 |
14930 | {0x0aa50dff, ac_one}, |
14931 | // Ridge Racer, cars select. Added by Gonetz |
14932 | // (prim-env)*t1+env |
14933 | {0x0aab0aab, ac_prim_sub_env_mul_t1_add_env}, |
14934 | // text, monster truck madness |
14935 | // (prim-env)*t1+env, (cmb-0)*t1+0 |
14936 | {0x0aab0eb8, ac_t1_mul_env}, |
14937 | // zelda 2 [Ogy]. Added by Gonetz |
14938 | // (1-0)*t1+env, (0-0)*0+cmb |
14939 | //{0x0abe0abe, ac_one}, |
14940 | {0x0abe0abe, ac_t1_add_env}, |
14941 | // arena, Pokemon Stadium 2. Added by Gonetz |
14942 | // (1-t0)*prim+env, (cmb-0)*shade+0 |
14943 | {0x0ace0f38, ac_one_sub_t0_mul_prim_mul_shade}, |
14944 | // intro, Bomberman 64 - 2. Added by Gonetz |
14945 | // (t0-env)*prim+env |
14946 | {0x0ae90ae9, ac_t0_sub_env_mul_prim_add_env}, |
14947 | // N64 logo, Ogre Battle. Added by Gonetz |
14948 | // (t0-0)*prim+env |
14949 | {0x0af90af9, ac_t0_mul_prim_add_env}, |
14950 | // girls, PD intro. Added by Gonetz |
14951 | // (t0-env)*shade+env ** INC ** |
14952 | {0x0b290b29, ac_t0_sub_env_mul_shadea_add_env}, |
14953 | // Text, Mia Soccer. Added by Gonetz |
14954 | // (t0-env)*shade+env, (cmb-0)*lod_fraction+0 ** INC ** |
14955 | {0x0b290e38, ac_t0_sub_env_mul_shadea_add_env}, |
14956 | // shadows, Mario Tennis. Added by Gonetz |
14957 | // (prim-env)*shade+env, (0-cmb)*t1+cmb ** INC ** |
14958 | {0x0b2b0087, ac_prim_sub_env_mul_shade_add_env_mul_t1}, |
14959 | // lamppost?, Ridge Racer. Added by Gonetz |
14960 | // (prim-env)*shade+env, (0-0)*0+cmb |
14961 | {0x0b2b0b2b, ac_prim_sub_env_mul_shade_add_env}, |
14962 | // ground, zelda2. Added by Gonetz |
14963 | // (1-env)*shade+env, (t1-0)*prim+0 |
14964 | {0x0b2e0efa, ac_t1_mul_prim}, |
14965 | // GASP Fighters |
14966 | // (t0-0)*shade+env |
14967 | {0x0b390b39, ac_t0_mul_shade_add_env}, |
14968 | // destroying stuff, golden eye |
14969 | // (1-0)*shade+env |
14970 | {0x0b3e0b3e, ac_env_add_shade}, |
14971 | // Torches, Paper Mario. Added by Gonetz |
14972 | // (t0-t1)*env+env, (0-0)*0+1 |
14973 | {0x0b510dff, ac_t0_sub_t1_mul_env_add_env}, |
14974 | // Mini Racers |
14975 | // (t0-0)*primlod+env |
14976 | {0x0bb90bb9, ac_t0_mul_primlod_add_env}, |
14977 | // International Track and Field 2000. Added by Gonetz |
14978 | // (t0-0)*0+env |
14979 | {0x0bf90bf9, ac_env}, |
14980 | // TM, mario |
14981 | //z (0-0)*0+env |
14982 | {0x0bff0bff, ac_env}, |
14983 | // rancho monster, zelda2. Added by Gonetz |
14984 | // (0-0)*0+env, (cmb-0)*t1+0 |
14985 | {0x0bff0eb8, ac_t1_mul_env}, |
14986 | // Rocket Robot in Wheels intro |
14987 | // (0-0)*0+env, (cmb-0)*prim+0 |
14988 | {0x0bff0ef8, ac_prim_mul_env}, |
14989 | // Background, Pokemon Snap |
14990 | // (prim-env)*t0+1 |
14991 | {0x0c6b0c6b, ac_prim_sub_env_mul_t0_add_one}, |
14992 | // Mario Golf |
14993 | // (0-1)*t0+1 |
14994 | {0x0c770c77, ac_one_sub_t0}, |
14995 | // flame, paper mario. Added by Gonetz |
14996 | // (1-t0)*t1+1, (cmb-t1)*t1+t1 |
14997 | {0x0c8e0490, ac_t0_mul_t1}, |
14998 | // hall of fame, Pokemon Stadium |
14999 | // (t0-1)*prim+1, (cmb-0)*env+0 |
15000 | {0x0cf10f78, ac__one_inter_t0_using_prim__mul_env}, |
15001 | // Ring boundary, dual heroes |
15002 | // (0-1)*prim+1 |
15003 | {0x0cf70cf7, ac_one_sub_prim}, |
15004 | // Kirby64, level 6, [Raziel64] |
15005 | // (0-0)*prim+1 |
15006 | {0x0cff0cff, ac_one}, |
15007 | // Mystical Ninja |
15008 | // (0-1)*env+1 |
15009 | {0x0d770d77, ac_one}, |
15010 | // Deku shield in shop, zelda |
15011 | // (1-1)*primlod+1 |
15012 | {0x0db60db6, ac_one}, |
15013 | // water near gorons willage. Added by Gonetz |
15014 | // (t1-t0)*0+1, (cmb-0)*prim+0 |
15015 | {0x0dca0ef8, ac_prim}, |
15016 | // background, kirby 64. Added by Gonetz |
15017 | // (t0-0)*0+1 |
15018 | {0x0df90df9, ac_one}, |
15019 | // kirby 64. Added by Gonetz |
15020 | // (1-0)*0+1 |
15021 | {0x0dfe0dfe, ac_one}, |
15022 | // background on level 2-1, kirby 64 [Raziel64]. Added by Gonetz |
15023 | // (1-0)*0+1, (0-0)*0+1 |
15024 | {0x0dfe0dff, ac_one}, |
15025 | // duck dodgers intro. Added by Gonetz |
15026 | // (0-0)*0+1, (cmb-cmb)*primlod+cmb |
15027 | {0x0dff0000, ac_one}, |
15028 | // duck dodgers intro. Added by Gonetz |
15029 | // (0-0)*0+1, (0-0)*0+t1 **INC**? |
15030 | {0x0dff05ff, ac_t1}, |
15031 | // ? |
15032 | // (0-0)*0+1, (0-0)*0+prim |
15033 | {0x0dff07ff, ac_prim}, |
15034 | // arena, custom robo. Added by Gonetz |
15035 | // (0-0)*0+1, (0-0)*0+shade |
15036 | {0x0dff09ff, ac_shade}, |
15037 | // field, Mario Golf |
15038 | // (0-0)*0+1, (1-env)*shade+env |
15039 | {0x0dff0b2e, ac_one_sub_env_mul_shade_add_env}, |
15040 | // battle tanks 2 [Ogy] |
15041 | // (0-0)*0+1, (0-0)*0+env |
15042 | {0x0dff0bff, ac_env}, |
15043 | // helmet, F1 World Grand Prix. Added by Gonetz |
15044 | // (0-0)*0+1, (0-1)*0+1 |
15045 | {0x0dff0df7, ac_one}, |
15046 | // secret in level 3-4, Kirby64, [Raziel64] |
15047 | // (0-0)*0+1, (cmb-0)*0+1 |
15048 | {0x0dff0df8, ac_one}, |
15049 | // Menu options, starfox |
15050 | // (0-0)*0+1 |
15051 | {0x0dff0dff, ac_one}, |
15052 | // Water, zelda |
15053 | //z (0-0)*0+primlod, (cmb-0)*prim+0 |
15054 | {0x0dff0ef8, ac_prim}, |
15055 | // Desert ground, zelda |
15056 | // (0-0)*0+1, (cmb-0)*shade+0 |
15057 | {0x0dff0f38, ac_shade}, |
15058 | // Characters, smash bros |
15059 | // (0-0)*0+1, (cmb-0)*env+0 |
15060 | {0x0dff0f78, ac_env}, |
15061 | // end of level 3-4, Kirby64, [Raziel64] |
15062 | // (0-0)*0+1, (cmb-0)*0+0 |
15063 | {0x0dff0ff8, ac_zero}, |
15064 | // Kirby64 |
15065 | // (0-0)*0+1, (0-0)*0+0 |
15066 | {0x0dff0fff, ac_zero}, |
15067 | // floor, Spiderman [Raziel64]. Added by Gonetz |
15068 | // (env-t1)*t0+0 ** INC ** |
15069 | {0x0e550e55, ac_t0_mul_env}, |
15070 | // skeleton, castlevania 2. Added by Gonetz |
15071 | // (1-prim)*t0+0 |
15072 | {0x0e5e0e5e, ac_one_sub_prim_mul_t0}, |
15073 | // player select, Forsaken [Raziel64]. Added by Gonetz |
15074 | // (prim-shade)*t0+0 |
15075 | {0x0e630e63, ac_prim_sub_shade_mul_t0}, |
15076 | // castlevania 2 [Ogy]. Added by Gonetz |
15077 | // (1-shade)*t0+0 |
15078 | {0x0e660e66, ac_one_sub_shade_mul_t0}, |
15079 | // GoldenEye: Helicopter rotors |
15080 | // (shade-env)*t0+0, (1-0)*prim+cmb |
15081 | {0x0e6c00fe, ac_shade_sub_env_mul_t0_add_prim}, |
15082 | // background, level3-4, Kirby64, [Raziel64] |
15083 | // (shade-env)*t0+0 |
15084 | {0x0e6c0e6c, ac_shade_sub_env_mul_t0}, |
15085 | // Goemon, mystical ninja. Added by Gonetz |
15086 | // (1-env)*t0+0 |
15087 | {0x0e6e0e6e, ac_one_sub_env_mul_t0}, |
15088 | // fist attack, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
15089 | // (t0-0)*t0+0, (t1-cmb)*prim+cmb |
15090 | {0x0e7900c2, ac_t0_inter_t1_using_prima}, |
15091 | // Clay Fighter [Ogy]. Added by Gonetz |
15092 | // (t0-0)*t0+0 |
15093 | {0x0e790e79, ac_t0_mul_t0}, |
15094 | // Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
15095 | // (t0-0)*t0+0, (prim-0)*t1+0 |
15096 | {0x0e790ebb, ac_t1_mul_prim}, |
15097 | // zelda 2 [Ogy]. Added by Gonetz |
15098 | // (t0-0)*t0+0, (cmb-0)*prim+0 |
15099 | {0x0e790ef8, ac_t0_mul_prim}, |
15100 | // zelda 2. Added by Gonetz |
15101 | // (t0-0)*t0+0, (cmb-0)*shade+0 |
15102 | {0x0e790f38, ac_t0_mul_shade}, |
15103 | // zelda 2. Added by Gonetz |
15104 | // (t0-0)*t0+0, (cmb-0)*env+0 |
15105 | {0x0e790f78, ac_t0_mul_env}, |
15106 | // the ice plane just before the entrance to gorons village (where tingle is}, zelda 2 [Ogy]. Added by Gonetz |
15107 | // (t1-0)*t0+0, (cmb-0)*0+cmb |
15108 | {0x0e7a01f8, ac_t0_mul_t1}, |
15109 | // paper mario. Added by Gonetz |
15110 | // (t1-0)*t0+0, (cmb-env)*prim+env ** INC ** |
15111 | {0x0e7a0ae8, ac_t1_mul_prim}, |
15112 | // mini games quiz monitor backround, Pokemon Stadium 2 |
15113 | // (t1-0)*t0+0, (0-0)*0+1 |
15114 | {0x0e7a0dff, ac_one}, |
15115 | // Tony Hawk's Pro Skater. Added by Gonetz |
15116 | // (t1-0)*t0+0, (cmb-0)*t0+0 |
15117 | {0x0e7a0e78, ac_t0_mul_t1}, |
15118 | // bike trace, xg2. Added by Gonetz |
15119 | // (t1-0)*t0+0 |
15120 | {0x0e7a0e7a, ac_t0_mul_t1}, |
15121 | // Kotake & koume defeated, zelda |
15122 | // (t1-0)*t0+0, (cmb-0)*prim+0 |
15123 | {0x0e7a0ef8, ac__t0_mul_t1__mul_prim}, |
15124 | // Magnitude, pokemon stadium 2 |
15125 | // (t1-0)*t0+0, (cmb-env)*shade+0 |
15126 | {0x0e7a0f28, ac__t0_mul_t1__mul_env_mul_shade}, |
15127 | // Bongo Bongo, zelda |
15128 | // (t1-0)*t0+0, (cmb-0)*shade+0 |
15129 | {0x0e7a0f38, ac__t0_mul_t1__mul_shade}, |
15130 | // Dobutsu_no_Mori, waterfall |
15131 | // (t1-0)*t0+0, (cmb-0)*prim_lod+0 |
15132 | {0x0e7a0fb8, ac__t0_mul_t1__mul_primlod}, |
15133 | // Back of doors, megaman |
15134 | // (prim-0)*t0+0, (cmb-0)*lodfrac+0 |
15135 | {0x0e7b0e38, ac_t0_mul_prim}, |
15136 | // Karts, mario kart |
15137 | //z (prim-0)*t0+0 |
15138 | {0x0e7b0e7b, ac_t0_mul_prim}, |
15139 | // paper mario. Added by Gonetz |
15140 | // (prim-0)*t0+0, (t0-0)*prim+0 |
15141 | {0x0e7b0ef9, ac_t0_mul_prim}, |
15142 | // Table, mace |
15143 | // (prim-0)*t0+0, (cmb-0)*shade+0 |
15144 | {0x0e7b0f38, ac_t0_mul_prim_mul_shade}, |
15145 | // lamp shadow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
15146 | // (shade-0)*t0+0, (cmb-cmb)*lodf+cmb |
15147 | {0x0e7c0000, ac_t0_mul_shade}, |
15148 | // Game logo, Aerofighters Assault [Raziel64] |
15149 | //(shade-0)*t0+0, (0-0)*0+1 |
15150 | {0x0e7c0dff, ac_one}, |
15151 | // Higher sky, waverace |
15152 | //z (shade-0)*t0+0 |
15153 | {0x0e7c0e7c, ac_t0_mul_shade}, |
15154 | // duck dodgers, intro. Added by Gonetz |
15155 | // (shade-0)*t0+0, (cmb-0)*prim+0 |
15156 | {0x0e7c0ef8, ac_t0_mul_prim_mul_shade}, |
15157 | // waterwheel in water temple, zelda 2. Added by Gonetz |
15158 | // (shade-0)*t0+0, (cmb-0)*env+0 |
15159 | {0x0e7c0f78, ac_t0_mul_env_mul_shade}, |
15160 | // Blowing up mine at bowser's, mario |
15161 | // (env-0)*t0+0 |
15162 | {0x0e7d0e7d, ac_t0_mul_env}, |
15163 | // castlevania 2, intro. Added by Gonetz |
15164 | // (1-0)*t0+0 |
15165 | {0x0e7e0e7e, ac_t0}, |
15166 | // moon, castlevania 2. Added by Gonetz |
15167 | // (1-0)*t0+0, (cmb-0)*prim+0 |
15168 | {0x0e7e0ef8, ac_t0_mul_prim}, |
15169 | //beetle adventure racing. Added by Gonetz |
15170 | // (1-0)*t0+0, (cmb-0)*shade+0 |
15171 | {0x0e7e0f38, ac_t0_mul_shade}, |
15172 | // lava, beetle adventure racing |
15173 | // (t0-prim)*t1+0, (0-0)*0+shade ** INC ** |
15174 | {0x0e9909ff, ac_shade}, |
15175 | // Rain Dance, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
15176 | // (t0-env)*t1+0, (cmb-0)*0+prim ** INC ** |
15177 | {0x0ea90ef8, ac__t0_mul_t1__mul_prim}, |
15178 | // Duck Dodgers Starring Daffy Duck text background |
15179 | // (t0-0)*t1+0, (shade-cmb)*prim+cmb |
15180 | {0x0eb900c4, ac_one_sub_prim_mul__t0_mul_t1__add__prim_mul_shade}, |
15181 | // torches, pokemon stadium 2 |
15182 | // (t0-0)*t1+0, (cmb-env)*prim+cmb |
15183 | {0x0eb900e8, ac__t0_mul_t1__sub_env_mul_prim_add__t0_mul_t1}, |
15184 | // airboarder 64 [Ogy] |
15185 | // (t0-0)*t1+0, (0-0)*0+prim |
15186 | {0x0eb907ff, ac_prim}, |
15187 | // explosion, body harvest. Added by Gonetz |
15188 | // (t0-0)*t1+0, (0-0)*0+shade |
15189 | {0x0eb909ff, ac_shade}, |
15190 | // Text off top, banjo kazooie |
15191 | // (t0-0)*t1+0 |
15192 | {0x0eb90eb9, ac_t0_mul_t1}, |
15193 | // smoke, daikatana. Added by Gonetz |
15194 | // (t0-0)*t1+0, (cmb-0)*prim+0 |
15195 | {0x0eb90ef8, ac__t0_mul_t1__mul_prim}, |
15196 | // Arena, Pokemon Stadium 2. |
15197 | // (t0-0)*t1+0, (cmb-prim)*shade+0 |
15198 | {0x0eb90f18, ac__t0_mul_t1__sub_prim_mul_shade}, |
15199 | // Water, pilotwings |
15200 | // (t0-0)*t1+0, (cmb-0)*shade+0 |
15201 | {0x0eb90f38, ac__t0_mul_t1__mul_shade}, |
15202 | // Tony Hawk's Pro Skater. Added by Gonetz |
15203 | // (t0-0)*t1+0, (cmb-0)*env+0 |
15204 | {0x0eb90f78, ac__t0_mul_t1__mul_env}, |
15205 | // light from window, Dobutsu no Mori. Added by Gonetz |
15206 | // (t0-0)*t1+0, (cmb-0)*primlod+0 |
15207 | {0x0eb90fb8, ac__t0_mul_t1__mul_primlod}, |
15208 | // chandelier in spider house, zelda 2. Added by Gonetz |
15209 | // (t1-0)*t1+0, (cmb-0)*prim+0 |
15210 | {0x0eba0ef8, ac_t1_mul_prim}, |
15211 | // cars, ridge racer. Added by Gonetz |
15212 | // (prim-0)*t1+0, (0-0)*0+1 |
15213 | {0x0ebb0dff, ac_t1_mul_prim}, |
15214 | // aerofighter's assault [Ogy] |
15215 | // (prim-0)*t1+0 |
15216 | {0x0ebb0ebb, ac_t1_mul_prim}, |
15217 | // tire trace, beetle adventure racing. Added by Gonetz |
15218 | // (shade-0)*t1+0 |
15219 | {0x0ebc0ebc, ac_t1_mul_shade}, |
15220 | // smoke, Starshot. Added by Gonetz |
15221 | // (env-0)*t1+0 |
15222 | {0x0ebd0ebd, ac_t1_mul_env}, |
15223 | // lots of things, goldeneye |
15224 | // (1-0)*t1+0, (0-0)*0+shade |
15225 | {0x0ebe09ff, ac_shade}, |
15226 | // zelda 2 [Ogy]. Added by Gonetz |
15227 | // (1-0)*t1+0, (cmb-0)*prim+0 |
15228 | {0x0ebe0ef8, ac_t1_mul_prim}, |
15229 | // walls, perfect dark. Added by Gonetz |
15230 | // (1-0)*t1+0, (cmb-0)*shade+0 |
15231 | {0x0ebe0f38, ac_t1_mul_shade}, |
15232 | // sand, perfect dark. Added by Gonetz |
15233 | // (1-0)*t1+0, (cmb-0)*env+0 |
15234 | {0x0ebe0f78, ac_t1_mul_env}, |
15235 | // light, Ridge Racer. Added by Gonetz |
15236 | // (1-t0)*prim+0 |
15237 | {0x0ece0ece, ac_one_sub_t0_mul_prim}, |
15238 | // exaust, star wars ep1 racer |
15239 | // (1-t0)*prim+0, (cmb-0)*shade+0 |
15240 | {0x0ece0f38, ac_one_sub_t0_mul_primshade}, |
15241 | // iguana, Forsaken, [Raziel64]. Added by Gonetz |
15242 | // (t0-shade)*prim+0 |
15243 | {0x0ee10ee1, ac_t0_sub_shade_mul_prim}, |
15244 | // stands, NASCAR 2000 |
15245 | // (prim-shade)*prim+0 |
15246 | {0x0ee30ee3, ac_prim_sub_shade_mul_prim}, |
15247 | // arena, Pokemon Stadium 2. Added by Gonetz |
15248 | // (t0-env)*prim+0 ** INC ** |
15249 | {0x0ee90ee9, ac_t0_mul_prim}, |
15250 | // lure, bass rush |
15251 | // (t0-0)*prim+0, (cmb-cmb)*lodf+cmb |
15252 | {0x0ef90000, ac_t0_mul_prim}, |
15253 | // explosion, body harvest. Added by Gonetz |
15254 | // (t0-0)*prim+0, (t0-0)*env+cmb |
15255 | {0x0ef90179, ac_prim_add_env_mul_t0}, |
15256 | // frog's eyes, zelda |
15257 | // (t0-0)*prim+0, (1-1)*prim_lod+cmb |
15258 | {0x0ef901b6, ac_t0_mul_prim}, |
15259 | // Monster truck madness intro. Added by Gonetz |
15260 | // (t0-0)*prim+0, (cmb-0)*prim_lod+cmb ** INC ** |
15261 | {0x0ef901b8, ac_t0_mul_prim}, |
15262 | // Road, zelda |
15263 | //z (t0-0)*prim+0, (t1-0)*primlod+cmb |
15264 | {0x0ef901ba, ac__t0_mul_prim__add__t1_mul_primlod}, |
15265 | // Track, wipeout. Addded by Gonetz |
15266 | // (t0-0)*prim+0, (0-0)*0+prim |
15267 | {0x0ef907ff, ac_t0_mul_prim}, |
15268 | // magic stuff, buck bumble. Added by Gonetz |
15269 | // (t0-0)*prim+0, (cmb-0)*prim+0 |
15270 | {0x0ef90ef8, ac_t0_mul_prim_mul_prim}, |
15271 | // The mario face, mario |
15272 | //z (t0-0)*prim+0 |
15273 | {0x0ef90ef9, ac_t0_mul_prim}, |
15274 | // paper mario. Added by Gonetz |
15275 | // (t0-0)*prim+0, (cmb-0)*shade+0 |
15276 | {0x0ef90f38, ac_t0_mul_prim_mul_shade}, |
15277 | // Pikachu's mouth, smash bros |
15278 | // (t0-0)*prim+0, (cmb-0)*env+0 |
15279 | {0x0ef90f78, ac_t0_mul_prim_mul_env}, |
15280 | // bomb mask, zelda 2. Added by Gonetz |
15281 | // (t0-0)*prim+0, (1-0)*env+0 |
15282 | {0x0ef90f7e, ac_t0_mul_prim}, |
15283 | // Charmander's tail, pokemon stadium 2 |
15284 | // (t0-0)*prim+0, (cmb-0)*primlod+0 |
15285 | {0x0ef90fb8, ac_t0_mul_prim_mul_primlod}, |
15286 | // stalactites, Beetle adventure Racing. Added by Gonetz |
15287 | // (t1-0)*prim+0, (1-cmb)*shade+cmb |
15288 | {0x0efa0106, ac_one_sub_shade_mul_t1_add_shade}, |
15289 | // Sprites, Ogre Battle. Added by Gonetz |
15290 | // (t1-0)*prim+0, (0-0)*0+cmb |
15291 | {0x0efa0efa, ac_t1_mul_prim}, |
15292 | // Something about kotake & koume's combined attack, zelda |
15293 | // (t1-0)*prim+0, (cmb-0)*shade+0 |
15294 | {0x0efa0f38, ac_t1_mul_prim_mul_shade}, |
15295 | // intro background, bio freaks. Added by Gonetz |
15296 | // (prim-0)*prim+0 |
15297 | {0x0efb0efb, ac_prim_mul_prim}, |
15298 | // sky, xg2. Added by Gonetz |
15299 | // (shade-0)*prim+0, (0-0)*0+1 |
15300 | {0x0efc0dff, ac_one}, |
15301 | // Zelda, unimp log. Added by Gonetz |
15302 | // (shade-0)*prim+0 |
15303 | {0x0efc0efc, ac_prim_mul_shade}, |
15304 | // ? |
15305 | // (shade-0)*prim+0, (cmb-0)*shade+0 ** INC ** |
15306 | {0x0efc0f38, ac_prim_mul_shade}, |
15307 | // Baby mario's hat shadow, mario golf |
15308 | // (env-0)*prim+0 |
15309 | {0x0efd0efd, ac_prim_mul_env}, |
15310 | // Menu, doom |
15311 | // (1-0)*prim+0 |
15312 | {0x0efe0efe, ac_prim}, |
15313 | // Peris Song attack, Pokemin Stadium 2 |
15314 | // (1-0)*prim+0, (cmb-0)*shade+0 |
15315 | {0x0efe0f38, ac_prim_mul_shade}, |
15316 | // Conker's shadow, CBFD. Added by Gonetz |
15317 | // (1-t0)*shade+0 |
15318 | {0x0f0e0f0e, ac_one_sub_t0_mul_shade}, |
15319 | // Rock smash, pokemon stadium 2 |
15320 | // (1-t0)*shade+0 |
15321 | {0x0f0f0ee8, ac_one_sub_t0_mul_shade}, |
15322 | //waterfall, Paper Mario |
15323 | // (t0-t1)*shade+0 |
15324 | {0x0f110f11, ac__t0_sub_t1__mul_shade}, |
15325 | // mahogany town statue, Pokemon Stadium 2 |
15326 | // (t0-prim)*shade+0 |
15327 | {0x0f190f19, ac_t0_sub_prim_mul_shade}, |
15328 | // silver cave, pokemon stadium 2 |
15329 | // (t0-prim)*shade+0, (cmb-0)*env+0 |
15330 | {0x0f190f78, ac_t0_sub_prim_mul_shade_mul_env}, |
15331 | // Boomerang circle, zelda |
15332 | // (t0-0)*shade+0, (1-cmb)*t0+cmb |
15333 | {0x0f390046, ac_t0_mul_shade}, |
15334 | // THPS3 |
15335 | // (t0-0)*shade+0, (1-0)*t0+cmb |
15336 | {0x0f39007e, ac_t0_mul_shade}, |
15337 | // ??? |
15338 | // (t0-0)*shade+0, (env-0)*t1+cmb |
15339 | {0x0f3900bd, ac_t0_mul_shade}, |
15340 | // Forest temple doorway, zelda |
15341 | // (t0-0)*shade+0, (t1-0)*primlod+cmb |
15342 | {0x0f3901ba, ac_t0_mul_shade}, |
15343 | // skis, Spacestation Silicon Valley. Added by Gonetz |
15344 | // (t0-0)*shade+0, (0-0)*0+t0 |
15345 | {0x0f3903ff, ac_t0}, |
15346 | // paper mario. Added by Gonetz |
15347 | // (t0-0)*shade+0, (cmb-t0)*prim+0 |
15348 | {0x0f390ec8, ac_t0_mul_prim_mul_shade}, |
15349 | // House windows, zelda intro |
15350 | //z (t0-0)*shade+0, (cmb-0)*prim+0 |
15351 | {0x0f390ef8, ac_t0_mul_prim_mul_shade}, |
15352 | // Characters, mace |
15353 | // (t0-0)*shade+0, (cmb-0)*shade+0 |
15354 | {0x0f390f38, ac_t0_mul_shade}, |
15355 | // Shadows, mario |
15356 | //z (t0-0)*shade+0 |
15357 | {0x0f390f39, ac_t0_mul_shade}, |
15358 | // Clear screen intro, banjo kazooie |
15359 | // (t0-0)*shade+0, (cmb-0)*env+0 |
15360 | {0x0f390f78, ac_t0_mul_env_mul_shade}, |
15361 | // ridge racer, unimp log. Added by Gonetz |
15362 | // (t0-0)*shade+0, (cmb-0)*primlod+0 **INC**? |
15363 | {0x0f390fb8, ac_t0_mul_shade}, |
15364 | // Reflecting combined attack at kotake & koume's, zelda |
15365 | // (t1-0)*shade+0, (cmb-0)*prim+0 |
15366 | {0x0f3a0ef8, ac_t1_mul_prim_mul_shade}, |
15367 | // aerofighter's assault [Ogy] |
15368 | // (t1-0)*shade+0 |
15369 | {0x0f3a0f3a, ac_t1_mul_shade}, |
15370 | //beetle adventure racing. Added by Gonetz |
15371 | //(t1-0)*shade+0, (cmb-0)*env+0 |
15372 | {0x0f3a0f78, ac_t1_mul_env_mul_shade}, |
15373 | // building shadow, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
15374 | // (prim-0)*shade+0, (cmb-cmb)*lodf+cmb |
15375 | {0x0f3b0000, ac_prim_mul_shade}, |
15376 | //chip in Spacestation Silicon Valley intro. Added by Gonetz |
15377 | // (prim-0)*shade+0, (env-cmb)*t1+cmb |
15378 | {0x0f3b0085, ac_env_sub_primshade_mul_t1_add_primshade}, |
15379 | // N64 logo, tetrisphere. Added by Gonetz |
15380 | // (prim-0)*shade+0, (prim-0)*shade+0 |
15381 | {0x0f3b0f3b, ac_prim_mul_shade}, |
15382 | // rays, Fushigi no Dungeon - Furai no Shiren 2. Added by Gonetz |
15383 | // (shade-0)*shade+0, (cmb-0)*prim+0 |
15384 | {0x0f3c0ef8, ac_prim_mul_shade}, |
15385 | // light, dracula resurrection, castlevania 2. Added by Gonetz |
15386 | // (env-0)*shade+0 |
15387 | {0x0f3d0f3d, ac_env_mul_shade}, |
15388 | // zelda 2 [Ogy]. Added by Gonetz |
15389 | // (1-0)*shade+0 |
15390 | {0x0f3e0f3e, ac_shade}, |
15391 | // surf pokemon attack, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
15392 | // (1-t0)*env+0, (1-cmb)*shade+0 ** INC ** |
15393 | {0x0f4e0f06, ac_t0_mul_shade}, |
15394 | // GE, boxes |
15395 | // (1-shade)*env+0, (cmb-0)*shade+0 ** INC ** |
15396 | {0x0f660f38, ac_one_sub_shade_mul_env}, |
15397 | //beetle adventure racing. Added by Gonetz |
15398 | //(t0-0)*env+0, (1-t0)*prim+cmb |
15399 | //{0x0f7900ce, ac_t0_mul_env}, //this one looks better |
15400 | //{0x0f7900ce, ac_env_sub_prim_mul_t0_add_prim}, |
15401 | {0x0f7900ce, ac_one_sub_t1_add_t0_mul_env}, |
15402 | //Zelda, logo ? Added by Gonetz |
15403 | //(t0-0)*env+0, (t1-0)*primlod+0 **INC** changed to mul_env for gannon's organ disappearing [Dave2001] |
15404 | {0x0f7901ba, ac__t0_inter_t1_using_primlod__mul_env}, |
15405 | // V8-2 menu |
15406 | // (t0-0)*env+0, (0-0)*0+prim |
15407 | {0x0f7907ff, ac_prim}, |
15408 | // Skeleton guy's eyes, zelda |
15409 | // (t0-0)*env+0, (cmb-0)*prim+0 |
15410 | {0x0f790ef8, ac_t0_mul_prim_mul_env}, |
15411 | // Dust from rock spell, quest64 |
15412 | // (t0-0)*env+0, (cmb-0)*shade+0 |
15413 | {0x0f790f38, ac_t0_mul_env_mul_shade}, |
15414 | // eyes of poe, zelda |
15415 | // (t0-0)*env+0, (cmb-0)*env+0 |
15416 | {0x0f790f78, ac_t0_mul_env}, |
15417 | // Text, mario |
15418 | //z (t0-0)*env+0 |
15419 | {0x0f790f79, ac_t0_mul_env}, |
15420 | // Shadows, pokemon stadeom 2 |
15421 | // (t0-0)*env+0, (cmb-0)*primlod+0 |
15422 | {0x0f790fb8, ac_t0_mul_env_mul_primlod}, |
15423 | //gauge, PGA |
15424 | // (t1-0)*env+0, (cmb-0)*t1+0 ** INC ** |
15425 | {0x0f7a0eb8, ac_t1_mul_env}, |
15426 | //text and shadows, Rayman2. Added by Gonetz |
15427 | // (t1-0)*env+0, (cmb-0)*shade+0 |
15428 | {0x0f7a0f38, ac_t1_mul_env_mul_shade}, |
15429 | // shadows, tom and jerry. Added by Gonetz |
15430 | // (t1-0)*env+0 |
15431 | {0x0f7a0f7a, ac_t1_mul_env}, |
15432 | // Bomberman64-2 intro. Added by Gonetz |
15433 | // (prim-0)*env+0 |
15434 | {0x0f7b0f7b, ac_prim_mul_env}, |
15435 | // Text box, mario |
15436 | //z (shade-0)*env+0 |
15437 | {0x0f7c0f7c, ac_env_mul_shade}, |
15438 | // Ogre battle 64 |
15439 | // (env-0)*env+0 |
15440 | {0x0f7d0f7d, ac_env}, |
15441 | //Goldeneye, [Jeremy]. Added by Gonetz |
15442 | // (1-0)*env+0, (cmb-0)*shade+0 |
15443 | {0x0f7e0f38, ac_env_mul_shade}, |
15444 | // Status items, megaman |
15445 | // (1-0)*env+0 |
15446 | {0x0f7e0f7e, ac_env}, |
15447 | // gun fire, Beast_Wars_Transmetal [Raziel64] |
15448 | // (0-0)*env+0 |
15449 | {0x0f7f0f7f, ac_zero}, |
15450 | // Pokemon attack, Pokemon stadium (J). Added by Gonetz |
15451 | // (t1-t0)*primlod+0, (cmb-0)*env+prim ** INC ** |
15452 | {0x0f8a0778, ac__t1_sub_t0_mul_primlod__mul_env_add_prim}, |
15453 | // Shadow Ball, Pokemon Stadium 2 [gokuss4]. Added by Gonetz |
15454 | // (t1-t0)*primlod+0, (t1-cmb)*prim+0 ** INC ** |
15455 | {0x0f8a0ec2, ac_t0_mul_prim}, |
15456 | // Walls of well through lens of truth, zelda |
15457 | // (prim-t0)*primlod+0 |
15458 | {0x0f8b0f8b, ac_prim_sub_t0}, |
15459 | // N64 logo, ridge racer. Added by Gonetz |
15460 | // (1-prim)*primlod+0 **INC** |
15461 | {0x0f9e0f9e, ac_zero}, |
15462 | // Vines that covers a door in the third room of woodfall temple, zelda 2 [Ogy]. Added by Gonetz |
15463 | // (t0-0)*primlod+0, (cmb-0)*prim+0 |
15464 | {0x0fb90ef8, ac_t0_mul_primlod_mul_prim}, |
15465 | // zelda 2. Added by Gonetz |
15466 | // (t0-0)*primlod+0 |
15467 | {0x0fb90fb9, ac_t0_mul_primlod}, |
15468 | // NFL Blitz logo. Added by Gonetz |
15469 | // (t1-0)*primlod+0 |
15470 | {0x0fba0fba, ac_t1_mul_primlod}, //causes issues |
15471 | // fallen stars at star summit, Paper Mario. Added by Gonetz |
15472 | // (shade-0)*primlod+0 |
15473 | {0x0fbc0fbc, ac_primlod_mul_shade}, |
15474 | // expansion pack, Jeremy McGrath Supercross 2000. Added by Gonetz |
15475 | // (1-0)*primlod+0 |
15476 | {0x0fbe0fbe, ac_primlod}, |
15477 | // intro, Aidyn Chronicles. Added by Gonetz |
15478 | // (0-0)*primlod+0, (prim-env)*t0+prim **INC** |
15479 | {0x0fbf066b, ac_t0_mul_prim}, |
15480 | // sky, Rayman2. Added by Gonetz |
15481 | // (0-shade)*0+0 |
15482 | {0x0fe70fe7, ac_zero}, |
15483 | // flame, PokemonStadium1 [Raziel64] |
15484 | // (t0-0)*0+0 |
15485 | {0x0ff90ff9, ac_zero}, |
15486 | //BAR |
15487 | // (0-0)*0+0, (0-0)*0+TEXEL1 |
15488 | {0x0fff05ff, ac_t0}, |
15489 | // Screen clear, banjo kazooie |
15490 | // (0-0)*0+0 |
15491 | {0x0fff0fff, ac_zero}, |
15492 | // { #ACEND } |
15493 | }; |
15494 | |
15495 | // CountCombine - count the # of entries in the combine lists |
15496 | void CountCombine () |
15497 | { |
15498 | int size = sizeof(color_cmb_list) / sizeof(COMBINER); |
15499 | int i=0, index=0, a, b; |
15500 | do { |
15501 | a = color_cmb_list[index].key >> 24; |
15502 | for (; i<=a; i++) |
15503 | cc_lookup[i] = index; |
15504 | |
15505 | while (index < size) |
15506 | { |
15507 | b = color_cmb_list[index].key >> 24; |
15508 | if (b != a) break; |
15509 | index ++; |
15510 | } |
15511 | } while (index < size); |
15512 | for (; i<257; i++) cc_lookup[i] = index; |
15513 | |
15514 | size = sizeof(alpha_cmb_list) / sizeof(COMBINER); |
15515 | i=0, index=0; |
15516 | do { |
15517 | a = (alpha_cmb_list[index].key >> 20) & 0xFF; |
15518 | for (; i<=a; i++) |
15519 | ac_lookup[i] = index; |
15520 | |
15521 | while (index < size) |
15522 | { |
15523 | b = (alpha_cmb_list[index].key >> 20) & 0xFF; |
15524 | if (b != a) break; |
15525 | index ++; |
15526 | } |
15527 | } while (index < size); |
15528 | for (; i<257; i++) ac_lookup[i] = index; |
15529 | |
15530 | //color_cmb_list_count = sizeof(color_cmb_list) >> 3; // #bytes/4/2 |
15531 | //alpha_cmb_list_count = sizeof(alpha_cmb_list) >> 3; |
15532 | } |
15533 | |
15534 | //**************************************************************** |
15535 | // Main Combine |
15536 | //**************************************************************** |
15537 | |
15538 | void Combine () |
15539 | { |
15540 | FRDP (" | |- color combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", |
15541 | ((rdp.cycle1 & 0xFFFF) << 16) | (rdp.cycle2 & 0xFFFF), |
15542 | Mode0[rdp.cycle1&0xF], Mode1[(rdp.cycle1>>4)&0xF], Mode2[(rdp.cycle1>>8)&0x1F], Mode3[(rdp.cycle1>>13)&7], |
15543 | Mode0[rdp.cycle2&0xF], Mode1[(rdp.cycle2>>4)&0xF], Mode2[(rdp.cycle2>>8)&0x1F], Mode3[(rdp.cycle2>>13)&7]); |
15544 | FRDP (" | |- alpha combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", |
15545 | (rdp.cycle1 & 0x0FFF0000) | ((rdp.cycle2 & 0x0FFF0000) >> 16), |
15546 | Alpha0[(rdp.cycle1>>16)&7], Alpha1[(rdp.cycle1>>19)&7], Alpha2[(rdp.cycle1>>22)&7], Alpha3[(rdp.cycle1>>25)&7], |
15547 | Alpha0[(rdp.cycle2>>16)&7], Alpha1[(rdp.cycle2>>19)&7], Alpha2[(rdp.cycle2>>22)&7], Alpha3[(rdp.cycle2>>25)&7]); |
15548 | if (!rdp.LOD_en || rdp.cur_tile == rdp.mipmap_level) |
15549 | lod_frac = rdp.prim_lodfrac; |
15550 | else if (settings.lodmode == 0) |
15551 | lod_frac = 0; |
15552 | else |
15553 | lod_frac = 10; |
15554 | |
15555 | rdp.noise = RDP::noise_none; |
15556 | |
15557 | wxUint32 found = TRUE; |
15558 | |
15559 | rdp.col[0] = rdp.col[1] = rdp.col[2] = rdp.col[3] = |
15560 | rdp.coladd[0] = rdp.coladd[1] = rdp.coladd[2] = rdp.coladd[3] = 1.0f; |
15561 | rdp.cmb_flags = rdp.cmb_flags_2 = 0; |
15562 | |
15563 | rdp.uncombined = 0; |
15564 | |
15565 | cmb.tex = 0; |
15566 | cmb.tmu0_func = cmb.tmu1_func = cmb.tmu0_a_func = cmb.tmu1_a_func = GR_COMBINE_FUNCTION_ZERO; |
15567 | cmb.tmu0_fac = cmb.tmu1_fac = cmb.tmu0_a_fac = cmb.tmu1_a_fac = GR_COMBINE_FACTOR_NONE; |
15568 | cmb.tmu0_invert = cmb.tmu0_a_invert = cmb.tmu1_invert = cmb.tmu1_a_invert = FXFALSE; |
15569 | |
15570 | cmb.dc0_detailmax = cmb.dc1_detailmax = 0; |
15571 | |
15572 | cmb.mod_0 = cmb.mod_1 = 0; // remove all modifications |
15573 | cmb.modcolor_0 = cmb.modcolor1_0 = cmb.modcolor2_0 = cmb.modcolor_1 = cmb.modcolor1_1 = cmb.modcolor2_1 |
15574 | = cmb.modfactor_0 = cmb.modfactor_1 = 0; |
15575 | |
15576 | cmb.ccolor = cmb.tex_ccolor = 0; |
15577 | if (cmb.cmb_ext_use || cmb.tex_cmb_ext_use) |
15578 | { |
15579 | //have to draw something to allow use of standard combine functions |
15580 | if (fullscreen) |
15581 | { |
15582 | VERTEX v; |
15583 | memset(&v,0,sizeof(v)); |
15584 | grDrawPoint(&v); |
15585 | } |
15586 | cmb.cmb_ext_use = 0; |
15587 | cmb.tex_cmb_ext_use = 0; |
15588 | } |
15589 | |
15590 | wxUint32 cmb_mode_c = (rdp.cycle1 << 16) | (rdp.cycle2 & 0xFFFF); |
15591 | wxUint32 cmb_mode_a = (rdp.cycle1 & 0x0FFF0000) | ((rdp.cycle2 >> 16) & 0x00000FFF); |
15592 | |
15593 | cmb.abf1 = GR_BLEND_SRC_ALPHA; |
15594 | cmb.abf2 = GR_BLEND_ONE_MINUS_SRC_ALPHA; |
15595 | |
15596 | #ifdef FASTSEARCH |
15597 | // Fast, ordered search |
15598 | int current=0x7FFFFFFF, last; |
15599 | wxUint32 actual_combine, current_combine, color_combine, alpha_combine; |
15600 | int left, right; |
15601 | |
15602 | actual_combine = current_combine = cmb_mode_c; |
15603 | color_combine = actual_combine; |
15604 | if ((rdp.cycle2 & 0xFFFF) == 0x1FFF) |
15605 | actual_combine = (rdp.cycle1 << 16) | (rdp.cycle1 & 0xFFFF); |
15606 | |
15607 | left = cc_lookup[actual_combine>>24]; |
15608 | right = cc_lookup[(actual_combine>>24)+1]; |
15609 | |
15610 | while (1) |
15611 | { |
15612 | last = current; |
15613 | current = left + ((right-left) >> 1); |
15614 | if (current == last) |
15615 | break; // can't be found! |
15616 | |
15617 | current_combine = color_cmb_list[current].key; |
15618 | if (current_combine < actual_combine) |
15619 | left = current; |
15620 | else if (current_combine > actual_combine) |
15621 | right = current; |
15622 | else |
15623 | break; // found it! |
15624 | } |
15625 | |
15626 | // Check if we didn't find it |
15627 | if (actual_combine != current_combine) |
15628 | { |
15629 | rdp.uncombined |= 1; |
15630 | #ifdef UNIMP_LOG |
15631 | if (settings.log_unk) |
15632 | { |
15633 | sprintf (out_buf, "COLOR combine not found: %08x, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", |
15634 | actual_combine, |
15635 | Mode0[rdp.cycle1&0xF], Mode1[(rdp.cycle1>>4)&0xF], Mode2[(rdp.cycle1>>8)&0x1F], Mode3[(rdp.cycle1>>13)&7], |
15636 | Mode0[rdp.cycle2&0xF], Mode1[(rdp.cycle2>>4)&0xF], Mode2[(rdp.cycle2>>8)&0x1F], Mode3[(rdp.cycle2>>13)&7]); |
15637 | UNIMPMODE(); |
15638 | } |
15639 | #endif |
15640 | found = FALSE; |
15641 | //tex |= 3; |
15642 | |
15643 | // use t0 as default |
15644 | cc_t0 (); |
15645 | } |
15646 | else |
15647 | color_cmb_list[current].func(); |
15648 | |
15649 | LRDP(" | |- Color done\n"); |
15650 | |
15651 | // Now again for alpha |
15652 | current = 0x7FFFFFFF; |
15653 | actual_combine = cmb_mode_a; |
15654 | alpha_combine = actual_combine; |
15655 | if ((rdp.cycle2 & 0x0FFF0000) == 0x01FF0000) |
15656 | actual_combine = (rdp.cycle1 & 0x0FFF0000) | ((rdp.cycle1 >> 16) & 0x00000FFF); |
15657 | if ((rdp.cycle1 & 0x0FFF0000) == 0x0FFF0000) |
15658 | actual_combine = (rdp.cycle2 & 0x0FFF0000) | ((rdp.cycle2 >> 16) & 0x00000FFF); |
15659 | |
15660 | left = ac_lookup[(actual_combine>>20)&0xFF]; |
15661 | right = ac_lookup[((actual_combine>>20)&0xFF)+1]; |
15662 | |
15663 | while (1) |
15664 | { |
15665 | last = current; |
15666 | current = left + ((right-left) >> 1); |
15667 | if (current == last) |
15668 | break; // can't be found! |
15669 | |
15670 | current_combine = alpha_cmb_list[current].key; |
15671 | if (current_combine < actual_combine) |
15672 | left = current; |
15673 | else if (current_combine > actual_combine) |
15674 | right = current; |
15675 | else |
15676 | break; // found it! |
15677 | } |
15678 | |
15679 | // Check if we didn't find it |
15680 | if (actual_combine != current_combine || !found) |
15681 | { |
15682 | if (actual_combine != current_combine) |
15683 | { |
15684 | rdp.uncombined |= 2; |
15685 | #ifdef UNIMP_LOG |
15686 | if (settings.log_unk) |
15687 | { |
15688 | sprintf (out_buf, "ALPHA combine not found: %08x, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", |
15689 | actual_combine, |
15690 | Alpha0[(rdp.cycle1>>16)&7], Alpha1[(rdp.cycle1>>19)&7], Alpha2[(rdp.cycle1>>22)&7], Alpha3[(rdp.cycle1>>25)&7], |
15691 | Alpha0[(rdp.cycle2>>16)&7], Alpha1[(rdp.cycle2>>19)&7], Alpha2[(rdp.cycle2>>22)&7], Alpha3[(rdp.cycle2>>25)&7]); |
15692 | UNIMPMODE(); |
15693 | } |
15694 | #endif |
15695 | } |
15696 | if (settings.unk_as_red) |
15697 | { |
15698 | BrightRed (); |
15699 | } |
15700 | else |
15701 | { |
15702 | // use full alpha as default |
15703 | ac_t0 (); |
15704 | } |
15705 | //tex |= 3; |
15706 | } |
15707 | else |
15708 | alpha_cmb_list[current].func(); |
15709 | |
15710 | |
15711 | if (color_combine == 0x69351fff) //text, PD, need to change texture alpha |
15712 | { |
15713 | A_USE_T1(); |
15714 | } |
15715 | else if ((color_combine == 0x3fff1fff) && (alpha_combine == 0x03ff03ff) && (rdp.last_tile > rdp.cur_tile))//Dr. Mario |
15716 | { |
15717 | cc_t0(); |
15718 | ac_t1(); |
15719 | } |
15720 | else if (color_combine == 0x613522f0 && (settings.hacks&hack_PMario)) //Paper Mario fortune teller spheres |
15721 | { |
15722 | ac_t0(); |
15723 | } |
15724 | |
15725 | LRDP(" | |- Alpha done\n"); |
15726 | #endif // FASTSEARCH |
15727 | |
15728 | CombineBlender (); |
15729 | //* |
15730 | // Update textures? |
15731 | // if (tex == 2 && rdp.texrecting && (cmb.tmu1_func != GR_COMBINE_FUNCTION_ZERO) && (rdp.last_tile_size == 0)) |
15732 | if (cmb.tex == 2 && rdp.texrecting && (rdp.cur_tile == rdp.last_tile_size)) |
15733 | { |
15734 | cmb.tex = 0; |
15735 | USE_T0(); |
15736 | A_USE_T0(); |
15737 | } |
15738 | //*/ |
15739 | rdp.tex = cmb.tex; |
15740 | |
15741 | if (fullscreen) |
15742 | { |
15743 | TBUFF_COLOR_IMAGE * aTBuff[2] = {0, 0}; |
15744 | if (rdp.aTBuffTex[0]) |
15745 | aTBuff[rdp.aTBuffTex[0]->tile] = rdp.aTBuffTex[0]; |
15746 | if (rdp.aTBuffTex[1]) |
15747 | aTBuff[rdp.aTBuffTex[1]->tile] = rdp.aTBuffTex[1]; |
15748 | if (cmb.tex && (aTBuff[0] || aTBuff[1])) |
15749 | { |
15750 | if (aTBuff[0] && (settings.frame_buffer&fb_read_alpha)) |
15751 | { |
15752 | if ((settings.hacks&hack_PMario) && aTBuff[0]->width == rdp.ci_width) |
15753 | ; |
15754 | else |
15755 | { |
15756 | grChromakeyValue(0); |
15757 | grChromakeyMode(GR_CHROMAKEY_ENABLE); |
15758 | } |
15759 | } |
15760 | else |
15761 | grChromakeyMode(GR_CHROMAKEY_DISABLE); |
15762 | |
15763 | if (aTBuff[0] && aTBuff[0]->info.format == GR_TEXFMT_ALPHA_INTENSITY_88) |
15764 | { |
15765 | if (cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_COLOR) |
15766 | { |
15767 | if (cmb.t0c_ext_a == GR_CMBX_LOCAL_TEXTURE_RGB) |
15768 | cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15769 | if (cmb.t0c_ext_b == GR_CMBX_LOCAL_TEXTURE_RGB) |
15770 | cmb.t0c_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15771 | if (cmb.t0c_ext_c == GR_CMBX_LOCAL_TEXTURE_RGB) |
15772 | cmb.t0c_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15773 | } |
15774 | else |
15775 | cmb.tmu0_func = GR_COMBINE_FUNCTION_LOCAL_ALPHA; |
15776 | } |
15777 | |
15778 | if (aTBuff[1] && aTBuff[1]->info.format == GR_TEXFMT_ALPHA_INTENSITY_88) |
15779 | { |
15780 | if (cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_COLOR) |
15781 | { |
15782 | if (cmb.t1c_ext_a == GR_CMBX_LOCAL_TEXTURE_RGB) |
15783 | cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15784 | if (cmb.t1c_ext_b == GR_CMBX_LOCAL_TEXTURE_RGB) |
15785 | cmb.t1c_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15786 | if (cmb.t1c_ext_c == GR_CMBX_LOCAL_TEXTURE_RGB) |
15787 | cmb.t1c_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
15788 | } |
15789 | else |
15790 | cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL_ALPHA; |
15791 | } |
15792 | } |
15793 | else |
15794 | grChromakeyMode(GR_CHROMAKEY_DISABLE); |
15795 | } |
15796 | cmb.shade_mod_hash = (rdp.cmb_flags + rdp.cmb_flags_2) * (rdp.prim_color + rdp.env_color + rdp.K5); |
15797 | |
15798 | LRDP(" | + Combine end\n"); |
15799 | } |
15800 | |
15801 | void CombineBlender () |
15802 | { |
15803 | wxUint32 blendmode = rdp.othermode_l >> 16; |
15804 | // Check force-blending |
15805 | if ((rdp.othermode_l & 0x4000) && (rdp.cycle_mode < 2)) |
15806 | { |
15807 | switch (blendmode) |
15808 | { |
15809 | // Mace objects |
15810 | case 0x0382: |
15811 | case 0x0091: |
15812 | // 1080 sky |
15813 | case 0x0c08: |
15814 | // Mario kart player select |
15815 | // clr_in * 0 + clr_in * 1 |
15816 | // - or just clr_in, no matter what alpha |
15817 | case 0x0f0a: |
15818 | //DK64 blue prints |
15819 | case 0x0302: |
15820 | //Sin and Punishment |
15821 | case 0xcb02: |
15822 | // Battlezone |
15823 | // clr_in * a + clr_in * (1-a) |
15824 | case 0xc800: |
15825 | case 0x00c0: |
15826 | //ISS64 |
15827 | case 0xc302: |
15828 | A_BLEND (GR_BLEND_ONE, GR_BLEND_ZERO); |
15829 | break; |
15830 | |
15831 | //Space Invaders |
15832 | case 0x0448: |
15833 | case 0x055a: |
15834 | A_BLEND (GR_BLEND_ONE, GR_BLEND_ONE); |
15835 | break; |
15836 | |
15837 | // LOT in Zelda: MM |
15838 | case 0xaf50: |
15839 | case 0x0f5a: //clr_in * 0 + clr_mem * 1 |
15840 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE); |
15841 | break; |
15842 | |
15843 | case 0x5f50: //clr_mem * 0 + clr_mem * (1-a) |
15844 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15845 | break; |
15846 | |
15847 | /* |
15848 | case 0xc410: // Perfect Dark Mauler |
15849 | { |
15850 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
15851 | MOD_0_COL (rdp.fog_color & 0xFFFFFF00); |
15852 | MOD_0_FAC (rdp.fog_color & 0xFF); |
15853 | INTERSHADE_2 (rdp.fog_color & 0xFFFFFF00, rdp.fog_color & 0xFF); |
15854 | |
15855 | float percent = (rdp.fog_color & 0xFF) / 255.0f; |
15856 | cmb.ccolor = |
15857 | ((wxUint32)(((cmb.ccolor >> 24) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>24) & 0xFF) * percent) << 24) | |
15858 | ((wxUint32)(((cmb.ccolor >> 16) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>16) & 0xFF) * percent) << 16) | |
15859 | ((wxUint32)(((cmb.ccolor >> 8) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>8) & 0xFF) * percent) << 8) | |
15860 | (cmb.ccolor & 0xFF); |
15861 | |
15862 | rdp.col[0] = rdp.col[0] * (1.0f-percent) + ((rdp.fog_color>>24) & 0xFF) / 255.0f * percent; |
15863 | rdp.col[1] = rdp.col[1] * (1.0f-percent) + ((rdp.fog_color>>16) & 0xFF) / 255.0f * percent; |
15864 | rdp.col[2] = rdp.col[2] * (1.0f-percent) + ((rdp.fog_color>>8) & 0xFF) / 255.0f * percent; |
15865 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15866 | } |
15867 | break; |
15868 | */ |
15869 | case 0xf550: //clr_fog * a_fog + clr_mem * (1-a) |
15870 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15871 | { |
15872 | wxUint32 prim = rdp.prim_color; |
15873 | rdp.prim_color = rdp.fog_color; |
15874 | cc_prim(); |
15875 | ac_prim(); |
15876 | rdp.prim_color = prim; |
15877 | } |
15878 | break; |
15879 | |
15880 | case 0x0150: //spiderman |
15881 | case 0x0d18: //clr_in * a_fog + clr_mem * (1-a) |
15882 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15883 | if (rdp.cycle_mode == 1 && rdp.cycle2 != 0x01ff1fff) |
15884 | { |
15885 | wxUint32 prim = rdp.prim_color; |
15886 | rdp.prim_color = rdp.fog_color; |
15887 | ac_prim(); |
15888 | rdp.prim_color = prim; |
15889 | } |
15890 | break; |
15891 | |
15892 | case 0xc912: //40 winks, clr_in * a_fog + clr_mem * 1 |
15893 | { |
15894 | wxUint32 prim = rdp.prim_color; |
15895 | rdp.prim_color = rdp.fog_color; |
15896 | ac_prim(); |
15897 | rdp.prim_color = prim; |
15898 | } |
15899 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE); |
15900 | break; |
15901 | |
15902 | default: |
15903 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15904 | } |
15905 | } |
15906 | /* |
15907 | else if (blendmode == 0xc411) // Super Smash Bros, faked fog for flashing characters |
15908 | { |
15909 | MOD_0 (TMOD_TEX_INTER_COLOR_USING_FACTOR); |
15910 | MOD_0_COL (rdp.fog_color & 0xFFFFFF00); |
15911 | MOD_0_FAC (rdp.fog_color & 0xFF); |
15912 | INTERSHADE_2 (rdp.fog_color & 0xFFFFFF00, rdp.fog_color & 0xFF); |
15913 | |
15914 | float percent = (rdp.fog_color & 0xFF) / 255.0f; |
15915 | cmb.ccolor = |
15916 | ((wxUint32)(((cmb.ccolor >> 24) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>24) & 0xFF) * percent) << 24) | |
15917 | ((wxUint32)(((cmb.ccolor >> 16) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>16) & 0xFF) * percent) << 16) | |
15918 | ((wxUint32)(((cmb.ccolor >> 8) & 0xFF) * (1.0f-percent) + ((rdp.fog_color>>8) & 0xFF) * percent) << 8) | |
15919 | (cmb.ccolor & 0xFF); |
15920 | |
15921 | rdp.col[0] = rdp.col[0] * (1.0f-percent) + ((rdp.fog_color>>24) & 0xFF) / 255.0f * percent; |
15922 | rdp.col[1] = rdp.col[1] * (1.0f-percent) + ((rdp.fog_color>>16) & 0xFF) / 255.0f * percent; |
15923 | rdp.col[2] = rdp.col[2] * (1.0f-percent) + ((rdp.fog_color>>8) & 0xFF) / 255.0f * percent; |
15924 | A_BLEND (GR_BLEND_ONE, GR_BLEND_ZERO); |
15925 | } |
15926 | */ |
15927 | else if (blendmode == 0x0040) // Mia Soccer Lights |
15928 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15929 | else if ((settings.hacks&hack_Pilotwings) && (rdp.othermode_l & 0x80)) //CLR_ON_CVG without FORCE_BL |
15930 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE); |
15931 | else |
15932 | A_BLEND (GR_BLEND_ONE, GR_BLEND_ZERO); |
15933 | |
15934 | // ALPHA_CVG_SEL means full alpha |
15935 | // The reason it wasn't working before was because I wasn't handling rdp:setothermode |
15936 | // if (rdp.othermode_l & 0x2000) |
15937 | if ((rdp.othermode_l & 0x2000) && ((rdp.othermode_l & 0x7000) != 0x7000)) |
15938 | { |
15939 | if ((settings.hacks&hack_PMario) && (blendmode == 0x5055)) |
15940 | { |
15941 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE); |
15942 | } |
15943 | else if (blendmode == 0x4055) // Mario Golf |
15944 | { |
15945 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE); |
15946 | } |
15947 | else |
15948 | { |
15949 | A_BLEND (GR_BLEND_ONE, GR_BLEND_ZERO); |
15950 | } |
15951 | } |
15952 | |
15953 | //hack |
15954 | //* |
15955 | if (settings.hacks&hack_ISS64) |
15956 | { |
15957 | if (rdp.othermode_l == 0xff5a6379) |
15958 | { |
15959 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_SRC_ALPHA); |
15960 | } |
15961 | else if (rdp.othermode_l == 0x00504dd9) //players shadows. CVG_DST_WRAP |
15962 | { |
15963 | A_BLEND (GR_BLEND_ZERO, GR_BLEND_ONE); |
15964 | } |
15965 | } |
15966 | else if (settings.hacks&hack_TGR) |
15967 | { |
15968 | if (rdp.othermode_l == 0x0f0a0235) |
15969 | { |
15970 | A_BLEND (GR_BLEND_SRC_ALPHA, GR_BLEND_ONE_MINUS_SRC_ALPHA); |
15971 | } |
15972 | } |
15973 | //*/ |
15974 | } |
15975 | |
15976 | void InitCombine () |
15977 | { |
15978 | LOG ("InitCombine() "); |
15979 | memset(&cmb, 0, sizeof(cmb)); |
15980 | const char *extensions = grGetString (GR_EXTENSION); |
15981 | if (const char * extstr = strstr(extensions, "COMBINE")) { |
15982 | if (!strncmp(extstr, "COMBINE", 7)) { |
15983 | LOG ("extensions "); |
15984 | char strColorCombineExt[] = "grColorCombineExt"; |
15985 | cmb.grColorCombineExt = (GRCOLORCOMBINEEXT) grGetProcAddress(strColorCombineExt); |
15986 | char strAlphaCombineExt[] = "grAlphaCombineExt"; |
15987 | cmb.grAlphaCombineExt = (GRCOLORCOMBINEEXT) grGetProcAddress(strAlphaCombineExt); |
15988 | char strTexColorCombineExt[] = "grTexColorCombineExt"; |
15989 | cmb.grTexColorCombineExt = (GRTEXCOLORCOMBINEEXT) grGetProcAddress(strTexColorCombineExt); |
15990 | char strTexAlphaCombineExt[] = "grTexAlphaCombineExt"; |
15991 | cmb.grTexAlphaCombineExt = (GRTEXCOLORCOMBINEEXT) grGetProcAddress(strTexAlphaCombineExt); |
15992 | char strConstantColorValueExt[] = "grConstantColorValueExt"; |
15993 | cmb.grConstantColorValueExt = (GRCONSTANTCOLORVALUEEXT) grGetProcAddress(strConstantColorValueExt); |
15994 | if (cmb.grColorCombineExt && cmb.grAlphaCombineExt && |
15995 | cmb.grTexColorCombineExt && cmb.grTexAlphaCombineExt) |
15996 | { |
15997 | cmb.combine_ext = TRUE; |
15998 | LOG ("initialized."); |
15999 | } |
16000 | else |
16001 | { |
16002 | cmb.combine_ext = FALSE; |
16003 | } |
16004 | } |
16005 | } |
16006 | cmb.dc0_lodbias = cmb.dc1_lodbias = 31; |
16007 | cmb.dc0_detailscale = cmb.dc1_detailscale = 7; |
16008 | cmb.lodbias0 = cmb.lodbias1 = 1.0f; |
16009 | LOG ("\n"); |
16010 | } |
16011 | |
16012 | void ColorCombinerToExtension () |
16013 | { |
16014 | wxUint32 ext_local, ext_local_a, ext_other, ext_other_a; |
16015 | switch (cmb.c_loc) |
16016 | { |
16017 | case GR_COMBINE_LOCAL_ITERATED: |
16018 | ext_local = GR_CMBX_ITRGB; |
16019 | ext_local_a = GR_CMBX_ITALPHA; |
16020 | break; |
16021 | case GR_COMBINE_LOCAL_CONSTANT: |
16022 | ext_local = GR_CMBX_CONSTANT_COLOR; |
16023 | ext_local_a = GR_CMBX_CONSTANT_ALPHA; |
16024 | break; |
16025 | default: |
16026 | ext_local = GR_CMBX_ZERO; |
16027 | ext_local_a = GR_CMBX_ZERO; |
16028 | }; |
16029 | switch (cmb.c_oth) |
16030 | { |
16031 | case GR_COMBINE_OTHER_ITERATED: |
16032 | ext_other = GR_CMBX_ITRGB; |
16033 | ext_other_a = GR_CMBX_ITALPHA; |
16034 | break; |
16035 | case GR_COMBINE_OTHER_TEXTURE: |
16036 | ext_other = GR_CMBX_TEXTURE_RGB; |
16037 | ext_other_a = GR_CMBX_TEXTURE_ALPHA; |
16038 | break; |
16039 | case GR_COMBINE_OTHER_CONSTANT: |
16040 | ext_other = GR_CMBX_CONSTANT_COLOR; |
16041 | ext_other_a = GR_CMBX_CONSTANT_ALPHA; |
16042 | break; |
16043 | default: |
16044 | ext_other = GR_CMBX_ZERO; |
16045 | ext_other_a = GR_CMBX_ZERO; |
16046 | }; |
16047 | switch (cmb.c_fac) |
16048 | { |
16049 | case GR_COMBINE_FACTOR_ZERO: |
16050 | cmb.c_ext_c = GR_CMBX_ZERO; |
16051 | cmb.c_ext_c_invert = 0; |
16052 | break; |
16053 | case GR_COMBINE_FACTOR_ONE: |
16054 | cmb.c_ext_c = GR_CMBX_ZERO; |
16055 | cmb.c_ext_c_invert = 1; |
16056 | break; |
16057 | case GR_COMBINE_FACTOR_LOCAL: |
16058 | cmb.c_ext_c = ext_local; |
16059 | cmb.c_ext_c_invert = 0; |
16060 | break; |
16061 | case GR_COMBINE_FACTOR_LOCAL_ALPHA: |
16062 | cmb.c_ext_c = ext_local_a; |
16063 | cmb.c_ext_c_invert = 0; |
16064 | break; |
16065 | case GR_COMBINE_FACTOR_OTHER_ALPHA: |
16066 | cmb.c_ext_c = ext_other_a; |
16067 | cmb.c_ext_c_invert = 0; |
16068 | break; |
16069 | case GR_COMBINE_FACTOR_TEXTURE_RGB: |
16070 | cmb.c_ext_c = GR_CMBX_TEXTURE_RGB; |
16071 | cmb.c_ext_c_invert = 0; |
16072 | break; |
16073 | case GR_COMBINE_FACTOR_TEXTURE_ALPHA: |
16074 | cmb.c_ext_c = GR_CMBX_TEXTURE_ALPHA; |
16075 | cmb.c_ext_c_invert = 0; |
16076 | break; |
16077 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL: |
16078 | cmb.c_ext_c = ext_local; |
16079 | cmb.c_ext_c_invert = 1; |
16080 | break; |
16081 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA: |
16082 | cmb.c_ext_c = ext_local_a; |
16083 | cmb.c_ext_c_invert = 1; |
16084 | break; |
16085 | case GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA: |
16086 | cmb.c_ext_c = ext_other_a; |
16087 | cmb.c_ext_c_invert = 1; |
16088 | break; |
16089 | case GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA: |
16090 | cmb.c_ext_c = GR_CMBX_TEXTURE_ALPHA; |
16091 | cmb.c_ext_c_invert = 1; |
16092 | break; |
16093 | default: |
16094 | cmb.c_ext_c = GR_CMBX_ZERO; |
16095 | cmb.c_ext_c_invert = 0; |
16096 | } |
16097 | |
16098 | switch (cmb.c_fnc) |
16099 | { |
16100 | case GR_COMBINE_FUNCTION_ZERO: |
16101 | cmb.c_ext_a = GR_CMBX_ZERO; |
16102 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16103 | cmb.c_ext_b = GR_CMBX_ZERO; |
16104 | cmb.c_ext_b_mode = GR_FUNC_MODE_X; |
16105 | cmb.c_ext_c = GR_CMBX_ZERO; |
16106 | cmb.c_ext_c_invert = 0; |
16107 | cmb.c_ext_d = GR_CMBX_ZERO; |
16108 | cmb.c_ext_d_invert = 0; |
16109 | break; |
16110 | case GR_COMBINE_FUNCTION_LOCAL: |
16111 | cmb.c_ext_a = ext_local; |
16112 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16113 | cmb.c_ext_b = GR_CMBX_ZERO; |
16114 | cmb.c_ext_b_mode = GR_FUNC_MODE_X; |
16115 | cmb.c_ext_c = GR_CMBX_ZERO; |
16116 | cmb.c_ext_c_invert = 1; |
16117 | cmb.c_ext_d = GR_CMBX_ZERO; |
16118 | cmb.c_ext_d_invert = 0; |
16119 | break; |
16120 | case GR_COMBINE_FUNCTION_LOCAL_ALPHA: |
16121 | cmb.c_ext_a = ext_local_a; |
16122 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16123 | cmb.c_ext_b = GR_CMBX_ZERO; |
16124 | cmb.c_ext_b_mode = GR_FUNC_MODE_X; |
16125 | cmb.c_ext_c = GR_CMBX_ZERO; |
16126 | cmb.c_ext_c_invert = 1; |
16127 | cmb.c_ext_d = GR_CMBX_ZERO; |
16128 | cmb.c_ext_d_invert = 0; |
16129 | break; |
16130 | case GR_COMBINE_FUNCTION_SCALE_OTHER: |
16131 | cmb.c_ext_a = ext_other; |
16132 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16133 | cmb.c_ext_b = GR_CMBX_ZERO; |
16134 | cmb.c_ext_b_mode = GR_FUNC_MODE_ZERO; |
16135 | cmb.c_ext_d = GR_CMBX_ZERO; |
16136 | cmb.c_ext_d_invert = 0; |
16137 | break; |
16138 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL: |
16139 | cmb.c_ext_a = ext_other; |
16140 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16141 | cmb.c_ext_b = ext_local; |
16142 | cmb.c_ext_b_mode = GR_FUNC_MODE_ZERO; |
16143 | cmb.c_ext_d = GR_CMBX_B; |
16144 | cmb.c_ext_d_invert = 0; |
16145 | break; |
16146 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA: |
16147 | cmb.c_ext_a = ext_other; |
16148 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16149 | cmb.c_ext_b = ext_local_a; |
16150 | cmb.c_ext_b_mode = GR_FUNC_MODE_ZERO; |
16151 | cmb.c_ext_d = GR_CMBX_B; |
16152 | cmb.c_ext_d_invert = 0; |
16153 | break; |
16154 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL: |
16155 | cmb.c_ext_a = ext_other; |
16156 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16157 | cmb.c_ext_b = ext_local; |
16158 | cmb.c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16159 | cmb.c_ext_d = GR_CMBX_ZERO; |
16160 | cmb.c_ext_d_invert = 0; |
16161 | break; |
16162 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL: |
16163 | cmb.c_ext_a = ext_other; |
16164 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16165 | cmb.c_ext_b = ext_local; |
16166 | cmb.c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16167 | cmb.c_ext_d = GR_CMBX_B; |
16168 | cmb.c_ext_d_invert = 0; |
16169 | break; |
16170 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16171 | cmb.c_ext_a = ext_other; |
16172 | cmb.c_ext_a_mode = GR_FUNC_MODE_X; |
16173 | cmb.c_ext_b = ext_local; |
16174 | cmb.c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16175 | cmb.c_ext_d = GR_CMBX_ALOCAL; |
16176 | cmb.c_ext_d_invert = 0; |
16177 | break; |
16178 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL: |
16179 | cmb.c_ext_a = GR_CMBX_ZERO; |
16180 | cmb.c_ext_a_mode = GR_FUNC_MODE_ZERO; |
16181 | cmb.c_ext_b = ext_local; |
16182 | cmb.c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16183 | cmb.c_ext_d = GR_CMBX_B; |
16184 | cmb.c_ext_d_invert = 0; |
16185 | break; |
16186 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16187 | default: |
16188 | cmb.c_ext_a = GR_CMBX_ZERO; |
16189 | cmb.c_ext_a_mode = GR_FUNC_MODE_ZERO; |
16190 | cmb.c_ext_b = ext_local; |
16191 | cmb.c_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16192 | cmb.c_ext_d = GR_CMBX_ALOCAL; |
16193 | cmb.c_ext_d_invert = 0; |
16194 | break; |
16195 | } |
16196 | } |
16197 | |
16198 | void AlphaCombinerToExtension () |
16199 | { |
16200 | wxUint32 ext_local, ext_other; |
16201 | switch (cmb.a_loc) |
16202 | { |
16203 | case GR_COMBINE_LOCAL_ITERATED: |
16204 | ext_local = GR_CMBX_ITALPHA; |
16205 | break; |
16206 | case GR_COMBINE_LOCAL_CONSTANT: |
16207 | ext_local = GR_CMBX_CONSTANT_ALPHA; |
16208 | break; |
16209 | default: |
16210 | ext_local = GR_CMBX_ZERO; |
16211 | }; |
16212 | switch (cmb.a_oth) |
16213 | { |
16214 | case GR_COMBINE_OTHER_ITERATED: |
16215 | ext_other = GR_CMBX_ITALPHA; |
16216 | break; |
16217 | case GR_COMBINE_OTHER_TEXTURE: |
16218 | ext_other = GR_CMBX_TEXTURE_ALPHA; |
16219 | break; |
16220 | case GR_COMBINE_OTHER_CONSTANT: |
16221 | ext_other = GR_CMBX_CONSTANT_ALPHA; |
16222 | break; |
16223 | default: |
16224 | ext_other = GR_CMBX_ZERO; |
16225 | }; |
16226 | switch (cmb.a_fac) |
16227 | { |
16228 | case GR_COMBINE_FACTOR_ZERO: |
16229 | cmb.a_ext_c = GR_CMBX_ZERO; |
16230 | cmb.a_ext_c_invert = 0; |
16231 | break; |
16232 | case GR_COMBINE_FACTOR_ONE: |
16233 | cmb.a_ext_c = GR_CMBX_ZERO; |
16234 | cmb.a_ext_c_invert = 1; |
16235 | break; |
16236 | case GR_COMBINE_FACTOR_LOCAL: |
16237 | case GR_COMBINE_FACTOR_LOCAL_ALPHA: |
16238 | cmb.a_ext_c = ext_local; |
16239 | cmb.a_ext_c_invert = 0; |
16240 | break; |
16241 | case GR_COMBINE_FACTOR_OTHER_ALPHA: |
16242 | cmb.a_ext_c = ext_other; |
16243 | cmb.a_ext_c_invert = 0; |
16244 | break; |
16245 | case GR_COMBINE_FACTOR_TEXTURE_ALPHA: |
16246 | cmb.a_ext_c = GR_CMBX_TEXTURE_ALPHA; |
16247 | cmb.a_ext_c_invert = 0; |
16248 | break; |
16249 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL: |
16250 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA: |
16251 | cmb.a_ext_c = ext_local; |
16252 | cmb.a_ext_c_invert = 1; |
16253 | break; |
16254 | case GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA: |
16255 | cmb.a_ext_c = ext_other; |
16256 | cmb.a_ext_c_invert = 1; |
16257 | break; |
16258 | case GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA: |
16259 | cmb.a_ext_c = GR_CMBX_TEXTURE_ALPHA; |
16260 | cmb.a_ext_c_invert = 1; |
16261 | break; |
16262 | default: |
16263 | cmb.a_ext_c = GR_CMBX_ZERO; |
16264 | cmb.a_ext_c_invert = 0; |
16265 | } |
16266 | |
16267 | switch (cmb.a_fnc) |
16268 | { |
16269 | case GR_COMBINE_FUNCTION_ZERO: |
16270 | cmb.a_ext_a = GR_CMBX_ZERO; |
16271 | cmb.a_ext_a_mode = GR_FUNC_MODE_X; |
16272 | cmb.a_ext_b = GR_CMBX_ZERO; |
16273 | cmb.a_ext_b_mode = GR_FUNC_MODE_X; |
16274 | cmb.a_ext_c = GR_CMBX_ZERO; |
16275 | cmb.a_ext_c_invert = 0; |
16276 | cmb.a_ext_d = GR_CMBX_ZERO; |
16277 | cmb.a_ext_d_invert = 0; |
16278 | break; |
16279 | case GR_COMBINE_FUNCTION_LOCAL: |
16280 | case GR_COMBINE_FUNCTION_LOCAL_ALPHA: |
16281 | cmb.a_ext_a = GR_CMBX_ZERO; |
16282 | cmb.a_ext_a_mode = GR_FUNC_MODE_ZERO; |
16283 | cmb.a_ext_b = ext_local; |
16284 | cmb.a_ext_b_mode = GR_FUNC_MODE_X; |
16285 | cmb.a_ext_c = GR_CMBX_ZERO; |
16286 | cmb.a_ext_c_invert = 1; |
16287 | cmb.a_ext_d = GR_CMBX_ZERO; |
16288 | cmb.a_ext_d_invert = 0; |
16289 | break; |
16290 | case GR_COMBINE_FUNCTION_SCALE_OTHER: |
16291 | cmb.a_ext_a = ext_other; |
16292 | cmb.a_ext_a_mode = GR_FUNC_MODE_X; |
16293 | cmb.a_ext_b = GR_CMBX_ZERO; |
16294 | cmb.a_ext_b_mode = GR_FUNC_MODE_ZERO; |
16295 | cmb.a_ext_d = GR_CMBX_ZERO; |
16296 | cmb.a_ext_d_invert = 0; |
16297 | break; |
16298 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL: |
16299 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA: |
16300 | cmb.a_ext_a = ext_other; |
16301 | cmb.a_ext_a_mode = GR_FUNC_MODE_X; |
16302 | cmb.a_ext_b = ext_local; |
16303 | cmb.a_ext_b_mode = GR_FUNC_MODE_ZERO; |
16304 | cmb.a_ext_d = GR_CMBX_B; |
16305 | cmb.a_ext_d_invert = 0; |
16306 | break; |
16307 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL: |
16308 | cmb.a_ext_a = ext_other; |
16309 | cmb.a_ext_a_mode = GR_FUNC_MODE_X; |
16310 | cmb.a_ext_b = ext_local; |
16311 | cmb.a_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16312 | cmb.a_ext_d = GR_CMBX_ZERO; |
16313 | cmb.a_ext_d_invert = 0; |
16314 | break; |
16315 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL: |
16316 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16317 | cmb.a_ext_a = ext_other; |
16318 | cmb.a_ext_a_mode = GR_FUNC_MODE_X; |
16319 | cmb.a_ext_b = ext_local; |
16320 | cmb.a_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16321 | cmb.a_ext_d = GR_CMBX_B; |
16322 | cmb.a_ext_d_invert = 0; |
16323 | break; |
16324 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL: |
16325 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16326 | cmb.a_ext_a = GR_CMBX_ZERO; |
16327 | cmb.a_ext_a_mode = GR_FUNC_MODE_ZERO; |
16328 | cmb.a_ext_b = ext_local; |
16329 | cmb.a_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16330 | cmb.a_ext_d = GR_CMBX_B; |
16331 | cmb.a_ext_d_invert = 0; |
16332 | break; |
16333 | } |
16334 | } |
16335 | |
16336 | void TexColorCombinerToExtension (GrChipID_t tmu) |
16337 | { |
16338 | wxUint32 tc_ext_a, tc_ext_a_mode, tc_ext_b, tc_ext_b_mode, tc_ext_c, tc_ext_d; |
16339 | int tc_ext_c_invert, tc_ext_d_invert; |
16340 | wxUint32 tmu_func, tmu_fac; |
16341 | |
16342 | if (tmu == GR_TMU0) |
16343 | { |
16344 | tmu_func = cmb.tmu0_func; |
16345 | tmu_fac = cmb.tmu0_fac; |
16346 | } |
16347 | else |
16348 | { |
16349 | tmu_func = cmb.tmu1_func; |
16350 | tmu_fac = cmb.tmu1_fac; |
16351 | } |
16352 | |
16353 | switch (tmu_fac) |
16354 | { |
16355 | case GR_COMBINE_FACTOR_ZERO: |
16356 | tc_ext_c = GR_CMBX_ZERO; |
16357 | tc_ext_c_invert = 0; |
16358 | break; |
16359 | case GR_COMBINE_FACTOR_LOCAL: |
16360 | tc_ext_c = GR_CMBX_LOCAL_TEXTURE_RGB; |
16361 | tc_ext_c_invert = 0; |
16362 | break; |
16363 | case GR_COMBINE_FACTOR_LOCAL_ALPHA: |
16364 | tc_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16365 | tc_ext_c_invert = 0; |
16366 | break; |
16367 | case GR_COMBINE_FACTOR_OTHER_ALPHA: |
16368 | tc_ext_c = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16369 | tc_ext_c_invert = 0; |
16370 | break; |
16371 | case GR_COMBINE_FACTOR_DETAIL_FACTOR: |
16372 | tc_ext_c = GR_CMBX_DETAIL_FACTOR; |
16373 | tc_ext_c_invert = 0; |
16374 | break; |
16375 | case GR_COMBINE_FACTOR_ONE: |
16376 | tc_ext_c = GR_CMBX_ZERO; |
16377 | tc_ext_c_invert = 1; |
16378 | break; |
16379 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL: |
16380 | tc_ext_c = GR_CMBX_LOCAL_TEXTURE_RGB; |
16381 | tc_ext_c_invert = 1; |
16382 | break; |
16383 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA: |
16384 | tc_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16385 | tc_ext_c_invert = 1; |
16386 | break; |
16387 | case GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA: |
16388 | tc_ext_c = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16389 | tc_ext_c_invert = 1; |
16390 | break; |
16391 | case GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR: |
16392 | tc_ext_c = GR_CMBX_DETAIL_FACTOR; |
16393 | tc_ext_c_invert = 1; |
16394 | break; |
16395 | default: |
16396 | tc_ext_c = GR_CMBX_ZERO; |
16397 | tc_ext_c_invert = 0; |
16398 | break; |
16399 | } |
16400 | |
16401 | switch (tmu_func) |
16402 | { |
16403 | case GR_COMBINE_FUNCTION_ZERO: |
16404 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; |
16405 | tc_ext_a_mode = GR_FUNC_MODE_ZERO; |
16406 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16407 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16408 | tc_ext_c = GR_CMBX_ZERO; |
16409 | tc_ext_c_invert = 0; |
16410 | tc_ext_d = GR_CMBX_ZERO; |
16411 | tc_ext_d_invert = 0; |
16412 | break; |
16413 | case GR_COMBINE_FUNCTION_LOCAL: |
16414 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; |
16415 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16416 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16417 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16418 | tc_ext_c = GR_CMBX_ZERO; |
16419 | tc_ext_c_invert = 1; |
16420 | tc_ext_d = GR_CMBX_ZERO; |
16421 | tc_ext_d_invert = 0; |
16422 | break; |
16423 | case GR_COMBINE_FUNCTION_LOCAL_ALPHA: |
16424 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16425 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16426 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16427 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16428 | tc_ext_c = GR_CMBX_ZERO; |
16429 | tc_ext_c_invert = 1; |
16430 | tc_ext_d = GR_CMBX_ZERO; |
16431 | tc_ext_d_invert = 0; |
16432 | break; |
16433 | case GR_COMBINE_FUNCTION_SCALE_OTHER: |
16434 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16435 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16436 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16437 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16438 | tc_ext_d = GR_CMBX_ZERO; |
16439 | tc_ext_d_invert = 0; |
16440 | break; |
16441 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL: |
16442 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16443 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16444 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16445 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16446 | tc_ext_d = GR_CMBX_B; |
16447 | tc_ext_d_invert = 0; |
16448 | break; |
16449 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA: |
16450 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16451 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16452 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16453 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16454 | tc_ext_d = GR_CMBX_B; |
16455 | tc_ext_d_invert = 0; |
16456 | break; |
16457 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL: |
16458 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16459 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16460 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16461 | tc_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16462 | tc_ext_d = GR_CMBX_ZERO; |
16463 | tc_ext_d_invert = 0; |
16464 | break; |
16465 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL: |
16466 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16467 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16468 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16469 | tc_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16470 | tc_ext_d = GR_CMBX_B; |
16471 | tc_ext_d_invert = 0; |
16472 | break; |
16473 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16474 | tc_ext_a = GR_CMBX_OTHER_TEXTURE_RGB; |
16475 | tc_ext_a_mode = GR_FUNC_MODE_X; |
16476 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16477 | tc_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16478 | tc_ext_d = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16479 | tc_ext_d_invert = 0; |
16480 | break; |
16481 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL: |
16482 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; |
16483 | tc_ext_a_mode = GR_FUNC_MODE_ZERO; |
16484 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16485 | tc_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16486 | tc_ext_d = GR_CMBX_B; |
16487 | tc_ext_d_invert = 0; |
16488 | break; |
16489 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16490 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; |
16491 | tc_ext_a_mode = GR_FUNC_MODE_ZERO; |
16492 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16493 | tc_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16494 | tc_ext_d = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16495 | tc_ext_d_invert = 0; |
16496 | break; |
16497 | default: |
16498 | tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; |
16499 | tc_ext_a_mode = GR_FUNC_MODE_ZERO; |
16500 | tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; |
16501 | tc_ext_b_mode = GR_FUNC_MODE_ZERO; |
16502 | tc_ext_c = GR_CMBX_ZERO; |
16503 | tc_ext_c_invert = 0; |
16504 | tc_ext_d = GR_CMBX_ZERO; |
16505 | tc_ext_d_invert = 0; |
16506 | break; |
16507 | } |
16508 | |
16509 | if (tmu == GR_TMU0) |
16510 | { |
16511 | cmb.t0c_ext_a = tc_ext_a; |
16512 | cmb.t0c_ext_a_mode = tc_ext_a_mode; |
16513 | cmb.t0c_ext_b = tc_ext_b; |
16514 | cmb.t0c_ext_b_mode = tc_ext_b_mode; |
16515 | cmb.t0c_ext_c = tc_ext_c; |
16516 | cmb.t0c_ext_c_invert = tc_ext_c_invert; |
16517 | cmb.t0c_ext_d = tc_ext_d; |
16518 | cmb.t0c_ext_d_invert = tc_ext_d_invert; |
16519 | } |
16520 | else |
16521 | { |
16522 | cmb.t1c_ext_a = tc_ext_a; |
16523 | cmb.t1c_ext_a_mode = tc_ext_a_mode; |
16524 | cmb.t1c_ext_b = tc_ext_b; |
16525 | cmb.t1c_ext_b_mode = tc_ext_b_mode; |
16526 | cmb.t1c_ext_c = tc_ext_c; |
16527 | cmb.t1c_ext_c_invert = tc_ext_c_invert; |
16528 | cmb.t1c_ext_d = tc_ext_d; |
16529 | cmb.t1c_ext_d_invert = tc_ext_d_invert; |
16530 | } |
16531 | } |
16532 | |
16533 | void TexAlphaCombinerToExtension (GrChipID_t tmu) |
16534 | { |
16535 | wxUint32 ta_ext_a, ta_ext_a_mode, ta_ext_b, ta_ext_b_mode, ta_ext_c, ta_ext_d; |
16536 | int ta_ext_c_invert, ta_ext_d_invert; |
16537 | wxUint32 tmu_a_func, tmu_a_fac; |
16538 | |
16539 | if (tmu == GR_TMU0) |
16540 | { |
16541 | tmu_a_func = cmb.tmu0_a_func; |
16542 | tmu_a_fac = cmb.tmu0_a_fac; |
16543 | } |
16544 | else |
16545 | { |
16546 | tmu_a_func = cmb.tmu1_a_func; |
16547 | tmu_a_fac = cmb.tmu1_a_fac; |
16548 | } |
16549 | |
16550 | switch (tmu_a_fac) |
16551 | { |
16552 | case GR_COMBINE_FACTOR_ZERO: |
16553 | ta_ext_c = GR_CMBX_ZERO; |
16554 | ta_ext_c_invert = 0; |
16555 | break; |
16556 | case GR_COMBINE_FACTOR_LOCAL: |
16557 | case GR_COMBINE_FACTOR_LOCAL_ALPHA: |
16558 | ta_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16559 | ta_ext_c_invert = 0; |
16560 | break; |
16561 | case GR_COMBINE_FACTOR_OTHER_ALPHA: |
16562 | ta_ext_c = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16563 | ta_ext_c_invert = 0; |
16564 | break; |
16565 | case GR_COMBINE_FACTOR_DETAIL_FACTOR: |
16566 | ta_ext_c = GR_CMBX_DETAIL_FACTOR; |
16567 | ta_ext_c_invert = 0; |
16568 | break; |
16569 | case GR_COMBINE_FACTOR_ONE: |
16570 | ta_ext_c = GR_CMBX_ZERO; |
16571 | ta_ext_c_invert = 1; |
16572 | break; |
16573 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL: |
16574 | case GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA: |
16575 | ta_ext_c = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16576 | ta_ext_c_invert = 1; |
16577 | break; |
16578 | case GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA: |
16579 | ta_ext_c = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16580 | ta_ext_c_invert = 1; |
16581 | break; |
16582 | case GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR: |
16583 | ta_ext_c = GR_CMBX_DETAIL_FACTOR; |
16584 | ta_ext_c_invert = 1; |
16585 | break; |
16586 | default: |
16587 | ta_ext_c = GR_CMBX_ZERO; |
16588 | ta_ext_c_invert = 0; |
16589 | break; |
16590 | } |
16591 | |
16592 | switch (tmu_a_func) |
16593 | { |
16594 | case GR_COMBINE_FUNCTION_ZERO: |
16595 | ta_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16596 | ta_ext_a_mode = GR_FUNC_MODE_ZERO; |
16597 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16598 | ta_ext_b_mode = GR_FUNC_MODE_ZERO; |
16599 | ta_ext_c = GR_CMBX_ZERO; |
16600 | ta_ext_c_invert = 0; |
16601 | ta_ext_d = GR_CMBX_ZERO; |
16602 | ta_ext_d_invert = 0; |
16603 | break; |
16604 | case GR_COMBINE_FUNCTION_LOCAL: |
16605 | case GR_COMBINE_FUNCTION_LOCAL_ALPHA: |
16606 | ta_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16607 | ta_ext_a_mode = GR_FUNC_MODE_X; |
16608 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16609 | ta_ext_b_mode = GR_FUNC_MODE_ZERO; |
16610 | ta_ext_c = GR_CMBX_ZERO; |
16611 | ta_ext_c_invert = 1; |
16612 | ta_ext_d = GR_CMBX_ZERO; |
16613 | ta_ext_d_invert = 0; |
16614 | break; |
16615 | case GR_COMBINE_FUNCTION_SCALE_OTHER: |
16616 | ta_ext_a = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16617 | ta_ext_a_mode = GR_FUNC_MODE_X; |
16618 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16619 | ta_ext_b_mode = GR_FUNC_MODE_ZERO; |
16620 | ta_ext_d = GR_CMBX_ZERO; |
16621 | ta_ext_d_invert = 0; |
16622 | break; |
16623 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL: |
16624 | case GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA: |
16625 | ta_ext_a = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16626 | ta_ext_a_mode = GR_FUNC_MODE_X; |
16627 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16628 | ta_ext_b_mode = GR_FUNC_MODE_ZERO; |
16629 | ta_ext_d = GR_CMBX_B; |
16630 | ta_ext_d_invert = 0; |
16631 | break; |
16632 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL: |
16633 | ta_ext_a = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16634 | ta_ext_a_mode = GR_FUNC_MODE_X; |
16635 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16636 | ta_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16637 | ta_ext_d = GR_CMBX_ZERO; |
16638 | ta_ext_d_invert = 0; |
16639 | break; |
16640 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL: |
16641 | case GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16642 | ta_ext_a = GR_CMBX_OTHER_TEXTURE_ALPHA; |
16643 | ta_ext_a_mode = GR_FUNC_MODE_X; |
16644 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16645 | ta_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16646 | ta_ext_d = GR_CMBX_B; |
16647 | ta_ext_d_invert = 0; |
16648 | break; |
16649 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL: |
16650 | case GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA: |
16651 | ta_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16652 | ta_ext_a_mode = GR_FUNC_MODE_ZERO; |
16653 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16654 | ta_ext_b_mode = GR_FUNC_MODE_NEGATIVE_X; |
16655 | ta_ext_d = GR_CMBX_B; |
16656 | ta_ext_d_invert = 0; |
16657 | break; |
16658 | default: |
16659 | ta_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16660 | ta_ext_a_mode = GR_FUNC_MODE_ZERO; |
16661 | ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; |
16662 | ta_ext_b_mode = GR_FUNC_MODE_ZERO; |
16663 | ta_ext_c = GR_CMBX_ZERO; |
16664 | ta_ext_c_invert = 0; |
16665 | ta_ext_d = GR_CMBX_ZERO; |
16666 | ta_ext_d_invert = 0; |
16667 | break; |
16668 | } |
16669 | |
16670 | if (tmu == GR_TMU0) |
16671 | { |
16672 | cmb.t0a_ext_a = ta_ext_a; |
16673 | cmb.t0a_ext_a_mode = ta_ext_a_mode; |
16674 | cmb.t0a_ext_b = ta_ext_b; |
16675 | cmb.t0a_ext_b_mode = ta_ext_b_mode; |
16676 | cmb.t0a_ext_c = ta_ext_c; |
16677 | cmb.t0a_ext_c_invert = ta_ext_c_invert; |
16678 | cmb.t0a_ext_d = ta_ext_d; |
16679 | cmb.t0a_ext_d_invert = ta_ext_d_invert; |
16680 | } |
16681 | else |
16682 | { |
16683 | cmb.t1a_ext_a = ta_ext_a; |
16684 | cmb.t1a_ext_a_mode = ta_ext_a_mode; |
16685 | cmb.t1a_ext_b = ta_ext_b; |
16686 | cmb.t1a_ext_b_mode = ta_ext_b_mode; |
16687 | cmb.t1a_ext_c = ta_ext_c; |
16688 | cmb.t1a_ext_c_invert = ta_ext_c_invert; |
16689 | cmb.t1a_ext_d = ta_ext_d; |
16690 | cmb.t1a_ext_d_invert = ta_ext_d_invert; |
16691 | } |
16692 | } |