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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom30.mbn" size="0x2000" crc="9aee48e2" sha1="e0598e732b44a08e3f7e77ec63a879ac1434b5ec" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom31.mbn" size="0x2000" crc="5a904a29" sha1="3120fb65ccefeb180ab80d8d35440c70dc8452c8" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom32.mbn" size="0x2000" crc="e9f0b82b" sha1="e1f2004a401878468f7f359fd30b0b948ae0eb48" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom321.mbn" size="0x2000" crc="b07eefaa" sha1="5dab90b2c232673282d215845c9947cc5bdd50c8" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom321a.mbn" size="0x2000" crc="36852a11" sha1="c45b8d03629e86231c6b256a7435abd87d8872a4" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom321p.mbn" size="0x2000" crc="3d2e8190" sha1="b4d330e149c4ddaa4a399f90b3ce8a854ddcd271" /> <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> <year>198?</year>
<publisher>Microworld</publisher> <publisher>Microworld</publisher>
<info name="usage" value="NET"/> <info name="usage" value="NET"/>
<sharedfeat name="compatibility" value="3" /> <sharedfeat name="compatibility" value="2,3" />
<part name="cart" interface="mbee_net"> <part name="cart" interface="mbee_net">
<dataarea name="rom" size="0x2000"> <dataarea name="rom" size="0x2000">
<rom name="telcom321s.mbn" size="0x2000" crc="00f8fde1" sha1="eb881bbab90c85fd6e29540decd25e884c67f738" /> <rom name="telcom321s.mbn" size="0x2000" crc="00f8fde1" sha1="eb881bbab90c85fd6e29540decd25e884c67f738" />

View File

@ -65,7 +65,10 @@ public:
, m_bankr(*this, "bankr%d", 0U) , m_bankr(*this, "bankr%d", 0U)
, m_bankw(*this, "bankw%d", 0U) , m_bankw(*this, "bankw%d", 0U)
, m_pak(*this, "optrom%u", 0U) // "rom" causes issues , 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 mbee56(machine_config &config);
void mbeeppc(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. Output the PAK number to choose an optional PAK ROM.
The bios will support 256 PAKs, although normally only 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, ROM. If 16K ROMs are used, the 2nd half becomes PAK+8,
thus 16 PAKs in total. This is used in the PC85 models. 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) u8 mbee_state::telcom_r(offs_t offset)
{ {
m_09 = BIT(offset, 8); m_09 = BIT(offset, 8);
return 0xff; return m_09;
} }
u8 mbee_state::pak_r(offs_t offset) 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 // set pak index to true for 16k roms
if (m_pakdef) if (m_pakdef)
for (u8 i = 8; i < 14; i++) for (u8 i = 8; i < 14; i++)
m_pak_extended[(i & 7)+2] = (m_p_pakdef[(i<<13)] == 0xff) ? false : true; if (!(m_pak[i-8] && m_pak[i-8]->exists()))
else if (m_p_pakdef[(i<<13)] != 0xff)
for (u8 i = 2; i < 8; i++) m_pak_extended[(i & 7)+2] = true;
m_pak_extended[i] = false;
// set net index to true for 8k roms // 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() 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"); image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported ROM size");
return image_init_result::FAIL; return image_init_result::FAIL;
} }
m_pak_extended[pak_index] = (size > 0x1000) ? true : false; m_pak_extended[pak_index] = (size > 0x1000) ? true : false;
slot->rom_alloc(m_pak_extended ? 0x2000 : 0x1000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); 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 bglevel[] = { 0, 0x54, 0xa0, 0xff };
constexpr u8 fglevel[] = { 0, 0xa0, 0xff, 0xff }; constexpr u8 fglevel[] = { 0, 0xa0, 0xff, 0xff };
u8 i;
// set up background colours (00-63) // set up background colours (00-63)
i = 0; u8 i = 0;
for (u8 b : bglevel) for (u8 b : bglevel)
{ {
for (u8 g : bglevel) for (u8 g : bglevel)