Annotation of uae/src/linetoscr.c, revision 1.1.1.4

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.