--- np2/vram/sdraw.mcr 2004/01/31 20:05:24 1.5 +++ np2/vram/sdraw.mcr 2004/02/09 20:39:39 1.6 @@ -294,11 +294,86 @@ const BYTE *q; sdraw->y = y; } +#if defined(SUPPORT_CRT15KHZ) +// text or grph 1プレーン(15kHz) +static void SCRNCALL SDSYM(p_1d)(SDRAW sdraw, int maxy) { + +const BYTE *p; + BYTE *q; + int a; + int y; + int x; + int c; + + p = sdraw->src; + q = sdraw->dst; + a = sdraw->yalign; + y = sdraw->y; + do { + if (sdraw->dirty[y]) { + for (x=0; xwidth; x++) { + c = p[x] + NP2PAL_GRPH; + SDSETPIXEL(q, c); + SDSETPIXEL((q + a), c); + q += sdraw->xalign; + } + q -= sdraw->xbytes; + } + p += SURFACE_WIDTH; + q += a * 2; + } while(++y < maxy); + + sdraw->src = p; + sdraw->dst = q; + sdraw->y = y; +} + +// text + grph (15kHz) +static void SCRNCALL SDSYM(p_2d)(SDRAW sdraw, int maxy) { + +const BYTE *p; +const BYTE *q; + BYTE *r; + int a; + int y; + int x; + int c; + + p = sdraw->src; + q = sdraw->src2; + r = sdraw->dst; + a = sdraw->yalign; + y = sdraw->y; + do { + if (sdraw->dirty[y]) { + for (x=0; xwidth; x++) { + c = p[x] + q[x] + NP2PAL_GRPH; + SDSETPIXEL(r, c); + SDSETPIXEL((r + a), c); + r += sdraw->xalign; + } + r -= sdraw->xbytes; + } + p += SURFACE_WIDTH; + q += SURFACE_WIDTH; + r += a * 2; + } while(++y < maxy); + + sdraw->src = p; + sdraw->src2 = q; + sdraw->dst = r; + sdraw->y = y; +} +#endif + static const SDRAWFN SDSYM(p)[] = { SDSYM(p_0), SDSYM(p_1), SDSYM(p_1), SDSYM(p_2), SDSYM(p_0), SDSYM(p_ti), SDSYM(p_gi), SDSYM(p_2i), - SDSYM(p_0), SDSYM(p_ti), SDSYM(p_gie), SDSYM(p_2ie)}; - + SDSYM(p_0), SDSYM(p_ti), SDSYM(p_gie), SDSYM(p_2ie), +#if defined(SUPPORT_CRT15KHZ) + SDSYM(p_0), SDSYM(p_1d), SDSYM(p_1d), SDSYM(p_2d), +#endif + }; // ---- normal display @@ -656,9 +731,133 @@ const BYTE *q; sdraw->y = y; } +#if defined(SUPPORT_CRT15KHZ) +// text 1プレーン (15kHz) +static void SCRNCALL SDSYM(n_td)(SDRAW sdraw, int maxy) { + +const BYTE *p; + BYTE *q; + int a; + int y; + int x; + int c; + + p = sdraw->src; + q = sdraw->dst; + a = sdraw->yalign; + y = sdraw->y; + do { + if (sdraw->dirty[y]) { + c = p[0] + NP2PAL_TEXT3; + SDSETPIXEL(q, c); + SDSETPIXEL((q + a), c); + q += sdraw->xalign; + for (x=1; xwidth; x++) { + c = p[x] + NP2PAL_GRPH; + SDSETPIXEL(q, c); + SDSETPIXEL((q + a), c); + q += sdraw->xalign; + } + SDSETPIXEL(q, NP2PAL_TEXT2); + SDSETPIXEL((q + a), NP2PAL_TEXT2); + q -= sdraw->xbytes; + } + p += SURFACE_WIDTH; + q += a * 2; + } while(++y < maxy); + + sdraw->src = p; + sdraw->dst = q; + sdraw->y = y; +} + +// grph 1プレーン (15kHz) +static void SCRNCALL SDSYM(n_gd)(SDRAW sdraw, int maxy) { + +const BYTE *p; + BYTE *q; + int a; + int y; + int x; + int c; + + p = sdraw->src; + q = sdraw->dst; + a = sdraw->yalign; + y = sdraw->y; + do { + if (sdraw->dirty[y]) { + SDSETPIXEL(q, NP2PAL_TEXT3); + SDSETPIXEL((q + a), NP2PAL_TEXT3); + for (x=0; xwidth; x++) { + q += sdraw->xalign; + c = p[x] + NP2PAL_GRPH; + SDSETPIXEL(q, c); + SDSETPIXEL((q + a), c); + } + q -= sdraw->xbytes; + } + p += SURFACE_WIDTH; + q += a * 2; + } while(++y < maxy); + + sdraw->src = p; + sdraw->dst = q; + sdraw->y = y; +} + +// text + grph (15kHz) +static void SCRNCALL SDSYM(n_2d)(SDRAW sdraw, int maxy) { + +const BYTE *p; +const BYTE *q; + BYTE *r; + int a; + int y; + int x; + int c; + + p = sdraw->src; + q = sdraw->src2; + r = sdraw->dst; + a = sdraw->yalign; + y = sdraw->y; + do { + if (sdraw->dirty[y]) { + c = (q[0] >> 4) + NP2PAL_TEXT3; + SDSETPIXEL(r, c); + SDSETPIXEL((r + a), c); + r += sdraw->xalign; + for (x=1; xwidth; x++) { + c = p[x-1] + q[x] + NP2PAL_GRPH; + SDSETPIXEL(r, c); + SDSETPIXEL((r + a), c); + r += sdraw->xalign; + } + c = p[x-1] + NP2PAL_GRPH; + SDSETPIXEL(r, c); + SDSETPIXEL((r + a), c); + r -= sdraw->xbytes; + } + p += SURFACE_WIDTH; + q += SURFACE_WIDTH; + r += a * 2; + } while(++y < maxy); + + sdraw->src = p; + sdraw->src2 = q; + sdraw->dst = r; + sdraw->y = y; +} +#endif + static const SDRAWFN SDSYM(n)[] = { SDSYM(n_0), SDSYM(n_t), SDSYM(n_g), SDSYM(n_2), SDSYM(n_0), SDSYM(n_ti), SDSYM(n_gi), SDSYM(n_2i), - SDSYM(n_0), SDSYM(n_ti), SDSYM(n_gie), SDSYM(n_2ie)}; + SDSYM(n_0), SDSYM(n_ti), SDSYM(n_gie), SDSYM(n_2ie), +#if defined(SUPPORT_CRT15KHZ) + SDSYM(n_0), SDSYM(n_td), SDSYM(n_gd), SDSYM(n_2d), +#endif + }; #endif