]> Shamusworld >> Repos - virtualjaguar/blob - src/include/blit_c.h
Adding 1.0.1/2 uncompressed tarballs to tags for historical purposes.
[virtualjaguar] / src / include / blit_c.h
1 #ifndef blitter_code_0x30000000\r
2 #define blitter_code_0x30000000\r
3 void blitter_0x30000000(void)\r
4 {\r
5         while (outer_loop--)\r
6         {\r
7                 inner_loop=n_pixels;\r
8                 while (inner_loop--)\r
9                 {\r
10                         uint32 srcdata   = 0;\r
11                         uint32 srczdata  = 0;\r
12                         uint32 dstdata   = 0;\r
13                         uint32 dstzdata  = 0;\r
14                         uint32 writedata = 0;\r
15                         uint32 inhibit   = 0;\r
16                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
17                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
18                         WRITE_PIXEL_1(a1, writedata);\r
19                         a1_x += a1_xadd;\r
20                         a1_y += a1_yadd;\r
21                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
22                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
23                 }\r
24                 a1_x+=a1_step_x;\r
25                 a1_y+=a1_step_y;\r
26                 a2_x+=a2_step_x;\r
27                 a2_y+=a2_step_y;\r
28         }\r
29         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
30         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
31         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
32 }\r
33 #endif\r
34 #ifndef blitter_code_0x34010004\r
35 #define blitter_code_0x34010004\r
36 void blitter_0x34010004(void)\r
37 {\r
38         while (outer_loop--)\r
39         {\r
40                 inner_loop=n_pixels;\r
41                 while (inner_loop--)\r
42                 {\r
43                         uint32 srcdata   = 0;\r
44                         uint32 srczdata  = 0;\r
45                         uint32 dstdata   = 0;\r
46                         uint32 dstzdata  = 0;\r
47                         uint32 writedata = 0;\r
48                         uint32 inhibit   = 0;\r
49                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
50                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
51                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
52                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
53                         WRITE_PIXEL_16(a1, writedata);\r
54                         a1_x += a1_xadd;\r
55                         a1_y += a1_yadd;\r
56                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
57                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
58                 }\r
59                 a1_x+=a1_step_x;\r
60                 a1_y+=a1_step_y;\r
61                 a2_x+=a2_step_x;\r
62                 a2_y+=a2_step_y;\r
63         }\r
64         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
65         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
66         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
67 }\r
68 #endif\r
69 #ifndef blitter_code_0x30c002a4\r
70 #define blitter_code_0x30c002a4\r
71 void blitter_0x30c002a4(void)\r
72 {\r
73         while (outer_loop--)\r
74         {\r
75                 inner_loop=n_pixels;\r
76                 while (inner_loop--)\r
77                 {\r
78                         uint32 srcdata   = 0;\r
79                         uint32 srczdata  = 0;\r
80                         uint32 dstdata   = 0;\r
81                         uint32 dstzdata  = 0;\r
82                         uint32 writedata = 0;\r
83                         uint32 inhibit   = 0;\r
84                         srcdata = READ_PIXEL_16(a2);\r
85                         dstdata = READ_PIXEL_16(a1);\r
86                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
87                                 writedata |= srcdata  & ~dstdata;\r
88                                 writedata |= srcdata  & dstdata;\r
89                                 {\r
90                                 int intensity = srcdata & 0xFF;\r
91                                 int ia = gd_ia >> 16;\r
92                                 if(ia & 0x80)\r
93                                         ia = 0xFFFFFF00 | ia;\r
94                                 intensity += ia;\r
95                                 if(intensity < 0)\r
96                                         intensity = 0;\r
97                                 if(intensity > 0xFF)\r
98                                         intensity = 0xFF;\r
99                                 writedata = (srcdata & 0xFF00) | intensity;\r
100                                 }\r
101                         WRITE_PIXEL_16(a1, writedata);\r
102                         a1_x += a1_xadd;\r
103                         a1_y += a1_yadd;\r
104                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
105                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
106                         gd_i[colour_index] += gd_ia;\r
107                         gd_c[colour_index] += gd_ca;\r
108                          colour_index=(colour_index+1)&0x3;\r
109                 }\r
110                 a1_x+=a1_step_x;\r
111                 a1_y+=a1_step_y;\r
112                 a2_x+=a2_step_x;\r
113                 a2_y+=a2_step_y;\r
114         }\r
115         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
116         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
117         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
118 }\r
119 #endif\r
120 #ifndef blitter_code_0x00c042a4\r
121 #define blitter_code_0x00c042a4\r
122 void blitter_0x00c042a4(void)\r
123 {\r
124         while (outer_loop--)\r
125         {\r
126                 inner_loop=n_pixels;\r
127                 while (inner_loop--)\r
128                 {\r
129                         uint32 srcdata   = 0;\r
130                         uint32 srczdata  = 0;\r
131                         uint32 dstdata   = 0;\r
132                         uint32 dstzdata  = 0;\r
133                         uint32 writedata = 0;\r
134                         uint32 inhibit   = 0;\r
135                         srcdata = READ_PIXEL_16(a2);\r
136                         dstdata = READ_PIXEL_16(a1);\r
137                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
138                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
139                         if (!inhibit)\r
140                         {\r
141                                 writedata |= srcdata  & ~dstdata;\r
142                                 writedata |= srcdata  & dstdata;\r
143                         } else { srczdata=dstzdata; writedata=dstdata; }\r
144                         if (!inhibit)\r
145                         {\r
146                                 WRITE_PIXEL_16(a1, writedata);\r
147                         }\r
148                         a1_x += a1_xadd;\r
149                         a1_y += a1_yadd;\r
150                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
151                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
152                 }\r
153                 a1_x+=a1_step_x;\r
154                 a1_y+=a1_step_y;\r
155                 a2_x+=a2_step_x;\r
156                 a2_y+=a2_step_y;\r
157         }\r
158         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
159         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
160         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
161 }\r
162 #endif\r
163 #ifndef blitter_code_0x08c042a4\r
164 #define blitter_code_0x08c042a4\r
165 void blitter_0x08c042a4(void)\r
166 {\r
167         while (outer_loop--)\r
168         {\r
169                 inner_loop=n_pixels;\r
170                 while (inner_loop--)\r
171                 {\r
172                         uint32 srcdata   = 0;\r
173                         uint32 srczdata  = 0;\r
174                         uint32 dstdata   = 0;\r
175                         uint32 dstzdata  = 0;\r
176                         uint32 writedata = 0;\r
177                         uint32 inhibit   = 0;\r
178                         srcdata = READ_PIXEL_16(a2);\r
179                         dstdata = READ_PIXEL_16(a1);\r
180                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
181                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
182                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
183                         if (!inhibit)\r
184                         {\r
185                                 writedata |= srcdata  & ~dstdata;\r
186                                 writedata |= srcdata  & dstdata;\r
187                         } else { srczdata=dstzdata; writedata=dstdata; }\r
188                         if (!inhibit)\r
189                         {\r
190                                 WRITE_PIXEL_16(a1, writedata);\r
191                         }\r
192                         a1_x += a1_xadd;\r
193                         a1_y += a1_yadd;\r
194                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
195                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
196                 }\r
197                 a1_x+=a1_step_x;\r
198                 a1_y+=a1_step_y;\r
199                 a2_x+=a2_step_x;\r
200                 a2_y+=a2_step_y;\r
201         }\r
202         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
203         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
204         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
205 }\r
206 #endif\r
207 #ifndef blitter_code_0x34010024\r
208 #define blitter_code_0x34010024\r
209 void blitter_0x34010024(void)\r
210 {\r
211         while (outer_loop--)\r
212         {\r
213                 inner_loop=n_pixels;\r
214                 while (inner_loop--)\r
215                 {\r
216                         uint32 srcdata   = 0;\r
217                         uint32 srczdata  = 0;\r
218                         uint32 dstdata   = 0;\r
219                         uint32 dstzdata  = 0;\r
220                         uint32 writedata = 0;\r
221                         uint32 inhibit   = 0;\r
222                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
223                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
224                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
225                         if (!inhibit)\r
226                         {\r
227                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
228                         } else { srczdata=dstzdata; writedata=dstdata; }\r
229                         WRITE_PIXEL_16(a1, writedata);\r
230                         a1_x += a1_xadd;\r
231                         a1_y += a1_yadd;\r
232                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
233                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
234                 }\r
235                 a1_x+=a1_step_x;\r
236                 a1_y+=a1_step_y;\r
237                 a2_x+=a2_step_x;\r
238                 a2_y+=a2_step_y;\r
239         }\r
240         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
241         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
242         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
243 }\r
244 #endif\r
245 #ifndef blitter_code_0x24010222\r
246 #define blitter_code_0x24010222\r
247 void blitter_0x24010222(void)\r
248 {\r
249         while (outer_loop--)\r
250         {\r
251                 inner_loop=n_pixels;\r
252                 while (inner_loop--)\r
253                 {\r
254                         uint32 srcdata   = 0;\r
255                         uint32 srczdata  = 0;\r
256                         uint32 dstdata   = 0;\r
257                         uint32 dstzdata  = 0;\r
258                         uint32 writedata = 0;\r
259                         uint32 inhibit   = 0;\r
260                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
261                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
262                         dstdata = READ_PIXEL_4(a1);\r
263                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
264                         if (!inhibit)\r
265                         {\r
266                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
267                         } else { srczdata=dstzdata; writedata=dstdata; }\r
268                         if (!inhibit)\r
269                         {\r
270                                 WRITE_PIXEL_4(a1, writedata);\r
271                         }\r
272                         a1_x += a1_xadd;\r
273                         a1_y += a1_yadd;\r
274                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
275                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
276                 }\r
277                 a1_x+=a1_step_x;\r
278                 a1_y+=a1_step_y;\r
279                 a2_x+=a2_step_x;\r
280                 a2_y+=a2_step_y;\r
281         }\r
282         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
283         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
284         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
285 }\r
286 #endif\r
287 #ifndef blitter_code_0x00c04292\r
288 #define blitter_code_0x00c04292\r
289 void blitter_0x00c04292(void)\r
290 {\r
291         while (outer_loop--)\r
292         {\r
293                 inner_loop=n_pixels;\r
294                 while (inner_loop--)\r
295                 {\r
296                         uint32 srcdata   = 0;\r
297                         uint32 srczdata  = 0;\r
298                         uint32 dstdata   = 0;\r
299                         uint32 dstzdata  = 0;\r
300                         uint32 writedata = 0;\r
301                         uint32 inhibit   = 0;\r
302                         srcdata = READ_PIXEL_4(a2);\r
303                         dstdata = READ_PIXEL_4(a1);\r
304                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
305                         if (srcdata == READ_RDATA_4(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
306                         if (!inhibit)\r
307                         {\r
308                                 writedata |= srcdata  & ~dstdata;\r
309                                 writedata |= srcdata  & dstdata;\r
310                         } else { srczdata=dstzdata; writedata=dstdata; }\r
311                         if (!inhibit)\r
312                         {\r
313                                 WRITE_PIXEL_4(a1, writedata);\r
314                         }\r
315                         a1_x += a1_xadd;\r
316                         a1_y += a1_yadd;\r
317                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
318                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
319                 }\r
320                 a1_x+=a1_step_x;\r
321                 a1_y+=a1_step_y;\r
322                 a2_x+=a2_step_x;\r
323                 a2_y+=a2_step_y;\r
324         }\r
325         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
326         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
327         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
328 }\r
329 #endif\r
330 #ifndef blitter_code_0x00c0409b\r
331 #define blitter_code_0x00c0409b\r
332 void blitter_0x00c0409b(void)\r
333 {\r
334         while (outer_loop--)\r
335         {\r
336                 inner_loop=n_pixels;\r
337                 while (inner_loop--)\r
338                 {\r
339                         uint32 srcdata   = 0;\r
340                         uint32 srczdata  = 0;\r
341                         uint32 dstdata   = 0;\r
342                         uint32 dstzdata  = 0;\r
343                         uint32 writedata = 0;\r
344                         uint32 inhibit   = 0;\r
345                         srcdata = READ_PIXEL_8(a2);\r
346                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
347                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
348                         if (!inhibit)\r
349                         {\r
350                                 writedata |= srcdata  & ~dstdata;\r
351                                 writedata |= srcdata  & dstdata;\r
352                         } else { srczdata=dstzdata; writedata=dstdata; }\r
353                         if (!inhibit)\r
354                         {\r
355                                 WRITE_PIXEL_8(a1, writedata);\r
356                         }\r
357                         a1_x += a1_xadd;\r
358                         a1_y += a1_yadd;\r
359                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
360                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
361                 }\r
362                 a1_x+=a1_step_x;\r
363                 a1_y+=a1_step_y;\r
364                 a2_x+=a2_step_x;\r
365                 a2_y+=a2_step_y;\r
366         }\r
367         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
368         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
369         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
370 }\r
371 #endif\r
372 #ifndef blitter_code_0x30000003\r
373 #define blitter_code_0x30000003\r
374 void blitter_0x30000003(void)\r
375 {\r
376         while (outer_loop--)\r
377         {\r
378                 inner_loop=n_pixels;\r
379                 while (inner_loop--)\r
380                 {\r
381                         uint32 srcdata   = 0;\r
382                         uint32 srczdata  = 0;\r
383                         uint32 dstdata   = 0;\r
384                         uint32 dstzdata  = 0;\r
385                         uint32 writedata = 0;\r
386                         uint32 inhibit   = 0;\r
387                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
388                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
389                         WRITE_PIXEL_8(a1, writedata);\r
390                         a1_x += a1_xadd;\r
391                         a1_y += a1_yadd;\r
392                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
393                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
394                 }\r
395                 a1_x+=a1_step_x;\r
396                 a1_y+=a1_step_y;\r
397                 a2_x+=a2_step_x;\r
398                 a2_y+=a2_step_y;\r
399         }\r
400         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
401         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
402         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
403 }\r
404 #endif\r
405 #ifndef blitter_code_0x34010003\r
406 #define blitter_code_0x34010003\r
407 void blitter_0x34010003(void)\r
408 {\r
409         while (outer_loop--)\r
410         {\r
411                 inner_loop=n_pixels;\r
412                 while (inner_loop--)\r
413                 {\r
414                         uint32 srcdata   = 0;\r
415                         uint32 srczdata  = 0;\r
416                         uint32 dstdata   = 0;\r
417                         uint32 dstzdata  = 0;\r
418                         uint32 writedata = 0;\r
419                         uint32 inhibit   = 0;\r
420                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
421                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
422                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
423                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
424                         WRITE_PIXEL_8(a1, writedata);\r
425                         a1_x += a1_xadd;\r
426                         a1_y += a1_yadd;\r
427                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
428                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
429                 }\r
430                 a1_x+=a1_step_x;\r
431                 a1_y+=a1_step_y;\r
432                 a2_x+=a2_step_x;\r
433                 a2_y+=a2_step_y;\r
434         }\r
435         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
436         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
437         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
438 }\r
439 #endif\r
440 #ifndef blitter_code_0x30c000ad\r
441 #define blitter_code_0x30c000ad\r
442 void blitter_0x30c000ad(void)\r
443 {\r
444         while (outer_loop--)\r
445         {\r
446                 inner_loop=n_pixels;\r
447                 while (inner_loop--)\r
448                 {\r
449                         uint32 srcdata   = 0;\r
450                         uint32 srczdata  = 0;\r
451                         uint32 dstdata   = 0;\r
452                         uint32 dstzdata  = 0;\r
453                         uint32 writedata = 0;\r
454                         uint32 inhibit   = 0;\r
455                         srcdata = READ_PIXEL_32(a2);\r
456                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
457                                 writedata |= srcdata  & ~dstdata;\r
458                                 writedata |= srcdata  & dstdata;\r
459                         WRITE_PIXEL_32(a1, writedata);\r
460                         a1_x += a1_xadd;\r
461                         a1_y += a1_yadd;\r
462                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
463                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
464                 }\r
465                 a1_x+=a1_step_x;\r
466                 a1_y+=a1_step_y;\r
467                 a2_x+=a2_step_x;\r
468                 a2_y+=a2_step_y;\r
469         }\r
470         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
471         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
472         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
473 }\r
474 #endif\r
475 #ifndef blitter_code_0x30c0009b\r
476 #define blitter_code_0x30c0009b\r
477 void blitter_0x30c0009b(void)\r
478 {\r
479         while (outer_loop--)\r
480         {\r
481                 inner_loop=n_pixels;\r
482                 while (inner_loop--)\r
483                 {\r
484                         uint32 srcdata   = 0;\r
485                         uint32 srczdata  = 0;\r
486                         uint32 dstdata   = 0;\r
487                         uint32 dstzdata  = 0;\r
488                         uint32 writedata = 0;\r
489                         uint32 inhibit   = 0;\r
490                         srcdata = READ_PIXEL_8(a2);\r
491                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
492                                 writedata |= srcdata  & ~dstdata;\r
493                                 writedata |= srcdata  & dstdata;\r
494                         WRITE_PIXEL_8(a1, writedata);\r
495                         a1_x += a1_xadd;\r
496                         a1_y += a1_yadd;\r
497                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
498                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
499                 }\r
500                 a1_x+=a1_step_x;\r
501                 a1_y+=a1_step_y;\r
502                 a2_x+=a2_step_x;\r
503                 a2_y+=a2_step_y;\r
504         }\r
505         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
506         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
507         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
508 }\r
509 #endif\r
510 #ifndef blitter_code_0x3401001b\r
511 #define blitter_code_0x3401001b\r
512 void blitter_0x3401001b(void)\r
513 {\r
514         while (outer_loop--)\r
515         {\r
516                 inner_loop=n_pixels;\r
517                 while (inner_loop--)\r
518                 {\r
519                         uint32 srcdata   = 0;\r
520                         uint32 srczdata  = 0;\r
521                         uint32 dstdata   = 0;\r
522                         uint32 dstzdata  = 0;\r
523                         uint32 writedata = 0;\r
524                         uint32 inhibit   = 0;\r
525                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
526                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
527                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
528                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
529                         WRITE_PIXEL_8(a1, writedata);\r
530                         a1_x += a1_xadd;\r
531                         a1_y += a1_yadd;\r
532                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
533                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
534                 }\r
535                 a1_x+=a1_step_x;\r
536                 a1_y+=a1_step_y;\r
537                 a2_x+=a2_step_x;\r
538                 a2_y+=a2_step_y;\r
539         }\r
540         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
541         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
542         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
543 }\r
544 #endif\r
545 #ifndef blitter_code_0x30c000a4\r
546 #define blitter_code_0x30c000a4\r
547 void blitter_0x30c000a4(void)\r
548 {\r
549         while (outer_loop--)\r
550         {\r
551                 inner_loop=n_pixels;\r
552                 while (inner_loop--)\r
553                 {\r
554                         uint32 srcdata   = 0;\r
555                         uint32 srczdata  = 0;\r
556                         uint32 dstdata   = 0;\r
557                         uint32 dstzdata  = 0;\r
558                         uint32 writedata = 0;\r
559                         uint32 inhibit   = 0;\r
560                         srcdata = READ_PIXEL_16(a2);\r
561                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
562                                 writedata |= srcdata  & ~dstdata;\r
563                                 writedata |= srcdata  & dstdata;\r
564                         WRITE_PIXEL_16(a1, writedata);\r
565                         a1_x += a1_xadd;\r
566                         a1_y += a1_yadd;\r
567                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
568                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
569                 }\r
570                 a1_x+=a1_step_x;\r
571                 a1_y+=a1_step_y;\r
572                 a2_x+=a2_step_x;\r
573                 a2_y+=a2_step_y;\r
574         }\r
575         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
576         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
577         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
578 }\r
579 #endif\r
580 #ifndef blitter_code_0x34010023\r
581 #define blitter_code_0x34010023\r
582 void blitter_0x34010023(void)\r
583 {\r
584         while (outer_loop--)\r
585         {\r
586                 inner_loop=n_pixels;\r
587                 while (inner_loop--)\r
588                 {\r
589                         uint32 srcdata   = 0;\r
590                         uint32 srczdata  = 0;\r
591                         uint32 dstdata   = 0;\r
592                         uint32 dstzdata  = 0;\r
593                         uint32 writedata = 0;\r
594                         uint32 inhibit   = 0;\r
595                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
596                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
597                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
598                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
599                         WRITE_PIXEL_8(a1, writedata);\r
600                         a1_x += a1_xadd;\r
601                         a1_y += a1_yadd;\r
602                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
603                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
604                 }\r
605                 a1_x+=a1_step_x;\r
606                 a1_y+=a1_step_y;\r
607                 a2_x+=a2_step_x;\r
608                 a2_y+=a2_step_y;\r
609         }\r
610         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
611         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
612         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
613 }\r
614 #endif\r
615 #ifndef blitter_code_0x30000023\r
616 #define blitter_code_0x30000023\r
617 void blitter_0x30000023(void)\r
618 {\r
619         while (outer_loop--)\r
620         {\r
621                 inner_loop=n_pixels;\r
622                 while (inner_loop--)\r
623                 {\r
624                         uint32 srcdata   = 0;\r
625                         uint32 srczdata  = 0;\r
626                         uint32 dstdata   = 0;\r
627                         uint32 dstzdata  = 0;\r
628                         uint32 writedata = 0;\r
629                         uint32 inhibit   = 0;\r
630                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
631                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
632                         WRITE_PIXEL_8(a1, writedata);\r
633                         a1_x += a1_xadd;\r
634                         a1_y += a1_yadd;\r
635                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
636                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
637                 }\r
638                 a1_x+=a1_step_x;\r
639                 a1_y+=a1_step_y;\r
640                 a2_x+=a2_step_x;\r
641                 a2_y+=a2_step_y;\r
642         }\r
643         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
644         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
645         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
646 }\r
647 #endif\r
648 #ifndef blitter_code_0x24010024\r
649 #define blitter_code_0x24010024\r
650 void blitter_0x24010024(void)\r
651 {\r
652         while (outer_loop--)\r
653         {\r
654                 inner_loop=n_pixels;\r
655                 while (inner_loop--)\r
656                 {\r
657                         uint32 srcdata   = 0;\r
658                         uint32 srczdata  = 0;\r
659                         uint32 dstdata   = 0;\r
660                         uint32 dstzdata  = 0;\r
661                         uint32 writedata = 0;\r
662                         uint32 inhibit   = 0;\r
663                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
664                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
665                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
666                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
667                                 WRITE_PIXEL_16(a1, writedata);\r
668                         a1_x += a1_xadd;\r
669                         a1_y += a1_yadd;\r
670                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
671                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
672                 }\r
673                 a1_x+=a1_step_x;\r
674                 a1_y+=a1_step_y;\r
675                 a2_x+=a2_step_x;\r
676                 a2_y+=a2_step_y;\r
677         }\r
678         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
679         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
680         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
681 }\r
682 #endif\r
683 #ifndef blitter_code_0x00c000a4\r
684 #define blitter_code_0x00c000a4\r
685 void blitter_0x00c000a4(void)\r
686 {\r
687         while (outer_loop--)\r
688         {\r
689                 inner_loop=n_pixels;\r
690                 while (inner_loop--)\r
691                 {\r
692                         uint32 srcdata   = 0;\r
693                         uint32 srczdata  = 0;\r
694                         uint32 dstdata   = 0;\r
695                         uint32 dstzdata  = 0;\r
696                         uint32 writedata = 0;\r
697                         uint32 inhibit   = 0;\r
698                         srcdata = READ_PIXEL_16(a2);\r
699                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
700                                 writedata |= srcdata  & ~dstdata;\r
701                                 writedata |= srcdata  & dstdata;\r
702                                 WRITE_PIXEL_16(a1, writedata);\r
703                         a1_x += a1_xadd;\r
704                         a1_y += a1_yadd;\r
705                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
706                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
707                 }\r
708                 a1_x+=a1_step_x;\r
709                 a1_y+=a1_step_y;\r
710                 a2_x+=a2_step_x;\r
711                 a2_y+=a2_step_y;\r
712         }\r
713         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
714         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
715         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
716 }\r
717 #endif\r
718 #ifndef blitter_code_0x00c040a4\r
719 #define blitter_code_0x00c040a4\r
720 void blitter_0x00c040a4(void)\r
721 {\r
722         while (outer_loop--)\r
723         {\r
724                 inner_loop=n_pixels;\r
725                 while (inner_loop--)\r
726                 {\r
727                         uint32 srcdata   = 0;\r
728                         uint32 srczdata  = 0;\r
729                         uint32 dstdata   = 0;\r
730                         uint32 dstzdata  = 0;\r
731                         uint32 writedata = 0;\r
732                         uint32 inhibit   = 0;\r
733                         srcdata = READ_PIXEL_16(a2);\r
734                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
735                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
736                         if (!inhibit)\r
737                         {\r
738                                 writedata |= srcdata  & ~dstdata;\r
739                                 writedata |= srcdata  & dstdata;\r
740                         } else { srczdata=dstzdata; writedata=dstdata; }\r
741                         if (!inhibit)\r
742                         {\r
743                                 WRITE_PIXEL_16(a1, writedata);\r
744                         }\r
745                         a1_x += a1_xadd;\r
746                         a1_y += a1_yadd;\r
747                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
748                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
749                 }\r
750                 a1_x+=a1_step_x;\r
751                 a1_y+=a1_step_y;\r
752                 a2_x+=a2_step_x;\r
753                 a2_y+=a2_step_y;\r
754         }\r
755         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
756         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
757         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
758 }\r
759 #endif\r
760 #ifndef blitter_code_0x04010024\r
761 #define blitter_code_0x04010024\r
762 void blitter_0x04010024(void)\r
763 {\r
764         while (outer_loop--)\r
765         {\r
766                 inner_loop=n_pixels;\r
767                 while (inner_loop--)\r
768                 {\r
769                         uint32 srcdata   = 0;\r
770                         uint32 srczdata  = 0;\r
771                         uint32 dstdata   = 0;\r
772                         uint32 dstzdata  = 0;\r
773                         uint32 writedata = 0;\r
774                         uint32 inhibit   = 0;\r
775                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
776                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
777                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
778                         if (!inhibit)\r
779                         {\r
780                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
781                         } else { srczdata=dstzdata; writedata=dstdata; }\r
782                         if (!inhibit)\r
783                         {\r
784                                 WRITE_PIXEL_16(a1, writedata);\r
785                         }\r
786                         a1_x += a1_xadd;\r
787                         a1_y += a1_yadd;\r
788                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
789                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
790                 }\r
791                 a1_x+=a1_step_x;\r
792                 a1_y+=a1_step_y;\r
793                 a2_x+=a2_step_x;\r
794                 a2_y+=a2_step_y;\r
795         }\r
796         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
797         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
798         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
799 }\r
800 #endif\r
801 #ifndef blitter_code_0x2401001c\r
802 #define blitter_code_0x2401001c\r
803 void blitter_0x2401001c(void)\r
804 {\r
805         while (outer_loop--)\r
806         {\r
807                 inner_loop=n_pixels;\r
808                 while (inner_loop--)\r
809                 {\r
810                         uint32 srcdata   = 0;\r
811                         uint32 srczdata  = 0;\r
812                         uint32 dstdata   = 0;\r
813                         uint32 dstzdata  = 0;\r
814                         uint32 writedata = 0;\r
815                         uint32 inhibit   = 0;\r
816                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
817                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
818                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
819                         if (!inhibit)\r
820                         {\r
821                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
822                         } else { srczdata=dstzdata; writedata=dstdata; }\r
823                         if (!inhibit)\r
824                         {\r
825                                 WRITE_PIXEL_16(a1, writedata);\r
826                         }\r
827                         a1_x += a1_xadd;\r
828                         a1_y += a1_yadd;\r
829                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
830                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
831                 }\r
832                 a1_x+=a1_step_x;\r
833                 a1_y+=a1_step_y;\r
834                 a2_x+=a2_step_x;\r
835                 a2_y+=a2_step_y;\r
836         }\r
837         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
838         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
839         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
840 }\r
841 #endif\r
842 #ifndef blitter_code_0x3000002b\r
843 #define blitter_code_0x3000002b\r
844 void blitter_0x3000002b(void)\r
845 {\r
846         while (outer_loop--)\r
847         {\r
848                 inner_loop=n_pixels;\r
849                 while (inner_loop--)\r
850                 {\r
851                         uint32 srcdata   = 0;\r
852                         uint32 srczdata  = 0;\r
853                         uint32 dstdata   = 0;\r
854                         uint32 dstzdata  = 0;\r
855                         uint32 writedata = 0;\r
856                         uint32 inhibit   = 0;\r
857                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
858                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
859                         if (!inhibit)\r
860                         {\r
861                         } else { srczdata=dstzdata; writedata=dstdata; }\r
862                         WRITE_PIXEL_8(a1, writedata);\r
863                         a1_x += a1_xadd;\r
864                         a1_y += a1_yadd;\r
865                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
866                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
867                 }\r
868                 a1_x+=a1_step_x;\r
869                 a1_y+=a1_step_y;\r
870                 a2_x+=a2_step_x;\r
871                 a2_y+=a2_step_y;\r
872         }\r
873         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
874         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
875         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
876 }\r
877 #endif\r
878 #ifndef blitter_code_0x3000001b\r
879 #define blitter_code_0x3000001b\r
880 void blitter_0x3000001b(void)\r
881 {\r
882         while (outer_loop--)\r
883         {\r
884                 inner_loop=n_pixels;\r
885                 while (inner_loop--)\r
886                 {\r
887                         uint32 srcdata   = 0;\r
888                         uint32 srczdata  = 0;\r
889                         uint32 dstdata   = 0;\r
890                         uint32 dstzdata  = 0;\r
891                         uint32 writedata = 0;\r
892                         uint32 inhibit   = 0;\r
893                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
894                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
895                         if (!inhibit)\r
896                         {\r
897                         } else { srczdata=dstzdata; writedata=dstdata; }\r
898                         WRITE_PIXEL_8(a1, writedata);\r
899                         a1_x += a1_xadd;\r
900                         a1_y += a1_yadd;\r
901                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
902                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
903                 }\r
904                 a1_x+=a1_step_x;\r
905                 a1_y+=a1_step_y;\r
906                 a2_x+=a2_step_x;\r
907                 a2_y+=a2_step_y;\r
908         }\r
909         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
910         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
911         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
912 }\r
913 #endif\r
914 #ifndef blitter_code_0x00c0009b\r
915 #define blitter_code_0x00c0009b\r
916 void blitter_0x00c0009b(void)\r
917 {\r
918         while (outer_loop--)\r
919         {\r
920                 inner_loop=n_pixels;\r
921                 while (inner_loop--)\r
922                 {\r
923                         uint32 srcdata   = 0;\r
924                         uint32 srczdata  = 0;\r
925                         uint32 dstdata   = 0;\r
926                         uint32 dstzdata  = 0;\r
927                         uint32 writedata = 0;\r
928                         uint32 inhibit   = 0;\r
929                         srcdata = READ_PIXEL_8(a2);\r
930                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
931                         if (!inhibit)\r
932                         {\r
933                                 writedata |= srcdata  & ~dstdata;\r
934                                 writedata |= srcdata  & dstdata;\r
935                         } else { srczdata=dstzdata; writedata=dstdata; }\r
936                         if (!inhibit)\r
937                         {\r
938                                 WRITE_PIXEL_8(a1, writedata);\r
939                         }\r
940                         a1_x += a1_xadd;\r
941                         a1_y += a1_yadd;\r
942                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
943                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
944                 }\r
945                 a1_x+=a1_step_x;\r
946                 a1_y+=a1_step_y;\r
947                 a2_x+=a2_step_x;\r
948                 a2_y+=a2_step_y;\r
949         }\r
950         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
951         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
952         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
953 }\r
954 #endif\r
955 #ifndef blitter_code_0x1000001b\r
956 #define blitter_code_0x1000001b\r
957 void blitter_0x1000001b(void)\r
958 {\r
959         while (outer_loop--)\r
960         {\r
961                 inner_loop=n_pixels;\r
962                 while (inner_loop--)\r
963                 {\r
964                         uint32 srcdata   = 0;\r
965                         uint32 srczdata  = 0;\r
966                         uint32 dstdata   = 0;\r
967                         uint32 dstzdata  = 0;\r
968                         uint32 writedata = 0;\r
969                         uint32 inhibit   = 0;\r
970                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
971                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
972                         if (!inhibit)\r
973                         {\r
974                         } else { srczdata=dstzdata; writedata=dstdata; }\r
975                         WRITE_PIXEL_8(a1, writedata);\r
976                         a1_x += a1_xadd;\r
977                         a1_y += a1_yadd;\r
978                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
979                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
980                 }\r
981                 a1_x+=a1_step_x;\r
982                 a1_y+=a1_step_y;\r
983                 a2_x+=a2_step_x;\r
984                 a2_y+=a2_step_y;\r
985         }\r
986         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
987         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
988         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
989 }\r
990 #endif\r
991 #ifndef blitter_code_0x10000023\r
992 #define blitter_code_0x10000023\r
993 void blitter_0x10000023(void)\r
994 {\r
995         while (outer_loop--)\r
996         {\r
997                 inner_loop=n_pixels;\r
998                 while (inner_loop--)\r
999                 {\r
1000                         uint32 srcdata   = 0;\r
1001                         uint32 srczdata  = 0;\r
1002                         uint32 dstdata   = 0;\r
1003                         uint32 dstzdata  = 0;\r
1004                         uint32 writedata = 0;\r
1005                         uint32 inhibit   = 0;\r
1006                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1007                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1008                         if (!inhibit)\r
1009                         {\r
1010                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1011                         WRITE_PIXEL_8(a1, writedata);\r
1012                         a1_x += a1_xadd;\r
1013                         a1_y += a1_yadd;\r
1014                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1015                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1016                 }\r
1017                 a1_x+=a1_step_x;\r
1018                 a1_y+=a1_step_y;\r
1019                 a2_x+=a2_step_x;\r
1020                 a2_y+=a2_step_y;\r
1021         }\r
1022         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1023         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1024         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1025 }\r
1026 #endif\r
1027 #ifndef blitter_code_0x3401001d\r
1028 #define blitter_code_0x3401001d\r
1029 void blitter_0x3401001d(void)\r
1030 {\r
1031         while (outer_loop--)\r
1032         {\r
1033                 inner_loop=n_pixels;\r
1034                 while (inner_loop--)\r
1035                 {\r
1036                         uint32 srcdata   = 0;\r
1037                         uint32 srczdata  = 0;\r
1038                         uint32 dstdata   = 0;\r
1039                         uint32 dstzdata  = 0;\r
1040                         uint32 writedata = 0;\r
1041                         uint32 inhibit   = 0;\r
1042                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
1043                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
1044                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
1045                         if (!inhibit)\r
1046                         {\r
1047                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
1048                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1049                         WRITE_PIXEL_32(a1, writedata);\r
1050                         a1_x += a1_xadd;\r
1051                         a1_y += a1_yadd;\r
1052                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1053                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1054                 }\r
1055                 a1_x+=a1_step_x;\r
1056                 a1_y+=a1_step_y;\r
1057                 a2_x+=a2_step_x;\r
1058                 a2_y+=a2_step_y;\r
1059         }\r
1060         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1061         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1062         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1063 }\r
1064 #endif\r
1065 #ifndef blitter_code_0x00c000e4\r
1066 #define blitter_code_0x00c000e4\r
1067 void blitter_0x00c000e4(void)\r
1068 {\r
1069         while (outer_loop--)\r
1070         {\r
1071                 inner_loop=n_pixels;\r
1072                 while (inner_loop--)\r
1073                 {\r
1074                         uint32 srcdata   = 0;\r
1075                         uint32 srczdata  = 0;\r
1076                         uint32 dstdata   = 0;\r
1077                         uint32 dstzdata  = 0;\r
1078                         uint32 writedata = 0;\r
1079                         uint32 inhibit   = 0;\r
1080                         srcdata = READ_PIXEL_16(a1);\r
1081                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
1082                         srczdata=z_i[colour_index]>>16;\r
1083                         if (!inhibit)\r
1084                         {\r
1085                                 writedata |= srcdata  & ~dstdata;\r
1086                                 writedata |= srcdata  & dstdata;\r
1087                                 {\r
1088                                 int intensity = srcdata & 0xFF;\r
1089                                 int ia = gd_ia >> 16;\r
1090                                 if(ia & 0x80)\r
1091                                         ia = 0xFFFFFF00 | ia;\r
1092                                 intensity += ia;\r
1093                                 if(intensity < 0)\r
1094                                         intensity = 0;\r
1095                                 if(intensity > 0xFF)\r
1096                                         intensity = 0xFF;\r
1097                                 writedata = (srcdata & 0xFF00) | intensity;\r
1098                                 }\r
1099                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1100                         if (!inhibit)\r
1101                         {\r
1102                                 WRITE_PIXEL_16(a2, writedata);\r
1103                         }\r
1104                         a1_x += a1_xadd;\r
1105                         a1_y += a1_yadd;\r
1106                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1107                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1108                         z_i[colour_index]+=zadd;\r
1109                         gd_i[colour_index] += gd_ia;\r
1110                         gd_c[colour_index] += gd_ca;\r
1111                 }\r
1112                 a1_x+=a1_step_x;\r
1113                 a1_y+=a1_step_y;\r
1114                 a2_x+=a2_step_x;\r
1115                 a2_y+=a2_step_y;\r
1116         }\r
1117         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1118         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1119         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1120 }\r
1121 #endif\r
1122 #ifndef blitter_code_0x24010064\r
1123 #define blitter_code_0x24010064\r
1124 void blitter_0x24010064(void)\r
1125 {\r
1126         while (outer_loop--)\r
1127         {\r
1128                 inner_loop=n_pixels;\r
1129                 while (inner_loop--)\r
1130                 {\r
1131                         uint32 srcdata   = 0;\r
1132                         uint32 srczdata  = 0;\r
1133                         uint32 dstdata   = 0;\r
1134                         uint32 dstzdata  = 0;\r
1135                         uint32 writedata = 0;\r
1136                         uint32 inhibit   = 0;\r
1137                         srcdata = READ_RDATA_16(SRCDATA, a1, a1_phrase_mode);\r
1138                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
1139                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
1140                         if (!inhibit)\r
1141                         {\r
1142                                 writedata= READ_RDATA_16(PATTERNDATA, a2, a2_phrase_mode);\r
1143                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1144                         WRITE_PIXEL_16(a2, writedata);\r
1145                         a1_x += a1_xadd;\r
1146                         a1_y += a1_yadd;\r
1147                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1148                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1149                 }\r
1150                 a1_x+=a1_step_x;\r
1151                 a1_y+=a1_step_y;\r
1152                 a2_x+=a2_step_x;\r
1153                 a2_y+=a2_step_y;\r
1154         }\r
1155         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1156         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1157         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1158 }\r
1159 #endif\r
1160 #ifndef blitter_code_0x00c040e4\r
1161 #define blitter_code_0x00c040e4\r
1162 void blitter_0x00c040e4(void)\r
1163 {\r
1164         while (outer_loop--)\r
1165         {\r
1166                 inner_loop=n_pixels;\r
1167                 while (inner_loop--)\r
1168                 {\r
1169                         uint32 srcdata   = 0;\r
1170                         uint32 srczdata  = 0;\r
1171                         uint32 dstdata   = 0;\r
1172                         uint32 dstzdata  = 0;\r
1173                         uint32 writedata = 0;\r
1174                         uint32 inhibit   = 0;\r
1175                         srcdata = READ_PIXEL_16(a1);\r
1176                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
1177                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
1178                         if (!inhibit)\r
1179                         {\r
1180                                 writedata |= srcdata  & ~dstdata;\r
1181                                 writedata |= srcdata  & dstdata;\r
1182                                 {\r
1183                                 int intensity = srcdata & 0xFF;\r
1184                                 int ia = gd_ia >> 16;\r
1185                                 if(ia & 0x80)\r
1186                                         ia = 0xFFFFFF00 | ia;\r
1187                                 intensity += ia;\r
1188                                 if(intensity < 0)\r
1189                                         intensity = 0;\r
1190                                 if(intensity > 0xFF)\r
1191                                         intensity = 0xFF;\r
1192                                 writedata = (srcdata & 0xFF00) | intensity;\r
1193                                 }\r
1194                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1195                         if (!inhibit)\r
1196                         {\r
1197                                 WRITE_PIXEL_16(a2, writedata);\r
1198                         }\r
1199                         a1_x += a1_xadd;\r
1200                         a1_y += a1_yadd;\r
1201                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1202                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1203                         gd_i[colour_index] += gd_ia;\r
1204                         gd_c[colour_index] += gd_ca;\r
1205                 }\r
1206                 a1_x+=a1_step_x;\r
1207                 a1_y+=a1_step_y;\r
1208                 a2_x+=a2_step_x;\r
1209                 a2_y+=a2_step_y;\r
1210         }\r
1211         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1212         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1213         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1214 }\r
1215 #endif\r
1216 #ifndef blitter_code_0x2000002b\r
1217 #define blitter_code_0x2000002b\r
1218 void blitter_0x2000002b(void)\r
1219 {\r
1220         while (outer_loop--)\r
1221         {\r
1222                 inner_loop=n_pixels;\r
1223                 while (inner_loop--)\r
1224                 {\r
1225                         uint32 srcdata   = 0;\r
1226                         uint32 srczdata  = 0;\r
1227                         uint32 dstdata   = 0;\r
1228                         uint32 dstzdata  = 0;\r
1229                         uint32 writedata = 0;\r
1230                         uint32 inhibit   = 0;\r
1231                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1232                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1233                         if (!inhibit)\r
1234                         {\r
1235                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1236                         if (!inhibit)\r
1237                         {\r
1238                                 WRITE_PIXEL_8(a1, writedata);\r
1239                         }\r
1240                         a1_x += a1_xadd;\r
1241                         a1_y += a1_yadd;\r
1242                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1243                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1244                 }\r
1245                 a1_x+=a1_step_x;\r
1246                 a1_y+=a1_step_y;\r
1247                 a2_x+=a2_step_x;\r
1248                 a2_y+=a2_step_y;\r
1249         }\r
1250         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1251         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1252         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1253 }\r
1254 #endif\r
1255 #ifndef blitter_code_0x00a00058\r
1256 #define blitter_code_0x00a00058\r
1257 void blitter_0x00a00058(void)\r
1258 {\r
1259         while (outer_loop--)\r
1260         {\r
1261                 inner_loop=n_pixels;\r
1262                 while (inner_loop--)\r
1263                 {\r
1264                         uint32 srcdata   = 0;\r
1265                         uint32 srczdata  = 0;\r
1266                         uint32 dstdata   = 0;\r
1267                         uint32 dstzdata  = 0;\r
1268                         uint32 writedata = 0;\r
1269                         uint32 inhibit   = 0;\r
1270                         srcdata = READ_RDATA_8(SRCDATA, a1, a1_phrase_mode);\r
1271                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
1272                         if (!inhibit)\r
1273                         {\r
1274                                 writedata |= ~srcdata & dstdata;\r
1275                                 writedata |= srcdata  & dstdata;\r
1276                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1277                         if (!inhibit)\r
1278                         {\r
1279                                 WRITE_PIXEL_8(a2, writedata);\r
1280                         }\r
1281                         a1_x += a1_xadd;\r
1282                         a1_y += a1_yadd;\r
1283                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1284                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1285                 }\r
1286                 a1_x+=a1_step_x;\r
1287                 a1_y+=a1_step_y;\r
1288                 a2_x+=a2_step_x;\r
1289                 a2_y+=a2_step_y;\r
1290         }\r
1291         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1292         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1293         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1294 }\r
1295 #endif\r
1296 #ifndef blitter_code_0x050100d8\r
1297 #define blitter_code_0x050100d8\r
1298 void blitter_0x050100d8(void)\r
1299 {\r
1300         while (outer_loop--)\r
1301         {\r
1302                 inner_loop=n_pixels;\r
1303                 while (inner_loop--)\r
1304                 {\r
1305                         uint32 srcdata   = 0;\r
1306                         uint32 srczdata  = 0;\r
1307                         uint32 dstdata   = 0;\r
1308                         uint32 dstzdata  = 0;\r
1309                         uint32 writedata = 0;\r
1310                         uint32 inhibit   = 0;\r
1311                         srcdata = READ_PIXEL_8(a1);\r
1312                         srczdata = READ_RDATA_1(SRCZINT, a1, a1_phrase_mode);\r
1313                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
1314                         if (!inhibit)\r
1315                         {\r
1316                                 writedata= READ_RDATA_8(PATTERNDATA, a2, a2_phrase_mode);\r
1317                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1318                         WRITE_PIXEL_8(a2, writedata);\r
1319                         a1_x += a1_xadd;\r
1320                         a1_y += a1_yadd;\r
1321                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1322                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1323                 }\r
1324                 a1_x+=a1_step_x;\r
1325                 a1_y+=a1_step_y;\r
1326                 a2_x+=a2_step_x;\r
1327                 a2_y+=a2_step_y;\r
1328         }\r
1329         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1330         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1331         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1332 }\r
1333 #endif\r
1334 #ifndef blitter_code_0x00c00280\r
1335 #define blitter_code_0x00c00280\r
1336 void blitter_0x00c00280(void)\r
1337 {\r
1338         while (outer_loop--)\r
1339         {\r
1340                 inner_loop=n_pixels;\r
1341                 while (inner_loop--)\r
1342                 {\r
1343                         uint32 srcdata   = 0;\r
1344                         uint32 srczdata  = 0;\r
1345                         uint32 dstdata   = 0;\r
1346                         uint32 dstzdata  = 0;\r
1347                         uint32 writedata = 0;\r
1348                         uint32 inhibit   = 0;\r
1349                         srcdata = READ_PIXEL_1(a2);\r
1350                         dstdata = READ_PIXEL_1(a1);\r
1351                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
1352                         if (!inhibit)\r
1353                         {\r
1354                                 writedata |= srcdata  & ~dstdata;\r
1355                                 writedata |= srcdata  & dstdata;\r
1356                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1357                         if (!inhibit)\r
1358                         {\r
1359                                 WRITE_PIXEL_1(a1, writedata);\r
1360                         }\r
1361                         a1_x += a1_xadd;\r
1362                         a1_y += a1_yadd;\r
1363                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1364                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1365                 }\r
1366                 a1_x+=a1_step_x;\r
1367                 a1_y+=a1_step_y;\r
1368                 a2_x+=a2_step_x;\r
1369                 a2_y+=a2_step_y;\r
1370         }\r
1371         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1372         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1373         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1374 }\r
1375 #endif\r
1376 #ifndef blitter_code_0x04010064\r
1377 #define blitter_code_0x04010064\r
1378 void blitter_0x04010064(void)\r
1379 {\r
1380         while (outer_loop--)\r
1381         {\r
1382                 inner_loop=n_pixels;\r
1383                 while (inner_loop--)\r
1384                 {\r
1385                         uint32 srcdata   = 0;\r
1386                         uint32 srczdata  = 0;\r
1387                         uint32 dstdata   = 0;\r
1388                         uint32 dstzdata  = 0;\r
1389                         uint32 writedata = 0;\r
1390                         uint32 inhibit   = 0;\r
1391                         srcdata = READ_RDATA_16(SRCDATA, a1, a1_phrase_mode);\r
1392                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
1393                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
1394                         if (!inhibit)\r
1395                         {\r
1396                                 writedata= READ_RDATA_16(PATTERNDATA, a2, a2_phrase_mode);\r
1397                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1398                         if (!inhibit)\r
1399                         {\r
1400                                 WRITE_PIXEL_16(a2, writedata);\r
1401                         }\r
1402                         a1_x += a1_xadd;\r
1403                         a1_y += a1_yadd;\r
1404                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1405                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1406                 }\r
1407                 a1_x+=a1_step_x;\r
1408                 a1_y+=a1_step_y;\r
1409                 a2_x+=a2_step_x;\r
1410                 a2_y+=a2_step_y;\r
1411         }\r
1412         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1413         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1414         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1415 }\r
1416 #endif\r
1417 #ifndef blitter_code_0x24010003\r
1418 #define blitter_code_0x24010003\r
1419 void blitter_0x24010003(void)\r
1420 {\r
1421         while (outer_loop--)\r
1422         {\r
1423                 inner_loop=n_pixels;\r
1424                 while (inner_loop--)\r
1425                 {\r
1426                         uint32 srcdata   = 0;\r
1427                         uint32 srczdata  = 0;\r
1428                         uint32 dstdata   = 0;\r
1429                         uint32 dstzdata  = 0;\r
1430                         uint32 writedata = 0;\r
1431                         uint32 inhibit   = 0;\r
1432                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1433                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1434                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1435                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1436                                 WRITE_PIXEL_8(a1, writedata);\r
1437                         a1_x += a1_xadd;\r
1438                         a1_y += a1_yadd;\r
1439                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1440                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1441                 }\r
1442                 a1_x+=a1_step_x;\r
1443                 a1_y+=a1_step_y;\r
1444                 a2_x+=a2_step_x;\r
1445                 a2_y+=a2_step_y;\r
1446         }\r
1447         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1448         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1449         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1450 }\r
1451 #endif\r
1452 #ifndef blitter_code_0x24010023\r
1453 #define blitter_code_0x24010023\r
1454 void blitter_0x24010023(void)\r
1455 {\r
1456         while (outer_loop--)\r
1457         {\r
1458                 inner_loop=n_pixels;\r
1459                 while (inner_loop--)\r
1460                 {\r
1461                         uint32 srcdata   = 0;\r
1462                         uint32 srczdata  = 0;\r
1463                         uint32 dstdata   = 0;\r
1464                         uint32 dstzdata  = 0;\r
1465                         uint32 writedata = 0;\r
1466                         uint32 inhibit   = 0;\r
1467                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1468                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1469                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1470                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1471                                 WRITE_PIXEL_8(a1, writedata);\r
1472                         a1_x += a1_xadd;\r
1473                         a1_y += a1_yadd;\r
1474                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1475                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1476                 }\r
1477                 a1_x+=a1_step_x;\r
1478                 a1_y+=a1_step_y;\r
1479                 a2_x+=a2_step_x;\r
1480                 a2_y+=a2_step_y;\r
1481         }\r
1482         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1483         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1484         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1485 }\r
1486 #endif\r
1487 #ifndef blitter_code_0x00c0429b\r
1488 #define blitter_code_0x00c0429b\r
1489 void blitter_0x00c0429b(void)\r
1490 {\r
1491         while (outer_loop--)\r
1492         {\r
1493                 inner_loop=n_pixels;\r
1494                 while (inner_loop--)\r
1495                 {\r
1496                         uint32 srcdata   = 0;\r
1497                         uint32 srczdata  = 0;\r
1498                         uint32 dstdata   = 0;\r
1499                         uint32 dstzdata  = 0;\r
1500                         uint32 writedata = 0;\r
1501                         uint32 inhibit   = 0;\r
1502                         srcdata = READ_PIXEL_8(a2);\r
1503                         dstdata = READ_PIXEL_8(a1);\r
1504                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
1505                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
1506                         if (!inhibit)\r
1507                         {\r
1508                                 writedata |= srcdata  & ~dstdata;\r
1509                                 writedata |= srcdata  & dstdata;\r
1510                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1511                         if (!inhibit)\r
1512                         {\r
1513                                 WRITE_PIXEL_8(a1, writedata);\r
1514                         }\r
1515                         a1_x += a1_xadd;\r
1516                         a1_y += a1_yadd;\r
1517                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1518                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1519                 }\r
1520                 a1_x+=a1_step_x;\r
1521                 a1_y+=a1_step_y;\r
1522                 a2_x+=a2_step_x;\r
1523                 a2_y+=a2_step_y;\r
1524         }\r
1525         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1526         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1527         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1528 }\r
1529 #endif\r
1530 #ifndef blitter_code_0x00c042db\r
1531 #define blitter_code_0x00c042db\r
1532 void blitter_0x00c042db(void)\r
1533 {\r
1534         uint32 srcdata   = 0;\r
1535         uint32 srczdata  = 0;\r
1536         uint32 dstdata   = 0;\r
1537         uint32 dstzdata  = 0;\r
1538         uint32 writedata = 0;\r
1539         uint32 inhibit   = 0;\r
1540         uint32 compare_value=READ_RDATA_8(PATTERNDATA, a1,a1_phrase_mode);\r
1541 \r
1542         while (outer_loop--)\r
1543         {\r
1544                 inner_loop=n_pixels;\r
1545                 while (inner_loop--)\r
1546                 {\r
1547                         srcdata   = 0;\r
1548                         writedata = 0;\r
1549 \r
1550                         srcdata = READ_PIXEL_8(a1);\r
1551                         if (srcdata != compare_value )\r
1552                         {\r
1553                                 dstdata = READ_PIXEL_8(a2);\r
1554                                 writedata |= srcdata  & ~dstdata;\r
1555                                 writedata |= srcdata  & dstdata;\r
1556                                 WRITE_PIXEL_8(a2, writedata);\r
1557                         } \r
1558                         a1_x += a1_xadd;\r
1559                         a1_y += a1_yadd;\r
1560                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1561                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1562                 }\r
1563                 a1_x+=a1_step_x;\r
1564                 a1_y+=a1_step_y;\r
1565                 a2_x+=a2_step_x;\r
1566                 a2_y+=a2_step_y;\r
1567         }\r
1568         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1569         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1570         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1571 }\r
1572 #endif\r
1573 #ifndef blitter_code_0x1401001b\r
1574 #define blitter_code_0x1401001b\r
1575 void blitter_0x1401001b(void)\r
1576 {\r
1577         while (outer_loop--)\r
1578         {\r
1579                 inner_loop=n_pixels;\r
1580                 while (inner_loop--)\r
1581                 {\r
1582                         uint32 srcdata   = 0;\r
1583                         uint32 srczdata  = 0;\r
1584                         uint32 dstdata   = 0;\r
1585                         uint32 dstzdata  = 0;\r
1586                         uint32 writedata = 0;\r
1587                         uint32 inhibit   = 0;\r
1588                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1589                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1590                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1591                         if (!inhibit)\r
1592                         {\r
1593                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1594                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1595                         WRITE_PIXEL_8(a1, writedata);\r
1596                         a1_x += a1_xadd;\r
1597                         a1_y += a1_yadd;\r
1598                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1599                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1600                 }\r
1601                 a1_x+=a1_step_x;\r
1602                 a1_y+=a1_step_y;\r
1603                 a2_x+=a2_step_x;\r
1604                 a2_y+=a2_step_y;\r
1605         }\r
1606         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1607         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1608         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1609 }\r
1610 #endif\r
1611 #ifndef blitter_code_0x24010004\r
1612 #define blitter_code_0x24010004\r
1613 void blitter_0x24010004(void)\r
1614 {\r
1615         while (outer_loop--)\r
1616         {\r
1617                 inner_loop=n_pixels;\r
1618                 while (inner_loop--)\r
1619                 {\r
1620                         uint32 srcdata   = 0;\r
1621                         uint32 srczdata  = 0;\r
1622                         uint32 dstdata   = 0;\r
1623                         uint32 dstzdata  = 0;\r
1624                         uint32 writedata = 0;\r
1625                         uint32 inhibit   = 0;\r
1626                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
1627                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
1628                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
1629                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
1630                                 WRITE_PIXEL_16(a1, writedata);\r
1631                         a1_x += a1_xadd;\r
1632                         a1_y += a1_yadd;\r
1633                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1634                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1635                 }\r
1636                 a1_x+=a1_step_x;\r
1637                 a1_y+=a1_step_y;\r
1638                 a2_x+=a2_step_x;\r
1639                 a2_y+=a2_step_y;\r
1640         }\r
1641         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1642         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1643         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1644 }\r
1645 #endif\r
1646 #ifndef blitter_code_0x308000a4\r
1647 #define blitter_code_0x308000a4\r
1648 void blitter_0x308000a4(void)\r
1649 {\r
1650         while (outer_loop--)\r
1651         {\r
1652                 inner_loop=n_pixels;\r
1653                 while (inner_loop--)\r
1654                 {\r
1655                         uint32 srcdata   = 0;\r
1656                         uint32 srczdata  = 0;\r
1657                         uint32 dstdata   = 0;\r
1658                         uint32 dstzdata  = 0;\r
1659                         uint32 writedata = 0;\r
1660                         uint32 inhibit   = 0;\r
1661                         srcdata = READ_PIXEL_16(a2);\r
1662                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
1663                                 writedata |= srcdata  & dstdata;\r
1664                         WRITE_PIXEL_16(a1, writedata);\r
1665                         a1_x += a1_xadd;\r
1666                         a1_y += a1_yadd;\r
1667                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1668                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1669                 }\r
1670                 a1_x+=a1_step_x;\r
1671                 a1_y+=a1_step_y;\r
1672                 a2_x+=a2_step_x;\r
1673                 a2_y+=a2_step_y;\r
1674         }\r
1675         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1676         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1677         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1678 }\r
1679 #endif\r
1680 #ifndef blitter_code_0x14010024\r
1681 #define blitter_code_0x14010024\r
1682 void blitter_0x14010024(void)\r
1683 {\r
1684         while (outer_loop--)\r
1685         {\r
1686                 inner_loop=n_pixels;\r
1687                 while (inner_loop--)\r
1688                 {\r
1689                         uint32 srcdata   = 0;\r
1690                         uint32 srczdata  = 0;\r
1691                         uint32 dstdata   = 0;\r
1692                         uint32 dstzdata  = 0;\r
1693                         uint32 writedata = 0;\r
1694                         uint32 inhibit   = 0;\r
1695                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
1696                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
1697                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
1698                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
1699                         WRITE_PIXEL_16(a1, writedata);\r
1700                         a1_x += a1_xadd;\r
1701                         a1_y += a1_yadd;\r
1702                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1703                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1704                 }\r
1705                 a1_x+=a1_step_x;\r
1706                 a1_y+=a1_step_y;\r
1707                 a2_x+=a2_step_x;\r
1708                 a2_y+=a2_step_y;\r
1709         }\r
1710         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1711         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1712         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1713 }\r
1714 #endif\r
1715 #ifndef blitter_code_0x14010023\r
1716 #define blitter_code_0x14010023\r
1717 void blitter_0x14010023(void)\r
1718 {\r
1719         while (outer_loop--)\r
1720         {\r
1721                 inner_loop=n_pixels;\r
1722                 while (inner_loop--)\r
1723                 {\r
1724                         uint32 srcdata   = 0;\r
1725                         uint32 srczdata  = 0;\r
1726                         uint32 dstdata   = 0;\r
1727                         uint32 dstzdata  = 0;\r
1728                         uint32 writedata = 0;\r
1729                         uint32 inhibit   = 0;\r
1730                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1731                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1732                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1733                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1734                         WRITE_PIXEL_8(a1, writedata);\r
1735                         a1_x += a1_xadd;\r
1736                         a1_y += a1_yadd;\r
1737                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1738                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1739                 }\r
1740                 a1_x+=a1_step_x;\r
1741                 a1_y+=a1_step_y;\r
1742                 a2_x+=a2_step_x;\r
1743                 a2_y+=a2_step_y;\r
1744         }\r
1745         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1746         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1747         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1748 }\r
1749 #endif\r
1750 #ifndef blitter_code_0x30e000a4\r
1751 #define blitter_code_0x30e000a4\r
1752 void blitter_0x30e000a4(void)\r
1753 {\r
1754         while (outer_loop--)\r
1755         {\r
1756                 inner_loop=n_pixels;\r
1757                 while (inner_loop--)\r
1758                 {\r
1759                         uint32 srcdata   = 0;\r
1760                         uint32 srczdata  = 0;\r
1761                         uint32 dstdata   = 0;\r
1762                         uint32 dstzdata  = 0;\r
1763                         uint32 writedata = 0;\r
1764                         uint32 inhibit   = 0;\r
1765                         srcdata = READ_PIXEL_16(a2);\r
1766                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
1767                                 writedata |= ~srcdata & dstdata;\r
1768                                 writedata |= srcdata  & ~dstdata;\r
1769                                 writedata |= srcdata  & dstdata;\r
1770                         WRITE_PIXEL_16(a1, writedata);\r
1771                         a1_x += a1_xadd;\r
1772                         a1_y += a1_yadd;\r
1773                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1774                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1775                 }\r
1776                 a1_x+=a1_step_x;\r
1777                 a1_y+=a1_step_y;\r
1778                 a2_x+=a2_step_x;\r
1779                 a2_y+=a2_step_y;\r
1780         }\r
1781         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1782         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1783         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1784 }\r
1785 #endif\r
1786 #ifndef blitter_code_0x10000013\r
1787 #define blitter_code_0x10000013\r
1788 void blitter_0x10000013(void)\r
1789 {\r
1790         while (outer_loop--)\r
1791         {\r
1792                 inner_loop=n_pixels;\r
1793                 while (inner_loop--)\r
1794                 {\r
1795                         uint32 srcdata   = 0;\r
1796                         uint32 srczdata  = 0;\r
1797                         uint32 dstdata   = 0;\r
1798                         uint32 dstzdata  = 0;\r
1799                         uint32 writedata = 0;\r
1800                         uint32 inhibit   = 0;\r
1801                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1802                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1803                         WRITE_PIXEL_8(a1, writedata);\r
1804                         a1_x += a1_xadd;\r
1805                         a1_y += a1_yadd;\r
1806                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1807                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1808                 }\r
1809                 a1_x+=a1_step_x;\r
1810                 a1_y+=a1_step_y;\r
1811                 a2_x+=a2_step_x;\r
1812                 a2_y+=a2_step_y;\r
1813         }\r
1814         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1815         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1816         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1817 }\r
1818 #endif\r
1819 #ifndef blitter_code_0x00c00292\r
1820 #define blitter_code_0x00c00292\r
1821 void blitter_0x00c00292(void)\r
1822 {\r
1823         while (outer_loop--)\r
1824         {\r
1825                 inner_loop=n_pixels;\r
1826                 while (inner_loop--)\r
1827                 {\r
1828                         uint32 srcdata   = 0;\r
1829                         uint32 srczdata  = 0;\r
1830                         uint32 dstdata   = 0;\r
1831                         uint32 dstzdata  = 0;\r
1832                         uint32 writedata = 0;\r
1833                         uint32 inhibit   = 0;\r
1834                         srcdata = READ_PIXEL_4(a2);\r
1835                         dstdata = READ_PIXEL_4(a1);\r
1836                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
1837                                 writedata |= srcdata  & ~dstdata;\r
1838                                 writedata |= srcdata  & dstdata;\r
1839                                 WRITE_PIXEL_4(a1, writedata);\r
1840                         a1_x += a1_xadd;\r
1841                         a1_y += a1_yadd;\r
1842                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1843                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1844                 }\r
1845                 a1_x+=a1_step_x;\r
1846                 a1_y+=a1_step_y;\r
1847                 a2_x+=a2_step_x;\r
1848                 a2_y+=a2_step_y;\r
1849         }\r
1850         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1851         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1852         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1853 }\r
1854 #endif\r
1855 #ifndef blitter_code_0x008000a4\r
1856 #define blitter_code_0x008000a4\r
1857 void blitter_0x008000a4(void)\r
1858 {\r
1859         while (outer_loop--)\r
1860         {\r
1861                 inner_loop=n_pixels;\r
1862                 while (inner_loop--)\r
1863                 {\r
1864                         uint32 srcdata   = 0;\r
1865                         uint32 srczdata  = 0;\r
1866                         uint32 dstdata   = 0;\r
1867                         uint32 dstzdata  = 0;\r
1868                         uint32 writedata = 0;\r
1869                         uint32 inhibit   = 0;\r
1870                         srcdata = READ_PIXEL_16(a2);\r
1871                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
1872                                 writedata |= srcdata  & dstdata;\r
1873                                 WRITE_PIXEL_16(a1, writedata);\r
1874                         a1_x += a1_xadd;\r
1875                         a1_y += a1_yadd;\r
1876                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1877                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1878                 }\r
1879                 a1_x+=a1_step_x;\r
1880                 a1_y+=a1_step_y;\r
1881                 a2_x+=a2_step_x;\r
1882                 a2_y+=a2_step_y;\r
1883         }\r
1884         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1885         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1886         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1887 }\r
1888 #endif\r
1889 #ifndef blitter_code_0x00800092\r
1890 #define blitter_code_0x00800092\r
1891 void blitter_0x00800092(void)\r
1892 {\r
1893         while (outer_loop--)\r
1894         {\r
1895                 inner_loop=n_pixels;\r
1896                 while (inner_loop--)\r
1897                 {\r
1898                         uint32 srcdata   = 0;\r
1899                         uint32 srczdata  = 0;\r
1900                         uint32 dstdata   = 0;\r
1901                         uint32 dstzdata  = 0;\r
1902                         uint32 writedata = 0;\r
1903                         uint32 inhibit   = 0;\r
1904                         srcdata = READ_PIXEL_4(a2);\r
1905                         dstdata = READ_RDATA_4(DSTDATA, a1, a1_phrase_mode);\r
1906                                 writedata |= srcdata  & dstdata;\r
1907                                 WRITE_PIXEL_4(a1, writedata);\r
1908                         a1_x += a1_xadd;\r
1909                         a1_y += a1_yadd;\r
1910                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1911                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1912                 }\r
1913                 a1_x+=a1_step_x;\r
1914                 a1_y+=a1_step_y;\r
1915                 a2_x+=a2_step_x;\r
1916                 a2_y+=a2_step_y;\r
1917         }\r
1918         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1919         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1920         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1921 }\r
1922 #endif\r
1923 #ifndef blitter_code_0x2cc10023\r
1924 #define blitter_code_0x2cc10023\r
1925 void blitter_0x2cc10023(void)\r
1926 {\r
1927         while (outer_loop--)\r
1928         {\r
1929                 inner_loop=n_pixels;\r
1930                 while (inner_loop--)\r
1931                 {\r
1932                         uint32 srcdata   = 0;\r
1933                         uint32 srczdata  = 0;\r
1934                         uint32 dstdata   = 0;\r
1935                         uint32 dstzdata  = 0;\r
1936                         uint32 writedata = 0;\r
1937                         uint32 inhibit   = 0;\r
1938                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1939                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1940                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1941                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
1942                         if (!inhibit)\r
1943                         {\r
1944                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1945                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1946                         if (!inhibit)\r
1947                         {\r
1948                                 WRITE_PIXEL_8(a1, writedata);\r
1949                         }\r
1950                         a1_x += a1_xadd;\r
1951                         a1_y += a1_yadd;\r
1952                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1953                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1954                 }\r
1955                 a1_x+=a1_step_x;\r
1956                 a1_y+=a1_step_y;\r
1957                 a2_x+=a2_step_x;\r
1958                 a2_y+=a2_step_y;\r
1959         }\r
1960         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1961         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
1962         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
1963 }\r
1964 #endif\r
1965 #ifndef blitter_code_0x34c10023\r
1966 #define blitter_code_0x34c10023\r
1967 void blitter_0x34c10023(void)\r
1968 {\r
1969         while (outer_loop--)\r
1970         {\r
1971                 inner_loop=n_pixels;\r
1972                 while (inner_loop--)\r
1973                 {\r
1974                         uint32 srcdata   = 0;\r
1975                         uint32 srczdata  = 0;\r
1976                         uint32 dstdata   = 0;\r
1977                         uint32 dstzdata  = 0;\r
1978                         uint32 writedata = 0;\r
1979                         uint32 inhibit   = 0;\r
1980                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
1981                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
1982                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
1983                         if (!inhibit)\r
1984                         {\r
1985                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
1986                         } else { srczdata=dstzdata; writedata=dstdata; }\r
1987                         WRITE_PIXEL_8(a1, writedata);\r
1988                         a1_x += a1_xadd;\r
1989                         a1_y += a1_yadd;\r
1990                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
1991                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
1992                 }\r
1993                 a1_x+=a1_step_x;\r
1994                 a1_y+=a1_step_y;\r
1995                 a2_x+=a2_step_x;\r
1996                 a2_y+=a2_step_y;\r
1997         }\r
1998         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
1999         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2000         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2001 }\r
2002 #endif\r
2003 #ifndef blitter_code_0x38c0429b\r
2004 #define blitter_code_0x38c0429b\r
2005 void blitter_0x38c0429b(void)\r
2006 {\r
2007         while (outer_loop--)\r
2008         {\r
2009                 inner_loop=n_pixels;\r
2010                 while (inner_loop--)\r
2011                 {\r
2012                         uint32 srcdata   = 0;\r
2013                         uint32 srczdata  = 0;\r
2014                         uint32 dstdata   = 0;\r
2015                         uint32 dstzdata  = 0;\r
2016                         uint32 writedata = 0;\r
2017                         uint32 inhibit   = 0;\r
2018                         srcdata = READ_PIXEL_8(a2);\r
2019                         dstdata = READ_PIXEL_8(a1);\r
2020                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
2021                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2022                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
2023                         if (!inhibit)\r
2024                         {\r
2025                                 writedata |= srcdata  & ~dstdata;\r
2026                                 writedata |= srcdata  & dstdata;\r
2027                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2028                         WRITE_PIXEL_8(a1, writedata);\r
2029                         a1_x += a1_xadd;\r
2030                         a1_y += a1_yadd;\r
2031                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2032                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2033                 }\r
2034                 a1_x+=a1_step_x;\r
2035                 a1_y+=a1_step_y;\r
2036                 a2_x+=a2_step_x;\r
2037                 a2_y+=a2_step_y;\r
2038         }\r
2039         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2040         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2041         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2042 }\r
2043 #endif\r
2044 #ifndef blitter_code_0x3cc1001b\r
2045 #define blitter_code_0x3cc1001b\r
2046 void blitter_0x3cc1001b(void)\r
2047 {\r
2048         while (outer_loop--)\r
2049         {\r
2050                 inner_loop=n_pixels;\r
2051                 while (inner_loop--)\r
2052                 {\r
2053                         uint32 srcdata   = 0;\r
2054                         uint32 srczdata  = 0;\r
2055                         uint32 dstdata   = 0;\r
2056                         uint32 dstzdata  = 0;\r
2057                         uint32 writedata = 0;\r
2058                         uint32 inhibit   = 0;\r
2059                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2060                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2061                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2062                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2063                         if (!inhibit)\r
2064                         {\r
2065                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2066                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2067                         WRITE_PIXEL_8(a1, writedata);\r
2068                         a1_x += a1_xadd;\r
2069                         a1_y += a1_yadd;\r
2070                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2071                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2072                 }\r
2073                 a1_x+=a1_step_x;\r
2074                 a1_y+=a1_step_y;\r
2075                 a2_x+=a2_step_x;\r
2076                 a2_y+=a2_step_y;\r
2077         }\r
2078         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2079         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2080         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2081 }\r
2082 #endif\r
2083 #ifndef blitter_code_0x2cc1001b\r
2084 #define blitter_code_0x2cc1001b\r
2085 void blitter_0x2cc1001b(void)\r
2086 {\r
2087         while (outer_loop--)\r
2088         {\r
2089                 inner_loop=n_pixels;\r
2090                 while (inner_loop--)\r
2091                 {\r
2092                         uint32 srcdata   = 0;\r
2093                         uint32 srczdata  = 0;\r
2094                         uint32 dstdata   = 0;\r
2095                         uint32 dstzdata  = 0;\r
2096                         uint32 writedata = 0;\r
2097                         uint32 inhibit   = 0;\r
2098                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2099                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2100                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2101                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2102                         if (!inhibit)\r
2103                         {\r
2104                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2105                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2106                         if (!inhibit)\r
2107                         {\r
2108                                 WRITE_PIXEL_8(a1, writedata);\r
2109                         }\r
2110                         a1_x += a1_xadd;\r
2111                         a1_y += a1_yadd;\r
2112                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2113                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2114                 }\r
2115                 a1_x+=a1_step_x;\r
2116                 a1_y+=a1_step_y;\r
2117                 a2_x+=a2_step_x;\r
2118                 a2_y+=a2_step_y;\r
2119         }\r
2120         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2121         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2122         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2123 }\r
2124 #endif\r
2125 #ifndef blitter_code_0x08c0429b\r
2126 #define blitter_code_0x08c0429b\r
2127 void blitter_0x08c0429b(void)\r
2128 {\r
2129         while (outer_loop--)\r
2130         {\r
2131                 inner_loop=n_pixels;\r
2132                 while (inner_loop--)\r
2133                 {\r
2134                         uint32 srcdata   = 0;\r
2135                         uint32 srczdata  = 0;\r
2136                         uint32 dstdata   = 0;\r
2137                         uint32 dstzdata  = 0;\r
2138                         uint32 writedata = 0;\r
2139                         uint32 inhibit   = 0;\r
2140                         srcdata = READ_PIXEL_8(a2);\r
2141                         dstdata = READ_PIXEL_8(a1);\r
2142                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
2143                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2144                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
2145                         if (!inhibit)\r
2146                         {\r
2147                                 writedata |= srcdata  & ~dstdata;\r
2148                                 writedata |= srcdata  & dstdata;\r
2149                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2150                         if (!inhibit)\r
2151                         {\r
2152                                 WRITE_PIXEL_8(a1, writedata);\r
2153                         }\r
2154                         a1_x += a1_xadd;\r
2155                         a1_y += a1_yadd;\r
2156                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2157                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2158                 }\r
2159                 a1_x+=a1_step_x;\r
2160                 a1_y+=a1_step_y;\r
2161                 a2_x+=a2_step_x;\r
2162                 a2_y+=a2_step_y;\r
2163         }\r
2164         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2165         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2166         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2167 }\r
2168 #endif\r
2169 #ifndef blitter_code_0x1cc1001b\r
2170 #define blitter_code_0x1cc1001b\r
2171 void blitter_0x1cc1001b(void)\r
2172 {\r
2173         while (outer_loop--)\r
2174         {\r
2175                 inner_loop=n_pixels;\r
2176                 while (inner_loop--)\r
2177                 {\r
2178                         uint32 srcdata   = 0;\r
2179                         uint32 srczdata  = 0;\r
2180                         uint32 dstdata   = 0;\r
2181                         uint32 dstzdata  = 0;\r
2182                         uint32 writedata = 0;\r
2183                         uint32 inhibit   = 0;\r
2184                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2185                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2186                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2187                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2188                         if (!inhibit)\r
2189                         {\r
2190                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2191                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2192                         WRITE_PIXEL_8(a1, writedata);\r
2193                         a1_x += a1_xadd;\r
2194                         a1_y += a1_yadd;\r
2195                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2196                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2197                 }\r
2198                 a1_x+=a1_step_x;\r
2199                 a1_y+=a1_step_y;\r
2200                 a2_x+=a2_step_x;\r
2201                 a2_y+=a2_step_y;\r
2202         }\r
2203         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2204         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2205         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2206 }\r
2207 #endif\r
2208 #ifndef blitter_code_0x0cc1001b\r
2209 #define blitter_code_0x0cc1001b\r
2210 void blitter_0x0cc1001b(void)\r
2211 {\r
2212         while (outer_loop--)\r
2213         {\r
2214                 inner_loop=n_pixels;\r
2215                 while (inner_loop--)\r
2216                 {\r
2217                         uint32 srcdata   = 0;\r
2218                         uint32 srczdata  = 0;\r
2219                         uint32 dstdata   = 0;\r
2220                         uint32 dstzdata  = 0;\r
2221                         uint32 writedata = 0;\r
2222                         uint32 inhibit   = 0;\r
2223                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2224                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2225                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2226                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2227                         if (!inhibit)\r
2228                         {\r
2229                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2230                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2231                         if (!inhibit)\r
2232                         {\r
2233                                 WRITE_PIXEL_8(a1, writedata);\r
2234                         }\r
2235                         a1_x += a1_xadd;\r
2236                         a1_y += a1_yadd;\r
2237                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2238                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2239                 }\r
2240                 a1_x+=a1_step_x;\r
2241                 a1_y+=a1_step_y;\r
2242                 a2_x+=a2_step_x;\r
2243                 a2_y+=a2_step_y;\r
2244         }\r
2245         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2246         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2247         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2248 }\r
2249 #endif\r
2250 #ifndef blitter_code_0x3cc10023\r
2251 #define blitter_code_0x3cc10023\r
2252 void blitter_0x3cc10023(void)\r
2253 {\r
2254         while (outer_loop--)\r
2255         {\r
2256                 inner_loop=n_pixels;\r
2257                 while (inner_loop--)\r
2258                 {\r
2259                         uint32 srcdata   = 0;\r
2260                         uint32 srczdata  = 0;\r
2261                         uint32 dstdata   = 0;\r
2262                         uint32 dstzdata  = 0;\r
2263                         uint32 writedata = 0;\r
2264                         uint32 inhibit   = 0;\r
2265                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2266                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2267                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2268                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2269                         if (!inhibit)\r
2270                         {\r
2271                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2272                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2273                         WRITE_PIXEL_8(a1, writedata);\r
2274                         a1_x += a1_xadd;\r
2275                         a1_y += a1_yadd;\r
2276                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2277                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2278                 }\r
2279                 a1_x+=a1_step_x;\r
2280                 a1_y+=a1_step_y;\r
2281                 a2_x+=a2_step_x;\r
2282                 a2_y+=a2_step_y;\r
2283         }\r
2284         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2285         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2286         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2287 }\r
2288 #endif\r
2289 #ifndef blitter_code_0x08c0009b\r
2290 #define blitter_code_0x08c0009b\r
2291 void blitter_0x08c0009b(void)\r
2292 {\r
2293         while (outer_loop--)\r
2294         {\r
2295                 inner_loop=n_pixels;\r
2296                 while (inner_loop--)\r
2297                 {\r
2298                         uint32 srcdata   = 0;\r
2299                         uint32 srczdata  = 0;\r
2300                         uint32 dstdata   = 0;\r
2301                         uint32 dstzdata  = 0;\r
2302                         uint32 writedata = 0;\r
2303                         uint32 inhibit   = 0;\r
2304                         srcdata = READ_PIXEL_8(a2);\r
2305                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2306                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2307                         if (!inhibit)\r
2308                         {\r
2309                                 writedata |= srcdata  & ~dstdata;\r
2310                                 writedata |= srcdata  & dstdata;\r
2311                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2312                         if (!inhibit)\r
2313                         {\r
2314                                 WRITE_PIXEL_8(a1, writedata);\r
2315                         }\r
2316                         a1_x += a1_xadd;\r
2317                         a1_y += a1_yadd;\r
2318                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2319                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2320                 }\r
2321                 a1_x+=a1_step_x;\r
2322                 a1_y+=a1_step_y;\r
2323                 a2_x+=a2_step_x;\r
2324                 a2_y+=a2_step_y;\r
2325         }\r
2326         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2327         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2328         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2329 }\r
2330 #endif\r
2331 #ifndef blitter_code_0x28c0429b\r
2332 #define blitter_code_0x28c0429b\r
2333 void blitter_0x28c0429b(void)\r
2334 {\r
2335         while (outer_loop--)\r
2336         {\r
2337                 inner_loop=n_pixels;\r
2338                 while (inner_loop--)\r
2339                 {\r
2340                         uint32 srcdata   = 0;\r
2341                         uint32 srczdata  = 0;\r
2342                         uint32 dstdata   = 0;\r
2343                         uint32 dstzdata  = 0;\r
2344                         uint32 writedata = 0;\r
2345                         uint32 inhibit   = 0;\r
2346                         srcdata = READ_PIXEL_8(a2);\r
2347                         dstdata = READ_PIXEL_8(a1);\r
2348                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
2349                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2350                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
2351                         if (!inhibit)\r
2352                         {\r
2353                                 writedata |= srcdata  & ~dstdata;\r
2354                                 writedata |= srcdata  & dstdata;\r
2355                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2356                         if (!inhibit)\r
2357                         {\r
2358                                 WRITE_PIXEL_8(a1, writedata);\r
2359                         }\r
2360                         a1_x += a1_xadd;\r
2361                         a1_y += a1_yadd;\r
2362                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2363                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2364                 }\r
2365                 a1_x+=a1_step_x;\r
2366                 a1_y+=a1_step_y;\r
2367                 a2_x+=a2_step_x;\r
2368                 a2_y+=a2_step_y;\r
2369         }\r
2370         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2371         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2372         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2373 }\r
2374 #endif\r
2375 #ifndef blitter_code_0x18c0429b\r
2376 #define blitter_code_0x18c0429b\r
2377 void blitter_0x18c0429b(void)\r
2378 {\r
2379         while (outer_loop--)\r
2380         {\r
2381                 inner_loop=n_pixels;\r
2382                 while (inner_loop--)\r
2383                 {\r
2384                         uint32 srcdata   = 0;\r
2385                         uint32 srczdata  = 0;\r
2386                         uint32 dstdata   = 0;\r
2387                         uint32 dstzdata  = 0;\r
2388                         uint32 writedata = 0;\r
2389                         uint32 inhibit   = 0;\r
2390                         srcdata = READ_PIXEL_8(a2);\r
2391                         dstdata = READ_PIXEL_8(a1);\r
2392                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
2393                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2394                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
2395                         if (!inhibit)\r
2396                         {\r
2397                                 writedata |= srcdata  & ~dstdata;\r
2398                                 writedata |= srcdata  & dstdata;\r
2399                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2400                         WRITE_PIXEL_8(a1, writedata);\r
2401                         a1_x += a1_xadd;\r
2402                         a1_y += a1_yadd;\r
2403                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2404                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2405                 }\r
2406                 a1_x+=a1_step_x;\r
2407                 a1_y+=a1_step_y;\r
2408                 a2_x+=a2_step_x;\r
2409                 a2_y+=a2_step_y;\r
2410         }\r
2411         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2412         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2413         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2414 }\r
2415 #endif\r
2416 #ifndef blitter_code_0x34010005\r
2417 #define blitter_code_0x34010005\r
2418 void blitter_0x34010005(void)\r
2419 {\r
2420         while (outer_loop--)\r
2421         {\r
2422                 inner_loop=n_pixels;\r
2423                 while (inner_loop--)\r
2424                 {\r
2425                         uint32 srcdata   = 0;\r
2426                         uint32 srczdata  = 0;\r
2427                         uint32 dstdata   = 0;\r
2428                         uint32 dstzdata  = 0;\r
2429                         uint32 writedata = 0;\r
2430                         uint32 inhibit   = 0;\r
2431                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
2432                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
2433                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
2434                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
2435                         WRITE_PIXEL_32(a1, writedata);\r
2436                         a1_x += a1_xadd;\r
2437                         a1_y += a1_yadd;\r
2438                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2439                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2440                 }\r
2441                 a1_x+=a1_step_x;\r
2442                 a1_y+=a1_step_y;\r
2443                 a2_x+=a2_step_x;\r
2444                 a2_y+=a2_step_y;\r
2445         }\r
2446         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2447         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2448         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2449 }\r
2450 #endif\r
2451 #ifndef blitter_code_0x3401002d\r
2452 #define blitter_code_0x3401002d\r
2453 void blitter_0x3401002d(void)\r
2454 {\r
2455         while (outer_loop--)\r
2456         {\r
2457                 inner_loop=n_pixels;\r
2458                 while (inner_loop--)\r
2459                 {\r
2460                         uint32 srcdata   = 0;\r
2461                         uint32 srczdata  = 0;\r
2462                         uint32 dstdata   = 0;\r
2463                         uint32 dstzdata  = 0;\r
2464                         uint32 writedata = 0;\r
2465                         uint32 inhibit   = 0;\r
2466                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
2467                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
2468                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
2469                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
2470                         WRITE_PIXEL_32(a1, writedata);\r
2471                         a1_x += a1_xadd;\r
2472                         a1_y += a1_yadd;\r
2473                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2474                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2475                 }\r
2476                 a1_x+=a1_step_x;\r
2477                 a1_y+=a1_step_y;\r
2478                 a2_x+=a2_step_x;\r
2479                 a2_y+=a2_step_y;\r
2480         }\r
2481         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2482         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2483         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2484 }\r
2485 #endif\r
2486 #ifndef blitter_code_0x14010025\r
2487 #define blitter_code_0x14010025\r
2488 void blitter_0x14010025(void)\r
2489 {\r
2490         while (outer_loop--)\r
2491         {\r
2492                 inner_loop=n_pixels;\r
2493                 while (inner_loop--)\r
2494                 {\r
2495                         uint32 srcdata   = 0;\r
2496                         uint32 srczdata  = 0;\r
2497                         uint32 dstdata   = 0;\r
2498                         uint32 dstzdata  = 0;\r
2499                         uint32 writedata = 0;\r
2500                         uint32 inhibit   = 0;\r
2501                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
2502                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
2503                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
2504                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
2505                         WRITE_PIXEL_32(a1, writedata);\r
2506                         a1_x += a1_xadd;\r
2507                         a1_y += a1_yadd;\r
2508                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2509                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2510                 }\r
2511                 a1_x+=a1_step_x;\r
2512                 a1_y+=a1_step_y;\r
2513                 a2_x+=a2_step_x;\r
2514                 a2_y+=a2_step_y;\r
2515         }\r
2516         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2517         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2518         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2519 }\r
2520 #endif\r
2521 #ifndef blitter_code_0x34010025\r
2522 #define blitter_code_0x34010025\r
2523 void blitter_0x34010025(void)\r
2524 {\r
2525         while (outer_loop--)\r
2526         {\r
2527                 inner_loop=n_pixels;\r
2528                 while (inner_loop--)\r
2529                 {\r
2530                         uint32 srcdata   = 0;\r
2531                         uint32 srczdata  = 0;\r
2532                         uint32 dstdata   = 0;\r
2533                         uint32 dstzdata  = 0;\r
2534                         uint32 writedata = 0;\r
2535                         uint32 inhibit   = 0;\r
2536                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
2537                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
2538                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
2539                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
2540                         WRITE_PIXEL_32(a1, writedata);\r
2541                         a1_x += a1_xadd;\r
2542                         a1_y += a1_yadd;\r
2543                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2544                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2545                 }\r
2546                 a1_x+=a1_step_x;\r
2547                 a1_y+=a1_step_y;\r
2548                 a2_x+=a2_step_x;\r
2549                 a2_y+=a2_step_y;\r
2550         }\r
2551         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2552         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2553         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2554 }\r
2555 #endif\r
2556 #ifndef blitter_code_0x3401006c\r
2557 #define blitter_code_0x3401006c\r
2558 void blitter_0x3401006c(void)\r
2559 {\r
2560         while (outer_loop--)\r
2561         {\r
2562                 inner_loop=n_pixels;\r
2563                 while (inner_loop--)\r
2564                 {\r
2565                         uint32 srcdata   = 0;\r
2566                         uint32 srczdata  = 0;\r
2567                         uint32 dstdata   = 0;\r
2568                         uint32 dstzdata  = 0;\r
2569                         uint32 writedata = 0;\r
2570                         uint32 inhibit   = 0;\r
2571                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
2572                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
2573                         dstdata = READ_RDATA_32(DSTDATA, a2, a2_phrase_mode);\r
2574                                 writedata= READ_RDATA_32(PATTERNDATA, a2, a2_phrase_mode);\r
2575                         WRITE_PIXEL_32(a2, writedata);\r
2576                         a1_x += a1_xadd;\r
2577                         a1_y += a1_yadd;\r
2578                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2579                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2580                 }\r
2581                 a1_x+=a1_step_x;\r
2582                 a1_y+=a1_step_y;\r
2583                 a2_x+=a2_step_x;\r
2584                 a2_y+=a2_step_y;\r
2585         }\r
2586         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2587         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2588         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2589 }\r
2590 #endif\r
2591 #ifndef blitter_code_0x2401022a\r
2592 #define blitter_code_0x2401022a\r
2593 void blitter_0x2401022a(void)\r
2594 {\r
2595         while (outer_loop--)\r
2596         {\r
2597                 inner_loop=n_pixels;\r
2598                 while (inner_loop--)\r
2599                 {\r
2600                         uint32 srcdata   = 0;\r
2601                         uint32 srczdata  = 0;\r
2602                         uint32 dstdata   = 0;\r
2603                         uint32 dstzdata  = 0;\r
2604                         uint32 writedata = 0;\r
2605                         uint32 inhibit   = 0;\r
2606                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
2607                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
2608                         dstdata = READ_PIXEL_4(a1);\r
2609                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
2610                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
2611                                 WRITE_PIXEL_4(a1, writedata);\r
2612                         a1_x += a1_xadd;\r
2613                         a1_y += a1_yadd;\r
2614                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2615                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2616                 }\r
2617                 a1_x+=a1_step_x;\r
2618                 a1_y+=a1_step_y;\r
2619                 a2_x+=a2_step_x;\r
2620                 a2_y+=a2_step_y;\r
2621         }\r
2622         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2623         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2624         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2625 }\r
2626 #endif\r
2627 #ifndef blitter_code_0x2401006a\r
2628 #define blitter_code_0x2401006a\r
2629 void blitter_0x2401006a(void)\r
2630 {\r
2631         while (outer_loop--)\r
2632         {\r
2633                 inner_loop=n_pixels;\r
2634                 while (inner_loop--)\r
2635                 {\r
2636                         uint32 srcdata   = 0;\r
2637                         uint32 srczdata  = 0;\r
2638                         uint32 dstdata   = 0;\r
2639                         uint32 dstzdata  = 0;\r
2640                         uint32 writedata = 0;\r
2641                         uint32 inhibit   = 0;\r
2642                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
2643                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
2644                         dstdata = READ_RDATA_32(DSTDATA, a2, a2_phrase_mode);\r
2645                                 writedata= READ_RDATA_32(PATTERNDATA, a2, a2_phrase_mode);\r
2646                         WRITE_PIXEL_32(a2, writedata);\r
2647                         a1_x += a1_xadd;\r
2648                         a1_y += a1_yadd;\r
2649                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2650                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2651                 }\r
2652                 a1_x+=a1_step_x;\r
2653                 a1_y+=a1_step_y;\r
2654                 a2_x+=a2_step_x;\r
2655                 a2_y+=a2_step_y;\r
2656         }\r
2657         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2658         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2659         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2660 }\r
2661 #endif\r
2662 #ifndef blitter_code_0x00c002e4\r
2663 #define blitter_code_0x00c002e4\r
2664 void blitter_0x00c002e4(void)\r
2665 {\r
2666         while (outer_loop--)\r
2667         {\r
2668                 inner_loop=n_pixels;\r
2669                 while (inner_loop--)\r
2670                 {\r
2671                         uint32 srcdata   = 0;\r
2672                         uint32 srczdata  = 0;\r
2673                         uint32 dstdata   = 0;\r
2674                         uint32 dstzdata  = 0;\r
2675                         uint32 writedata = 0;\r
2676                         uint32 inhibit   = 0;\r
2677                         srcdata = READ_PIXEL_16(a1);\r
2678                         dstdata = READ_PIXEL_16(a2);\r
2679                         dstzdata = READ_RDATA_16(DSTZ, a2, a2_phrase_mode);\r
2680                         srczdata=z_i[colour_index]>>16;\r
2681                                 writedata |= srcdata  & ~dstdata;\r
2682                                 writedata |= srcdata  & dstdata;\r
2683                                 {\r
2684                                 int intensity = srcdata & 0xFF;\r
2685                                 int ia = gd_ia >> 16;\r
2686                                 if(ia & 0x80)\r
2687                                         ia = 0xFFFFFF00 | ia;\r
2688                                 intensity += ia;\r
2689                                 if(intensity < 0)\r
2690                                         intensity = 0;\r
2691                                 if(intensity > 0xFF)\r
2692                                         intensity = 0xFF;\r
2693                                 writedata = (srcdata & 0xFF00) | intensity;\r
2694                                 }\r
2695                                 WRITE_PIXEL_16(a2, writedata);\r
2696                         a1_x += a1_xadd;\r
2697                         a1_y += a1_yadd;\r
2698                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2699                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2700                         z_i[colour_index]+=zadd;\r
2701                         gd_i[colour_index] += gd_ia;\r
2702                         gd_c[colour_index] += gd_ca;\r
2703                 }\r
2704                 a1_x+=a1_step_x;\r
2705                 a1_y+=a1_step_y;\r
2706                 a2_x+=a2_step_x;\r
2707                 a2_y+=a2_step_y;\r
2708         }\r
2709         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2710         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2711         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2712 }\r
2713 #endif\r
2714 #ifndef blitter_code_0x04010212\r
2715 #define blitter_code_0x04010212\r
2716 void blitter_0x04010212(void)\r
2717 {\r
2718         while (outer_loop--)\r
2719         {\r
2720                 inner_loop=n_pixels;\r
2721                 while (inner_loop--)\r
2722                 {\r
2723                         uint32 srcdata   = 0;\r
2724                         uint32 srczdata  = 0;\r
2725                         uint32 dstdata   = 0;\r
2726                         uint32 dstzdata  = 0;\r
2727                         uint32 writedata = 0;\r
2728                         uint32 inhibit   = 0;\r
2729                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
2730                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
2731                         dstdata = READ_PIXEL_4(a1);\r
2732                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
2733                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
2734                                 WRITE_PIXEL_4(a1, writedata);\r
2735                         a1_x += a1_xadd;\r
2736                         a1_y += a1_yadd;\r
2737                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2738                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2739                 }\r
2740                 a1_x+=a1_step_x;\r
2741                 a1_y+=a1_step_y;\r
2742                 a2_x+=a2_step_x;\r
2743                 a2_y+=a2_step_y;\r
2744         }\r
2745         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2746         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2747         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2748 }\r
2749 #endif\r
2750 #ifndef blitter_code_0x2c010023\r
2751 #define blitter_code_0x2c010023\r
2752 void blitter_0x2c010023(void)\r
2753 {\r
2754         while (outer_loop--)\r
2755         {\r
2756                 inner_loop=n_pixels;\r
2757                 while (inner_loop--)\r
2758                 {\r
2759                         uint32 srcdata   = 0;\r
2760                         uint32 srczdata  = 0;\r
2761                         uint32 dstdata   = 0;\r
2762                         uint32 dstzdata  = 0;\r
2763                         uint32 writedata = 0;\r
2764                         uint32 inhibit   = 0;\r
2765                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2766                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2767                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2768                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2769                         if (!inhibit)\r
2770                         {\r
2771                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2772                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2773                         if (!inhibit)\r
2774                         {\r
2775                                 WRITE_PIXEL_8(a1, writedata);\r
2776                         }\r
2777                         a1_x += a1_xadd;\r
2778                         a1_y += a1_yadd;\r
2779                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2780                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2781                 }\r
2782                 a1_x+=a1_step_x;\r
2783                 a1_y+=a1_step_y;\r
2784                 a2_x+=a2_step_x;\r
2785                 a2_y+=a2_step_y;\r
2786         }\r
2787         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2788         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2789         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2790 }\r
2791 #endif\r
2792 #ifndef blitter_code_0x3c010023\r
2793 #define blitter_code_0x3c010023\r
2794 void blitter_0x3c010023(void)\r
2795 {\r
2796         while (outer_loop--)\r
2797         {\r
2798                 inner_loop=n_pixels;\r
2799                 while (inner_loop--)\r
2800                 {\r
2801                         uint32 srcdata   = 0;\r
2802                         uint32 srczdata  = 0;\r
2803                         uint32 dstdata   = 0;\r
2804                         uint32 dstzdata  = 0;\r
2805                         uint32 writedata = 0;\r
2806                         uint32 inhibit   = 0;\r
2807                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
2808                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
2809                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
2810                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2811                         if (!inhibit)\r
2812                         {\r
2813                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
2814                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2815                         WRITE_PIXEL_8(a1, writedata);\r
2816                         a1_x += a1_xadd;\r
2817                         a1_y += a1_yadd;\r
2818                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2819                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2820                 }\r
2821                 a1_x+=a1_step_x;\r
2822                 a1_y+=a1_step_y;\r
2823                 a2_x+=a2_step_x;\r
2824                 a2_y+=a2_step_y;\r
2825         }\r
2826         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2827         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2828         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2829 }\r
2830 #endif\r
2831 #ifndef blitter_code_0x3401006b\r
2832 #define blitter_code_0x3401006b\r
2833 void blitter_0x3401006b(void)\r
2834 {\r
2835         while (outer_loop--)\r
2836         {\r
2837                 inner_loop=n_pixels;\r
2838                 while (inner_loop--)\r
2839                 {\r
2840                         uint32 srcdata   = 0;\r
2841                         uint32 srczdata  = 0;\r
2842                         uint32 dstdata   = 0;\r
2843                         uint32 dstzdata  = 0;\r
2844                         uint32 writedata = 0;\r
2845                         uint32 inhibit   = 0;\r
2846                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
2847                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
2848                         dstdata = READ_RDATA_32(DSTDATA, a2, a2_phrase_mode);\r
2849                         if (!inhibit)\r
2850                         {\r
2851                                 writedata= READ_RDATA_32(PATTERNDATA, a2, a2_phrase_mode);\r
2852                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2853                         WRITE_PIXEL_32(a2, writedata);\r
2854                         a1_x += a1_xadd;\r
2855                         a1_y += a1_yadd;\r
2856                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2857                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2858                 }\r
2859                 a1_x+=a1_step_x;\r
2860                 a1_y+=a1_step_y;\r
2861                 a2_x+=a2_step_x;\r
2862                 a2_y+=a2_step_y;\r
2863         }\r
2864         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2865         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2866         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2867 }\r
2868 #endif\r
2869 #ifndef blitter_code_0x00c000ad\r
2870 #define blitter_code_0x00c000ad\r
2871 void blitter_0x00c000ad(void)\r
2872 {\r
2873         while (outer_loop--)\r
2874         {\r
2875                 inner_loop=n_pixels;\r
2876                 while (inner_loop--)\r
2877                 {\r
2878                         uint32 srcdata   = 0;\r
2879                         uint32 srczdata  = 0;\r
2880                         uint32 dstdata   = 0;\r
2881                         uint32 dstzdata  = 0;\r
2882                         uint32 writedata = 0;\r
2883                         uint32 inhibit   = 0;\r
2884                         srcdata = READ_PIXEL_32(a2);\r
2885                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
2886                                 writedata |= srcdata  & ~dstdata;\r
2887                                 writedata |= srcdata  & dstdata;\r
2888                                 WRITE_PIXEL_32(a1, writedata);\r
2889                         a1_x += a1_xadd;\r
2890                         a1_y += a1_yadd;\r
2891                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2892                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2893                 }\r
2894                 a1_x+=a1_step_x;\r
2895                 a1_y+=a1_step_y;\r
2896                 a2_x+=a2_step_x;\r
2897                 a2_y+=a2_step_y;\r
2898         }\r
2899         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2900         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2901         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2902 }\r
2903 #endif\r
2904 #ifndef blitter_code_0x00e002ad\r
2905 #define blitter_code_0x00e002ad\r
2906 void blitter_0x00e002ad(void)\r
2907 {\r
2908         while (outer_loop--)\r
2909         {\r
2910                 inner_loop=n_pixels;\r
2911                 while (inner_loop--)\r
2912                 {\r
2913                         uint32 srcdata   = 0;\r
2914                         uint32 srczdata  = 0;\r
2915                         uint32 dstdata   = 0;\r
2916                         uint32 dstzdata  = 0;\r
2917                         uint32 writedata = 0;\r
2918                         uint32 inhibit   = 0;\r
2919                         srcdata = READ_PIXEL_32(a2);\r
2920                         dstdata = READ_PIXEL_32(a1);\r
2921                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
2922                                 writedata |= ~srcdata & dstdata;\r
2923                                 writedata |= srcdata  & ~dstdata;\r
2924                                 writedata |= srcdata  & dstdata;\r
2925                                 WRITE_PIXEL_32(a1, writedata);\r
2926                         a1_x += a1_xadd;\r
2927                         a1_y += a1_yadd;\r
2928                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2929                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2930                 }\r
2931                 a1_x+=a1_step_x;\r
2932                 a1_y+=a1_step_y;\r
2933                 a2_x+=a2_step_x;\r
2934                 a2_y+=a2_step_y;\r
2935         }\r
2936         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2937         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2938         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2939 }\r
2940 #endif\r
2941 #ifndef blitter_code_0x08c040a4\r
2942 #define blitter_code_0x08c040a4\r
2943 void blitter_0x08c040a4(void)\r
2944 {\r
2945         while (outer_loop--)\r
2946         {\r
2947                 inner_loop=n_pixels;\r
2948                 while (inner_loop--)\r
2949                 {\r
2950                         uint32 srcdata   = 0;\r
2951                         uint32 srczdata  = 0;\r
2952                         uint32 dstdata   = 0;\r
2953                         uint32 dstzdata  = 0;\r
2954                         uint32 writedata = 0;\r
2955                         uint32 inhibit   = 0;\r
2956                         srcdata = READ_PIXEL_16(a2);\r
2957                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
2958                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
2959                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
2960                         if (!inhibit)\r
2961                         {\r
2962                                 writedata |= srcdata  & ~dstdata;\r
2963                                 writedata |= srcdata  & dstdata;\r
2964                         } else { srczdata=dstzdata; writedata=dstdata; }\r
2965                         if (!inhibit)\r
2966                         {\r
2967                                 WRITE_PIXEL_16(a1, writedata);\r
2968                         }\r
2969                         a1_x += a1_xadd;\r
2970                         a1_y += a1_yadd;\r
2971                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
2972                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
2973                 }\r
2974                 a1_x+=a1_step_x;\r
2975                 a1_y+=a1_step_y;\r
2976                 a2_x+=a2_step_x;\r
2977                 a2_y+=a2_step_y;\r
2978         }\r
2979         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
2980         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
2981         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
2982 }\r
2983 #endif\r
2984 #ifndef blitter_code_0x08c000e4\r
2985 #define blitter_code_0x08c000e4\r
2986 void blitter_0x08c000e4(void)\r
2987 {\r
2988         while (outer_loop--)\r
2989         {\r
2990                 inner_loop=n_pixels;\r
2991                 while (inner_loop--)\r
2992                 {\r
2993                         uint32 srcdata   = 0;\r
2994                         uint32 srczdata  = 0;\r
2995                         uint32 dstdata   = 0;\r
2996                         uint32 dstzdata  = 0;\r
2997                         uint32 writedata = 0;\r
2998                         uint32 inhibit   = 0;\r
2999                         srcdata = READ_PIXEL_16(a1);\r
3000                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
3001                         srczdata=z_i[colour_index]>>16;\r
3002                         if (!inhibit)\r
3003                         {\r
3004                                 writedata |= srcdata  & ~dstdata;\r
3005                                 writedata |= srcdata  & dstdata;\r
3006                                 {\r
3007                                 int intensity = srcdata & 0xFF;\r
3008                                 int ia = gd_ia >> 16;\r
3009                                 if(ia & 0x80)\r
3010                                         ia = 0xFFFFFF00 | ia;\r
3011                                 intensity += ia;\r
3012                                 if(intensity < 0)\r
3013                                         intensity = 0;\r
3014                                 if(intensity > 0xFF)\r
3015                                         intensity = 0xFF;\r
3016                                 writedata = (srcdata & 0xFF00) | intensity;\r
3017                                 }\r
3018                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3019                         if (!inhibit)\r
3020                         {\r
3021                                 WRITE_PIXEL_16(a2, writedata);\r
3022                         }\r
3023                         a1_x += a1_xadd;\r
3024                         a1_y += a1_yadd;\r
3025                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3026                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3027                         z_i[colour_index]+=zadd;\r
3028                         gd_i[colour_index] += gd_ia;\r
3029                         gd_c[colour_index] += gd_ca;\r
3030                 }\r
3031                 a1_x+=a1_step_x;\r
3032                 a1_y+=a1_step_y;\r
3033                 a2_x+=a2_step_x;\r
3034                 a2_y+=a2_step_y;\r
3035         }\r
3036         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3037         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3038         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3039 }\r
3040 #endif\r
3041 #ifndef blitter_code_0x2c010024\r
3042 #define blitter_code_0x2c010024\r
3043 void blitter_0x2c010024(void)\r
3044 {\r
3045         while (outer_loop--)\r
3046         {\r
3047                 inner_loop=n_pixels;\r
3048                 while (inner_loop--)\r
3049                 {\r
3050                         uint32 srcdata   = 0;\r
3051                         uint32 srczdata  = 0;\r
3052                         uint32 dstdata   = 0;\r
3053                         uint32 dstzdata  = 0;\r
3054                         uint32 writedata = 0;\r
3055                         uint32 inhibit   = 0;\r
3056                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3057                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3058                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3059                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3060                         if (!inhibit)\r
3061                         {\r
3062                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3063                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
3064                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3065                         if (!inhibit)\r
3066                         {\r
3067                                 WRITE_PIXEL_16(a1, writedata);\r
3068                         }\r
3069                         a1_x += a1_xadd;\r
3070                         a1_y += a1_yadd;\r
3071                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3072                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3073                         gd_i[colour_index] += gd_ia;\r
3074                         gd_c[colour_index] += gd_ca;\r
3075                 }\r
3076                 a1_x+=a1_step_x;\r
3077                 a1_y+=a1_step_y;\r
3078                 a2_x+=a2_step_x;\r
3079                 a2_y+=a2_step_y;\r
3080         }\r
3081         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3082         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3083         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3084 }\r
3085 #endif\r
3086 #ifndef blitter_code_0x3c010024\r
3087 #define blitter_code_0x3c010024\r
3088 void blitter_0x3c010024(void)\r
3089 {\r
3090         while (outer_loop--)\r
3091         {\r
3092                 inner_loop=n_pixels;\r
3093                 while (inner_loop--)\r
3094                 {\r
3095                         uint32 srcdata   = 0;\r
3096                         uint32 srczdata  = 0;\r
3097                         uint32 dstdata   = 0;\r
3098                         uint32 dstzdata  = 0;\r
3099                         uint32 writedata = 0;\r
3100                         uint32 inhibit   = 0;\r
3101                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3102                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3103                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3104                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3105                         if (!inhibit)\r
3106                         {\r
3107                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3108                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
3109                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3110                         WRITE_PIXEL_16(a1, writedata);\r
3111                         a1_x += a1_xadd;\r
3112                         a1_y += a1_yadd;\r
3113                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3114                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3115                         gd_i[colour_index] += gd_ia;\r
3116                         gd_c[colour_index] += gd_ca;\r
3117                          colour_index=(colour_index+1)&0x3;\r
3118                 }\r
3119                 a1_x+=a1_step_x;\r
3120                 a1_y+=a1_step_y;\r
3121                 a2_x+=a2_step_x;\r
3122                 a2_y+=a2_step_y;\r
3123         }\r
3124         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3125         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3126         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3127 }\r
3128 #endif\r
3129 #ifndef blitter_code_0x0c010024\r
3130 #define blitter_code_0x0c010024\r
3131 void blitter_0x0c010024(void)\r
3132 {\r
3133         while (outer_loop--)\r
3134         {\r
3135                 inner_loop=n_pixels;\r
3136                 while (inner_loop--)\r
3137                 {\r
3138                         uint32 srcdata   = 0;\r
3139                         uint32 srczdata  = 0;\r
3140                         uint32 dstdata   = 0;\r
3141                         uint32 dstzdata  = 0;\r
3142                         uint32 writedata = 0;\r
3143                         uint32 inhibit   = 0;\r
3144                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3145                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3146                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3147                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3148                         if (!inhibit)\r
3149                         {\r
3150                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3151                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
3152                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3153                         if (!inhibit)\r
3154                         {\r
3155                                 WRITE_PIXEL_16(a1, writedata);\r
3156                         }\r
3157                         a1_x += a1_xadd;\r
3158                         a1_y += a1_yadd;\r
3159                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3160                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3161                         gd_i[colour_index] += gd_ia;\r
3162                         gd_c[colour_index] += gd_ca;\r
3163                 }\r
3164                 a1_x+=a1_step_x;\r
3165                 a1_y+=a1_step_y;\r
3166                 a2_x+=a2_step_x;\r
3167                 a2_y+=a2_step_y;\r
3168         }\r
3169         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3170         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3171         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3172 }\r
3173 #endif\r
3174 #ifndef blitter_code_0x1401001d\r
3175 #define blitter_code_0x1401001d\r
3176 void blitter_0x1401001d(void)\r
3177 {\r
3178         while (outer_loop--)\r
3179         {\r
3180                 inner_loop=n_pixels;\r
3181                 while (inner_loop--)\r
3182                 {\r
3183                         uint32 srcdata   = 0;\r
3184                         uint32 srczdata  = 0;\r
3185                         uint32 dstdata   = 0;\r
3186                         uint32 dstzdata  = 0;\r
3187                         uint32 writedata = 0;\r
3188                         uint32 inhibit   = 0;\r
3189                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
3190                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
3191                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
3192                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
3193                         WRITE_PIXEL_32(a1, writedata);\r
3194                         a1_x += a1_xadd;\r
3195                         a1_y += a1_yadd;\r
3196                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3197                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3198                 }\r
3199                 a1_x+=a1_step_x;\r
3200                 a1_y+=a1_step_y;\r
3201                 a2_x+=a2_step_x;\r
3202                 a2_y+=a2_step_y;\r
3203         }\r
3204         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3205         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3206         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3207 }\r
3208 #endif\r
3209 #ifndef blitter_code_0x34c10003\r
3210 #define blitter_code_0x34c10003\r
3211 void blitter_0x34c10003(void)\r
3212 {\r
3213         while (outer_loop--)\r
3214         {\r
3215                 inner_loop=n_pixels;\r
3216                 while (inner_loop--)\r
3217                 {\r
3218                         uint32 srcdata   = 0;\r
3219                         uint32 srczdata  = 0;\r
3220                         uint32 dstdata   = 0;\r
3221                         uint32 dstzdata  = 0;\r
3222                         uint32 writedata = 0;\r
3223                         uint32 inhibit   = 0;\r
3224                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
3225                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
3226                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3227                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
3228                         WRITE_PIXEL_8(a1, writedata);\r
3229                         a1_x += a1_xadd;\r
3230                         a1_y += a1_yadd;\r
3231                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3232                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3233                 }\r
3234                 a1_x+=a1_step_x;\r
3235                 a1_y+=a1_step_y;\r
3236                 a2_x+=a2_step_x;\r
3237                 a2_y+=a2_step_y;\r
3238         }\r
3239         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3240         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3241         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3242 }\r
3243 #endif\r
3244 #ifndef blitter_code_0x306002a4\r
3245 #define blitter_code_0x306002a4\r
3246 void blitter_0x306002a4(void)\r
3247 {\r
3248         while (outer_loop--)\r
3249         {\r
3250                 inner_loop=n_pixels;\r
3251                 while (inner_loop--)\r
3252                 {\r
3253                         uint32 srcdata   = 0;\r
3254                         uint32 srczdata  = 0;\r
3255                         uint32 dstdata   = 0;\r
3256                         uint32 dstzdata  = 0;\r
3257                         uint32 writedata = 0;\r
3258                         uint32 inhibit   = 0;\r
3259                         srcdata = READ_PIXEL_16(a2);\r
3260                         dstdata = READ_PIXEL_16(a1);\r
3261                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
3262                                 writedata |= ~srcdata & dstdata;\r
3263                                 writedata |= srcdata  & ~dstdata;\r
3264                         WRITE_PIXEL_16(a1, writedata);\r
3265                         a1_x += a1_xadd;\r
3266                         a1_y += a1_yadd;\r
3267                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3268                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3269                 }\r
3270                 a1_x+=a1_step_x;\r
3271                 a1_y+=a1_step_y;\r
3272                 a2_x+=a2_step_x;\r
3273                 a2_y+=a2_step_y;\r
3274         }\r
3275         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3276         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3277         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3278 }\r
3279 #endif\r
3280 #ifndef blitter_code_0x08c00292\r
3281 #define blitter_code_0x08c00292\r
3282 void blitter_0x08c00292(void)\r
3283 {\r
3284         while (outer_loop--)\r
3285         {\r
3286                 inner_loop=n_pixels;\r
3287                 while (inner_loop--)\r
3288                 {\r
3289                         uint32 srcdata   = 0;\r
3290                         uint32 srczdata  = 0;\r
3291                         uint32 dstdata   = 0;\r
3292                         uint32 dstzdata  = 0;\r
3293                         uint32 writedata = 0;\r
3294                         uint32 inhibit   = 0;\r
3295                         srcdata = READ_PIXEL_4(a2);\r
3296                         dstdata = READ_PIXEL_4(a1);\r
3297                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
3298                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3299                         if (!inhibit)\r
3300                         {\r
3301                                 writedata |= srcdata  & ~dstdata;\r
3302                                 writedata |= srcdata  & dstdata;\r
3303                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3304                         if (!inhibit)\r
3305                         {\r
3306                                 WRITE_PIXEL_4(a1, writedata);\r
3307                         }\r
3308                         a1_x += a1_xadd;\r
3309                         a1_y += a1_yadd;\r
3310                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3311                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3312                 }\r
3313                 a1_x+=a1_step_x;\r
3314                 a1_y+=a1_step_y;\r
3315                 a2_x+=a2_step_x;\r
3316                 a2_y+=a2_step_y;\r
3317         }\r
3318         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3319         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3320         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3321 }\r
3322 #endif\r
3323 #ifndef blitter_code_0x14c10013\r
3324 #define blitter_code_0x14c10013\r
3325 void blitter_0x14c10013(void)\r
3326 {\r
3327         while (outer_loop--)\r
3328         {\r
3329                 inner_loop=n_pixels;\r
3330                 while (inner_loop--)\r
3331                 {\r
3332                         uint32 srcdata   = 0;\r
3333                         uint32 srczdata  = 0;\r
3334                         uint32 dstdata   = 0;\r
3335                         uint32 dstzdata  = 0;\r
3336                         uint32 writedata = 0;\r
3337                         uint32 inhibit   = 0;\r
3338                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
3339                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
3340                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3341                         if (!inhibit)\r
3342                         {\r
3343                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
3344                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3345                         WRITE_PIXEL_8(a1, writedata);\r
3346                         a1_x += a1_xadd;\r
3347                         a1_y += a1_yadd;\r
3348                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3349                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3350                 }\r
3351                 a1_x+=a1_step_x;\r
3352                 a1_y+=a1_step_y;\r
3353                 a2_x+=a2_step_x;\r
3354                 a2_y+=a2_step_y;\r
3355         }\r
3356         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3357         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3358         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3359 }\r
3360 #endif\r
3361 #ifndef blitter_code_0x38c0009b\r
3362 #define blitter_code_0x38c0009b\r
3363 void blitter_0x38c0009b(void)\r
3364 {\r
3365         while (outer_loop--)\r
3366         {\r
3367                 inner_loop=n_pixels;\r
3368                 while (inner_loop--)\r
3369                 {\r
3370                         uint32 srcdata   = 0;\r
3371                         uint32 srczdata  = 0;\r
3372                         uint32 dstdata   = 0;\r
3373                         uint32 dstzdata  = 0;\r
3374                         uint32 writedata = 0;\r
3375                         uint32 inhibit   = 0;\r
3376                         srcdata = READ_PIXEL_8(a2);\r
3377                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3378                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3379                         if (!inhibit)\r
3380                         {\r
3381                                 writedata |= srcdata  & ~dstdata;\r
3382                                 writedata |= srcdata  & dstdata;\r
3383                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3384                         WRITE_PIXEL_8(a1, writedata);\r
3385                         a1_x += a1_xadd;\r
3386                         a1_y += a1_yadd;\r
3387                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3388                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3389                 }\r
3390                 a1_x+=a1_step_x;\r
3391                 a1_y+=a1_step_y;\r
3392                 a2_x+=a2_step_x;\r
3393                 a2_y+=a2_step_y;\r
3394         }\r
3395         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3396         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3397         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3398 }\r
3399 #endif\r
3400 #ifndef blitter_code_0x34c1001b\r
3401 #define blitter_code_0x34c1001b\r
3402 void blitter_0x34c1001b(void)\r
3403 {\r
3404         while (outer_loop--)\r
3405         {\r
3406                 inner_loop=n_pixels;\r
3407                 while (inner_loop--)\r
3408                 {\r
3409                         uint32 srcdata   = 0;\r
3410                         uint32 srczdata  = 0;\r
3411                         uint32 dstdata   = 0;\r
3412                         uint32 dstzdata  = 0;\r
3413                         uint32 writedata = 0;\r
3414                         uint32 inhibit   = 0;\r
3415                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
3416                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
3417                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3418                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
3419                         WRITE_PIXEL_8(a1, writedata);\r
3420                         a1_x += a1_xadd;\r
3421                         a1_y += a1_yadd;\r
3422                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3423                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3424                 }\r
3425                 a1_x+=a1_step_x;\r
3426                 a1_y+=a1_step_y;\r
3427                 a2_x+=a2_step_x;\r
3428                 a2_y+=a2_step_y;\r
3429         }\r
3430         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3431         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3432         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3433 }\r
3434 #endif\r
3435 #ifndef blitter_code_0x1401001c\r
3436 #define blitter_code_0x1401001c\r
3437 void blitter_0x1401001c(void)\r
3438 {\r
3439         while (outer_loop--)\r
3440         {\r
3441                 inner_loop=n_pixels;\r
3442                 while (inner_loop--)\r
3443                 {\r
3444                         uint32 srcdata   = 0;\r
3445                         uint32 srczdata  = 0;\r
3446                         uint32 dstdata   = 0;\r
3447                         uint32 dstzdata  = 0;\r
3448                         uint32 writedata = 0;\r
3449                         uint32 inhibit   = 0;\r
3450                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3451                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3452                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3453                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3454                         WRITE_PIXEL_16(a1, writedata);\r
3455                         a1_x += a1_xadd;\r
3456                         a1_y += a1_yadd;\r
3457                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3458                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3459                 }\r
3460                 a1_x+=a1_step_x;\r
3461                 a1_y+=a1_step_y;\r
3462                 a2_x+=a2_step_x;\r
3463                 a2_y+=a2_step_y;\r
3464         }\r
3465         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3466         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3467         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3468 }\r
3469 #endif\r
3470 #ifndef blitter_code_0x08c000db\r
3471 #define blitter_code_0x08c000db\r
3472 void blitter_0x08c000db(void)\r
3473 {\r
3474         while (outer_loop--)\r
3475         {\r
3476                 inner_loop=n_pixels;\r
3477                 while (inner_loop--)\r
3478                 {\r
3479                         uint32 srcdata   = 0;\r
3480                         uint32 dstdata   = 0;\r
3481                         uint32 writedata = 0;\r
3482                         srcdata = READ_PIXEL_8(a1);\r
3483                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
3484                         writedata |= srcdata  & ~dstdata;\r
3485                         writedata |= srcdata  & dstdata;\r
3486                         WRITE_PIXEL_8(a2, writedata);\r
3487                         a1_x += a1_xadd;\r
3488                         a1_y += a1_yadd;\r
3489                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3490                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3491                 }\r
3492                 a1_x+=a1_step_x;\r
3493                 a1_y+=a1_step_y;\r
3494                 a2_x+=a2_step_x;\r
3495                 a2_y+=a2_step_y;\r
3496         }\r
3497         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3498         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3499         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3500 }\r
3501 #endif\r
3502 #ifndef blitter_code_0x0401001b\r
3503 #define blitter_code_0x0401001b\r
3504 void blitter_0x0401001b(void)\r
3505 {\r
3506         while (outer_loop--)\r
3507         {\r
3508                 inner_loop=n_pixels;\r
3509                 while (inner_loop--)\r
3510                 {\r
3511                         uint32 srcdata   = 0;\r
3512                         uint32 srczdata  = 0;\r
3513                         uint32 dstdata   = 0;\r
3514                         uint32 dstzdata  = 0;\r
3515                         uint32 writedata = 0;\r
3516                         uint32 inhibit   = 0;\r
3517                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
3518                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
3519                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3520                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
3521                                 WRITE_PIXEL_8(a1, writedata);\r
3522                         a1_x += a1_xadd;\r
3523                         a1_y += a1_yadd;\r
3524                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3525                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3526                 }\r
3527                 a1_x+=a1_step_x;\r
3528                 a1_y+=a1_step_y;\r
3529                 a2_x+=a2_step_x;\r
3530                 a2_y+=a2_step_y;\r
3531         }\r
3532         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3533         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3534         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3535 }\r
3536 #endif\r
3537 #ifndef blitter_code_0x0401001d\r
3538 #define blitter_code_0x0401001d\r
3539 void blitter_0x0401001d(void)\r
3540 {\r
3541         while (outer_loop--)\r
3542         {\r
3543                 inner_loop=n_pixels;\r
3544                 while (inner_loop--)\r
3545                 {\r
3546                         uint32 srcdata   = 0;\r
3547                         uint32 srczdata  = 0;\r
3548                         uint32 dstdata   = 0;\r
3549                         uint32 dstzdata  = 0;\r
3550                         uint32 writedata = 0;\r
3551                         uint32 inhibit   = 0;\r
3552                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
3553                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
3554                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
3555                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
3556                                 WRITE_PIXEL_32(a1, writedata);\r
3557                         a1_x += a1_xadd;\r
3558                         a1_y += a1_yadd;\r
3559                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3560                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3561                 }\r
3562                 a1_x+=a1_step_x;\r
3563                 a1_y+=a1_step_y;\r
3564                 a2_x+=a2_step_x;\r
3565                 a2_y+=a2_step_y;\r
3566         }\r
3567         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3568         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3569         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3570 }\r
3571 #endif\r
3572 #ifndef blitter_code_0x0401001c\r
3573 #define blitter_code_0x0401001c\r
3574 void blitter_0x0401001c(void)\r
3575 {\r
3576         while (outer_loop--)\r
3577         {\r
3578                 inner_loop=n_pixels;\r
3579                 while (inner_loop--)\r
3580                 {\r
3581                         uint32 srcdata   = 0;\r
3582                         uint32 srczdata  = 0;\r
3583                         uint32 dstdata   = 0;\r
3584                         uint32 dstzdata  = 0;\r
3585                         uint32 writedata = 0;\r
3586                         uint32 inhibit   = 0;\r
3587                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3588                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3589                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3590                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3591                                 WRITE_PIXEL_16(a1, writedata);\r
3592                         a1_x += a1_xadd;\r
3593                         a1_y += a1_yadd;\r
3594                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3595                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3596                 }\r
3597                 a1_x+=a1_step_x;\r
3598                 a1_y+=a1_step_y;\r
3599                 a2_x+=a2_step_x;\r
3600                 a2_y+=a2_step_y;\r
3601         }\r
3602         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3603         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3604         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3605 }\r
3606 #endif\r
3607 #ifndef blitter_code_0x36013624\r
3608 #define blitter_code_0x36013624\r
3609 void blitter_0x36013624(void)\r
3610 {\r
3611         while (outer_loop--)\r
3612         {\r
3613                 inner_loop=n_pixels;\r
3614                 while (inner_loop--)\r
3615                 {\r
3616                         uint32 srcdata   = 0;\r
3617                         uint32 srczdata  = 0;\r
3618                         uint32 dstdata   = 0;\r
3619                         uint32 dstzdata  = 0;\r
3620                         uint32 writedata = 0;\r
3621                         uint32 inhibit   = 0;\r
3622                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3623                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3624                         dstdata = READ_PIXEL_16(a1);\r
3625                         dstzdata = READ_ZDATA_16(a1);\r
3626                         srczdata=z_i[colour_index]>>16;\r
3627                         if (srczdata == dstzdata)       inhibit = 1;\r
3628                         if (srczdata >  dstzdata)       inhibit = 1;\r
3629                         if (!inhibit)\r
3630                         {\r
3631                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3632                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
3633                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3634                         WRITE_PIXEL_16(a1, writedata);\r
3635                         WRITE_ZDATA_16(a1, srczdata);\r
3636                         a1_x += a1_xadd;\r
3637                         a1_y += a1_yadd;\r
3638                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3639                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3640                         z_i[colour_index]+=zadd;\r
3641                         gd_i[colour_index] += gd_ia;\r
3642                         gd_c[colour_index] += gd_ca;\r
3643                          colour_index=(colour_index+1)&0x3;\r
3644                 }\r
3645                 a1_x+=a1_step_x;\r
3646                 a1_y+=a1_step_y;\r
3647                 a2_x+=a2_step_x;\r
3648                 a2_y+=a2_step_y;\r
3649         }\r
3650         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3651         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3652         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3653 }\r
3654 #endif\r
3655 #ifndef blitter_code_0x04c10284\r
3656 #define blitter_code_0x04c10284\r
3657 void blitter_0x04c10284(void)\r
3658 {\r
3659         while (outer_loop--)\r
3660         {\r
3661                 inner_loop=n_pixels;\r
3662                 while (inner_loop--)\r
3663                 {\r
3664                         uint32 srcdata   = 0;\r
3665                         uint32 srczdata  = 0;\r
3666                         uint32 dstdata   = 0;\r
3667                         uint32 dstzdata  = 0;\r
3668                         uint32 writedata = 0;\r
3669                         uint32 inhibit   = 0;\r
3670                         srcdata = READ_PIXEL_16(a2);\r
3671                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
3672                         dstdata = READ_PIXEL_16(a1);\r
3673                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
3674                         if (!inhibit)\r
3675                         {\r
3676                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3677                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3678                         if (!inhibit)\r
3679                         {\r
3680                                 WRITE_PIXEL_16(a1, writedata);\r
3681                         }\r
3682                         a1_x += a1_xadd;\r
3683                         a1_y += a1_yadd;\r
3684                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3685                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3686                 }\r
3687                 a1_x+=a1_step_x;\r
3688                 a1_y+=a1_step_y;\r
3689                 a2_x+=a2_step_x;\r
3690                 a2_y+=a2_step_y;\r
3691         }\r
3692         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3693         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3694         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3695 }\r
3696 #endif\r
3697 #ifndef blitter_code_0x14010004\r
3698 #define blitter_code_0x14010004\r
3699 void blitter_0x14010004(void)\r
3700 {\r
3701         while (outer_loop--)\r
3702         {\r
3703                 inner_loop=n_pixels;\r
3704                 while (inner_loop--)\r
3705                 {\r
3706                         uint32 srcdata   = 0;\r
3707                         uint32 srczdata  = 0;\r
3708                         uint32 dstdata   = 0;\r
3709                         uint32 dstzdata  = 0;\r
3710                         uint32 writedata = 0;\r
3711                         uint32 inhibit   = 0;\r
3712                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
3713                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
3714                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3715                         if (!inhibit)\r
3716                         {\r
3717                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
3718                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3719                         WRITE_PIXEL_16(a1, writedata);\r
3720                         a1_x += a1_xadd;\r
3721                         a1_y += a1_yadd;\r
3722                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3723                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3724                 }\r
3725                 a1_x+=a1_step_x;\r
3726                 a1_y+=a1_step_y;\r
3727                 a2_x+=a2_step_x;\r
3728                 a2_y+=a2_step_y;\r
3729         }\r
3730         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3731         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3732         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3733 }\r
3734 #endif\r
3735 #ifndef blitter_code_0x06c076e4\r
3736 #define blitter_code_0x06c076e4\r
3737 void blitter_0x06c076e4(void)\r
3738 {\r
3739         while (outer_loop--)\r
3740         {\r
3741                 inner_loop=n_pixels;\r
3742                 while (inner_loop--)\r
3743                 {\r
3744                         uint32 srcdata   = 0;\r
3745                         uint32 srczdata  = 0;\r
3746                         uint32 dstdata   = 0;\r
3747                         uint32 dstzdata  = 0;\r
3748                         uint32 writedata = 0;\r
3749                         uint32 inhibit   = 0;\r
3750                         srcdata = READ_PIXEL_16(a1);\r
3751                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
3752                         dstdata = READ_PIXEL_16(a2);\r
3753                         dstzdata = READ_ZDATA_16(a2);\r
3754                         srczdata=z_i[colour_index]>>16;\r
3755                         if (srczdata == dstzdata)       inhibit = 1;\r
3756                         if (srczdata >  dstzdata)       inhibit = 1;\r
3757                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
3758                         if (!inhibit)\r
3759                         {\r
3760                                 writedata |= srcdata  & ~dstdata;\r
3761                                 writedata |= srcdata  & dstdata;\r
3762                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3763                         if (!inhibit)\r
3764                         {\r
3765                                 WRITE_PIXEL_16(a2, writedata);\r
3766                                 WRITE_ZDATA_16(a2, srczdata);\r
3767                         }\r
3768                         a1_x += a1_xadd;\r
3769                         a1_y += a1_yadd;\r
3770                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3771                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3772                         z_i[colour_index]+=zadd;\r
3773                 }\r
3774                 a1_x+=a1_step_x;\r
3775                 a1_y+=a1_step_y;\r
3776                 a2_x+=a2_step_x;\r
3777                 a2_y+=a2_step_y;\r
3778         }\r
3779         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3780         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3781         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3782 }\r
3783 #endif\r
3784 #ifndef blitter_code_0x30c040a4\r
3785 #define blitter_code_0x30c040a4\r
3786 void blitter_0x30c040a4(void)\r
3787 {\r
3788         while (outer_loop--)\r
3789         {\r
3790                 inner_loop=n_pixels;\r
3791                 while (inner_loop--)\r
3792                 {\r
3793                         uint32 srcdata   = 0;\r
3794                         uint32 srczdata  = 0;\r
3795                         uint32 dstdata   = 0;\r
3796                         uint32 dstzdata  = 0;\r
3797                         uint32 writedata = 0;\r
3798                         uint32 inhibit   = 0;\r
3799                         srcdata = READ_PIXEL_16(a2);\r
3800                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
3801                         srczdata=z_i[colour_index]>>16;\r
3802                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
3803                         if (!inhibit)\r
3804                         {\r
3805                                 writedata |= srcdata  & ~dstdata;\r
3806                                 writedata |= srcdata  & dstdata;\r
3807                                 {\r
3808                                 int intensity = srcdata & 0xFF;\r
3809                                 int ia = gd_ia >> 16;\r
3810                                 if(ia & 0x80)\r
3811                                         ia = 0xFFFFFF00 | ia;\r
3812                                 intensity += ia;\r
3813                                 if(intensity < 0)\r
3814                                         intensity = 0;\r
3815                                 if(intensity > 0xFF)\r
3816                                         intensity = 0xFF;\r
3817                                 writedata = (srcdata & 0xFF00) | intensity;\r
3818                                 }\r
3819                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3820                         WRITE_PIXEL_16(a1, writedata);\r
3821                         a1_x += a1_xadd;\r
3822                         a1_y += a1_yadd;\r
3823                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3824                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3825                         z_i[colour_index]+=zadd;\r
3826                         gd_i[colour_index] += gd_ia;\r
3827                         gd_c[colour_index] += gd_ca;\r
3828                          colour_index=(colour_index+1)&0x3;\r
3829                 }\r
3830                 a1_x+=a1_step_x;\r
3831                 a1_y+=a1_step_y;\r
3832                 a2_x+=a2_step_x;\r
3833                 a2_y+=a2_step_y;\r
3834         }\r
3835         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3836         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3837         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3838 }\r
3839 #endif\r
3840 #ifndef blitter_code_0x00c040db\r
3841 #define blitter_code_0x00c040db\r
3842 void blitter_0x00c040db(void)\r
3843 {\r
3844         while (outer_loop--)\r
3845         {\r
3846                 inner_loop=n_pixels;\r
3847                 while (inner_loop--)\r
3848                 {\r
3849                         uint32 srcdata   = 0;\r
3850                         uint32 srczdata  = 0;\r
3851                         uint32 dstdata   = 0;\r
3852                         uint32 dstzdata  = 0;\r
3853                         uint32 writedata = 0;\r
3854                         uint32 inhibit   = 0;\r
3855                         srcdata = READ_PIXEL_8(a1);\r
3856                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
3857                         if (srcdata == READ_RDATA_8(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
3858                         if (!inhibit)\r
3859                         {\r
3860                                 writedata |= srcdata  & ~dstdata;\r
3861                                 writedata |= srcdata  & dstdata;\r
3862                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3863                         if (!inhibit)\r
3864                         {\r
3865                                 WRITE_PIXEL_8(a2, writedata);\r
3866                         }\r
3867                         a1_x += a1_xadd;\r
3868                         a1_y += a1_yadd;\r
3869                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3870                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3871                 }\r
3872                 a1_x+=a1_step_x;\r
3873                 a1_y+=a1_step_y;\r
3874                 a2_x+=a2_step_x;\r
3875                 a2_y+=a2_step_y;\r
3876         }\r
3877         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3878         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3879         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3880 }\r
3881 #endif\r
3882 #ifndef blitter_code_0x30c0429b\r
3883 #define blitter_code_0x30c0429b\r
3884 void blitter_0x30c0429b(void)\r
3885 {\r
3886         while (outer_loop--)\r
3887         {\r
3888                 inner_loop=n_pixels;\r
3889                 while (inner_loop--)\r
3890                 {\r
3891                         uint32 srcdata   = 0;\r
3892                         uint32 srczdata  = 0;\r
3893                         uint32 dstdata   = 0;\r
3894                         uint32 dstzdata  = 0;\r
3895                         uint32 writedata = 0;\r
3896                         uint32 inhibit   = 0;\r
3897                         srcdata = READ_PIXEL_8(a2);\r
3898                         dstdata = READ_PIXEL_8(a1);\r
3899                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
3900                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
3901                         if (!inhibit)\r
3902                         {\r
3903                                 writedata |= srcdata  & ~dstdata;\r
3904                                 writedata |= srcdata  & dstdata;\r
3905                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3906                         WRITE_PIXEL_8(a1, writedata);\r
3907                         a1_x += a1_xadd;\r
3908                         a1_y += a1_yadd;\r
3909                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3910                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3911                 }\r
3912                 a1_x+=a1_step_x;\r
3913                 a1_y+=a1_step_y;\r
3914                 a2_x+=a2_step_x;\r
3915                 a2_y+=a2_step_y;\r
3916         }\r
3917         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3918         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3919         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3920 }\r
3921 #endif\r
3922 #ifndef blitter_code_0x08c0409b\r
3923 #define blitter_code_0x08c0409b\r
3924 void blitter_0x08c0409b(void)\r
3925 {\r
3926         while (outer_loop--)\r
3927         {\r
3928                 inner_loop=n_pixels;\r
3929                 while (inner_loop--)\r
3930                 {\r
3931                         uint32 srcdata   = 0;\r
3932                         uint32 srczdata  = 0;\r
3933                         uint32 dstdata   = 0;\r
3934                         uint32 dstzdata  = 0;\r
3935                         uint32 writedata = 0;\r
3936                         uint32 inhibit   = 0;\r
3937                         srcdata = READ_PIXEL_8(a2);\r
3938                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
3939                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
3940                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
3941                         if (!inhibit)\r
3942                         {\r
3943                                 writedata |= srcdata  & ~dstdata;\r
3944                                 writedata |= srcdata  & dstdata;\r
3945                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3946                         if (!inhibit)\r
3947                         {\r
3948                                 WRITE_PIXEL_8(a1, writedata);\r
3949                         }\r
3950                         a1_x += a1_xadd;\r
3951                         a1_y += a1_yadd;\r
3952                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3953                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3954                 }\r
3955                 a1_x+=a1_step_x;\r
3956                 a1_y+=a1_step_y;\r
3957                 a2_x+=a2_step_x;\r
3958                 a2_y+=a2_step_y;\r
3959         }\r
3960         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
3961         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
3962         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
3963 }\r
3964 #endif\r
3965 #ifndef blitter_code_0x00c0029b\r
3966 #define blitter_code_0x00c0029b\r
3967 void blitter_0x00c0029b(void)\r
3968 {\r
3969         while (outer_loop--)\r
3970         {\r
3971                 inner_loop=n_pixels;\r
3972                 while (inner_loop--)\r
3973                 {\r
3974                         uint32 srcdata   = 0;\r
3975                         uint32 srczdata  = 0;\r
3976                         uint32 dstdata   = 0;\r
3977                         uint32 dstzdata  = 0;\r
3978                         uint32 writedata = 0;\r
3979                         uint32 inhibit   = 0;\r
3980                         srcdata = READ_PIXEL_8(a2);\r
3981                         dstdata = READ_PIXEL_8(a1);\r
3982                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
3983                         if (!inhibit)\r
3984                         {\r
3985                                 writedata |= srcdata  & ~dstdata;\r
3986                                 writedata |= srcdata  & dstdata;\r
3987                         } else { srczdata=dstzdata; writedata=dstdata; }\r
3988                         if (!inhibit)\r
3989                         {\r
3990                                 WRITE_PIXEL_8(a1, writedata);\r
3991                         }\r
3992                         a1_x += a1_xadd;\r
3993                         a1_y += a1_yadd;\r
3994                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
3995                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
3996                 }\r
3997                 a1_x+=a1_step_x;\r
3998                 a1_y+=a1_step_y;\r
3999                 a2_x+=a2_step_x;\r
4000                 a2_y+=a2_step_y;\r
4001         }\r
4002         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4003         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4004         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4005 }\r
4006 #endif\r
4007 #ifndef blitter_code_0x20c00003\r
4008 #define blitter_code_0x20c00003\r
4009 void blitter_0x20c00003(void)\r
4010 {\r
4011         while (outer_loop--)\r
4012         {\r
4013                 inner_loop=n_pixels;\r
4014                 while (inner_loop--)\r
4015                 {\r
4016                         uint32 srcdata   = 0;\r
4017                         uint32 srczdata  = 0;\r
4018                         uint32 dstdata   = 0;\r
4019                         uint32 dstzdata  = 0;\r
4020                         uint32 writedata = 0;\r
4021                         uint32 inhibit   = 0;\r
4022                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
4023                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
4024                                 writedata |= srcdata  & ~dstdata;\r
4025                                 writedata |= srcdata  & dstdata;\r
4026                                 WRITE_PIXEL_8(a1, writedata);\r
4027                         a1_x += a1_xadd;\r
4028                         a1_y += a1_yadd;\r
4029                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4030                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4031                 }\r
4032                 a1_x+=a1_step_x;\r
4033                 a1_y+=a1_step_y;\r
4034                 a2_x+=a2_step_x;\r
4035                 a2_y+=a2_step_y;\r
4036         }\r
4037         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4038         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4039         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4040 }\r
4041 #endif\r
4042 #ifndef blitter_code_0x00c0001b\r
4043 #define blitter_code_0x00c0001b\r
4044 void blitter_0x00c0001b(void)\r
4045 {\r
4046         while (outer_loop--)\r
4047         {\r
4048                 inner_loop=n_pixels;\r
4049                 while (inner_loop--)\r
4050                 {\r
4051                         uint32 srcdata   = 0;\r
4052                         uint32 srczdata  = 0;\r
4053                         uint32 dstdata   = 0;\r
4054                         uint32 dstzdata  = 0;\r
4055                         uint32 writedata = 0;\r
4056                         uint32 inhibit   = 0;\r
4057                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
4058                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
4059                                 writedata |= srcdata  & ~dstdata;\r
4060                                 writedata |= srcdata  & dstdata;\r
4061                                 WRITE_PIXEL_8(a1, writedata);\r
4062                         a1_x += a1_xadd;\r
4063                         a1_y += a1_yadd;\r
4064                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4065                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4066                 }\r
4067                 a1_x+=a1_step_x;\r
4068                 a1_y+=a1_step_y;\r
4069                 a2_x+=a2_step_x;\r
4070                 a2_y+=a2_step_y;\r
4071         }\r
4072         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4073         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4074         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4075 }\r
4076 #endif\r
4077 #ifndef blitter_code_0x20c0002b\r
4078 #define blitter_code_0x20c0002b\r
4079 void blitter_0x20c0002b(void)\r
4080 {\r
4081         while (outer_loop--)\r
4082         {\r
4083                 inner_loop=n_pixels;\r
4084                 while (inner_loop--)\r
4085                 {\r
4086                         uint32 srcdata   = 0;\r
4087                         uint32 srczdata  = 0;\r
4088                         uint32 dstdata   = 0;\r
4089                         uint32 dstzdata  = 0;\r
4090                         uint32 writedata = 0;\r
4091                         uint32 inhibit   = 0;\r
4092                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
4093                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
4094                                 writedata |= srcdata  & ~dstdata;\r
4095                                 writedata |= srcdata  & dstdata;\r
4096                                 WRITE_PIXEL_8(a1, writedata);\r
4097                         a1_x += a1_xadd;\r
4098                         a1_y += a1_yadd;\r
4099                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4100                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4101                 }\r
4102                 a1_x+=a1_step_x;\r
4103                 a1_y+=a1_step_y;\r
4104                 a2_x+=a2_step_x;\r
4105                 a2_y+=a2_step_y;\r
4106         }\r
4107         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4108         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4109         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4110 }\r
4111 #endif\r
4112 #ifndef blitter_code_0x30c0001c\r
4113 #define blitter_code_0x30c0001c\r
4114 void blitter_0x30c0001c(void)\r
4115 {\r
4116         while (outer_loop--)\r
4117         {\r
4118                 inner_loop=n_pixels;\r
4119                 while (inner_loop--)\r
4120                 {\r
4121                         uint32 srcdata   = 0;\r
4122                         uint32 srczdata  = 0;\r
4123                         uint32 dstdata   = 0;\r
4124                         uint32 dstzdata  = 0;\r
4125                         uint32 writedata = 0;\r
4126                         uint32 inhibit   = 0;\r
4127                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4128                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4129                                 writedata |= srcdata  & ~dstdata;\r
4130                                 writedata |= srcdata  & dstdata;\r
4131                         WRITE_PIXEL_16(a1, writedata);\r
4132                         a1_x += a1_xadd;\r
4133                         a1_y += a1_yadd;\r
4134                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4135                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4136                 }\r
4137                 a1_x+=a1_step_x;\r
4138                 a1_y+=a1_step_y;\r
4139                 a2_x+=a2_step_x;\r
4140                 a2_y+=a2_step_y;\r
4141         }\r
4142         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4143         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4144         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4145 }\r
4146 #endif\r
4147 #ifndef blitter_code_0x00c000db\r
4148 #define blitter_code_0x00c000db\r
4149 void blitter_0x00c000db(void)\r
4150 {\r
4151         while (outer_loop--)\r
4152         {\r
4153                 inner_loop=n_pixels;\r
4154                 while (inner_loop--)\r
4155                 {\r
4156                         uint32 srcdata   = 0;\r
4157                         uint32 srczdata  = 0;\r
4158                         uint32 dstdata   = 0;\r
4159                         uint32 dstzdata  = 0;\r
4160                         uint32 writedata = 0;\r
4161                         uint32 inhibit   = 0;\r
4162                         srcdata = READ_PIXEL_8(a1);\r
4163                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
4164                                 writedata |= srcdata  & ~dstdata;\r
4165                                 writedata |= srcdata  & dstdata;\r
4166                                 WRITE_PIXEL_8(a2, writedata);\r
4167                         a1_x += a1_xadd;\r
4168                         a1_y += a1_yadd;\r
4169                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4170                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4171                 }\r
4172                 a1_x+=a1_step_x;\r
4173                 a1_y+=a1_step_y;\r
4174                 a2_x+=a2_step_x;\r
4175                 a2_y+=a2_step_y;\r
4176         }\r
4177         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4178         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4179         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4180 }\r
4181 #endif\r
4182 #ifndef blitter_code_0x00c00023\r
4183 #define blitter_code_0x00c00023\r
4184 void blitter_0x00c00023(void)\r
4185 {\r
4186         while (outer_loop--)\r
4187         {\r
4188                 inner_loop=n_pixels;\r
4189                 while (inner_loop--)\r
4190                 {\r
4191                         uint32 srcdata   = 0;\r
4192                         uint32 srczdata  = 0;\r
4193                         uint32 dstdata   = 0;\r
4194                         uint32 dstzdata  = 0;\r
4195                         uint32 writedata = 0;\r
4196                         uint32 inhibit   = 0;\r
4197                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
4198                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
4199                                 writedata |= srcdata  & ~dstdata;\r
4200                                 writedata |= srcdata  & dstdata;\r
4201                                 WRITE_PIXEL_8(a1, writedata);\r
4202                         a1_x += a1_xadd;\r
4203                         a1_y += a1_yadd;\r
4204                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4205                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4206                 }\r
4207                 a1_x+=a1_step_x;\r
4208                 a1_y+=a1_step_y;\r
4209                 a2_x+=a2_step_x;\r
4210                 a2_y+=a2_step_y;\r
4211         }\r
4212         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4213         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4214         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4215 }\r
4216 #endif\r
4217 #ifndef blitter_code_0x34c10024\r
4218 #define blitter_code_0x34c10024\r
4219 void blitter_0x34c10024(void)\r
4220 {\r
4221         while (outer_loop--)\r
4222         {\r
4223                 inner_loop=n_pixels;\r
4224                 while (inner_loop--)\r
4225                 {\r
4226                         uint32 srcdata   = 0;\r
4227                         uint32 srczdata  = 0;\r
4228                         uint32 dstdata   = 0;\r
4229                         uint32 dstzdata  = 0;\r
4230                         uint32 writedata = 0;\r
4231                         uint32 inhibit   = 0;\r
4232                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4233                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4234                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4235                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4236                         WRITE_PIXEL_16(a1, writedata);\r
4237                         a1_x += a1_xadd;\r
4238                         a1_y += a1_yadd;\r
4239                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4240                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4241                 }\r
4242                 a1_x+=a1_step_x;\r
4243                 a1_y+=a1_step_y;\r
4244                 a2_x+=a2_step_x;\r
4245                 a2_y+=a2_step_y;\r
4246         }\r
4247         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4248         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4249         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4250 }\r
4251 #endif\r
4252 #ifndef blitter_code_0x3cc10024\r
4253 #define blitter_code_0x3cc10024\r
4254 void blitter_0x3cc10024(void)\r
4255 {\r
4256         while (outer_loop--)\r
4257         {\r
4258                 inner_loop=n_pixels;\r
4259                 while (inner_loop--)\r
4260                 {\r
4261                         uint32 srcdata   = 0;\r
4262                         uint32 srczdata  = 0;\r
4263                         uint32 dstdata   = 0;\r
4264                         uint32 dstzdata  = 0;\r
4265                         uint32 writedata = 0;\r
4266                         uint32 inhibit   = 0;\r
4267                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4268                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4269                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4270                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4271                         if (!inhibit)\r
4272                         {\r
4273                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4274                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4275                         WRITE_PIXEL_16(a1, writedata);\r
4276                         a1_x += a1_xadd;\r
4277                         a1_y += a1_yadd;\r
4278                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4279                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4280                 }\r
4281                 a1_x+=a1_step_x;\r
4282                 a1_y+=a1_step_y;\r
4283                 a2_x+=a2_step_x;\r
4284                 a2_y+=a2_step_y;\r
4285         }\r
4286         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4287         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4288         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4289 }\r
4290 #endif\r
4291 #ifndef blitter_code_0x04c10084\r
4292 #define blitter_code_0x04c10084\r
4293 void blitter_0x04c10084(void)\r
4294 {\r
4295         while (outer_loop--)\r
4296         {\r
4297                 inner_loop=n_pixels;\r
4298                 while (inner_loop--)\r
4299                 {\r
4300                         uint32 srcdata   = 0;\r
4301                         uint32 srczdata  = 0;\r
4302                         uint32 dstdata   = 0;\r
4303                         uint32 dstzdata  = 0;\r
4304                         uint32 writedata = 0;\r
4305                         uint32 inhibit   = 0;\r
4306                         srcdata = READ_PIXEL_16(a2);\r
4307                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
4308                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4309                         if (!inhibit)\r
4310                         {\r
4311                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4312                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4313                         if (!inhibit)\r
4314                         {\r
4315                                 WRITE_PIXEL_16(a1, writedata);\r
4316                         }\r
4317                         a1_x += a1_xadd;\r
4318                         a1_y += a1_yadd;\r
4319                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4320                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4321                 }\r
4322                 a1_x+=a1_step_x;\r
4323                 a1_y+=a1_step_y;\r
4324                 a2_x+=a2_step_x;\r
4325                 a2_y+=a2_step_y;\r
4326         }\r
4327         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4328         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4329         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4330 }\r
4331 #endif\r
4332 #ifndef blitter_code_0x04010004\r
4333 #define blitter_code_0x04010004\r
4334 void blitter_0x04010004(void)\r
4335 {\r
4336         while (outer_loop--)\r
4337         {\r
4338                 inner_loop=n_pixels;\r
4339                 while (inner_loop--)\r
4340                 {\r
4341                         uint32 srcdata   = 0;\r
4342                         uint32 srczdata  = 0;\r
4343                         uint32 dstdata   = 0;\r
4344                         uint32 dstzdata  = 0;\r
4345                         uint32 writedata = 0;\r
4346                         uint32 inhibit   = 0;\r
4347                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4348                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4349                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4350                         if (!inhibit)\r
4351                         {\r
4352                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4353                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4354                         if (!inhibit)\r
4355                         {\r
4356                                 WRITE_PIXEL_16(a1, writedata);\r
4357                         }\r
4358                         a1_x += a1_xadd;\r
4359                         a1_y += a1_yadd;\r
4360                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4361                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4362                 }\r
4363                 a1_x+=a1_step_x;\r
4364                 a1_y+=a1_step_y;\r
4365                 a2_x+=a2_step_x;\r
4366                 a2_y+=a2_step_y;\r
4367         }\r
4368         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4369         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4370         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4371 }\r
4372 #endif\r
4373 #ifndef blitter_code_0x30c000e4\r
4374 #define blitter_code_0x30c000e4\r
4375 void blitter_0x30c000e4(void)\r
4376 {\r
4377         while (outer_loop--)\r
4378         {\r
4379                 inner_loop=n_pixels;\r
4380                 while (inner_loop--)\r
4381                 {\r
4382                         uint32 srcdata   = 0;\r
4383                         uint32 srczdata  = 0;\r
4384                         uint32 dstdata   = 0;\r
4385                         uint32 dstzdata  = 0;\r
4386                         uint32 writedata = 0;\r
4387                         uint32 inhibit   = 0;\r
4388                         srcdata = READ_PIXEL_16(a1);\r
4389                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
4390                         if (!inhibit)\r
4391                         {\r
4392                                 writedata |= srcdata  & ~dstdata;\r
4393                                 writedata |= srcdata  & dstdata;\r
4394                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4395                         WRITE_PIXEL_16(a2, writedata);\r
4396                         a1_x += a1_xadd;\r
4397                         a1_y += a1_yadd;\r
4398                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4399                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4400                 }\r
4401                 a1_x+=a1_step_x;\r
4402                 a1_y+=a1_step_y;\r
4403                 a2_x+=a2_step_x;\r
4404                 a2_y+=a2_step_y;\r
4405         }\r
4406         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4407         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4408         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4409 }\r
4410 #endif\r
4411 #ifndef blitter_code_0x04c10004\r
4412 #define blitter_code_0x04c10004\r
4413 void blitter_0x04c10004(void)\r
4414 {\r
4415         while (outer_loop--)\r
4416         {\r
4417                 inner_loop=n_pixels;\r
4418                 while (inner_loop--)\r
4419                 {\r
4420                         uint32 srcdata   = 0;\r
4421                         uint32 srczdata  = 0;\r
4422                         uint32 dstdata   = 0;\r
4423                         uint32 dstzdata  = 0;\r
4424                         uint32 writedata = 0;\r
4425                         uint32 inhibit   = 0;\r
4426                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4427                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4428                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4429                         if (!inhibit)\r
4430                         {\r
4431                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4432                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4433                         if (!inhibit)\r
4434                         {\r
4435                                 WRITE_PIXEL_16(a1, writedata);\r
4436                         }\r
4437                         a1_x += a1_xadd;\r
4438                         a1_y += a1_yadd;\r
4439                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4440                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4441                 }\r
4442                 a1_x+=a1_step_x;\r
4443                 a1_y+=a1_step_y;\r
4444                 a2_x+=a2_step_x;\r
4445                 a2_y+=a2_step_y;\r
4446         }\r
4447         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4448         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4449         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4450 }\r
4451 #endif\r
4452 #ifndef blitter_code_0x0cc10004\r
4453 #define blitter_code_0x0cc10004\r
4454 void blitter_0x0cc10004(void)\r
4455 {\r
4456         while (outer_loop--)\r
4457         {\r
4458                 inner_loop=n_pixels;\r
4459                 while (inner_loop--)\r
4460                 {\r
4461                         uint32 srcdata   = 0;\r
4462                         uint32 srczdata  = 0;\r
4463                         uint32 dstdata   = 0;\r
4464                         uint32 dstzdata  = 0;\r
4465                         uint32 writedata = 0;\r
4466                         uint32 inhibit   = 0;\r
4467                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4468                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4469                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4470                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4471                         if (!inhibit)\r
4472                         {\r
4473                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4474                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4475                         if (!inhibit)\r
4476                         {\r
4477                                 WRITE_PIXEL_16(a1, writedata);\r
4478                         }\r
4479                         a1_x += a1_xadd;\r
4480                         a1_y += a1_yadd;\r
4481                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4482                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4483                 }\r
4484                 a1_x+=a1_step_x;\r
4485                 a1_y+=a1_step_y;\r
4486                 a2_x+=a2_step_x;\r
4487                 a2_y+=a2_step_y;\r
4488         }\r
4489         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4490         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4491         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4492 }\r
4493 #endif\r
4494 #ifndef blitter_code_0x1cc10024\r
4495 #define blitter_code_0x1cc10024\r
4496 void blitter_0x1cc10024(void)\r
4497 {\r
4498         while (outer_loop--)\r
4499         {\r
4500                 inner_loop=n_pixels;\r
4501                 while (inner_loop--)\r
4502                 {\r
4503                         uint32 srcdata   = 0;\r
4504                         uint32 srczdata  = 0;\r
4505                         uint32 dstdata   = 0;\r
4506                         uint32 dstzdata  = 0;\r
4507                         uint32 writedata = 0;\r
4508                         uint32 inhibit   = 0;\r
4509                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4510                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4511                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4512                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4513                         if (!inhibit)\r
4514                         {\r
4515                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4516                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4517                         WRITE_PIXEL_16(a1, writedata);\r
4518                         a1_x += a1_xadd;\r
4519                         a1_y += a1_yadd;\r
4520                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4521                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4522                 }\r
4523                 a1_x+=a1_step_x;\r
4524                 a1_y+=a1_step_y;\r
4525                 a2_x+=a2_step_x;\r
4526                 a2_y+=a2_step_y;\r
4527         }\r
4528         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4529         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4530         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4531 }\r
4532 #endif\r
4533 #ifndef blitter_code_0x0cc10084\r
4534 #define blitter_code_0x0cc10084\r
4535 void blitter_0x0cc10084(void)\r
4536 {\r
4537         while (outer_loop--)\r
4538         {\r
4539                 inner_loop=n_pixels;\r
4540                 while (inner_loop--)\r
4541                 {\r
4542                         uint32 srcdata   = 0;\r
4543                         uint32 srczdata  = 0;\r
4544                         uint32 dstdata   = 0;\r
4545                         uint32 dstzdata  = 0;\r
4546                         uint32 writedata = 0;\r
4547                         uint32 inhibit   = 0;\r
4548                         srcdata = READ_PIXEL_16(a2);\r
4549                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
4550                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4551                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4552                         if (!inhibit)\r
4553                         {\r
4554                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4555                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4556                         if (!inhibit)\r
4557                         {\r
4558                                 WRITE_PIXEL_16(a1, writedata);\r
4559                         }\r
4560                         a1_x += a1_xadd;\r
4561                         a1_y += a1_yadd;\r
4562                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4563                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4564                 }\r
4565                 a1_x+=a1_step_x;\r
4566                 a1_y+=a1_step_y;\r
4567                 a2_x+=a2_step_x;\r
4568                 a2_y+=a2_step_y;\r
4569         }\r
4570         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4571         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4572         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4573 }\r
4574 #endif\r
4575 #ifndef blitter_code_0x24c10024\r
4576 #define blitter_code_0x24c10024\r
4577 void blitter_0x24c10024(void)\r
4578 {\r
4579         while (outer_loop--)\r
4580         {\r
4581                 inner_loop=n_pixels;\r
4582                 while (inner_loop--)\r
4583                 {\r
4584                         uint32 srcdata   = 0;\r
4585                         uint32 srczdata  = 0;\r
4586                         uint32 dstdata   = 0;\r
4587                         uint32 dstzdata  = 0;\r
4588                         uint32 writedata = 0;\r
4589                         uint32 inhibit   = 0;\r
4590                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4591                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4592                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4593                         if (!inhibit)\r
4594                         {\r
4595                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4596                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4597                         if (!inhibit)\r
4598                         {\r
4599                                 WRITE_PIXEL_16(a1, writedata);\r
4600                         }\r
4601                         a1_x += a1_xadd;\r
4602                         a1_y += a1_yadd;\r
4603                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4604                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4605                 }\r
4606                 a1_x+=a1_step_x;\r
4607                 a1_y+=a1_step_y;\r
4608                 a2_x+=a2_step_x;\r
4609                 a2_y+=a2_step_y;\r
4610         }\r
4611         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4612         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4613         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4614 }\r
4615 #endif\r
4616 #ifndef blitter_code_0x2cc10024\r
4617 #define blitter_code_0x2cc10024\r
4618 void blitter_0x2cc10024(void)\r
4619 {\r
4620         while (outer_loop--)\r
4621         {\r
4622                 inner_loop=n_pixels;\r
4623                 while (inner_loop--)\r
4624                 {\r
4625                         uint32 srcdata   = 0;\r
4626                         uint32 srczdata  = 0;\r
4627                         uint32 dstdata   = 0;\r
4628                         uint32 dstzdata  = 0;\r
4629                         uint32 writedata = 0;\r
4630                         uint32 inhibit   = 0;\r
4631                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4632                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4633                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4634                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4635                         if (!inhibit)\r
4636                         {\r
4637                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4638                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4639                         if (!inhibit)\r
4640                         {\r
4641                                 WRITE_PIXEL_16(a1, writedata);\r
4642                         }\r
4643                         a1_x += a1_xadd;\r
4644                         a1_y += a1_yadd;\r
4645                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4646                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4647                 }\r
4648                 a1_x+=a1_step_x;\r
4649                 a1_y+=a1_step_y;\r
4650                 a2_x+=a2_step_x;\r
4651                 a2_y+=a2_step_y;\r
4652         }\r
4653         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4654         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4655         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4656 }\r
4657 #endif\r
4658 #ifndef blitter_code_0x3401002c\r
4659 #define blitter_code_0x3401002c\r
4660 void blitter_0x3401002c(void)\r
4661 {\r
4662         while (outer_loop--)\r
4663         {\r
4664                 inner_loop=n_pixels;\r
4665                 while (inner_loop--)\r
4666                 {\r
4667                         uint32 srcdata   = 0;\r
4668                         uint32 srczdata  = 0;\r
4669                         uint32 dstdata   = 0;\r
4670                         uint32 dstzdata  = 0;\r
4671                         uint32 writedata = 0;\r
4672                         uint32 inhibit   = 0;\r
4673                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4674                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4675                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4676                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4677                         WRITE_PIXEL_16(a1, writedata);\r
4678                         a1_x += a1_xadd;\r
4679                         a1_y += a1_yadd;\r
4680                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4681                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4682                 }\r
4683                 a1_x+=a1_step_x;\r
4684                 a1_y+=a1_step_y;\r
4685                 a2_x+=a2_step_x;\r
4686                 a2_y+=a2_step_y;\r
4687         }\r
4688         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4689         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4690         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4691 }\r
4692 #endif\r
4693 #ifndef blitter_code_0x14010014\r
4694 #define blitter_code_0x14010014\r
4695 void blitter_0x14010014(void)\r
4696 {\r
4697         while (outer_loop--)\r
4698         {\r
4699                 inner_loop=n_pixels;\r
4700                 while (inner_loop--)\r
4701                 {\r
4702                         uint32 srcdata   = 0;\r
4703                         uint32 srczdata  = 0;\r
4704                         uint32 dstdata   = 0;\r
4705                         uint32 dstzdata  = 0;\r
4706                         uint32 writedata = 0;\r
4707                         uint32 inhibit   = 0;\r
4708                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4709                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
4710                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4711                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
4712                         WRITE_PIXEL_16(a1, writedata);\r
4713                         a1_x += a1_xadd;\r
4714                         a1_y += a1_yadd;\r
4715                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4716                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4717                 }\r
4718                 a1_x+=a1_step_x;\r
4719                 a1_y+=a1_step_y;\r
4720                 a2_x+=a2_step_x;\r
4721                 a2_y+=a2_step_y;\r
4722         }\r
4723         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4724         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4725         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4726 }\r
4727 #endif\r
4728 #ifndef blitter_code_0x14010013\r
4729 #define blitter_code_0x14010013\r
4730 void blitter_0x14010013(void)\r
4731 {\r
4732         while (outer_loop--)\r
4733         {\r
4734                 inner_loop=n_pixels;\r
4735                 while (inner_loop--)\r
4736                 {\r
4737                         uint32 srcdata   = 0;\r
4738                         uint32 srczdata  = 0;\r
4739                         uint32 dstdata   = 0;\r
4740                         uint32 dstzdata  = 0;\r
4741                         uint32 writedata = 0;\r
4742                         uint32 inhibit   = 0;\r
4743                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
4744                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
4745                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
4746                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
4747                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
4748                         WRITE_PIXEL_8(a1, writedata);\r
4749                         a1_x += a1_xadd;\r
4750                         a1_y += a1_yadd;\r
4751                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4752                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4753                         gd_i[colour_index] += gd_ia;\r
4754                         gd_c[colour_index] += gd_ca;\r
4755                          colour_index=(colour_index+1)&0x3;\r
4756                 }\r
4757                 a1_x+=a1_step_x;\r
4758                 a1_y+=a1_step_y;\r
4759                 a2_x+=a2_step_x;\r
4760                 a2_y+=a2_step_y;\r
4761         }\r
4762         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4763         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4764         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4765 }\r
4766 #endif\r
4767 #ifndef blitter_code_0x30000005\r
4768 #define blitter_code_0x30000005\r
4769 void blitter_0x30000005(void)\r
4770 {\r
4771         while (outer_loop--)\r
4772         {\r
4773                 inner_loop=n_pixels;\r
4774                 while (inner_loop--)\r
4775                 {\r
4776                         uint32 srcdata   = 0;\r
4777                         uint32 srczdata  = 0;\r
4778                         uint32 dstdata   = 0;\r
4779                         uint32 dstzdata  = 0;\r
4780                         uint32 writedata = 0;\r
4781                         uint32 inhibit   = 0;\r
4782                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
4783                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
4784                         WRITE_PIXEL_32(a1, writedata);\r
4785                         a1_x += a1_xadd;\r
4786                         a1_y += a1_yadd;\r
4787                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4788                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4789                 }\r
4790                 a1_x+=a1_step_x;\r
4791                 a1_y+=a1_step_y;\r
4792                 a2_x+=a2_step_x;\r
4793                 a2_y+=a2_step_y;\r
4794         }\r
4795         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4796         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4797         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4798 }\r
4799 #endif\r
4800 #ifndef blitter_code_0x3000001d\r
4801 #define blitter_code_0x3000001d\r
4802 void blitter_0x3000001d(void)\r
4803 {\r
4804         while (outer_loop--)\r
4805         {\r
4806                 inner_loop=n_pixels;\r
4807                 while (inner_loop--)\r
4808                 {\r
4809                         uint32 srcdata   = 0;\r
4810                         uint32 srczdata  = 0;\r
4811                         uint32 dstdata   = 0;\r
4812                         uint32 dstzdata  = 0;\r
4813                         uint32 writedata = 0;\r
4814                         uint32 inhibit   = 0;\r
4815                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
4816                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
4817                         WRITE_PIXEL_32(a1, writedata);\r
4818                         a1_x += a1_xadd;\r
4819                         a1_y += a1_yadd;\r
4820                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4821                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4822                 }\r
4823                 a1_x+=a1_step_x;\r
4824                 a1_y+=a1_step_y;\r
4825                 a2_x+=a2_step_x;\r
4826                 a2_y+=a2_step_y;\r
4827         }\r
4828         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4829         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4830         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4831 }\r
4832 #endif\r
4833 #ifndef blitter_code_0x30c0002c\r
4834 #define blitter_code_0x30c0002c\r
4835 void blitter_0x30c0002c(void)\r
4836 {\r
4837         while (outer_loop--)\r
4838         {\r
4839                 inner_loop=n_pixels;\r
4840                 while (inner_loop--)\r
4841                 {\r
4842                         uint32 srcdata   = 0;\r
4843                         uint32 srczdata  = 0;\r
4844                         uint32 dstdata   = 0;\r
4845                         uint32 dstzdata  = 0;\r
4846                         uint32 writedata = 0;\r
4847                         uint32 inhibit   = 0;\r
4848                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4849                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4850                                 writedata |= srcdata  & ~dstdata;\r
4851                                 writedata |= srcdata  & dstdata;\r
4852                         WRITE_PIXEL_16(a1, writedata);\r
4853                         a1_x += a1_xadd;\r
4854                         a1_y += a1_yadd;\r
4855                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4856                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4857                 }\r
4858                 a1_x+=a1_step_x;\r
4859                 a1_y+=a1_step_y;\r
4860                 a2_x+=a2_step_x;\r
4861                 a2_y+=a2_step_y;\r
4862         }\r
4863         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4864         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4865         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4866 }\r
4867 #endif\r
4868 #ifndef blitter_code_0x3000002d\r
4869 #define blitter_code_0x3000002d\r
4870 void blitter_0x3000002d(void)\r
4871 {\r
4872         while (outer_loop--)\r
4873         {\r
4874                 inner_loop=n_pixels;\r
4875                 while (inner_loop--)\r
4876                 {\r
4877                         uint32 srcdata   = 0;\r
4878                         uint32 srczdata  = 0;\r
4879                         uint32 dstdata   = 0;\r
4880                         uint32 dstzdata  = 0;\r
4881                         uint32 writedata = 0;\r
4882                         uint32 inhibit   = 0;\r
4883                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
4884                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
4885                         WRITE_PIXEL_32(a1, writedata);\r
4886                         a1_x += a1_xadd;\r
4887                         a1_y += a1_yadd;\r
4888                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4889                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4890                 }\r
4891                 a1_x+=a1_step_x;\r
4892                 a1_y+=a1_step_y;\r
4893                 a2_x+=a2_step_x;\r
4894                 a2_y+=a2_step_y;\r
4895         }\r
4896         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4897         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4898         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4899 }\r
4900 #endif\r
4901 #ifndef blitter_code_0x10000025\r
4902 #define blitter_code_0x10000025\r
4903 void blitter_0x10000025(void)\r
4904 {\r
4905         while (outer_loop--)\r
4906         {\r
4907                 inner_loop=n_pixels;\r
4908                 while (inner_loop--)\r
4909                 {\r
4910                         uint32 srcdata   = 0;\r
4911                         uint32 srczdata  = 0;\r
4912                         uint32 dstdata   = 0;\r
4913                         uint32 dstzdata  = 0;\r
4914                         uint32 writedata = 0;\r
4915                         uint32 inhibit   = 0;\r
4916                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
4917                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
4918                         WRITE_PIXEL_32(a1, writedata);\r
4919                         a1_x += a1_xadd;\r
4920                         a1_y += a1_yadd;\r
4921                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4922                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4923                 }\r
4924                 a1_x+=a1_step_x;\r
4925                 a1_y+=a1_step_y;\r
4926                 a2_x+=a2_step_x;\r
4927                 a2_y+=a2_step_y;\r
4928         }\r
4929         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4930         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4931         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4932 }\r
4933 #endif\r
4934 #ifndef blitter_code_0x28c0002c\r
4935 #define blitter_code_0x28c0002c\r
4936 void blitter_0x28c0002c(void)\r
4937 {\r
4938         while (outer_loop--)\r
4939         {\r
4940                 inner_loop=n_pixels;\r
4941                 while (inner_loop--)\r
4942                 {\r
4943                         uint32 srcdata   = 0;\r
4944                         uint32 srczdata  = 0;\r
4945                         uint32 dstdata   = 0;\r
4946                         uint32 dstzdata  = 0;\r
4947                         uint32 writedata = 0;\r
4948                         uint32 inhibit   = 0;\r
4949                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4950                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
4951                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
4952                         if (!inhibit)\r
4953                         {\r
4954                                 writedata |= srcdata  & ~dstdata;\r
4955                                 writedata |= srcdata  & dstdata;\r
4956                         } else { srczdata=dstzdata; writedata=dstdata; }\r
4957                         if (!inhibit)\r
4958                         {\r
4959                                 WRITE_PIXEL_16(a1, writedata);\r
4960                         }\r
4961                         a1_x += a1_xadd;\r
4962                         a1_y += a1_yadd;\r
4963                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
4964                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
4965                 }\r
4966                 a1_x+=a1_step_x;\r
4967                 a1_y+=a1_step_y;\r
4968                 a2_x+=a2_step_x;\r
4969                 a2_y+=a2_step_y;\r
4970         }\r
4971         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
4972         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
4973         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
4974 }\r
4975 #endif\r
4976 #ifndef blitter_code_0x3002022c\r
4977 #define blitter_code_0x3002022c\r
4978 void blitter_0x3002022c(void)\r
4979 {\r
4980         while (outer_loop--)\r
4981         {\r
4982                 inner_loop=n_pixels;\r
4983                 while (inner_loop--)\r
4984                 {\r
4985                         uint32 srcdata   = 0;\r
4986                         uint32 srczdata  = 0;\r
4987                         uint32 dstdata   = 0;\r
4988                         uint32 dstzdata  = 0;\r
4989                         uint32 writedata = 0;\r
4990                         uint32 inhibit   = 0;\r
4991                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
4992                         dstdata = READ_PIXEL_16(a1);\r
4993                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
4994                         if (!inhibit)\r
4995                         {\r
4996                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
4997                                 if (writedata > 0xff) writedata = 0xff;\r
4998                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
4999                                 if (writedata > 0xfff) writedata = 0xfff;\r
5000                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
5001                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5002                         WRITE_PIXEL_16(a1, writedata);\r
5003                         a1_x += a1_xadd;\r
5004                         a1_y += a1_yadd;\r
5005                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5006                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5007                 }\r
5008                 a1_x+=a1_step_x;\r
5009                 a1_y+=a1_step_y;\r
5010                 a2_x+=a2_step_x;\r
5011                 a2_y+=a2_step_y;\r
5012         }\r
5013         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5014         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5015         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5016 }\r
5017 #endif\r
5018 #ifndef blitter_code_0x08c040e4\r
5019 #define blitter_code_0x08c040e4\r
5020 void blitter_0x08c040e4(void)\r
5021 {\r
5022         while (outer_loop--)\r
5023         {\r
5024                 inner_loop=n_pixels;\r
5025                 while (inner_loop--)\r
5026                 {\r
5027                         uint32 srcdata   = 0;\r
5028                         uint32 srczdata  = 0;\r
5029                         uint32 dstdata   = 0;\r
5030                         uint32 dstzdata  = 0;\r
5031                         uint32 writedata = 0;\r
5032                         uint32 inhibit   = 0;\r
5033                         srcdata = READ_PIXEL_16(a1);\r
5034                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
5035                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
5036                         if (!inhibit)\r
5037                         {\r
5038                                 writedata |= srcdata  & ~dstdata;\r
5039                                 writedata |= srcdata  & dstdata;\r
5040                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5041                         if (!inhibit)\r
5042                         {\r
5043                                 WRITE_PIXEL_16(a2, writedata);\r
5044                         }\r
5045                         a1_x += a1_xadd;\r
5046                         a1_y += a1_yadd;\r
5047                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5048                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5049                 }\r
5050                 a1_x+=a1_step_x;\r
5051                 a1_y+=a1_step_y;\r
5052                 a2_x+=a2_step_x;\r
5053                 a2_y+=a2_step_y;\r
5054         }\r
5055         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5056         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5057         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5058 }\r
5059 #endif\r
5060 #ifndef blitter_code_0x30c042a4\r
5061 #define blitter_code_0x30c042a4\r
5062 void blitter_0x30c042a4(void)\r
5063 {\r
5064         while (outer_loop--)\r
5065         {\r
5066                 inner_loop=n_pixels;\r
5067                 while (inner_loop--)\r
5068                 {\r
5069                         uint32 srcdata   = 0;\r
5070                         uint32 srczdata  = 0;\r
5071                         uint32 dstdata   = 0;\r
5072                         uint32 dstzdata  = 0;\r
5073                         uint32 writedata = 0;\r
5074                         uint32 inhibit   = 0;\r
5075                         srcdata = READ_PIXEL_16(a2);\r
5076                         dstdata = READ_PIXEL_16(a1);\r
5077                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
5078                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
5079                         if (!inhibit)\r
5080                         {\r
5081                                 writedata |= srcdata  & ~dstdata;\r
5082                                 writedata |= srcdata  & dstdata;\r
5083                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5084                         WRITE_PIXEL_16(a1, writedata);\r
5085                         a1_x += a1_xadd;\r
5086                         a1_y += a1_yadd;\r
5087                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5088                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5089                 }\r
5090                 a1_x+=a1_step_x;\r
5091                 a1_y+=a1_step_y;\r
5092                 a2_x+=a2_step_x;\r
5093                 a2_y+=a2_step_y;\r
5094         }\r
5095         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5096         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5097         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5098 }\r
5099 #endif\r
5100 #ifndef blitter_code_0x3401002b\r
5101 #define blitter_code_0x3401002b\r
5102 void blitter_0x3401002b(void)\r
5103 {\r
5104         while (outer_loop--)\r
5105         {\r
5106                 inner_loop=n_pixels;\r
5107                 while (inner_loop--)\r
5108                 {\r
5109                         uint32 srcdata   = 0;\r
5110                         uint32 srczdata  = 0;\r
5111                         uint32 dstdata   = 0;\r
5112                         uint32 dstzdata  = 0;\r
5113                         uint32 writedata = 0;\r
5114                         uint32 inhibit   = 0;\r
5115                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
5116                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
5117                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
5118                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
5119                         WRITE_PIXEL_8(a1, writedata);\r
5120                         a1_x += a1_xadd;\r
5121                         a1_y += a1_yadd;\r
5122                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5123                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5124                 }\r
5125                 a1_x+=a1_step_x;\r
5126                 a1_y+=a1_step_y;\r
5127                 a2_x+=a2_step_x;\r
5128                 a2_y+=a2_step_y;\r
5129         }\r
5130         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5131         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5132         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5133 }\r
5134 #endif\r
5135 #ifndef blitter_code_0x14010005\r
5136 #define blitter_code_0x14010005\r
5137 void blitter_0x14010005(void)\r
5138 {\r
5139         while (outer_loop--)\r
5140         {\r
5141                 inner_loop=n_pixels;\r
5142                 while (inner_loop--)\r
5143                 {\r
5144                         uint32 srcdata   = 0;\r
5145                         uint32 srczdata  = 0;\r
5146                         uint32 dstdata   = 0;\r
5147                         uint32 dstzdata  = 0;\r
5148                         uint32 writedata = 0;\r
5149                         uint32 inhibit   = 0;\r
5150                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
5151                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
5152                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
5153                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
5154                         WRITE_PIXEL_32(a1, writedata);\r
5155                         a1_x += a1_xadd;\r
5156                         a1_y += a1_yadd;\r
5157                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5158                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5159                 }\r
5160                 a1_x+=a1_step_x;\r
5161                 a1_y+=a1_step_y;\r
5162                 a2_x+=a2_step_x;\r
5163                 a2_y+=a2_step_y;\r
5164         }\r
5165         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5166         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5167         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5168 }\r
5169 #endif\r
5170 #ifndef blitter_code_0x2c01001b\r
5171 #define blitter_code_0x2c01001b\r
5172 void blitter_0x2c01001b(void)\r
5173 {\r
5174         while (outer_loop--)\r
5175         {\r
5176                 inner_loop=n_pixels;\r
5177                 while (inner_loop--)\r
5178                 {\r
5179                         uint32 srcdata   = 0;\r
5180                         uint32 srczdata  = 0;\r
5181                         uint32 dstdata   = 0;\r
5182                         uint32 dstzdata  = 0;\r
5183                         uint32 writedata = 0;\r
5184                         uint32 inhibit   = 0;\r
5185                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
5186                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
5187                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
5188                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
5189                         if (!inhibit)\r
5190                         {\r
5191                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
5192                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5193                         if (!inhibit)\r
5194                         {\r
5195                                 WRITE_PIXEL_8(a1, writedata);\r
5196                         }\r
5197                         a1_x += a1_xadd;\r
5198                         a1_y += a1_yadd;\r
5199                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5200                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5201                 }\r
5202                 a1_x+=a1_step_x;\r
5203                 a1_y+=a1_step_y;\r
5204                 a2_x+=a2_step_x;\r
5205                 a2_y+=a2_step_y;\r
5206         }\r
5207         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5208         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5209         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5210 }\r
5211 #endif\r
5212 #ifndef blitter_code_0x3401001c\r
5213 #define blitter_code_0x3401001c\r
5214 void blitter_0x3401001c(void)\r
5215 {\r
5216         while (outer_loop--)\r
5217         {\r
5218                 inner_loop=n_pixels;\r
5219                 while (inner_loop--)\r
5220                 {\r
5221                         uint32 srcdata   = 0;\r
5222                         uint32 srczdata  = 0;\r
5223                         uint32 dstdata   = 0;\r
5224                         uint32 dstzdata  = 0;\r
5225                         uint32 writedata = 0;\r
5226                         uint32 inhibit   = 0;\r
5227                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5228                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
5229                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5230                         if (!inhibit)\r
5231                         {\r
5232                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5233                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5234                         WRITE_PIXEL_16(a1, writedata);\r
5235                         a1_x += a1_xadd;\r
5236                         a1_y += a1_yadd;\r
5237                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5238                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5239                 }\r
5240                 a1_x+=a1_step_x;\r
5241                 a1_y+=a1_step_y;\r
5242                 a2_x+=a2_step_x;\r
5243                 a2_y+=a2_step_y;\r
5244         }\r
5245         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5246         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5247         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5248 }\r
5249 #endif\r
5250 #ifndef blitter_code_0x05010083\r
5251 #define blitter_code_0x05010083\r
5252 void blitter_0x05010083(void)\r
5253 {\r
5254         while (outer_loop--)\r
5255         {\r
5256                 inner_loop=n_pixels;\r
5257                 while (inner_loop--)\r
5258                 {\r
5259                         uint32 srcdata   = 0;\r
5260                         uint32 srczdata  = 0;\r
5261                         uint32 dstdata   = 0;\r
5262                         uint32 dstzdata  = 0;\r
5263                         uint32 writedata = 0;\r
5264                         uint32 inhibit   = 0;\r
5265                         srcdata = READ_PIXEL_8(a2);\r
5266                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
5267                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
5268                         if (!inhibit)\r
5269                         {\r
5270                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
5271                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5272                         WRITE_PIXEL_8(a1, writedata);\r
5273                         a1_x += a1_xadd;\r
5274                         a1_y += a1_yadd;\r
5275                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5276                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5277                 }\r
5278                 a1_x+=a1_step_x;\r
5279                 a1_y+=a1_step_y;\r
5280                 a2_x+=a2_step_x;\r
5281                 a2_y+=a2_step_y;\r
5282         }\r
5283         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5284         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5285         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5286 }\r
5287 #endif\r
5288 #ifndef blitter_code_0x05010084\r
5289 #define blitter_code_0x05010084\r
5290 void blitter_0x05010084(void)\r
5291 {\r
5292         while (outer_loop--)\r
5293         {\r
5294                 inner_loop=n_pixels;\r
5295                 while (inner_loop--)\r
5296                 {\r
5297                         uint32 srcdata   = 0;\r
5298                         uint32 srczdata  = 0;\r
5299                         uint32 dstdata   = 0;\r
5300                         uint32 dstzdata  = 0;\r
5301                         uint32 writedata = 0;\r
5302                         uint32 inhibit   = 0;\r
5303                         srcdata = READ_PIXEL_16(a2);\r
5304                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
5305                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5306                         if (!inhibit)\r
5307                         {\r
5308                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5309                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5310                         WRITE_PIXEL_16(a1, writedata);\r
5311                         a1_x += a1_xadd;\r
5312                         a1_y += a1_yadd;\r
5313                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5314                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5315                 }\r
5316                 a1_x+=a1_step_x;\r
5317                 a1_y+=a1_step_y;\r
5318                 a2_x+=a2_step_x;\r
5319                 a2_y+=a2_step_y;\r
5320         }\r
5321         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5322         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5323         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5324 }\r
5325 #endif\r
5326 #ifndef blitter_code_0x34010064\r
5327 #define blitter_code_0x34010064\r
5328 void blitter_0x34010064(void)\r
5329 {\r
5330         while (outer_loop--)\r
5331         {\r
5332                 inner_loop=n_pixels;\r
5333                 while (inner_loop--)\r
5334                 {\r
5335                         uint32 srcdata   = 0;\r
5336                         uint32 srczdata  = 0;\r
5337                         uint32 dstdata   = 0;\r
5338                         uint32 dstzdata  = 0;\r
5339                         uint32 writedata = 0;\r
5340                         uint32 inhibit   = 0;\r
5341                         srcdata = READ_RDATA_16(SRCDATA, a1, a1_phrase_mode);\r
5342                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
5343                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
5344                         if (!inhibit)\r
5345                         {\r
5346                                 writedata= READ_RDATA_16(PATTERNDATA, a2, a2_phrase_mode);\r
5347                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5348                         WRITE_PIXEL_16(a2, writedata);\r
5349                         a1_x += a1_xadd;\r
5350                         a1_y += a1_yadd;\r
5351                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5352                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5353                 }\r
5354                 a1_x+=a1_step_x;\r
5355                 a1_y+=a1_step_y;\r
5356                 a2_x+=a2_step_x;\r
5357                 a2_y+=a2_step_y;\r
5358         }\r
5359         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5360         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5361         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5362 }\r
5363 #endif\r
5364 #ifndef blitter_code_0x14010064\r
5365 #define blitter_code_0x14010064\r
5366 void blitter_0x14010064(void)\r
5367 {\r
5368         while (outer_loop--)\r
5369         {\r
5370                 inner_loop=n_pixels;\r
5371                 while (inner_loop--)\r
5372                 {\r
5373                         uint32 srcdata   = 0;\r
5374                         uint32 srczdata  = 0;\r
5375                         uint32 dstdata   = 0;\r
5376                         uint32 dstzdata  = 0;\r
5377                         uint32 writedata = 0;\r
5378                         uint32 inhibit   = 0;\r
5379                         srcdata = READ_RDATA_16(SRCDATA, a1, a1_phrase_mode);\r
5380                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
5381                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
5382                         if (!inhibit)\r
5383                         {\r
5384                                 writedata= READ_RDATA_16(PATTERNDATA, a2, a2_phrase_mode);\r
5385                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5386                         if (!inhibit)\r
5387                         {\r
5388                                 WRITE_PIXEL_16(a2, writedata);\r
5389                         }\r
5390                         a1_x += a1_xadd;\r
5391                         a1_y += a1_yadd;\r
5392                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5393                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5394                 }\r
5395                 a1_x+=a1_step_x;\r
5396                 a1_y+=a1_step_y;\r
5397                 a2_x+=a2_step_x;\r
5398                 a2_y+=a2_step_y;\r
5399         }\r
5400         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5401         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5402         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5403 }\r
5404 #endif\r
5405 #ifndef blitter_code_0x2401021b\r
5406 #define blitter_code_0x2401021b\r
5407 void blitter_0x2401021b(void)\r
5408 {\r
5409         while (outer_loop--)\r
5410         {\r
5411                 inner_loop=n_pixels;\r
5412                 while (inner_loop--)\r
5413                 {\r
5414                         uint32 srcdata   = 0;\r
5415                         uint32 srczdata  = 0;\r
5416                         uint32 dstdata   = 0;\r
5417                         uint32 dstzdata  = 0;\r
5418                         uint32 writedata = 0;\r
5419                         uint32 inhibit   = 0;\r
5420                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
5421                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
5422                         dstdata = READ_PIXEL_8(a1);\r
5423                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
5424                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
5425                                 WRITE_PIXEL_8(a1, writedata);\r
5426                         a1_x += a1_xadd;\r
5427                         a1_y += a1_yadd;\r
5428                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5429                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5430                 }\r
5431                 a1_x+=a1_step_x;\r
5432                 a1_y+=a1_step_y;\r
5433                 a2_x+=a2_step_x;\r
5434                 a2_y+=a2_step_y;\r
5435         }\r
5436         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5437         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5438         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5439 }\r
5440 #endif\r
5441 #ifndef blitter_code_0x24010218\r
5442 #define blitter_code_0x24010218\r
5443 void blitter_0x24010218(void)\r
5444 {\r
5445         while (outer_loop--)\r
5446         {\r
5447                 inner_loop=n_pixels;\r
5448                 while (inner_loop--)\r
5449                 {\r
5450                         uint32 srcdata   = 0;\r
5451                         uint32 srczdata  = 0;\r
5452                         uint32 dstdata   = 0;\r
5453                         uint32 dstzdata  = 0;\r
5454                         uint32 writedata = 0;\r
5455                         uint32 inhibit   = 0;\r
5456                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
5457                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
5458                         dstdata = READ_PIXEL_1(a1);\r
5459                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
5460                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
5461                                 WRITE_PIXEL_1(a1, writedata);\r
5462                         a1_x += a1_xadd;\r
5463                         a1_y += a1_yadd;\r
5464                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5465                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5466                 }\r
5467                 a1_x+=a1_step_x;\r
5468                 a1_y+=a1_step_y;\r
5469                 a2_x+=a2_step_x;\r
5470                 a2_y+=a2_step_y;\r
5471         }\r
5472         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5473         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5474         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5475 }\r
5476 #endif\r
5477 #ifndef blitter_code_0x2401021a\r
5478 #define blitter_code_0x2401021a\r
5479 void blitter_0x2401021a(void)\r
5480 {\r
5481         while (outer_loop--)\r
5482         {\r
5483                 inner_loop=n_pixels;\r
5484                 while (inner_loop--)\r
5485                 {\r
5486                         uint32 srcdata   = 0;\r
5487                         uint32 srczdata  = 0;\r
5488                         uint32 dstdata   = 0;\r
5489                         uint32 dstzdata  = 0;\r
5490                         uint32 writedata = 0;\r
5491                         uint32 inhibit   = 0;\r
5492                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
5493                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
5494                         dstdata = READ_PIXEL_4(a1);\r
5495                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
5496                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
5497                                 WRITE_PIXEL_4(a1, writedata);\r
5498                         a1_x += a1_xadd;\r
5499                         a1_y += a1_yadd;\r
5500                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5501                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5502                 }\r
5503                 a1_x+=a1_step_x;\r
5504                 a1_y+=a1_step_y;\r
5505                 a2_x+=a2_step_x;\r
5506                 a2_y+=a2_step_y;\r
5507         }\r
5508         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5509         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5510         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5511 }\r
5512 #endif\r
5513 #ifndef blitter_code_0x2401021c\r
5514 #define blitter_code_0x2401021c\r
5515 void blitter_0x2401021c(void)\r
5516 {\r
5517         while (outer_loop--)\r
5518         {\r
5519                 inner_loop=n_pixels;\r
5520                 while (inner_loop--)\r
5521                 {\r
5522                         uint32 srcdata   = 0;\r
5523                         uint32 srczdata  = 0;\r
5524                         uint32 dstdata   = 0;\r
5525                         uint32 dstzdata  = 0;\r
5526                         uint32 writedata = 0;\r
5527                         uint32 inhibit   = 0;\r
5528                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5529                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
5530                         dstdata = READ_PIXEL_16(a1);\r
5531                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
5532                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5533                                 WRITE_PIXEL_16(a1, writedata);\r
5534                         a1_x += a1_xadd;\r
5535                         a1_y += a1_yadd;\r
5536                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5537                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5538                 }\r
5539                 a1_x+=a1_step_x;\r
5540                 a1_y+=a1_step_y;\r
5541                 a2_x+=a2_step_x;\r
5542                 a2_y+=a2_step_y;\r
5543         }\r
5544         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5545         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5546         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5547 }\r
5548 #endif\r
5549 #ifndef blitter_code_0x00c00064\r
5550 #define blitter_code_0x00c00064\r
5551 void blitter_0x00c00064(void)\r
5552 {\r
5553         while (outer_loop--)\r
5554         {\r
5555                 inner_loop=n_pixels;\r
5556                 while (inner_loop--)\r
5557                 {\r
5558                         uint32 srcdata   = 0;\r
5559                         uint32 srczdata  = 0;\r
5560                         uint32 dstdata   = 0;\r
5561                         uint32 dstzdata  = 0;\r
5562                         uint32 writedata = 0;\r
5563                         uint32 inhibit   = 0;\r
5564                         srcdata = READ_RDATA_16(SRCDATA, a1, a1_phrase_mode);\r
5565                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
5566                                 writedata |= srcdata  & ~dstdata;\r
5567                                 writedata |= srcdata  & dstdata;\r
5568                                 WRITE_PIXEL_16(a2, writedata);\r
5569                         a1_x += a1_xadd;\r
5570                         a1_y += a1_yadd;\r
5571                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5572                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5573                 }\r
5574                 a1_x+=a1_step_x;\r
5575                 a1_y+=a1_step_y;\r
5576                 a2_x+=a2_step_x;\r
5577                 a2_y+=a2_step_y;\r
5578         }\r
5579         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5580         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5581         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5582 }\r
5583 #endif\r
5584 #ifndef blitter_code_0x00c00024\r
5585 #define blitter_code_0x00c00024\r
5586 void blitter_0x00c00024(void)\r
5587 {\r
5588         while (outer_loop--)\r
5589         {\r
5590                 inner_loop=n_pixels;\r
5591                 while (inner_loop--)\r
5592                 {\r
5593                         uint32 srcdata   = 0;\r
5594                         uint32 srczdata  = 0;\r
5595                         uint32 dstdata   = 0;\r
5596                         uint32 dstzdata  = 0;\r
5597                         uint32 writedata = 0;\r
5598                         uint32 inhibit   = 0;\r
5599                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5600                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5601                                 writedata |= srcdata  & ~dstdata;\r
5602                                 writedata |= srcdata  & dstdata;\r
5603                                 WRITE_PIXEL_16(a1, writedata);\r
5604                         a1_x += a1_xadd;\r
5605                         a1_y += a1_yadd;\r
5606                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5607                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5608                 }\r
5609                 a1_x+=a1_step_x;\r
5610                 a1_y+=a1_step_y;\r
5611                 a2_x+=a2_step_x;\r
5612                 a2_y+=a2_step_y;\r
5613         }\r
5614         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5615         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5616         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5617 }\r
5618 #endif\r
5619 #ifndef blitter_code_0x01c042e4\r
5620 #define blitter_code_0x01c042e4\r
5621 void blitter_0x01c042e4(void)\r
5622 {\r
5623         while (outer_loop--)\r
5624         {\r
5625                 inner_loop=n_pixels;\r
5626                 while (inner_loop--)\r
5627                 {\r
5628                         uint32 srcdata   = 0;\r
5629                         uint32 srczdata  = 0;\r
5630                         uint32 dstdata   = 0;\r
5631                         uint32 dstzdata  = 0;\r
5632                         uint32 writedata = 0;\r
5633                         uint32 inhibit   = 0;\r
5634                         srcdata = READ_PIXEL_16(a1);\r
5635                         dstdata = READ_PIXEL_16(a2);\r
5636                         dstzdata = READ_RDATA_16(DSTZ, a2, a2_phrase_mode);\r
5637                         srczdata=z_i[colour_index]>>16;\r
5638                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
5639                         if (!inhibit)\r
5640                         {\r
5641                                 writedata |= srcdata  & ~dstdata;\r
5642                                 writedata |= srcdata  & dstdata;\r
5643                                 {\r
5644                                 int intensity = srcdata & 0xFF;\r
5645                                 int ia = gd_ia >> 16;\r
5646                                 if(ia & 0x80)\r
5647                                         ia = 0xFFFFFF00 | ia;\r
5648                                 intensity += ia;\r
5649                                 if(intensity < 0)\r
5650                                         intensity = 0;\r
5651                                 if(intensity > 0xFF)\r
5652                                         intensity = 0xFF;\r
5653                                 writedata = (srcdata & 0xFF00) | intensity;\r
5654                                 }\r
5655                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5656                         WRITE_PIXEL_16(a2, writedata);\r
5657                         a1_x += a1_xadd;\r
5658                         a1_y += a1_yadd;\r
5659                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5660                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5661                         z_i[colour_index]+=zadd;\r
5662                         gd_i[colour_index] += gd_ia;\r
5663                         gd_c[colour_index] += gd_ca;\r
5664                 }\r
5665                 a1_x+=a1_step_x;\r
5666                 a1_y+=a1_step_y;\r
5667                 a2_x+=a2_step_x;\r
5668                 a2_y+=a2_step_y;\r
5669         }\r
5670         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5671         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5672         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5673 }\r
5674 #endif\r
5675 #ifndef blitter_code_0x20c0001c\r
5676 #define blitter_code_0x20c0001c\r
5677 void blitter_0x20c0001c(void)\r
5678 {\r
5679         while (outer_loop--)\r
5680         {\r
5681                 inner_loop=n_pixels;\r
5682                 while (inner_loop--)\r
5683                 {\r
5684                         uint32 srcdata   = 0;\r
5685                         uint32 srczdata  = 0;\r
5686                         uint32 dstdata   = 0;\r
5687                         uint32 dstzdata  = 0;\r
5688                         uint32 writedata = 0;\r
5689                         uint32 inhibit   = 0;\r
5690                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5691                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5692                         if (!inhibit)\r
5693                         {\r
5694                                 writedata |= srcdata  & ~dstdata;\r
5695                                 writedata |= srcdata  & dstdata;\r
5696                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5697                         if (!inhibit)\r
5698                         {\r
5699                                 WRITE_PIXEL_16(a1, writedata);\r
5700                         }\r
5701                         a1_x += a1_xadd;\r
5702                         a1_y += a1_yadd;\r
5703                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5704                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5705                 }\r
5706                 a1_x+=a1_step_x;\r
5707                 a1_y+=a1_step_y;\r
5708                 a2_x+=a2_step_x;\r
5709                 a2_y+=a2_step_y;\r
5710         }\r
5711         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5712         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5713         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5714 }\r
5715 #endif\r
5716 #ifndef blitter_code_0x24010219\r
5717 #define blitter_code_0x24010219\r
5718 void blitter_0x24010219(void)\r
5719 {\r
5720         while (outer_loop--)\r
5721         {\r
5722                 inner_loop=n_pixels;\r
5723                 while (inner_loop--)\r
5724                 {\r
5725                         uint32 srcdata   = 0;\r
5726                         uint32 srczdata  = 0;\r
5727                         uint32 dstdata   = 0;\r
5728                         uint32 dstzdata  = 0;\r
5729                         uint32 writedata = 0;\r
5730                         uint32 inhibit   = 0;\r
5731                         srcdata = READ_RDATA_2(SRCDATA, a2, a2_phrase_mode);\r
5732                         srczdata = READ_RDATA_2(SRCZINT, a2, a2_phrase_mode);\r
5733                         dstdata = READ_PIXEL_2(a1);\r
5734                         dstzdata = READ_RDATA_2(DSTZ, a1, a1_phrase_mode);\r
5735                         if (!inhibit)\r
5736                         {\r
5737                                 writedata= READ_RDATA_2(PATTERNDATA, a1, a1_phrase_mode);\r
5738                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5739                         if (!inhibit)\r
5740                         {\r
5741                                 WRITE_PIXEL_2(a1, writedata);\r
5742                         }\r
5743                         a1_x += a1_xadd;\r
5744                         a1_y += a1_yadd;\r
5745                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5746                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5747                 }\r
5748                 a1_x+=a1_step_x;\r
5749                 a1_y+=a1_step_y;\r
5750                 a2_x+=a2_step_x;\r
5751                 a2_y+=a2_step_y;\r
5752         }\r
5753         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5754         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5755         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5756 }\r
5757 #endif\r
5758 #ifndef blitter_code_0x08c000a4\r
5759 #define blitter_code_0x08c000a4\r
5760 void blitter_0x08c000a4(void)\r
5761 {\r
5762         while (outer_loop--)\r
5763         {\r
5764                 inner_loop=n_pixels;\r
5765                 while (inner_loop--)\r
5766                 {\r
5767                         uint32 srcdata   = 0;\r
5768                         uint32 srczdata  = 0;\r
5769                         uint32 dstdata   = 0;\r
5770                         uint32 dstzdata  = 0;\r
5771                         uint32 writedata = 0;\r
5772                         uint32 inhibit   = 0;\r
5773                         srcdata = READ_PIXEL_16(a2);\r
5774                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5775                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
5776                         if (!inhibit)\r
5777                         {\r
5778                                 writedata |= srcdata  & ~dstdata;\r
5779                                 writedata |= srcdata  & dstdata;\r
5780                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5781                         if (!inhibit)\r
5782                         {\r
5783                                 WRITE_PIXEL_16(a1, writedata);\r
5784                         }\r
5785                         a1_x += a1_xadd;\r
5786                         a1_y += a1_yadd;\r
5787                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5788                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5789                 }\r
5790                 a1_x+=a1_step_x;\r
5791                 a1_y+=a1_step_y;\r
5792                 a2_x+=a2_step_x;\r
5793                 a2_y+=a2_step_y;\r
5794         }\r
5795         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5796         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5797         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5798 }\r
5799 #endif\r
5800 #ifndef blitter_code_0x2c01001c\r
5801 #define blitter_code_0x2c01001c\r
5802 void blitter_0x2c01001c(void)\r
5803 {\r
5804         while (outer_loop--)\r
5805         {\r
5806                 inner_loop=n_pixels;\r
5807                 while (inner_loop--)\r
5808                 {\r
5809                         uint32 srcdata   = 0;\r
5810                         uint32 srczdata  = 0;\r
5811                         uint32 dstdata   = 0;\r
5812                         uint32 dstzdata  = 0;\r
5813                         uint32 writedata = 0;\r
5814                         uint32 inhibit   = 0;\r
5815                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5816                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
5817                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5818                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
5819                         if (!inhibit)\r
5820                         {\r
5821                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5822                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5823                         if (!inhibit)\r
5824                         {\r
5825                                 WRITE_PIXEL_16(a1, writedata);\r
5826                         }\r
5827                         a1_x += a1_xadd;\r
5828                         a1_y += a1_yadd;\r
5829                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5830                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5831                 }\r
5832                 a1_x+=a1_step_x;\r
5833                 a1_y+=a1_step_y;\r
5834                 a2_x+=a2_step_x;\r
5835                 a2_y+=a2_step_y;\r
5836         }\r
5837         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5838         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5839         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5840 }\r
5841 #endif\r
5842 #ifndef blitter_code_0x3c01001c\r
5843 #define blitter_code_0x3c01001c\r
5844 void blitter_0x3c01001c(void)\r
5845 {\r
5846         while (outer_loop--)\r
5847         {\r
5848                 inner_loop=n_pixels;\r
5849                 while (inner_loop--)\r
5850                 {\r
5851                         uint32 srcdata   = 0;\r
5852                         uint32 srczdata  = 0;\r
5853                         uint32 dstdata   = 0;\r
5854                         uint32 dstzdata  = 0;\r
5855                         uint32 writedata = 0;\r
5856                         uint32 inhibit   = 0;\r
5857                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5858                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
5859                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5860                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
5861                         if (!inhibit)\r
5862                         {\r
5863                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5864                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5865                         WRITE_PIXEL_16(a1, writedata);\r
5866                         a1_x += a1_xadd;\r
5867                         a1_y += a1_yadd;\r
5868                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5869                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5870                 }\r
5871                 a1_x+=a1_step_x;\r
5872                 a1_y+=a1_step_y;\r
5873                 a2_x+=a2_step_x;\r
5874                 a2_y+=a2_step_y;\r
5875         }\r
5876         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5877         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5878         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5879 }\r
5880 #endif\r
5881 #ifndef blitter_code_0x2c010218\r
5882 #define blitter_code_0x2c010218\r
5883 void blitter_0x2c010218(void)\r
5884 {\r
5885         while (outer_loop--)\r
5886         {\r
5887                 inner_loop=n_pixels;\r
5888                 while (inner_loop--)\r
5889                 {\r
5890                         uint32 srcdata   = 0;\r
5891                         uint32 srczdata  = 0;\r
5892                         uint32 dstdata   = 0;\r
5893                         uint32 dstzdata  = 0;\r
5894                         uint32 writedata = 0;\r
5895                         uint32 inhibit   = 0;\r
5896                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
5897                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
5898                         dstdata = READ_PIXEL_1(a1);\r
5899                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
5900                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
5901                         if (!inhibit)\r
5902                         {\r
5903                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
5904                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5905                         if (!inhibit)\r
5906                         {\r
5907                                 WRITE_PIXEL_1(a1, writedata);\r
5908                         }\r
5909                         a1_x += a1_xadd;\r
5910                         a1_y += a1_yadd;\r
5911                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5912                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5913                 }\r
5914                 a1_x+=a1_step_x;\r
5915                 a1_y+=a1_step_y;\r
5916                 a2_x+=a2_step_x;\r
5917                 a2_y+=a2_step_y;\r
5918         }\r
5919         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5920         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5921         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5922 }\r
5923 #endif\r
5924 #ifndef blitter_code_0x3050021b\r
5925 #define blitter_code_0x3050021b\r
5926 void blitter_0x3050021b(void)\r
5927 {\r
5928         while (outer_loop--)\r
5929         {\r
5930                 inner_loop=n_pixels;\r
5931                 while (inner_loop--)\r
5932                 {\r
5933                         uint32 srcdata   = 0;\r
5934                         uint32 srczdata  = 0;\r
5935                         uint32 dstdata   = 0;\r
5936                         uint32 dstzdata  = 0;\r
5937                         uint32 writedata = 0;\r
5938                         uint32 inhibit   = 0;\r
5939                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
5940                         dstdata = READ_PIXEL_8(a1);\r
5941                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
5942                         if (!inhibit)\r
5943                         {\r
5944                                 writedata |= ~srcdata & ~dstdata;\r
5945                                 writedata |= srcdata  & ~dstdata;\r
5946                         } else { srczdata=dstzdata; writedata=dstdata; }\r
5947                         WRITE_PIXEL_8(a1, writedata);\r
5948                         a1_x += a1_xadd;\r
5949                         a1_y += a1_yadd;\r
5950                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5951                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5952                 }\r
5953                 a1_x+=a1_step_x;\r
5954                 a1_y+=a1_step_y;\r
5955                 a2_x+=a2_step_x;\r
5956                 a2_y+=a2_step_y;\r
5957         }\r
5958         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5959         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5960         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5961 }\r
5962 #endif\r
5963 #ifndef blitter_code_0x34c10004\r
5964 #define blitter_code_0x34c10004\r
5965 void blitter_0x34c10004(void)\r
5966 {\r
5967         while (outer_loop--)\r
5968         {\r
5969                 inner_loop=n_pixels;\r
5970                 while (inner_loop--)\r
5971                 {\r
5972                         uint32 srcdata   = 0;\r
5973                         uint32 srczdata  = 0;\r
5974                         uint32 dstdata   = 0;\r
5975                         uint32 dstzdata  = 0;\r
5976                         uint32 writedata = 0;\r
5977                         uint32 inhibit   = 0;\r
5978                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
5979                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
5980                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
5981                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
5982                         WRITE_PIXEL_16(a1, writedata);\r
5983                         a1_x += a1_xadd;\r
5984                         a1_y += a1_yadd;\r
5985                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
5986                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
5987                 }\r
5988                 a1_x+=a1_step_x;\r
5989                 a1_y+=a1_step_y;\r
5990                 a2_x+=a2_step_x;\r
5991                 a2_y+=a2_step_y;\r
5992         }\r
5993         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
5994         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
5995         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
5996 }\r
5997 #endif\r
5998 #ifndef blitter_code_0x05010218\r
5999 #define blitter_code_0x05010218\r
6000 void blitter_0x05010218(void)\r
6001 {\r
6002         while (outer_loop--)\r
6003         {\r
6004                 inner_loop=n_pixels;\r
6005                 while (inner_loop--)\r
6006                 {\r
6007                         uint32 srcdata   = 0;\r
6008                         uint32 srczdata  = 0;\r
6009                         uint32 dstdata   = 0;\r
6010                         uint32 dstzdata  = 0;\r
6011                         uint32 writedata = 0;\r
6012                         uint32 inhibit   = 0;\r
6013                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
6014                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
6015                         dstdata = READ_PIXEL_1(a1);\r
6016                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
6017                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
6018                         WRITE_PIXEL_1(a1, writedata);\r
6019                         a1_x += a1_xadd;\r
6020                         a1_y += a1_yadd;\r
6021                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6022                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6023                 }\r
6024                 a1_x+=a1_step_x;\r
6025                 a1_y+=a1_step_y;\r
6026                 a2_x+=a2_step_x;\r
6027                 a2_y+=a2_step_y;\r
6028         }\r
6029         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6030         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6031         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6032 }\r
6033 #endif\r
6034 #ifndef blitter_code_0x30020224\r
6035 #define blitter_code_0x30020224\r
6036 void blitter_0x30020224(void)\r
6037 {\r
6038         while (outer_loop--)\r
6039         {\r
6040                 inner_loop=n_pixels;\r
6041                 while (inner_loop--)\r
6042                 {\r
6043                         uint32 srcdata   = 0;\r
6044                         uint32 srczdata  = 0;\r
6045                         uint32 dstdata   = 0;\r
6046                         uint32 dstzdata  = 0;\r
6047                         uint32 writedata = 0;\r
6048                         uint32 inhibit   = 0;\r
6049                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6050                         dstdata = READ_PIXEL_16(a1);\r
6051                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
6052                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
6053                                 if (writedata > 0xff) writedata = 0xff;\r
6054                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
6055                                 if (writedata > 0xfff) writedata = 0xfff;\r
6056                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
6057                         WRITE_PIXEL_16(a1, writedata);\r
6058                         a1_x += a1_xadd;\r
6059                         a1_y += a1_yadd;\r
6060                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6061                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6062                 }\r
6063                 a1_x+=a1_step_x;\r
6064                 a1_y+=a1_step_y;\r
6065                 a2_x+=a2_step_x;\r
6066                 a2_y+=a2_step_y;\r
6067         }\r
6068         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6069         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6070         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6071 }\r
6072 #endif\r
6073 #ifndef blitter_code_0x24c1001b\r
6074 #define blitter_code_0x24c1001b\r
6075 void blitter_0x24c1001b(void)\r
6076 {\r
6077         while (outer_loop--)\r
6078         {\r
6079                 inner_loop=n_pixels;\r
6080                 while (inner_loop--)\r
6081                 {\r
6082                         uint32 srcdata   = 0;\r
6083                         uint32 srczdata  = 0;\r
6084                         uint32 dstdata   = 0;\r
6085                         uint32 dstzdata  = 0;\r
6086                         uint32 writedata = 0;\r
6087                         uint32 inhibit   = 0;\r
6088                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
6089                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
6090                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
6091                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
6092                                 WRITE_PIXEL_8(a1, writedata);\r
6093                         a1_x += a1_xadd;\r
6094                         a1_y += a1_yadd;\r
6095                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6096                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6097                 }\r
6098                 a1_x+=a1_step_x;\r
6099                 a1_y+=a1_step_y;\r
6100                 a2_x+=a2_step_x;\r
6101                 a2_y+=a2_step_y;\r
6102         }\r
6103         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6104         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6105         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6106 }\r
6107 #endif\r
6108 #ifndef blitter_code_0x0501021b\r
6109 #define blitter_code_0x0501021b\r
6110 void blitter_0x0501021b(void)\r
6111 {\r
6112         while (outer_loop--)\r
6113         {\r
6114                 inner_loop=n_pixels;\r
6115                 while (inner_loop--)\r
6116                 {\r
6117                         uint32 srcdata   = 0;\r
6118                         uint32 srczdata  = 0;\r
6119                         uint32 dstdata   = 0;\r
6120                         uint32 dstzdata  = 0;\r
6121                         uint32 writedata = 0;\r
6122                         uint32 inhibit   = 0;\r
6123                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
6124                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
6125                         dstdata = READ_PIXEL_8(a1);\r
6126                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
6127                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
6128                         WRITE_PIXEL_8(a1, writedata);\r
6129                         a1_x += a1_xadd;\r
6130                         a1_y += a1_yadd;\r
6131                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6132                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6133                 }\r
6134                 a1_x+=a1_step_x;\r
6135                 a1_y+=a1_step_y;\r
6136                 a2_x+=a2_step_x;\r
6137                 a2_y+=a2_step_y;\r
6138         }\r
6139         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6140         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6141         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6142 }\r
6143 #endif\r
6144 #ifndef blitter_code_0x04c1001b\r
6145 #define blitter_code_0x04c1001b\r
6146 void blitter_0x04c1001b(void)\r
6147 {\r
6148         while (outer_loop--)\r
6149         {\r
6150                 inner_loop=n_pixels;\r
6151                 while (inner_loop--)\r
6152                 {\r
6153                         uint32 srcdata   = 0;\r
6154                         uint32 srczdata  = 0;\r
6155                         uint32 dstdata   = 0;\r
6156                         uint32 dstzdata  = 0;\r
6157                         uint32 writedata = 0;\r
6158                         uint32 inhibit   = 0;\r
6159                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
6160                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
6161                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
6162                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
6163                                 WRITE_PIXEL_8(a1, writedata);\r
6164                         a1_x += a1_xadd;\r
6165                         a1_y += a1_yadd;\r
6166                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6167                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6168                 }\r
6169                 a1_x+=a1_step_x;\r
6170                 a1_y+=a1_step_y;\r
6171                 a2_x+=a2_step_x;\r
6172                 a2_y+=a2_step_y;\r
6173         }\r
6174         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6175         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6176         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6177 }\r
6178 #endif\r
6179 #ifndef blitter_code_0x24c10023\r
6180 #define blitter_code_0x24c10023\r
6181 void blitter_0x24c10023(void)\r
6182 {\r
6183         while (outer_loop--)\r
6184         {\r
6185                 inner_loop=n_pixels;\r
6186                 while (inner_loop--)\r
6187                 {\r
6188                         uint32 srcdata   = 0;\r
6189                         uint32 srczdata  = 0;\r
6190                         uint32 dstdata   = 0;\r
6191                         uint32 dstzdata  = 0;\r
6192                         uint32 writedata = 0;\r
6193                         uint32 inhibit   = 0;\r
6194                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
6195                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
6196                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
6197                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
6198                                 WRITE_PIXEL_8(a1, writedata);\r
6199                         a1_x += a1_xadd;\r
6200                         a1_y += a1_yadd;\r
6201                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6202                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6203                 }\r
6204                 a1_x+=a1_step_x;\r
6205                 a1_y+=a1_step_y;\r
6206                 a2_x+=a2_step_x;\r
6207                 a2_y+=a2_step_y;\r
6208         }\r
6209         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6210         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6211         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6212 }\r
6213 #endif\r
6214 #ifndef blitter_code_0x01c040a4\r
6215 #define blitter_code_0x01c040a4\r
6216 void blitter_0x01c040a4(void)\r
6217 {\r
6218         while (outer_loop--)\r
6219         {\r
6220                 inner_loop=n_pixels;\r
6221                 while (inner_loop--)\r
6222                 {\r
6223                         uint32 srcdata   = 0;\r
6224                         uint32 srczdata  = 0;\r
6225                         uint32 dstdata   = 0;\r
6226                         uint32 dstzdata  = 0;\r
6227                         uint32 writedata = 0;\r
6228                         uint32 inhibit   = 0;\r
6229                         srcdata = READ_PIXEL_16(a2);\r
6230                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
6231                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
6232                         if (!inhibit)\r
6233                         {\r
6234                                 writedata |= srcdata  & ~dstdata;\r
6235                                 writedata |= srcdata  & dstdata;\r
6236                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6237                         WRITE_PIXEL_16(a1, writedata);\r
6238                         a1_x += a1_xadd;\r
6239                         a1_y += a1_yadd;\r
6240                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6241                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6242                 }\r
6243                 a1_x+=a1_step_x;\r
6244                 a1_y+=a1_step_y;\r
6245                 a2_x+=a2_step_x;\r
6246                 a2_y+=a2_step_y;\r
6247         }\r
6248         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6249         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6250         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6251 }\r
6252 #endif\r
6253 #ifndef blitter_code_0x04c10024\r
6254 #define blitter_code_0x04c10024\r
6255 void blitter_0x04c10024(void)\r
6256 {\r
6257         while (outer_loop--)\r
6258         {\r
6259                 inner_loop=n_pixels;\r
6260                 while (inner_loop--)\r
6261                 {\r
6262                         uint32 srcdata   = 0;\r
6263                         uint32 srczdata  = 0;\r
6264                         uint32 dstdata   = 0;\r
6265                         uint32 dstzdata  = 0;\r
6266                         uint32 writedata = 0;\r
6267                         uint32 inhibit   = 0;\r
6268                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6269                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
6270                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
6271                         if (!inhibit)\r
6272                         {\r
6273                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
6274                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6275                         if (!inhibit)\r
6276                         {\r
6277                                 WRITE_PIXEL_16(a1, writedata);\r
6278                         }\r
6279                         a1_x += a1_xadd;\r
6280                         a1_y += a1_yadd;\r
6281                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6282                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6283                 }\r
6284                 a1_x+=a1_step_x;\r
6285                 a1_y+=a1_step_y;\r
6286                 a2_x+=a2_step_x;\r
6287                 a2_y+=a2_step_y;\r
6288         }\r
6289         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6290         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6291         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6292 }\r
6293 #endif\r
6294 #ifndef blitter_code_0x0501021c\r
6295 #define blitter_code_0x0501021c\r
6296 void blitter_0x0501021c(void)\r
6297 {\r
6298         while (outer_loop--)\r
6299         {\r
6300                 inner_loop=n_pixels;\r
6301                 while (inner_loop--)\r
6302                 {\r
6303                         uint32 srcdata   = 0;\r
6304                         uint32 srczdata  = 0;\r
6305                         uint32 dstdata   = 0;\r
6306                         uint32 dstzdata  = 0;\r
6307                         uint32 writedata = 0;\r
6308                         uint32 inhibit   = 0;\r
6309                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6310                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
6311                         dstdata = READ_PIXEL_16(a1);\r
6312                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
6313                         if (!inhibit)\r
6314                         {\r
6315                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
6316                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6317                         WRITE_PIXEL_16(a1, writedata);\r
6318                         a1_x += a1_xadd;\r
6319                         a1_y += a1_yadd;\r
6320                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6321                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6322                 }\r
6323                 a1_x+=a1_step_x;\r
6324                 a1_y+=a1_step_y;\r
6325                 a2_x+=a2_step_x;\r
6326                 a2_y+=a2_step_y;\r
6327         }\r
6328         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6329         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6330         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6331 }\r
6332 #endif\r
6333 #ifndef blitter_code_0x30e00224\r
6334 #define blitter_code_0x30e00224\r
6335 void blitter_0x30e00224(void)\r
6336 {\r
6337         while (outer_loop--)\r
6338         {\r
6339                 inner_loop=n_pixels;\r
6340                 while (inner_loop--)\r
6341                 {\r
6342                         uint32 srcdata   = 0;\r
6343                         uint32 srczdata  = 0;\r
6344                         uint32 dstdata   = 0;\r
6345                         uint32 dstzdata  = 0;\r
6346                         uint32 writedata = 0;\r
6347                         uint32 inhibit   = 0;\r
6348                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6349                         dstdata = READ_PIXEL_16(a1);\r
6350                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
6351                         if (!inhibit)\r
6352                         {\r
6353                                 writedata |= ~srcdata & dstdata;\r
6354                                 writedata |= srcdata  & ~dstdata;\r
6355                                 writedata |= srcdata  & dstdata;\r
6356                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6357                         WRITE_PIXEL_16(a1, writedata);\r
6358                         a1_x += a1_xadd;\r
6359                         a1_y += a1_yadd;\r
6360                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6361                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6362                 }\r
6363                 a1_x+=a1_step_x;\r
6364                 a1_y+=a1_step_y;\r
6365                 a2_x+=a2_step_x;\r
6366                 a2_y+=a2_step_y;\r
6367         }\r
6368         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6369         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6370         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6371 }\r
6372 #endif\r
6373 #ifndef blitter_code_0x2401002d\r
6374 #define blitter_code_0x2401002d\r
6375 void blitter_0x2401002d(void)\r
6376 {\r
6377         while (outer_loop--)\r
6378         {\r
6379                 inner_loop=n_pixels;\r
6380                 while (inner_loop--)\r
6381                 {\r
6382                         uint32 srcdata   = 0;\r
6383                         uint32 srczdata  = 0;\r
6384                         uint32 dstdata   = 0;\r
6385                         uint32 dstzdata  = 0;\r
6386                         uint32 writedata = 0;\r
6387                         uint32 inhibit   = 0;\r
6388                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
6389                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
6390                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
6391                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
6392                                 WRITE_PIXEL_32(a1, writedata);\r
6393                         a1_x += a1_xadd;\r
6394                         a1_y += a1_yadd;\r
6395                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6396                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6397                 }\r
6398                 a1_x+=a1_step_x;\r
6399                 a1_y+=a1_step_y;\r
6400                 a2_x+=a2_step_x;\r
6401                 a2_y+=a2_step_y;\r
6402         }\r
6403         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6404         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6405         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6406 }\r
6407 #endif\r
6408 #ifndef blitter_code_0x2401002c\r
6409 #define blitter_code_0x2401002c\r
6410 void blitter_0x2401002c(void)\r
6411 {\r
6412         while (outer_loop--)\r
6413         {\r
6414                 inner_loop=n_pixels;\r
6415                 while (inner_loop--)\r
6416                 {\r
6417                         uint32 srcdata   = 0;\r
6418                         uint32 srczdata  = 0;\r
6419                         uint32 dstdata   = 0;\r
6420                         uint32 dstzdata  = 0;\r
6421                         uint32 writedata = 0;\r
6422                         uint32 inhibit   = 0;\r
6423                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6424                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
6425                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
6426                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
6427                                 WRITE_PIXEL_16(a1, writedata);\r
6428                         a1_x += a1_xadd;\r
6429                         a1_y += a1_yadd;\r
6430                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6431                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6432                 }\r
6433                 a1_x+=a1_step_x;\r
6434                 a1_y+=a1_step_y;\r
6435                 a2_x+=a2_step_x;\r
6436                 a2_y+=a2_step_y;\r
6437         }\r
6438         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6439         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6440         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6441 }\r
6442 #endif\r
6443 #ifndef blitter_code_0x24010005\r
6444 #define blitter_code_0x24010005\r
6445 void blitter_0x24010005(void)\r
6446 {\r
6447         while (outer_loop--)\r
6448         {\r
6449                 inner_loop=n_pixels;\r
6450                 while (inner_loop--)\r
6451                 {\r
6452                         uint32 srcdata   = 0;\r
6453                         uint32 srczdata  = 0;\r
6454                         uint32 dstdata   = 0;\r
6455                         uint32 dstzdata  = 0;\r
6456                         uint32 writedata = 0;\r
6457                         uint32 inhibit   = 0;\r
6458                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
6459                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
6460                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
6461                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
6462                                 WRITE_PIXEL_32(a1, writedata);\r
6463                         a1_x += a1_xadd;\r
6464                         a1_y += a1_yadd;\r
6465                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6466                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6467                 }\r
6468                 a1_x+=a1_step_x;\r
6469                 a1_y+=a1_step_y;\r
6470                 a2_x+=a2_step_x;\r
6471                 a2_y+=a2_step_y;\r
6472         }\r
6473         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6474         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6475         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6476 }\r
6477 #endif\r
6478 #ifndef blitter_code_0x04010220\r
6479 #define blitter_code_0x04010220\r
6480 void blitter_0x04010220(void)\r
6481 {\r
6482         while (outer_loop--)\r
6483         {\r
6484                 inner_loop=n_pixels;\r
6485                 while (inner_loop--)\r
6486                 {\r
6487                         uint32 srcdata   = 0;\r
6488                         uint32 srczdata  = 0;\r
6489                         uint32 dstdata   = 0;\r
6490                         uint32 dstzdata  = 0;\r
6491                         uint32 writedata = 0;\r
6492                         uint32 inhibit   = 0;\r
6493                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
6494                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
6495                         dstdata = READ_PIXEL_1(a1);\r
6496                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
6497                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
6498                                 WRITE_PIXEL_1(a1, writedata);\r
6499                         a1_x += a1_xadd;\r
6500                         a1_y += a1_yadd;\r
6501                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6502                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6503                 }\r
6504                 a1_x+=a1_step_x;\r
6505                 a1_y+=a1_step_y;\r
6506                 a2_x+=a2_step_x;\r
6507                 a2_y+=a2_step_y;\r
6508         }\r
6509         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6510         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6511         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6512 }\r
6513 #endif\r
6514 #ifndef blitter_code_0x00c000ed\r
6515 #define blitter_code_0x00c000ed\r
6516 void blitter_0x00c000ed(void)\r
6517 {\r
6518         while (outer_loop--)\r
6519         {\r
6520                 inner_loop=n_pixels;\r
6521                 while (inner_loop--)\r
6522                 {\r
6523                         uint32 srcdata   = 0;\r
6524                         uint32 srczdata  = 0;\r
6525                         uint32 dstdata   = 0;\r
6526                         uint32 dstzdata  = 0;\r
6527                         uint32 writedata = 0;\r
6528                         uint32 inhibit   = 0;\r
6529                         srcdata = READ_PIXEL_32(a1);\r
6530                         dstdata = READ_RDATA_32(DSTDATA, a2, a2_phrase_mode);\r
6531                                 writedata |= srcdata  & ~dstdata;\r
6532                                 writedata |= srcdata  & dstdata;\r
6533                                 WRITE_PIXEL_32(a2, writedata);\r
6534                         a1_x += a1_xadd;\r
6535                         a1_y += a1_yadd;\r
6536                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6537                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6538                 }\r
6539                 a1_x+=a1_step_x;\r
6540                 a1_y+=a1_step_y;\r
6541                 a2_x+=a2_step_x;\r
6542                 a2_y+=a2_step_y;\r
6543         }\r
6544         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6545         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6546         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6547 }\r
6548 #endif\r
6549 #ifndef blitter_code_0x040e026d\r
6550 #define blitter_code_0x040e026d\r
6551 void blitter_0x040e026d(void)\r
6552 {\r
6553         while (outer_loop--)\r
6554         {\r
6555                 inner_loop=n_pixels;\r
6556                 while (inner_loop--)\r
6557                 {\r
6558                         uint32 srcdata   = 0;\r
6559                         uint32 srczdata  = 0;\r
6560                         uint32 dstdata   = 0;\r
6561                         uint32 dstzdata  = 0;\r
6562                         uint32 writedata = 0;\r
6563                         uint32 inhibit   = 0;\r
6564                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
6565                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
6566                         dstdata = READ_PIXEL_32(a2);\r
6567                         dstzdata = READ_RDATA_32(DSTZ, a2, a2_phrase_mode);\r
6568                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
6569                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
6570                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
6571                                 WRITE_PIXEL_32(a2, writedata);\r
6572                         a1_x += a1_xadd;\r
6573                         a1_y += a1_yadd;\r
6574                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6575                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6576                 }\r
6577                 a1_x+=a1_step_x;\r
6578                 a1_y+=a1_step_y;\r
6579                 a2_x+=a2_step_x;\r
6580                 a2_y+=a2_step_y;\r
6581         }\r
6582         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6583         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6584         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6585 }\r
6586 #endif\r
6587 #ifndef blitter_code_0x0c01002c\r
6588 #define blitter_code_0x0c01002c\r
6589 void blitter_0x0c01002c(void)\r
6590 {\r
6591 //      fprintf(log_get(),"blitter_0x0c01002c: 0x%.8x 0x%.8x 0x%.8x 0x%.8x cpu %i pc=0x%.8x\n",\r
6592 //                                         gd_i[0],gd_c[0],gd_ia,gd_ca,jaguar_cpu_in_exec,gpu_read_pc()); \r
6593 \r
6594         while (outer_loop--)\r
6595         {\r
6596                 inner_loop=n_pixels;\r
6597                 while (inner_loop--)\r
6598                 {\r
6599                         uint32 dstdata   = 0;\r
6600                         uint32 writedata = 0;\r
6601                         uint32 inhibit   = 0;\r
6602                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
6603                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
6604                         if (!inhibit)\r
6605                         {\r
6606                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
6607                         } \r
6608                         else \r
6609                         { \r
6610                                 writedata=dstdata; \r
6611                         }\r
6612                         if (!inhibit)\r
6613                         {\r
6614                                 WRITE_PIXEL_16(a1, writedata);\r
6615                         }\r
6616                         a1_x += a1_xadd;\r
6617                         a1_y += a1_yadd;\r
6618                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6619                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6620                         gd_i[colour_index] += gd_ia;\r
6621                         gd_c[colour_index] += gd_ca;\r
6622                 }\r
6623                 a1_x+=a1_step_x;\r
6624                 a1_y+=a1_step_y;\r
6625                 a2_x+=a2_step_x;\r
6626                 a2_y+=a2_step_y;\r
6627         }\r
6628         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6629         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6630         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6631 }\r
6632 #endif\r
6633 #ifndef blitter_code_0x040e026c\r
6634 #define blitter_code_0x040e026c\r
6635 void blitter_0x040e026c(void)\r
6636 {\r
6637         while (outer_loop--)\r
6638         {\r
6639                 inner_loop=n_pixels;\r
6640                 while (inner_loop--)\r
6641                 {\r
6642                         uint32 srcdata   = 0;\r
6643                         uint32 srczdata  = 0;\r
6644                         uint32 dstdata   = 0;\r
6645                         uint32 dstzdata  = 0;\r
6646                         uint32 writedata = 0;\r
6647                         uint32 inhibit   = 0;\r
6648                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
6649                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
6650                         dstdata = READ_PIXEL_32(a2);\r
6651                         dstzdata = READ_RDATA_32(DSTZ, a2, a2_phrase_mode);\r
6652                         if (!inhibit)\r
6653                         {\r
6654                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
6655                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
6656                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
6657                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6658                         if (!inhibit)\r
6659                         {\r
6660                                 WRITE_PIXEL_32(a2, writedata);\r
6661                         }\r
6662                         a1_x += a1_xadd;\r
6663                         a1_y += a1_yadd;\r
6664                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6665                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6666                 }\r
6667                 a1_x+=a1_step_x;\r
6668                 a1_y+=a1_step_y;\r
6669                 a2_x+=a2_step_x;\r
6670                 a2_y+=a2_step_y;\r
6671         }\r
6672         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6673         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6674         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6675 }\r
6676 #endif\r
6677 #ifndef blitter_code_0x00c04280\r
6678 #define blitter_code_0x00c04280\r
6679 void blitter_0x00c04280(void)\r
6680 {\r
6681         while (outer_loop--)\r
6682         {\r
6683                 inner_loop=n_pixels;\r
6684                 while (inner_loop--)\r
6685                 {\r
6686                         uint32 srcdata   = 0;\r
6687                         uint32 srczdata  = 0;\r
6688                         uint32 dstdata   = 0;\r
6689                         uint32 dstzdata  = 0;\r
6690                         uint32 writedata = 0;\r
6691                         uint32 inhibit   = 0;\r
6692                         srcdata = READ_PIXEL_1(a2);\r
6693                         dstdata = READ_PIXEL_1(a1);\r
6694                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
6695                         if (srcdata == READ_RDATA_1(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
6696                         if (!inhibit)\r
6697                         {\r
6698                                 writedata |= srcdata  & ~dstdata;\r
6699                                 writedata |= srcdata  & dstdata;\r
6700                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6701                         if (!inhibit)\r
6702                         {\r
6703                                 WRITE_PIXEL_1(a1, writedata);\r
6704                         }\r
6705                         a1_x += a1_xadd;\r
6706                         a1_y += a1_yadd;\r
6707                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6708                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6709                 }\r
6710                 a1_x+=a1_step_x;\r
6711                 a1_y+=a1_step_y;\r
6712                 a2_x+=a2_step_x;\r
6713                 a2_y+=a2_step_y;\r
6714         }\r
6715         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6716         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6717         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6718 }\r
6719 #endif\r
6720 #ifndef blitter_code_0x04010200\r
6721 #define blitter_code_0x04010200\r
6722 void blitter_0x04010200(void)\r
6723 {\r
6724         while (outer_loop--)\r
6725         {\r
6726                 inner_loop=n_pixels;\r
6727                 while (inner_loop--)\r
6728                 {\r
6729                         uint32 srcdata   = 0;\r
6730                         uint32 srczdata  = 0;\r
6731                         uint32 dstdata   = 0;\r
6732                         uint32 dstzdata  = 0;\r
6733                         uint32 writedata = 0;\r
6734                         uint32 inhibit   = 0;\r
6735                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
6736                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
6737                         dstdata = READ_PIXEL_1(a1);\r
6738                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
6739                         if (!inhibit)\r
6740                         {\r
6741                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
6742                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6743                         if (!inhibit)\r
6744                         {\r
6745                                 WRITE_PIXEL_1(a1, writedata);\r
6746                         }\r
6747                         a1_x += a1_xadd;\r
6748                         a1_y += a1_yadd;\r
6749                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6750                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6751                 }\r
6752                 a1_x+=a1_step_x;\r
6753                 a1_y+=a1_step_y;\r
6754                 a2_x+=a2_step_x;\r
6755                 a2_y+=a2_step_y;\r
6756         }\r
6757         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6758         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6759         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6760 }\r
6761 #endif\r
6762 #ifndef blitter_code_0x00600280\r
6763 #define blitter_code_0x00600280\r
6764 void blitter_0x00600280(void)\r
6765 {\r
6766         while (outer_loop--)\r
6767         {\r
6768                 inner_loop=n_pixels;\r
6769                 while (inner_loop--)\r
6770                 {\r
6771                         uint32 srcdata   = 0;\r
6772                         uint32 srczdata  = 0;\r
6773                         uint32 dstdata   = 0;\r
6774                         uint32 dstzdata  = 0;\r
6775                         uint32 writedata = 0;\r
6776                         uint32 inhibit   = 0;\r
6777                         srcdata = READ_PIXEL_1(a2);\r
6778                         dstdata = READ_PIXEL_1(a1);\r
6779                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
6780                         if (!inhibit)\r
6781                         {\r
6782                                 writedata |= ~srcdata & dstdata;\r
6783                                 writedata |= srcdata  & ~dstdata;\r
6784                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6785                         if (!inhibit)\r
6786                         {\r
6787                                 WRITE_PIXEL_1(a1, writedata);\r
6788                         }\r
6789                         a1_x += a1_xadd;\r
6790                         a1_y += a1_yadd;\r
6791                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6792                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6793                 }\r
6794                 a1_x+=a1_step_x;\r
6795                 a1_y+=a1_step_y;\r
6796                 a2_x+=a2_step_x;\r
6797                 a2_y+=a2_step_y;\r
6798         }\r
6799         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6800         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6801         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6802 }\r
6803 #endif\r
6804 #ifndef blitter_code_0x04010005\r
6805 #define blitter_code_0x04010005\r
6806 void blitter_0x04010005(void)\r
6807 {\r
6808         while (outer_loop--)\r
6809         {\r
6810                 inner_loop=n_pixels;\r
6811                 while (inner_loop--)\r
6812                 {\r
6813                         uint32 srcdata   = 0;\r
6814                         uint32 srczdata  = 0;\r
6815                         uint32 dstdata   = 0;\r
6816                         uint32 dstzdata  = 0;\r
6817                         uint32 writedata = 0;\r
6818                         uint32 inhibit   = 0;\r
6819                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
6820                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
6821                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
6822                         if (!inhibit)\r
6823                         {\r
6824                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
6825                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6826                         if (!inhibit)\r
6827                         {\r
6828                                 WRITE_PIXEL_32(a1, writedata);\r
6829                         }\r
6830                         a1_x += a1_xadd;\r
6831                         a1_y += a1_yadd;\r
6832                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6833                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6834                 }\r
6835                 a1_x+=a1_step_x;\r
6836                 a1_y+=a1_step_y;\r
6837                 a2_x+=a2_step_x;\r
6838                 a2_y+=a2_step_y;\r
6839         }\r
6840         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6841         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6842         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6843 }\r
6844 #endif\r
6845 #ifndef blitter_code_0x0401002c\r
6846 #define blitter_code_0x0401002c\r
6847 void blitter_0x0401002c(void)\r
6848 {\r
6849         while (outer_loop--)\r
6850         {\r
6851                 inner_loop=n_pixels;\r
6852                 while (inner_loop--)\r
6853                 {\r
6854                         uint32 srcdata   = 0;\r
6855                         uint32 srczdata  = 0;\r
6856                         uint32 dstdata   = 0;\r
6857                         uint32 dstzdata  = 0;\r
6858                         uint32 writedata = 0;\r
6859                         uint32 inhibit   = 0;\r
6860                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
6861                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
6862                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
6863                         if (!inhibit)\r
6864                         {\r
6865                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
6866                         } else { srczdata=dstzdata; writedata=dstdata; }\r
6867                         if (!inhibit)\r
6868                         {\r
6869                                 WRITE_PIXEL_16(a1, writedata);\r
6870                         }\r
6871                         a1_x += a1_xadd;\r
6872                         a1_y += a1_yadd;\r
6873                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6874                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6875                 }\r
6876                 a1_x+=a1_step_x;\r
6877                 a1_y+=a1_step_y;\r
6878                 a2_x+=a2_step_x;\r
6879                 a2_y+=a2_step_y;\r
6880         }\r
6881         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6882         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6883         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6884 }\r
6885 #endif\r
6886 #ifndef blitter_code_0x30c000db\r
6887 #define blitter_code_0x30c000db\r
6888 void blitter_0x30c000db(void)\r
6889 {\r
6890         while (outer_loop--)\r
6891         {\r
6892                 inner_loop=n_pixels;\r
6893                 while (inner_loop--)\r
6894                 {\r
6895                         uint32 srcdata   = 0;\r
6896                         uint32 srczdata  = 0;\r
6897                         uint32 dstdata   = 0;\r
6898                         uint32 dstzdata  = 0;\r
6899                         uint32 writedata = 0;\r
6900                         uint32 inhibit   = 0;\r
6901                         srcdata = READ_PIXEL_8(a1);\r
6902                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
6903                                 writedata |= srcdata  & ~dstdata;\r
6904                                 writedata |= srcdata  & dstdata;\r
6905                         WRITE_PIXEL_8(a2, writedata);\r
6906                         a1_x += a1_xadd;\r
6907                         a1_y += a1_yadd;\r
6908                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6909                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6910                 }\r
6911                 a1_x+=a1_step_x;\r
6912                 a1_y+=a1_step_y;\r
6913                 a2_x+=a2_step_x;\r
6914                 a2_y+=a2_step_y;\r
6915         }\r
6916         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6917         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6918         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6919 }\r
6920 #endif\r
6921 #ifndef blitter_code_0x30c002ad\r
6922 #define blitter_code_0x30c002ad\r
6923 void blitter_0x30c002ad(void)\r
6924 {\r
6925         while (outer_loop--)\r
6926         {\r
6927                 inner_loop=n_pixels;\r
6928                 while (inner_loop--)\r
6929                 {\r
6930                         uint32 srcdata   = 0;\r
6931                         uint32 srczdata  = 0;\r
6932                         uint32 dstdata   = 0;\r
6933                         uint32 dstzdata  = 0;\r
6934                         uint32 writedata = 0;\r
6935                         uint32 inhibit   = 0;\r
6936                         srcdata = READ_PIXEL_32(a2);\r
6937                         dstdata = READ_PIXEL_32(a1);\r
6938                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
6939                                 writedata |= srcdata  & ~dstdata;\r
6940                                 writedata |= srcdata  & dstdata;\r
6941                         WRITE_PIXEL_32(a1, writedata);\r
6942                         a1_x += a1_xadd;\r
6943                         a1_y += a1_yadd;\r
6944                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6945                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6946                 }\r
6947                 a1_x+=a1_step_x;\r
6948                 a1_y+=a1_step_y;\r
6949                 a2_x+=a2_step_x;\r
6950                 a2_y+=a2_step_y;\r
6951         }\r
6952         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6953         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6954         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6955 }\r
6956 #endif\r
6957 #ifndef blitter_code_0x3401009b\r
6958 #define blitter_code_0x3401009b\r
6959 void blitter_0x3401009b(void)\r
6960 {\r
6961         while (outer_loop--)\r
6962         {\r
6963                 inner_loop=n_pixels;\r
6964                 while (inner_loop--)\r
6965                 {\r
6966                         uint32 srcdata   = 0;\r
6967                         uint32 srczdata  = 0;\r
6968                         uint32 dstdata   = 0;\r
6969                         uint32 dstzdata  = 0;\r
6970                         uint32 writedata = 0;\r
6971                         uint32 inhibit   = 0;\r
6972                         srcdata = READ_PIXEL_8(a2);\r
6973                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
6974                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
6975                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
6976                         WRITE_PIXEL_8(a1, writedata);\r
6977                         a1_x += a1_xadd;\r
6978                         a1_y += a1_yadd;\r
6979                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
6980                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
6981                 }\r
6982                 a1_x+=a1_step_x;\r
6983                 a1_y+=a1_step_y;\r
6984                 a2_x+=a2_step_x;\r
6985                 a2_y+=a2_step_y;\r
6986         }\r
6987         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
6988         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
6989         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
6990 }\r
6991 #endif\r
6992 #ifndef blitter_code_0x04c1022d\r
6993 #define blitter_code_0x04c1022d\r
6994 void blitter_0x04c1022d(void)\r
6995 {\r
6996         while (outer_loop--)\r
6997         {\r
6998                 inner_loop=n_pixels;\r
6999                 while (inner_loop--)\r
7000                 {\r
7001                         uint32 srcdata   = 0;\r
7002                         uint32 srczdata  = 0;\r
7003                         uint32 dstdata   = 0;\r
7004                         uint32 dstzdata  = 0;\r
7005                         uint32 writedata = 0;\r
7006                         uint32 inhibit   = 0;\r
7007                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
7008                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
7009                         dstdata = READ_PIXEL_32(a1);\r
7010                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
7011                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
7012                                 WRITE_PIXEL_32(a1, writedata);\r
7013                         a1_x += a1_xadd;\r
7014                         a1_y += a1_yadd;\r
7015                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7016                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7017                 }\r
7018                 a1_x+=a1_step_x;\r
7019                 a1_y+=a1_step_y;\r
7020                 a2_x+=a2_step_x;\r
7021                 a2_y+=a2_step_y;\r
7022         }\r
7023         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7024         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7025         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7026 }\r
7027 #endif\r
7028 #ifndef blitter_code_0x008002ad\r
7029 #define blitter_code_0x008002ad\r
7030 void blitter_0x008002ad(void)\r
7031 {\r
7032         while (outer_loop--)\r
7033         {\r
7034                 inner_loop=n_pixels;\r
7035                 while (inner_loop--)\r
7036                 {\r
7037                         uint32 srcdata   = 0;\r
7038                         uint32 srczdata  = 0;\r
7039                         uint32 dstdata   = 0;\r
7040                         uint32 dstzdata  = 0;\r
7041                         uint32 writedata = 0;\r
7042                         uint32 inhibit   = 0;\r
7043                         srcdata = READ_PIXEL_32(a2);\r
7044                         dstdata = READ_PIXEL_32(a1);\r
7045                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
7046                                 writedata |= srcdata  & dstdata;\r
7047                                 WRITE_PIXEL_32(a1, writedata);\r
7048                         a1_x += a1_xadd;\r
7049                         a1_y += a1_yadd;\r
7050                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7051                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7052                 }\r
7053                 a1_x+=a1_step_x;\r
7054                 a1_y+=a1_step_y;\r
7055                 a2_x+=a2_step_x;\r
7056                 a2_y+=a2_step_y;\r
7057         }\r
7058         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7059         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7060         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7061 }\r
7062 #endif\r
7063 #ifndef blitter_code_0x14c1022d\r
7064 #define blitter_code_0x14c1022d\r
7065 void blitter_0x14c1022d(void)\r
7066 {\r
7067         while (outer_loop--)\r
7068         {\r
7069                 inner_loop=n_pixels;\r
7070                 while (inner_loop--)\r
7071                 {\r
7072                         uint32 srcdata   = 0;\r
7073                         uint32 srczdata  = 0;\r
7074                         uint32 dstdata   = 0;\r
7075                         uint32 dstzdata  = 0;\r
7076                         uint32 writedata = 0;\r
7077                         uint32 inhibit   = 0;\r
7078                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
7079                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
7080                         dstdata = READ_PIXEL_32(a1);\r
7081                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
7082                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
7083                         WRITE_PIXEL_32(a1, writedata);\r
7084                         a1_x += a1_xadd;\r
7085                         a1_y += a1_yadd;\r
7086                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7087                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7088                 }\r
7089                 a1_x+=a1_step_x;\r
7090                 a1_y+=a1_step_y;\r
7091                 a2_x+=a2_step_x;\r
7092                 a2_y+=a2_step_y;\r
7093         }\r
7094         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7095         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7096         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7097 }\r
7098 #endif\r
7099 #ifndef blitter_code_0x34c1022d\r
7100 #define blitter_code_0x34c1022d\r
7101 void blitter_0x34c1022d(void)\r
7102 {\r
7103         while (outer_loop--)\r
7104         {\r
7105                 inner_loop=n_pixels;\r
7106                 while (inner_loop--)\r
7107                 {\r
7108                         uint32 srcdata   = 0;\r
7109                         uint32 srczdata  = 0;\r
7110                         uint32 dstdata   = 0;\r
7111                         uint32 dstzdata  = 0;\r
7112                         uint32 writedata = 0;\r
7113                         uint32 inhibit   = 0;\r
7114                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
7115                         srczdata = READ_RDATA_32(SRCZINT, a2, a2_phrase_mode);\r
7116                         dstdata = READ_PIXEL_32(a1);\r
7117                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
7118                                 writedata= READ_RDATA_32(PATTERNDATA, a1, a1_phrase_mode);\r
7119                         WRITE_PIXEL_32(a1, writedata);\r
7120                         a1_x += a1_xadd;\r
7121                         a1_y += a1_yadd;\r
7122                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7123                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7124                 }\r
7125                 a1_x+=a1_step_x;\r
7126                 a1_y+=a1_step_y;\r
7127                 a2_x+=a2_step_x;\r
7128                 a2_y+=a2_step_y;\r
7129         }\r
7130         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7131         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7132         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7133 }\r
7134 #endif\r
7135 #ifndef blitter_code_0x30c0029b\r
7136 #define blitter_code_0x30c0029b\r
7137 void blitter_0x30c0029b(void)\r
7138 {\r
7139         while (outer_loop--)\r
7140         {\r
7141                 inner_loop=n_pixels;\r
7142                 while (inner_loop--)\r
7143                 {\r
7144                         uint32 srcdata   = 0;\r
7145                         uint32 srczdata  = 0;\r
7146                         uint32 dstdata   = 0;\r
7147                         uint32 dstzdata  = 0;\r
7148                         uint32 writedata = 0;\r
7149                         uint32 inhibit   = 0;\r
7150                         srcdata = READ_PIXEL_8(a2);\r
7151                         dstdata = READ_PIXEL_8(a1);\r
7152                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
7153                                 writedata |= srcdata  & ~dstdata;\r
7154                                 writedata |= srcdata  & dstdata;\r
7155                         WRITE_PIXEL_8(a1, writedata);\r
7156                         a1_x += a1_xadd;\r
7157                         a1_y += a1_yadd;\r
7158                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7159                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7160                 }\r
7161                 a1_x+=a1_step_x;\r
7162                 a1_y+=a1_step_y;\r
7163                 a2_x+=a2_step_x;\r
7164                 a2_y+=a2_step_y;\r
7165         }\r
7166         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7167         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7168         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7169 }\r
7170 #endif\r
7171 #ifndef blitter_code_0x24c1021b\r
7172 #define blitter_code_0x24c1021b\r
7173 void blitter_0x24c1021b(void)\r
7174 {\r
7175         while (outer_loop--)\r
7176         {\r
7177                 inner_loop=n_pixels;\r
7178                 while (inner_loop--)\r
7179                 {\r
7180                         uint32 srcdata   = 0;\r
7181                         uint32 srczdata  = 0;\r
7182                         uint32 dstdata   = 0;\r
7183                         uint32 dstzdata  = 0;\r
7184                         uint32 writedata = 0;\r
7185                         uint32 inhibit   = 0;\r
7186                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
7187                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
7188                         dstdata = READ_PIXEL_8(a1);\r
7189                         dstzdata = READ_RDATA_8(DSTZ, a1, a1_phrase_mode);\r
7190                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
7191                                 WRITE_PIXEL_8(a1, writedata);\r
7192                         a1_x += a1_xadd;\r
7193                         a1_y += a1_yadd;\r
7194                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7195                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7196                 }\r
7197                 a1_x+=a1_step_x;\r
7198                 a1_y+=a1_step_y;\r
7199                 a2_x+=a2_step_x;\r
7200                 a2_y+=a2_step_y;\r
7201         }\r
7202         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7203         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7204         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7205 }\r
7206 #endif\r
7207 #ifndef blitter_code_0x30c042ad\r
7208 #define blitter_code_0x30c042ad\r
7209 void blitter_0x30c042ad(void)\r
7210 {\r
7211         while (outer_loop--)\r
7212         {\r
7213                 inner_loop=n_pixels;\r
7214                 while (inner_loop--)\r
7215                 {\r
7216                         uint32 srcdata   = 0;\r
7217                         uint32 srczdata  = 0;\r
7218                         uint32 dstdata   = 0;\r
7219                         uint32 dstzdata  = 0;\r
7220                         uint32 writedata = 0;\r
7221                         uint32 inhibit   = 0;\r
7222                         srcdata = READ_PIXEL_32(a2);\r
7223                         dstdata = READ_PIXEL_32(a1);\r
7224                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
7225                         if (srcdata == READ_RDATA_32(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
7226                         if (!inhibit)\r
7227                         {\r
7228                                 writedata |= srcdata  & ~dstdata;\r
7229                                 writedata |= srcdata  & dstdata;\r
7230                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7231                         WRITE_PIXEL_32(a1, writedata);\r
7232                         a1_x += a1_xadd;\r
7233                         a1_y += a1_yadd;\r
7234                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7235                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7236                 }\r
7237                 a1_x+=a1_step_x;\r
7238                 a1_y+=a1_step_y;\r
7239                 a2_x+=a2_step_x;\r
7240                 a2_y+=a2_step_y;\r
7241         }\r
7242         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7243         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7244         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7245 }\r
7246 #endif\r
7247 #ifndef blitter_code_0x3e01261c\r
7248 #define blitter_code_0x3e01261c\r
7249 void blitter_0x3e01261c(void)\r
7250 {\r
7251         while (outer_loop--)\r
7252         {\r
7253                 inner_loop=n_pixels;\r
7254                 while (inner_loop--)\r
7255                 {\r
7256                         uint32 srcdata   = 0;\r
7257                         uint32 srczdata  = 0;\r
7258                         uint32 dstdata   = 0;\r
7259                         uint32 dstzdata  = 0;\r
7260                         uint32 writedata = 0;\r
7261                         uint32 inhibit   = 0;\r
7262                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
7263                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
7264                         dstdata = READ_PIXEL_16(a1);\r
7265                         dstzdata = READ_ZDATA_16(a1);\r
7266                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7267                         srczdata=z_i[colour_index]>>16;\r
7268                         if (srczdata >  dstzdata)       inhibit = 1;\r
7269                         if (!inhibit)\r
7270                         {\r
7271                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
7272                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
7273                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7274                         WRITE_PIXEL_16(a1, writedata);\r
7275                         WRITE_ZDATA_16(a1, srczdata);\r
7276                         a1_x += a1_xadd;\r
7277                         a1_y += a1_yadd;\r
7278                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7279                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7280                         z_i[colour_index]+=zadd;\r
7281                         gd_i[colour_index] += gd_ia;\r
7282                         gd_c[colour_index] += gd_ca;\r
7283                          colour_index=(colour_index+1)&0x3;\r
7284                 }\r
7285                 a1_x+=a1_step_x;\r
7286                 a1_y+=a1_step_y;\r
7287                 a2_x+=a2_step_x;\r
7288                 a2_y+=a2_step_y;\r
7289         }\r
7290         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7291         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7292         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7293 }\r
7294 #endif\r
7295 #ifndef blitter_code_0x00e00280\r
7296 #define blitter_code_0x00e00280\r
7297 void blitter_0x00e00280(void)\r
7298 {\r
7299         while (outer_loop--)\r
7300         {\r
7301                 inner_loop=n_pixels;\r
7302                 while (inner_loop--)\r
7303                 {\r
7304                         uint32 srcdata   = 0;\r
7305                         uint32 srczdata  = 0;\r
7306                         uint32 dstdata   = 0;\r
7307                         uint32 dstzdata  = 0;\r
7308                         uint32 writedata = 0;\r
7309                         uint32 inhibit   = 0;\r
7310                         srcdata = READ_PIXEL_1(a2);\r
7311                         dstdata = READ_PIXEL_1(a1);\r
7312                         dstzdata = READ_RDATA_1(DSTZ, a1, a1_phrase_mode);\r
7313                                 writedata |= ~srcdata & dstdata;\r
7314                                 writedata |= srcdata  & ~dstdata;\r
7315                                 writedata |= srcdata  & dstdata;\r
7316                                 WRITE_PIXEL_1(a1, writedata);\r
7317                         a1_x += a1_xadd;\r
7318                         a1_y += a1_yadd;\r
7319                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7320                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7321                 }\r
7322                 a1_x+=a1_step_x;\r
7323                 a1_y+=a1_step_y;\r
7324                 a2_x+=a2_step_x;\r
7325                 a2_y+=a2_step_y;\r
7326         }\r
7327         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7328         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7329         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7330 }\r
7331 #endif\r
7332 #ifndef blitter_code_0x00e00292\r
7333 #define blitter_code_0x00e00292\r
7334 void blitter_0x00e00292(void)\r
7335 {\r
7336         while (outer_loop--)\r
7337         {\r
7338                 inner_loop=n_pixels;\r
7339                 while (inner_loop--)\r
7340                 {\r
7341                         uint32 srcdata   = 0;\r
7342                         uint32 srczdata  = 0;\r
7343                         uint32 dstdata   = 0;\r
7344                         uint32 dstzdata  = 0;\r
7345                         uint32 writedata = 0;\r
7346                         uint32 inhibit   = 0;\r
7347                         srcdata = READ_PIXEL_4(a2);\r
7348                         dstdata = READ_PIXEL_4(a1);\r
7349                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
7350                                 writedata |= ~srcdata & dstdata;\r
7351                                 writedata |= srcdata  & ~dstdata;\r
7352                                 writedata |= srcdata  & dstdata;\r
7353                                 WRITE_PIXEL_4(a1, writedata);\r
7354                         a1_x += a1_xadd;\r
7355                         a1_y += a1_yadd;\r
7356                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7357                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7358                 }\r
7359                 a1_x+=a1_step_x;\r
7360                 a1_y+=a1_step_y;\r
7361                 a2_x+=a2_step_x;\r
7362                 a2_y+=a2_step_y;\r
7363         }\r
7364         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7365         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7366         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7367 }\r
7368 #endif\r
7369 #ifndef blitter_code_0x308002a4\r
7370 #define blitter_code_0x308002a4\r
7371 void blitter_0x308002a4(void)\r
7372 {\r
7373         while (outer_loop--)\r
7374         {\r
7375                 inner_loop=n_pixels;\r
7376                 while (inner_loop--)\r
7377                 {\r
7378                         uint32 srcdata   = 0;\r
7379                         uint32 srczdata  = 0;\r
7380                         uint32 dstdata   = 0;\r
7381                         uint32 dstzdata  = 0;\r
7382                         uint32 writedata = 0;\r
7383                         uint32 inhibit   = 0;\r
7384                         srcdata = READ_PIXEL_16(a2);\r
7385                         dstdata = READ_PIXEL_16(a1);\r
7386                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
7387                                 writedata |= srcdata  & dstdata;\r
7388                         WRITE_PIXEL_16(a1, writedata);\r
7389                         a1_x += a1_xadd;\r
7390                         a1_y += a1_yadd;\r
7391                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7392                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7393                 }\r
7394                 a1_x+=a1_step_x;\r
7395                 a1_y+=a1_step_y;\r
7396                 a2_x+=a2_step_x;\r
7397                 a2_y+=a2_step_y;\r
7398         }\r
7399         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7400         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7401         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7402 }\r
7403 #endif\r
7404 #ifndef blitter_code_0x00c002a4\r
7405 #define blitter_code_0x00c002a4\r
7406 void blitter_0x00c002a4(void)\r
7407 {\r
7408         while (outer_loop--)\r
7409         {\r
7410                 inner_loop=n_pixels;\r
7411                 while (inner_loop--)\r
7412                 {\r
7413                         uint32 srcdata   = 0;\r
7414                         uint32 srczdata  = 0;\r
7415                         uint32 dstdata   = 0;\r
7416                         uint32 dstzdata  = 0;\r
7417                         uint32 writedata = 0;\r
7418                         uint32 inhibit   = 0;\r
7419                         srcdata = READ_PIXEL_16(a2);\r
7420                         dstdata = READ_PIXEL_16(a1);\r
7421                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
7422                                 writedata |= srcdata  & ~dstdata;\r
7423                                 writedata |= srcdata  & dstdata;\r
7424                                 WRITE_PIXEL_16(a1, writedata);\r
7425                         a1_x += a1_xadd;\r
7426                         a1_y += a1_yadd;\r
7427                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7428                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7429                 }\r
7430                 a1_x+=a1_step_x;\r
7431                 a1_y+=a1_step_y;\r
7432                 a2_x+=a2_step_x;\r
7433                 a2_y+=a2_step_y;\r
7434         }\r
7435         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7436         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7437         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7438 }\r
7439 #endif\r
7440 #ifndef blitter_code_0x01c042a4\r
7441 #define blitter_code_0x01c042a4\r
7442 void blitter_0x01c042a4(void)\r
7443 {\r
7444         while (outer_loop--)\r
7445         {\r
7446                 inner_loop=n_pixels;\r
7447                 while (inner_loop--)\r
7448                 {\r
7449                         uint32 srcdata   = 0;\r
7450                         uint32 srczdata  = 0;\r
7451                         uint32 dstdata   = 0;\r
7452                         uint32 dstzdata  = 0;\r
7453                         uint32 writedata = 0;\r
7454                         uint32 inhibit   = 0;\r
7455                         srcdata = READ_PIXEL_16(a2);\r
7456                         dstdata = READ_PIXEL_16(a1);\r
7457                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
7458                         if (srcdata == READ_RDATA_16(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
7459                         if (!inhibit)\r
7460                         {\r
7461                                 writedata |= srcdata  & ~dstdata;\r
7462                                 writedata |= srcdata  & dstdata;\r
7463                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7464                         WRITE_PIXEL_16(a1, writedata);\r
7465                         a1_x += a1_xadd;\r
7466                         a1_y += a1_yadd;\r
7467                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7468                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7469                 }\r
7470                 a1_x+=a1_step_x;\r
7471                 a1_y+=a1_step_y;\r
7472                 a2_x+=a2_step_x;\r
7473                 a2_y+=a2_step_y;\r
7474         }\r
7475         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7476         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7477         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7478 }\r
7479 #endif\r
7480 #ifndef blitter_code_0x06c066e4\r
7481 #define blitter_code_0x06c066e4\r
7482 void blitter_0x06c066e4(void)\r
7483 {\r
7484         while (outer_loop--)\r
7485         {\r
7486                 inner_loop=n_pixels;\r
7487                 while (inner_loop--)\r
7488                 {\r
7489                         uint32 srcdata   = 0;\r
7490                         uint32 srczdata  = 0;\r
7491                         uint32 dstdata   = 0;\r
7492                         uint32 dstzdata  = 0;\r
7493                         uint32 writedata = 0;\r
7494                         uint32 inhibit   = 0;\r
7495                         srcdata = READ_PIXEL_16(a1);\r
7496                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
7497                         dstdata = READ_PIXEL_16(a2);\r
7498                         dstzdata = READ_ZDATA_16(a2);\r
7499                         if (srczdata >  dstzdata)       inhibit = 1;\r
7500                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
7501                         if (!inhibit)\r
7502                         {\r
7503                                 writedata |= srcdata  & ~dstdata;\r
7504                                 writedata |= srcdata  & dstdata;\r
7505                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7506                         if (!inhibit)\r
7507                         {\r
7508                                 WRITE_PIXEL_16(a2, writedata);\r
7509                                 WRITE_ZDATA_16(a2, srczdata);\r
7510                         }\r
7511                         a1_x += a1_xadd;\r
7512                         a1_y += a1_yadd;\r
7513                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7514                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7515                 }\r
7516                 a1_x+=a1_step_x;\r
7517                 a1_y+=a1_step_y;\r
7518                 a2_x+=a2_step_x;\r
7519                 a2_y+=a2_step_y;\r
7520         }\r
7521         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7522         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7523         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7524 }\r
7525 #endif\r
7526 #ifndef blitter_code_0x04010222\r
7527 #define blitter_code_0x04010222\r
7528 void blitter_0x04010222(void)\r
7529 {\r
7530         while (outer_loop--)\r
7531         {\r
7532                 inner_loop=n_pixels;\r
7533                 while (inner_loop--)\r
7534                 {\r
7535                         uint32 srcdata   = 0;\r
7536                         uint32 srczdata  = 0;\r
7537                         uint32 dstdata   = 0;\r
7538                         uint32 dstzdata  = 0;\r
7539                         uint32 writedata = 0;\r
7540                         uint32 inhibit   = 0;\r
7541                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
7542                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
7543                         dstdata = READ_PIXEL_4(a1);\r
7544                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
7545                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
7546                                 WRITE_PIXEL_4(a1, writedata);\r
7547                         a1_x += a1_xadd;\r
7548                         a1_y += a1_yadd;\r
7549                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7550                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7551                 }\r
7552                 a1_x+=a1_step_x;\r
7553                 a1_y+=a1_step_y;\r
7554                 a2_x+=a2_step_x;\r
7555                 a2_y+=a2_step_y;\r
7556         }\r
7557         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7558         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7559         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7560 }\r
7561 #endif\r
7562 #ifndef blitter_code_0x24010224\r
7563 #define blitter_code_0x24010224\r
7564 void blitter_0x24010224(void)\r
7565 {\r
7566         while (outer_loop--)\r
7567         {\r
7568                 inner_loop=n_pixels;\r
7569                 while (inner_loop--)\r
7570                 {\r
7571                         uint32 srcdata   = 0;\r
7572                         uint32 srczdata  = 0;\r
7573                         uint32 dstdata   = 0;\r
7574                         uint32 dstzdata  = 0;\r
7575                         uint32 writedata = 0;\r
7576                         uint32 inhibit   = 0;\r
7577                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
7578                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
7579                         dstdata = READ_PIXEL_16(a1);\r
7580                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
7581                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
7582                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
7583                                 WRITE_PIXEL_16(a1, writedata);\r
7584                         a1_x += a1_xadd;\r
7585                         a1_y += a1_yadd;\r
7586                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7587                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7588                         gd_i[colour_index] += gd_ia;\r
7589                         gd_c[colour_index] += gd_ca;\r
7590                 }\r
7591                 a1_x+=a1_step_x;\r
7592                 a1_y+=a1_step_y;\r
7593                 a2_x+=a2_step_x;\r
7594                 a2_y+=a2_step_y;\r
7595         }\r
7596         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7597         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7598         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7599 }\r
7600 #endif\r
7601 #ifndef blitter_code_0x2000001b\r
7602 #define blitter_code_0x2000001b\r
7603 void blitter_0x2000001b(void)\r
7604 {\r
7605         while (outer_loop--)\r
7606         {\r
7607                 inner_loop=n_pixels;\r
7608                 while (inner_loop--)\r
7609                 {\r
7610                         uint32 srcdata   = 0;\r
7611                         uint32 srczdata  = 0;\r
7612                         uint32 dstdata   = 0;\r
7613                         uint32 dstzdata  = 0;\r
7614                         uint32 writedata = 0;\r
7615                         uint32 inhibit   = 0;\r
7616                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
7617                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
7618                                 WRITE_PIXEL_8(a1, writedata);\r
7619                         a1_x += a1_xadd;\r
7620                         a1_y += a1_yadd;\r
7621                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7622                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7623                 }\r
7624                 a1_x+=a1_step_x;\r
7625                 a1_y+=a1_step_y;\r
7626                 a2_x+=a2_step_x;\r
7627                 a2_y+=a2_step_y;\r
7628         }\r
7629         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7630         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7631         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7632 }\r
7633 #endif\r
7634 #ifndef blitter_code_0x3000005b\r
7635 #define blitter_code_0x3000005b\r
7636 void blitter_0x3000005b(void)\r
7637 {\r
7638         while (outer_loop--)\r
7639         {\r
7640                 inner_loop=n_pixels;\r
7641                 while (inner_loop--)\r
7642                 {\r
7643                         uint32 srcdata   = 0;\r
7644                         uint32 srczdata  = 0;\r
7645                         uint32 dstdata   = 0;\r
7646                         uint32 dstzdata  = 0;\r
7647                         uint32 writedata = 0;\r
7648                         uint32 inhibit   = 0;\r
7649                         srcdata = READ_RDATA_8(SRCDATA, a1, a1_phrase_mode);\r
7650                         dstdata = READ_RDATA_8(DSTDATA, a2, a2_phrase_mode);\r
7651                         WRITE_PIXEL_8(a2, writedata);\r
7652                         a1_x += a1_xadd;\r
7653                         a1_y += a1_yadd;\r
7654                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7655                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7656                 }\r
7657                 a1_x+=a1_step_x;\r
7658                 a1_y+=a1_step_y;\r
7659                 a2_x+=a2_step_x;\r
7660                 a2_y+=a2_step_y;\r
7661         }\r
7662         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7663         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7664         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7665 }\r
7666 #endif\r
7667 #ifndef blitter_code_0x38000100\r
7668 #define blitter_code_0x38000100\r
7669 void blitter_0x38000100(void)\r
7670 {\r
7671         while (outer_loop--)\r
7672         {\r
7673                 inner_loop=n_pixels;\r
7674                 while (inner_loop--)\r
7675                 {\r
7676                         uint32 srcdata   = 0;\r
7677                         uint32 srczdata  = 0;\r
7678                         uint32 dstdata   = 0;\r
7679                         uint32 dstzdata  = 0;\r
7680                         uint32 writedata = 0;\r
7681                         uint32 inhibit   = 0;\r
7682                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
7683                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
7684                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7685                         if (!inhibit)\r
7686                         {\r
7687                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7688                         WRITE_PIXEL_1(a1, writedata);\r
7689                         a1_x += a1_xadd;\r
7690                         a1_y += a1_yadd;\r
7691                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7692                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7693                 }\r
7694                 a1_x+=a1_step_x;\r
7695                 a1_y+=a1_step_y;\r
7696                 a2_x+=a2_step_x;\r
7697                 a2_y+=a2_step_y;\r
7698         }\r
7699         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7700         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7701         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7702 }\r
7703 #endif\r
7704 #ifndef blitter_code_0x1c010024\r
7705 #define blitter_code_0x1c010024\r
7706 void blitter_0x1c010024(void)\r
7707 {\r
7708         while (outer_loop--)\r
7709         {\r
7710                 inner_loop=n_pixels;\r
7711                 while (inner_loop--)\r
7712                 {\r
7713                         uint32 srcdata   = 0;\r
7714                         uint32 srczdata  = 0;\r
7715                         uint32 dstdata   = 0;\r
7716                         uint32 dstzdata  = 0;\r
7717                         uint32 writedata = 0;\r
7718                         uint32 inhibit   = 0;\r
7719                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
7720                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
7721                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
7722                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7723                         if (!inhibit)\r
7724                         {\r
7725                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
7726                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7727                         WRITE_PIXEL_16(a1, writedata);\r
7728                         a1_x += a1_xadd;\r
7729                         a1_y += a1_yadd;\r
7730                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7731                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7732                 }\r
7733                 a1_x+=a1_step_x;\r
7734                 a1_y+=a1_step_y;\r
7735                 a2_x+=a2_step_x;\r
7736                 a2_y+=a2_step_y;\r
7737         }\r
7738         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7739         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7740         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7741 }\r
7742 #endif\r
7743 #ifndef blitter_code_0x000242e4\r
7744 #define blitter_code_0x000242e4\r
7745 void blitter_0x000242e4(void)\r
7746 {\r
7747         while (outer_loop--)\r
7748         {\r
7749                 inner_loop=n_pixels;\r
7750                 while (inner_loop--)\r
7751                 {\r
7752                         uint32 srcdata   = 0;\r
7753                         uint32 srczdata  = 0;\r
7754                         uint32 dstdata   = 0;\r
7755                         uint32 dstzdata  = 0;\r
7756                         uint32 writedata = 0;\r
7757                         uint32 inhibit   = 0;\r
7758                         srcdata = READ_PIXEL_16(a1);\r
7759                         dstdata = READ_PIXEL_16(a2);\r
7760                         dstzdata = READ_RDATA_16(DSTZ, a2, a2_phrase_mode);\r
7761                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
7762                         if (!inhibit)\r
7763                         {\r
7764                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
7765                                 if (writedata > 0xff) writedata = 0xff;\r
7766                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
7767                                 if (writedata > 0xfff) writedata = 0xfff;\r
7768                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
7769                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7770                         if (!inhibit)\r
7771                         {\r
7772                                 WRITE_PIXEL_16(a2, writedata);\r
7773                         }\r
7774                         a1_x += a1_xadd;\r
7775                         a1_y += a1_yadd;\r
7776                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7777                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7778                 }\r
7779                 a1_x+=a1_step_x;\r
7780                 a1_y+=a1_step_y;\r
7781                 a2_x+=a2_step_x;\r
7782                 a2_y+=a2_step_y;\r
7783         }\r
7784         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7785         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7786         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7787 }\r
7788 #endif\r
7789 #ifndef blitter_code_0x2c01002c\r
7790 #define blitter_code_0x2c01002c\r
7791 void blitter_0x2c01002c(void)\r
7792 {\r
7793         while (outer_loop--)\r
7794         {\r
7795                 inner_loop=n_pixels;\r
7796                 while (inner_loop--)\r
7797                 {\r
7798                         uint32 srcdata   = 0;\r
7799                         uint32 srczdata  = 0;\r
7800                         uint32 dstdata   = 0;\r
7801                         uint32 dstzdata  = 0;\r
7802                         uint32 writedata = 0;\r
7803                         uint32 inhibit   = 0;\r
7804                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
7805                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
7806                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
7807                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7808                         if (!inhibit)\r
7809                         {\r
7810                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
7811                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7812                         if (!inhibit)\r
7813                         {\r
7814                                 WRITE_PIXEL_16(a1, writedata);\r
7815                         }\r
7816                         a1_x += a1_xadd;\r
7817                         a1_y += a1_yadd;\r
7818                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7819                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7820                 }\r
7821                 a1_x+=a1_step_x;\r
7822                 a1_y+=a1_step_y;\r
7823                 a2_x+=a2_step_x;\r
7824                 a2_y+=a2_step_y;\r
7825         }\r
7826         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7827         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7828         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7829 }\r
7830 #endif\r
7831 #ifndef blitter_code_0x30c042e4\r
7832 #define blitter_code_0x30c042e4\r
7833 void blitter_0x30c042e4(void)\r
7834 {\r
7835         while (outer_loop--)\r
7836         {\r
7837                 inner_loop=n_pixels;\r
7838                 while (inner_loop--)\r
7839                 {\r
7840                         uint32 srcdata   = 0;\r
7841                         uint32 srczdata  = 0;\r
7842                         uint32 dstdata   = 0;\r
7843                         uint32 dstzdata  = 0;\r
7844                         uint32 writedata = 0;\r
7845                         uint32 inhibit   = 0;\r
7846                         srcdata = READ_PIXEL_16(a1);\r
7847                         dstdata = READ_PIXEL_16(a2);\r
7848                         dstzdata = READ_RDATA_16(DSTZ, a2, a2_phrase_mode);\r
7849                         if (srcdata == READ_RDATA_16(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
7850                         if (!inhibit)\r
7851                         {\r
7852                                 writedata |= srcdata  & ~dstdata;\r
7853                                 writedata |= srcdata  & dstdata;\r
7854                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7855                         WRITE_PIXEL_16(a2, writedata);\r
7856                         a1_x += a1_xadd;\r
7857                         a1_y += a1_yadd;\r
7858                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7859                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7860                 }\r
7861                 a1_x+=a1_step_x;\r
7862                 a1_y+=a1_step_y;\r
7863                 a2_x+=a2_step_x;\r
7864                 a2_y+=a2_step_y;\r
7865         }\r
7866         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7867         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7868         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7869 }\r
7870 #endif\r
7871 #ifndef blitter_code_0x3c01002c\r
7872 #define blitter_code_0x3c01002c\r
7873 void blitter_0x3c01002c(void)\r
7874 {\r
7875         while (outer_loop--)\r
7876         {\r
7877                 inner_loop=n_pixels;\r
7878                 while (inner_loop--)\r
7879                 {\r
7880                         uint32 srcdata   = 0;\r
7881                         uint32 srczdata  = 0;\r
7882                         uint32 dstdata   = 0;\r
7883                         uint32 dstzdata  = 0;\r
7884                         uint32 writedata = 0;\r
7885                         uint32 inhibit   = 0;\r
7886                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
7887                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
7888                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
7889                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7890                         if (!inhibit)\r
7891                         {\r
7892                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
7893                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7894                         WRITE_PIXEL_16(a1, writedata);\r
7895                         a1_x += a1_xadd;\r
7896                         a1_y += a1_yadd;\r
7897                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7898                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7899                 }\r
7900                 a1_x+=a1_step_x;\r
7901                 a1_y+=a1_step_y;\r
7902                 a2_x+=a2_step_x;\r
7903                 a2_y+=a2_step_y;\r
7904         }\r
7905         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7906         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7907         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7908 }\r
7909 #endif\r
7910 #ifndef blitter_code_0x0cc10212\r
7911 #define blitter_code_0x0cc10212\r
7912 void blitter_0x0cc10212(void)\r
7913 {\r
7914         while (outer_loop--)\r
7915         {\r
7916                 inner_loop=n_pixels;\r
7917                 while (inner_loop--)\r
7918                 {\r
7919                         uint32 srcdata   = 0;\r
7920                         uint32 srczdata  = 0;\r
7921                         uint32 dstdata   = 0;\r
7922                         uint32 dstzdata  = 0;\r
7923                         uint32 writedata = 0;\r
7924                         uint32 inhibit   = 0;\r
7925                         srcdata = READ_RDATA_4(SRCDATA, a2, a2_phrase_mode);\r
7926                         srczdata = READ_RDATA_4(SRCZINT, a2, a2_phrase_mode);\r
7927                         dstdata = READ_PIXEL_4(a1);\r
7928                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
7929                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7930                         if (!inhibit)\r
7931                         {\r
7932                                 writedata= READ_RDATA_4(PATTERNDATA, a1, a1_phrase_mode);\r
7933                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7934                         if (!inhibit)\r
7935                         {\r
7936                                 WRITE_PIXEL_4(a1, writedata);\r
7937                         }\r
7938                         a1_x += a1_xadd;\r
7939                         a1_y += a1_yadd;\r
7940                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7941                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7942                 }\r
7943                 a1_x+=a1_step_x;\r
7944                 a1_y+=a1_step_y;\r
7945                 a2_x+=a2_step_x;\r
7946                 a2_y+=a2_step_y;\r
7947         }\r
7948         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7949         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7950         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7951 }\r
7952 #endif\r
7953 #ifndef blitter_code_0x38000301\r
7954 #define blitter_code_0x38000301\r
7955 void blitter_0x38000301(void)\r
7956 {\r
7957         while (outer_loop--)\r
7958         {\r
7959                 inner_loop=n_pixels;\r
7960                 while (inner_loop--)\r
7961                 {\r
7962                         uint32 srcdata   = 0;\r
7963                         uint32 srczdata  = 0;\r
7964                         uint32 dstdata   = 0;\r
7965                         uint32 dstzdata  = 0;\r
7966                         uint32 writedata = 0;\r
7967                         uint32 inhibit   = 0;\r
7968                         srcdata = READ_RDATA_2(SRCDATA, a2, a2_phrase_mode);\r
7969                         dstdata = READ_PIXEL_2(a1);\r
7970                         dstzdata = READ_RDATA_2(DSTZ, a1, a1_phrase_mode);\r
7971                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
7972                         if (!inhibit)\r
7973                         {\r
7974                         } else { srczdata=dstzdata; writedata=dstdata; }\r
7975                         WRITE_PIXEL_2(a1, writedata);\r
7976                         a1_x += a1_xadd;\r
7977                         a1_y += a1_yadd;\r
7978                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
7979                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
7980                 }\r
7981                 a1_x+=a1_step_x;\r
7982                 a1_y+=a1_step_y;\r
7983                 a2_x+=a2_step_x;\r
7984                 a2_y+=a2_step_y;\r
7985         }\r
7986         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
7987         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
7988         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
7989 }\r
7990 #endif\r
7991 #ifndef blitter_code_0x2401002b\r
7992 #define blitter_code_0x2401002b\r
7993 void blitter_0x2401002b(void)\r
7994 {\r
7995         while (outer_loop--)\r
7996         {\r
7997                 inner_loop=n_pixels;\r
7998                 while (inner_loop--)\r
7999                 {\r
8000                         uint32 srcdata   = 0;\r
8001                         uint32 srczdata  = 0;\r
8002                         uint32 dstdata   = 0;\r
8003                         uint32 dstzdata  = 0;\r
8004                         uint32 writedata = 0;\r
8005                         uint32 inhibit   = 0;\r
8006                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
8007                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
8008                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
8009                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
8010                                 WRITE_PIXEL_8(a1, writedata);\r
8011                         a1_x += a1_xadd;\r
8012                         a1_y += a1_yadd;\r
8013                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8014                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8015                 }\r
8016                 a1_x+=a1_step_x;\r
8017                 a1_y+=a1_step_y;\r
8018                 a2_x+=a2_step_x;\r
8019                 a2_y+=a2_step_y;\r
8020         }\r
8021         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8022         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8023         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8024 }\r
8025 #endif\r
8026 #ifndef blitter_code_0x30c004ad\r
8027 #define blitter_code_0x30c004ad\r
8028 void blitter_0x30c004ad(void)\r
8029 {\r
8030         while (outer_loop--)\r
8031         {\r
8032                 inner_loop=n_pixels;\r
8033                 while (inner_loop--)\r
8034                 {\r
8035                         uint32 srcdata   = 0;\r
8036                         uint32 srczdata  = 0;\r
8037                         uint32 dstdata   = 0;\r
8038                         uint32 dstzdata  = 0;\r
8039                         uint32 writedata = 0;\r
8040                         uint32 inhibit   = 0;\r
8041                         srcdata = READ_PIXEL_32(a2);\r
8042                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
8043                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
8044                                 writedata |= srcdata  & ~dstdata;\r
8045                                 writedata |= srcdata  & dstdata;\r
8046                         WRITE_PIXEL_32(a1, writedata);\r
8047                         a1_x += a1_xadd;\r
8048                         a1_y += a1_yadd;\r
8049                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8050                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8051                 }\r
8052                 a1_x+=a1_step_x;\r
8053                 a1_y+=a1_step_y;\r
8054                 a2_x+=a2_step_x;\r
8055                 a2_y+=a2_step_y;\r
8056         }\r
8057         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8058         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8059         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8060 }\r
8061 #endif\r
8062 #ifndef blitter_code_0x04012000\r
8063 #define blitter_code_0x04012000\r
8064 void blitter_0x04012000(void)\r
8065 {\r
8066         while (outer_loop--)\r
8067         {\r
8068                 inner_loop=n_pixels;\r
8069                 while (inner_loop--)\r
8070                 {\r
8071                         uint32 srcdata   = 0;\r
8072                         uint32 srczdata  = 0;\r
8073                         uint32 dstdata   = 0;\r
8074                         uint32 dstzdata  = 0;\r
8075                         uint32 writedata = 0;\r
8076                         uint32 inhibit   = 0;\r
8077                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
8078                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
8079                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
8080                         srczdata=z_i[colour_index]>>16;\r
8081                         if (srczdata >  dstzdata)       inhibit = 1;\r
8082                         if (!inhibit)\r
8083                         {\r
8084                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
8085                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8086                         if (!inhibit)\r
8087                         {\r
8088                                 WRITE_PIXEL_1(a1, writedata);\r
8089                         }\r
8090                         a1_x += a1_xadd;\r
8091                         a1_y += a1_yadd;\r
8092                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8093                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8094                         z_i[colour_index]+=zadd;\r
8095                 }\r
8096                 a1_x+=a1_step_x;\r
8097                 a1_y+=a1_step_y;\r
8098                 a2_x+=a2_step_x;\r
8099                 a2_y+=a2_step_y;\r
8100         }\r
8101         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8102         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8103         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8104 }\r
8105 #endif\r
8106 #ifndef blitter_code_0x34012000\r
8107 #define blitter_code_0x34012000\r
8108 void blitter_0x34012000(void)\r
8109 {\r
8110         while (outer_loop--)\r
8111         {\r
8112                 inner_loop=n_pixels;\r
8113                 while (inner_loop--)\r
8114                 {\r
8115                         uint32 srcdata   = 0;\r
8116                         uint32 srczdata  = 0;\r
8117                         uint32 dstdata   = 0;\r
8118                         uint32 dstzdata  = 0;\r
8119                         uint32 writedata = 0;\r
8120                         uint32 inhibit   = 0;\r
8121                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
8122                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
8123                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
8124                         srczdata=z_i[colour_index]>>16;\r
8125                         if (srczdata >  dstzdata)       inhibit = 1;\r
8126                         if (!inhibit)\r
8127                         {\r
8128                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
8129                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8130                         WRITE_PIXEL_1(a1, writedata);\r
8131                         a1_x += a1_xadd;\r
8132                         a1_y += a1_yadd;\r
8133                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8134                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8135                         z_i[colour_index]+=zadd;\r
8136                          colour_index=(colour_index+1)&0x3;\r
8137                 }\r
8138                 a1_x+=a1_step_x;\r
8139                 a1_y+=a1_step_y;\r
8140                 a2_x+=a2_step_x;\r
8141                 a2_y+=a2_step_y;\r
8142         }\r
8143         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8144         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8145         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8146 }\r
8147 #endif\r
8148 #ifndef blitter_code_0x30c004ad\r
8149 #define blitter_code_0x30c004ad\r
8150 void blitter_0x30c004ad(void)\r
8151 {\r
8152         while (outer_loop--)\r
8153         {\r
8154                 inner_loop=n_pixels;\r
8155                 while (inner_loop--)\r
8156                 {\r
8157                         uint32 srcdata   = 0;\r
8158                         uint32 srczdata  = 0;\r
8159                         uint32 dstdata   = 0;\r
8160                         uint32 dstzdata  = 0;\r
8161                         uint32 writedata = 0;\r
8162                         uint32 inhibit   = 0;\r
8163                         srcdata = READ_PIXEL_32(a2);\r
8164                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
8165                         dstzdata = READ_RDATA_32(DSTZ, a1, a1_phrase_mode);\r
8166                                 writedata |= srcdata  & ~dstdata;\r
8167                                 writedata |= srcdata  & dstdata;\r
8168                         WRITE_PIXEL_32(a1, writedata);\r
8169                         a1_x += a1_xadd;\r
8170                         a1_y += a1_yadd;\r
8171                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8172                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8173                 }\r
8174                 a1_x+=a1_step_x;\r
8175                 a1_y+=a1_step_y;\r
8176                 a2_x+=a2_step_x;\r
8177                 a2_y+=a2_step_y;\r
8178         }\r
8179         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8180         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8181         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8182 }\r
8183 #endif\r
8184 #ifndef blitter_code_0x04012000\r
8185 #define blitter_code_0x04012000\r
8186 void blitter_0x04012000(void)\r
8187 {\r
8188         while (outer_loop--)\r
8189         {\r
8190                 inner_loop=n_pixels;\r
8191                 while (inner_loop--)\r
8192                 {\r
8193                         uint32 srcdata   = 0;\r
8194                         uint32 srczdata  = 0;\r
8195                         uint32 dstdata   = 0;\r
8196                         uint32 dstzdata  = 0;\r
8197                         uint32 writedata = 0;\r
8198                         uint32 inhibit   = 0;\r
8199                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
8200                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
8201                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
8202                         srczdata=z_i[colour_index]>>16;\r
8203                         if (srczdata >  dstzdata)       inhibit = 1;\r
8204                         if (!inhibit)\r
8205                         {\r
8206                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
8207                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8208                         if (!inhibit)\r
8209                         {\r
8210                                 WRITE_PIXEL_1(a1, writedata);\r
8211                         }\r
8212                         a1_x += a1_xadd;\r
8213                         a1_y += a1_yadd;\r
8214                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8215                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8216                         z_i[colour_index]+=zadd;\r
8217                 }\r
8218                 a1_x+=a1_step_x;\r
8219                 a1_y+=a1_step_y;\r
8220                 a2_x+=a2_step_x;\r
8221                 a2_y+=a2_step_y;\r
8222         }\r
8223         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8224         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8225         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8226 }\r
8227 #endif\r
8228 #ifndef blitter_code_0x34012000\r
8229 #define blitter_code_0x34012000\r
8230 void blitter_0x34012000(void)\r
8231 {\r
8232         while (outer_loop--)\r
8233         {\r
8234                 inner_loop=n_pixels;\r
8235                 while (inner_loop--)\r
8236                 {\r
8237                         uint32 srcdata   = 0;\r
8238                         uint32 srczdata  = 0;\r
8239                         uint32 dstdata   = 0;\r
8240                         uint32 dstzdata  = 0;\r
8241                         uint32 writedata = 0;\r
8242                         uint32 inhibit   = 0;\r
8243                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
8244                         srczdata = READ_RDATA_1(SRCZINT, a2, a2_phrase_mode);\r
8245                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
8246                         srczdata=z_i[colour_index]>>16;\r
8247                         if (srczdata >  dstzdata)       inhibit = 1;\r
8248                         if (!inhibit)\r
8249                         {\r
8250                                 writedata= READ_RDATA_1(PATTERNDATA, a1, a1_phrase_mode);\r
8251                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8252                         WRITE_PIXEL_1(a1, writedata);\r
8253                         a1_x += a1_xadd;\r
8254                         a1_y += a1_yadd;\r
8255                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8256                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8257                         z_i[colour_index]+=zadd;\r
8258                          colour_index=(colour_index+1)&0x3;\r
8259                 }\r
8260                 a1_x+=a1_step_x;\r
8261                 a1_y+=a1_step_y;\r
8262                 a2_x+=a2_step_x;\r
8263                 a2_y+=a2_step_y;\r
8264         }\r
8265         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8266         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8267         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8268 }\r
8269 #endif\r
8270 #ifndef blitter_code_0x30808c92\r
8271 #define blitter_code_0x30808c92\r
8272 void blitter_0x30808c92(void)\r
8273 {\r
8274         while (outer_loop--)\r
8275         {\r
8276                 inner_loop=n_pixels;\r
8277                 while (inner_loop--)\r
8278                 {\r
8279                         uint32 srcdata   = 0;\r
8280                         uint32 srczdata  = 0;\r
8281                         uint32 dstdata   = 0;\r
8282                         uint32 dstzdata  = 0;\r
8283                         uint32 writedata = 0;\r
8284                         uint32 inhibit   = 0;\r
8285                         srcdata = READ_PIXEL_4(a2);\r
8286                         dstdata = READ_RDATA_4(DSTDATA, a1, a1_phrase_mode);\r
8287                         dstzdata = READ_RDATA_4(DSTZ, a1, a1_phrase_mode);\r
8288                         if (srczdata <  dstzdata)       inhibit = 1;\r
8289                         if (!inhibit)\r
8290                         {\r
8291                                 writedata |= srcdata  & dstdata;\r
8292                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8293                         WRITE_PIXEL_4(a1, writedata);\r
8294                         a1_x += a1_xadd;\r
8295                         a1_y += a1_yadd;\r
8296                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8297                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8298                 }\r
8299                 a1_x+=a1_step_x;\r
8300                 a1_y+=a1_step_y;\r
8301                 a2_x+=a2_step_x;\r
8302                 a2_y+=a2_step_y;\r
8303         }\r
8304         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8305         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8306         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8307 }\r
8308 #endif\r
8309 #ifndef blitter_code_0x0040409b\r
8310 #define blitter_code_0x0040409b\r
8311 void blitter_0x0040409b(void)\r
8312 {\r
8313         while (outer_loop--)\r
8314         {\r
8315                 inner_loop=n_pixels;\r
8316                 while (inner_loop--)\r
8317                 {\r
8318                         uint32 srcdata   = 0;\r
8319                         uint32 srczdata  = 0;\r
8320                         uint32 dstdata   = 0;\r
8321                         uint32 dstzdata  = 0;\r
8322                         uint32 writedata = 0;\r
8323                         uint32 inhibit   = 0;\r
8324                         srcdata = READ_PIXEL_8(a2);\r
8325                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
8326                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
8327                         if (!inhibit)\r
8328                         {\r
8329                                 writedata |= srcdata  & ~dstdata;\r
8330                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8331                         if (!inhibit)\r
8332                         {\r
8333                                 WRITE_PIXEL_8(a1, writedata);\r
8334                         }\r
8335                         a1_x += a1_xadd;\r
8336                         a1_y += a1_yadd;\r
8337                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8338                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8339                 }\r
8340                 a1_x+=a1_step_x;\r
8341                 a1_y+=a1_step_y;\r
8342                 a2_x+=a2_step_x;\r
8343                 a2_y+=a2_step_y;\r
8344         }\r
8345         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8346         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8347         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8348 }\r
8349 #endif\r
8350 #ifndef blitter_code_0x1000001d\r
8351 #define blitter_code_0x1000001d\r
8352 void blitter_0x1000001d(void)\r
8353 {\r
8354         while (outer_loop--)\r
8355         {\r
8356                 inner_loop=n_pixels;\r
8357                 while (inner_loop--)\r
8358                 {\r
8359                         uint32 srcdata   = 0;\r
8360                         uint32 srczdata  = 0;\r
8361                         uint32 dstdata   = 0;\r
8362                         uint32 dstzdata  = 0;\r
8363                         uint32 writedata = 0;\r
8364                         uint32 inhibit   = 0;\r
8365                         srcdata = READ_RDATA_32(SRCDATA, a2, a2_phrase_mode);\r
8366                         dstdata = READ_RDATA_32(DSTDATA, a1, a1_phrase_mode);\r
8367                         if (!inhibit)\r
8368                         {\r
8369                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8370                         WRITE_PIXEL_32(a1, writedata);\r
8371                         a1_x += a1_xadd;\r
8372                         a1_y += a1_yadd;\r
8373                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8374                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8375                 }\r
8376                 a1_x+=a1_step_x;\r
8377                 a1_y+=a1_step_y;\r
8378                 a2_x+=a2_step_x;\r
8379                 a2_y+=a2_step_y;\r
8380         }\r
8381         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8382         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8383         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8384 }\r
8385 #endif\r
8386 #ifndef blitter_code_0x0000409b\r
8387 #define blitter_code_0x0000409b\r
8388 void blitter_0x0000409b(void)\r
8389 {\r
8390         while (outer_loop--)\r
8391         {\r
8392                 inner_loop=n_pixels;\r
8393                 while (inner_loop--)\r
8394                 {\r
8395                         uint32 srcdata   = 0;\r
8396                         uint32 srczdata  = 0;\r
8397                         uint32 dstdata   = 0;\r
8398                         uint32 dstzdata  = 0;\r
8399                         uint32 writedata = 0;\r
8400                         uint32 inhibit   = 0;\r
8401                         srcdata = READ_PIXEL_8(a2);\r
8402                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
8403                         if (srcdata == READ_RDATA_8(PATTERNDATA, a2,a2_phrase_mode)) inhibit=1;\r
8404                         if (!inhibit)\r
8405                         {\r
8406                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8407                         if (!inhibit)\r
8408                         {\r
8409                                 WRITE_PIXEL_8(a1, writedata);\r
8410                         }\r
8411                         a1_x += a1_xadd;\r
8412                         a1_y += a1_yadd;\r
8413                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8414                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8415                 }\r
8416                 a1_x+=a1_step_x;\r
8417                 a1_y+=a1_step_y;\r
8418                 a2_x+=a2_step_x;\r
8419                 a2_y+=a2_step_y;\r
8420         }\r
8421         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8422         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8423         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8424 }\r
8425 #endif\r
8426 #ifndef blitter_code_0x0cc10024\r
8427 #define blitter_code_0x0cc10024\r
8428 void blitter_0x0cc10024(void)\r
8429 {\r
8430         while (outer_loop--)\r
8431         {\r
8432                 inner_loop=n_pixels;\r
8433                 while (inner_loop--)\r
8434                 {\r
8435                         uint32 srcdata   = 0;\r
8436                         uint32 srczdata  = 0;\r
8437                         uint32 dstdata   = 0;\r
8438                         uint32 dstzdata  = 0;\r
8439                         uint32 writedata = 0;\r
8440                         uint32 inhibit   = 0;\r
8441                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
8442                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
8443                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
8444                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
8445                         if (!inhibit)\r
8446                         {\r
8447                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
8448                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8449                         if (!inhibit)\r
8450                         {\r
8451                                 WRITE_PIXEL_16(a1, writedata);\r
8452                         }\r
8453                         a1_x += a1_xadd;\r
8454                         a1_y += a1_yadd;\r
8455                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8456                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8457                 }\r
8458                 a1_x+=a1_step_x;\r
8459                 a1_y+=a1_step_y;\r
8460                 a2_x+=a2_step_x;\r
8461                 a2_y+=a2_step_y;\r
8462         }\r
8463         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8464         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8465         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8466 }\r
8467 #endif\r
8468 #ifndef blitter_code_0x2401001b\r
8469 #define blitter_code_0x2401001b\r
8470 void blitter_0x2401001b(void)\r
8471 {\r
8472         while (outer_loop--)\r
8473         {\r
8474                 inner_loop=n_pixels;\r
8475                 while (inner_loop--)\r
8476                 {\r
8477                         uint32 srcdata   = 0;\r
8478                         uint32 srczdata  = 0;\r
8479                         uint32 dstdata   = 0;\r
8480                         uint32 dstzdata  = 0;\r
8481                         uint32 writedata = 0;\r
8482                         uint32 inhibit   = 0;\r
8483                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
8484                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
8485                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
8486                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
8487                                 WRITE_PIXEL_8(a1, writedata);\r
8488                         a1_x += a1_xadd;\r
8489                         a1_y += a1_yadd;\r
8490                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8491                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8492                 }\r
8493                 a1_x+=a1_step_x;\r
8494                 a1_y+=a1_step_y;\r
8495                 a2_x+=a2_step_x;\r
8496                 a2_y+=a2_step_y;\r
8497         }\r
8498         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8499         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8500         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8501 }\r
8502 #endif\r
8503 #ifndef blitter_code_0x01c042db\r
8504 #define blitter_code_0x01c042db\r
8505 void blitter_0x01c042db(void)\r
8506 {\r
8507         while (outer_loop--)\r
8508         {\r
8509                 inner_loop=n_pixels;\r
8510                 while (inner_loop--)\r
8511                 {\r
8512                         uint32 srcdata   = 0;\r
8513                         uint32 srczdata  = 0;\r
8514                         uint32 dstdata   = 0;\r
8515                         uint32 dstzdata  = 0;\r
8516                         uint32 writedata = 0;\r
8517                         uint32 inhibit   = 0;\r
8518                         srcdata = READ_PIXEL_8(a1);\r
8519                         dstdata = READ_PIXEL_8(a2);\r
8520                         dstzdata = READ_RDATA_8(DSTZ, a2, a2_phrase_mode);\r
8521                         if (srcdata == READ_RDATA_8(PATTERNDATA, a1,a1_phrase_mode)) inhibit=1;\r
8522                         if (!inhibit)\r
8523                         {\r
8524                                 writedata |= srcdata  & ~dstdata;\r
8525                                 writedata |= srcdata  & dstdata;\r
8526                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8527                         WRITE_PIXEL_8(a2, writedata);\r
8528                         a1_x += a1_xadd;\r
8529                         a1_y += a1_yadd;\r
8530                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8531                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8532                 }\r
8533                 a1_x+=a1_step_x;\r
8534                 a1_y+=a1_step_y;\r
8535                 a2_x+=a2_step_x;\r
8536                 a2_y+=a2_step_y;\r
8537         }\r
8538         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8539         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8540         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8541 }\r
8542 #endif\r
8543 #ifndef blitter_code_0x34010224\r
8544 #define blitter_code_0x34010224\r
8545 void blitter_0x34010224(void)\r
8546 {\r
8547         while (outer_loop--)\r
8548         {\r
8549                 inner_loop=n_pixels;\r
8550                 while (inner_loop--)\r
8551                 {\r
8552                         uint32 srcdata   = 0;\r
8553                         uint32 srczdata  = 0;\r
8554                         uint32 dstdata   = 0;\r
8555                         uint32 dstzdata  = 0;\r
8556                         uint32 writedata = 0;\r
8557                         uint32 inhibit   = 0;\r
8558                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
8559                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
8560                         dstdata = READ_PIXEL_16(a1);\r
8561                         dstzdata = READ_RDATA_16(DSTZ, a1, a1_phrase_mode);\r
8562                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
8563                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
8564                         WRITE_PIXEL_16(a1, writedata);\r
8565                         a1_x += a1_xadd;\r
8566                         a1_y += a1_yadd;\r
8567                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8568                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8569                         gd_i[colour_index] += gd_ia;\r
8570                         gd_c[colour_index] += gd_ca;\r
8571                          colour_index=(colour_index+1)&0x3;\r
8572                 }\r
8573                 a1_x+=a1_step_x;\r
8574                 a1_y+=a1_step_y;\r
8575                 a2_x+=a2_step_x;\r
8576                 a2_y+=a2_step_y;\r
8577         }\r
8578         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8579         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8580         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8581 }\r
8582 #endif\r
8583 #ifndef blitter_code_0x30808800\r
8584 #define blitter_code_0x30808800\r
8585 void blitter_0x30808800(void)\r
8586 {\r
8587         while (outer_loop--)\r
8588         {\r
8589                 inner_loop=n_pixels;\r
8590                 while (inner_loop--)\r
8591                 {\r
8592                         uint32 srcdata   = 0;\r
8593                         uint32 srczdata  = 0;\r
8594                         uint32 dstdata   = 0;\r
8595                         uint32 dstzdata  = 0;\r
8596                         uint32 writedata = 0;\r
8597                         uint32 inhibit   = 0;\r
8598                         srcdata = READ_RDATA_1(SRCDATA, a2, a2_phrase_mode);\r
8599                         dstdata = READ_RDATA_1(DSTDATA, a1, a1_phrase_mode);\r
8600                         if (srczdata <  dstzdata)       inhibit = 1;\r
8601                         if (!inhibit)\r
8602                         {\r
8603                                 writedata |= srcdata  & dstdata;\r
8604                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8605                         WRITE_PIXEL_1(a1, writedata);\r
8606                         a1_x += a1_xadd;\r
8607                         a1_y += a1_yadd;\r
8608                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8609                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8610                 }\r
8611                 a1_x+=a1_step_x;\r
8612                 a1_y+=a1_step_y;\r
8613                 a2_x+=a2_step_x;\r
8614                 a2_y+=a2_step_y;\r
8615         }\r
8616         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8617         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8618         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8619 }\r
8620 #endif\r
8621 #ifndef blitter_code_0x06c026e4\r
8622 #define blitter_code_0x06c026e4\r
8623 void blitter_0x06c026e4(void)\r
8624 {\r
8625         while (outer_loop--)\r
8626         {\r
8627                 inner_loop=n_pixels;\r
8628                 while (inner_loop--)\r
8629                 {\r
8630                         uint32 srcdata   = 0;\r
8631                         uint32 srczdata  = 0;\r
8632                         uint32 dstdata   = 0;\r
8633                         uint32 dstzdata  = 0;\r
8634                         uint32 writedata = 0;\r
8635                         uint32 inhibit   = 0;\r
8636                         srcdata = READ_PIXEL_16(a1);\r
8637                         srczdata = READ_RDATA_16(SRCZINT, a1, a1_phrase_mode);\r
8638                         dstdata = READ_PIXEL_16(a2);\r
8639                         dstzdata = READ_ZDATA_16(a2);\r
8640                         srczdata=z_i[colour_index]>>16;\r
8641                         if (srczdata >  dstzdata)       inhibit = 1;\r
8642                         if (!inhibit)\r
8643                         {\r
8644                                 writedata |= srcdata  & ~dstdata;\r
8645                                 writedata |= srcdata  & dstdata;\r
8646                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8647                         if (!inhibit)\r
8648                         {\r
8649                                 WRITE_PIXEL_16(a2, writedata);\r
8650                                 WRITE_ZDATA_16(a2, srczdata);\r
8651                         }\r
8652                         a1_x += a1_xadd;\r
8653                         a1_y += a1_yadd;\r
8654                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8655                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8656                         z_i[colour_index]+=zadd;\r
8657                 }\r
8658                 a1_x+=a1_step_x;\r
8659                 a1_y+=a1_step_y;\r
8660                 a2_x+=a2_step_x;\r
8661                 a2_y+=a2_step_y;\r
8662         }\r
8663         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8664         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8665         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8666 }\r
8667 #endif\r
8668 #ifndef blitter_code_0x06012624\r
8669 #define blitter_code_0x06012624\r
8670 void blitter_0x06012624(void)\r
8671 {\r
8672         while (outer_loop--)\r
8673         {\r
8674                 inner_loop=n_pixels;\r
8675                 while (inner_loop--)\r
8676                 {\r
8677                         uint32 srcdata   = 0;\r
8678                         uint32 srczdata  = 0;\r
8679                         uint32 dstdata   = 0;\r
8680                         uint32 dstzdata  = 0;\r
8681                         uint32 writedata = 0;\r
8682                         uint32 inhibit   = 0;\r
8683                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
8684                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
8685                         dstdata = READ_PIXEL_16(a1);\r
8686                         dstzdata = READ_ZDATA_16(a1);\r
8687                         srczdata=z_i[colour_index]>>16;\r
8688                         if (srczdata >  dstzdata)       inhibit = 1;\r
8689                         if (!inhibit)\r
8690                         {\r
8691                                 writedata= READ_RDATA_16(PATTERNDATA, a1, a1_phrase_mode);\r
8692                                 writedata = ((gd_c[colour_index])<<8)|(gd_i[colour_index]>>16);\r
8693                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8694                         if (!inhibit)\r
8695                         {\r
8696                                 WRITE_PIXEL_16(a1, writedata);\r
8697                                 WRITE_ZDATA_16(a1, srczdata);\r
8698                         }\r
8699                         a1_x += a1_xadd;\r
8700                         a1_y += a1_yadd;\r
8701                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8702                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8703                         z_i[colour_index]+=zadd;\r
8704                         gd_i[colour_index] += gd_ia;\r
8705                         gd_c[colour_index] += gd_ca;\r
8706                 }\r
8707                 a1_x+=a1_step_x;\r
8708                 a1_y+=a1_step_y;\r
8709                 a2_x+=a2_step_x;\r
8710                 a2_y+=a2_step_y;\r
8711         }\r
8712         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8713         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8714         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8715 }\r
8716 #endif\r
8717 #ifndef blitter_code_0x000200e4\r
8718 #define blitter_code_0x000200e4\r
8719 void blitter_0x000200e4(void)\r
8720 {\r
8721         while (outer_loop--)\r
8722         {\r
8723                 inner_loop=n_pixels;\r
8724                 while (inner_loop--)\r
8725                 {\r
8726                         uint32 srcdata   = 0;\r
8727                         uint32 srczdata  = 0;\r
8728                         uint32 dstdata   = 0;\r
8729                         uint32 dstzdata  = 0;\r
8730                         uint32 writedata = 0;\r
8731                         uint32 inhibit   = 0;\r
8732                         srcdata = READ_PIXEL_16(a1);\r
8733                         dstdata = READ_RDATA_16(DSTDATA, a2, a2_phrase_mode);\r
8734                         if (!inhibit)\r
8735                         {\r
8736                                 writedata = (srcdata & 0xff) + (dstdata & 0xff);\r
8737                                 if (writedata > 0xff) writedata = 0xff;\r
8738                                 writedata |= (srcdata & 0xf00) + (dstdata & 0xf00);\r
8739                                 if (writedata > 0xfff) writedata = 0xfff;\r
8740                                 writedata |= (srcdata & 0xf000) + (dstdata & 0xf000);\r
8741                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8742                         if (!inhibit)\r
8743                         {\r
8744                                 WRITE_PIXEL_16(a2, writedata);\r
8745                         }\r
8746                         a1_x += a1_xadd;\r
8747                         a1_y += a1_yadd;\r
8748                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8749                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8750                 }\r
8751                 a1_x+=a1_step_x;\r
8752                 a1_y+=a1_step_y;\r
8753                 a2_x+=a2_step_x;\r
8754                 a2_y+=a2_step_y;\r
8755         }\r
8756         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8757         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8758         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8759 }\r
8760 #endif\r
8761 #ifndef blitter_code_0x37c026a4\r
8762 #define blitter_code_0x37c026a4\r
8763 void blitter_0x37c026a4(void)\r
8764 {\r
8765         while (outer_loop--)\r
8766         {\r
8767                 inner_loop=n_pixels;\r
8768                 while (inner_loop--)\r
8769                 {\r
8770                         uint32 srcdata   = 0;\r
8771                         uint32 srczdata  = 0;\r
8772                         uint32 dstdata   = 0;\r
8773                         uint32 dstzdata  = 0;\r
8774                         uint32 writedata = 0;\r
8775                         uint32 inhibit   = 0;\r
8776                         srcdata = READ_PIXEL_16(a2);\r
8777                         srczdata = READ_RDATA_16(SRCZINT, a2, a2_phrase_mode);\r
8778                         dstdata = READ_PIXEL_16(a1);\r
8779                         dstzdata = READ_ZDATA_16(a1);\r
8780                         srczdata=z_i[colour_index]>>16;\r
8781                         if (srczdata >  dstzdata)       inhibit = 1;\r
8782                         if (!inhibit)\r
8783                         {\r
8784                                 writedata |= srcdata  & ~dstdata;\r
8785                                 writedata |= srcdata  & dstdata;\r
8786                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8787                         WRITE_PIXEL_16(a1, writedata);\r
8788                         WRITE_ZDATA_16(a1, srczdata);\r
8789                         a1_x += a1_xadd;\r
8790                         a1_y += a1_yadd;\r
8791                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8792                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8793                         z_i[colour_index]+=zadd;\r
8794                          colour_index=(colour_index+1)&0x3;\r
8795                 }\r
8796                 a1_x+=a1_step_x;\r
8797                 a1_y+=a1_step_y;\r
8798                 a2_x+=a2_step_x;\r
8799                 a2_y+=a2_step_y;\r
8800         }\r
8801         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8802         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8803         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8804 }\r
8805 #endif\r
8806 #ifndef blitter_code_0x3c01001b\r
8807 #define blitter_code_0x3c01001b\r
8808 void blitter_0x3c01001b(void)\r
8809 {\r
8810         while (outer_loop--)\r
8811         {\r
8812                 inner_loop=n_pixels;\r
8813                 while (inner_loop--)\r
8814                 {\r
8815                         uint32 srcdata   = 0;\r
8816                         uint32 srczdata  = 0;\r
8817                         uint32 dstdata   = 0;\r
8818                         uint32 dstzdata  = 0;\r
8819                         uint32 writedata = 0;\r
8820                         uint32 inhibit   = 0;\r
8821                         srcdata = READ_RDATA_8(SRCDATA, a2, a2_phrase_mode);\r
8822                         srczdata = READ_RDATA_8(SRCZINT, a2, a2_phrase_mode);\r
8823                         dstdata = READ_RDATA_8(DSTDATA, a1, a1_phrase_mode);\r
8824                         if (a1_x < 0 || a1_y < 0 || (a1_x >> 16) >= (REG(A1_CLIP) & 0x7fff) || (a1_y >> 16) >= ((REG(A1_CLIP) >> 16) & 0x7fff)) inhibit = 1;\r
8825                         if (!inhibit)\r
8826                         {\r
8827                                 writedata= READ_RDATA_8(PATTERNDATA, a1, a1_phrase_mode);\r
8828                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8829                         WRITE_PIXEL_8(a1, writedata);\r
8830                         a1_x += a1_xadd;\r
8831                         a1_y += a1_yadd;\r
8832                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8833                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8834                 }\r
8835                 a1_x+=a1_step_x;\r
8836                 a1_y+=a1_step_y;\r
8837                 a2_x+=a2_step_x;\r
8838                 a2_y+=a2_step_y;\r
8839         }\r
8840         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8841         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8842         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8843 }\r
8844 #endif\r
8845 #ifndef blitter_code_0x2401006b\r
8846 #define blitter_code_0x2401006b\r
8847 void blitter_0x2401006b(void)\r
8848 {\r
8849         while (outer_loop--)\r
8850         {\r
8851                 inner_loop=n_pixels;\r
8852                 while (inner_loop--)\r
8853                 {\r
8854                         uint32 srcdata   = 0;\r
8855                         uint32 srczdata  = 0;\r
8856                         uint32 dstdata   = 0;\r
8857                         uint32 dstzdata  = 0;\r
8858                         uint32 writedata = 0;\r
8859                         uint32 inhibit   = 0;\r
8860                         srcdata = READ_RDATA_32(SRCDATA, a1, a1_phrase_mode);\r
8861                         srczdata = READ_RDATA_32(SRCZINT, a1, a1_phrase_mode);\r
8862                         dstdata = READ_RDATA_32(DSTDATA, a2, a2_phrase_mode);\r
8863                         if (!inhibit)\r
8864                         {\r
8865                                 writedata= READ_RDATA_32(PATTERNDATA, a2, a2_phrase_mode);\r
8866                         } else { srczdata=dstzdata; writedata=dstdata; }\r
8867                         WRITE_PIXEL_32(a2, writedata);\r
8868                         a1_x += a1_xadd;\r
8869                         a1_y += a1_yadd;\r
8870                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8871                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8872                 }\r
8873                 a1_x+=a1_step_x;\r
8874                 a1_y+=a1_step_y;\r
8875                 a2_x+=a2_step_x;\r
8876                 a2_y+=a2_step_y;\r
8877         }\r
8878         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8879         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8880         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8881 }\r
8882 #endif\r
8883 #ifndef blitter_code_0x30000024\r
8884 #define blitter_code_0x30000024\r
8885 void blitter_0x30000024(void)\r
8886 {\r
8887         while (outer_loop--)\r
8888         {\r
8889                 inner_loop=n_pixels;\r
8890                 while (inner_loop--)\r
8891                 {\r
8892                         uint32 srcdata   = 0;\r
8893                         uint32 srczdata  = 0;\r
8894                         uint32 dstdata   = 0;\r
8895                         uint32 dstzdata  = 0;\r
8896                         uint32 writedata = 0;\r
8897                         uint32 inhibit   = 0;\r
8898                         srcdata = READ_RDATA_16(SRCDATA, a2, a2_phrase_mode);\r
8899                         dstdata = READ_RDATA_16(DSTDATA, a1, a1_phrase_mode);\r
8900                         WRITE_PIXEL_16(a1, writedata);\r
8901                         a1_x += a1_xadd;\r
8902                         a1_y += a1_yadd;\r
8903                         a2_x = (a2_x + a2_xadd) & a2_mask_x;\r
8904                         a2_y = (a2_y + a2_yadd) & a2_mask_y;\r
8905                 }\r
8906                 a1_x+=a1_step_x;\r
8907                 a1_y+=a1_step_y;\r
8908                 a2_x+=a2_step_x;\r
8909                 a2_y+=a2_step_y;\r
8910         }\r
8911         WREG(A1_PIXEL,  (a1_y & 0xffff0000) | ((a1_x >> 16) & 0xffff));\r
8912         WREG(A1_FPIXEL, (a1_y << 16) | (a1_x & 0xffff));\r
8913         WREG(A2_PIXEL,  (a2_y & 0xffff0000) | ((a2_x >> 16) & 0xffff));\r
8914 }\r
8915 #endif\r