From 3031ff347ae7d46223b8f5141c86dacbc9d64b81 Mon Sep 17 00:00:00 2001 From: kub Date: Wed, 7 Oct 2020 20:08:22 +0200 Subject: [PATCH] vdp rendering, fix fast-forward graphics --- pico/draw.c | 5 ++++- pico/pico.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pico/draw.c b/pico/draw.c index 582e35ba..abffdfd7 100644 --- a/pico/draw.c +++ b/pico/draw.c @@ -1794,6 +1794,7 @@ PICO_INTERNAL void PicoFrameStart(void) int offs = 8, lines = 224; int dirty = ((Pico.est.rendstatus & PDRAW_SONIC_MODE) || Pico.m.dirtyPal); int sprep = Pico.est.rendstatus & (PDRAW_SPRITES_MOVED|PDRAW_DIRTY_SPRITES); + int skipped = Pico.est.rendstatus & PDRAW_SKIP_FRAME; // prepare to do this frame Pico.est.rendstatus = 0; @@ -1813,7 +1814,9 @@ PICO_INTERNAL void PicoFrameStart(void) lines, (Pico.video.reg[12] & 1) ? 0 : 1); rendstatus_old = Pico.est.rendstatus; } - if (sprep) + if (PicoIn.skipFrame) // preserve this until something is rendered at last + Pico.est.rendstatus |= PDRAW_SKIP_FRAME; + if (sprep | skipped) Pico.est.rendstatus |= PDRAW_PARSE_SPRITES; Pico.est.HighCol = HighColBase + offs * HighColIncrement; diff --git a/pico/pico.h b/pico/pico.h index 3c800f6a..d04ff503 100644 --- a/pico/pico.h +++ b/pico/pico.h @@ -208,6 +208,7 @@ void PicoDoHighPal555(int sh, int line, struct PicoEState *est); #define PDRAW_SHHI_DONE (1<<7) // layer sh/hi already processed #define PDRAW_32_COLS (1<<8) // 32 column mode #define PDRAW_BORDER_32 (1<<9) // center H32 in buffer (32 px border) +#define PDRAW_SKIP_FRAME (1<<10) // frame is skipped extern int rendstatus_old; extern int rendlines; -- 2.39.2