X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fmode4.c;h=ecfbd75daf4ce64724045d94d6fb339015b3d151;hb=a505b5f14bc28268d6366d1d9c231ab57ff0159d;hp=1462dde5de7613af5d4d4d4066498f59d1b15587;hpb=ae87bffa0696eeb18ffb8d283992bc3881e8f241;p=picodrive.git diff --git a/pico/mode4.c b/pico/mode4.c index 1462dde..ecfbd75 100644 --- a/pico/mode4.c +++ b/pico/mode4.c @@ -207,10 +207,12 @@ void PicoFrameStartMode4(void) } if (rendstatus != rendstatus_old || lines != rendlines) { + emu_video_mode_change(screen_offset, lines, 1); rendstatus_old = rendstatus; rendlines = lines; - emu_video_mode_change(screen_offset, lines, 1); } + + DrawLineDest = (char *)DrawLineDestBase + screen_offset * DrawLineDestIncrement; } void PicoLineMode4(int line) @@ -233,6 +235,8 @@ void PicoLineMode4(int line) if (PicoScanEnd != NULL) skip_next_line = PicoScanEnd(line + screen_offset); + + DrawLineDest = (char *)DrawLineDest + DrawLineDestIncrement; } void PicoDoHighPal555M4(void) @@ -256,6 +260,7 @@ void PicoDoHighPal555M4(void) t |= (t >> 4) & 0x08610861; *dpal = t; } + HighPal[0xe0] = 0; } static void FinalizeLineRGB555M4(int line) @@ -265,7 +270,7 @@ static void FinalizeLineRGB555M4(int line) // standard FinalizeLine can finish it for us, // with features like scaling and such - FinalizeLineRGB555(0, line); + FinalizeLine555(0, line); } static void FinalizeLine8bitM4(int line) @@ -278,13 +283,13 @@ static void FinalizeLine8bitM4(int line) memcpy32((int *)pd, (int *)(HighCol+8), 256/4); } -void PicoDrawSetColorFormatMode4(int which) +void PicoDrawSetOutputMode4(pdso_t which) { switch (which) { - case 2: FinalizeLineM4 = FinalizeLine8bitM4; break; - case 1: FinalizeLineM4 = FinalizeLineRGB555M4; break; - default:FinalizeLineM4 = NULL; break; + case PDF_8BIT: FinalizeLineM4 = FinalizeLine8bitM4; break; + case PDF_RGB555: FinalizeLineM4 = FinalizeLineRGB555M4; break; + default: FinalizeLineM4 = NULL; break; } }