diff options
author | Nigel Barnes <Pernod70@users.noreply.github.com> | 2018-04-21 18:10:33 +0100 |
---|---|---|
committer | Nigel Barnes <Pernod70@users.noreply.github.com> | 2018-04-21 18:13:19 +0100 |
commit | 2c1c6f3aabd432f55d1affe0a5fb2e8a9bb8e965 (patch) | |
tree | 3a03781ff820b50fad4bda3a6a2dc70bd66a056c | |
parent | eda7537f381f139166785eae9ee4807f731d46ae (diff) |
bbcm: Fixed paging in of Shadow RAM according to ACCCON.
-rw-r--r-- | src/mame/includes/bbc.h | 2 | ||||
-rw-r--r-- | src/mame/machine/bbc.cpp | 31 |
2 files changed, 8 insertions, 25 deletions
diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h index 369fdb2edb1..8390a2faad7 100644 --- a/src/mame/includes/bbc.h +++ b/src/mame/includes/bbc.h @@ -130,8 +130,6 @@ public: DECLARE_READ8_MEMBER(bbcm_acccon_r); DECLARE_WRITE8_MEMBER(bbcm_acccon_w); DECLARE_WRITE8_MEMBER(page_selectbm_w); - DECLARE_READ8_MEMBER(bbc_memorybm2_r); - DECLARE_WRITE8_MEMBER(bbc_memorybm2_w); DECLARE_WRITE8_MEMBER(bbc_memorybm4_w); DECLARE_WRITE8_MEMBER(bbc_memorybm5_w); DECLARE_WRITE8_MEMBER(bbc_memorybm7_w); diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp index 730a8e5de45..f4b14bd0102 100644 --- a/src/mame/machine/bbc.cpp +++ b/src/mame/machine/bbc.cpp @@ -233,16 +233,13 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp6_w) READ8_MEMBER(bbc_state::bbcm_fetch_r) { - if (offset >= 0xc000 && offset <= 0xdfff) + if (m_acccon_x || (m_acccon_e && offset >= 0xc000 && offset <= 0xdfff)) { - if (m_acccon_e) - { - m_bank2->set_base(m_region_maincpu->base() + 0xb000); - } - else - { - m_bank2->set_base(m_region_maincpu->base() + 0x3000); - } + m_bank2->set_base(m_region_maincpu->base() + 0xb000); + } + else + { + m_bank2->set_base(m_region_maincpu->base() + 0x3000); } return m_maincpu->space(AS_PROGRAM).read_byte(offset); } @@ -333,18 +330,6 @@ WRITE8_MEMBER(bbc_state::page_selectbm_w) } } -WRITE8_MEMBER(bbc_state::bbc_memorybm2_w) -{ - if (m_acccon_x || (m_acccon_e && m_vdusel)) - { - m_region_maincpu->base()[offset + 0xb000] = data; - } - else - { - m_region_maincpu->base()[offset + 0x3000] = data; - } -} - WRITE8_MEMBER(bbc_state::bbc_memorybm4_w) { if (m_paged_ram) @@ -1477,7 +1462,7 @@ image_init_result bbc_state::bbcm_load_cart(device_image_interface &image, gener { uint32_t filesize = image.length(); - if (filesize != 0x8000) + if (filesize > 0x8000) { image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); return image_init_result::FAIL; @@ -1492,7 +1477,7 @@ image_init_result bbc_state::bbcm_load_cart(device_image_interface &image, gener uint32_t size_lo = image.get_software_region_length("lorom"); uint32_t size_hi = image.get_software_region_length("uprom"); - if (size_lo + size_hi != 0x8000) + if (size_lo + size_hi > 0x8000) { image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); return image_init_result::FAIL; |