diff options
author | Nigel Barnes <Pernod70@users.noreply.github.com> | 2019-11-06 03:00:03 +0000 |
---|---|---|
committer | Nigel Barnes <Pernod70@users.noreply.github.com> | 2019-11-06 11:49:39 +0000 |
commit | d8eedfe473219141a3c2ff64ef5bf659dc38c6d3 (patch) | |
tree | 8eec0e954a2624f217eb639ed45392293b6b5fcd | |
parent | 139e0eb5615445e4726d23519a009b71a3f22a9b (diff) |
autoc15: Replaced HD6845 with HD6345, required for smooth scrolling.
-rw-r--r-- | src/mame/drivers/bbc.cpp | 23 | ||||
-rw-r--r-- | src/mame/includes/bbc.h | 1 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index dfa027a8ff5..2775474b307 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -328,6 +328,14 @@ void bbcm_state::bbcmc_bankdev(address_map &map) } +void bbcm_state::autoc15_bankdev(address_map &map) +{ + bbcmc_bankdev(map); + map(0x0200, 0x0200).mirror(0x406).rw(m_hd6845, FUNC(hd6345_device::status_r), FUNC(hd6345_device::address_w)); // fe00-fe07 6345 CRTC Video controller + map(0x0201, 0x0201).mirror(0x406).rw(m_hd6845, FUNC(hd6345_device::register_r), FUNC(hd6345_device::register_w)); +} + + INPUT_CHANGED_MEMBER(bbc_state::trigger_reset) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); @@ -1757,6 +1765,21 @@ void bbcm_state::pro128s(machine_config &config) void bbcm_state::autoc15(machine_config &config) { bbcmc(config); + + m_bankdev->set_map(&bbcm_state::autoc15_bankdev).set_options(ENDIANNESS_LITTLE, 8, 16, 0x0400); + + /* crtc - replaces HD6845 to support smooth scrolling */ + HD6345(config.replace(), m_hd6845, 16_MHz_XTAL / 8); + m_hd6845->set_screen("screen"); + m_hd6845->set_show_border_area(false); + m_hd6845->set_char_width(12); + //m_hd6845->set_begin_update_callback(FUNC(bbc_state::crtc_begin_update)); + m_hd6845->set_update_row_callback(FUNC(bbc_state::crtc_update_row)); + //m_hd6845->set_reconfigure_callback(FUNC(bbc_state::crtc_reconfig)); + m_hd6845->out_de_callback().set(FUNC(bbc_state::bbc_de_changed)); + m_hd6845->out_hsync_callback().set(FUNC(bbc_state::bbc_hsync_changed)); + m_hd6845->out_vsync_callback().set(FUNC(bbc_state::bbc_vsync_changed)); + /* Autocue RAM disc */ //m_exp->set_default_option("autocue"); //m_exp->set_fixed(true); diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h index 8989474c3b2..8665f11ed73 100644 --- a/src/mame/includes/bbc.h +++ b/src/mame/includes/bbc.h @@ -451,6 +451,7 @@ protected: void bbcmet_bankdev(address_map &map); void bbcmc_mem(address_map &map); void bbcmc_bankdev(address_map &map); + void autoc15_bankdev(address_map &map); void bbcm_fetch(address_map &map); }; |