|
|
1.1 root 1:
2: static int LNAME (int spix, int dpix, int stoppos)
3: {
4: TYPE *buf = ((TYPE *)xlinebuffer);
1.1.1.2 root 5: uae_u8 xor_val;
1.1 root 6:
1.1.1.2 root 7: if (AGA) xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
1.1.1.4 ! root 8: if (dp_for_drawing->ham_seen) {
1.1.1.2 root 9: /* HAM 6 / HAM 8 */
1.1 root 10: while (dpix < stoppos) {
1.1.1.2 root 11: TYPE d = AGA ? CONVERT_RGB (ham_linebuf[spix]) : xcolors[ham_linebuf[spix]];
1.1 root 12: spix += SRC_INC;
13: buf[dpix++] = d;
14: if (HDOUBLE)
15: buf[dpix++] = d;
16: }
17: } else if (bpldualpf) {
1.1.1.3 root 18: if (AGA) {
19: /* AGA Dual playfield */
20: int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
21: int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
22: while (dpix < stoppos) {
23: int pixcol = pixdata.apixels[spix];
24: TYPE d;
25: if (spriteagadpfpixels[spix]) {
26: d = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
27: spriteagadpfpixels[spix]=0;
28: } else {
29: int val = lookup[pixcol];
30: if (lookup_no[pixcol] == 2) val += dblpfofs[bpldualpf2of];
31: /* val ^= xor; ??? */
32: d = colors_for_drawing.acolors[val];
33: }
34: spix += SRC_INC;
1.1 root 35: buf[dpix++] = d;
1.1.1.3 root 36: if (HDOUBLE)
37: buf[dpix++] = d;
38: }
39: } else {
40: /* OCS/ECS Dual playfield */
41: int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
42: while (dpix < stoppos) {
43: int pixcol = pixdata.apixels[spix];
44: TYPE d = colors_for_drawing.acolors[lookup[pixcol]];
45: spix += SRC_INC;
46: buf[dpix++] = d;
47: if (HDOUBLE)
48: buf[dpix++] = d;
49: }
1.1 root 50: }
51: } else if (bplehb) {
52: while (dpix < stoppos) {
53: int p = pixdata.apixels[spix];
54: TYPE d = colors_for_drawing.acolors[p];
55: spix += SRC_INC;
1.1.1.2 root 56: if (AGA) {
57: /* AGA EHB playfield */
1.1.1.3 root 58: if (p>= 32 && p < 64) /* FIXME: what about sprite colors between 32 and 64? */
59: d = (colors_for_drawing.color_regs_aga[(p-32)^xor_val] >> 1) & 0x7F7F7F;
1.1.1.2 root 60: } else {
61: /* OCS/ECS EHB playfield */
62: if (p >= 32)
63: d = xcolors[(colors_for_drawing.color_regs_ecs[p-32] >> 1) & 0x777];
64: }
1.1 root 65: buf[dpix++] = d;
66: if (HDOUBLE)
67: buf[dpix++] = d;
68: }
69: } else {
70: while (dpix < stoppos) {
1.1.1.2 root 71: TYPE d = (AGA ? colors_for_drawing.acolors[pixdata.apixels[spix]^xor_val]
72: : colors_for_drawing.acolors[pixdata.apixels[spix]]);
1.1 root 73: spix += SRC_INC;
74: buf[dpix++] = d;
75: if (HDOUBLE)
76: buf[dpix++] = d;
77: }
78: }
79: return spix;
80: }
81:
82: #undef LNAME
83: #undef HDOUBLE
84: #undef SRC_INC
1.1.1.2 root 85: #undef AGA
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.