PCem
changeset 51:8e106d6280de
Mach64 now disables VGA data processing on LFB writes. Windows 9x DOS boxes now rendered correctly.
| author | TomW |
|---|---|
| date | Sun Dec 15 14:29:52 2013 +0000 |
| parents | 35566d85aeeb |
| children | 91b90b67515a |
| files | src/vid_ati_mach64.c src/vid_svga.c src/vid_svga.h |
| diffstat | 3 files changed, 11 insertions(+), 5 deletions(-) [+] |
line diff
1.1 --- a/src/vid_ati_mach64.c Sat Dec 14 11:31:37 2013 +0000 1.2 +++ b/src/vid_ati_mach64.c Sun Dec 15 14:29:52 2013 +0000 1.3 @@ -630,7 +630,7 @@ 1.4 int mix; 1.5 int dst_x = mach64->accel.dst_x + mach64->accel.dst_x_start; 1.6 int dst_y = mach64->accel.dst_y + mach64->accel.dst_y_start; 1.7 - 1.8 + 1.9 if (mach64->accel.source_host) 1.10 { 1.11 host_dat = cpu_dat; 1.12 @@ -1291,6 +1291,10 @@ 1.13 1.14 case 0x1c: case 0x1d: case 0x1e: case 0x1f: 1.15 WRITE8(addr, mach64->crtc_gen_cntl, val); 1.16 + if (((mach64->crtc_gen_cntl >> 24) & 3) == 3) 1.17 + svga->fb_only = 1; 1.18 + else 1.19 + svga->fb_only = 0; 1.20 svga_recalctimings(&mach64->svga); 1.21 break; 1.22
2.1 --- a/src/vid_svga.c Sat Dec 14 11:31:37 2013 +0000 2.2 +++ b/src/vid_svga.c Sun Dec 15 14:29:52 2013 +0000 2.3 @@ -660,7 +660,7 @@ 2.4 addr += svga->write_bank; 2.5 2.6 if (!(svga->gdcreg[6] & 1)) svga->fullchange=2; 2.7 - if (svga->chain4) 2.8 + if (svga->chain4 || svga->fb_only) 2.9 { 2.10 writemask2=1<<(addr&3); 2.11 addr&=~3; 2.12 @@ -836,7 +836,7 @@ 2.13 2.14 // pclog("%05X %i %04X:%04X %02X %02X %i\n",addr,svga->chain4,CS,pc, vram[addr & 0x7fffff], vram[(addr << 2) & 0x7fffff], svga->readmode); 2.15 // pclog("%i\n", svga->readmode); 2.16 - if (svga->chain4) 2.17 + if (svga->chain4 || svga->fb_only) 2.18 { 2.19 addr &= 0x7fffff; 2.20 if (addr >= svga->vram_limit) 2.21 @@ -888,7 +888,7 @@ 2.22 if (svga_output) pclog("Write LFB %08X %02X ", addr, val); 2.23 if (!(svga->gdcreg[6] & 1)) 2.24 svga->fullchange = 2; 2.25 - if (svga->chain4) 2.26 + if (svga->chain4 || svga->fb_only) 2.27 { 2.28 writemask2=1<<(addr&3); 2.29 addr&=~3; 2.30 @@ -1057,7 +1057,7 @@ 2.31 2.32 egareads++; 2.33 2.34 - if (svga->chain4) 2.35 + if (svga->chain4 || svga->fb_only) 2.36 { 2.37 addr &= 0x7fffff; 2.38 if (addr >= svga->vram_limit)
