mbee: fixed bug with telcom bankswitching.

This commit is contained in:
Robbbert 2021-06-11 00:30:28 +10:00
parent be9ceecb4e
commit 7b55b281dc
4 changed files with 20 additions and 18 deletions

View File

@ -352,7 +352,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom30.mbn" size="0x2000" crc="9aee48e2" sha1="e0598e732b44a08e3f7e77ec63a879ac1434b5ec" />
@ -365,7 +365,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom31.mbn" size="0x2000" crc="5a904a29" sha1="3120fb65ccefeb180ab80d8d35440c70dc8452c8" />
@ -378,7 +378,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom32.mbn" size="0x2000" crc="e9f0b82b" sha1="e1f2004a401878468f7f359fd30b0b948ae0eb48" />
@ -391,7 +391,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom321.mbn" size="0x2000" crc="b07eefaa" sha1="5dab90b2c232673282d215845c9947cc5bdd50c8" />
@ -404,7 +404,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom321a.mbn" size="0x2000" crc="36852a11" sha1="c45b8d03629e86231c6b256a7435abd87d8872a4" />
@ -417,7 +417,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom321p.mbn" size="0x2000" crc="3d2e8190" sha1="b4d330e149c4ddaa4a399f90b3ce8a854ddcd271" />
@ -430,7 +430,7 @@ Most roms can be mounted in any slot, although sometimes one is recommended in t
<year>198?</year>
<publisher>Microworld</publisher>
<info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" />
<sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000">
<rom name="telcom321s.mbn" size="0x2000" crc="00f8fde1" sha1="eb881bbab90c85fd6e29540decd25e884c67f738" />

View File

@ -65,7 +65,10 @@ public:
, m_bankr(*this, "bankr%d", 0U)
, m_bankw(*this, "bankw%d", 0U)
, m_pak(*this, "optrom%u", 0U) // "rom" causes issues
{ }
{
for (u8 n : m_pak_extended)
m_pak_extended[n] = 0;
}
void mbee56(machine_config &config);
void mbeeppc(machine_config &config);

View File

@ -370,7 +370,7 @@ void mbee_state::port50_w(u8 data)
Output the PAK number to choose an optional PAK ROM.
The bios will support 256 PAKs, although normally only
8 are available in hardware. Each PAK is normally a 8K
6 are available in hardware. Each PAK is normally a 8K
ROM. If 16K ROMs are used, the 2nd half becomes PAK+8,
thus 16 PAKs in total. This is used in the PC85 models.
@ -386,7 +386,7 @@ void mbee_state::port0a_w(u8 data)
u8 mbee_state::telcom_r(offs_t offset)
{
m_09 = BIT(offset, 8);
return 0xff;
return m_09;
}
u8 mbee_state::pak_r(offs_t offset)
@ -540,13 +540,14 @@ void mbee_state::machine_start()
// set pak index to true for 16k roms
if (m_pakdef)
for (u8 i = 8; i < 14; i++)
m_pak_extended[(i & 7)+2] = (m_p_pakdef[(i<<13)] == 0xff) ? false : true;
else
for (u8 i = 2; i < 8; i++)
m_pak_extended[i] = false;
if (!(m_pak[i-8] && m_pak[i-8]->exists()))
if (m_p_pakdef[(i<<13)] != 0xff)
m_pak_extended[(i & 7)+2] = true;
// set net index to true for 8k roms
m_pak_extended[1] = (m_netdef && (m_netdef->bytes() > 0x1000)) ? true : false;
if (m_netdef && (m_netdef->bytes() > 0x1000))
if (!(m_pak[1] && m_pak[1]->exists()))
m_pak_extended[1] = true;
}
void mbee_state::machine_reset()
@ -760,7 +761,6 @@ image_init_result mbee_state::load_cart(device_image_interface &image, generic_s
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported ROM size");
return image_init_result::FAIL;
}
m_pak_extended[pak_index] = (size > 0x1000) ? true : false;
slot->rom_alloc(m_pak_extended ? 0x2000 : 0x1000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);

View File

@ -344,10 +344,9 @@ void mbee_state::standard_palette(palette_device &palette) const
{
constexpr u8 bglevel[] = { 0, 0x54, 0xa0, 0xff };
constexpr u8 fglevel[] = { 0, 0xa0, 0xff, 0xff };
u8 i;
// set up background colours (00-63)
i = 0;
u8 i = 0;
for (u8 b : bglevel)
{
for (u8 g : bglevel)