Mask off accesses to SDAC extended registers. Fixes out-of-bounds register writes causing corruption seen sometimes in Windows 95.
This commit is contained in:
parent
4a489dab1b
commit
7d484e0928
1 changed files with 4 additions and 4 deletions
|
|
@ -50,8 +50,8 @@ void sdac_ramdac_out(uint16_t addr, uint8_t val, sdac_ramdac_t *ramdac, svga_t *
|
||||||
ramdac->magic_count = 0;
|
ramdac->magic_count = 0;
|
||||||
if (ramdac->rs2)
|
if (ramdac->rs2)
|
||||||
{
|
{
|
||||||
if (!ramdac->reg_ff) ramdac->regs[ramdac->windex] = (ramdac->regs[ramdac->windex] & 0xff00) | val;
|
if (!ramdac->reg_ff) ramdac->regs[ramdac->windex & 0xff] = (ramdac->regs[ramdac->windex & 0xff] & 0xff00) | val;
|
||||||
else ramdac->regs[ramdac->windex] = (ramdac->regs[ramdac->windex] & 0x00ff) | (val << 8);
|
else ramdac->regs[ramdac->windex & 0xff] = (ramdac->regs[ramdac->windex & 0xff] & 0x00ff) | (val << 8);
|
||||||
ramdac->reg_ff = !ramdac->reg_ff;
|
ramdac->reg_ff = !ramdac->reg_ff;
|
||||||
// pclog("RAMDAC reg %02X now %04X\n", ramdac->windex, ramdac->regs[ramdac->windex]);
|
// pclog("RAMDAC reg %02X now %04X\n", ramdac->windex, ramdac->regs[ramdac->windex]);
|
||||||
if (!ramdac->reg_ff) ramdac->windex++;
|
if (!ramdac->reg_ff) ramdac->windex++;
|
||||||
|
|
@ -106,8 +106,8 @@ uint8_t sdac_ramdac_in(uint16_t addr, sdac_ramdac_t *ramdac, svga_t *svga)
|
||||||
// }
|
// }
|
||||||
if (ramdac->rs2)
|
if (ramdac->rs2)
|
||||||
{
|
{
|
||||||
if (!ramdac->reg_ff) temp = ramdac->regs[ramdac->rindex] & 0xff;
|
if (!ramdac->reg_ff) temp = ramdac->regs[ramdac->rindex & 0xff] & 0xff;
|
||||||
else temp = ramdac->regs[ramdac->rindex] >> 8;
|
else temp = ramdac->regs[ramdac->rindex & 0xff] >> 8;
|
||||||
ramdac->reg_ff = !ramdac->reg_ff;
|
ramdac->reg_ff = !ramdac->reg_ff;
|
||||||
if (!ramdac->reg_ff)
|
if (!ramdac->reg_ff)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue