--- np2/vram/dispsync.c 2003/10/18 10:28:12 1.2 +++ np2/vram/dispsync.c 2004/02/09 20:39:39 1.4 @@ -60,7 +60,8 @@ BOOL dispsync_renewalhorizontal(void) { } scrnxmax = cr + 2; if ((scrnxpos + scrnxmax) > 80) { - scrnxmax = 80 - scrnxpos; + scrnxmax = min(scrnxmax, 80); + scrnxpos = 80 - scrnxmax; } scrnxpos <<= 3; scrnxmax <<= 3; @@ -75,7 +76,7 @@ BOOL dispsync_renewalhorizontal(void) { } } -BOOL dispsync_renewalvertical(void) { +BOOL dispsync_renewalvertical(void) { // slaveと比較していいのか? UINT text_vbp; UINT grph_vbp; @@ -95,26 +96,25 @@ BOOL dispsync_renewalvertical(void) { } textymax = LOADINTELWORD(gdc.m.para + GDC_SYNC + 6); - textymax &= 0x3ff; - if (textymax) { - textymax += text_vbp; - if (textymax > SURFACE_HEIGHT) { - textymax = SURFACE_HEIGHT; - } - } - else { - textymax = SURFACE_HEIGHT; - } + textymax = ((textymax - 1) & 0x3ff) + 1; + textymax += text_vbp; grphymax = LOADINTELWORD(gdc.s.para + GDC_SYNC + 6); - grphymax &= 0x3ff; - if (grphymax) { - grphymax += grph_vbp; - if (grphymax > SURFACE_HEIGHT) { - grphymax = SURFACE_HEIGHT; - } + grphymax = ((grphymax - 1) & 0x3ff) + 1; + grphymax += grph_vbp; + +#if defined(SUPPORT_CRT15KHZ) + if (gdc.crt15khz & 2) { + text_vbp *= 2; + grph_vbp *= 2; + textymax *= 2; + grphymax *= 2; } - else { +#endif + if (textymax > SURFACE_HEIGHT) { + textymax = SURFACE_HEIGHT; + } + if (grphymax > SURFACE_HEIGHT) { grphymax = SURFACE_HEIGHT; } if ((dsync.text_vbp == text_vbp) && (dsync.grph_vbp == grph_vbp) &&