diff options
author | mahlemiut <bsr@xnet.co.nz> | 2014-11-13 23:43:16 +1300 |
---|---|---|
committer | mahlemiut <bsr@xnet.co.nz> | 2014-11-13 23:44:06 +1300 |
commit | 2305395acd23ed9c994438b1d1f6f1d64fca5ac7 (patch) | |
tree | 781dfff6d1bc506096507653bfc296c902524d02 | |
parent | a4d74a498ec8127b2dfc872b0012e68ad11c4ed7 (diff) |
ngen: hooked up CRTC and adjusted CRTC clock, resolution and refresh rate are set to expected values.
-rw-r--r-- | src/mess/drivers/ngen.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/mess/drivers/ngen.c b/src/mess/drivers/ngen.c index 5444904610e..373f96b7668 100644 --- a/src/mess/drivers/ngen.c +++ b/src/mess/drivers/ngen.c @@ -101,9 +101,19 @@ WRITE16_MEMBER(ngen_state::peripheral_w) { switch(offset) { + case 0x144: + if(mem_mask & 0x00ff) + m_crtc->address_w(space,0,data & 0xff); + break; + case 0x145: + if(mem_mask & 0x00ff) + m_crtc->register_w(space,0,data & 0xff); + break; + case 0x146: + if(mem_mask & 0x00ff) + m_pic->write(space,0,data & 0xff); + break; case 0x147: - if(mem_mask & 0xff00) - m_pic->write(space,0,(data >> 8) & 0xff); if(mem_mask & 0x00ff) m_pic->write(space,1,data & 0xff); break; @@ -116,6 +126,14 @@ READ16_MEMBER(ngen_state::peripheral_r) UINT16 ret = 0xff; switch(offset) { + case 0x144: + if(mem_mask & 0x00ff) + ret = m_crtc->status_r(space,0); + break; + case 0x145: + if(mem_mask & 0x00ff) + ret = m_crtc->register_r(space,0); + break; case 0x146: if(mem_mask & 0x00ff) ret = m_pic->read(space,0); @@ -200,15 +218,17 @@ static MACHINE_CONFIG_START( ngen, ngen_state ) // video board MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_SIZE(720,348) + MCFG_SCREEN_VISIBLE_AREA(0,719,0,347) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_UPDATE_DEVICE("crtc",mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", MC6845, NULL, 19980000 / 16) // divisor unknown + MCFG_MC6845_ADD("crtc", MC6845, NULL, 19980000 / 9) // divisor unknown -- /9 gives 60Hz output, so likely correct MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(9) MCFG_MC6845_UPDATE_ROW_CB(ngen_state, crtc_update_row) + MCFG_VIDEO_SET_SCREEN("screen") - MCFG_DEVICE_ADD("videouart", I8251, 19980000 / 16) // divisor unknown + MCFG_DEVICE_ADD("videouart", I8251, 19980000 / 9) // divisor unknown MACHINE_CONFIG_END |