From 18de47cc1c603622a2867a7431b7b55d9102f072 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 28 Feb 2023 21:54:52 -0800 Subject: [PATCH] Fixed issue with out-of-screen painting --- src/devices/screen.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/devices/screen.c b/src/devices/screen.c index 38c80fc..600b2e5 100644 --- a/src/devices/screen.c +++ b/src/devices/screen.c @@ -28,13 +28,12 @@ static Uint32 palette_mono[] = { static void screen_write(UxnScreen *p, Layer *layer, Uint16 x, Uint16 y, Uint8 color) { - Uint32 i; - if(x > p->width || y > p->height) - return; - i = x + y * p->width; - if(color != layer->pixels[i]) { - layer->pixels[i] = color; - layer->changed = 1; + if(x < p->width && y < p->height) { + Uint32 i = x + y * p->width; + if(color != layer->pixels[i]) { + layer->pixels[i] = color; + layer->changed = 1; + } } } @@ -189,7 +188,7 @@ screen_deo(Uint8 *ram, Uint8 *d, Uint8 port) n = d[0x6] >> 4; dx = (d[0x6] & 0x01) << 3; dy = (d[0x6] & 0x02) << 2; - if(addr > 0xfff0) + if(addr > 0x10000 - ((n + 1) << (3 + twobpp))) return; for(i = 0; i <= n; i++) { if(!(d[0xf] & 0xf))