Merge pull request #3625 from 86Box/tc1995
Assorted TGUI9440/96x0 fixes:
This commit is contained in:
@@ -646,6 +646,7 @@ void
|
|||||||
tgui_recalctimings(svga_t *svga)
|
tgui_recalctimings(svga_t *svga)
|
||||||
{
|
{
|
||||||
const tgui_t *tgui = (tgui_t *) svga->priv;
|
const tgui_t *tgui = (tgui_t *) svga->priv;
|
||||||
|
uint8_t ger22lower = (tgui->accel.ger22 & 0xff);
|
||||||
uint8_t ger22upper = (tgui->accel.ger22 >> 8);
|
uint8_t ger22upper = (tgui->accel.ger22 >> 8);
|
||||||
|
|
||||||
if (!svga->rowoffset)
|
if (!svga->rowoffset)
|
||||||
@@ -771,7 +772,8 @@ tgui_recalctimings(svga_t *svga)
|
|||||||
}
|
}
|
||||||
switch (svga->hdisp) {
|
switch (svga->hdisp) {
|
||||||
case 640:
|
case 640:
|
||||||
svga->rowoffset = 80;
|
if (!ger22lower)
|
||||||
|
svga->rowoffset = 80;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2063,17 +2065,25 @@ tgui_accel_out(uint16_t addr, uint8_t val, void *priv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x2123:
|
case 0x2123:
|
||||||
|
//pclog("Pitch IO23: val = %02x, rowoffset = %x, pitch = %d.\n", val, svga->rowoffset, tgui->accel.pitch);
|
||||||
tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8);
|
tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8);
|
||||||
if ((val & 0x80) || ((val & 0xc0) == 0x40))
|
if ((val & 0x80) || ((val & 0xc0) == 0x40))
|
||||||
tgui->accel.pitch = svga->rowoffset << 3;
|
tgui->accel.pitch = svga->rowoffset << 3;
|
||||||
else if (tgui->accel.pitch <= 1024)
|
else if (tgui->accel.pitch <= 1024) {
|
||||||
tgui->accel.pitch = svga->rowoffset << 3;
|
tgui->accel.pitch = svga->rowoffset << 3;
|
||||||
|
if (!val)
|
||||||
|
tgui->accel.pitch = 1024;
|
||||||
|
}
|
||||||
|
|
||||||
if (tgui->accel.bpp == 1)
|
if (tgui->accel.bpp == 1)
|
||||||
tgui->accel.pitch >>= 1;
|
tgui->accel.pitch >>= 1;
|
||||||
else if (tgui->accel.bpp == 3)
|
else if (tgui->accel.bpp == 3)
|
||||||
tgui->accel.pitch >>= 2;
|
tgui->accel.pitch >>= 2;
|
||||||
|
|
||||||
|
|
||||||
|
if (tgui->accel.pitch == 800)
|
||||||
|
tgui->accel.pitch += 32;
|
||||||
|
|
||||||
svga_recalctimings(svga);
|
svga_recalctimings(svga);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2712,17 +2722,24 @@ tgui_accel_write(uint32_t addr, uint8_t val, void *priv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x23:
|
case 0x23:
|
||||||
|
//pclog("Pitch MM23: val = %02x, rowoffset = %x, pitch = %d.\n", val, svga->rowoffset, tgui->accel.pitch);
|
||||||
tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8);
|
tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8);
|
||||||
if ((val & 0x80) || ((val & 0xc0) == 0x40))
|
if ((val & 0x80) || ((val & 0xc0) == 0x40))
|
||||||
tgui->accel.pitch = svga->rowoffset << 3;
|
tgui->accel.pitch = svga->rowoffset << 3;
|
||||||
else if (tgui->accel.pitch <= 1024)
|
else if (tgui->accel.pitch <= 1024) {
|
||||||
tgui->accel.pitch = svga->rowoffset << 3;
|
tgui->accel.pitch = svga->rowoffset << 3;
|
||||||
|
if (!val)
|
||||||
|
tgui->accel.pitch = 1024;
|
||||||
|
}
|
||||||
|
|
||||||
if (tgui->accel.bpp == 1)
|
if (tgui->accel.bpp == 1)
|
||||||
tgui->accel.pitch >>= 1;
|
tgui->accel.pitch >>= 1;
|
||||||
else if (tgui->accel.bpp == 3)
|
else if (tgui->accel.bpp == 3)
|
||||||
tgui->accel.pitch >>= 2;
|
tgui->accel.pitch >>= 2;
|
||||||
|
|
||||||
|
if (tgui->accel.pitch == 800)
|
||||||
|
tgui->accel.pitch += 32;
|
||||||
|
|
||||||
svga_recalctimings(svga);
|
svga_recalctimings(svga);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user