diff --git a/src/devices/bus/isa/trident.cpp b/src/devices/bus/isa/trident.cpp index 943f0de3432..6f66b17b700 100644 --- a/src/devices/bus/isa/trident.cpp +++ b/src/devices/bus/isa/trident.cpp @@ -182,6 +182,7 @@ void trident_vga_device::device_start() m_vblank_timer = timer_alloc(FUNC(vga_device::vblank_timer_cb), this); vga.svga_intf.seq_regcount = 0x0f; vga.svga_intf.crtc_regcount = 0x60; + svga.ignore_chain4 = true; memset(&tri, 0, sizeof(tri)); } @@ -621,6 +622,7 @@ void trident_vga_device::trident_crtc_reg_write(uint8_t index, uint8_t data) case 0x1e: // Module Testing Register tri.cr1e = data; vga.crtc.start_addr = (vga.crtc.start_addr & 0xfffeffff) | ((data & 0x20)<<11); + trident_define_video_mode(); break; case 0x1f: tri.cr1f = data; // "Software Programming Register" written to by the BIOS diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp index 36512cdd20c..158a1c66a9f 100644 --- a/src/devices/video/pc_vga.cpp +++ b/src/devices/video/pc_vga.cpp @@ -711,7 +711,7 @@ void svga_device::svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect) // line_length = vga.crtc.offset << 4; // } - uint8_t start_shift = (!(vga.sequencer.data[4] & 0x08)) ? 2 : 0; + uint8_t start_shift = (!(vga.sequencer.data[4] & 0x08) || svga.ignore_chain4) ? 2 : 0; for (int addr = VGA_START_ADDRESS << start_shift, line=0; lineset_screen(m_screen); - m_svga->set_vram_size(0x200000); + m_svga->set_vram_size(0x100000); // TODO: runs in external clock mode, needs setter to pc_vga. ~70 Hz is best guess SCREEN(config, m_screen, SCREEN_TYPE_RASTER);