--- np2/vram/scrndraw.c 2004/02/09 20:39:39 1.5 +++ np2/vram/scrndraw.c 2005/02/04 05:32:24 1.7 @@ -53,6 +53,7 @@ static BYTE rasterdraw(SDRAWFN sdrawfn, int nextupdate; int y; + TRACEOUT(("rasterdraw: maxy = %d", maxy)); CopyMemory(pal, palevent.pal, sizeof(pal)); clock = maxy; clock += 2; @@ -94,7 +95,7 @@ static BYTE rasterdraw(SDRAWFN sdrawfn, } clock -= 2 * gdc.rasterclock; } - if (y < maxy) { + if (nextupdate < maxy) { if (!(np2cfg.LCD_MODE & 1)) { pal_makeanalog(pal, 0xffff); } @@ -142,6 +143,12 @@ const SDRAWFN *sdrawfn; if (surf == NULL) { goto sddr_exit1; } +#if defined(SUPPORT_PC9821) + if (gdc.analog & 2) { + sdrawfn = sdraw_getproctblex(surf); + } + else +#endif sdrawfn = sdraw_getproctbl(surf); if (sdrawfn == NULL) { goto sddr_exit2; @@ -149,6 +156,12 @@ const SDRAWFN *sdrawfn; bit = 0; if (gdc.mode1 & 0x80) { // ver0.28 +#if defined(SUPPORT_PC9821) + if ((gdc.analog & 6) == 6) { + bit |= 0x01; + } + else +#endif if (gdcs.grphdisp & 0x80) { bit |= (1 << gdcs.disp); } @@ -167,12 +180,18 @@ const SDRAWFN *sdrawfn; } } height = surf->height; + do { +#if defined(SUPPORT_PC9821) + if (gdc.analog & 2) { + break; + } +#endif #if defined(SUPPORT_CRT15KHZ) - if (gdc.crt15khz & 2) { - sdrawfn += 12; - height >>= 1; - } - else { + if (gdc.crt15khz & 2) { + sdrawfn += 12; + height >>= 1; + break; + } #endif if (gdc.mode1 & 0x10) { sdrawfn += 4; @@ -180,9 +199,7 @@ const SDRAWFN *sdrawfn; sdrawfn += 4; } } -#if defined(SUPPORT_CRT15KHZ) - } -#endif + } while(0); switch(bit & 7) { case 1: // grph1 sdrawfn += 2; @@ -217,7 +234,7 @@ const SDRAWFN *sdrawfn; sdraw.y = 0; sdraw.xalign = surf->xalign; sdraw.yalign = surf->yalign; - if ((!gdc.analog) || (palevent.events >= PALEVENTMAX)) { + if (((gdc.analog & 3) != 1) || (palevent.events >= PALEVENTMAX)) { (*(*sdrawfn))(&sdraw, height); } else {