Fixed issue with out-of-screen painting
This commit is contained in:
parent
85df5f2d36
commit
18de47cc1c
|
@ -28,13 +28,12 @@ static Uint32 palette_mono[] = {
|
||||||
static void
|
static void
|
||||||
screen_write(UxnScreen *p, Layer *layer, Uint16 x, Uint16 y, Uint8 color)
|
screen_write(UxnScreen *p, Layer *layer, Uint16 x, Uint16 y, Uint8 color)
|
||||||
{
|
{
|
||||||
Uint32 i;
|
if(x < p->width && y < p->height) {
|
||||||
if(x > p->width || y > p->height)
|
Uint32 i = x + y * p->width;
|
||||||
return;
|
if(color != layer->pixels[i]) {
|
||||||
i = x + y * p->width;
|
layer->pixels[i] = color;
|
||||||
if(color != layer->pixels[i]) {
|
layer->changed = 1;
|
||||||
layer->pixels[i] = color;
|
}
|
||||||
layer->changed = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +188,7 @@ screen_deo(Uint8 *ram, Uint8 *d, Uint8 port)
|
||||||
n = d[0x6] >> 4;
|
n = d[0x6] >> 4;
|
||||||
dx = (d[0x6] & 0x01) << 3;
|
dx = (d[0x6] & 0x01) << 3;
|
||||||
dy = (d[0x6] & 0x02) << 2;
|
dy = (d[0x6] & 0x02) << 2;
|
||||||
if(addr > 0xfff0)
|
if(addr > 0x10000 - ((n + 1) << (3 + twobpp)))
|
||||||
return;
|
return;
|
||||||
for(i = 0; i <= n; i++) {
|
for(i = 0; i <= n; i++) {
|
||||||
if(!(d[0xf] & 0xf))
|
if(!(d[0xf] & 0xf))
|
||||||
|
|
Loading…
Reference in New Issue