(MESS) sms: added support for Hi-Com multigame carts, recently dumped

by smspower guys. Korean or Japanese consoles are suggested for these
carts. [Fabio Priuli]
This commit is contained in:
etabeta78 2014-12-24 14:49:03 +01:00
parent 39c29f2e9e
commit 44af5bcab7
4 changed files with 172 additions and 0 deletions

View File

@ -867,6 +867,119 @@
</part>
</software>
<!--
The labelling of Hi-Com multigame carts is arbitrary. The boxes appears to what was intended as unique product number
but boxes are typically mixed up and patched with stickers added to change game titles (on both boxes and cartridges)
making the product number rather unreliable AND realistically we may never find out the correct numbers.
-->
<software name="hicom3a">
<description>The Best Game Collection - Hang On + Pit Pot + Spy vs Spy (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection a (kr).sms" size="131072" crc="98af0236" sha1="a64f63eb81bfdd81476daf74a810b5b29fb55986" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom3b">
<description>The Best Game Collection - Great Baseball + Great Soccer + Super Tennis (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection b (kr).sms" size="131072" crc="6ebfe1c3" sha1="65ed4232b972e3d85147561b310115dd6b642b99" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom3c">
<description>The Best Game Collection - Teddy Boy Blues + Pit-Pot + Astro Flash (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection c (kr).sms" size="131072" crc="81a36a4f" sha1="d3912814b33ce9ca13340902524bcc01dcf397b0" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom3d">
<description>The Best Game Collection - Teddy Boy Blues + Great Soccer + Comical Machine Gun Joe (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection d (kr).sms" size="131072" crc="8d2d695d" sha1="5e20414c5eb61c3c817509f794381e1577e69111" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom3e">
<description>The Best Game Collection - Ghost House + Teddy Boy Blues + Seishun Scandal (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection e (kr).sms" size="131072" crc="82c09b57" sha1="940af778df6190ef2606a3555d47c0a7d194e05c" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom3f">
<description>The Best Game Collection - Satellite-7 + Great Baseball + Seishun Scandal (Kor)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="131072">
<rom name="hi-com 3-in-1 the best game collection f (kr).sms" size="131072" crc="4088eeb4" sha1="9ee8554a85dfc0a5a278474f4886b311650b37dc" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom8a">
<description>The Best Game Collection (Kor, 8 in 1 Ver. A)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="262144">
<rom name="hi-com 8-in-1 the best game collection a (kr).sms" size="262144" crc="fba94148" sha1="cbcdcd85317becd7ced71612a72913c02fa805be" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom8b">
<description>The Best Game Collection (Kor, 8 in 1 Ver. B)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="262144">
<rom name="hi-com 8-in-1 the best game collection b (kr).sms" size="262144" crc="8333c86e" sha1="657051e0cf27377b8c89c42d3a8f3deef165430a" offset="0" />
</dataarea>
</part>
</software>
<software name="hicom8c">
<description>The Best Game Collection (Kor, 8 in 1 Ver. C)</description>
<year>1990</year>
<publisher>Hi-Com</publisher>
<part name="cart" interface="sms_cart">
<feature name="slot" value="hicom" />
<dataarea name="rom" size="262144">
<rom name="hi-com 8-in-1 the best game collection c (kr).sms" size="262144" crc="00e9809f" sha1="c7eddfbdf0383e0b813abf2bbf47c1e779587adb" offset="0" />
</dataarea>
</part>
</software>
<software name="blackblt">
<description>Black Belt (Euro, USA)</description>
<year>1986</year>

View File

@ -35,6 +35,7 @@ const device_type SEGA8_ROM_4PAK = &device_creator<sega8_4pak_device>;
const device_type SEGA8_ROM_ZEMINA = &device_creator<sega8_zemina_device>;
const device_type SEGA8_ROM_NEMESIS = &device_creator<sega8_nemesis_device>;
const device_type SEGA8_ROM_JANGGUN = &device_creator<sega8_janggun_device>;
const device_type SEGA8_ROM_HICOM = &device_creator<sega8_hicom_device>;
const device_type SEGA8_ROM_KOREAN = &device_creator<sega8_korean_device>;
const device_type SEGA8_ROM_KOREAN_NB = &device_creator<sega8_korean_nb_device>;
@ -149,6 +150,12 @@ sega8_janggun_device::sega8_janggun_device(const machine_config &mconfig, const
}
sega8_hicom_device::sega8_hicom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: sega8_rom_device(mconfig, SEGA8_ROM_HICOM, "SMS Hi-Com Carts", tag, owner, clock, "sega8_hicom", __FILE__)
{
}
sega8_korean_device::sega8_korean_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: sega8_rom_device(mconfig, SEGA8_ROM_KOREAN, "SMS Korean Carts", tag, owner, clock, "sega8_korean", __FILE__)
{
@ -297,6 +304,11 @@ void sega8_janggun_device::late_bank_setup()
m_rom_bank_base[5] = 5;
}
void sega8_hicom_device::late_bank_setup()
{
m_rom_bank_base = 0;
}
void sega8_korean_device::late_bank_setup()
{
m_rom_bank_base[0] = 0;
@ -886,6 +898,27 @@ WRITE8_MEMBER(sega8_janggun_device::write_mapper)
}
/*-------------------------------------------------
Hi-Com X-in-1 cart, uses writes to 0xffff to
change program bank in 0x0000-0x7fff
-------------------------------------------------*/
READ8_MEMBER(sega8_hicom_device::read_cart)
{
if (offset >= 0x8000)
return m_rom[offset & 0x3fff];
return m_rom[(m_rom_bank_base * 0x8000) + offset];
}
WRITE8_MEMBER(sega8_hicom_device::write_mapper)
{
if (offset == 0x03)
m_rom_bank_base = data % (m_rom_page_count << 1);
}
/*-------------------------------------------------
Korean cart, used e.g. in Dodgeball King,

View File

@ -311,6 +311,29 @@ protected:
};
// ======================> sega8_hicom_device
class sega8_hicom_device : public sega8_rom_device
{
public:
// construction/destruction
sega8_hicom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start() { save_item(NAME(m_rom_bank_base)); }
virtual void late_bank_setup();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart);
virtual DECLARE_WRITE8_MEMBER(write_cart) {}
virtual DECLARE_WRITE8_MEMBER(write_mapper);
protected:
UINT8 m_rom_bank_base;
};
// ======================> sega8_korean_device
class sega8_korean_device : public sega8_rom_device
@ -356,6 +379,7 @@ extern const device_type SEGA8_ROM_4PAK;
extern const device_type SEGA8_ROM_ZEMINA;
extern const device_type SEGA8_ROM_NEMESIS;
extern const device_type SEGA8_ROM_JANGGUN;
extern const device_type SEGA8_ROM_HICOM;
extern const device_type SEGA8_ROM_KOREAN;
extern const device_type SEGA8_ROM_KOREAN_NB;

View File

@ -845,6 +845,7 @@ SLOT_INTERFACE_START(sg1000mk3_cart)
SLOT_INTERFACE_INTERNAL("zemina", SEGA8_ROM_ZEMINA)
SLOT_INTERFACE_INTERNAL("nemesis", SEGA8_ROM_NEMESIS)
SLOT_INTERFACE_INTERNAL("janggun", SEGA8_ROM_JANGGUN)
SLOT_INTERFACE_INTERNAL("hicom", SEGA8_ROM_HICOM)
SLOT_INTERFACE_INTERNAL("korean", SEGA8_ROM_KOREAN)
SLOT_INTERFACE_INTERNAL("korean_nb", SEGA8_ROM_KOREAN_NB)
SLOT_INTERFACE_INTERNAL("othello", SEGA8_ROM_OTHELLO)
@ -863,6 +864,7 @@ SLOT_INTERFACE_START(sms_cart)
SLOT_INTERFACE_INTERNAL("zemina", SEGA8_ROM_ZEMINA)
SLOT_INTERFACE_INTERNAL("nemesis", SEGA8_ROM_NEMESIS)
SLOT_INTERFACE_INTERNAL("janggun", SEGA8_ROM_JANGGUN)
SLOT_INTERFACE_INTERNAL("hicom", SEGA8_ROM_HICOM)
SLOT_INTERFACE_INTERNAL("korean", SEGA8_ROM_KOREAN)
SLOT_INTERFACE_INTERNAL("korean_nb", SEGA8_ROM_KOREAN_NB)
SLOT_INTERFACE_END