1 #include "sysconfig.h"
2 #include "sysdeps.h"
3 #include "options.h"
4 #include "custom.h"
5 #include "memory_uae.h"
6 #include "blitter.h"
7 #include "blitfunc.h"
8
blitdofast_0(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)9 void blitdofast_0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
10 {
11 int i,j;
12 uae_u32 totald = 0;
13 uae_u32 dstd=0;
14 uaecptr dstp = 0;
15 for (j = b->vblitsize; j--; ) {
16 for (i = b->hblitsize; i--; ) {
17 if (dstp) chipmem_wput_indirect (dstp, dstd);
18 dstd = (0) & 0xFFFF;
19 totald |= dstd;
20 if (ptd) { dstp = ptd; ptd += 2; }
21 }
22 if (ptd) ptd += b->bltdmod;
23 }
24 if (dstp) chipmem_wput_indirect (dstp, dstd);
25 if (totald != 0) b->blitzero = 0;
26 }
blitdofast_desc_0(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)27 void blitdofast_desc_0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
28 {
29 uae_u32 totald = 0;
30 int i,j;
31 uae_u32 dstd = 0;
32 uaecptr dstp = 0;
33 for (j = b->vblitsize; j--; ) {
34 for (i = b->hblitsize; i--; ) {
35 if (dstp) chipmem_wput_indirect (dstp, dstd);
36 dstd = (0) & 0xFFFF;
37 totald |= dstd;
38 if (ptd) { dstp = ptd; ptd -= 2; }
39 }
40 if (ptd) ptd -= b->bltdmod;
41 }
42 if (dstp) chipmem_wput_indirect (dstp, dstd);
43 if (totald != 0) b->blitzero = 0;
44 }
blitdofast_a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)45 void blitdofast_a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
46 {
47 int i,j;
48 uae_u32 totald = 0;
49 uae_u32 preva = 0;
50 uae_u32 srcc = b->bltcdat;
51 uae_u32 dstd=0;
52 uaecptr dstp = 0;
53 for (j = b->vblitsize; j--; ) {
54 for (i = 0; i < b->hblitsize; i++) {
55 uae_u32 bltadat, srca;
56
57 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
58 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
59 bltadat &= blit_masktable[i];
60 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
61 preva = bltadat;
62 if (dstp) chipmem_wput_indirect (dstp, dstd);
63 dstd = ((~srca & srcc)) & 0xFFFF;
64 totald |= dstd;
65 if (ptd) { dstp = ptd; ptd += 2; }
66 }
67 if (pta) pta += b->bltamod;
68 if (ptc) ptc += b->bltcmod;
69 if (ptd) ptd += b->bltdmod;
70 }
71 b->bltcdat = srcc;
72 if (dstp) chipmem_wput_indirect (dstp, dstd);
73 if (totald != 0) b->blitzero = 0;
74 }
blitdofast_desc_a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)75 void blitdofast_desc_a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
76 {
77 uae_u32 totald = 0;
78 int i,j;
79 uae_u32 preva = 0;
80 uae_u32 srcc = b->bltcdat;
81 uae_u32 dstd = 0;
82 uaecptr dstp = 0;
83 for (j = b->vblitsize; j--; ) {
84 for (i = 0; i < b->hblitsize; i++) {
85 uae_u32 bltadat, srca;
86 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
87 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
88 bltadat &= blit_masktable[i];
89 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
90 preva = bltadat;
91 if (dstp) chipmem_wput_indirect (dstp, dstd);
92 dstd = ((~srca & srcc)) & 0xFFFF;
93 totald |= dstd;
94 if (ptd) { dstp = ptd; ptd -= 2; }
95 }
96 if (pta) pta -= b->bltamod;
97 if (ptc) ptc -= b->bltcmod;
98 if (ptd) ptd -= b->bltdmod;
99 }
100 b->bltcdat = srcc;
101 if (dstp) chipmem_wput_indirect (dstp, dstd);
102 if (totald != 0) b->blitzero = 0;
103 }
blitdofast_2a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)104 void blitdofast_2a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
105 {
106 int i,j;
107 uae_u32 totald = 0;
108 uae_u32 preva = 0;
109 uae_u32 prevb = 0, srcb = b->bltbhold;
110 uae_u32 srcc = b->bltcdat;
111 uae_u32 dstd=0;
112 uaecptr dstp = 0;
113 for (j = b->vblitsize; j--; ) {
114 for (i = 0; i < b->hblitsize; i++) {
115 uae_u32 bltadat, srca;
116
117 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
118 if (ptb) {
119 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
120 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
121 prevb = bltbdat;
122 }
123 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
124 bltadat &= blit_masktable[i];
125 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
126 preva = bltadat;
127 if (dstp) chipmem_wput_indirect (dstp, dstd);
128 dstd = ((srcc & ~(srca & srcb))) & 0xFFFF;
129 totald |= dstd;
130 if (ptd) { dstp = ptd; ptd += 2; }
131 }
132 if (pta) pta += b->bltamod;
133 if (ptb) ptb += b->bltbmod;
134 if (ptc) ptc += b->bltcmod;
135 if (ptd) ptd += b->bltdmod;
136 }
137 b->bltbhold = srcb;
138 b->bltcdat = srcc;
139 if (dstp) chipmem_wput_indirect (dstp, dstd);
140 if (totald != 0) b->blitzero = 0;
141 }
blitdofast_desc_2a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)142 void blitdofast_desc_2a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
143 {
144 uae_u32 totald = 0;
145 int i,j;
146 uae_u32 preva = 0;
147 uae_u32 prevb = 0, srcb = b->bltbhold;
148 uae_u32 srcc = b->bltcdat;
149 uae_u32 dstd = 0;
150 uaecptr dstp = 0;
151 for (j = b->vblitsize; j--; ) {
152 for (i = 0; i < b->hblitsize; i++) {
153 uae_u32 bltadat, srca;
154 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
155 if (ptb) {
156 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
157 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
158 prevb = bltbdat;
159 }
160 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
161 bltadat &= blit_masktable[i];
162 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
163 preva = bltadat;
164 if (dstp) chipmem_wput_indirect (dstp, dstd);
165 dstd = ((srcc & ~(srca & srcb))) & 0xFFFF;
166 totald |= dstd;
167 if (ptd) { dstp = ptd; ptd -= 2; }
168 }
169 if (pta) pta -= b->bltamod;
170 if (ptb) ptb -= b->bltbmod;
171 if (ptc) ptc -= b->bltcmod;
172 if (ptd) ptd -= b->bltdmod;
173 }
174 b->bltbhold = srcb;
175 b->bltcdat = srcc;
176 if (dstp) chipmem_wput_indirect (dstp, dstd);
177 if (totald != 0) b->blitzero = 0;
178 }
blitdofast_30(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)179 void blitdofast_30 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
180 {
181 int i,j;
182 uae_u32 totald = 0;
183 uae_u32 preva = 0;
184 uae_u32 prevb = 0, srcb = b->bltbhold;
185 uae_u32 dstd=0;
186 uaecptr dstp = 0;
187 for (j = b->vblitsize; j--; ) {
188 for (i = 0; i < b->hblitsize; i++) {
189 uae_u32 bltadat, srca;
190
191 if (ptb) {
192 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
193 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
194 prevb = bltbdat;
195 }
196 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
197 bltadat &= blit_masktable[i];
198 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
199 preva = bltadat;
200 if (dstp) chipmem_wput_indirect (dstp, dstd);
201 dstd = ((srca & ~srcb)) & 0xFFFF;
202 totald |= dstd;
203 if (ptd) { dstp = ptd; ptd += 2; }
204 }
205 if (pta) pta += b->bltamod;
206 if (ptb) ptb += b->bltbmod;
207 if (ptd) ptd += b->bltdmod;
208 }
209 b->bltbhold = srcb;
210 if (dstp) chipmem_wput_indirect (dstp, dstd);
211 if (totald != 0) b->blitzero = 0;
212 }
blitdofast_desc_30(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)213 void blitdofast_desc_30 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
214 {
215 uae_u32 totald = 0;
216 int i,j;
217 uae_u32 preva = 0;
218 uae_u32 prevb = 0, srcb = b->bltbhold;
219 uae_u32 dstd = 0;
220 uaecptr dstp = 0;
221 for (j = b->vblitsize; j--; ) {
222 for (i = 0; i < b->hblitsize; i++) {
223 uae_u32 bltadat, srca;
224 if (ptb) {
225 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
226 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
227 prevb = bltbdat;
228 }
229 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
230 bltadat &= blit_masktable[i];
231 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
232 preva = bltadat;
233 if (dstp) chipmem_wput_indirect (dstp, dstd);
234 dstd = ((srca & ~srcb)) & 0xFFFF;
235 totald |= dstd;
236 if (ptd) { dstp = ptd; ptd -= 2; }
237 }
238 if (pta) pta -= b->bltamod;
239 if (ptb) ptb -= b->bltbmod;
240 if (ptd) ptd -= b->bltdmod;
241 }
242 b->bltbhold = srcb;
243 if (dstp) chipmem_wput_indirect (dstp, dstd);
244 if (totald != 0) b->blitzero = 0;
245 }
blitdofast_3a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)246 void blitdofast_3a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
247 {
248 int i,j;
249 uae_u32 totald = 0;
250 uae_u32 preva = 0;
251 uae_u32 prevb = 0, srcb = b->bltbhold;
252 uae_u32 srcc = b->bltcdat;
253 uae_u32 dstd=0;
254 uaecptr dstp = 0;
255 for (j = b->vblitsize; j--; ) {
256 for (i = 0; i < b->hblitsize; i++) {
257 uae_u32 bltadat, srca;
258
259 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
260 if (ptb) {
261 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
262 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
263 prevb = bltbdat;
264 }
265 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
266 bltadat &= blit_masktable[i];
267 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
268 preva = bltadat;
269 if (dstp) chipmem_wput_indirect (dstp, dstd);
270 dstd = ((srcb ^ (srca | (srcb ^ srcc)))) & 0xFFFF;
271 totald |= dstd;
272 if (ptd) { dstp = ptd; ptd += 2; }
273 }
274 if (pta) pta += b->bltamod;
275 if (ptb) ptb += b->bltbmod;
276 if (ptc) ptc += b->bltcmod;
277 if (ptd) ptd += b->bltdmod;
278 }
279 b->bltbhold = srcb;
280 b->bltcdat = srcc;
281 if (dstp) chipmem_wput_indirect (dstp, dstd);
282 if (totald != 0) b->blitzero = 0;
283 }
blitdofast_desc_3a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)284 void blitdofast_desc_3a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
285 {
286 uae_u32 totald = 0;
287 int i,j;
288 uae_u32 preva = 0;
289 uae_u32 prevb = 0, srcb = b->bltbhold;
290 uae_u32 srcc = b->bltcdat;
291 uae_u32 dstd = 0;
292 uaecptr dstp = 0;
293 for (j = b->vblitsize; j--; ) {
294 for (i = 0; i < b->hblitsize; i++) {
295 uae_u32 bltadat, srca;
296 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
297 if (ptb) {
298 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
299 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
300 prevb = bltbdat;
301 }
302 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
303 bltadat &= blit_masktable[i];
304 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
305 preva = bltadat;
306 if (dstp) chipmem_wput_indirect (dstp, dstd);
307 dstd = ((srcb ^ (srca | (srcb ^ srcc)))) & 0xFFFF;
308 totald |= dstd;
309 if (ptd) { dstp = ptd; ptd -= 2; }
310 }
311 if (pta) pta -= b->bltamod;
312 if (ptb) ptb -= b->bltbmod;
313 if (ptc) ptc -= b->bltcmod;
314 if (ptd) ptd -= b->bltdmod;
315 }
316 b->bltbhold = srcb;
317 b->bltcdat = srcc;
318 if (dstp) chipmem_wput_indirect (dstp, dstd);
319 if (totald != 0) b->blitzero = 0;
320 }
blitdofast_3c(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)321 void blitdofast_3c (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
322 {
323 int i,j;
324 uae_u32 totald = 0;
325 uae_u32 preva = 0;
326 uae_u32 prevb = 0, srcb = b->bltbhold;
327 uae_u32 dstd=0;
328 uaecptr dstp = 0;
329 for (j = b->vblitsize; j--; ) {
330 for (i = 0; i < b->hblitsize; i++) {
331 uae_u32 bltadat, srca;
332
333 if (ptb) {
334 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
335 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
336 prevb = bltbdat;
337 }
338 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
339 bltadat &= blit_masktable[i];
340 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
341 preva = bltadat;
342 if (dstp) chipmem_wput_indirect (dstp, dstd);
343 dstd = ((srca ^ srcb)) & 0xFFFF;
344 totald |= dstd;
345 if (ptd) { dstp = ptd; ptd += 2; }
346 }
347 if (pta) pta += b->bltamod;
348 if (ptb) ptb += b->bltbmod;
349 if (ptd) ptd += b->bltdmod;
350 }
351 b->bltbhold = srcb;
352 if (dstp) chipmem_wput_indirect (dstp, dstd);
353 if (totald != 0) b->blitzero = 0;
354 }
blitdofast_desc_3c(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)355 void blitdofast_desc_3c (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
356 {
357 uae_u32 totald = 0;
358 int i,j;
359 uae_u32 preva = 0;
360 uae_u32 prevb = 0, srcb = b->bltbhold;
361 uae_u32 dstd = 0;
362 uaecptr dstp = 0;
363 for (j = b->vblitsize; j--; ) {
364 for (i = 0; i < b->hblitsize; i++) {
365 uae_u32 bltadat, srca;
366 if (ptb) {
367 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
368 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
369 prevb = bltbdat;
370 }
371 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
372 bltadat &= blit_masktable[i];
373 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
374 preva = bltadat;
375 if (dstp) chipmem_wput_indirect (dstp, dstd);
376 dstd = ((srca ^ srcb)) & 0xFFFF;
377 totald |= dstd;
378 if (ptd) { dstp = ptd; ptd -= 2; }
379 }
380 if (pta) pta -= b->bltamod;
381 if (ptb) ptb -= b->bltbmod;
382 if (ptd) ptd -= b->bltdmod;
383 }
384 b->bltbhold = srcb;
385 if (dstp) chipmem_wput_indirect (dstp, dstd);
386 if (totald != 0) b->blitzero = 0;
387 }
blitdofast_4a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)388 void blitdofast_4a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
389 {
390 int i,j;
391 uae_u32 totald = 0;
392 uae_u32 preva = 0;
393 uae_u32 prevb = 0, srcb = b->bltbhold;
394 uae_u32 srcc = b->bltcdat;
395 uae_u32 dstd=0;
396 uaecptr dstp = 0;
397 for (j = b->vblitsize; j--; ) {
398 for (i = 0; i < b->hblitsize; i++) {
399 uae_u32 bltadat, srca;
400
401 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
402 if (ptb) {
403 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
404 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
405 prevb = bltbdat;
406 }
407 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
408 bltadat &= blit_masktable[i];
409 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
410 preva = bltadat;
411 if (dstp) chipmem_wput_indirect (dstp, dstd);
412 dstd = ((srcc ^ (srca & (srcb | srcc)))) & 0xFFFF;
413 totald |= dstd;
414 if (ptd) { dstp = ptd; ptd += 2; }
415 }
416 if (pta) pta += b->bltamod;
417 if (ptb) ptb += b->bltbmod;
418 if (ptc) ptc += b->bltcmod;
419 if (ptd) ptd += b->bltdmod;
420 }
421 b->bltbhold = srcb;
422 b->bltcdat = srcc;
423 if (dstp) chipmem_wput_indirect (dstp, dstd);
424 if (totald != 0) b->blitzero = 0;
425 }
blitdofast_desc_4a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)426 void blitdofast_desc_4a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
427 {
428 uae_u32 totald = 0;
429 int i,j;
430 uae_u32 preva = 0;
431 uae_u32 prevb = 0, srcb = b->bltbhold;
432 uae_u32 srcc = b->bltcdat;
433 uae_u32 dstd = 0;
434 uaecptr dstp = 0;
435 for (j = b->vblitsize; j--; ) {
436 for (i = 0; i < b->hblitsize; i++) {
437 uae_u32 bltadat, srca;
438 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
439 if (ptb) {
440 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
441 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
442 prevb = bltbdat;
443 }
444 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
445 bltadat &= blit_masktable[i];
446 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
447 preva = bltadat;
448 if (dstp) chipmem_wput_indirect (dstp, dstd);
449 dstd = ((srcc ^ (srca & (srcb | srcc)))) & 0xFFFF;
450 totald |= dstd;
451 if (ptd) { dstp = ptd; ptd -= 2; }
452 }
453 if (pta) pta -= b->bltamod;
454 if (ptb) ptb -= b->bltbmod;
455 if (ptc) ptc -= b->bltcmod;
456 if (ptd) ptd -= b->bltdmod;
457 }
458 b->bltbhold = srcb;
459 b->bltcdat = srcc;
460 if (dstp) chipmem_wput_indirect (dstp, dstd);
461 if (totald != 0) b->blitzero = 0;
462 }
blitdofast_6a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)463 void blitdofast_6a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
464 {
465 int i,j;
466 uae_u32 totald = 0;
467 uae_u32 preva = 0;
468 uae_u32 prevb = 0, srcb = b->bltbhold;
469 uae_u32 srcc = b->bltcdat;
470 uae_u32 dstd=0;
471 uaecptr dstp = 0;
472 for (j = b->vblitsize; j--; ) {
473 for (i = 0; i < b->hblitsize; i++) {
474 uae_u32 bltadat, srca;
475
476 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
477 if (ptb) {
478 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
479 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
480 prevb = bltbdat;
481 }
482 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
483 bltadat &= blit_masktable[i];
484 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
485 preva = bltadat;
486 if (dstp) chipmem_wput_indirect (dstp, dstd);
487 dstd = ((srcc ^ (srca & srcb))) & 0xFFFF;
488 totald |= dstd;
489 if (ptd) { dstp = ptd; ptd += 2; }
490 }
491 if (pta) pta += b->bltamod;
492 if (ptb) ptb += b->bltbmod;
493 if (ptc) ptc += b->bltcmod;
494 if (ptd) ptd += b->bltdmod;
495 }
496 b->bltbhold = srcb;
497 b->bltcdat = srcc;
498 if (dstp) chipmem_wput_indirect (dstp, dstd);
499 if (totald != 0) b->blitzero = 0;
500 }
blitdofast_desc_6a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)501 void blitdofast_desc_6a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
502 {
503 uae_u32 totald = 0;
504 int i,j;
505 uae_u32 preva = 0;
506 uae_u32 prevb = 0, srcb = b->bltbhold;
507 uae_u32 srcc = b->bltcdat;
508 uae_u32 dstd = 0;
509 uaecptr dstp = 0;
510 for (j = b->vblitsize; j--; ) {
511 for (i = 0; i < b->hblitsize; i++) {
512 uae_u32 bltadat, srca;
513 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
514 if (ptb) {
515 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
516 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
517 prevb = bltbdat;
518 }
519 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
520 bltadat &= blit_masktable[i];
521 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
522 preva = bltadat;
523 if (dstp) chipmem_wput_indirect (dstp, dstd);
524 dstd = ((srcc ^ (srca & srcb))) & 0xFFFF;
525 totald |= dstd;
526 if (ptd) { dstp = ptd; ptd -= 2; }
527 }
528 if (pta) pta -= b->bltamod;
529 if (ptb) ptb -= b->bltbmod;
530 if (ptc) ptc -= b->bltcmod;
531 if (ptd) ptd -= b->bltdmod;
532 }
533 b->bltbhold = srcb;
534 b->bltcdat = srcc;
535 if (dstp) chipmem_wput_indirect (dstp, dstd);
536 if (totald != 0) b->blitzero = 0;
537 }
blitdofast_8a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)538 void blitdofast_8a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
539 {
540 int i,j;
541 uae_u32 totald = 0;
542 uae_u32 preva = 0;
543 uae_u32 prevb = 0, srcb = b->bltbhold;
544 uae_u32 srcc = b->bltcdat;
545 uae_u32 dstd=0;
546 uaecptr dstp = 0;
547 for (j = b->vblitsize; j--; ) {
548 for (i = 0; i < b->hblitsize; i++) {
549 uae_u32 bltadat, srca;
550
551 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
552 if (ptb) {
553 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
554 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
555 prevb = bltbdat;
556 }
557 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
558 bltadat &= blit_masktable[i];
559 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
560 preva = bltadat;
561 if (dstp) chipmem_wput_indirect (dstp, dstd);
562 dstd = ((srcc & (~srca | srcb))) & 0xFFFF;
563 totald |= dstd;
564 if (ptd) { dstp = ptd; ptd += 2; }
565 }
566 if (pta) pta += b->bltamod;
567 if (ptb) ptb += b->bltbmod;
568 if (ptc) ptc += b->bltcmod;
569 if (ptd) ptd += b->bltdmod;
570 }
571 b->bltbhold = srcb;
572 b->bltcdat = srcc;
573 if (dstp) chipmem_wput_indirect (dstp, dstd);
574 if (totald != 0) b->blitzero = 0;
575 }
blitdofast_desc_8a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)576 void blitdofast_desc_8a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
577 {
578 uae_u32 totald = 0;
579 int i,j;
580 uae_u32 preva = 0;
581 uae_u32 prevb = 0, srcb = b->bltbhold;
582 uae_u32 srcc = b->bltcdat;
583 uae_u32 dstd = 0;
584 uaecptr dstp = 0;
585 for (j = b->vblitsize; j--; ) {
586 for (i = 0; i < b->hblitsize; i++) {
587 uae_u32 bltadat, srca;
588 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
589 if (ptb) {
590 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
591 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
592 prevb = bltbdat;
593 }
594 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
595 bltadat &= blit_masktable[i];
596 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
597 preva = bltadat;
598 if (dstp) chipmem_wput_indirect (dstp, dstd);
599 dstd = ((srcc & (~srca | srcb))) & 0xFFFF;
600 totald |= dstd;
601 if (ptd) { dstp = ptd; ptd -= 2; }
602 }
603 if (pta) pta -= b->bltamod;
604 if (ptb) ptb -= b->bltbmod;
605 if (ptc) ptc -= b->bltcmod;
606 if (ptd) ptd -= b->bltdmod;
607 }
608 b->bltbhold = srcb;
609 b->bltcdat = srcc;
610 if (dstp) chipmem_wput_indirect (dstp, dstd);
611 if (totald != 0) b->blitzero = 0;
612 }
blitdofast_8c(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)613 void blitdofast_8c (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
614 {
615 int i,j;
616 uae_u32 totald = 0;
617 uae_u32 preva = 0;
618 uae_u32 prevb = 0, srcb = b->bltbhold;
619 uae_u32 srcc = b->bltcdat;
620 uae_u32 dstd=0;
621 uaecptr dstp = 0;
622 for (j = b->vblitsize; j--; ) {
623 for (i = 0; i < b->hblitsize; i++) {
624 uae_u32 bltadat, srca;
625
626 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
627 if (ptb) {
628 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
629 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
630 prevb = bltbdat;
631 }
632 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
633 bltadat &= blit_masktable[i];
634 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
635 preva = bltadat;
636 if (dstp) chipmem_wput_indirect (dstp, dstd);
637 dstd = ((srcb & (~srca | srcc))) & 0xFFFF;
638 totald |= dstd;
639 if (ptd) { dstp = ptd; ptd += 2; }
640 }
641 if (pta) pta += b->bltamod;
642 if (ptb) ptb += b->bltbmod;
643 if (ptc) ptc += b->bltcmod;
644 if (ptd) ptd += b->bltdmod;
645 }
646 b->bltbhold = srcb;
647 b->bltcdat = srcc;
648 if (dstp) chipmem_wput_indirect (dstp, dstd);
649 if (totald != 0) b->blitzero = 0;
650 }
blitdofast_desc_8c(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)651 void blitdofast_desc_8c (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
652 {
653 uae_u32 totald = 0;
654 int i,j;
655 uae_u32 preva = 0;
656 uae_u32 prevb = 0, srcb = b->bltbhold;
657 uae_u32 srcc = b->bltcdat;
658 uae_u32 dstd = 0;
659 uaecptr dstp = 0;
660 for (j = b->vblitsize; j--; ) {
661 for (i = 0; i < b->hblitsize; i++) {
662 uae_u32 bltadat, srca;
663 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
664 if (ptb) {
665 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
666 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
667 prevb = bltbdat;
668 }
669 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
670 bltadat &= blit_masktable[i];
671 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
672 preva = bltadat;
673 if (dstp) chipmem_wput_indirect (dstp, dstd);
674 dstd = ((srcb & (~srca | srcc))) & 0xFFFF;
675 totald |= dstd;
676 if (ptd) { dstp = ptd; ptd -= 2; }
677 }
678 if (pta) pta -= b->bltamod;
679 if (ptb) ptb -= b->bltbmod;
680 if (ptc) ptc -= b->bltcmod;
681 if (ptd) ptd -= b->bltdmod;
682 }
683 b->bltbhold = srcb;
684 b->bltcdat = srcc;
685 if (dstp) chipmem_wput_indirect (dstp, dstd);
686 if (totald != 0) b->blitzero = 0;
687 }
blitdofast_9a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)688 void blitdofast_9a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
689 {
690 int i,j;
691 uae_u32 totald = 0;
692 uae_u32 preva = 0;
693 uae_u32 prevb = 0, srcb = b->bltbhold;
694 uae_u32 srcc = b->bltcdat;
695 uae_u32 dstd=0;
696 uaecptr dstp = 0;
697 for (j = b->vblitsize; j--; ) {
698 for (i = 0; i < b->hblitsize; i++) {
699 uae_u32 bltadat, srca;
700
701 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
702 if (ptb) {
703 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
704 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
705 prevb = bltbdat;
706 }
707 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
708 bltadat &= blit_masktable[i];
709 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
710 preva = bltadat;
711 if (dstp) chipmem_wput_indirect (dstp, dstd);
712 dstd = ((srcc ^ (srca & ~srcb))) & 0xFFFF;
713 totald |= dstd;
714 if (ptd) { dstp = ptd; ptd += 2; }
715 }
716 if (pta) pta += b->bltamod;
717 if (ptb) ptb += b->bltbmod;
718 if (ptc) ptc += b->bltcmod;
719 if (ptd) ptd += b->bltdmod;
720 }
721 b->bltbhold = srcb;
722 b->bltcdat = srcc;
723 if (dstp) chipmem_wput_indirect (dstp, dstd);
724 if (totald != 0) b->blitzero = 0;
725 }
blitdofast_desc_9a(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)726 void blitdofast_desc_9a (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
727 {
728 uae_u32 totald = 0;
729 int i,j;
730 uae_u32 preva = 0;
731 uae_u32 prevb = 0, srcb = b->bltbhold;
732 uae_u32 srcc = b->bltcdat;
733 uae_u32 dstd = 0;
734 uaecptr dstp = 0;
735 for (j = b->vblitsize; j--; ) {
736 for (i = 0; i < b->hblitsize; i++) {
737 uae_u32 bltadat, srca;
738 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
739 if (ptb) {
740 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
741 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
742 prevb = bltbdat;
743 }
744 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
745 bltadat &= blit_masktable[i];
746 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
747 preva = bltadat;
748 if (dstp) chipmem_wput_indirect (dstp, dstd);
749 dstd = ((srcc ^ (srca & ~srcb))) & 0xFFFF;
750 totald |= dstd;
751 if (ptd) { dstp = ptd; ptd -= 2; }
752 }
753 if (pta) pta -= b->bltamod;
754 if (ptb) ptb -= b->bltbmod;
755 if (ptc) ptc -= b->bltcmod;
756 if (ptd) ptd -= b->bltdmod;
757 }
758 b->bltbhold = srcb;
759 b->bltcdat = srcc;
760 if (dstp) chipmem_wput_indirect (dstp, dstd);
761 if (totald != 0) b->blitzero = 0;
762 }
blitdofast_a8(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)763 void blitdofast_a8 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
764 {
765 int i,j;
766 uae_u32 totald = 0;
767 uae_u32 preva = 0;
768 uae_u32 prevb = 0, srcb = b->bltbhold;
769 uae_u32 srcc = b->bltcdat;
770 uae_u32 dstd=0;
771 uaecptr dstp = 0;
772 for (j = b->vblitsize; j--; ) {
773 for (i = 0; i < b->hblitsize; i++) {
774 uae_u32 bltadat, srca;
775
776 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
777 if (ptb) {
778 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
779 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
780 prevb = bltbdat;
781 }
782 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
783 bltadat &= blit_masktable[i];
784 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
785 preva = bltadat;
786 if (dstp) chipmem_wput_indirect (dstp, dstd);
787 dstd = ((srcc & (srca | srcb))) & 0xFFFF;
788 totald |= dstd;
789 if (ptd) { dstp = ptd; ptd += 2; }
790 }
791 if (pta) pta += b->bltamod;
792 if (ptb) ptb += b->bltbmod;
793 if (ptc) ptc += b->bltcmod;
794 if (ptd) ptd += b->bltdmod;
795 }
796 b->bltbhold = srcb;
797 b->bltcdat = srcc;
798 if (dstp) chipmem_wput_indirect (dstp, dstd);
799 if (totald != 0) b->blitzero = 0;
800 }
blitdofast_desc_a8(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)801 void blitdofast_desc_a8 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
802 {
803 uae_u32 totald = 0;
804 int i,j;
805 uae_u32 preva = 0;
806 uae_u32 prevb = 0, srcb = b->bltbhold;
807 uae_u32 srcc = b->bltcdat;
808 uae_u32 dstd = 0;
809 uaecptr dstp = 0;
810 for (j = b->vblitsize; j--; ) {
811 for (i = 0; i < b->hblitsize; i++) {
812 uae_u32 bltadat, srca;
813 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
814 if (ptb) {
815 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
816 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
817 prevb = bltbdat;
818 }
819 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
820 bltadat &= blit_masktable[i];
821 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
822 preva = bltadat;
823 if (dstp) chipmem_wput_indirect (dstp, dstd);
824 dstd = ((srcc & (srca | srcb))) & 0xFFFF;
825 totald |= dstd;
826 if (ptd) { dstp = ptd; ptd -= 2; }
827 }
828 if (pta) pta -= b->bltamod;
829 if (ptb) ptb -= b->bltbmod;
830 if (ptc) ptc -= b->bltcmod;
831 if (ptd) ptd -= b->bltdmod;
832 }
833 b->bltbhold = srcb;
834 b->bltcdat = srcc;
835 if (dstp) chipmem_wput_indirect (dstp, dstd);
836 if (totald != 0) b->blitzero = 0;
837 }
blitdofast_aa(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)838 void blitdofast_aa (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
839 {
840 int i,j;
841 uae_u32 totald = 0;
842 uae_u32 srcc = b->bltcdat;
843 uae_u32 dstd=0;
844 uaecptr dstp = 0;
845 for (j = b->vblitsize; j--; ) {
846 for (i = b->hblitsize; i--; ) {
847 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
848 if (dstp) chipmem_wput_indirect (dstp, dstd);
849 dstd = (srcc) & 0xFFFF;
850 totald |= dstd;
851 if (ptd) { dstp = ptd; ptd += 2; }
852 }
853 if (ptc) ptc += b->bltcmod;
854 if (ptd) ptd += b->bltdmod;
855 }
856 b->bltcdat = srcc;
857 if (dstp) chipmem_wput_indirect (dstp, dstd);
858 if (totald != 0) b->blitzero = 0;
859 }
blitdofast_desc_aa(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)860 void blitdofast_desc_aa (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
861 {
862 uae_u32 totald = 0;
863 int i,j;
864 uae_u32 srcc = b->bltcdat;
865 uae_u32 dstd = 0;
866 uaecptr dstp = 0;
867 for (j = b->vblitsize; j--; ) {
868 for (i = b->hblitsize; i--; ) {
869 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
870 if (dstp) chipmem_wput_indirect (dstp, dstd);
871 dstd = (srcc) & 0xFFFF;
872 totald |= dstd;
873 if (ptd) { dstp = ptd; ptd -= 2; }
874 }
875 if (ptc) ptc -= b->bltcmod;
876 if (ptd) ptd -= b->bltdmod;
877 }
878 b->bltcdat = srcc;
879 if (dstp) chipmem_wput_indirect (dstp, dstd);
880 if (totald != 0) b->blitzero = 0;
881 }
blitdofast_b1(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)882 void blitdofast_b1 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
883 {
884 int i,j;
885 uae_u32 totald = 0;
886 uae_u32 preva = 0;
887 uae_u32 prevb = 0, srcb = b->bltbhold;
888 uae_u32 srcc = b->bltcdat;
889 uae_u32 dstd=0;
890 uaecptr dstp = 0;
891 for (j = b->vblitsize; j--; ) {
892 for (i = 0; i < b->hblitsize; i++) {
893 uae_u32 bltadat, srca;
894
895 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
896 if (ptb) {
897 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
898 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
899 prevb = bltbdat;
900 }
901 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
902 bltadat &= blit_masktable[i];
903 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
904 preva = bltadat;
905 if (dstp) chipmem_wput_indirect (dstp, dstd);
906 dstd = (~(srca ^ (srcc | (srca ^ srcb)))) & 0xFFFF;
907 totald |= dstd;
908 if (ptd) { dstp = ptd; ptd += 2; }
909 }
910 if (pta) pta += b->bltamod;
911 if (ptb) ptb += b->bltbmod;
912 if (ptc) ptc += b->bltcmod;
913 if (ptd) ptd += b->bltdmod;
914 }
915 b->bltbhold = srcb;
916 b->bltcdat = srcc;
917 if (dstp) chipmem_wput_indirect (dstp, dstd);
918 if (totald != 0) b->blitzero = 0;
919 }
blitdofast_desc_b1(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)920 void blitdofast_desc_b1 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
921 {
922 uae_u32 totald = 0;
923 int i,j;
924 uae_u32 preva = 0;
925 uae_u32 prevb = 0, srcb = b->bltbhold;
926 uae_u32 srcc = b->bltcdat;
927 uae_u32 dstd = 0;
928 uaecptr dstp = 0;
929 for (j = b->vblitsize; j--; ) {
930 for (i = 0; i < b->hblitsize; i++) {
931 uae_u32 bltadat, srca;
932 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
933 if (ptb) {
934 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
935 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
936 prevb = bltbdat;
937 }
938 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
939 bltadat &= blit_masktable[i];
940 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
941 preva = bltadat;
942 if (dstp) chipmem_wput_indirect (dstp, dstd);
943 dstd = (~(srca ^ (srcc | (srca ^ srcb)))) & 0xFFFF;
944 totald |= dstd;
945 if (ptd) { dstp = ptd; ptd -= 2; }
946 }
947 if (pta) pta -= b->bltamod;
948 if (ptb) ptb -= b->bltbmod;
949 if (ptc) ptc -= b->bltcmod;
950 if (ptd) ptd -= b->bltdmod;
951 }
952 b->bltbhold = srcb;
953 b->bltcdat = srcc;
954 if (dstp) chipmem_wput_indirect (dstp, dstd);
955 if (totald != 0) b->blitzero = 0;
956 }
blitdofast_ca(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)957 void blitdofast_ca (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
958 {
959 int i,j;
960 uae_u32 totald = 0;
961 uae_u32 preva = 0;
962 uae_u32 prevb = 0, srcb = b->bltbhold;
963 uae_u32 srcc = b->bltcdat;
964 uae_u32 dstd=0;
965 uaecptr dstp = 0;
966 for (j = b->vblitsize; j--; ) {
967 for (i = 0; i < b->hblitsize; i++) {
968 uae_u32 bltadat, srca;
969
970 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
971 if (ptb) {
972 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
973 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
974 prevb = bltbdat;
975 }
976 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
977 bltadat &= blit_masktable[i];
978 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
979 preva = bltadat;
980 if (dstp) chipmem_wput_indirect (dstp, dstd);
981 dstd = ((srcc ^ (srca & (srcb ^ srcc)))) & 0xFFFF;
982 totald |= dstd;
983 if (ptd) { dstp = ptd; ptd += 2; }
984 }
985 if (pta) pta += b->bltamod;
986 if (ptb) ptb += b->bltbmod;
987 if (ptc) ptc += b->bltcmod;
988 if (ptd) ptd += b->bltdmod;
989 }
990 b->bltbhold = srcb;
991 b->bltcdat = srcc;
992 if (dstp) chipmem_wput_indirect (dstp, dstd);
993 if (totald != 0) b->blitzero = 0;
994 }
blitdofast_desc_ca(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)995 void blitdofast_desc_ca (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
996 {
997 uae_u32 totald = 0;
998 int i,j;
999 uae_u32 preva = 0;
1000 uae_u32 prevb = 0, srcb = b->bltbhold;
1001 uae_u32 srcc = b->bltcdat;
1002 uae_u32 dstd = 0;
1003 uaecptr dstp = 0;
1004 for (j = b->vblitsize; j--; ) {
1005 for (i = 0; i < b->hblitsize; i++) {
1006 uae_u32 bltadat, srca;
1007 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
1008 if (ptb) {
1009 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1010 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1011 prevb = bltbdat;
1012 }
1013 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1014 bltadat &= blit_masktable[i];
1015 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1016 preva = bltadat;
1017 if (dstp) chipmem_wput_indirect (dstp, dstd);
1018 dstd = ((srcc ^ (srca & (srcb ^ srcc)))) & 0xFFFF;
1019 totald |= dstd;
1020 if (ptd) { dstp = ptd; ptd -= 2; }
1021 }
1022 if (pta) pta -= b->bltamod;
1023 if (ptb) ptb -= b->bltbmod;
1024 if (ptc) ptc -= b->bltcmod;
1025 if (ptd) ptd -= b->bltdmod;
1026 }
1027 b->bltbhold = srcb;
1028 b->bltcdat = srcc;
1029 if (dstp) chipmem_wput_indirect (dstp, dstd);
1030 if (totald != 0) b->blitzero = 0;
1031 }
blitdofast_cc(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1032 void blitdofast_cc (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1033 {
1034 int i,j;
1035 uae_u32 totald = 0;
1036 uae_u32 prevb = 0, srcb = b->bltbhold;
1037 uae_u32 dstd=0;
1038 uaecptr dstp = 0;
1039 for (j = b->vblitsize; j--; ) {
1040 for (i = b->hblitsize; i--; ) {
1041 if (ptb) {
1042 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
1043 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
1044 prevb = bltbdat;
1045 }
1046 if (dstp) chipmem_wput_indirect (dstp, dstd);
1047 dstd = (srcb) & 0xFFFF;
1048 totald |= dstd;
1049 if (ptd) { dstp = ptd; ptd += 2; }
1050 }
1051 if (ptb) ptb += b->bltbmod;
1052 if (ptd) ptd += b->bltdmod;
1053 }
1054 b->bltbhold = srcb;
1055 if (dstp) chipmem_wput_indirect (dstp, dstd);
1056 if (totald != 0) b->blitzero = 0;
1057 }
blitdofast_desc_cc(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1058 void blitdofast_desc_cc (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1059 {
1060 uae_u32 totald = 0;
1061 int i,j;
1062 uae_u32 prevb = 0, srcb = b->bltbhold;
1063 uae_u32 dstd = 0;
1064 uaecptr dstp = 0;
1065 for (j = b->vblitsize; j--; ) {
1066 for (i = b->hblitsize; i--; ) {
1067 if (ptb) {
1068 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1069 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1070 prevb = bltbdat;
1071 }
1072 if (dstp) chipmem_wput_indirect (dstp, dstd);
1073 dstd = (srcb) & 0xFFFF;
1074 totald |= dstd;
1075 if (ptd) { dstp = ptd; ptd -= 2; }
1076 }
1077 if (ptb) ptb -= b->bltbmod;
1078 if (ptd) ptd -= b->bltdmod;
1079 }
1080 b->bltbhold = srcb;
1081 if (dstp) chipmem_wput_indirect (dstp, dstd);
1082 if (totald != 0) b->blitzero = 0;
1083 }
blitdofast_d8(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1084 void blitdofast_d8 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1085 {
1086 int i,j;
1087 uae_u32 totald = 0;
1088 uae_u32 preva = 0;
1089 uae_u32 prevb = 0, srcb = b->bltbhold;
1090 uae_u32 srcc = b->bltcdat;
1091 uae_u32 dstd=0;
1092 uaecptr dstp = 0;
1093 for (j = b->vblitsize; j--; ) {
1094 for (i = 0; i < b->hblitsize; i++) {
1095 uae_u32 bltadat, srca;
1096
1097 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
1098 if (ptb) {
1099 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
1100 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
1101 prevb = bltbdat;
1102 }
1103 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1104 bltadat &= blit_masktable[i];
1105 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1106 preva = bltadat;
1107 if (dstp) chipmem_wput_indirect (dstp, dstd);
1108 dstd = ((srca ^ (srcc & (srca ^ srcb)))) & 0xFFFF;
1109 totald |= dstd;
1110 if (ptd) { dstp = ptd; ptd += 2; }
1111 }
1112 if (pta) pta += b->bltamod;
1113 if (ptb) ptb += b->bltbmod;
1114 if (ptc) ptc += b->bltcmod;
1115 if (ptd) ptd += b->bltdmod;
1116 }
1117 b->bltbhold = srcb;
1118 b->bltcdat = srcc;
1119 if (dstp) chipmem_wput_indirect (dstp, dstd);
1120 if (totald != 0) b->blitzero = 0;
1121 }
blitdofast_desc_d8(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1122 void blitdofast_desc_d8 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1123 {
1124 uae_u32 totald = 0;
1125 int i,j;
1126 uae_u32 preva = 0;
1127 uae_u32 prevb = 0, srcb = b->bltbhold;
1128 uae_u32 srcc = b->bltcdat;
1129 uae_u32 dstd = 0;
1130 uaecptr dstp = 0;
1131 for (j = b->vblitsize; j--; ) {
1132 for (i = 0; i < b->hblitsize; i++) {
1133 uae_u32 bltadat, srca;
1134 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
1135 if (ptb) {
1136 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1137 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1138 prevb = bltbdat;
1139 }
1140 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1141 bltadat &= blit_masktable[i];
1142 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1143 preva = bltadat;
1144 if (dstp) chipmem_wput_indirect (dstp, dstd);
1145 dstd = ((srca ^ (srcc & (srca ^ srcb)))) & 0xFFFF;
1146 totald |= dstd;
1147 if (ptd) { dstp = ptd; ptd -= 2; }
1148 }
1149 if (pta) pta -= b->bltamod;
1150 if (ptb) ptb -= b->bltbmod;
1151 if (ptc) ptc -= b->bltcmod;
1152 if (ptd) ptd -= b->bltdmod;
1153 }
1154 b->bltbhold = srcb;
1155 b->bltcdat = srcc;
1156 if (dstp) chipmem_wput_indirect (dstp, dstd);
1157 if (totald != 0) b->blitzero = 0;
1158 }
blitdofast_e2(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1159 void blitdofast_e2 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1160 {
1161 int i,j;
1162 uae_u32 totald = 0;
1163 uae_u32 preva = 0;
1164 uae_u32 prevb = 0, srcb = b->bltbhold;
1165 uae_u32 srcc = b->bltcdat;
1166 uae_u32 dstd=0;
1167 uaecptr dstp = 0;
1168 for (j = b->vblitsize; j--; ) {
1169 for (i = 0; i < b->hblitsize; i++) {
1170 uae_u32 bltadat, srca;
1171
1172 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
1173 if (ptb) {
1174 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
1175 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
1176 prevb = bltbdat;
1177 }
1178 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1179 bltadat &= blit_masktable[i];
1180 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1181 preva = bltadat;
1182 if (dstp) chipmem_wput_indirect (dstp, dstd);
1183 dstd = ((srcc ^ (srcb & (srca ^ srcc)))) & 0xFFFF;
1184 totald |= dstd;
1185 if (ptd) { dstp = ptd; ptd += 2; }
1186 }
1187 if (pta) pta += b->bltamod;
1188 if (ptb) ptb += b->bltbmod;
1189 if (ptc) ptc += b->bltcmod;
1190 if (ptd) ptd += b->bltdmod;
1191 }
1192 b->bltbhold = srcb;
1193 b->bltcdat = srcc;
1194 if (dstp) chipmem_wput_indirect (dstp, dstd);
1195 if (totald != 0) b->blitzero = 0;
1196 }
blitdofast_desc_e2(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1197 void blitdofast_desc_e2 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1198 {
1199 uae_u32 totald = 0;
1200 int i,j;
1201 uae_u32 preva = 0;
1202 uae_u32 prevb = 0, srcb = b->bltbhold;
1203 uae_u32 srcc = b->bltcdat;
1204 uae_u32 dstd = 0;
1205 uaecptr dstp = 0;
1206 for (j = b->vblitsize; j--; ) {
1207 for (i = 0; i < b->hblitsize; i++) {
1208 uae_u32 bltadat, srca;
1209 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
1210 if (ptb) {
1211 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1212 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1213 prevb = bltbdat;
1214 }
1215 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1216 bltadat &= blit_masktable[i];
1217 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1218 preva = bltadat;
1219 if (dstp) chipmem_wput_indirect (dstp, dstd);
1220 dstd = ((srcc ^ (srcb & (srca ^ srcc)))) & 0xFFFF;
1221 totald |= dstd;
1222 if (ptd) { dstp = ptd; ptd -= 2; }
1223 }
1224 if (pta) pta -= b->bltamod;
1225 if (ptb) ptb -= b->bltbmod;
1226 if (ptc) ptc -= b->bltcmod;
1227 if (ptd) ptd -= b->bltdmod;
1228 }
1229 b->bltbhold = srcb;
1230 b->bltcdat = srcc;
1231 if (dstp) chipmem_wput_indirect (dstp, dstd);
1232 if (totald != 0) b->blitzero = 0;
1233 }
blitdofast_ea(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1234 void blitdofast_ea (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1235 {
1236 int i,j;
1237 uae_u32 totald = 0;
1238 uae_u32 preva = 0;
1239 uae_u32 prevb = 0, srcb = b->bltbhold;
1240 uae_u32 srcc = b->bltcdat;
1241 uae_u32 dstd=0;
1242 uaecptr dstp = 0;
1243 for (j = b->vblitsize; j--; ) {
1244 for (i = 0; i < b->hblitsize; i++) {
1245 uae_u32 bltadat, srca;
1246
1247 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
1248 if (ptb) {
1249 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
1250 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
1251 prevb = bltbdat;
1252 }
1253 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1254 bltadat &= blit_masktable[i];
1255 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1256 preva = bltadat;
1257 if (dstp) chipmem_wput_indirect (dstp, dstd);
1258 dstd = ((srcc | (srca & srcb))) & 0xFFFF;
1259 totald |= dstd;
1260 if (ptd) { dstp = ptd; ptd += 2; }
1261 }
1262 if (pta) pta += b->bltamod;
1263 if (ptb) ptb += b->bltbmod;
1264 if (ptc) ptc += b->bltcmod;
1265 if (ptd) ptd += b->bltdmod;
1266 }
1267 b->bltbhold = srcb;
1268 b->bltcdat = srcc;
1269 if (dstp) chipmem_wput_indirect (dstp, dstd);
1270 if (totald != 0) b->blitzero = 0;
1271 }
blitdofast_desc_ea(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1272 void blitdofast_desc_ea (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1273 {
1274 uae_u32 totald = 0;
1275 int i,j;
1276 uae_u32 preva = 0;
1277 uae_u32 prevb = 0, srcb = b->bltbhold;
1278 uae_u32 srcc = b->bltcdat;
1279 uae_u32 dstd = 0;
1280 uaecptr dstp = 0;
1281 for (j = b->vblitsize; j--; ) {
1282 for (i = 0; i < b->hblitsize; i++) {
1283 uae_u32 bltadat, srca;
1284 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
1285 if (ptb) {
1286 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1287 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1288 prevb = bltbdat;
1289 }
1290 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1291 bltadat &= blit_masktable[i];
1292 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1293 preva = bltadat;
1294 if (dstp) chipmem_wput_indirect (dstp, dstd);
1295 dstd = ((srcc | (srca & srcb))) & 0xFFFF;
1296 totald |= dstd;
1297 if (ptd) { dstp = ptd; ptd -= 2; }
1298 }
1299 if (pta) pta -= b->bltamod;
1300 if (ptb) ptb -= b->bltbmod;
1301 if (ptc) ptc -= b->bltcmod;
1302 if (ptd) ptd -= b->bltdmod;
1303 }
1304 b->bltbhold = srcb;
1305 b->bltcdat = srcc;
1306 if (dstp) chipmem_wput_indirect (dstp, dstd);
1307 if (totald != 0) b->blitzero = 0;
1308 }
blitdofast_f0(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1309 void blitdofast_f0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1310 {
1311 int i,j;
1312 uae_u32 totald = 0;
1313 uae_u32 preva = 0;
1314 uae_u32 dstd=0;
1315 uaecptr dstp = 0;
1316 for (j = b->vblitsize; j--; ) {
1317 for (i = 0; i < b->hblitsize; i++) {
1318 uae_u32 bltadat, srca;
1319
1320 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1321 bltadat &= blit_masktable[i];
1322 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1323 preva = bltadat;
1324 if (dstp) chipmem_wput_indirect (dstp, dstd);
1325 dstd = (srca) & 0xFFFF;
1326 totald |= dstd;
1327 if (ptd) { dstp = ptd; ptd += 2; }
1328 }
1329 if (pta) pta += b->bltamod;
1330 if (ptd) ptd += b->bltdmod;
1331 }
1332 if (dstp) chipmem_wput_indirect (dstp, dstd);
1333 if (totald != 0) b->blitzero = 0;
1334 }
blitdofast_desc_f0(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1335 void blitdofast_desc_f0 (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1336 {
1337 uae_u32 totald = 0;
1338 int i,j;
1339 uae_u32 preva = 0;
1340 uae_u32 dstd = 0;
1341 uaecptr dstp = 0;
1342 for (j = b->vblitsize; j--; ) {
1343 for (i = 0; i < b->hblitsize; i++) {
1344 uae_u32 bltadat, srca;
1345 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1346 bltadat &= blit_masktable[i];
1347 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1348 preva = bltadat;
1349 if (dstp) chipmem_wput_indirect (dstp, dstd);
1350 dstd = (srca) & 0xFFFF;
1351 totald |= dstd;
1352 if (ptd) { dstp = ptd; ptd -= 2; }
1353 }
1354 if (pta) pta -= b->bltamod;
1355 if (ptd) ptd -= b->bltdmod;
1356 }
1357 if (dstp) chipmem_wput_indirect (dstp, dstd);
1358 if (totald != 0) b->blitzero = 0;
1359 }
blitdofast_fa(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1360 void blitdofast_fa (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1361 {
1362 int i,j;
1363 uae_u32 totald = 0;
1364 uae_u32 preva = 0;
1365 uae_u32 srcc = b->bltcdat;
1366 uae_u32 dstd=0;
1367 uaecptr dstp = 0;
1368 for (j = b->vblitsize; j--; ) {
1369 for (i = 0; i < b->hblitsize; i++) {
1370 uae_u32 bltadat, srca;
1371
1372 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc += 2; }
1373 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1374 bltadat &= blit_masktable[i];
1375 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1376 preva = bltadat;
1377 if (dstp) chipmem_wput_indirect (dstp, dstd);
1378 dstd = ((srca | srcc)) & 0xFFFF;
1379 totald |= dstd;
1380 if (ptd) { dstp = ptd; ptd += 2; }
1381 }
1382 if (pta) pta += b->bltamod;
1383 if (ptc) ptc += b->bltcmod;
1384 if (ptd) ptd += b->bltdmod;
1385 }
1386 b->bltcdat = srcc;
1387 if (dstp) chipmem_wput_indirect (dstp, dstd);
1388 if (totald != 0) b->blitzero = 0;
1389 }
blitdofast_desc_fa(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1390 void blitdofast_desc_fa (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1391 {
1392 uae_u32 totald = 0;
1393 int i,j;
1394 uae_u32 preva = 0;
1395 uae_u32 srcc = b->bltcdat;
1396 uae_u32 dstd = 0;
1397 uaecptr dstp = 0;
1398 for (j = b->vblitsize; j--; ) {
1399 for (i = 0; i < b->hblitsize; i++) {
1400 uae_u32 bltadat, srca;
1401 if (ptc) { srcc = chipmem_wget_indirect (ptc); ptc -= 2; }
1402 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1403 bltadat &= blit_masktable[i];
1404 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1405 preva = bltadat;
1406 if (dstp) chipmem_wput_indirect (dstp, dstd);
1407 dstd = ((srca | srcc)) & 0xFFFF;
1408 totald |= dstd;
1409 if (ptd) { dstp = ptd; ptd -= 2; }
1410 }
1411 if (pta) pta -= b->bltamod;
1412 if (ptc) ptc -= b->bltcmod;
1413 if (ptd) ptd -= b->bltdmod;
1414 }
1415 b->bltcdat = srcc;
1416 if (dstp) chipmem_wput_indirect (dstp, dstd);
1417 if (totald != 0) b->blitzero = 0;
1418 }
blitdofast_fc(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1419 void blitdofast_fc (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1420 {
1421 int i,j;
1422 uae_u32 totald = 0;
1423 uae_u32 preva = 0;
1424 uae_u32 prevb = 0, srcb = b->bltbhold;
1425 uae_u32 dstd=0;
1426 uaecptr dstp = 0;
1427 for (j = b->vblitsize; j--; ) {
1428 for (i = 0; i < b->hblitsize; i++) {
1429 uae_u32 bltadat, srca;
1430
1431 if (ptb) {
1432 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb += 2;
1433 srcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;
1434 prevb = bltbdat;
1435 }
1436 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta += 2; } else { bltadat = blt_info.bltadat; }
1437 bltadat &= blit_masktable[i];
1438 srca = (((uae_u32)preva << 16) | bltadat) >> b->blitashift;
1439 preva = bltadat;
1440 if (dstp) chipmem_wput_indirect (dstp, dstd);
1441 dstd = ((srca | srcb)) & 0xFFFF;
1442 totald |= dstd;
1443 if (ptd) { dstp = ptd; ptd += 2; }
1444 }
1445 if (pta) pta += b->bltamod;
1446 if (ptb) ptb += b->bltbmod;
1447 if (ptd) ptd += b->bltdmod;
1448 }
1449 b->bltbhold = srcb;
1450 if (dstp) chipmem_wput_indirect (dstp, dstd);
1451 if (totald != 0) b->blitzero = 0;
1452 }
blitdofast_desc_fc(uaecptr pta,uaecptr ptb,uaecptr ptc,uaecptr ptd,struct bltinfo * b)1453 void blitdofast_desc_fc (uaecptr pta, uaecptr ptb, uaecptr ptc, uaecptr ptd, struct bltinfo *b)
1454 {
1455 uae_u32 totald = 0;
1456 int i,j;
1457 uae_u32 preva = 0;
1458 uae_u32 prevb = 0, srcb = b->bltbhold;
1459 uae_u32 dstd = 0;
1460 uaecptr dstp = 0;
1461 for (j = b->vblitsize; j--; ) {
1462 for (i = 0; i < b->hblitsize; i++) {
1463 uae_u32 bltadat, srca;
1464 if (ptb) {
1465 uae_u32 bltbdat = blt_info.bltbdat = chipmem_wget_indirect (ptb); ptb -= 2;
1466 srcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;
1467 prevb = bltbdat;
1468 }
1469 if (pta) { bltadat = blt_info.bltadat = chipmem_wget_indirect (pta); pta -= 2; } else { bltadat = blt_info.bltadat; }
1470 bltadat &= blit_masktable[i];
1471 srca = (((uae_u32)bltadat << 16) | preva) >> b->blitdownashift;
1472 preva = bltadat;
1473 if (dstp) chipmem_wput_indirect (dstp, dstd);
1474 dstd = ((srca | srcb)) & 0xFFFF;
1475 totald |= dstd;
1476 if (ptd) { dstp = ptd; ptd -= 2; }
1477 }
1478 if (pta) pta -= b->bltamod;
1479 if (ptb) ptb -= b->bltbmod;
1480 if (ptd) ptd -= b->bltdmod;
1481 }
1482 b->bltbhold = srcb;
1483 if (dstp) chipmem_wput_indirect (dstp, dstd);
1484 if (totald != 0) b->blitzero = 0;
1485 }
1486