mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
microvsn: simplify cart_load, add notes to xml (nw)
This commit is contained in:
parent
7e19c6214c
commit
c2c1a8757b
@ -2,7 +2,9 @@
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<!--
|
||||
license:CC0
|
||||
-->
|
||||
|
||||
<!--
|
||||
Cartridges(MCU+ROM) for Entex Select-A-Game Machine, note that the manual and
|
||||
label calls one "Select-A-Game Cartridge" and not "Select-A-Game Machine Cartridge"
|
||||
-->
|
||||
@ -13,8 +15,8 @@ label calls one "Select-A-Game Cartridge" and not "Select-A-Game Machine Cartrid
|
||||
<description>Baseball 4</description>
|
||||
<year>1981</year>
|
||||
<publisher>Entex</publisher>
|
||||
<part name="cart" interface="sag_cart"> <!-- HD38800 MCU -->
|
||||
<dataarea name="rom" size="0x2000">
|
||||
<part name="cart" interface="sag_cart">
|
||||
<dataarea name="rom" size="0x2000"> <!-- HD38800 MCU -->
|
||||
<rom name="b-b5_hd38800a37" offset="0x0000" size="0x1000" crc="64852bd5" sha1="fb1c24ca43934ceb6fc35ac7c35b71e6e843dbc5" />
|
||||
<rom offset="0x1e80" size="0x0100" loadflag="continue" />
|
||||
</dataarea>
|
||||
@ -25,8 +27,8 @@ label calls one "Select-A-Game Cartridge" and not "Select-A-Game Machine Cartrid
|
||||
<description>Football 4</description>
|
||||
<year>1981</year>
|
||||
<publisher>Entex</publisher>
|
||||
<part name="cart" interface="sag_cart"> <!-- TMS1670 MCU, die label TMS1400, MP7573 -->
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<part name="cart" interface="sag_cart">
|
||||
<dataarea name="rom" size="0x1000"> <!-- TMS1670 MCU, die label TMS1400, MP7573 -->
|
||||
<rom name="ftba_mp7573" size="0x1000" crc="b17dd9e3" sha1="9c9e7a56643233ef2adff7b68a6df19e6ca176c2" />
|
||||
</dataarea>
|
||||
<dataarea name="rom:mpla" size="867">
|
||||
@ -42,8 +44,8 @@ label calls one "Select-A-Game Cartridge" and not "Select-A-Game Machine Cartrid
|
||||
<description>Pinball</description>
|
||||
<year>1981</year>
|
||||
<publisher>Entex</publisher>
|
||||
<part name="cart" interface="sag_cart"> <!-- HD38800 MCU -->
|
||||
<dataarea name="rom" size="0x2000">
|
||||
<part name="cart" interface="sag_cart">
|
||||
<dataarea name="rom" size="0x2000"> <!-- HD38800 MCU -->
|
||||
<rom name="pinb_hd38800a38" offset="0x0000" size="0x1000" crc="6e53a56b" sha1="13f057eab2e4cfbb3ef1247a041abff15ae727c9" />
|
||||
<rom offset="0x1e80" size="0x0100" loadflag="continue" />
|
||||
</dataarea>
|
||||
@ -54,8 +56,8 @@ label calls one "Select-A-Game Cartridge" and not "Select-A-Game Machine Cartrid
|
||||
<description>Space Invader 2</description>
|
||||
<year>1981</year>
|
||||
<publisher>Entex</publisher>
|
||||
<part name="cart" interface="sag_cart"> <!-- HD38800 MCU -->
|
||||
<dataarea name="rom" size="0x2000">
|
||||
<part name="cart" interface="sag_cart">
|
||||
<dataarea name="rom" size="0x2000"> <!-- HD38800 MCU -->
|
||||
<rom name="inv2_hd38800a31" offset="0x0000" size="0x1000" crc="29c8c100" sha1="41cd413065659c6d7d5b2408de2ca6d51c49629a" status="baddump" />
|
||||
<rom offset="0x1e80" size="0x0100" loadflag="continue" />
|
||||
</dataarea>
|
||||
|
@ -3,32 +3,44 @@
|
||||
<!--
|
||||
license:CC0
|
||||
-->
|
||||
<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 board 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
|
||||
<!--
|
||||
|
||||
All known games are dumped, see below for list (chronological order)
|
||||
One more game "Barrage" was announced but not released.
|
||||
|
||||
4952 - Block Buster
|
||||
4971 - Connect Four (TMS1100 and I8021 versions)
|
||||
4972 - Bowling
|
||||
4973 - Star Trek: Phaser Strike (aka Shooting Star in Europe)
|
||||
4974 - Pinball
|
||||
4975 - Vegas Slots
|
||||
4976 - Mindbuster
|
||||
4063 - Baseball
|
||||
4064 - Sea Duel
|
||||
4176 - Alien Raiders (aka Space Blitz or Blitz in Europe)
|
||||
4177 - Cosmic Hunter
|
||||
4241 - Super Block Buster
|
||||
|
||||
The "clock" feature is used to indicate MCU clock frequency
|
||||
The "pla" feature is for TMS1100 output PLA type
|
||||
The "paddle" feature is used to indicate whether there is paddle circuitry on the PCB
|
||||
-->
|
||||
|
||||
<softwarelist name="microvision" description="Milton Bradley MicroVision cartridges">
|
||||
|
||||
<software name="alienrdr">
|
||||
<description>Alien Raiders</description>
|
||||
<year>1981</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="M34009" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4176" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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="b1632712" sha1="515040a3bf6386590c025e12a9512c98efdd7e1e"/>
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="m34009-n1" size="0x800" crc="b1632712" sha1="515040a3bf6386590c025e12a9512c98efdd7e1e"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -37,28 +49,30 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Baseball</description>
|
||||
<year>1980</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3479" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4063" />
|
||||
<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="40e3327a" sha1="c1b52a081c7fe6a51c5cfe41a4d446f1f8cfe24e"/>
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="0" />
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="mp3479-n1nll_4063" size="0x800" crc="40e3327a" sha1="c1b52a081c7fe6a51c5cfe41a4d446f1f8cfe24e"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="blckbstr">
|
||||
<description>Blockbuster</description>
|
||||
<description>Block Buster</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3450A" />
|
||||
<info name="pcb" value="4952 REV-A" />
|
||||
<info name="serial" value="4952" /> <!-- pack-in game, serial of MicroVision console -->
|
||||
<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="fd18ea6d" sha1="30203278d7f2b0817e59bdf7e451be2d64a90f5a"/>
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="0" />
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU, die label 1100B, MP3450A -->
|
||||
<rom name="mp3450a" size="0x800" crc="fd18ea6d" sha1="30203278d7f2b0817e59bdf7e451be2d64a90f5a"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -67,45 +81,45 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Bowling</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3475" />
|
||||
<info name="pcb" value="4952-79 REV-B" /> <!-- also seen with 4952 REV-A -->
|
||||
<info name="serial" value="4972" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<!-- also seen with 4952 REV-A -->
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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="460ac30e" sha1="93ffb75b82d1f48f451e0e1158d5a8d1cd465fe5"/>
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU, die label 1100E, MP3475 -->
|
||||
<rom name="mp3475nll_4972" size="0x800" crc="460ac30e" sha1="93ffb75b82d1f48f451e0e1158d5a8d1cd465fe5"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="connect4">
|
||||
<description>Connect Four (8021)</description>
|
||||
<description>Connect Four (8021 version)</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3481" />
|
||||
<info name="pcb" value="4971-REV-C" />
|
||||
<info name="serial" value="4971" />
|
||||
<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"/>
|
||||
<feature name="clock" value="2000000" /> <!-- LC -->
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x400"> <!-- I8021 MCU -->
|
||||
<rom name="4971" size="0x400" crc="bdd8660b" sha1="971f9117dc809f7b9796134208b47ea34990ae71"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="connect4t" cloneof="connect4">
|
||||
<description>Connect Four (TMS1100)</description>
|
||||
<description>Connect Four (TMS1100 version)</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3481" />
|
||||
<info name="pcb" value="4952-79 REV-B" /> <!-- correct? -->
|
||||
<info name="serial" value="4971" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="500000" /> <!-- correct? -->
|
||||
<feature name="pla" value="1" />
|
||||
<feature name="pcb" value="4952-79 REV-B" /> <!-- correct? -->
|
||||
<feature name="paddle" value="yes" />
|
||||
<dataarea name="rom" size="2048">
|
||||
<rom name="connect4t.bin" size="2048" crc="6a4cf60b" sha1="e93d848784205ab49234ad26718e04d267b776ed"/>
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="mp3481" size="0x800" crc="6a4cf60b" sha1="e93d848784205ab49234ad26718e04d267b776ed"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -114,14 +128,14 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Cosmic hunter</description>
|
||||
<year>1981</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="M34017" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4177" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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="d8ba1377" sha1="a8dabd296aefc46849db2b7d2d8e0de7c77b5b38"/>
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="m34017-n1" size="0x800" crc="d8ba1377" sha1="a8dabd296aefc46849db2b7d2d8e0de7c77b5b38"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -130,43 +144,46 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Mindbuster</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3457" />
|
||||
<info name="pcb" value="4952 REV-A" />
|
||||
<info name="serial" value="4976" />
|
||||
<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"/>
|
||||
<feature name="clock" value="550000" /> <!-- RC = 100pf/21.0K -->
|
||||
<feature name="pla" value="0" />
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="mp3457nll_4976" size="0x800" crc="d5dc1f7d" sha1="9e53bd7e9b718ced3bffbdd50cf9ea1547183ea3"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="phsrstrk">
|
||||
<description>Star Trek Phaser Strike</description>
|
||||
<description>Star Trek: Phaser Strike</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3454" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4973" />
|
||||
<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"/>
|
||||
<feature name="clock" value="550000" /> <!-- RC = 100pf/21.0K -->
|
||||
<feature name="pla" value="0" />
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="mp3454" size="0x800" crc="c7768d04" sha1="e477d49fc835649164cff5ed158ee31dcf244efc"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="pinball">
|
||||
<description>Pinball</description>
|
||||
<year>1980</year>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3455" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4974" />
|
||||
<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="906544ea" sha1="7ba8460369e1bb0708b0ef076342774059fd03d2"/>
|
||||
<feature name="clock" value="550000" /> <!-- RC = 100pf/21.0K -->
|
||||
<feature name="pla" value="0" />
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU, die label 1100E, MP3455 -->
|
||||
<rom name="mp3455nll_4974" size="0x800" crc="906544ea" sha1="7ba8460369e1bb0708b0ef076342774059fd03d2"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -175,30 +192,30 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Sea Duel</description>
|
||||
<year>1980</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3496" />
|
||||
<info name="pcb" value="4952-79 REV-B" />
|
||||
<info name="serial" value="4064" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="300000" /> <!-- RC = 100pf/39.4K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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="77a8f71b" sha1="1f95ecf3b1ec6a17db92e1ae903be269aa0b47d8"/>
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="mp3496-n1_4064" size="0x800" crc="77a8f71b" sha1="1f95ecf3b1ec6a17db92e1ae903be269aa0b47d8"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="sprblock">
|
||||
<description>Super Blockbuster</description>
|
||||
<description>Super Block Buster</description>
|
||||
<year>1982</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="M34047" />
|
||||
<info name="pcb" value="7924952D02" />
|
||||
<info name="serial" value="4241" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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="796660e3" sha1="1b758369849cc7dea3918774244f747895607377"/>
|
||||
<feature name="paddle" value="1" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU -->
|
||||
<rom name="m34047-n2ll_4241" size="0x800" crc="796660e3" sha1="1b758369849cc7dea3918774244f747895607377"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -207,30 +224,29 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<description>Vegas Slots</description>
|
||||
<year>1979</year>
|
||||
<publisher>Milton Bradley</publisher>
|
||||
<info name="serial" value="MP3474" />
|
||||
<info name="pcb" value="4952 REV-A" />
|
||||
<info name="serial" value="4975" />
|
||||
<part name="cart" interface="microvision_cart">
|
||||
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
|
||||
<feature name="pla" value="1" />
|
||||
<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"/>
|
||||
<feature name="paddle" value="0" />
|
||||
<dataarea name="rom" size="0x800"> <!-- TMS1100 MCU, die label 1100E, MP3474 -->
|
||||
<rom name="mp3474nll_4975" size="0x800" crc="4500c1d9" sha1="d49522dbe265e71b86488b5533d01bc9050811c9"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Homebrew -->
|
||||
|
||||
<!-- Homebrew (emulator-only, untested on real console) -->
|
||||
|
||||
<software name="bomber">
|
||||
<description>Bomber</description>
|
||||
<year>2014</year>
|
||||
<publisher>Paul Robson</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="bomber.bin" size="2048" crc="badbd0f8" sha1="3c31c24b58b1d6ac1c7313b690ec796cc5010cb7"/>
|
||||
<feature name="clock" value="500000" />
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="bomber.bin" size="0x800" crc="badbd0f8" sha1="3c31c24b58b1d6ac1c7313b690ec796cc5010cb7"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -240,11 +256,9 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<year>2013</year>
|
||||
<publisher>Paul Robson</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="demo.bin" size="2048" crc="54f1b288" sha1="9fcd930dff5f09979d3ed1278a928330b7000068"/>
|
||||
<feature name="clock" value="500000" />
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="demo.bin" size="0x800" crc="54f1b288" sha1="9fcd930dff5f09979d3ed1278a928330b7000068"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -254,11 +268,9 @@ The "rc" feature is used to indicate the source of the clock signal
|
||||
<year>2014</year>
|
||||
<publisher>Paul Robson</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="invaders.bin" size="2048" crc="d520ff6e" sha1="c979d7004fc205ee050045f13e2d6f2c31e2083e"/>
|
||||
<feature name="clock" value="500000" />
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="invaders.bin" size="0x800" crc="d520ff6e" sha1="c979d7004fc205ee050045f13e2d6f2c31e2083e"/>
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -88,7 +88,7 @@
|
||||
@MP3415 TMS1100 1978, Coleco Electronic Quarterback
|
||||
@MP3435 TMS1100 1979, Coleco Zodiac
|
||||
@MP3438A TMS1100 1979, Kenner Star Wars Electronic Battle Command
|
||||
MP3450A TMS1100 1979, MicroVision cartridge: Blockbuster
|
||||
MP3450A TMS1100 1979, MicroVision cartridge: Block Buster
|
||||
MP3454 TMS1100 1979, MicroVision cartridge: Star Trek Phaser Strike
|
||||
MP3455 TMS1100 1980, MicroVision cartridge: Pinball
|
||||
MP3457 TMS1100 1979, MicroVision cartridge: Mindbuster
|
||||
|
@ -1,18 +1,29 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Wilbert Pol
|
||||
// thanks-to:Kevin Horton, Sean Riddle
|
||||
/***************************************************************************
|
||||
|
||||
Milton Bradley MicroVision
|
||||
Milton Bradley MicroVision, handheld game console
|
||||
|
||||
To Do:
|
||||
* Add support for the paddle control
|
||||
* Finish support for i8021 based cartridges
|
||||
Hardware notes:
|
||||
- SCUS0488(Hughes HLCD0488) LCD, 16*16 screen
|
||||
- piezo, 12 buttons under membrane + analog dial
|
||||
- no CPU on console, it is on the cartridge
|
||||
|
||||
12 games were released, all of them have a TMS1100 MCU, with the exception
|
||||
of Connect Four which has a TMS1100 version and I8021 version.
|
||||
|
||||
Since the microcontrollers were on the cartridges it was possible to have
|
||||
different clocks on different games.
|
||||
The Connect Four I8021 game is clocked at around 2MHz. The TMS1100 versions
|
||||
of the games were clocked at around 500KHz, 550KHz, or 300KHz.
|
||||
|
||||
Each game came with a screen- and keypad overlay, MAME artwork is recommended.
|
||||
|
||||
TODO:
|
||||
- Add support for the paddle control
|
||||
- Finish support for i8021 based cartridges
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -76,34 +87,6 @@ private:
|
||||
DECLARE_WRITE16_MEMBER(tms1100_write_r);
|
||||
u32 tms1100_decode_micro(offs_t offset);
|
||||
|
||||
// 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;
|
||||
|
||||
required_device<dac_byte_interface> m_dac;
|
||||
optional_device<i8021_device> m_i8021;
|
||||
optional_device<tms1100_cpu_device> m_tms1100;
|
||||
@ -124,7 +107,8 @@ private:
|
||||
// generic variables
|
||||
void update_lcd();
|
||||
void lcd_write(uint8_t control, uint8_t data);
|
||||
bool m_pla;
|
||||
int m_pla;
|
||||
bool m_paddle;
|
||||
|
||||
uint8_t m_lcd_latch[8];
|
||||
uint8_t m_lcd_holding_latch[8];
|
||||
@ -510,119 +494,49 @@ u32 microvision_state::tms1100_decode_micro(offs_t offset)
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER(microvision_state::cart_load)
|
||||
{
|
||||
uint8_t *rom1 = memregion("i8021_cpu")->base();
|
||||
uint8_t *rom2 = memregion("tms1100_cpu")->base();
|
||||
uint32_t file_size = m_cart->common_get_size("rom");
|
||||
u32 size = m_cart->common_get_size("rom");
|
||||
|
||||
if ( file_size != 1024 && file_size != 2048 )
|
||||
if (size != 0x400 && size != 0x800)
|
||||
{
|
||||
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid rom file size");
|
||||
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM file size");
|
||||
return image_init_result::FAIL;
|
||||
}
|
||||
|
||||
// Set default settings
|
||||
m_pcb_type = microvision_state::PCB_TYPE_UNKNOWN;
|
||||
m_rc_type = microvision_state::RC_TYPE_UNKNOWN;
|
||||
m_pla = 0;
|
||||
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
|
||||
|
||||
// Read cartridge
|
||||
if (!image.loaded_through_softlist())
|
||||
// set default settings
|
||||
u32 clock = (size == 0x400) ? 2000000 : 500000;
|
||||
m_pla = 0;
|
||||
m_paddle = false;
|
||||
|
||||
if (image.loaded_through_softlist())
|
||||
{
|
||||
if (image.fread(rom1, file_size) != file_size)
|
||||
{
|
||||
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file");
|
||||
return image_init_result::FAIL;
|
||||
}
|
||||
// MCU clock
|
||||
u32 sclock = strtoul(image.get_feature("clock"), nullptr, 0);
|
||||
if (sclock != 0)
|
||||
clock = sclock;
|
||||
|
||||
// output PLA type (TMS1100 only)
|
||||
m_pla = strtoul(image.get_feature("pla"), nullptr, 0) ? 1 : 0;
|
||||
|
||||
// PCB has paddle circuit
|
||||
m_paddle = bool(strtoul(image.get_feature("paddle"), nullptr, 0) ? 1 : 0);
|
||||
}
|
||||
|
||||
// detect MCU on file size
|
||||
if (size == 0x400)
|
||||
{
|
||||
// I8021 MCU
|
||||
memcpy(memregion("i8021_cpu")->base(), m_cart->get_rom_base(), size);
|
||||
m_i8021->set_clock(clock);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Copy rom contents
|
||||
memcpy(rom1, image.get_software_region("rom"), file_size);
|
||||
|
||||
// Get PLA type
|
||||
const char *pla = image.get_feature("pla");
|
||||
|
||||
if (pla)
|
||||
m_pla = 1;
|
||||
|
||||
// TMS1100 MCU
|
||||
memcpy(memregion("tms1100_cpu")->base(), m_cart->get_rom_base(), size);
|
||||
m_tms1100->set_clock(clock);
|
||||
m_tms1100->set_output_pla(microvision_output_pla[m_pla]);
|
||||
|
||||
// Detect settings for PCB type
|
||||
const char *pcb = image.get_feature("pcb");
|
||||
|
||||
if (pcb)
|
||||
{
|
||||
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) && m_pcb_type == microvision_state::PCB_TYPE_UNKNOWN; i++)
|
||||
{
|
||||
if (!core_stricmp(pcb, pcb_types[i].pcb_name))
|
||||
{
|
||||
m_pcb_type = pcb_types[i].pcbtype;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Detect settings for RC types
|
||||
const char *rc = image.get_feature("rc");
|
||||
|
||||
if (rc)
|
||||
{
|
||||
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) && m_rc_type == microvision_state::RC_TYPE_UNKNOWN; i++)
|
||||
{
|
||||
if (!core_stricmp(rc, rc_types[i].rc_name))
|
||||
{
|
||||
m_rc_type = rc_types[i].rctype;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Mirror rom data to tms1100_cpu region
|
||||
memcpy(rom2, rom1, file_size);
|
||||
|
||||
// Based on file size select cpu:
|
||||
// - 1024 -> I8021
|
||||
// - 2048 -> TI TMS1100
|
||||
switch (file_size)
|
||||
{
|
||||
case 1024:
|
||||
m_cpu_type = microvision_state::CPU_TYPE_I8021;
|
||||
m_i8021->set_clock(2000000);
|
||||
break;
|
||||
|
||||
case 2048:
|
||||
m_cpu_type = microvision_state::CPU_TYPE_TMS1100;
|
||||
|
||||
switch (m_rc_type)
|
||||
{
|
||||
case RC_TYPE_100PF_21_0K:
|
||||
m_tms1100->set_clock(550000);
|
||||
break;
|
||||
|
||||
case RC_TYPE_100PF_23_2K:
|
||||
case RC_TYPE_UNKNOWN: // Default to most occurring setting
|
||||
m_tms1100->set_clock(500000);
|
||||
break;
|
||||
|
||||
case RC_TYPE_100PF_39_4K:
|
||||
m_tms1100->set_clock(300000);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return image_init_result::PASS;
|
||||
@ -700,11 +614,11 @@ void microvision_state::microvision(machine_config &config)
|
||||
|
||||
ROM_START( microvsn )
|
||||
// nothing here yet, ROM is on the cartridge
|
||||
ROM_REGION( 0x800, "i8021_cpu", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 0x400, "i8021_cpu", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 0x800, "tms1100_cpu", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 867, "tms1100_cpu:mpla", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 365, "tms1100_cpu:opla", ROMREGION_ERASE00 )
|
||||
ROM_END
|
||||
|
||||
|
||||
CONS( 1979, microvsn, 0, 0, microvision, microvision, microvision_state, empty_init, "Milton Bradley", "MicroVision", MACHINE_NOT_WORKING )
|
||||
CONS( 1979, microvsn, 0, 0, microvision, microvision, microvision_state, empty_init, "Milton Bradley", "MicroVision", MACHINE_NOT_WORKING | MACHINE_REQUIRES_ARTWORK )
|
||||
|
@ -103,41 +103,9 @@ void sag_state::machine_start()
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
Cartridge Init
|
||||
******************************************************************************/
|
||||
|
||||
// main unit
|
||||
|
||||
void sag_state::update_display()
|
||||
{
|
||||
// grid 0-7 are the 'pixels'
|
||||
m_display->matrix_partial(0, 8, m_grid, m_plate, false);
|
||||
|
||||
// grid 8-13 are 7segs
|
||||
u8 seg = bitswap<7>(m_plate,4,5,6,7,8,9,10);
|
||||
m_display->matrix_partial(8, 6, m_grid >> 8, seg);
|
||||
}
|
||||
|
||||
u8 sag_state::input_r()
|
||||
{
|
||||
u8 data = 0;
|
||||
|
||||
// grid 1-6 double as input mux
|
||||
for (int i = 0; i < 6; i++)
|
||||
if (BIT(m_grid, i + 1))
|
||||
data |= m_inputs[i]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void sag_state::speaker_w(int state)
|
||||
{
|
||||
m_speaker->level_w(state);
|
||||
}
|
||||
|
||||
|
||||
// cartridge loading
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER(sag_state::cart_load)
|
||||
{
|
||||
u32 size = m_cart->common_get_size("rom");
|
||||
@ -151,6 +119,7 @@ DEVICE_IMAGE_LOAD_MEMBER(sag_state::cart_load)
|
||||
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
|
||||
|
||||
// detect MCU on file size
|
||||
if (size == 0x1000)
|
||||
{
|
||||
// TMS1670 MCU
|
||||
@ -200,6 +169,41 @@ DEVICE_IMAGE_LOAD_MEMBER(sag_state::cart_load)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
******************************************************************************/
|
||||
|
||||
// main unit
|
||||
|
||||
void sag_state::update_display()
|
||||
{
|
||||
// grid 0-7 are the 'pixels'
|
||||
m_display->matrix_partial(0, 8, m_grid, m_plate, false);
|
||||
|
||||
// grid 8-13 are 7segs
|
||||
u8 seg = bitswap<7>(m_plate,4,5,6,7,8,9,10);
|
||||
m_display->matrix_partial(8, 6, m_grid >> 8, seg);
|
||||
}
|
||||
|
||||
u8 sag_state::input_r()
|
||||
{
|
||||
u8 data = 0;
|
||||
|
||||
// grid 1-6 double as input mux
|
||||
for (int i = 0; i < 6; i++)
|
||||
if (BIT(m_grid, i + 1))
|
||||
data |= m_inputs[i]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void sag_state::speaker_w(int state)
|
||||
{
|
||||
m_speaker->level_w(state);
|
||||
}
|
||||
|
||||
|
||||
// cartridge type 1: HD38800
|
||||
|
||||
WRITE8_MEMBER(sag_state::hmcs40_write_r)
|
||||
|
Loading…
Reference in New Issue
Block a user