X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fmode4.c;h=1462dde5de7613af5d4d4d4066498f59d1b15587;hb=b8a1c09ad1ef0b807c2eb1632d34e6bfae14b633;hp=3beb709d724ed93bbb6cf440a752366527b043b4;hpb=19954be1966a04304b16d9180b003ec8ca3bc532;p=picodrive.git diff --git a/pico/mode4.c b/pico/mode4.c index 3beb709..1462dde 100644 --- a/pico/mode4.c +++ b/pico/mode4.c @@ -8,7 +8,7 @@ */ #include "pico_int.h" -static void (*FinalizeLineM4)(void); +static void (*FinalizeLineM4)(int line); static int skip_next_line; static int screen_offset; @@ -193,11 +193,10 @@ void PicoFrameStartMode4(void) int lines = 192; skip_next_line = 0; screen_offset = 24; - rendstatus = 0; + rendstatus = PDRAW_32_COLS; if ((Pico.video.reg[0] & 6) == 6 && (Pico.video.reg[1] & 0x18)) { if (Pico.video.reg[1] & 0x08) { - rendstatus |= PDRAW_240LINES; screen_offset = 0; lines = 240; } @@ -207,8 +206,9 @@ void PicoFrameStartMode4(void) } } - if (rendstatus != rendstatus_old) { + if (rendstatus != rendstatus_old || lines != rendlines) { rendstatus_old = rendstatus; + rendlines = lines; emu_video_mode_change(screen_offset, lines, 1); } } @@ -229,7 +229,7 @@ void PicoLineMode4(int line) DrawDisplayM4(line); if (FinalizeLineM4 != NULL) - FinalizeLineM4(); + FinalizeLineM4(line); if (PicoScanEnd != NULL) skip_next_line = PicoScanEnd(line + screen_offset); @@ -258,17 +258,17 @@ void PicoDoHighPal555M4(void) } } -static void FinalizeLineRGB555M4(void) +static void FinalizeLineRGB555M4(int line) { if (Pico.m.dirtyPal) PicoDoHighPal555M4(); // standard FinalizeLine can finish it for us, // with features like scaling and such - FinalizeLineRGB555(0); + FinalizeLineRGB555(0, line); } -static void FinalizeLine8bitM4(void) +static void FinalizeLine8bitM4(int line) { unsigned char *pd = DrawLineDest;