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