screen_talk should not peek at addr when drawing a single pixel
This commit is contained in:
parent
7f345428d6
commit
486e79c48d
12
src/uxnemu.c
12
src/uxnemu.c
|
@ -294,15 +294,17 @@ screen_talk(Device *d, Uint8 b0, Uint8 w)
|
|||
if(w && b0 == 0xe) {
|
||||
Uint16 x = mempeek16(d->dat, 0x8);
|
||||
Uint16 y = mempeek16(d->dat, 0xa);
|
||||
Uint8 *addr = &d->mem[mempeek16(d->dat, 0xc)];
|
||||
Layer *layer = d->dat[0xe] >> 4 & 0x1 ? &ppu.fg : &ppu.bg;
|
||||
Uint8 mode = d->dat[0xe] >> 5;
|
||||
if(!mode)
|
||||
putpixel(&ppu, layer, x, y, d->dat[0xe] & 0x3);
|
||||
else if(mode-- & 0x1)
|
||||
puticn(&ppu, layer, x, y, addr, d->dat[0xe] & 0xf, mode & 0x2, mode & 0x4);
|
||||
else
|
||||
putchr(&ppu, layer, x, y, addr, d->dat[0xe] & 0xf, mode & 0x2, mode & 0x4);
|
||||
else {
|
||||
Uint8 *addr = &d->mem[mempeek16(d->dat, 0xc)];
|
||||
if(mode-- & 0x1)
|
||||
puticn(&ppu, layer, x, y, addr, d->dat[0xe] & 0xf, mode & 0x2, mode & 0x4);
|
||||
else
|
||||
putchr(&ppu, layer, x, y, addr, d->dat[0xe] & 0xf, mode & 0x2, mode & 0x4);
|
||||
}
|
||||
reqdraw = 1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue