pntnpuzl: fix display

This commit is contained in:
cracyc 2022-12-08 09:04:58 -06:00
parent 4f4dddd044
commit b0656a3201
4 changed files with 5 additions and 2 deletions

View File

@ -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

View File

@ -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; line<LINES; line+=height, addr+=offset(), curr_addr+=offset())
{
for (int yi = 0;yi < height; yi++)

View File

@ -273,6 +273,7 @@ protected:
uint8_t rgb24_en;
uint8_t rgb32_en;
uint8_t id;
bool ignore_chain4;
} svga;
};

View File

@ -392,7 +392,7 @@ void pntnpuzl_state::pntnpuzl(machine_config &config)
TVGA9000_VGA(config, m_svga, 0);
m_svga->set_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);