TGUI96x0 banking fixes.
This commit is contained in:
@@ -275,7 +275,9 @@ tgui_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
{
|
{
|
||||||
tgui_t *tgui = (tgui_t *)p;
|
tgui_t *tgui = (tgui_t *)p;
|
||||||
svga_t *svga = &tgui->svga;
|
svga_t *svga = &tgui->svga;
|
||||||
uint8_t old;
|
uint8_t old, mask;
|
||||||
|
|
||||||
|
mask = (tgui->type >= TGUI_9680) ? 0x3f : 0x1f;
|
||||||
|
|
||||||
if (((addr&0xFFF0) == 0x3D0 || (addr&0xFFF0) == 0x3B0) && !(svga->miscout & 1)) addr ^= 0x60;
|
if (((addr&0xFFF0) == 0x3D0 || (addr&0xFFF0) == 0x3B0) && !(svga->miscout & 1)) addr ^= 0x60;
|
||||||
|
|
||||||
@@ -457,19 +459,18 @@ tgui_out(uint16_t addr, uint8_t val, void *p)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x3D8:
|
case 0x3D8:
|
||||||
tgui->tgui_3d8 = val;
|
tgui->tgui_3d8 = val;
|
||||||
if (svga->gdcreg[0xf] & 4)
|
if (svga->gdcreg[0xf] & 4) {
|
||||||
{
|
svga->write_bank = (val & mask) * 65536;
|
||||||
svga->write_bank = (val & 0x1f) * 65536;
|
if (!(svga->gdcreg[0xf] & 1))
|
||||||
if (!(svga->gdcreg[0xf] & 1))
|
svga->read_bank = (val & mask) * 65536;
|
||||||
svga->read_bank = (val & 0x1f) * 65536;
|
}
|
||||||
}
|
return;
|
||||||
return;
|
|
||||||
case 0x3D9:
|
case 0x3D9:
|
||||||
tgui->tgui_3d9 = val;
|
tgui->tgui_3d9 = val;
|
||||||
if ((svga->gdcreg[0xf] & 5) == 5)
|
if ((svga->gdcreg[0xf] & 5) == 5)
|
||||||
svga->read_bank = (val & 0x1F) * 65536;
|
svga->read_bank = (val & mask) * 65536;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x43c8:
|
case 0x43c8:
|
||||||
tgui->clock_n = val & 0x7f;
|
tgui->clock_n = val & 0x7f;
|
||||||
|
Reference in New Issue
Block a user