mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
bbcm: Fixed paging in of Shadow RAM according to ACCCON.
This commit is contained in:
parent
eda7537f38
commit
2c1c6f3aab
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user