|
|
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);
8: if (bplham && bplplanecnt >= 6) {
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.