|
|
1.1 root 1: 1.1.1.5 ! root 2: static NOINLINE int LNAME (int spix, int dpix, int stoppos) 1.1 root 3: { 4: TYPE *buf = ((TYPE *)xlinebuffer); 1.1.1.2 root 5: uae_u8 xor_val; 1.1 root 6: 1.1.1.5 ! root 7: if (AGAC) 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.5 ! root 11: TYPE d = AGAC ? 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.5 ! root 18: if (AGAC) { 1.1.1.3 root 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.5 ! root 56: if (AGAC) { 1.1.1.2 root 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.5 ! root 71: TYPE d = (AGAC ? colors_for_drawing.acolors[pixdata.apixels[spix]^xor_val] 1.1.1.2 root 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.5 ! root 85: #undef AGAC
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.