(MESS) Added microvision software list (nw)

This commit is contained in:
Wilbert Pol 2013-01-18 18:41:26 +00:00
parent 1320daf170
commit c40207b0f1
3 changed files with 308 additions and 8 deletions

1
.gitattributes vendored
View File

@ -130,6 +130,7 @@ hash/megadriv.xml svneol=native#text/xml
hash/megaduck.xml svneol=native#text/xml
hash/megapc.xml svneol=native#text/xml
hash/megatech.xml svneol=native#text/xml
hash/microvision.xml svneol=native#text/xml
hash/mikrosha.xml svneol=native#text/xml
hash/mm1_flop.xml svneol=native#text/xml
hash/mo5_cart.xml svneol=native#text/xml

210
hash/microvision.xml Normal file
View File

@ -0,0 +1,210 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="microvision" description="Milton Bradley MicroVision cartridges">
<!--
The following board types are known to exist:
4952 REV-A - used for tms1100 games, 2 varations exist, one with and one without paddle circuitry
4952-79 REV-B - used for tms1100 games, 2 variations exists, one with and one without paddle circuitry
4971-REV-C - used for i8021 based game(s). Found in Connect Four
7924952D02 - used for shrink DIP version of the tms1100. Found in Super Blockbuster
The "pcb" feature is used to indicate the baord type
The "paddle" feature is used to indicate whether there is paddle circuitry on the board
The "rc" feature is used to indicate the source of the clock signal
-->
<!--
<software name="alienrdr">
<description>Alien Raiders</description>
<year>1981</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="yes" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="m34009-n1" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<!--
<software name="Baseball">
<description>Baseball</description>
<year>1980</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="yes" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="mp3479-n1nll_4063" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<software name="blckbstr">
<description>Blockbuster</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952 REV-A" />
<feature name="paddle" value="yes" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="mp3450a" size="2048" crc="ifd18ea6d" sha1="30203278d7f2b0817e59bdf7e451be2d64a90f5a" offset="0" />
</dataarea>
</part>
</software>
<!--
<software name="bowling">
<description>Bowling</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<!- - also seen with 4952 REV-A - ->
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="mp3475nll_4972" size="2048" crc="" sha1="" offset="0" />
</software>
-->
<software name="connect4">
<description>Connect Four</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4971-REV-C" />
<feature name="paddle" value="yes" />
<dataarea name="rom" size="1024">
<!-- 8021 on cart has no label -->
<rom name="connect4.bin" size="1024" crc="bdd8660b" sha1="971f9117dc809f7b9796134208b47ea34990ae71" offset="0" />
</dataarea>
</part>
</software>
<!--
<software name="cosmichu">
<description>Cosmic hunter</description>
<year>1981</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="m34017-n1" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<software name="mindbstr">
<description>Mindbuster</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952 REV-A" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/21.0K" />
<dataarea name="rom" size="2048">
<rom name="mp3457nll_4976" size="2048" crc="d5dc1f7d" sha1="9e53bd7e9b718ced3bffbdd50cf9ea1547183ea3" offset="0" />
</dataarea>
</part>
</software>
<software name="phsrstrk">
<description>Star Trek Phaser Strike</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/21.0K" />
<dataarea name="rom" size="2048">
<rom name="mp3454" size="2048" crc="c7768d04" sha1="e477d49fc835649164cff5ed158ee31dcf244efc" offset="0" />
</dataarea>
</part>
</software>
<!--
<software name="pinball">
<description>Pinball</description>
<year>1980</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="yes" />
<feature name="rc" value="100pf/21.0K" />
<dataarea name="rom" size="2048">
<rom name="mp3455nll_4974" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<!--
<software name="seaduel">
<description>Sea Duel</description>
<year>1980</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952-79 REV-B" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/39.4K" />
<dataarea name="rom" size="2048">
<rom name="mp3496-n1_4064" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<!--
<software name="sprblock">
<description>Super Blockbuster</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="7924952D02" />
<feature name="paddle" value="yes" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="m34047-n2ll_4241" size="2048" crc="" sha1="" offset="0" />
</dataarea>
</part>
</software>
-->
<software name="vegasslt">
<description>Veags Slots</description>
<year>1979</year>
<publisher>Milton Bradley</publisher>
<part name="cart" interface="microvision_cart">
<feature name="pcb" value="4952 REV-A" />
<feature name="paddle" value="no" />
<feature name="rc" value="100pf/23.2K" />
<dataarea name="rom" size="2048">
<rom name="mp3474nll_4975" size="2048" crc="4500c1d9" sha1="d49522dbe265e71b86488b5533d01bc9050811c9" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -23,12 +23,6 @@ of the games were clocked at around 500KHz, 550KHz, or 300KHz.
#define LOG 0
enum cpu_type
{
CPU_TYPE_I8021,
CPU_TYPE_TMS1100
};
class microvision_state : public driver_device
{
@ -60,7 +54,33 @@ public:
DECLARE_WRITE16_MEMBER(tms1100_write_o);
DECLARE_WRITE16_MEMBER(tms1100_write_r);
// enums
enum cpu_type
{
CPU_TYPE_I8021,
CPU_TYPE_TMS1100
};
enum pcb_type
{
PCB_TYPE_4952_REV_A,
PCB_TYPE_4952_9_REV_B,
PCB_TYPE_4971_REV_C,
PCB_TYPE_7924952D02,
PCB_TYPE_UNKNOWN
};
enum rc_type
{
RC_TYPE_100PF_21_0K,
RC_TYPE_100PF_23_2K,
RC_TYPE_100PF_39_4K,
RC_TYPE_UNKNOWN
};
cpu_type m_cpu_type;
pcb_type m_pcb_type;
rc_type m_rc_type;
protected:
required_device<dac_device> m_dac;
@ -162,6 +182,22 @@ MACHINE_RESET_MEMBER(microvision_state, microvision)
case CPU_TYPE_TMS1100:
m_i8021->suspend( SUSPEND_REASON_DISABLE, 0 );
m_tms1100->resume( SUSPEND_REASON_DISABLE );
switch ( m_rc_type )
{
case RC_TYPE_100PF_21_0K:
static_set_clock( m_tms1100, 550000 );
break;
case RC_TYPE_100PF_23_2K:
case RC_TYPE_UNKNOWN: // Default to most occuring setting
static_set_clock( m_tms1100, 500000 );
break;
case RC_TYPE_100PF_39_4K:
static_set_clock( m_tms1100, 300000 );
break;
}
break;
}
}
@ -450,8 +486,58 @@ static DEVICE_IMAGE_LOAD(microvision_cart)
}
else
{
// Copy rom contents
memcpy(rom1, image.get_software_region("rom"), file_size);
// Set default setting for PCB type and RC type
state->m_pcb_type = microvision_state::PCB_TYPE_UNKNOWN;
state->m_rc_type = microvision_state::RC_TYPE_UNKNOWN;
// Detect settings for PCB type
const char *pcb = software_part_get_feature((software_part*)image.part_entry(), "pcb");
if ( pcb != NULL )
{
static const struct { const char *pcb_name; microvision_state::pcb_type pcbtype; } pcb_types[] =
{
{ "4952 REV-A", microvision_state::PCB_TYPE_4952_REV_A },
{ "4952-79 REV-B", microvision_state::PCB_TYPE_4952_9_REV_B },
{ "4971-REV-C", microvision_state::PCB_TYPE_4971_REV_C },
{ "7924952D02", microvision_state::PCB_TYPE_7924952D02 }
};
for (int i = 0; i < ARRAY_LENGTH(pcb_types) && state->m_pcb_type == microvision_state::PCB_TYPE_UNKNOWN; i++ )
{
if (!mame_stricmp(pcb, pcb_types[i].pcb_name))
{
state->m_pcb_type = pcb_types[i].pcbtype;
}
}
}
// Detect settings for RC types
const char *rc = software_part_get_feature((software_part*)image.part_entry(), "rc");
if ( rc != NULL )
{
static const struct { const char *rc_name; microvision_state::rc_type rctype; } rc_types[] =
{
{ "100pf/21.0K", microvision_state::RC_TYPE_100PF_21_0K },
{ "100pf/23.2K", microvision_state::RC_TYPE_100PF_23_2K },
{ "100pf/39.4K", microvision_state::RC_TYPE_100PF_39_4K }
};
for ( int i = 0; i < ARRAY_LENGTH(rc_types) && state->m_rc_type == microvision_state::RC_TYPE_UNKNOWN; i++ )
{
if (!mame_stricmp(rc, rc_types[i].rc_name))
{
state->m_rc_type = rc_types[i].rctype;
}
}
}
}
// Mirror rom data to maincpu2 region
memcpy( rom2, rom1, file_size );
// Based on file size select cpu:
@ -461,11 +547,11 @@ static DEVICE_IMAGE_LOAD(microvision_cart)
switch ( file_size )
{
case 1024:
state->m_cpu_type = CPU_TYPE_I8021;
state->m_cpu_type = microvision_state::CPU_TYPE_I8021;
break;
case 2048:
state->m_cpu_type = CPU_TYPE_TMS1100;
state->m_cpu_type = microvision_state::CPU_TYPE_TMS1100;
break;
}
return IMAGE_INIT_PASS;
@ -555,6 +641,9 @@ static MACHINE_CONFIG_START( microvision, microvision_state )
MCFG_CARTSLOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("microvision_cart")
MCFG_CARTSLOT_LOAD(microvision_cart)
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","microvision")
MACHINE_CONFIG_END