Previous 15994 Revisions Next

r14743 Sunday 11th March, 2012 at 13:36:47 UTC by Miodrag Milanović
Sync with MAME r15674 (no whatsnew)
[hash]neogeo.xml
[src/emu/cpu]cpu.mak
[src/emu/cpu/tms57002]57002dsm.c tms57002.c tms57002.h tms57kdec.c tmsinstr.lst tmsmake.c
[src/emu/machine]ncr539x.h
[src/emu/sound]votrax.c votrax.h
[src/mame]mame.lst
[src/mame/drivers]8080bw.c bloodbro.c cninja.c cps1.c darkseal.c dec8.c decocass.c galaxian.c galdrvr.c konamigx.c m90.c namcops2.c namcos22.c naomi.c neodrvr.c neogeo.c popobear.c segas16b.c seibuspi.c seta2.c taitotz.c tnzs.c
[src/mame/includes]dec8.h namcos22.h
[src/mame/machine]decocass.c decocass.h n64.c
[src/mame/video]cps1.c

hash/neogeo.xml
r14742r14743
19791979        <rom loadflag="load16_word_swap" name="040-p1.p1" offset="0x000000" size="0x100000" crc="6dde02c2" sha1="e432e63feb88c71629ec96aa84650dcfe356a551" />
19801980      </dataarea>
19811981      <dataarea name="fixed" size="0x040000">
1982        <rom offset="0x000000" size="0x020000" name="040-s1.s1" crc="cd9802a3" sha1="f685d4638f4f68e7e3f101c0c39128454536721b" />
1982        <rom offset="0x000000" size="0x020000" name="040-s1.s1" crc="cd9802a3" sha1="f685d4638f4f68e7e3f101c0c39128454536721b" />        <!-- TC531000 -->
19831983      </dataarea>
19841984      <dataarea name="audiocpu" size="0x020000">
19851985        <rom offset="0x000000" size="0x020000" name="040-m1.m1" crc="d4de4bca" sha1="ecf604d06f01d40b04e285facef66a6ae2d35661" />
r14742r14743
34963496      <!-- MVS ONLY RELEASE -->
34973497      <feature name="crypt" value="zupapa_prot" />
34983498      <dataarea name="maincpu" size="0x100000">
3499        <rom loadflag="load16_word_swap" name="070-p1.p1" offset="0x000000" size="0x100000" crc="5a96203e" sha1="49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1" />
3499        <rom loadflag="load16_word_swap" name="070-p1.p1" offset="0x000000" size="0x100000" crc="5a96203e" sha1="49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1" />        <!-- TC5316200 -->
35003500      </dataarea>
35013501      <dataarea name="fixed" size="0x20000">
35023502        <!-- The Encrypted Boards do _not_ have an s1 rom, data for it comes from the Cx ROMs -->
35033503        <rom value="0" size="0x20000" offset="0x000000" loadflag="fill" />
35043504      </dataarea>
35053505      <dataarea name="audiocpu" size="0x020000">
3506        <rom offset="0x000000" size="0x020000" name="070-m1.m1" crc="5a3b3191" sha1="fa9a9930e18c64e598841fb344c4471d3d2c1964" />
3506        <rom offset="0x000000" size="0x020000" name="070-epr.m1" crc="5a3b3191" sha1="fa9a9930e18c64e598841fb344c4471d3d2c1964" />        <!-- M27C1001 -->
3507        <!-- M1 on eprom, correct chip label unknown -->
35073508      </dataarea>
35083509      <dataarea name="ymsnd" size="0x200000">
3509        <rom name="070-v1.v1" offset="0x000000" size="0x200000" crc="d3a7e1ff" sha1="4a4a227e10f4af58168f6c26011ea1d414253f92" />
3510        <rom name="070-v1.v1" offset="0x000000" size="0x200000" crc="d3a7e1ff" sha1="4a4a227e10f4af58168f6c26011ea1d414253f92" />        <!-- TC5316200 -->
35103511      </dataarea>
35113512      <dataarea name="sprites" size="0x1000000">
35123513        <!-- Encrypted -->
3513        <rom loadflag="load16_byte" name="070-c1.c1" offset="0x000000" size="0x800000" crc="f8ad02d8" sha1="9be54532332a8e963ec35ff1e518947bb11ebade" />        <!-- Plane 0,1 -->
3514        <rom loadflag="load16_byte" name="070-c2.c2" offset="0x000001" size="0x800000" crc="70156dde" sha1="06286bf043d50199b47df9a76ca91f39cb28cb90" />        <!-- Plane 2,3 -->
3514        <rom loadflag="load16_byte" name="070-c1.c1" offset="0x000000" size="0x800000" crc="f8ad02d8" sha1="9be54532332a8e963ec35ff1e518947bb11ebade" />        <!-- Plane 0,1 -->        <!-- TC5364205 -->
3515        <rom loadflag="load16_byte" name="070-c2.c2" offset="0x000001" size="0x800000" crc="70156dde" sha1="06286bf043d50199b47df9a76ca91f39cb28cb90" />        <!-- Plane 2,3 -->        <!-- TC5364205 -->
35153516      </dataarea>
35163517    </part>
35173518  </software>
r14742r14743
47974798    <sharedfeat name="aescompatible" value="yes" />
47984799    <part name="cart" interface="neo_cart">
47994800      <dataarea name="maincpu" size="0x200000">
4800        <rom loadflag="load16_word_swap" name="201-p1.p1" offset="0x100000" size="0x100000" crc="08d8daa5" sha1="b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38" />
4801        <rom loadflag="load16_word_swap" name="201-p1.p1" offset="0x100000" size="0x100000" crc="08d8daa5" sha1="b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38" />        <!-- TC5316200 -->
48014802        <rom size="0x100000" offset="0x000000" loadflag="continue" />
48024803      </dataarea>
48034804      <dataarea name="fixed" size="0x040000">
4804        <rom offset="0x000000" size="0x020000" name="201-s1.s1" crc="2f55958d" sha1="550b53628daec9f1e1e11a398854092d90f9505a" />
4805        <rom offset="0x000000" size="0x020000" name="201-s1.s1" crc="2f55958d" sha1="550b53628daec9f1e1e11a398854092d90f9505a" />        <!-- TC531000 -->
48054806      </dataarea>
48064807      <dataarea name="audiocpu" size="0x020000">
4807        <rom offset="0x000000" size="0x020000" name="201-m1.m1" crc="c28b3253" sha1="fd75bd15aed30266a8b3775f276f997af57d1c06" />
4808        <rom offset="0x000000" size="0x020000" name="201-m1.m1" crc="c28b3253" sha1="fd75bd15aed30266a8b3775f276f997af57d1c06" />        <!-- TC531001 -->
48084809      </dataarea>
48094810      <dataarea name="ymsnd" size="0x800000">
4810        <rom name="201-v1.v1" offset="0x000000" size="0x400000" crc="23d22ed1" sha1="cd076928468ad6bcc5f19f88cb843ecb5e660681" />
4811        <rom name="201-v2.v2" offset="0x400000" size="0x400000" crc="472cf9db" sha1="5f79ea9286d22ed208128f9c31ca75552ce08b57" />
4811        <rom name="201-v1.v1" offset="0x000000" size="0x400000" crc="23d22ed1" sha1="cd076928468ad6bcc5f19f88cb843ecb5e660681" />        <!-- TC5332204 -->
4812        <rom name="201-v2.v2" offset="0x400000" size="0x400000" crc="472cf9db" sha1="5f79ea9286d22ed208128f9c31ca75552ce08b57" />        <!-- TC5332204 -->
48124813      </dataarea>
48134814      <dataarea name="sprites" size="0x1000000">
4814        <rom loadflag="load16_byte" name="201-c1.c1" offset="0x000000" size="0x400000" crc="72813676" sha1="7b045d1a48980cb1a140699011cb1a3d4acdc4d1" />        <!-- Plane 0,1 -->
4815        <rom loadflag="load16_byte" name="201-c2.c2" offset="0x000001" size="0x400000" crc="96f62574" sha1="cb7254b885989223bba597b8ff0972dfa5957816" />        <!-- Plane 2,3 -->
4816        <rom loadflag="load16_byte" name="201-c3.c3" offset="0x800000" size="0x400000" crc="5121456a" sha1="0a7a27d603d1bb2520b5570ebf5b34a106e255a6" />        <!-- Plane 0,1 -->
4817        <rom loadflag="load16_byte" name="201-c4.c4" offset="0x800001" size="0x400000" crc="f4ad59a3" sha1="4e94fda8ee63abf0f92afe08060a488546e5c280" />        <!-- Plane 2,3 -->
4815        <rom loadflag="load16_byte" name="201-c1.c1" offset="0x000000" size="0x400000" crc="72813676" sha1="7b045d1a48980cb1a140699011cb1a3d4acdc4d1" />        <!-- Plane 0,1 -->        <!-- TC5332205 -->
4816        <rom loadflag="load16_byte" name="201-c2.c2" offset="0x000001" size="0x400000" crc="96f62574" sha1="cb7254b885989223bba597b8ff0972dfa5957816" />        <!-- Plane 2,3 -->        <!-- TC5332205 -->
4817        <rom loadflag="load16_byte" name="201-c3.c3" offset="0x800000" size="0x400000" crc="5121456a" sha1="0a7a27d603d1bb2520b5570ebf5b34a106e255a6" />        <!-- Plane 0,1 -->        <!-- TC5332205 -->
4818        <rom loadflag="load16_byte" name="201-c4.c4" offset="0x800001" size="0x400000" crc="f4ad59a3" sha1="4e94fda8ee63abf0f92afe08060a488546e5c280" />        <!-- Plane 2,3 -->        <!-- TC5332205 -->
48184819      </dataarea>
48194820    </part>
48204821  </software>
r14742r14743
51195120        <rom size="0x100000" offset="0x000000" loadflag="continue" />
51205121      </dataarea>
51215122      <dataarea name="fixed" size="0x040000">
5122        <rom offset="0x000000" size="0x020000" name="213-s1.s1" crc="b76b61bc" sha1="5fdb407d16ab9e33c4f26ee09ff70891ae1d2bd0" />
5123        <rom offset="0x000000" size="0x020000" name="213-s1.s1" crc="b76b61bc" sha1="5fdb407d16ab9e33c4f26ee09ff70891ae1d2bd0" />        <!-- TC531000 -->
51235124      </dataarea>
51245125      <dataarea name="audiocpu" size="0x020000">
51255126        <rom offset="0x000000" size="0x020000" name="213-m1.m1" crc="200045f1" sha1="7a6cd1c8d4447ea260d7ff4520c676b8d685f2e4" />
r14742r14743
69696970    <part name="cart" interface="neo_cart">
69706971      <!-- MVS ONLY RELEASE -->
69716972      <dataarea name="maincpu" size="0x100000">
6972        <rom loadflag="load16_word_swap" name="248-p1.p1" offset="0x000000" size="0x100000" crc="9d6c0754" sha1="95c70c2d51fc4de01e768e03cc800a850aaad5dc" />
6973        <rom loadflag="load16_word_swap" name="248-p1.p1" offset="0x000000" size="0x100000" crc="9d6c0754" sha1="95c70c2d51fc4de01e768e03cc800a850aaad5dc" />        <!-- TC538200 -->
69736974      </dataarea>
69746975      <dataarea name="fixed" size="0x040000">
6975        <rom offset="0x000000" size="0x020000" name="248-s1.s1" crc="0a3fee41" sha1="0ab2120e462086be942efcf6ffb37f58ea966ca3" />
6976        <rom offset="0x000000" size="0x020000" name="248-s1.s1" crc="0a3fee41" sha1="0ab2120e462086be942efcf6ffb37f58ea966ca3" />        <!-- TC531000DP -->
69766977      </dataarea>
69776978      <dataarea name="audiocpu" size="0x020000">
6978        <rom offset="0x000000" size="0x020000" name="248-m1.m1" crc="883097a9" sha1="677bf9684c0c7977a9a3f0c1288e430040a53b49" />
6979        <rom offset="0x000000" size="0x020000" name="248-m1.m1" crc="883097a9" sha1="677bf9684c0c7977a9a3f0c1288e430040a53b49" />        <!-- TC531001 -->
69796980      </dataarea>
69806981      <dataarea name="ymsnd" size="0x800000">
6981        <rom name="248-v1.v1" offset="0x000000" size="0x400000" crc="57fde1fa" sha1="af39bc141fc35b78dcacfd42b3abb29d7e5c2c89" />
6982        <rom name="248-v2.v2" offset="0x400000" size="0x400000" crc="4b966ef3" sha1="083c0e9fd7b8e506087648cdd8ec4206103984cd" />
6982        <rom name="248-v1.v1" offset="0x000000" size="0x400000" crc="57fde1fa" sha1="af39bc141fc35b78dcacfd42b3abb29d7e5c2c89" />        <!-- TC5332204 -->
6983        <rom name="248-v2.v2" offset="0x400000" size="0x400000" crc="4b966ef3" sha1="083c0e9fd7b8e506087648cdd8ec4206103984cd" />        <!-- TC5332204 -->
69836984      </dataarea>
69846985      <dataarea name="sprites" size="0xa00000">
6985        <rom loadflag="load16_byte" name="248-c1.c1" offset="0x000000" size="0x400000" crc="d9115327" sha1="a49aa836a902326cfe785428e1699fefcf8566d4" />        <!-- Plane 0,1 -->
6986        <rom loadflag="load16_byte" name="248-c2.c2" offset="0x000001" size="0x400000" crc="77f9fdac" sha1="4642d71d32b6a05dc8bfa0f95c936a77c7cef05e" />        <!-- Plane 2,3 -->
6987        <rom loadflag="load16_byte" name="248-c3.c3" offset="0x800000" size="0x100000" crc="8890bf7c" sha1="a52f6bafd60e72003bfe38c80c1dde24b4983b2a" />        <!-- Plane 0,1 -->
6988        <rom loadflag="load16_byte" name="248-c4.c4" offset="0x800001" size="0x100000" crc="8efead3f" sha1="f577d2f7c6f850b3d100c36947ad15e33dfa0bed" />        <!-- Plane 2,3 -->
6986        <rom loadflag="load16_byte" name="248-c1.c1" offset="0x000000" size="0x400000" crc="d9115327" sha1="a49aa836a902326cfe785428e1699fefcf8566d4" />        <!-- Plane 0,1 -->        <!-- TC5332205 -->
6987        <rom loadflag="load16_byte" name="248-c2.c2" offset="0x000001" size="0x400000" crc="77f9fdac" sha1="4642d71d32b6a05dc8bfa0f95c936a77c7cef05e" />        <!-- Plane 2,3 -->        <!-- TC5332205 -->
6988        <rom loadflag="load16_byte" name="248-c3.c3" offset="0x800000" size="0x100000" crc="8890bf7c" sha1="a52f6bafd60e72003bfe38c80c1dde24b4983b2a" />        <!-- Plane 0,1 -->        <!-- TC538200 -->
6989        <rom loadflag="load16_byte" name="248-c4.c4" offset="0x800001" size="0x100000" crc="8efead3f" sha1="f577d2f7c6f850b3d100c36947ad15e33dfa0bed" />        <!-- Plane 2,3 -->        <!-- TC538200 -->
69896990      </dataarea>
69906991    </part>
69916992  </software>
r14742r14743
70087009    <part name="cart" interface="neo_cart">
70097010      <!-- MVS ONLY RELEASE -->
70107011      <dataarea name="maincpu" size="0x200000">
7011        <rom loadflag="load16_word_swap" name="249-p1.p1" offset="0x100000" size="0x100000" crc="c9386118" sha1="5554662c7bc8605889cac4a67fee05bbb4eb786f" />
7012        <rom loadflag="load16_word_swap" name="249-p1.p1" offset="0x100000" size="0x100000" crc="c9386118" sha1="5554662c7bc8605889cac4a67fee05bbb4eb786f" />        <!-- TC5316200 -->
70127013        <rom size="0x100000" offset="0x000000" loadflag="continue" />
70137014      </dataarea>
70147015      <dataarea name="fixed" size="0x040000">
7015        <rom offset="0x000000" size="0x020000" name="249-s1.s1" crc="dc9eb372" sha1="b8aa142243ba303799554479bfc88eb49260f3b1" />
7016        <rom offset="0x000000" size="0x020000" name="249-s1.s1" crc="dc9eb372" sha1="b8aa142243ba303799554479bfc88eb49260f3b1" />        <!-- TC531000DP -->
70167017      </dataarea>
70177018      <dataarea name="audiocpu" size="0x020000">
7018        <rom offset="0x000000" size="0x020000" name="249-m1.m1" crc="80328a47" sha1="34b6b1a81eab1cf38834b2eea55454ce1b6100e2" />
7019        <rom offset="0x000000" size="0x020000" name="249-m1.m1" crc="80328a47" sha1="34b6b1a81eab1cf38834b2eea55454ce1b6100e2" />        <!-- TC531001 -->
70197020      </dataarea>
70207021      <dataarea name="ymsnd" size="0x500000">
7021        <rom name="249-v1.v1" offset="0x000000" size="0x400000" crc="de7c8f27" sha1="3681a68a702ab5da8f509b8301d6cada75959332" />
7022        <rom name="249-v2.v2" offset="0x400000" size="0x100000" crc="c8e40119" sha1="738f525c381ed68c0b8a89318a3e4d0089473c45" />
7022        <rom name="249-v1.v1" offset="0x000000" size="0x400000" crc="de7c8f27" sha1="3681a68a702ab5da8f509b8301d6cada75959332" />        <!-- TC5332204 -->
7023        <rom name="249-v2.v2" offset="0x400000" size="0x100000" crc="c8e40119" sha1="738f525c381ed68c0b8a89318a3e4d0089473c45" />        <!-- TC538200 -->
70237024      </dataarea>
70247025      <dataarea name="sprites" size="0x800000">
7025        <rom loadflag="load16_byte" name="249-c1.c1" offset="0x000000" size="0x400000" crc="041fb8ee" sha1="dacc84d713d76818d89a26358374afaa22fa82a2" />        <!-- Plane 0,1 -->
7026        <rom loadflag="load16_byte" name="249-c2.c2" offset="0x000001" size="0x400000" crc="74f3cdf4" sha1="55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1" />        <!-- Plane 2,3 -->
7026        <rom loadflag="load16_byte" name="249-c1.c1" offset="0x000000" size="0x400000" crc="041fb8ee" sha1="dacc84d713d76818d89a26358374afaa22fa82a2" />        <!-- Plane 0,1 -->        <!-- TC5332205 -->
7027        <rom loadflag="load16_byte" name="249-c2.c2" offset="0x000001" size="0x400000" crc="74f3cdf4" sha1="55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1" />        <!-- Plane 2,3 -->        <!-- TC5332205 -->
70277028      </dataarea>
70287029    </part>
70297030  </software>
r14742r14743
87628763
87638764
87648765  <!--***************************************
8765 ID-0008 (official?)
8766 B-J-02
87668767 . ???-????
87678768 MVS PROGV (2000.11.17) / NEO-MVS CHAFIO (1999.6.14)
87688769***************************************-->
r14742r14743
87708771  <!-- jockeygp requires very specific hardware and is loaded in neodrvr.c -->
87718772
87728773  <!--***************************************
8773 ID-03E7 (incorrect ID-code)
8774 B-V-01
87748775 . ???-????
87758776 MVS PROGV (2000.11.17) / MVS CHAV (2000.10.26)
87768777***************************************-->
src/mame/mame.lst
r14742r14743
3939******************************************************************************/
4040
4141
42
43
4442// "Pacman hardware" games
4543puckman         // (c) 1980 Namco
4644puckmana      // (c) 1980 Namco
r14742r14743
229227eagle2         // [1980] Centuri
230228eagle3         // [1980] Centuri
231229spctbird      // (c) Fortrek
230fantastc      // (c) Taito (Brazil)
232231skybase         // (c) 1982 Omori Electric Co., Ltd.
233232checkman      // (c) 1982 Zilec-Zenitone
234233checkmanj      // (c) 1982 Jaleco (Zenitone/Zilec in ROM CM4, and the programmer names)
r14742r14743
10141013tekken4
10151014tekken4a
10161015tekken4b
1016tekken4c
10171017timecrs3
10181018zgundm
10191019fghtjam
r14742r14743
10211021zgundmdx
10221022gundzaft
10231023soulclb3
1024soulclb3a
10241025
10251026// Namco System 256
10261027sys256
r14742r14743
16871688hasamu         // (c) 1991 Irem (Japan)
16881689dynablst      // (c) 1991 Irem (World)
16891690dynablstb      // bootleg
1691dynablstb2      // bootleg (alt)
16901692bombrman      // (c) 1991 Irem (Japan)
16911693atompunk      // (c) 1991 Irem America (licensed from Hudson Soft)
16921694// M97
r14742r14743
20342036arknoid2      // B08 (c) 1987 Taito Corporation Japan (World)
20352037arknoid2u      // B08 (c) 1987 Taito America Corporation + Romstar license (US)
20362038arknoid2j      // B08 (c) 1987 Taito Corporation (Japan)
2039arknoid2b      // B08 (c) 1987 (bootleg)
20372040drtoppel      // B19 (c) 1987 Taito Corporation Japan (World)
20382041drtoppelu      // B19 (c) 1987 Taito Corporation (US)
20392042drtoppelj      // B19 (c) 1987 Taito Corporation (Japan)
r14742r14743
23502353// Taito Type-Zero System
23512354taitotz
23522355batlgear      // E68 (c) 1999 Taito
2356pwrshovl        // E74 (c) 1999 Taito
23532357landhigh      // E82 (c) 1999 Taito
2354batlgr2         // E87 (c) 2000 Taito
2358batlgr2         // E87 (c) 2000 Taito (2.04J)
2359batlgr2a         // E87 (c) 2000 Taito (2.01J)
23552360
23562361// Toaplan games
23572362perfrman      // (c) 1985 Data East Corporation (Japan)
r14742r14743
28682873sf2ceua         // 13/03/1992 (c) 1992 (USA)
28692874sf2ceub         // 13/05/1992 (c) 1992 (USA)
28702875sf2ceuc         // 03/08/1992 (c) 1992 (USA)
2871sf2cej         // 13/05/1992 (c) 1992 (Japan)
28722876sf2ceja         // 22/03/1992 (c) 1992 (Japan)
2877sf2cejb         // 13/05/1992 (c) 1992 (Japan)
2878sf2cejc         // 03/08/1992 (c) 1992 (Japan)
28732879sf2rb         // hack
28742880sf2rb2         // hack
28752881sf2rb3         // hack
r14742r14743
49144920ggxx         // 2002.05 Guilty Gear XX
49154921mok            // 2002.05 The Maze of the Kings
49164922chocomk         // 2002.06 Musapey's Choco Marker (Rev A)
4917            // 2002.07 Mazan : Flash of the Blade
4923mazan         // 2002.07 Mazan : Flash of the Blade
49184924            // 2002.09 Yonin Uchi Mahjong MJ
49194925azumanga      // 2002.12 Azumanga Daiou Puzzle Bobble
49204926moeru         // 2002.12 Moeru Casinyo
r14742r14743
52185224cgraplop2      // 28
52195225clapapa         // 29 1982.11 La-Pa-Pa
52205226clapapa2      // 29         Rootin' Tootin'  // this one doesn't display lapapa anywhere
5221            // 30 1983.03 Skater
5227cskater         // 30 1983.03 Skater
52225228cprobowl      // 31 1983.03 Pro Bowling
52235229cnightst      // 32 1983.04 Night Star
52245230cnightst2      // 32
52255231cpsoccer      // 33 1982.08 Pro Soccer
52265232cpsoccerj      // 33 1982.08 Pro Soccer (Japan)
5227            // 34 1983.09 Super Doubles Tennis
5233csdtenis      // 34 1983.09 Super Doubles Tennis
52285234cflyball      // 35 1983.?? Flying Ball/Bampoline
52295235            // 36 1984.04 Genesis/Boomer Rang'r
52305236czeroize      // 37 1983.10 Zeroize
r14742r14743
52335239cppicf         // 39 1984.02 Peter Pepper's Ice Cream Factory
52345240cppicf2         // 39
52355241cfghtice      // 40 1984.04 Fighting Ice Hockey
5236cgsumo         // 41 1984.05 Oozumou/The Grand Sumo
5242coozumou      // 41 1984.05 Oozumou/The Grand Sumo
52375243            // 42 1984.08 Hellow Gateball // not a typo, this is official spelling
52385244            // 43 1984.08 Yellow Cab
52395245cbdash         // 44 1985.08 Boulder Dash
r14742r14743
54205426cninja         // MAG (c) 1991 Data East Corporation (World)
54215427cninja1         // MAG (c) 1991 Data East Corporation (World)
54225428cninjau         // MAG (c) 1991 Data East Corporation (US)
5429cninjaa         // MAG (c) 1991 Data East Corporation (US)
54235430joemac         // MAG (c) 1991 Data East Corporation (Japan)
54245431cninjabl      // bootleg
54255432stoneage      // bootleg
r14742r14743
77447751rfjeta         // (c) 1998 Seibu Kaihatsu (Dream Island license)
77457752rfjetj         // (c) 1998 Seibu Kaihatsu
77467753rfjets         // (c) 1998 Seibu Kaihatsu
7754rfjett         // (c) 1998 Seibu Kaihatsu (Taiwan license)
77477755rfjet2kc      // (c) 2000 Seibu Kaihatsu
77487756
77497757ejsakura      // (c) 1999 Seibu Kaihatsu
r14742r14743
82858293deerhunta      // (c) 2000 Sammy USA Corporation
82868294deerhuntb      // (c) 2000 Sammy USA Corporation
82878295deerhuntc      // (c) 2000 Sammy USA Corporation
8296deerhuntd      // (c) 2000 Sammy USA Corporation
82888297turkhunt      // (c) 2001 Sammy USA Corporation
82898298wschamp         // (c) 2001 Sammy USA Corporation
82908299wschampa      // (c) 2001 Sammy USA Corporation
src/mame/machine/decocass.c
r14742r14743
4040   TYPE3_SWAP_25,
4141   TYPE3_SWAP_34_0,
4242   TYPE3_SWAP_34_7,
43   TYPE3_SWAP_45,
4344   TYPE3_SWAP_23_56,
4445   TYPE3_SWAP_56,
4546   TYPE3_SWAP_67
r14742r14743
260261/***************************************************************************
261262 *
262263 *  TYPE1 DONGLE (DE-0061)
264 *  - Terranian
265 *  - Super Astro Fighter
263266 *  - Lock 'n Chase
267 *  - Pro Golf
268 *  - Lucky Poker
264269 *  - Treasure Island
265 *  - Super Astro Fighter
266 *  - Lucky Poker
267 *  - Terranian
268 *  - Explorer
269 *  - Pro Golf
270270 *
271271 * Latch bits 2 and 6, pass bit 3, invert bit 2.
272272 * Lookup PROM DE-0061 using bits 0, 1, 4, 5, and 7 as the
r14742r14743
671671/***************************************************************************
672672 *
673673 *  TYPE2 DONGLE (CS82-007)
674 *  - Disco No 1
675 *  - Tornado
674676 *  - Mission X
675 *  - Disco No 1
676677 *  - Pro Tennis
677 *  - Tornado
678678 *
679679 ***************************************************************************/
680680static READ8_HANDLER( decocass_type2_r )
r14742r14743
746746/***************************************************************************
747747 *
748748 *  TYPE3 DONGLE
749 *  - Burger Time
749750 *  - Bump 'n Jump
750751 *  - Burnin' Rubber
751 *  - Burger Time
752752 *  - Graplop
753753 *  - Cluster Buster
754754 *  - LaPaPa
755 *  - Fighting Ice Hockey
755 *  - Skater
756756 *  - Pro Bowling
757757 *  - Night Star
758758 *  - Pro Soccer
759 *  - Super Doubles Tennis
759760 *  - Peter Pepper's Ice Cream Factory
761 *  - Fighting Ice Hockey
760762 *
761763 ***************************************************************************/
762764static READ8_HANDLER( decocass_type3_r )
r14742r14743
879881                  (BIT(save, 6) << 6) |
880882                  (state->m_type3_d0_latch << 7);
881883               break;
884            case TYPE3_SWAP_45:
885               data =
886                  state->m_type3_d0_latch |
887                  (BIT(save, 1) << 1) |
888                  (BIT(save, 2) << 2) |
889                  (BIT(save, 3) << 3) |
890                  (BIT(save, 5) << 4) |
891                  (BIT(save, 4) << 5) |
892                  (BIT(save, 6) << 6) |
893                  (BIT(save, 7) << 7);
894               break;
882895            case TYPE3_SWAP_23_56:
883896               data =
884897                  (state->m_type3_d0_latch << 0) |
r14742r14743
979992 *
980993 *  TYPE4 DONGLE
981994 *  - Scrum Try
995 *  - Oozumou/The Grand Sumo
982996 *  Contains a 32K (EP)ROM that can be read from any byte
983997 *  boundary sequentially. The EPROM is enable after writing
984998 *  1100xxxx to E5x1 once. Then an address is written LSB
r14742r14743
10651079
10661080/***************************************************************************
10671081 *
1068 *  TYPE5 DONGLE
1082 *  TYPE4 DONGLE
10691083 *  - Boulder Dash
10701084 *  Actually a NOP dongle returning 0x55 after triggering a latch
10711085 *  by writing 1100xxxx to E5x1
r14742r14743
14181432   state->m_dongle_r = decocass_type1_latch_27_pass_3_inv_2_r;
14191433}
14201434
1421MACHINE_RESET( clocknch )
1435MACHINE_RESET( cterrani )
14221436{
14231437   decocass_state *state = machine.driver_data<decocass_state>();
14241438   decocass_reset_common(machine);
1425   LOG(0,("dongle type #1 (DE-0061 flip 2-3)\n"));
1439   LOG(0,("dongle type #1 (DE-0061 straight)\n"));
14261440   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1427   state->m_type1_inmap = MAKE_MAP(0,1,3,2,4,5,6,7);
1428   state->m_type1_outmap = MAKE_MAP(0,1,3,2,4,5,6,7);
1441   state->m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7);
1442   state->m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7);
14291443}
14301444
1431MACHINE_RESET( ctisland )
1445MACHINE_RESET( castfant )
14321446{
14331447   decocass_state *state = machine.driver_data<decocass_state>();
14341448   decocass_reset_common(machine);
1435   LOG(0,("dongle type #1 (DE-0061 flip 0-2)\n"));
1436   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1437   state->m_type1_inmap = MAKE_MAP(2,1,0,3,4,5,6,7);
1438   state->m_type1_outmap = MAKE_MAP(2,1,0,3,4,5,6,7);
1449   LOG(0,("dongle type #1 (DE-0061)\n"));
1450   state->m_dongle_r = decocass_type1_latch_16_pass_3_inv_1_r;
14391451}
14401452
14411453MACHINE_RESET( csuperas )
r14742r14743
14481460   state->m_type1_outmap = MAKE_MAP(0,1,2,3,5,4,6,7);
14491461}
14501462
1451MACHINE_RESET( castfant )
1463MACHINE_RESET( clocknch )
14521464{
14531465   decocass_state *state = machine.driver_data<decocass_state>();
14541466   decocass_reset_common(machine);
1455   LOG(0,("dongle type #1 (DE-0061)\n"));
1456   state->m_dongle_r = decocass_type1_latch_16_pass_3_inv_1_r;
1467   LOG(0,("dongle type #1 (DE-0061 flip 2-3)\n"));
1468   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1469   state->m_type1_inmap = MAKE_MAP(0,1,3,2,4,5,6,7);
1470   state->m_type1_outmap = MAKE_MAP(0,1,3,2,4,5,6,7);
14571471}
14581472
1473MACHINE_RESET( cprogolf )
1474{
1475   decocass_state *state = machine.driver_data<decocass_state>();
1476   decocass_reset_common(machine);
1477   LOG(0,("dongle type #1 (DE-0061 flip 0-1)\n"));
1478   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1479   state->m_type1_inmap = MAKE_MAP(1,0,2,3,4,5,6,7);
1480   state->m_type1_outmap = MAKE_MAP(1,0,2,3,4,5,6,7);
1481}
1482
14591483MACHINE_RESET( cluckypo )
14601484{
14611485   decocass_state *state = machine.driver_data<decocass_state>();
r14742r14743
14661490   state->m_type1_outmap = MAKE_MAP(0,3,2,1,4,5,6,7);
14671491}
14681492
1469MACHINE_RESET( cterrani )
1493MACHINE_RESET( ctisland )
14701494{
14711495   decocass_state *state = machine.driver_data<decocass_state>();
14721496   decocass_reset_common(machine);
1473   LOG(0,("dongle type #1 (DE-0061 straight)\n"));
1497   LOG(0,("dongle type #1 (DE-0061 flip 0-2)\n"));
14741498   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1475   state->m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7);
1476   state->m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7);
1499   state->m_type1_inmap = MAKE_MAP(2,1,0,3,4,5,6,7);
1500   state->m_type1_outmap = MAKE_MAP(2,1,0,3,4,5,6,7);
14771501}
14781502
14791503MACHINE_RESET( cexplore )
r14742r14743
14841508   state->m_dongle_r = decocass_type1_latch_26_pass_5_inv_2_r;
14851509}
14861510
1487MACHINE_RESET( cprogolf )
1511MACHINE_RESET( cdiscon1 )
14881512{
14891513   decocass_state *state = machine.driver_data<decocass_state>();
14901514   decocass_reset_common(machine);
1491   LOG(0,("dongle type #1 (DE-0061 flip 0-1)\n"));
1492   state->m_dongle_r = decocass_type1_latch_26_pass_3_inv_2_r;
1493   state->m_type1_inmap = MAKE_MAP(1,0,2,3,4,5,6,7);
1494   state->m_type1_outmap = MAKE_MAP(1,0,2,3,4,5,6,7);
1495}
1496
1497MACHINE_RESET( cmissnx )
1498{
1499   decocass_state *state = machine.driver_data<decocass_state>();
1500   decocass_reset_common(machine);
15011515   LOG(0,("dongle type #2 (CS82-007)\n"));
15021516   state->m_dongle_r = decocass_type2_r;
15031517   state->m_dongle_w = decocass_type2_w;
15041518}
15051519
1506MACHINE_RESET( cdiscon1 )
1520MACHINE_RESET( ctornado )
15071521{
15081522   decocass_state *state = machine.driver_data<decocass_state>();
15091523   decocass_reset_common(machine);
r14742r14743
15121526   state->m_dongle_w = decocass_type2_w;
15131527}
15141528
1515MACHINE_RESET( cptennis )
1529MACHINE_RESET( cmissnx )
15161530{
15171531   decocass_state *state = machine.driver_data<decocass_state>();
15181532   decocass_reset_common(machine);
r14742r14743
15211535   state->m_dongle_w = decocass_type2_w;
15221536}
15231537
1524MACHINE_RESET( ctornado )
1538MACHINE_RESET( cptennis )
15251539{
15261540   decocass_state *state = machine.driver_data<decocass_state>();
15271541   decocass_reset_common(machine);
r14742r14743
15301544   state->m_dongle_w = decocass_type2_w;
15311545}
15321546
1533MACHINE_RESET( cbnj )
1547MACHINE_RESET( cbtime )
15341548{
15351549   decocass_state *state = machine.driver_data<decocass_state>();
15361550   decocass_reset_common(machine);
15371551   LOG(0,("dongle type #3 (PAL)\n"));
15381552   state->m_dongle_r = decocass_type3_r;
15391553   state->m_dongle_w = decocass_type3_w;
1540   state->m_type3_swap = TYPE3_SWAP_67;
1554   state->m_type3_swap = TYPE3_SWAP_12;
15411555}
15421556
15431557MACHINE_RESET( cburnrub )
r14742r14743
15501564   state->m_type3_swap = TYPE3_SWAP_67;
15511565}
15521566
1553MACHINE_RESET( cbtime )
1554{
1555   decocass_state *state = machine.driver_data<decocass_state>();
1556   decocass_reset_common(machine);
1557   LOG(0,("dongle type #3 (PAL)\n"));
1558   state->m_dongle_r = decocass_type3_r;
1559   state->m_dongle_w = decocass_type3_w;
1560   state->m_type3_swap = TYPE3_SWAP_12;
1561}
1562
15631567MACHINE_RESET( cgraplop )
15641568{
15651569   decocass_state *state = machine.driver_data<decocass_state>();
r14742r14743
15901594   state->m_type3_swap = TYPE3_SWAP_34_7;
15911595}
15921596
1593MACHINE_RESET( cfghtice )
1597MACHINE_RESET( cskater )
15941598{
15951599   decocass_state *state = machine.driver_data<decocass_state>();
15961600   decocass_reset_common(machine);
15971601   LOG(0,("dongle type #3 (PAL)\n"));
15981602   state->m_dongle_r = decocass_type3_r;
15991603   state->m_dongle_w = decocass_type3_w;
1600   state->m_type3_swap = TYPE3_SWAP_25;
1604   state->m_type3_swap = TYPE3_SWAP_45;
16011605}
16021606
16031607MACHINE_RESET( cprobowl )
r14742r14743
16301634   state->m_type3_swap = TYPE3_SWAP_24;
16311635}
16321636
1637MACHINE_RESET( csdtenis )
1638{
1639   decocass_state *state = machine.driver_data<decocass_state>();
1640   decocass_reset_common(machine);
1641   LOG(0,("dongle type #3 (PAL)\n"));
1642   state->m_dongle_r = decocass_type3_r;
1643   state->m_dongle_w = decocass_type3_w;
1644   state->m_type3_swap = TYPE3_SWAP_23_56;
1645}
1646
1647MACHINE_RESET( czeroize )
1648{
1649   decocass_state *state = machine.driver_data<decocass_state>();
1650   UINT8 *mem = machine.region("dongle")->base();
1651   decocass_reset_common(machine);
1652   LOG(0,("dongle type #3 (PAL)\n"));
1653   state->m_dongle_r = decocass_type3_r;
1654   state->m_dongle_w = decocass_type3_w;
1655   state->m_type3_swap = TYPE3_SWAP_23_56;
1656
1657   /*
1658     * FIXME: remove if the original ROM is available.
1659     * The Zeroize 6502 code at 0x3707 issues LODCTRS with 0x8a,
1660     * and expects to read 0x18 from 0x08a0 ff. within 7 bytes
1661     * and 0xf7 from 0x8a1 (which 0xd is subtracted from presumably in order
1662     * to form a NOP of 0xea).
1663     * This hack seems to be sufficient to get around
1664     * the missing dongle ROM contents and play the game.
1665     */
1666   memset(mem, 0x00, 0x1000);
1667   mem[0x08a0] = 0x18;
1668   mem[0x08a1] = 0xf7;
1669}
1670
16331671MACHINE_RESET( cppicf )
16341672{
16351673   decocass_state *state = machine.driver_data<decocass_state>();
r14742r14743
16401678   state->m_type3_swap = TYPE3_SWAP_01;
16411679}
16421680
1643MACHINE_RESET( cscrtry )
1681MACHINE_RESET( cfghtice )
16441682{
16451683   decocass_state *state = machine.driver_data<decocass_state>();
16461684   decocass_reset_common(machine);
1685   LOG(0,("dongle type #3 (PAL)\n"));
1686   state->m_dongle_r = decocass_type3_r;
1687   state->m_dongle_w = decocass_type3_w;
1688   state->m_type3_swap = TYPE3_SWAP_25;
1689}
1690
1691MACHINE_RESET( type4 )
1692{
1693   decocass_state *state = machine.driver_data<decocass_state>();
1694   decocass_reset_common(machine);
16471695   LOG(0,("dongle type #4 (32K ROM)\n"));
16481696   state->m_dongle_r = decocass_type4_r;
16491697   state->m_dongle_w = decocass_type4_w;
r14742r14743
16661714   state->m_dongle_r = decocass_nodong_r;
16671715}
16681716
1669MACHINE_RESET( czeroize )
1670{
1671   decocass_state *state = machine.driver_data<decocass_state>();
1672   UINT8 *mem = machine.region("dongle")->base();
1673   decocass_reset_common(machine);
1674   LOG(0,("dongle type #3 (PAL)\n"));
1675   state->m_dongle_r = decocass_type3_r;
1676   state->m_dongle_w = decocass_type3_w;
1677   state->m_type3_swap = TYPE3_SWAP_23_56;
1678
1679   /*
1680     * FIXME: remove if the original ROM is available.
1681     * The Zeroize 6502 code at 0x3707 issues LODCTRS with 0x8a,
1682     * and expects to read 0x18 from 0x08a0 ff. within 7 bytes
1683     * and 0xf7 from 0x8a1 (which 0xd is subtracted from presumably in order
1684     * to form a NOP of 0xea).
1685     * This hack seems to be sufficient to get around
1686     * the missing dongle ROM contents and play the game.
1687     */
1688   memset(mem, 0x00, 0x1000);
1689   mem[0x08a0] = 0x18;
1690   mem[0x08a1] = 0xf7;
1691}
1692
16931717/***************************************************************************
16941718 *
16951719 *  8041 port handlers
src/mame/machine/decocass.h
r14742r14743
141141MACHINE_RESET( decocass );
142142MACHINE_RESET( ctsttape );
143143MACHINE_RESET( chwy );
144MACHINE_RESET( cterrani );
145MACHINE_RESET( castfant );
146MACHINE_RESET( csuperas );
144147MACHINE_RESET( clocknch );
148MACHINE_RESET( cprogolf );
149MACHINE_RESET( cluckypo );
145150MACHINE_RESET( ctisland );
146MACHINE_RESET( csuperas );
147MACHINE_RESET( castfant );
148MACHINE_RESET( cluckypo );
149MACHINE_RESET( cterrani );
150151MACHINE_RESET( cexplore );
151MACHINE_RESET( cprogolf );
152MACHINE_RESET( cdiscon1 );
153MACHINE_RESET( ctornado );
152154MACHINE_RESET( cmissnx );
153MACHINE_RESET( cdiscon1 );
154155MACHINE_RESET( cptennis );
155MACHINE_RESET( ctornado );
156MACHINE_RESET( cbnj );
156MACHINE_RESET( cbtime );
157157MACHINE_RESET( cburnrub );
158MACHINE_RESET( cbtime );
159158MACHINE_RESET( cgraplop );
160159MACHINE_RESET( cgraplop2 );
160MACHINE_RESET( cskater );
161161MACHINE_RESET( clapapa );
162MACHINE_RESET( cfghtice );
163162MACHINE_RESET( cprobowl );
164163MACHINE_RESET( cnightst );
165164MACHINE_RESET( cpsoccer );
165MACHINE_RESET( csdtenis );
166MACHINE_RESET( czeroize );
166167MACHINE_RESET( cppicf );
167MACHINE_RESET( cscrtry );
168MACHINE_RESET( cfghtice );
169MACHINE_RESET( type4 );
168170MACHINE_RESET( cflyball );
169171MACHINE_RESET( cbdash );
170MACHINE_RESET( czeroize );
171172
172173WRITE8_HANDLER( i8041_p1_w );
173174READ8_HANDLER( i8041_p1_r );
src/mame/machine/n64.c
r14742r14743
23882388static void n64_machine_stop(running_machine &machine)
23892389{
23902390   n64_periphs *periphs = machine.device<n64_periphs>("rcp");
2391   
2391
23922392   if( periphs->m_nvram_image == NULL )
23932393      return;
23942394
src/mame/includes/namcos22.h
r14742r14743
2828   NAMCOS22_DIRT_DASH
2929};
3030
31typedef void (*namcos22_output_callback)(int offset, UINT16 data);
32
3133class namcos22_state : public driver_device
3234{
3335public:
r14742r14743
106108   UINT8 *m_dirtypal;
107109   bitmap_ind16 *m_mix_bitmap;
108110   tilemap_t *m_bgtilemap;
111   namcos22_output_callback m_sw1_output;
112   namcos22_output_callback m_sw2_output;
109113};
110114
111115
src/mame/includes/dec8.h
r14742r14743
3333   int      m_nmi_enable;
3434   int      m_i8751_return;
3535   int      m_i8751_value;
36   int      m_coinage_id;
3637   int      m_coin1;
3738   int      m_coin2;
39   int      m_need1;
40   int      m_need2;
41   int      m_cred1;
42   int      m_cred2;
43   int      m_credits;
3844   int      m_latch;
3945   int      m_snd;
4046   int      m_msm5205next;
src/mame/video/cps1.c
r14742r14743
129129Street Fighter II': Champion Edition (USA 920803)                91635B-2   S9263B   BPRG1   IOB1  92631C-6     CPS-B-21  DL-0921-10014  C632    IOC1
130130Street Fighter II': Champion Edition (Japan 920322)              91634B-2   S9263B   BPRG1   IOB1  92631C-6     CPS-B-21  DL-0921-10014  C632    IOC1
131131Street Fighter II': Champion Edition (Japan 920513)              91634B-2   S9263B   BPRG1   IOB1  92631C-6     CPS-B-21  DL-0921-10014  C632    IOC1
132Street Fighter II': Champion Edition (Japan 920803)              91634B-2   S9263B   BPRG1   IOB1  92631C-6     CPS-B-21  DL-0921-10014  C632    IOC1
132133
133134Adventure Quiz Capcom World 2* (Japan 920611)              1992  89625B-1   Q522B            LWIO  92641C-1     CPS-B-21  DL-0921-10014          IOC1
134135
r14742r14743
13601361   {"sf2ceua",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
13611362   {"sf2ceub",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
13621363   {"sf2ceuc",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
1363   {"sf2cej",      CPS_B_21_DEF, mapper_S9263B, 0x36 },
13641364   {"sf2ceja",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
1365   {"sf2cejb",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
1366   {"sf2cejc",     CPS_B_21_DEF, mapper_S9263B, 0x36 },
13651367   {"sf2rb",       CPS_B_21_DEF, mapper_S9263B, 0x36 },
13661368   {"sf2rb2",      CPS_B_21_DEF, mapper_S9263B, 0x36 },
13671369   {"sf2rb3",      CPS_B_21_DEF, mapper_S9263B, 0x36 },
src/mame/drivers/seta2.c
r14742r14743
31953195   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
31963196ROM_END
31973197
3198   /* There are known versions 3.x of Deer Hunting USA.... just none are currently dumped.  roms should be "AS0906 E03 U06" & "AS0907 E03 U07" */
3198   /* Are there versions 3.x of Deer Hunting USA with labels "AS0906 E03 U06" & "AS0907 E03 U07" ?? */
31993199
3200ROM_START( deerhuntc ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
3200ROM_START( deerhuntc ) /* These rom labels break label conventions but is correct & verified. Version in program code is listed as 0.00 */
32013201   ROM_REGION( 0x200000, "maincpu", 0 )   // TMP68301 Code
3202   ROM_LOAD16_BYTE( "as0937e01.u06", 0x000000, 0x100000, CRC(8d74088e) SHA1(cb11ffaf4c0267cc8cbe01accc3daeed910a3af3) ) /* SUM16 = C2CD */
3203   ROM_LOAD16_BYTE( "as0938e01.u07", 0x000001, 0x100000, CRC(c7657889) SHA1(4cc707c8abbc0862457375a9a910d3c338859193) ) /* SUM16 = 27D7 */
3204
3205   ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
3206   ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
3207   ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
3208   ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
3209   ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
3210
3211   ROM_REGION( 0x500000, "x1snd", 0 )   // Samples
3212   // Leave 1MB empty (addressable by the chip)
3213   ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
3214ROM_END
3215
3216ROM_START( deerhuntd ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
3217   ROM_REGION( 0x200000, "maincpu", 0 )   // TMP68301 Code
32023218   ROM_LOAD16_BYTE( "as0906e02.u06", 0x000000, 0x100000, CRC(190cca42) SHA1(aef63f5e8c71ed0156b8b0104c5d23872c119167) ) /* Version in program code is listed as 0.00 */
32033219   ROM_LOAD16_BYTE( "as0907e02.u07", 0x000001, 0x100000, CRC(9de2b901) SHA1(d271bc54c41e30c0d9962eedd22f3ef2b7b8c9e5) ) /* Verified with two different sets of chips */
32043220
r14742r14743
32893305GAME( 2000, deerhunt, 0,        samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
32903306GAME( 2000, deerhunta,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
32913307GAME( 2000, deerhuntb,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3292GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V2",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3308GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V3",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3309GAME( 2000, deerhuntd,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V2",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
32933310GAME( 2001, turkhunt, 0,        samshoot, turkhunt, 0,        ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0",                      GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
32943311GAME( 2001, wschamp,  0,        samshoot, wschamp,  0,        ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00",             GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
32953312GAME( 2001, wschampa, wschamp,  samshoot, wschamp,  0,        ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01",             GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/namcops2.c
r14742r14743
192192ROM_END
193193
194194ROM_START( soulclb3 )
195   ROM_REGION(0x200000, "bios", 0)
196   SYSTEM246_BIOS
195    ROM_REGION(0x200000, "bios", 0)
196    SYSTEM246_BIOS
197197
198   ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
199        ROM_LOAD( "sc31001-na-a.ic002", 0x000000, 0x800000, CRC(ddbe9774) SHA1(6bb2d31cb669336345b5508bcca56936ea97c04a) )
200        ROM_LOAD( "sc31001-na-a_spr.ic002", 0x800000, 0x040000, CRC(18c6f56d) SHA1(13bc6a3688985c0cd9900b063824a4af691a1b31) )
198    ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
199    ROM_LOAD( "sc31001-na-a.ic002", 0x000000, 0x800000, CRC(ddbe9774) SHA1(6bb2d31cb669336345b5508bcca56936ea97c04a) )
200    ROM_LOAD( "sc31001-na-a_spr.ic002", 0x800000, 0x040000, CRC(18c6f56d) SHA1(13bc6a3688985c0cd9900b063824a4af691a1b31) )
201201
202   DISK_REGION("dvd")
203   DISK_IMAGE_READONLY( "sc31001-na-dvd0-b", 0, SHA1(b46ee35083f8fcc091ce562951c55fbdbb929e4b) )
202    DISK_REGION("dvd")
203    DISK_IMAGE_READONLY( "sc31001-na-dvd0-b", 0, SHA1(b46ee35083f8fcc091ce562951c55fbdbb929e4b) )
204204ROM_END
205205
206ROM_START( soulclb3a )
207    ROM_REGION(0x200000, "bios", 0)
208    SYSTEM246_BIOS
209
210    ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
211    ROM_LOAD( "sc31002-na-a.ic002", 0x000000, 0x840000, CRC(2ebf91ff) SHA1(01e628344b2cde2edbda9ffea53af6a63e3bddf1) )
212
213    DISK_REGION("dvd")
214    DISK_IMAGE_READONLY( "sc31001-na-dvd0-b", 0, SHA1(b46ee35083f8fcc091ce562951c55fbdbb929e4b) )
215ROM_END
216
206217ROM_START( sukuinuf )
207218   ROM_REGION(0x200000, "bios", 0)
208219   SYSTEM246_BIOS
r14742r14743
275286   DISK_IMAGE_READONLY( "tef1dvd0", 0, SHA1(f39aa37156245f622a6e19e8a0e081418e247b36) )
276287ROM_END
277288
289ROM_START( tekken4c )
290   ROM_REGION(0x200000, "bios", 0)
291   SYSTEM246_BIOS
292
293   ROM_REGION(0x840000, "key", ROMREGION_ERASE00)
294    ROM_LOAD( "tef1verc.ic002", 0x000000, 0x840000, CRC(92697a2b) SHA1(e9ec254d52187f5be0d9be58b25821c1e63bba8e) )
295
296   DISK_REGION("dvd")
297   DISK_IMAGE_READONLY( "tef1dvd0", 0, SHA1(f39aa37156245f622a6e19e8a0e081418e247b36) )
298ROM_END
299
278300ROM_START( tekken51 )
279301   ROM_REGION(0x200000, "bios", 0)
280302   SYSTEM256_BIOS
r14742r14743
370392GAME(2002, tekken4,    sys246, system246, system246, 0, ROT0, "Namco", "Tekken 4 (TEF3 Ver. C)", GAME_IS_SKELETON)
371393GAME(2002, tekken4a,  tekken4, system246, system246, 0, ROT0, "Namco", "Tekken 4 (TEF2 Ver. A)", GAME_IS_SKELETON)
372394GAME(2002, tekken4b,  tekken4, system246, system246, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. A)", GAME_IS_SKELETON)
395GAME(2002, tekken4c,  tekken4, system246, system246, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. C)", GAME_IS_SKELETON)
373396GAME(2003, timecrs3,   sys246, system246, system246, 0, ROT0, "Namco", "Time Crisis 3 (TST1)", GAME_IS_SKELETON)
374397GAME(2003, zgundm,     sys246, system246, system246, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A)", GAME_IS_SKELETON)
375398GAME(2004, fghtjam,    sys246, system246, system246, 0, ROT0, "Capcom / Namco", "Capcom Fighting Jam (JAM1 Ver. A)", GAME_IS_SKELETON)
r14742r14743
377400GAME(2004, zgundmdx,   sys246, system246, system246, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A)", GAME_IS_SKELETON)
378401GAME(2005, gundzaft,   sys246, system246, system246, 0, ROT0, "Capcom / Banpresto", "Gundam Seed: Federation vs. Z.A.F.T. (SED1 Ver. A)", GAME_IS_SKELETON)
379402GAME(2005, soulclb3,   sys246, system246, system246, 0, ROT0, "Namco", "Soul Calibur III (SC31001-NA-A)", GAME_IS_SKELETON)
403GAME(2005, soulclb3a,soulclb3, system246, system246, 0, ROT0, "Namco", "Soul Calibur III (SC31002-NA-A)", GAME_IS_SKELETON)
380404
381405GAME(2004, sys256,          0, system256, system246, 0, ROT0, "Namco", "System 256 BIOS", GAME_IS_SKELETON|GAME_IS_BIOS_ROOT)
382406GAME(2005, tekken51,   sys256, system256, system246, 0, ROT0, "Namco", "Tekken 5.1 (TE51 Ver. B)", GAME_IS_SKELETON)
src/mame/drivers/darkseal.c
r14742r14743
22
33    Dark Seal (Rev 3)    (c) 1990 Data East Corporation (World version)
44    Dark Seal (Rev 1)    (c) 1990 Data East Corporation (World version)
5    Dark Seal           (c) 1990 Data East Corporation (Japanese version)
5    Dark Seal (Rev 4)    (c) 1990 Data East Corporation (Japanese version)
66    Gate Of Doom (Rev 4) (c) 1990 Data East Corporation (USA version)
77    Gate of Doom (Rev 1) (c) 1990 Data East Corporation (USA version)
88
r14742r14743
315315
316316ROM_START( darkseal )
317317   ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
318   ROM_LOAD16_BYTE( "ga04-3.rom",   0x00000, 0x20000, CRC(bafad556) SHA1(5bd8a787d41a33919701ced29212bc11301e31d9) )
319   ROM_LOAD16_BYTE( "ga01-3.rom",   0x00001, 0x20000, CRC(f409050e) SHA1(4653094aeb5dd7ba1e490c04897a23ba8990df3c) )
320   ROM_LOAD16_BYTE( "ga-00.rom",    0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
321   ROM_LOAD16_BYTE( "ga-05.rom",    0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
318   ROM_LOAD16_BYTE( "ga_04-3.j12", 0x00000, 0x20000, CRC(bafad556) SHA1(5bd8a787d41a33919701ced29212bc11301e31d9) )
319   ROM_LOAD16_BYTE( "ga_01-3.h14", 0x00001, 0x20000, CRC(f409050e) SHA1(4653094aeb5dd7ba1e490c04897a23ba8990df3c) )
320   ROM_LOAD16_BYTE( "ga_00.h12",   0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
321   ROM_LOAD16_BYTE( "ga_05.j14",   0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
322322
323323   ROM_REGION( 0x10000, "audiocpu", 0 )   /* Sound CPU */
324   ROM_LOAD( "fz-06.rom",    0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
324   ROM_LOAD( "fz_06-1.j15", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
325325
326326   ROM_REGION( 0x020000, "gfx1", 0 )
327   ROM_LOAD( "fz-02.rom",    0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
328   ROM_LOAD( "fz-03.rom",    0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
327   ROM_LOAD( "fz_02.j1", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
328   ROM_LOAD( "fz_03.j2", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
329329
330330   ROM_REGION( 0x080000, "gfx2", 0 )
331   ROM_LOAD( "mac-03.rom",  0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
331   ROM_LOAD( "mac-03.h3", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
332332
333333   ROM_REGION( 0x080000, "gfx3", 0 )
334   ROM_LOAD( "mac-02.rom",  0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
334   ROM_LOAD( "mac-02.e20", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
335335
336336   ROM_REGION( 0x100000, "gfx4", 0 )
337   ROM_LOAD( "mac-00.rom",   0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
338   ROM_LOAD( "mac-01.rom",   0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
337   ROM_LOAD( "mac-00.b1", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
338   ROM_LOAD( "mac-01.b3", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
339339
340340   ROM_REGION( 0x40000, "oki1", 0 )   /* ADPCM samples */
341   ROM_LOAD( "fz-08.rom",    0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
341   ROM_LOAD( "fz_08.l17", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
342342
343343   ROM_REGION( 0x40000, "oki2", 0 )   /* ADPCM samples */
344   ROM_LOAD( "fz-07.rom",    0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
344   ROM_LOAD( "fz_07.k14", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
345345ROM_END
346346
347347ROM_START( darkseal1 )
348348   ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
349   ROM_LOAD16_BYTE( "ga-04.rom",    0x00000, 0x20000, CRC(a1a985a9) SHA1(eac3f43ff4016dcc21fe34b6bfed36e0d4b86959) )
350   ROM_LOAD16_BYTE( "ga-01.rom",    0x00001, 0x20000, CRC(98bd2940) SHA1(88ac727c3797e646834266320a71aa159e2b2541) )
351   ROM_LOAD16_BYTE( "ga-00.rom",    0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
352   ROM_LOAD16_BYTE( "ga-05.rom",    0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
349   ROM_LOAD16_BYTE( "ga_04.j12", 0x00000, 0x20000, CRC(a1a985a9) SHA1(eac3f43ff4016dcc21fe34b6bfed36e0d4b86959) )
350   ROM_LOAD16_BYTE( "ga_01.h14", 0x00001, 0x20000, CRC(98bd2940) SHA1(88ac727c3797e646834266320a71aa159e2b2541) )
351   ROM_LOAD16_BYTE( "ga_00.h12", 0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
352   ROM_LOAD16_BYTE( "ga_05.j14", 0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
353353
354354   ROM_REGION( 0x10000, "audiocpu", 0 )   /* Sound CPU */
355   ROM_LOAD( "fz-06.rom",    0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
355   ROM_LOAD( "fz_06-1.j15", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
356356
357357   ROM_REGION( 0x020000, "gfx1", 0 )
358   ROM_LOAD( "fz-02.rom",    0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
359   ROM_LOAD( "fz-03.rom",    0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
358   ROM_LOAD( "fz_02.j1", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
359   ROM_LOAD( "fz_03.j2", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
360360
361361   ROM_REGION( 0x080000, "gfx2", 0 )
362   ROM_LOAD( "mac-03.rom",  0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
362   ROM_LOAD( "mac-03.h3", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
363363
364364   ROM_REGION( 0x080000, "gfx3", 0 )
365   ROM_LOAD( "mac-02.rom",  0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
365   ROM_LOAD( "mac-02.e20", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
366366
367367   ROM_REGION( 0x100000, "gfx4", 0 )
368   ROM_LOAD( "mac-00.rom",   0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
369   ROM_LOAD( "mac-01.rom",   0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
368   ROM_LOAD( "mac-00.b1", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
369   ROM_LOAD( "mac-01.b3", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
370370
371371   ROM_REGION( 0x40000, "oki1", 0 )   /* ADPCM samples */
372   ROM_LOAD( "fz-08.rom",    0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
372   ROM_LOAD( "fz_08.l17", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
373373
374374   ROM_REGION( 0x40000, "oki2", 0 )   /* ADPCM samples */
375   ROM_LOAD( "fz-07.rom",    0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
375   ROM_LOAD( "fz_07.k14", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
376376ROM_END
377377
378378ROM_START( darksealj )
379379   ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
380   ROM_LOAD16_BYTE( "fz-04.bin",    0x00000, 0x20000, CRC(817faa2c) SHA1(8a79703f0e3aeb2ceeb098466561ab604baef301) )
381   ROM_LOAD16_BYTE( "fz-01.bin",    0x00001, 0x20000, CRC(373caeee) SHA1(5cfa0c7672c439e9d011d9ec93da32c2377dce19) )
382   ROM_LOAD16_BYTE( "fz-00.bin",    0x40000, 0x20000, CRC(1ab99aa7) SHA1(1da51f3ee0d15094911d4090264b945090d51242) )
383   ROM_LOAD16_BYTE( "fz-05.bin",    0x40001, 0x20000, CRC(3374ef8c) SHA1(4144e71e452e281078bcd9b9a996db9f5dccc346) )
380   ROM_LOAD16_BYTE( "fz_04-4.j12", 0x00000, 0x20000, CRC(817faa2c) SHA1(8a79703f0e3aeb2ceeb098466561ab604baef301) )
381   ROM_LOAD16_BYTE( "fz_01-4.h14", 0x00001, 0x20000, CRC(373caeee) SHA1(5cfa0c7672c439e9d011d9ec93da32c2377dce19) )
382   ROM_LOAD16_BYTE( "fz_00-2.h12", 0x40000, 0x20000, CRC(1ab99aa7) SHA1(1da51f3ee0d15094911d4090264b945090d51242) )
383   ROM_LOAD16_BYTE( "fz_05-2.j14", 0x40001, 0x20000, CRC(3374ef8c) SHA1(4144e71e452e281078bcd9b9a996db9f5dccc346) )
384384
385385   ROM_REGION( 0x10000, "audiocpu", 0 )   /* Sound CPU */
386   ROM_LOAD( "fz-06.rom",    0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
386   ROM_LOAD( "fz_06-1.j15", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
387387
388388   ROM_REGION( 0x020000, "gfx1", 0 )
389   ROM_LOAD( "fz-02.rom",    0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
390   ROM_LOAD( "fz-03.rom",    0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
389   ROM_LOAD( "fz_02.j1", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
390   ROM_LOAD( "fz_03.j2", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
391391
392392   ROM_REGION( 0x080000, "gfx2", 0 )
393   ROM_LOAD( "mac-03.rom",  0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
393   ROM_LOAD( "mac-03.h3", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
394394
395395   ROM_REGION( 0x080000, "gfx3", 0 )
396   ROM_LOAD( "mac-02.rom",  0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
396   ROM_LOAD( "mac-02.e20", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
397397
398398   ROM_REGION( 0x100000, "gfx4", 0 )
399   ROM_LOAD( "mac-00.rom",   0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
400   ROM_LOAD( "mac-01.rom",   0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
399   ROM_LOAD( "mac-00.b1", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
400   ROM_LOAD( "mac-01.b3", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
401401
402402   ROM_REGION( 0x40000, "oki1", 0 )   /* ADPCM samples */
403   ROM_LOAD( "fz-08.rom",    0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
403   ROM_LOAD( "fz_08.l17", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
404404
405405   ROM_REGION( 0x40000, "oki2", 0 )   /* ADPCM samples */
406   ROM_LOAD( "fz-07.rom",    0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
406   ROM_LOAD( "fz_07.k14", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
407407ROM_END
408408
409409ROM_START( gatedoom )
410410   ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
411   ROM_LOAD16_BYTE( "gb04-4",       0x00000, 0x20000, CRC(8e3a0bfd) SHA1(1d20bd678a630e2006c7f50f4d13656136db3721) )
412   ROM_LOAD16_BYTE( "gb01-4",       0x00001, 0x20000, CRC(8d0fd383) SHA1(797e3cf43c9315b4195232eb1787a2292af4901b) )
413   ROM_LOAD16_BYTE( "ga-00.rom",    0x40000, 0x20000, CRC(fbf3ac63) SHA1(51af581ee951eedeb4aa413ecbebe8bf4d30613b) )
414   ROM_LOAD16_BYTE( "ga-05.rom",    0x40001, 0x20000, CRC(d5e3ae3f) SHA1(12f6e92af115422c6ab6ef1d33675d1e1cd58e10) )
411   ROM_LOAD16_BYTE( "gb_04-4.j12", 0x00000, 0x20000, CRC(8e3a0bfd) SHA1(1d20bd678a630e2006c7f50f4d13656136db3721) )
412   ROM_LOAD16_BYTE( "gb_01-4.h14", 0x00001, 0x20000, CRC(8d0fd383) SHA1(797e3cf43c9315b4195232eb1787a2292af4901b) )
413   ROM_LOAD16_BYTE( "gb_00.h12",   0x40000, 0x20000, CRC(a88c16a1) SHA1(e02d5470692f23afa658b9bda933bb20be64602f) )
414   ROM_LOAD16_BYTE( "gb_05.j14",   0x40001, 0x20000, CRC(252d7e14) SHA1(b2f27cd9686dfc697f3faca74d20b298a59efab2) )
415415
416416   ROM_REGION( 0x10000, "audiocpu", 0 )   /* Sound CPU */
417   ROM_LOAD( "fz-06.rom",    0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
417   ROM_LOAD( "fz_06-1.j15", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
418418
419419   ROM_REGION( 0x020000, "gfx1", 0 )
420   ROM_LOAD( "fz-02.rom",    0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
421   ROM_LOAD( "fz-03.rom",    0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
420   ROM_LOAD( "fz_02.j1", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
421   ROM_LOAD( "fz_03.j2", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
422422
423423   ROM_REGION( 0x080000, "gfx2", 0 )
424   ROM_LOAD( "mac-03.rom",  0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
424   ROM_LOAD( "mac-03.h3", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
425425
426426   ROM_REGION( 0x080000, "gfx3", 0 )
427   ROM_LOAD( "mac-02.rom",  0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
427   ROM_LOAD( "mac-02.e20", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
428428
429429   ROM_REGION( 0x100000, "gfx4", 0 )
430   ROM_LOAD( "mac-00.rom",   0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
431   ROM_LOAD( "mac-01.rom",   0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
430   ROM_LOAD( "mac-00.b1", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
431   ROM_LOAD( "mac-01.b3", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
432432
433433   ROM_REGION( 0x40000, "oki1", 0 )   /* ADPCM samples */
434   ROM_LOAD( "fz-08.rom",    0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
434   ROM_LOAD( "fz_08.l17", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
435435
436436   ROM_REGION( 0x40000, "oki2", 0 )   /* ADPCM samples */
437   ROM_LOAD( "fz-07.rom",    0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
437   ROM_LOAD( "fz_07.k14", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
438438ROM_END
439439
440440ROM_START( gatedoom1 )
441441   ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
442   ROM_LOAD16_BYTE( "gb04.bin",     0x00000, 0x20000, CRC(4c3bbd2b) SHA1(e74a532edd01a559d0c388b37a2ead98c19fe5de) )
443   ROM_LOAD16_BYTE( "gb01.bin",     0x00001, 0x20000, CRC(59e367f4) SHA1(f88fa23b8e91f312103eb8a1d9a91d8171ec3ad4) )
444   ROM_LOAD16_BYTE( "gb00.bin",     0x40000, 0x20000, CRC(a88c16a1) SHA1(e02d5470692f23afa658b9bda933bb20be64602f) )
445   ROM_LOAD16_BYTE( "gb05.bin",     0x40001, 0x20000, CRC(252d7e14) SHA1(b2f27cd9686dfc697f3faca74d20b298a59efab2) )
442   ROM_LOAD16_BYTE( "gb_04.j12", 0x00000, 0x20000, CRC(4c3bbd2b) SHA1(e74a532edd01a559d0c388b37a2ead98c19fe5de) )
443   ROM_LOAD16_BYTE( "gb_01.h14", 0x00001, 0x20000, CRC(59e367f4) SHA1(f88fa23b8e91f312103eb8a1d9a91d8171ec3ad4) )
444   ROM_LOAD16_BYTE( "gb_00.h12", 0x40000, 0x20000, CRC(a88c16a1) SHA1(e02d5470692f23afa658b9bda933bb20be64602f) )
445   ROM_LOAD16_BYTE( "gb_05.j14", 0x40001, 0x20000, CRC(252d7e14) SHA1(b2f27cd9686dfc697f3faca74d20b298a59efab2) )
446446
447447   ROM_REGION( 0x10000, "audiocpu", 0 )   /* Sound CPU */
448   ROM_LOAD( "fz-06.rom",    0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
448   ROM_LOAD( "fz_06-1.j15", 0x00000, 0x10000, CRC(c4828a6d) SHA1(fbfd0c85730bbe18401879cd68c19aaec9d482d8) )
449449
450450   ROM_REGION( 0x020000, "gfx1", 0 )
451   ROM_LOAD( "fz-02.rom",    0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
452   ROM_LOAD( "fz-03.rom",    0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
451   ROM_LOAD( "fz_02.j1", 0x000000, 0x10000, CRC(3c9c3012) SHA1(086c2123725d4aa32838c0b6c82317d9c789c465) )   /* chars */
452   ROM_LOAD( "fz_03.j2", 0x010000, 0x10000, CRC(264b90ed) SHA1(0bb1557673107c2d732a9374d5601a6eaf229473) )
453453
454   /* the following four have not been verified on a real Gate of Doom */
455   /* board - might be different from Dark Seal! */
456
457454   ROM_REGION( 0x080000, "gfx2", 0 )
458   ROM_LOAD( "mac-03.rom",  0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
455   ROM_LOAD( "mac-03.h3", 0x000000, 0x80000, CRC(9996f3dc) SHA1(fffd9ecfe142a0c7c3c9c521778ff9c55ea8b225) ) /* tiles 1 */
459456
460457   ROM_REGION( 0x080000, "gfx3", 0 )
461   ROM_LOAD( "mac-02.rom",  0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
458   ROM_LOAD( "mac-02.e20", 0x000000, 0x80000, CRC(49504e89) SHA1(6da4733a650b9040abb2a81a49476368b514b5ab) ) /* tiles 2 */
462459
463460   ROM_REGION( 0x100000, "gfx4", 0 )
464   ROM_LOAD( "mac-00.rom",   0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
465   ROM_LOAD( "mac-01.rom",   0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
461   ROM_LOAD( "mac-00.b1", 0x000000, 0x80000, CRC(52acf1d6) SHA1(a7b68782417baafc86371b106fd31c5317f5b3d8) ) /* sprites */
462   ROM_LOAD( "mac-01.b3", 0x080000, 0x80000, CRC(b28f7584) SHA1(e02ddd45130a7b50f80b6dd049059dba8071d768) )
466463
467464   ROM_REGION( 0x40000, "oki1", 0 )   /* ADPCM samples */
468   ROM_LOAD( "fz-08.rom",    0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
465   ROM_LOAD( "fz_08.l17", 0x00000, 0x20000, CRC(c9bf68e1) SHA1(c81e2534a814fe44c8787946a9fbe18f1743c3b4) )
469466
470467   ROM_REGION( 0x40000, "oki2", 0 )   /* ADPCM samples */
471   ROM_LOAD( "fz-07.rom",    0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
468   ROM_LOAD( "fz_07.k14", 0x00000, 0x20000, CRC(588dd3cb) SHA1(16c4e7670a4967768ddbfd52939d4e6e42268441) )
472469ROM_END
473470
474471/******************************************************************************/
r14742r14743
487484
488485GAME( 1990, darkseal,  0,        darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)", 0 )
489486GAME( 1990, darkseal1, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)", 0 )
490GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan)", 0 )
487GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan revision 4)", 0 )
491488GAME( 1990, gatedoom,  darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)", 0 )
492489GAME( 1990, gatedoom1, darkseal, darkseal, darkseal, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)", 0 )
src/mame/drivers/naomi.c
r14742r14743
54735473   NAOMI_DEFAULT_EEPROM
54745474
54755475   ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
5476   ROM_LOAD( "wk1-fl1.2d",   0x0400000, 0x0400000, CRC(f833a543) SHA1(328b64f2790bfd0b63168a8a3175227e083b995d) )
5477   ROM_LOAD( "wk1-fl2.2c",   0x0c00000, 0x0400000, CRC(20ee71b0) SHA1(074e0c531e8770b0efd6464193bce7a284a3c057) )
5478   ROM_LOAD( "wk1-ma2.4m",   0x1000000, 0x1000000, CRC(650590ec) SHA1(bb9d5d5df2321df24ee0fb9e8bf2757d5277f8ea) )
5476   ROM_LOAD( "wk1fl1.2d",   0x0400000, 0x0400000, CRC(f833a543) SHA1(328b64f2790bfd0b63168a8a3175227e083b995d) )
5477   ROM_LOAD( "wk1fl2.2c",   0x0c00000, 0x0400000, CRC(20ee71b0) SHA1(074e0c531e8770b0efd6464193bce7a284a3c057) )
5478   ROM_LOAD( "wk1ma2.4m",   0x1000000, 0x1000000, CRC(650590ec) SHA1(bb9d5d5df2321df24ee0fb9e8bf2757d5277f8ea) )
54795479   ROM_RELOAD( 0x800000, 0x400000)
5480   ROM_LOAD( "wk1-ma3.4l",   0x2000000, 0x1000000, CRC(3b340dc0) SHA1(2412e41d5bd74d1233fb91f8ce2276a318bfc53d) )
5481   ROM_LOAD( "wk1-ma4.4k",   0x3000000, 0x1000000, CRC(263fbb16) SHA1(b5d3a3d085f9623d70030ca3c49afb84e25549e3) )
5482   ROM_LOAD( "wk1-ma5.4j",   0x4000000, 0x1000000, CRC(9697db68) SHA1(7926e2acff0519403afcba9bdb5f68de28b06c79) )
5483   ROM_LOAD( "wk1-ma6.4h",   0x5000000, 0x1000000, CRC(65017db3) SHA1(a66cd73cdfc9355df63da781a46aa832889f583a) )
5484   ROM_LOAD( "wk1-ma7.4f",   0x6000000, 0x1000000, CRC(902eea85) SHA1(aa7964eb85b468d4fe112f9f0faaf2fa3f1aa96b) )
5485   ROM_LOAD( "wk1-ma8.4e",   0x7000000, 0x1000000, CRC(90e917ed) SHA1(53d32ce0ae2b05fa55a95b8697927045d07f4e8a) )
5486   ROM_LOAD( "wk1-ma9.4d",   0x8000000, 0x1000000, CRC(1d227a05) SHA1(9f816bcdf0279785e0b37ab2f3c5eb5912114dd5) )
5487   ROM_LOAD( "wk1-ma10.4c",  0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
5488   ROM_LOAD( "wk1-ma11.4b",  0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
5480   ROM_LOAD( "wk1ma3.4l",   0x2000000, 0x1000000, CRC(3b340dc0) SHA1(2412e41d5bd74d1233fb91f8ce2276a318bfc53d) )
5481   ROM_LOAD( "wk1ma4.4k",   0x3000000, 0x1000000, CRC(263fbb16) SHA1(b5d3a3d085f9623d70030ca3c49afb84e25549e3) )
5482   ROM_LOAD( "wk1ma5.4j",   0x4000000, 0x1000000, CRC(9697db68) SHA1(7926e2acff0519403afcba9bdb5f68de28b06c79) )
5483   ROM_LOAD( "wk1ma6.4h",   0x5000000, 0x1000000, CRC(65017db3) SHA1(a66cd73cdfc9355df63da781a46aa832889f583a) )
5484   ROM_LOAD( "wk1ma7.4f",   0x6000000, 0x1000000, CRC(902eea85) SHA1(aa7964eb85b468d4fe112f9f0faaf2fa3f1aa96b) )
5485   ROM_LOAD( "wk1ma8.4e",   0x7000000, 0x1000000, CRC(90e917ed) SHA1(53d32ce0ae2b05fa55a95b8697927045d07f4e8a) )
5486   ROM_LOAD( "wk1ma9.4d",   0x8000000, 0x1000000, CRC(1d227a05) SHA1(9f816bcdf0279785e0b37ab2f3c5eb5912114dd5) )
5487   ROM_LOAD( "wk1ma10.4c",  0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
5488   ROM_LOAD( "wk1ma11.4b",  0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
54895489
54905490   ROM_REGION( 4, "rom_key", 0 )
54915491   ROM_LOAD( "wldkicks-key.bin", 0, 4, CRC(c1e3000b) SHA1(36c2546833effe9452e2b3f7d31335fc5e349f49) )
r14742r14743
54965496    NAOMI_DEFAULT_EEPROM
54975497
54985498    ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
5499    ROM_LOAD( "trf1_fl0.2f",  0x0000000, 0x0800000, CRC(862e673d) SHA1(f2c90932ba4abe31d02e86f80ef3e2689342c384) )
5500    ROM_LOAD( "trf1_fl1.2d",  0x0800000, 0x0800000, CRC(59a935c9) SHA1(7298d83a27eac74bad18d716a791ab2016fe028f) )
5501    ROM_LOAD( "trf1_ma1.4n",  0x1000000, 0x1000000, CRC(b1b3ab96) SHA1(3dc4bcf796583a0fb51359a86a46d7883df54fad) )
5502    ROM_LOAD( "trf1_ma2.4m",  0x2000000, 0x1000000, CRC(a27d3dda) SHA1(b9ec4be5845cbe91fd7bc537669e96716513a5f0) )
5503    ROM_LOAD( "trf1_ma3.4l",  0x3000000, 0x1000000, CRC(345ec434) SHA1(986d9930e7de46b88936c898ba8b05d950262a1f) )
5504    ROM_LOAD( "trf1_ma4.4k",  0x4000000, 0x1000000, CRC(fc47a104) SHA1(07ced58c1b17719ac36db1589771e67ce16d912e) )
5505    ROM_LOAD( "trf1_ma5.4j",  0x5000000, 0x1000000, CRC(e1bb077d) SHA1(6b70d8103bf067319e9022742fc1dd843d7e5076) )
5506    ROM_LOAD( "trf1_ma6.4h",  0x6000000, 0x1000000, CRC(abae4d06) SHA1(56da2ca3551287942afabf37e7fd1b884bd3cac8) )
5507    ROM_LOAD( "trf1_ma7.4f",  0x7000000, 0x1000000, CRC(19d0092a) SHA1(2ae2dbf2f3958da9f69b3a8636c6837e4243bb67) )
5508    ROM_LOAD( "trf1_ma8.4e",  0x8000000, 0x1000000, CRC(6fbf34ab) SHA1(f4747d1a1c02e22502e68d72a4f0c152fa69d778) )
5509    ROM_LOAD( "trf1_ma9.4d",  0x9000000, 0x1000000, CRC(2fa36c5d) SHA1(6478687c91484141521ae79a997cecbcfbb7beae) )
5510    ROM_LOAD( "trf1_ma10.4c", 0xa000000, 0x1000000, CRC(bc866a37) SHA1(d4d12f285a3bc9136cf3fc2a59dba5ad557cc7d7) )
5511    ROM_LOAD( "trf1_ma11.4b", 0xb000000, 0x1000000, CRC(68d11482) SHA1(fe991ba5664d6ccf0aac5167f05c5a780f851ae9) )
5512    ROM_LOAD( "trf1_ma12.6p", 0xc000000, 0x1000000, CRC(a7c3bd3c) SHA1(ed5a24e4c47f686120577dae4550fb9378209cf8) )
5513    ROM_LOAD( "trf1_ma13.6n", 0xd000000, 0x1000000, CRC(e52d41fe) SHA1(e1769d42d6048f9621ca289af3ddeca7c14cee00) )
5514    ROM_LOAD( "trf1_ma14.6m", 0xe000000, 0x1000000, CRC(87cb31a0) SHA1(27aef9ac571a0b5e3a76e4ee22f5bc5d0ae962f2) )
5515    ROM_LOAD( "trf1_ma15.6l", 0xf000000, 0x1000000, CRC(42d318c5) SHA1(f9fe82ffbfc51fcb52333f94c55a7092e7124fb4) )
5499    ROM_LOAD( "trf1fl0.2f",  0x0000000, 0x0800000, CRC(862e673d) SHA1(f2c90932ba4abe31d02e86f80ef3e2689342c384) )
5500    ROM_LOAD( "trf1fl1.2d",  0x0800000, 0x0800000, CRC(59a935c9) SHA1(7298d83a27eac74bad18d716a791ab2016fe028f) )
5501    ROM_LOAD( "trf1ma1.4n",  0x1000000, 0x1000000, CRC(b1b3ab96) SHA1(3dc4bcf796583a0fb51359a86a46d7883df54fad) )
5502    ROM_LOAD( "trf1ma2.4m",  0x2000000, 0x1000000, CRC(a27d3dda) SHA1(b9ec4be5845cbe91fd7bc537669e96716513a5f0) )
5503    ROM_LOAD( "trf1ma3.4l",  0x3000000, 0x1000000, CRC(345ec434) SHA1(986d9930e7de46b88936c898ba8b05d950262a1f) )
5504    ROM_LOAD( "trf1ma4.4k",  0x4000000, 0x1000000, CRC(fc47a104) SHA1(07ced58c1b17719ac36db1589771e67ce16d912e) )
5505    ROM_LOAD( "trf1ma5.4j",  0x5000000, 0x1000000, CRC(e1bb077d) SHA1(6b70d8103bf067319e9022742fc1dd843d7e5076) )
5506    ROM_LOAD( "trf1ma6.4h",  0x6000000, 0x1000000, CRC(abae4d06) SHA1(56da2ca3551287942afabf37e7fd1b884bd3cac8) )
5507    ROM_LOAD( "trf1ma7.4f",  0x7000000, 0x1000000, CRC(19d0092a) SHA1(2ae2dbf2f3958da9f69b3a8636c6837e4243bb67) )
5508    ROM_LOAD( "trf1ma8.4e",  0x8000000, 0x1000000, CRC(6fbf34ab) SHA1(f4747d1a1c02e22502e68d72a4f0c152fa69d778) )
5509    ROM_LOAD( "trf1ma9.4d",  0x9000000, 0x1000000, CRC(2fa36c5d) SHA1(6478687c91484141521ae79a997cecbcfbb7beae) )
5510    ROM_LOAD( "trf1ma10.4c", 0xa000000, 0x1000000, CRC(bc866a37) SHA1(d4d12f285a3bc9136cf3fc2a59dba5ad557cc7d7) )
5511    ROM_LOAD( "trf1ma11.4b", 0xb000000, 0x1000000, CRC(68d11482) SHA1(fe991ba5664d6ccf0aac5167f05c5a780f851ae9) )
5512    ROM_LOAD( "trf1ma12.6p", 0xc000000, 0x1000000, CRC(a7c3bd3c) SHA1(ed5a24e4c47f686120577dae4550fb9378209cf8) )
5513    ROM_LOAD( "trf1ma13.6n", 0xd000000, 0x1000000, CRC(e52d41fe) SHA1(e1769d42d6048f9621ca289af3ddeca7c14cee00) )
5514    ROM_LOAD( "trf1ma14.6m", 0xe000000, 0x1000000, CRC(87cb31a0) SHA1(27aef9ac571a0b5e3a76e4ee22f5bc5d0ae962f2) )
5515    ROM_LOAD( "trf1ma15.6l", 0xf000000, 0x1000000, CRC(42d318c5) SHA1(f9fe82ffbfc51fcb52333f94c55a7092e7124fb4) )
55165516
55175517    ROM_REGION( 4, "rom_key", 0 )
55185518    ROM_LOAD( "tr4ae-key.bin", 0x000000, 0x000004, CRC(986a7cee) SHA1(70c3ff80f86de6a0655251658c66a156fb644995) )
55195519ROM_END
55205520
5521// this one's weird: the rom test checksum for IC 1 matches a screenshot from h/w, but on h/w it says ---- instead of BAD.
5522ROM_START( mazan )
5523    NAOMI_BIOS
5524    NAOMI_DEFAULT_EEPROM
5525
5526    ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
5527    ROM_LOAD( "maz1fl1.2d",  0x0000000, 0x0800000, CRC(620cdbb6) SHA1(95e9d0858e1d3060b3c1c41adfff0539185fb03d) )
5528   ROM_RELOAD( 0x800000, 0x800000 )
5529    ROM_LOAD( "maz1ma1.4m",  0x1000000, 0x1000000, CRC(68e12189) SHA1(5a434bd0305189620a62c785c5ac2812dae033d6) )
5530    ROM_LOAD( "maz1ma2.4l",  0x2000000, 0x1000000, CRC(c7a05b44) SHA1(dfbeb3be5adfdf3d4f1d330f3654a5532eb28cc2) )
5531    ROM_LOAD( "maz1ma3.4k",  0x3000000, 0x1000000, CRC(48e1a8a5) SHA1(8b0d83c02ab576d90c95aad297c7447326154c0e) )
5532    ROM_LOAD( "maz1ma4.4j",  0x4000000, 0x1000000, CRC(0187cdab) SHA1(aaa9fd208103426eb0eee58ae0a64a191abcd126) )
5533    ROM_LOAD( "maz1ma5.4h",  0x5000000, 0x1000000, CRC(c6885ee7) SHA1(14e7e017438adcbe0136d7d863af95fe65bd15d8) )
5534    ROM_LOAD( "maz1ma6.4f",  0x6000000, 0x1000000, CRC(a6593c36) SHA1(627bf19d960037ea92b673b786a9da7208acd447) )
5535    ROM_LOAD( "maz1ma7.4e",  0x7000000, 0x1000000, CRC(6103ad9c) SHA1(e4abbb5867cae6a9bf9067ab3a091ef7b18fa0cd) )
5536    ROM_LOAD( "maz1ma8.4d",  0x8000000, 0x1000000, CRC(d46c9f40) SHA1(45eec7fa3d4261f12438e841254fa75d572331b3) )
5537
5538    ROM_REGION( 4, "rom_key", 0 )
5539    ROM_LOAD( "maz1-key.bin", 0x000000, 0x000004, CRC(79ebd41a) SHA1(3545dacdeac66b46e8706565f0eca784291040d1) )
5540ROM_END
5541
55215542ROM_START( vtenis2c )
55225543   NAOMI_BIOS
55235544   NAOMI_DEFAULT_EEPROM
r14742r14743
78827903/* HMG016007 */ GAME( 2001, hmgeo, naomi,   naomim2, naomi,    naomi,    ROT0, "Capcom",          "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
78837904
78847905/* Cart games on Namco custom ROM board */
7885/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "World Kicks", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7886/* 25349801 */ GAME( 2000, toukon4,  naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7906/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "World Kicks (WK1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7907/* 25349801 */ GAME( 2000, toukon4,  naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
78877908// 25469801 Ninja Assault
7888/* 25709801 */ GAME( 2001, gunsur2,  naomi, naomi,   naomi,    naomi,    ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7889// 25869812 Mazan : Flash of the Blade
7909/* 25709801 */ GAME( 2001, gunsur2,  naomi, naomi,   naomi,    naomi,    ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
7910/* 25869812 */ GAME( 2002, mazan,    naomi, naomim2, naomi,    naomi,    ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ1 Ver. A)", GAME_UNEMULATED_PROTECTION|GAME_FLAGS )
78907911
78917912/* GDS-xxxx (Sega GD-ROM games) */
78927913/* 0001  */ GAME( 2000, confmiss,  naomigd,  naomigd, hotd2,    naomigd,    ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
src/mame/drivers/bloodbro.c
r14742r14743
474474
475475ROM_START( bloodbro )
476476   ROM_REGION( 0x80000, "maincpu", 0 )
477   ROM_LOAD16_BYTE( "bb_02.bin",    0x00001, 0x20000, CRC(c0fdc3e4) SHA1(31968f693de2054a0c8ba50a8d44a371dd9c2848) )
478   ROM_LOAD16_BYTE( "bb_01.bin",    0x00000, 0x20000, CRC(2d7e0fdf) SHA1(8fe22d8a1ef7d562a475a5b6c98303b0cb1af561) )
477   ROM_LOAD16_BYTE( "2j.u021",      0x00001, 0x20000, CRC(c0fdc3e4) SHA1(31968f693de2054a0c8ba50a8d44a371dd9c2848) )
478   ROM_LOAD16_BYTE( "1j.i022",      0x00000, 0x20000, CRC(2d7e0fdf) SHA1(8fe22d8a1ef7d562a475a5b6c98303b0cb1af561) )
479479   ROM_LOAD16_BYTE( "bb_04.bin",    0x40001, 0x20000, CRC(fd951c2c) SHA1(f4031bf303c67c82f2f78f7456f78382d8c1ac85) )
480480   ROM_LOAD16_BYTE( "bb_03.bin",    0x40000, 0x20000, CRC(18d3c460) SHA1(93b86af1199f0fedeaf1fe64d27ffede4b819e42) )
481481
src/mame/drivers/galdrvr.c
r14742r14743
11591159INPUT_PORTS_END
11601160
11611161
1162static INPUT_PORTS_START( fantastc )
1163   PORT_START("IN0")
1164   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1165   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1166   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1167   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
1168   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
1169   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
1170   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1171   PORT_SERVICE( 0x20, IP_ACTIVE_HIGH )
1172   PORT_DIPNAME( 0x40, 0x40, "Extended Bonus Life" )
1173   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1174   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1175   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1176   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1177   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1178
1179   PORT_START("IN1")
1180   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
1181   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
1182   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1183   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1184   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1185   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1186   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1187   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1188   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1189   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1190   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1191   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1192   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1193   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1194   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) ) // no effect?
1195   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1196   PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
1197   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) )
1198   PORT_DIPSETTING(    0x00, "3" )
1199   PORT_DIPSETTING(    0x80, "5" )
1200
1201   PORT_START("IN2")
1202   PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
1203   PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
1204   PORT_DIPSETTING(    0x01, DEF_STR( Medium ) )
1205   PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
1206   PORT_DIPSETTING(    0x03, DEF_STR( Hardest ) )
1207   PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1208   PORT_DIPSETTING(    0x00, "20000 80000" )
1209   PORT_DIPSETTING(    0x04, "30000 80000" )
1210   PORT_DIPSETTING(    0x08, "20000 120000" )
1211   PORT_DIPSETTING(    0x0c, "30000 120000" )
1212   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1213   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1214   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1215   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1216   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1217   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1218   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1219   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1220   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1221   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1222   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1223   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1224INPUT_PORTS_END
1225
1226
11621227static INPUT_PORTS_START( tdpgal )
11631228   PORT_START("IN0")
11641229   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
r14742r14743
43634428   ROM_LOAD( "mmi6331.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) /* Compatible with 82s123 prom */
43644429ROM_END
43654430
4431ROM_START( fantastc )
4432   ROM_REGION( 0x8000, "maincpu", 0 )
4433   ROM_LOAD( "f1",           0x0000, 0x1000, CRC(8019f0b7) SHA1(b0a611d1cbb92874a6534fd27c6ac57141668913) )
4434   ROM_LOAD( "f2",           0x1000, 0x1000, CRC(988a9bc6) SHA1(468d483f285ed587f3be81431f22fdbaa3c221cc) )
4435   ROM_LOAD( "f3",           0x2000, 0x1000, CRC(a3c0cc0b) SHA1(a1b12f1c4187d8db1b267a992db6cd297aeea1bc) )
4436   ROM_LOAD( "f4",           0x3000, 0x1000, CRC(c1361be8) SHA1(5c8512747927096dd75e6095deb12dfe637f9096) )
4437   ROM_LOAD( "f5",           0x4000, 0x1000, CRC(6787e93f) SHA1(4ed784ce600fc88efc4865a361f5427027d3419a) )
4438   ROM_LOAD( "f6",           0x5000, 0x1000, CRC(597029ae) SHA1(38ea1348ac35bd1e6190f395ccb22f16cc30133d) )
4439   ROM_LOAD( "f7",           0x6000, 0x1000, CRC(8de08d9a) SHA1(ba48a23236f2b26aa17b509daddc4b3e75424d06) )
4440   ROM_LOAD( "f8",           0x7000, 0x1000, CRC(489e2fb7) SHA1(f7f641c3c6874eae0c9bb3920aa916f8b99a9285) )
4441
4442   ROM_REGION( 0x2000, "gfx1", 0 )
4443   ROM_LOAD( "37",           0x0000, 0x1000, CRC(3a54f749) SHA1(41e3c479b268de21ae0fd4f7986eb666ee58ad83) )
4444   ROM_LOAD( "38",           0x1000, 0x1000, CRC(88b71264) SHA1(60c2eb49f16b94b27625045c78c864e299b60d6b) )
4445
4446   ROM_REGION( 0x0020, "proms", 0 )
4447   ROM_LOAD( "prom-74g138", 0x0000, 0x0020, BAD_DUMP CRC(b7cbbc1f) SHA1(ba7c496091a3e5701a6d01423446ee89a42edcd3) ) // or different wiring?
4448ROM_END
4449
43664450ROM_START( mooncmw )
43674451   ROM_REGION( 0x8000, "maincpu", 0 )
43684452   ROM_LOAD( "60.1x",      0x0000, 0x0800, CRC(322859e6) SHA1(292dccb66c38c8de837ec3ac10928d092494958e) )
r14742r14743
62616345/* other games on basic mooncrst hardware */
62626346GAME( 1982, skybase,  0,        mooncrst, skybase,  skybase,  ROT90,  "Omori Electric Co., Ltd.", "Sky Base", GAME_SUPPORTS_SAVE )
62636347
6348/* larger romspace, 2*AY8910, based on Super Star Crest board? */
6349GAME( 198?, fantastc, 0,        fantastc, fantastc, fantastc, ROT90,  "Taito do Brasil", "Fantastic", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
6350
62646351/* extra ROMs, protection, and sound hardware replaced with AY8910 */
62656352GAME( 1981, jumpbug,  0,        jumpbug,  jumpbug,  jumpbug,  ROT90,  "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE ) // or by Alpha Denshi Co. under contract from Hoei?
62666353GAME( 1981, jumpbugb, jumpbug,  jumpbug,  jumpbug,  jumpbug,  ROT90,  "bootleg", "Jump Bug (bootleg)", GAME_SUPPORTS_SAVE ) // bootleg of Sega license
src/mame/drivers/cninja.c
r14742r14743
13541354   ROM_LOAD( "mb7122h.7v", 0x00000,  0x400,  CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )   /* Priority  Unused */
13551355ROM_END
13561356
1357ROM_START( cninjaa )
1358   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
1359   ROM_LOAD16_BYTE( "1.1k",       0x00000, 0x20000, CRC(a6c40959) SHA1(01d223b76a7798d5bd8b542b9ce8e3ca203205be) )
1360   ROM_LOAD16_BYTE( "4.3k",       0x00001, 0x20000, CRC(2e01d1fd) SHA1(14ba377c86535c409b7b01deddf6fb5681fa3397) )
1361   ROM_LOAD16_BYTE( "2.2j",       0x40000, 0x20000, CRC(18f0527c) SHA1(17b7ea68909c7c8b819578e2039f5be4a640ea75) )
1362   ROM_LOAD16_BYTE( "5.3j",       0x40001, 0x20000, CRC(ea4b6d53) SHA1(263319750524756319587b6e51dfead0265809cb) )
1363   ROM_LOAD16_BYTE( "gn-00.rom",  0x80000, 0x20000, CRC(0b110b16) SHA1(a967c8aeae3f0cee1f354583cf26ee736636aaf8) )
1364   ROM_LOAD16_BYTE( "gn-03.rom",  0x80001, 0x20000, CRC(1e28e697) SHA1(2313e97f3a34892dfdc338944c0f00538fcae800) )
1365
1366   ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
1367   ROM_LOAD( "gl-07.rom",  0x00000,  0x10000,  CRC(ca8bef96) SHA1(fcdbd598c85e339a3389a2ef58cf2d5b3a2779af) )
1368
1369   ROM_REGION( 0x020000, "gfx1", 0 )
1370   ROM_LOAD16_BYTE( "gl-08.rom",  0x00001,  0x10000,  CRC(33a2b400) SHA1(fdb8de315f33705719c0ac03a61fb56ffbfdf597) )   /* chars */
1371   ROM_LOAD16_BYTE( "gl-09.rom",  0x00000,  0x10000,  CRC(5a2d4752) SHA1(617dd10a99b5b55ca64dcdd22a0f133b0d6b770d) )
1372
1373   ROM_REGION( 0x080000, "gfx2", 0 )
1374   ROM_LOAD( "mag-02.rom", 0x000000, 0x80000,  CRC(de89c69a) SHA1(b41bdf859854b5541c7eae7cd541b910cea1f839) )   /* tiles 3 */
1375
1376   ROM_REGION( 0x100000, "gfx3", 0 )
1377   ROM_LOAD( "mag-00.rom", 0x000000, 0x40000,  CRC(a8f05d33) SHA1(a1330bc9ca4648219403db087622badfc632b47d) )   /* tiles 1 */
1378   ROM_CONTINUE(           0x080000, 0x40000 )
1379   ROM_LOAD( "mag-01.rom", 0x040000, 0x40000,  CRC(5b399eed) SHA1(490f8f9c0c557b0ba94c6019e3fe680641a0787e) )   /* tiles 2 */
1380   ROM_CONTINUE(           0x0c0000, 0x40000 )
1381
1382   ROM_REGION( 0x200000, "gfx4", 0 )
1383   ROM_LOAD16_BYTE( "mag-03.rom", 0x000000, 0x80000,  CRC(2220eb9f) SHA1(bdf0bd6e6ba375f0770b9d08a7efa32201cbb6ef) )   /* sprites */
1384   ROM_LOAD16_BYTE( "mag-05.rom", 0x000001, 0x80000,  CRC(56a53254) SHA1(10940cfdc6fbe9013865107de3394ca7f782d9c7) )
1385   ROM_LOAD16_BYTE( "mag-04.rom", 0x100000, 0x80000,  CRC(144b94cc) SHA1(d982508608942a714b428a2b721bf24e1627cbb6) )
1386   ROM_LOAD16_BYTE( "mag-06.rom", 0x100001, 0x80000,  CRC(82d44749) SHA1(c471fa573e00c2f8ae44068439ba6d849a124c68) )
1387
1388   ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */
1389   ROM_LOAD( "gl-06.rom",  0x00000,  0x20000,  CRC(d92e519d) SHA1(08238f12bf7058a3965ab6348b468e3d35d4cd23) )
1390
1391   ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */
1392   ROM_LOAD( "mag-07.rom", 0x00000,  0x80000,  CRC(08eb5264) SHA1(3e33085f00b758acfc78034dc9a75fd6921fc3fe) )   /* banked */
1393
1394   ROM_REGION( 1024, "proms", 0 )
1395   ROM_LOAD( "mb7122h.7v", 0x00000,  0x400,  CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )   /* Priority  Unused */
1396ROM_END
1397
13571398ROM_START( joemac ) /* Japan ver 1 */
13581399   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
13591400   ROM_LOAD16_BYTE( "gl-02-2.1k", 0x00000, 0x20000,  CRC(80da12e2) SHA1(1037ed56c15dbe1eb8bb8b70f0bc3affc1119782) )
r14742r14743
20532094GAME( 1990, edrandyj, edrandy, edrandy,  edrandc, 0,        ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", GAME_SUPPORTS_SAVE )
20542095GAME( 1991, cninja,   0,       cninja,   cninja,  cninja,   ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", GAME_SUPPORTS_SAVE )
20552096GAME( 1991, cninja1,  cninja,  cninja,   cninja,  cninja,   ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", GAME_SUPPORTS_SAVE )
2097GAME( 1991, cninjaa,  cninja,  cninja,   cninja,  cninja,   ROT0, "Data East Corporation", "Caveman Ninja (alternate)", GAME_SUPPORTS_SAVE )
20562098GAME( 1991, cninjau,  cninja,  cninja,   cninjau, cninja,   ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", GAME_SUPPORTS_SAVE )
20572099GAME( 1991, joemac,   cninja,  cninja,   cninja,  cninja,   ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", GAME_SUPPORTS_SAVE )
20582100GAME( 1991, stoneage, cninja,  stoneage, cninja,  stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", GAME_SUPPORTS_SAVE )
src/mame/drivers/taitotz.c
r14742r14743
500500   DISK_IMAGE( "bg2_204j", 0, SHA1(7ac100fba39ae0b93980c0af2f0212a731106912) )
501501ROM_END
502502
503ROM_START( batlgr2a )
504   ROM_REGION64_BE( 0x100000, "user1", 0 )
505   TAITOTZ_BIOS
506
507   ROM_REGION( 0x40000, "io_cpu", 0 )
508   ROM_LOAD16_BYTE( "e87-03.ic14",  0x000000, 0x020000, CRC(49ae7cd0) SHA1(15f07a6bb2044a85a2139481f1dc95a44520c929) )
509   ROM_LOAD16_BYTE( "e87-04.ic15",  0x000001, 0x020000, CRC(59f8f75f) SHA1(f5595751b10c0033f460114c43f5e2c192fe61f1) )
510
511   ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */
512   ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP )
513
514   DISK_REGION( "ide" )
515   DISK_IMAGE( "bg2_201j", 0, SHA1(542d12682bd0f95143368578461c6a4fcc492fcc) )
516ROM_END
517
518ROM_START( pwrshovl )
519   ROM_REGION64_BE( 0x100000, "user1", 0 )
520   TAITOTZ_BIOS
521
522   ROM_REGION( 0x40000, "io_cpu", 0 )
523    ROM_LOAD16_BYTE( "e74-04.ic14",   0x000000, 0x020000, CRC(ef21a261) SHA1(7398826dbf48014b9c7e9454f978f3e419ebc64b) )
524    ROM_LOAD16_BYTE( "e74-05.ic15",   0x000001, 0x020000, CRC(2466217d) SHA1(dc814da3a1679cff001f179d3c1641af985a6490) )
525
526   ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */
527   ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP )
528
529   DISK_REGION( "ide" )
530   DISK_IMAGE( "pwrshovl", 0, SHA1(360f63b39f645851c513b4644fb40601b9ba1412) )
531ROM_END
532
503533GAME( 1999, taitotz,  0, taitotz, taitotz, 0, ROT0, "Taito", "Type Zero BIOS", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT)
504534GAME( 1999, landhigh, taitotz, taitotz, taitotz, 0, ROT0, "Taito", "Landing High Japan", GAME_NOT_WORKING | GAME_NO_SOUND )
505535GAME( 1999, batlgear, taitotz, taitotz, taitotz, 0, ROT0, "Taito", "Battle Gear", GAME_NOT_WORKING | GAME_NO_SOUND )
536GAME( 1999, pwrshovl, taitotz, taitotz, taitotz, 0, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator", GAME_NOT_WORKING | GAME_NO_SOUND )
506537GAME( 2000, batlgr2,  taitotz, taitotz, taitotz, 0, ROT0, "Taito", "Battle Gear 2 (v2.04J)", GAME_NOT_WORKING | GAME_NO_SOUND )
538GAME( 2000, batlgr2a, batlgr2, taitotz, taitotz, 0, ROT0, "Taito", "Battle Gear 2 (v2.01J)", GAME_NOT_WORKING | GAME_NO_SOUND )
507539
src/mame/drivers/m90.c
r14742r14743
948948   /* the samples are in the Z80 ROM in this bootleg */
949949ROM_END
950950
951ROM_START( dynablstb2 )
952   ROM_REGION( CODE_SIZE, "maincpu", 0 )
953    ROM_LOAD16_BYTE( "2.bin", 0x000001, 0x020000, CRC(9c3e996a) SHA1(9244f6a8b498d0f488bbfc68465916ea0560f3be) )
954    ROM_LOAD16_BYTE( "3.bin", 0x000000, 0x020000, CRC(697a2ed9) SHA1(d329987f7a0321414347b8e6a6dfc4304fbe4987) )
955    ROM_COPY( "maincpu", 0x3fff0,  0xffff0, 0x10 )   /* start vector */
951956
957   ROM_REGION( 0x10000, "soundcpu", 0 )
958   ROM_LOAD( "db1-17.bin",    0x0000, 0x10000, CRC(e693c32f) SHA1(b6f228d26318718eedae765de9479706a3e4c38d) )
959
960   ROM_REGION( 0x100000, "gfx1", 0 )
961   ROM_LOAD( "bbm-c0.66",    0x000000, 0x40000, CRC(695d2019) SHA1(3537e9fb0e7dc13d6113b4af71cba3c73392335a) )
962   ROM_LOAD( "bbm-c1.67",    0x040000, 0x40000, CRC(4c7c8bbc) SHA1(31ab5557d96c4184a9c02ed1c309f3070d148e25) )
963   ROM_LOAD( "bbm-c2.68",    0x080000, 0x40000, CRC(0700d406) SHA1(0d43a31a726b0de0004beef41307de2508106b69) )
964   ROM_LOAD( "bbm-c3.69",    0x0c0000, 0x40000, CRC(3c3613af) SHA1(f9554a73e95102333e449f6e81f2bb817ec00881) )
965
966   ROM_REGION( 0x20000, "samples", ROMREGION_ERASE00 )   /* samples */
967   /* the samples are in the Z80 ROM in this bootleg */
968ROM_END
969
952970/*
953971New Dyna Blaster Global Quest
954972Irem, 1992
r14742r14743
11921210GAME( 1991, dynablst, 0,        bombrman, dynablst, 0,        ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster / Bomber Man", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
11931211GAME( 1991, bombrman, dynablst, bombrman, bombrman, 0,        ROT0, "Irem (licensed from Hudson Soft)", "Bomber Man (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
11941212GAME( 1991, atompunk, dynablst, bombrman, atompunk, 0,        ROT0, "Irem America (licensed from Hudson Soft)", "Atomic Punk (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
1195GAME( 1991, dynablstb,dynablst, dynablsb, dynablsb, 0,        ROT0, "bootleg", "Dynablaster / Bomber Man (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
1213GAME( 1991, dynablstb,dynablst, dynablsb, dynablsb, 0,        ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
1214GAME( 1991, dynablstb2,dynablst,dynablsb, dynablsb, 0,        ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, alt)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
11961215GAME( 1992, bbmanw,   0,        bbmanw,   bbmanw,   0,        ROT0, "Irem", "Bomber Man World / New Dyna Blaster - Global Quest", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
11971216GAME( 1992, bbmanwj,  bbmanw,   bbmanwj,  bbmanwj,  0,        ROT0, "Irem", "Bomber Man World (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
11981217GAME( 1992, newapunk, bbmanw,   bbmanw,   bbmanwj,  0,        ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
src/mame/drivers/neodrvr.c
r14742r14743
427427    -- SNKPLAYMORE --
428428    . NEO-MVS CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050
429429
430   -- SNK development boards --
431   . NEO-MVS CHAMC2
432
430433    MVS PROG:
431434    -- SNK --
432435    . NEO-MVS PROG-NAM
r14742r14743
460463    . NEO-MVS PROGBK3S (2003.10.1)
461464    . NEO-MVS PROGBK2S (2003.10.18)
462465
466   -- SNK development boards --
467   . NEO-MVS PROGMC2
463468
469
464470    AES CHA:
465471    -- SNK --
466472    . NEO-AEG CHA-32
r14742r14743
16091615   ROM_LOAD16_BYTE( "018-c4.c4", 0x200001, 0x100000, CRC(e2e0aff7) SHA1(1c691c092a6e2787de4f433b0eb9252bfdaa7e16) ) /* Plane 2,3 */ /* HN62408 */
16101616ROM_END
16111617
1612
16131618ROM_START( burningfp ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */
16141619   ROM_REGION( 0x100000, "maincpu", 0 )
16151620   ROM_LOAD16_BYTE( "proto_018-p1.p1", 0x000001, 0x080000, CRC(5b4032e7) SHA1(55df91dad6f484d3d49c28ab5972700bf71a8662) )
r14742r14743
16381643   ROM_LOAD32_BYTE( "proto_018-c8.c8", 0x200003, 0x80000, CRC(67cc9e34) SHA1(dc72a464c1456a4d2f7b992b416a984fb7885e99) ) /* Plane 3 */
16391644ROM_END
16401645
1641
16421646/****************************************
16431647 ID-0019
16441648 . NGM-019
r14742r14743
23532357   ROM_REGION( 0x100000, "maincpu", 0 )
23542358   ROM_LOAD16_WORD_SWAP( "040-p1.p1", 0x000000, 0x100000, CRC(6dde02c2) SHA1(e432e63feb88c71629ec96aa84650dcfe356a551) )
23552359
2356   NEO_SFIX_128K( "040-s1.s1", CRC(cd9802a3) SHA1(f685d4638f4f68e7e3f101c0c39128454536721b) )
2360   NEO_SFIX_128K( "040-s1.s1", CRC(cd9802a3) SHA1(f685d4638f4f68e7e3f101c0c39128454536721b) ) /* TC531000 */
23572361
23582362   NEO_BIOS_AUDIO_128K( "040-m1.m1", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) )
23592363
r14742r14743
34683472
34693473ROM_START( zupapa ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
34703474   ROM_REGION( 0x100000, "maincpu", 0 )
3471   ROM_LOAD16_WORD_SWAP( "070-p1.p1", 0x000000, 0x100000, CRC(5a96203e) SHA1(49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1) )
3475   ROM_LOAD16_WORD_SWAP( "070-p1.p1", 0x000000, 0x100000, CRC(5a96203e) SHA1(49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1) ) /* mask rom TC538200 */
34723476
34733477   ROM_Y_ZOOM
34743478
r14742r14743
34783482   ROM_REGION( 0x20000, "fixedbios", 0 )
34793483   ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
34803484
3481   NEO_BIOS_AUDIO_128K( "070-m1.m1", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) )
3485   NEO_BIOS_AUDIO_128K( "070-epr.m1", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) ) /* M27C1001 */
3486   /* M1 on eprom, correct chip label unknown */
34823487
34833488   ROM_REGION( 0x0200000, "ymsnd", 0 )
3484   ROM_LOAD( "070-v1.v1", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) )
3489   ROM_LOAD( "070-v1.v1", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) ) /* mask rom TC5316200 */
34853490
34863491   NO_DELTAT_REGION
34873492
34883493   ROM_REGION( 0x1000000, "sprites", 0 )
34893494   /* Encrypted */
3490   ROM_LOAD16_BYTE( "070-c1.c1", 0x0000000, 0x800000, CRC(f8ad02d8) SHA1(9be54532332a8e963ec35ff1e518947bb11ebade) ) /* Plane 0,1 */
3491   ROM_LOAD16_BYTE( "070-c2.c2", 0x0000001, 0x800000, CRC(70156dde) SHA1(06286bf043d50199b47df9a76ca91f39cb28cb90) ) /* Plane 2,3 */
3495   ROM_LOAD16_BYTE( "070-c1.c1", 0x0000000, 0x800000, CRC(f8ad02d8) SHA1(9be54532332a8e963ec35ff1e518947bb11ebade) ) /* Plane 0,1 */ /* mask rom TC5364205 */
3496   ROM_LOAD16_BYTE( "070-c2.c2", 0x0000001, 0x800000, CRC(70156dde) SHA1(06286bf043d50199b47df9a76ca91f39cb28cb90) ) /* Plane 2,3 */ /* mask rom TC5364205 */
34923497ROM_END
34933498
34943499/****************************************
r14742r14743
44574462
44584463ROM_START( mslug )
44594464   ROM_REGION( 0x200000, "maincpu", 0 )
4460   ROM_LOAD16_WORD_SWAP( "201-p1.p1", 0x100000, 0x100000, CRC(08d8daa5) SHA1(b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38) )
4465   ROM_LOAD16_WORD_SWAP( "201-p1.p1", 0x100000, 0x100000, CRC(08d8daa5) SHA1(b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38) ) /* TC5316200 */
44614466   ROM_CONTINUE( 0x000000, 0x100000 )
44624467
4463   NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) )
4468   NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) ) /* TC531000 */
44644469
4465   NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
4470   NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) ) /* TC531001 */
44664471
44674472   ROM_REGION( 0x800000, "ymsnd", 0 )
4468   ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) )
4469   ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) )
4473   ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) ) /* TC5332204 */
4474   ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) ) /* TC5332204 */
44704475
44714476   NO_DELTAT_REGION
44724477
44734478   ROM_REGION( 0x1000000, "sprites", 0 )
4474   ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) ) /* Plane 0,1 */
4475   ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) ) /* Plane 2,3 */
4476   ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) ) /* Plane 0,1 */
4477   ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) ) /* Plane 2,3 */
4479   ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) ) /* Plane 0,1 */ /* TC5332205 */
4480   ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) ) /* Plane 2,3 */ /* TC5332205 */
4481   ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) ) /* Plane 0,1 */ /* TC5332205 */
4482   ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) ) /* Plane 2,3 */ /* TC5332205 */
44784483ROM_END
44794484
44804485/****************************************
r14742r14743
46934698   ROM_LOAD16_WORD_SWAP( "213-p1.p1", 0x100000, 0x100000, CRC(e397d798) SHA1(10f459111db4bab7aaa63ca47e83304a84300812) )
46944699   ROM_CONTINUE( 0x000000, 0x100000)
46954700
4696   NEO_SFIX_128K( "213-s1.s1", CRC(b76b61bc) SHA1(5fdb407d16ab9e33c4f26ee09ff70891ae1d2bd0) )
4701   NEO_SFIX_128K( "213-s1.s1", CRC(b76b61bc) SHA1(5fdb407d16ab9e33c4f26ee09ff70891ae1d2bd0) )  /* TC531000 */
46974702
46984703   NEO_BIOS_AUDIO_128K( "213-m1.m1", CRC(200045f1) SHA1(7a6cd1c8d4447ea260d7ff4520c676b8d685f2e4) )
46994704
r14742r14743
60726077
60736078ROM_START( pbobbl2n ) /* MVS ONLY RELEASE */
60746079   ROM_REGION( 0x100000, "maincpu", 0 )
6075   ROM_LOAD16_WORD_SWAP( "248-p1.p1", 0x000000, 0x100000, CRC(9d6c0754) SHA1(95c70c2d51fc4de01e768e03cc800a850aaad5dc) )
6080   ROM_LOAD16_WORD_SWAP( "248-p1.p1", 0x000000, 0x100000, CRC(9d6c0754) SHA1(95c70c2d51fc4de01e768e03cc800a850aaad5dc) ) /* TC538200 */
60766081
6077   NEO_SFIX_128K( "248-s1.s1", CRC(0a3fee41) SHA1(0ab2120e462086be942efcf6ffb37f58ea966ca3) )
6082   NEO_SFIX_128K( "248-s1.s1", CRC(0a3fee41) SHA1(0ab2120e462086be942efcf6ffb37f58ea966ca3) ) /* TC531000DP */
60786083
6079   NEO_BIOS_AUDIO_128K( "248-m1.m1", CRC(883097a9) SHA1(677bf9684c0c7977a9a3f0c1288e430040a53b49) )
6084   NEO_BIOS_AUDIO_128K( "248-m1.m1", CRC(883097a9) SHA1(677bf9684c0c7977a9a3f0c1288e430040a53b49) ) /* TC531001 */
60806085
60816086   ROM_REGION( 0x800000, "ymsnd", 0 )
6082   ROM_LOAD( "248-v1.v1", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) )
6083   ROM_LOAD( "248-v2.v2", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) )
6087   ROM_LOAD( "248-v1.v1", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) ) /* TC5332204 */
6088   ROM_LOAD( "248-v2.v2", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) ) /* TC5332204 */
60846089
60856090   NO_DELTAT_REGION
60866091
60876092   ROM_REGION( 0xa00000, "sprites", 0 )
6088   ROM_LOAD16_BYTE( "248-c1.c1", 0x000000, 0x400000, CRC(d9115327) SHA1(a49aa836a902326cfe785428e1699fefcf8566d4) ) /* Plane 0,1 */
6089   ROM_LOAD16_BYTE( "248-c2.c2", 0x000001, 0x400000, CRC(77f9fdac) SHA1(4642d71d32b6a05dc8bfa0f95c936a77c7cef05e) ) /* Plane 2,3 */
6090   ROM_LOAD16_BYTE( "248-c3.c3", 0x800000, 0x100000, CRC(8890bf7c) SHA1(a52f6bafd60e72003bfe38c80c1dde24b4983b2a) ) /* Plane 0,1 */
6091   ROM_LOAD16_BYTE( "248-c4.c4", 0x800001, 0x100000, CRC(8efead3f) SHA1(f577d2f7c6f850b3d100c36947ad15e33dfa0bed) ) /* Plane 2,3 */
6093   ROM_LOAD16_BYTE( "248-c1.c1", 0x000000, 0x400000, CRC(d9115327) SHA1(a49aa836a902326cfe785428e1699fefcf8566d4) ) /* Plane 0,1 */ /* TC5332205 */
6094   ROM_LOAD16_BYTE( "248-c2.c2", 0x000001, 0x400000, CRC(77f9fdac) SHA1(4642d71d32b6a05dc8bfa0f95c936a77c7cef05e) ) /* Plane 2,3 */ /* TC5332205 */
6095   ROM_LOAD16_BYTE( "248-c3.c3", 0x800000, 0x100000, CRC(8890bf7c) SHA1(a52f6bafd60e72003bfe38c80c1dde24b4983b2a) ) /* Plane 0,1 */ /* TC538200 */
6096   ROM_LOAD16_BYTE( "248-c4.c4", 0x800001, 0x100000, CRC(8efead3f) SHA1(f577d2f7c6f850b3d100c36947ad15e33dfa0bed) ) /* Plane 2,3 */ /* TC538200 */
60926097ROM_END
60936098
60946099/****************************************
r14742r14743
61006105
61016106ROM_START( ctomaday ) /* MVS ONLY RELEASE */
61026107   ROM_REGION( 0x200000, "maincpu", 0 )
6103   ROM_LOAD16_WORD_SWAP( "249-p1.p1", 0x100000, 0x100000, CRC(c9386118) SHA1(5554662c7bc8605889cac4a67fee05bbb4eb786f) )
6108   ROM_LOAD16_WORD_SWAP( "249-p1.p1", 0x100000, 0x100000, CRC(c9386118) SHA1(5554662c7bc8605889cac4a67fee05bbb4eb786f) ) /* TC5316200 */
61046109   ROM_CONTINUE( 0x000000, 0x100000 )
61056110
6106   NEO_SFIX_128K( "249-s1.s1", CRC(dc9eb372) SHA1(b8aa142243ba303799554479bfc88eb49260f3b1) )
6111   NEO_SFIX_128K( "249-s1.s1", CRC(dc9eb372) SHA1(b8aa142243ba303799554479bfc88eb49260f3b1) ) /* TC531000DP */
61076112
6108   NEO_BIOS_AUDIO_128K( "249-m1.m1", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) )
6113   NEO_BIOS_AUDIO_128K( "249-m1.m1", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) ) /* TC531001 */
61096114
61106115   ROM_REGION( 0x500000, "ymsnd", 0 )
6111   ROM_LOAD( "249-v1.v1", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) )
6112   ROM_LOAD( "249-v2.v2", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) )
6116   ROM_LOAD( "249-v1.v1", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) ) /* TC5332204 */
6117   ROM_LOAD( "249-v2.v2", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) ) /* TC538200 */
61136118
61146119   NO_DELTAT_REGION
61156120
61166121   ROM_REGION( 0x800000, "sprites", 0 )
6117   ROM_LOAD16_BYTE( "249-c1.c1", 0x000000, 0x400000, CRC(041fb8ee) SHA1(dacc84d713d76818d89a26358374afaa22fa82a2) ) /* Plane 0,1 */
6118   ROM_LOAD16_BYTE( "249-c2.c2", 0x000001, 0x400000, CRC(74f3cdf4) SHA1(55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1) ) /* Plane 2,3 */
6122   ROM_LOAD16_BYTE( "249-c1.c1", 0x000000, 0x400000, CRC(041fb8ee) SHA1(dacc84d713d76818d89a26358374afaa22fa82a2) ) /* Plane 0,1 */ /* TC5332205 */
6123   ROM_LOAD16_BYTE( "249-c2.c2", 0x000001, 0x400000, CRC(74f3cdf4) SHA1(55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1) ) /* Plane 2,3 */ /* TC5332205 */
61196124ROM_END
61206125
61216126/****************************************
r14742r14743
75697574
75707575
75717576/****************************************
7572 ID-0008 (official?)
7577 B-J-02
75737578 . ???-????
75747579 MVS PROGV (2000.11.17) / NEO-MVS CHAFIO (1999.6.14)
75757580****************************************/
r14742r14743
75777582ROM_START( jockeygp ) /* MVS ONLY RELEASE */
75787583   /* Officially licensed? Cart has a holographic 'SNK' sticker applied */
75797584   ROM_REGION( 0x200000, "maincpu", 0 )
7580   ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) ) /* M27C160 */
7585   ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) )
75817586   /* P on eprom, correct chip label unknown */
75827587   ROM_FILL( 0x100000, 0x100000, 0xff )
75837588
r14742r14743
75907595   ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
75917596
75927597   /* Encrypted */
7593   NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
7598   NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) ) /* M27C4001 */
75947599
75957600   ROM_REGION( 0x0200000, "ymsnd", 0 )
7596   ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
7601   ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) ) /* mask rom TC5316200 */
75977602
75987603   NO_DELTAT_REGION
75997604
76007605   ROM_REGION( 0x1000000, "sprites", 0 )
76017606   /* Encrypted */
7602   ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */
7603   ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) ) /* Plane 2,3 */
7607   ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */ /* mask rom TC5364205 */
7608   ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) ) /* Plane 2,3 */ /* mask rom TC5364205 */
76047609ROM_END
76057610
76067611ROM_START( jockeygpa ) /* MVS ONLY RELEASE */
r14742r14743
76187623   ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
76197624
76207625   /* Encrypted */
7621   NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
7626   NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) ) /* M27C4001 */
76227627
76237628   ROM_REGION( 0x0200000, "ymsnd", 0 )
7624   ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
7629   ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) ) /* mask rom TC5316200 */
76257630
76267631   NO_DELTAT_REGION
76277632
76287633   ROM_REGION( 0x1000000, "sprites", 0 )
76297634   /* Encrypted */
7630   ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */
7631   ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) ) /* Plane 2,3 */
7635   ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */ /* mask rom TC5364205 */
7636   ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) ) /* Plane 2,3 */ /* mask rom TC5364205 */
76327637ROM_END
76337638
76347639/****************************************
7635 ID-03E7 (incorrect ID-code)
7640 B-V-01
76367641 . ???-????
76377642 MVS PROGV (2000.11.17) / MVS CHAV (2000.10.26)
76387643****************************************/
r14742r14743
76857690 NEO-MVH MVOBR 2003.8.4
76867691****************************************/
76877692
7688/* complete redump required */
76897693ROM_START( ms5pcb ) /* Encrypted Set */
76907694   ROM_REGION( 0x800000, "maincpu", 0 )
7691   ROM_LOAD32_WORD_SWAP( "268-p1r.p1", 0x000000, 0x400000, NO_DUMP )
7692   ROM_LOAD32_WORD_SWAP( "268-p2r.p2", 0x000002, 0x400000, NO_DUMP )
7695   ROM_LOAD32_WORD_SWAP( "268-p1r.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
7696   ROM_LOAD32_WORD_SWAP( "268-p2r.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
76937697
76947698   ROM_REGION( 0x20000, "fixed", 0 )
76957699   ROM_FILL( 0x000000, 0x20000, 0 )
r14742r14743
1009010094GAME( 2004, kof2k4se,  kof2002,  neogeo,   neogeo,   kof2k4se, ROT0, "bootleg", "The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg)", GAME_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2002 */
1009110095GAME( 2003, mslug5,    neogeo,   neogeo,   neogeo,   mslug5,   ROT0, "SNK Playmore", "Metal Slug 5 (NGM-2680)", GAME_SUPPORTS_SAVE )
1009210096GAME( 2003, mslug5h,   mslug5,   neogeo,   neogeo,   mslug5,   ROT0, "SNK Playmore", "Metal Slug 5 (NGH-2680)", GAME_SUPPORTS_SAVE ) /* Also found in later MVS carts */
10093GAME( 2003, ms5pcb,    0,        neogeo,   ms5pcb,   ms5pcb,   ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
10097GAME( 2003, ms5pcb,    0,        neogeo,   ms5pcb,   ms5pcb,   ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", GAME_SUPPORTS_SAVE )
1009410098GAME( 2003, ms5plus,   mslug5,   neogeo,   neogeo,   ms5plus,  ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)", GAME_SUPPORTS_SAVE )
1009510099GAME( 2003, svcpcb,    0,        neogeo,   svcpcb,   svcpcb,   ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1)", GAME_SUPPORTS_SAVE ) // not a clone of neogeo because it's NOT a neogeo cart.
1009610100GAME( 2003, svcpcba,   svcpcb,   neogeo,   svcpcb,   svcpcb,   ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2)" , GAME_SUPPORTS_SAVE ) /* Encrypted Code */
src/mame/drivers/neogeo.c
r14742r14743
3636
3737    1 Slot:
3838    NEO-MVH MV1
39    NEO-MVH MV1-1
3940    NEO-MVH MV1A
40    NEO-MVH MV1B
41    NEO-MVH MV1B CHX
42    NEO-MVH MV1C
41     . NEO-MVH MV1A CHX ??
42    NEO-MVH MV1B (1996.1.19)
43     . NEO-MVH MV1B CHX (1996.1.19) ??
44    NEO-MVH MV1B1 (1998.6.17)
45    NEO-MVH MV1C (1999.4.30)
4346    NEO-MVH MV1F
4447    NEO-MVH MV1FS
4548    NEO-MVH MV1FT
src/mame/drivers/seibuspi.c
r14742r14743
34003400   ROM_LOAD16_WORD( "93c46-rfjets.bin", 0x0000, 0x0080, CRC(8fe8063b) SHA1(afb0141580e1b2bd149092a9cc9e8b4072b1ef10) )
34013401ROM_END
34023402
3403ROM_START( rfjett ) /* SPI Cart, Taiwan */
3404   ROM_REGION32_LE(0x200000, "user1", 0)   /* i386 program */
3405    ROM_LOAD32_BYTE( "prg0.u0211",   0x000000, 0x080000, CRC(a4734579) SHA1(dfbd8e2a3178c7cfd7bd3698999f14bc80f5212f) )
3406    ROM_LOAD32_BYTE( "prg1.u0212",   0x000001, 0x080000, CRC(5e4ad3a4) SHA1(ff66e16f48978b88b298c78e21309208ccb3ff15) )
3407    ROM_LOAD32_BYTE( "prg2.u0221",   0x000002, 0x080000, CRC(21c9942e) SHA1(ededa05a4b5dae2dec5c4409f22e9a66d2c8e98e) )
3408    ROM_LOAD32_BYTE( "prg3.u0220",   0x000003, 0x080000, CRC(ea3657f4) SHA1(2291e31243af7d2e79ae727d9b5484e8d49cc7d9) )
34033409
3410   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF)
3411   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
3412   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
3413   ROM_LOAD24_BYTE("fixp.u0514", 0x000002, 0x10000, CRC(015d0748) SHA1(b1e8eaeba63a7914f1dc27d7e3ca5d0b6db202ed) )
34043414
3415   ROM_REGION( 0x900000, "gfx2", 0)   /* background layer roms */
3416   ROM_LOAD24_WORD("bg-1d.u0543", 0x000000, 0x400000, CRC(edfd96da) SHA1(4813267f104619f569e5777e75b75304321abb49) )
3417   ROM_LOAD24_BYTE("bg-1p.u0544", 0x000002, 0x200000, CRC(a4cc4631) SHA1(cc1c4f4de8a078ca774f5a328a9a58291949b1fb) )
3418   ROM_LOAD24_WORD("bg-2d.u0545", 0x600000, 0x200000, CRC(731fbb59) SHA1(13cd29ec4d4c73582c5fb363218e737886826e5f) )
3419   ROM_LOAD24_BYTE("bg-2p.u0546", 0x600002, 0x100000, CRC(03652c25) SHA1(c0d77285111bc84e008362981ac02a246678ed0a) )
3420
3421   ROM_REGION( 0x1800000, "gfx3", 0)   /* sprites */
3422   ROM_LOAD("obj-1.u0442", 0x0000000, 0x800000, CRC(58a59896) SHA1(edeaaa69987bd5d08c47ed9bf47a3901e2dcc892) )
3423   ROM_LOAD("obj-2.u0443", 0x0800000, 0x800000, CRC(a121d1e3) SHA1(1851ae81f2ae9d3404aadd9fbc0ed7f9230290b9) )
3424   ROM_LOAD("obj-3.u0444", 0x1000000, 0x800000, CRC(bc2c0c63) SHA1(c8d395722f7012c3be366a0fc9b224c537afabae) )
3425
3426   ROM_REGION(0x200000, "ymf", ROMREGION_ERASE00)
3427
3428   ROM_REGION(0x280000, "user2", ROMREGION_ERASE00)   /* sound roms */
3429   ROM_LOAD("pcm-d.u0227",  0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) )
3430   ROM_LOAD("sound1.u0222", 0x200000, 0x080000, CRC(d4fc3da1) SHA1(a03bd97e36a21d27a834b9691b27a7eb7ac51ff2) )
3431ROM_END
3432
3433
34053434/*******************************************************************/
34063435/* SYS386 games */
34073436
r14742r14743
36633692GAME( 1998, rfjetu,    rfjet,   spi,      spi_2button, rfjet,  ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)",  GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
36643693GAME( 1998, rfjeta,    rfjet,   spi,      spi_2button, rfjet,  ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Asia)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
36653694GAME( 1998, rfjetj,    rfjet,   spi,      spi_2button, rfjet,  ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)",  GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
3695GAME( 1998, rfjett,    rfjet,   spi,      spi_2button, rfjet,  ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)",  GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
36663696
36673697/* there is another rf dump rf_spi_asia.zip but it seems strange, 1 program rom, cart pic seems to show others as a different type of rom */
36683698
src/mame/drivers/popobear.c
r14742r14743
55   preliminary driver by Angelo Salese
66
77   TODO:
8   - auto-animation speed is erratic (way too fast);
89   - sprites;
910   - tilemap effects (scrolling, colscroll, linescroll);
1011   - BGM seems quite off, YM2413 core bug?
r14742r14743
179180      int param = vram[i+0x7f800+0]|(vram[i+0x7f800+1]<<8);
180181      int width = 8 << ((param & 0x30)>>4);
181182      int height = 32;
182      int color_bank = (param & 0xc)<<4;
183      int color_bank = ((param & 0xc)<<4);
183184      int x_dir = param & 0x40;
184185      int y_dir = param & 0x80;
185186
187      if((param & 0x3) == 3) // actually sprite mode?
188         color_bank |= 0x20;
189
186190      if(param == 0)
187191         continue;
188192
r14742r14743
405409   popobear_state *state = timer.machine().driver_data<popobear_state>();
406410   int scanline = param;
407411
408   /* TODO: one of those is a timer irq, tied with YM2413 */
412   /* Order is trusted (5 as vblank-out makes the title screen logo spinning to behave wrongly) */
409413   if(scanline == 240)
410      device_set_input_line(state->m_maincpu, 5, ASSERT_LINE);
414      device_set_input_line(state->m_maincpu, 3, ASSERT_LINE);
411415
412416   if(scanline == 0)
413      device_set_input_line(state->m_maincpu, 3, ASSERT_LINE);
417      device_set_input_line(state->m_maincpu, 5, ASSERT_LINE);
414418
419   /* TODO: actually a timer irq, tied with YM2413 sound chip (controls BGM tempo) */
415420   if(scanline == 64 || scanline == 192)
416421      device_set_input_line(state->m_maincpu, 2, ASSERT_LINE);
417422}
src/mame/drivers/cps1.c
r14742r14743
78057805ROM_END
78067806
78077807/* B-Board 91634B-2 */
7808ROM_START( sf2cej )
7808ROM_START( sf2cejc )
78097809   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
7810   ROM_LOAD16_WORD_SWAP( "s92j_23c.8f", 0x000000, 0x80000, CRC(f0120635) SHA1(5e4a9a4b0f65c6139e76ee4ffa02b9db245b1858) )
7811   ROM_LOAD16_WORD_SWAP( "s92j_22c.7f", 0x080000, 0x80000, CRC(8c0b2ed6) SHA1(408db039b4dad72b41458723575ed5352b71e10b) )
7812   ROM_LOAD16_WORD_SWAP( "s92j_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
7813
7814   ROM_REGION( 0x600000, "gfx", 0 )
7815   ROMX_LOAD( "s92_01.3a",  0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-1m.3a
7816   ROMX_LOAD( "s92_02.4a",  0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-3m.5a
7817   ROMX_LOAD( "s92_03.5a",  0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-2m.4a
7818   ROMX_LOAD( "s92_04.6a",  0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-4m.6a
7819   ROMX_LOAD( "s92_05.7a",  0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-5m.7a
7820   ROMX_LOAD( "s92_06.8a",  0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-7m.9a
7821   ROMX_LOAD( "s92_07.9a",  0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-6m.8a
7822   ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-8m.10a
7823   ROMX_LOAD( "s92_10.3c",  0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-10m.3c
7824   ROMX_LOAD( "s92_11.4c",  0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-12m.5c
7825   ROMX_LOAD( "s92_12.5c",  0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-11m.4c
7826   ROMX_LOAD( "s92_13.6c",  0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )   // == s92-13m.6c
7827
7828   ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
7829   ROM_LOAD( "s92_09.12a",  0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )   // == s92_09.11a
7830   ROM_CONTINUE(            0x10000, 0x08000 )
7831
7832   ROM_REGION( 0x40000, "oki", 0 )   /* Samples */
7833   ROM_LOAD( "s92_18.11c",  0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
7834   ROM_LOAD( "s92_19.12c",  0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
7835
7836   ROM_REGION( 0x0200, "aboardplds", 0 )
7837   ROM_LOAD( "buf1",         0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
7838   ROM_LOAD( "ioa1",         0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
7839   ROM_LOAD( "prg1",         0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
7840   ROM_LOAD( "rom1",         0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
7841   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
7842
7843   ROM_REGION( 0x0200, "bboardplds", 0 )
7844   ROM_LOAD( "s9263b.1a",    0x0000, 0x0117, NO_DUMP )
7845   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
7846   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
7847
7848   ROM_REGION( 0x0200, "cboardplds", 0 )
7849   ROM_LOAD( "ioc1.ic7",     0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
7850   ROM_LOAD( "c632.ic1",     0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
7851ROM_END
7852
7853/* B-Board 91634B-2 */
7854ROM_START( sf2cejb )
7855   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
78107856   ROM_LOAD16_WORD_SWAP( "s92j_23b.8f", 0x000000, 0x80000, CRC(140876c5) SHA1(304630e6d8bae9f8d29090e05f7e013c7dafe9cc) )
78117857   ROM_LOAD16_WORD_SWAP( "s92j_22b.7f", 0x080000, 0x80000, CRC(2fbb3bfe) SHA1(e364564a12022730c2c0d0e8fd435e2c30ef9410) )
78127858   ROM_LOAD16_WORD_SWAP( "s92j_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
r14742r14743
1085710903GAME( 1992, sf2ceua,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (USA 920313)", GAME_SUPPORTS_SAVE )
1085810904GAME( 1992, sf2ceub,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (USA 920513)", GAME_SUPPORTS_SAVE )
1085910905GAME( 1992, sf2ceuc,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (USA 920803)", GAME_SUPPORTS_SAVE )
10860GAME( 1992, sf2cej,      sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (Japan 920513)", GAME_SUPPORTS_SAVE )
1086110906GAME( 1992, sf2ceja,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (Japan 920322)", GAME_SUPPORTS_SAVE )
10907GAME( 1992, sf2cejb,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (Japan 920513)", GAME_SUPPORTS_SAVE )
10908GAME( 1992, sf2cejc,     sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "Capcom", "Street Fighter II': Champion Edition (Japan 920803)", GAME_SUPPORTS_SAVE )
1086210909GAME( 1992, sf2rb,       sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "bootleg", "Street Fighter II': Champion Edition (Rainbow set 1, bootleg)", GAME_SUPPORTS_SAVE )         // 920322 - based on World version
1086310910GAME( 1992, sf2rb2,      sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "bootleg", "Street Fighter II': Champion Edition (Rainbow set 2, bootleg)", GAME_SUPPORTS_SAVE )         // 920322 - based on World version
1086410911GAME( 1992, sf2rb3,      sf2ce,    cps1_12MHz, sf2,        cps1,     ROT0,   "bootleg", "Street Fighter II': Champion Edition (Rainbow set 3, bootleg)", GAME_SUPPORTS_SAVE )         // 920322 - based on World version
src/mame/drivers/galaxian.c
r14742r14743
14191419ADDRESS_MAP_END
14201420
14211421
1422static ADDRESS_MAP_START( fantastc_map, AS_PROGRAM, 8 )
1423   ADDRESS_MAP_UNMAP_HIGH
1424   AM_RANGE(0x0000, 0x7fff) AM_ROM
1425   AM_RANGE(0x8000, 0x87ff) AM_RAM
1426   AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("8910.0", ay8910_address_w)
1427   AM_RANGE(0x880b, 0x880b) AM_DEVWRITE("8910.0", ay8910_data_w)
1428   AM_RANGE(0x880c, 0x880c) AM_DEVWRITE("8910.1", ay8910_address_w)
1429   AM_RANGE(0x880e, 0x880e) AM_DEVWRITE("8910.1", ay8910_data_w)
1430   AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, m_videoram)
1431   AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
1432   AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
1433   AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
1434   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
1435   AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
1436   AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
1437   AM_RANGE(0xfffe, 0xfffe) AM_NOP //?
1438ADDRESS_MAP_END
14221439
1440
14231441/* map derived from schematics */
14241442#if 0
14251443static ADDRESS_MAP_START( dambustr_map, AS_PROGRAM, 8 )
r14742r14743
21472165MACHINE_CONFIG_END
21482166
21492167
2168static MACHINE_CONFIG_DERIVED( fantastc, galaxian_base )
2169
2170   /* alternate memory map */
2171   MCFG_CPU_MODIFY("maincpu")
2172   MCFG_CPU_PROGRAM_MAP(fantastc_map)
2173
2174   /* sound hardware */
2175   MCFG_SOUND_ADD("8910.0", AY8910, 1789750)
2176   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
2177
2178   MCFG_SOUND_ADD("8910.1", AY8910, 1789750)
2179   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
2180MACHINE_CONFIG_END
2181
2182
21502183static MACHINE_CONFIG_DERIVED( jumpbug, galaxian_base )
21512184
21522185   MCFG_WATCHDOG_VBLANK_INIT(0)
r14742r14743
30963129}
30973130
30983131
3132static DRIVER_INIT( fantastc )
3133{
3134   /* video extensions */
3135   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, NULL, upper_extend_sprite_info);
3136
3137   /* decode code */
3138   static const UINT16 lut_am_unscramble[32] = {
3139      0, 2, 4, 6,   // ok!
3140      7, 3, 5, 1,   // ok!
3141      6, 0, 2, 4,   // ok!
3142      1, 5, 3, 0,   // ok!
3143      2, 4, 6, 3,   // good, good?, guess, guess
3144      5, 6, 0, 2,   // good, good?, good?, guess
3145      4, 1, 1, 5,   // good, good, guess, good
3146      3, 7, 7, 7   // ok!
3147   };
3148
3149   UINT8* romdata = machine.region("maincpu")->base();
3150   assert(machine.region("maincpu")->bytes() == 0x8000);
3151   UINT8 buf[0x8000];
3152   memcpy(buf, romdata, 0x8000);
3153
3154   for (int i = 0; i < 32; i++)
3155      memcpy(romdata + i * 0x400, buf + lut_am_unscramble[i] * 0x1000 + (i & 3) * 0x400, 0x400);
3156}
3157
3158
30993159static DRIVER_INIT( kingball )
31003160{
31013161   galaxian_state *state = machine.driver_data<galaxian_state>();
src/mame/drivers/namcos22.c
r14742r14743
24592459static WRITE32_HANDLER( namcos22_mcuram_w )
24602460{
24612461   namcos22_state *state = space->machine().driver_data<namcos22_state>();
2462     
2463   if ( ACCESSING_BITS_0_15 )
2464   {
2465      if (state->m_sw1_output)
2466      {
2467         state->m_sw1_output(offset, data);
2468      }
2469   }
2470   else
2471   {
2472      if (state->m_sw2_output)
2473      {         
2474         state->m_sw2_output(offset, data>>16);
2475      }
2476   }
2477   
24622478   COMBINE_DATA(&state->m_shareram[offset]);
2479   
24632480}
24642481
2482
24652483static READ32_HANDLER( namcos22_gun_r )
24662484{
24672485   int xpos = input_port_read_safe(space->machine(), "LIGHTX", 0) * 640 / 0xff;
r14742r14743
26882706   return 0;
26892707}
26902708
2691static WRITE8_HANDLER( propcycle_mcu_port5_w )
2692{
2693   // prop cycle outputs:
2694   // bit 1 = fan
2695   // bit 2 = button light
2696
2697   output_set_value("fan0", data & 1);
2698   set_led_status(space->machine(), 0, data & 2);
2699}
2700
27012709static READ8_HANDLER( propcycle_mcu_adc_r )
27022710{
27032711   // H+L = horizontal, 1 H+L = vertical
r14742r14743
55085516      machine.device("mcu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler(0x82, 0x83, FUNC(mcu141_speedup_r), FUNC(mcu_speedup_w));
55095517}
55105518
5519/*****************************************************************************************************/
5520// Some of the data is stored visually, with the leftmost bit corresponding to the least significant bit.
5521// As a result the values must be un-reversed before being used.
5522// Taken from http://www-graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith64BitsDiv
5523static unsigned char reverse(UINT16 b)
5524{
5525   return ((unsigned char)b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
5526}
5527
5528static void acedrvr_sw1_output( int offset , UINT16 data )
5529{
5530   if (offset == 16)
5531   {     
5532      //These LEDs are arranged in a figure 8.
5533      output_set_value("Uknown_led", BIT(data,0) ^ 0x01);         
5534      output_set_value("Middle_led", BIT(data,1) ^ 0x01);
5535      output_set_value("Top_left_led", BIT(data,2) ^ 0x01);
5536      output_set_value("Bottom_left_led", BIT(data,3) ^ 0x01);
5537      output_set_value("Bottom_led", BIT(data,4) ^ 0x01);
5538      output_set_value("Bottom_right_led", BIT(data,5) ^ 0x01);
5539      output_set_value("Top_led", BIT(data,6) ^ 0x01);
5540      output_set_value("Top_right_led", BIT(data,7) ^ 0x01);           
5541   }
5542}
5543
5544static void acedrvr_sw2_output( int offset , UINT16 data )
5545{
5546   switch ( offset )
5547   {     
5548      case 8:         
5549         output_set_value("Signal_Green_lamp", BIT(data,0));
5550         output_set_value("Base_vibration", BIT(data,2));
5551         output_set_value("Wheel_force", BIT(data,3));
5552         output_set_value("Top_lamp", BIT(data,4));
5553         output_set_value("Signal_Red_lamp", BIT(data,5));         
5554         break;     
5555      case 16:         
5556         output_set_value("Wheel_force_direction", BIT(data,1));
5557         output_set_value("Wheel_force_magnitude",((reverse(data) & 0x3F) ^ 0x3F));         
5558         break;         
5559      default:
5560         break;
5561   }
5562}
5563
5564static void airco22_sw1_output( int offset , UINT16 data )
5565{
5566   if ( offset == 8011)
5567      output_set_value("Start_lamp", BIT(data,1));
5568
5569}
5570
5571static void cybrcomm_sw2_output( int offset , UINT16 data )
5572{
5573   if ( offset == 8)
5574      output_set_value("View_switch_lamp", BIT(data,4));
5575
5576}
5577
5578static void propcycl_sw1_output( int offset , UINT16 data )
5579{
5580   if ( offset == 8011)
5581   {
5582      output_set_value("Fan_motor", BIT(data,1));
5583      output_set_value("Button_lamp", BIT(data,2));
5584   }
5585}
5586
5587static void raveracw_sw2_output( int offset , UINT16 data )
5588{
5589   if ( offset == 16)
5590   {                         
5591      output_set_value("Wheel_force_direction", BIT(data,1));
5592      output_set_value("Wheel_force_magnitude",((reverse(data) & 0x3F) ^ 0x3F));   
5593   }
5594}
5595
5596static void dirtdash_sw1_output( int offset , UINT16 data )
5597{
5598   if ( offset >= 7680 && offset <= 7695)
5599   {
5600         /*
5601         The wheel force direction and magnitude interact with the wheel
5602         position in a way that isn't fully understood.  This causes
5603         what appear to be spurious changes in direction and magnitude.
5604         */
5605         output_set_value("Wheel_force_direction", BIT(data,1));
5606         output_set_value("Wheel_force_magnitude",((reverse(data) & 0x3F) ^ 0x3F));   
5607   }
5608   else if ( offset == 8011)
5609   {         
5610         output_set_value("Wheel_force", BIT(data,1));
5611         output_set_value("Valve_front_left", BIT(data,4));
5612         output_set_value("Valve_front_right", BIT(data,5));
5613         output_set_value("Valve_rear_left", BIT(data,6));
5614         output_set_value("Valve_rear_right", BIT(data,7));           
5615   }
5616}
5617
5618static void alpiner_sw1_output( int offset , UINT16 data )
5619{
5620   if ( offset == 8011)
5621   {
5622      //Direction 0 is locking and 1 is freeing.
5623      output_set_value("Motor_direction", BIT(data,1));
5624      output_set_value("Motor_power", BIT(data,2));
5625      output_set_value("Decision_lamp", BIT(data,4));
5626      output_set_value("Left_selection_lamp", BIT(data,5));
5627      output_set_value("Right_selection_lamp", BIT(data,6));
5628   }
5629}
5630
5631static void alpiner2_sw1_output( int offset , UINT16 data )
5632{
5633   if ( offset == 8011)
5634   {
5635      //Direction 0 is locking and 1 is freeing.
5636      output_set_value("Motor_direction", BIT(data,1));
5637      output_set_value("Motor_power", BIT(data,2));
5638      output_set_value("View_switch_lamp", BIT(data,4));
5639      output_set_value("Left_selection_lamp", BIT(data,5));
5640      output_set_value("Right_selection_lamp", BIT(data,6));
5641   }
5642}
5643
5644static void aquajet_sw1_output( int offset , UINT16 data )
5645{
5646   if ( offset == 8011)
5647   {
5648      output_set_value("Start_lamp", BIT(data,1));
5649      output_set_value("Fan_motor", BIT(data,2));
5650      output_set_value("Air_spring", BIT(data,7));
5651   }
5652}
5653
5654static void cybrcyc_sw1_output( int offset , UINT16 data )
5655{
5656   if ( offset == 8011)
5657   {
5658      output_set_value("bit0", BIT(data,0));
5659      output_set_value("1_lamp", BIT(data,1));
5660      output_set_value("2_lamp", BIT(data,2));
5661      output_set_value("3_lamp", BIT(data,3));
5662      output_set_value("4_lamp", BIT(data,4));
5663      output_set_value("Red_lamp", BIT(data,5));
5664      output_set_value("Yellow_lamp", BIT(data,6));
5665      output_set_value("Blue_lamp", BIT(data,7));
5666      output_set_value("Green_lamp", BIT(data,8));
5667      output_set_value("View_switch_lamp", BIT(data,9));
5668   }
5669}
5670
5671static void timecris_sw1_output( int offset , UINT16 data )
5672{
5673   if ( offset == 8011)
5674      output_set_value("Gun_recoil", BIT(data,1));
5675}
5676
5677static void tokyowar_sw1_output( int offset , UINT16 data )
5678{
5679   if ( offset == 8011)
5680   {
5681      output_set_value("View_switch_lamp", BIT(data,1));
5682      output_set_value("Credit_available_lamp", BIT(data,2));
5683   }
5684}
5685
5686/*****************************************************************************************************/
5687
55115688static void namcos22_init( running_machine &machine, int game_type )
55125689{
55135690   namcos22_state *state = machine.driver_data<namcos22_state>();
r14742r14743
55195696   state->m_p4 = 0;
55205697   state->m_old_coin_state = 0;
55215698   state->m_credits1 = state->m_credits2 = 0;
5699   state->m_sw1_output = NULL;
5700   state->m_sw2_output = NULL;
55225701
55235702   state->m_mpPointRAM = auto_alloc_array(machine, UINT32, 0x20000);
55245703}
r14742r14743
55445723   install_130_speedup(machine);
55455724
55465725   state->m_keycus_id = 0x0187;
5726   state->m_sw1_output = alpiner_sw1_output;
55475727}
55485728
55495729static DRIVER_INIT( alpiner2 )
r14742r14743
55545734   install_130_speedup(machine);
55555735
55565736   state->m_keycus_id = 0x0187;
5737   state->m_sw1_output = alpiner2_sw1_output;
55575738}
55585739
55595740static DRIVER_INIT( alpinesa )
r14742r14743
55665747   install_141_speedup(machine);
55675748
55685749   state->m_keycus_id = 0x01a9;
5750   state->m_sw1_output = alpiner2_sw1_output;
55695751}
55705752
55715753static DRIVER_INIT( airco22 )
55725754{
5755   namcos22_state *state = machine.driver_data<namcos22_state>();
55735756   namcos22_init(machine, NAMCOS22_AIR_COMBAT22);
55745757
55755758   // S22-BIOS ver1.20 namco all rights reserved 94/12/21
55765759   machine.device("mcu")->memory().space(AS_IO)->install_legacy_read_handler(M37710_ADC0_L, M37710_ADC7_H, FUNC(airco22_mcu_adc_r));
5760   
5761   state->m_sw1_output = airco22_sw1_output;
55775762}
55785763
55795764static DRIVER_INIT( propcycl )
55805765{
5581   UINT32 *pROM = (UINT32 *)machine.region("maincpu")->base();
5766   namcos22_state *state = machine.driver_data<namcos22_state>();
5767   UINT32 *pROM = (UINT32 *)machine.region("maincpu")->base();
55825768
55835769   /* patch out strange routine (uninitialized-eprom related?) */
55845770   pROM[0x1992C/4] = 0x4E754E75;
r14742r14743
55975783
55985784   namcos22_init(machine, NAMCOS22_PROP_CYCLE);
55995785
5600   machine.device("mcu")->memory().space(AS_IO)->install_legacy_read_handler(M37710_ADC0_L, M37710_ADC7_H, FUNC(propcycle_mcu_adc_r));
5601   machine.device("mcu")->memory().space(AS_IO)->install_legacy_write_handler(M37710_PORT5, M37710_PORT5, FUNC(propcycle_mcu_port5_w));
5786   machine.device("mcu")->memory().space(AS_IO)->install_legacy_read_handler(M37710_ADC0_L, M37710_ADC7_H, FUNC(propcycle_mcu_adc_r));   
56025787   install_141_speedup(machine);
5788   state->m_sw1_output = propcycl_sw1_output;
56035789}
56045790
56055791static DRIVER_INIT( ridgeraj )
r14742r14743
56305816   install_c74_speedup(machine);
56315817
56325818   state->m_keycus_id = 0x0173;
5819   state->m_sw1_output = acedrvr_sw1_output;
5820   state->m_sw2_output = acedrvr_sw2_output;
56335821}
56345822
56355823static DRIVER_INIT( victlap )
r14742r14743
56405828   install_c74_speedup(machine);
56415829
56425830   state->m_keycus_id = 0x0188;
5831   state->m_sw2_output = acedrvr_sw2_output;
5832   state->m_sw1_output = acedrvr_sw1_output;
56435833}
56445834
56455835static DRIVER_INIT( raveracw )
56465836{
5837   namcos22_state *state = machine.driver_data<namcos22_state>();
56475838   namcos22_init(machine, NAMCOS22_RAVE_RACER);
56485839
56495840   install_c74_speedup(machine);
5841   state->m_sw2_output = raveracw_sw2_output;
56505842}
56515843
56525844static DRIVER_INIT( cybrcomm )
r14742r14743
56575849   install_c74_speedup(machine);
56585850
56595851   state->m_keycus_id = 0x0185;
5852   state->m_sw2_output = cybrcomm_sw2_output;
56605853}
56615854
56625855static DRIVER_INIT( cybrcyc )
r14742r14743
56685861   install_130_speedup(machine);
56695862
56705863   state->m_keycus_id = 0x0387;
5864   state->m_sw1_output = cybrcyc_sw1_output;
56715865}
56725866
56735867static DRIVER_INIT( timecris )
56745868{
5869   namcos22_state *state = machine.driver_data<namcos22_state>();
56755870   namcos22_init(machine, NAMCOS22_TIME_CRISIS);
56765871
56775872   install_130_speedup(machine);
5873   state->m_sw1_output = timecris_sw1_output;
56785874}
56795875
56805876static DRIVER_INIT( tokyowar )
r14742r14743
56865882   install_141_speedup(machine);
56875883
56885884   state->m_keycus_id = 0x01a8;
5885   state->m_sw1_output = tokyowar_sw1_output;
56895886}
56905887
56915888static DRIVER_INIT( aquajet )
56925889{
5890   namcos22_state *state = machine.driver_data<namcos22_state>();
56935891   namcos22_init(machine, NAMCOS22_AQUA_JET);
56945892
56955893   machine.device("mcu")->memory().space(AS_IO)->install_legacy_read_handler(M37710_ADC0_L, M37710_ADC7_H, FUNC(aquajet_mcu_adc_r));
56965894   install_141_speedup(machine);
5895   state->m_sw1_output = aquajet_sw1_output;
5896   
56975897}
56985898
56995899static DRIVER_INIT( dirtdash )
r14742r14743
57055905   install_141_speedup(machine);
57065906
57075907   state->m_keycus_id = 0x01a2;
5908   state->m_sw1_output = dirtdash_sw1_output;
57085909}
57095910
57105911/************************************************************************************/
src/mame/drivers/tnzs.c
r14742r14743
21362136   ROM_LOAD( "b08-07.16f",   0x00200, 0x200, CRC(ea34d9f7) SHA1(9a46edc64f961bd96908419cabd92445d300fc19) )   /* lo bytes, AM27S29 or compatible like MB7124 */
21372137ROM_END
21382138
2139ROM_START( arknoid2b )
2140   ROM_REGION( 0x30000, "maincpu", 0 )            /* Region 0 - main cpu */
2141    ROM_LOAD( "boot.11c",  0x00000, 0x08000, CRC(3847dfb0) SHA1(993c8af3df7a4d5a2523f0e31a6df1c07ba13c7d) )
2142   ROM_CONTINUE(           0x18000, 0x08000 )         /* banked at 8000-bfff */
2143   /* 20000-2ffff empty */
2144
2145   ROM_REGION( 0x18000, "sub", 0 )            /* Region 2 - sound cpu */
2146   ROM_LOAD( "b08_13.3e", 0x00000, 0x08000, CRC(e8035ef1) SHA1(9a54e952cff0036c4b6affd9ffb1097cdccbe255) )
2147   ROM_CONTINUE(          0x10000, 0x08000 )         /* banked at 8000-9fff */
2148
2149   ROM_REGION( 0x10000, "audiocpu", 0 )   /* M-Chip (i8742 internal ROM) */
2150   ROM_LOAD( "ark28742.3g", 0x0000, 0x0800, NO_DUMP )
2151
2152   ROM_REGION( 0x80000, "gfx1", 0 )
2153   ROM_LOAD( "b08-01.13a",   0x00000, 0x20000, CRC(2ccc86b4) SHA1(eced1d7e687db0331507726946b6a19a690a7604) )
2154   ROM_LOAD( "b08-02.10a",   0x20000, 0x20000, CRC(056a985f) SHA1(6333b71c631d3307929aae633760870451830e10) )
2155   ROM_LOAD( "b08-03.7a",   0x40000, 0x20000, CRC(274a795f) SHA1(49353590e1a418843f57c715185e407a20021936) )
2156   ROM_LOAD( "b08-04.4a",   0x60000, 0x20000, CRC(9754f703) SHA1(0018ebf7da3f501345f3f5085d98d7614f8ce1b6) )
2157
2158   ROM_REGION( 0x0400, "proms", 0 )
2159   ROM_LOAD( "b08-08.15f",   0x00000, 0x200, CRC(a4f7ebd9) SHA1(094eb63c18898c6ee8d722492bdfd28091c61773) )   /* hi bytes, AM27S29 or compatible like MB7124 */
2160   ROM_LOAD( "b08-07.16f",   0x00200, 0x200, CRC(ea34d9f7) SHA1(9a46edc64f961bd96908419cabd92445d300fc19) )   /* lo bytes, AM27S29 or compatible like MB7124 */
2161ROM_END
2162
21392163ROM_START( drtoppel )
21402164   ROM_REGION( 0x30000, "maincpu", 0 )   /* 64k + bankswitch areas for the first CPU */
21412165   ROM_LOAD( "b19-09.11c", 0x00000, 0x08000, CRC(3e654f82) SHA1(d9e351d82546b08eb7887ea1d976fa97a259db6e) )
r14742r14743
27242748GAME( 1987, arknoid2,  0,        arknoid2, arknoid2, arknoid2, ROT270, "Taito Corporation Japan", "Arkanoid - Revenge of DOH (World)", 0 )
27252749GAME( 1987, arknoid2u, arknoid2, arknoid2, arknid2u, arknoid2, ROT270, "Taito America Corporation (Romstar license)", "Arkanoid - Revenge of DOH (US)", 0 )
27262750GAME( 1987, arknoid2j, arknoid2, arknoid2, arknid2u, arknoid2, ROT270, "Taito Corporation", "Arkanoid - Revenge of DOH (Japan)", 0 )
2751GAME( 1987, arknoid2b, arknoid2, arknoid2, arknid2u, arknoid2, ROT270, "bootleg", "Arkanoid - Revenge of DOH (Japan bootleg)", 0 )
27272752GAME( 1987, drtoppel,  0,        drtoppel, drtoppel, drtoppel, ROT90,  "Kaneko / Taito Corporation Japan", "Dr. Toppel's Adventure (World)", 0 ) /* Possible region hack */
27282753GAME( 1987, drtoppelu, drtoppel, drtoppel, drtopplu, drtoppel, ROT90,  "Kaneko / Taito America Corporation", "Dr. Toppel's Adventure (US)", 0 ) /* Possible region hack */
27292754GAME( 1987, drtoppelj, drtoppel, drtoppel, drtopplu, drtoppel, ROT90,  "Kaneko / Taito Corporation", "Dr. Toppel's Tankentai (Japan)", 0 )
src/mame/drivers/8080bw.c
r14742r14743
402402
403403MACHINE_CONFIG_END
404404
405static DRIVER_INIT( invadpt2br )
406{
407   UINT8 *rom = machine.region("maincpu")->base();
408   int offs;
409
410   // simple encryption on rom pv01 0x4fc-0x5fb
411   // (with additional mask on 4-byte parts below)
412   for (offs = 0x4fc; offs < 0x5fc; offs++)
413      rom[offs] ^= 0x6c;
414
415   // 0x4fc + 1 * 0x56
416   for (offs = 0x54e; offs < 0x552; offs++)
417      rom[offs] ^= 0x03;
418
419   // 0x4fc + 2 * 0x56
420   for (offs = 0x5a4; offs < 0x5a8; offs++)
421      rom[offs] ^= 0x01;
422
423   // 0x4fc + 3 * 0x56
424   for (offs = 0x5fa; offs < 0x5fc; offs++)
425      rom[offs] ^= 0x02;
426}
427
405428/*******************************************************/
406429/*                                                     */
407430/* Space Wars (Sanritsu)                               */
r14742r14743
26412664
26422665ROM_START( invadpt2br )
26432666   ROM_REGION( 0x10000, "maincpu", 0 )
2644   ROM_LOAD( "pv01_bad",    0x0000, 0x0800, BAD_DUMP CRC(2931a033) SHA1(b04ccde4a4a04b37aa65edc4af4e53a8c1f03dfe) ) // chunk of garbage in prg area $500-$600, the rest of rom contents is same as parent
2645   ROM_LOAD( "pv01",        0x0000, 0x0800, CRC(7288a511) SHA1(ff617872784c28ed03591aefa9f0519e5651701f) ) // so let's load the parent rom instead
2667   ROM_LOAD( "br_pv01",     0x0000, 0x0800, CRC(2931a033) SHA1(b04ccde4a4a04b37aa65edc4af4e53a8c1f03dfe) )
26462668   ROM_LOAD( "br_pv02",     0x0800, 0x0800, CRC(420c7c35) SHA1(b51265f4d9e5a8cf9d53099a97cadd25ea0b34ce) )
26472669   ROM_LOAD( "br_pv03",     0x1000, 0x0800, CRC(dffd04b9) SHA1(d51a0f27e90b0a49cf2d57ec82a863dcae9f3ea4) )
26482670   ROM_LOAD( "br_pv04",     0x1800, 0x0800, CRC(b0626aff) SHA1(b7de6c21030732bd0479228f057ca4c87b913b0a) )
r14742r14743
34173439GAME( 1979, grescue,  lrescue,  lrescue,  lrescue,  0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
34183440GAME( 1979, desterth, lrescue,  lrescue,  invrvnge, 0, ROT270, "bootleg", "Destination Earth", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
34193441GAME( 1979, invadpt2, 0,        invadpt2, invadpt2, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
3420GAME( 1979, invadpt2br,invadpt2,invadpt2, invadpt2, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
3442GAME( 1979, invadpt2br,invadpt2,invadpt2, invadpt2, invadpt2br, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
34213443GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", GAME_SUPPORTS_SAVE )
34223444GAME( 1980, vortex,   0,        vortex,   vortex, vortex, ROT270, "Zilec Electronics", "Vortex", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* Encrypted 8080/IO */
34233445GAME( 1979, cosmo,    0,        cosmo,    cosmo,    0, ROT90,  "TDS & Mints", "Cosmo", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
src/mame/drivers/decocass.c
r14742r14743
221221   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
222222
223223   PORT_START("DSW1")
224   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )      PORT_DIPLOCATION("SW1:1,2")
224   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )                  PORT_DIPLOCATION("SW1:1,2")
225225   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
226226   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
227227   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
228228   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
229   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )      PORT_DIPLOCATION("SW1:3,4")
229   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )                  PORT_DIPLOCATION("SW1:3,4")
230230   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
231231   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
232232   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
233233   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
234   PORT_DIPNAME( 0x30, 0x30, "Type of Tape" )      PORT_DIPLOCATION("SW1:5,6")   /* Used by the "bios" */
234   PORT_DIPNAME( 0x30, 0x30, "Type of Tape" )                     PORT_DIPLOCATION("SW1:5,6")   /* Used by the "bios" */
235235   PORT_DIPSETTING(    0x00, "MT (Big)" )         /* Was listed as "Board Type" with this being "OLD" */
236236   PORT_DIPSETTING(    0x10, "invalid?" )
237237   PORT_DIPSETTING(    0x20, "invalid?" )
238238   PORT_DIPSETTING(    0x30, "MD (Small)" )      /* Was listed as "Board Type" with this being "NEW" */
239   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("SW1:7")
239   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )                  PORT_DIPLOCATION("SW1:7")
240240   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
241241   PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
242242   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK)
r14742r14743
247247   PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW2:3")
248248   PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW2:4")      /* Most Dipswitch Settings sheets show 4 (with/without 5) as some form of Diffculty */
249249   PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW2:5")
250   PORT_DIPNAME( 0xe0, 0xe0, "Country Code" )      PORT_DIPLOCATION("SW2:6,7,8") /* Always Listed as "DON'T CHANGE" */
250   PORT_DIPNAME( 0xe0, 0xe0, "Country Code" )                     PORT_DIPLOCATION("SW2:6,7,8") /* Always Listed as "DON'T CHANGE" */
251251   PORT_DIPSETTING(    0xe0, "A" )
252252   PORT_DIPSETTING(    0xc0, "B" )
253253   PORT_DIPSETTING(    0xa0, "C" )
r14742r14743
256256   PORT_DIPSETTING(    0x40, "F" )
257257INPUT_PORTS_END
258258
259static INPUT_PORTS_START( cbtime )
259static INPUT_PORTS_START( cterrani )
260260   PORT_INCLUDE( decocass )
261261
262262   PORT_MODIFY("DSW2")
263   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
263   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
264264   PORT_DIPSETTING(    0x01, "3" )
265265   PORT_DIPSETTING(    0x00, "5" )
266   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
266   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
267   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
268   PORT_DIPSETTING(    0x06, "3000" )
269   PORT_DIPSETTING(    0x04, "5000" )
270   PORT_DIPSETTING(    0x02, "7000" )
271   PORT_DIPNAME( 0x08, 0x08, "Player's Rocket Movement" )            PORT_DIPLOCATION("SW2:4")
272   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
273   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
274   PORT_DIPNAME( 0x10, 0x10, "Alien Craft Movement" )               PORT_DIPLOCATION("SW2:5")
275   PORT_DIPSETTING(    0x10, DEF_STR( Easy ) )
276   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
277   /* Switches 6, 7 & 8 are shown as completly blank */
278INPUT_PORTS_END
279
280static INPUT_PORTS_START( csuperas )
281   PORT_INCLUDE( decocass )
282
283   PORT_MODIFY("DSW2")
284   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
285   PORT_DIPSETTING(    0x01, "3" )
286   PORT_DIPSETTING(    0x00, "5" )
287   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
288   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
267289   PORT_DIPSETTING(    0x06, "20000" )
268290   PORT_DIPSETTING(    0x04, "30000" )
269291   PORT_DIPSETTING(    0x02, "40000" )
270   PORT_DIPSETTING(    0x00, "50000" )
271   PORT_DIPNAME( 0x08, 0x08, "Enemies" )         PORT_DIPLOCATION("SW2:4")
272   PORT_DIPSETTING(    0x08, "4" )
273   PORT_DIPSETTING(    0x00, "6" )
274   PORT_DIPNAME( 0x10, 0x10, "End of Level Pepper" )   PORT_DIPLOCATION("SW2:5")
275   PORT_DIPSETTING(    0x10, DEF_STR( No ) )
276   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
292   PORT_DIPNAME( 0x08, 0x08, "Alien Craft Movement" )               PORT_DIPLOCATION("SW2:4")
293   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
294   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
295   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
277296INPUT_PORTS_END
278297
279static INPUT_PORTS_START( cnightst )
298static INPUT_PORTS_START( clocknch )
280299   PORT_INCLUDE( decocass )
281300
282301   PORT_MODIFY("DSW2")
283   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
302   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
284303   PORT_DIPSETTING(    0x01, "3" )
285304   PORT_DIPSETTING(    0x00, "5" )
286   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
287   PORT_DIPSETTING(    0x06, "When Night Star Completed (First 2 Times)" )
288   PORT_DIPSETTING(    0x04, "When Night Star Completed (First Time Only)" )
289   PORT_DIPSETTING(    0x02, "Every 70000"  )
290   PORT_DIPSETTING(    0x00, "30000 Only"  )
291   PORT_DIPNAME( 0x08, 0x08, "Number of Missles" )      PORT_DIPLOCATION("SW2:4")
292   PORT_DIPSETTING(    0x08, "Few" )
305   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
306   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
307   PORT_DIPSETTING(    0x06, "15000" )
308   PORT_DIPSETTING(    0x04, "20000" )
309   PORT_DIPSETTING(    0x02, "30000" )
310   /* Switches 4, 5, 6, 7 & 8 are listed as "Not Used" and "Don't Change" */
311INPUT_PORTS_END
312
313static INPUT_PORTS_START( cprogolf )
314   PORT_INCLUDE( decocass )
315
316   PORT_MODIFY("DSW2")
317   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
318   PORT_DIPSETTING(    0x01, "2" )
319   PORT_DIPSETTING(    0x00, "3" )
320   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3") /* You must shoot equal to or under the listed value for a bonus */
321   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
322   PORT_DIPSETTING(    0x02, "6 Under" )
323   PORT_DIPSETTING(    0x04, "3 Under" )
324   PORT_DIPSETTING(    0x06, "1 Under" )
325   PORT_DIPNAME( 0x08, 0x08, "Number of Strokes" )                  PORT_DIPLOCATION("SW2:4") /* You must shoot equal to or under to continue, else you lose a life */
326   PORT_DIPSETTING(    0x00, "Par +2" )
327   PORT_DIPSETTING(    0x08, "Par +3" )
328   PORT_DIPNAME( 0x10, 0x10, "Show Stroke Power/Ball Direction" )      PORT_DIPLOCATION("SW2:5")
329   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
330   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
331   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
332INPUT_PORTS_END
333
334static INPUT_PORTS_START( cexplore )
335   PORT_INCLUDE( decocass )
336
337   PORT_MODIFY("DSW2")
338   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
339   PORT_DIPSETTING(    0x01, "3" )
340   PORT_DIPSETTING(    0x00, "5" )
341   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
342   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
343   PORT_DIPSETTING(    0x06, "10000" )
344   PORT_DIPSETTING(    0x04, "1500000" )
345   PORT_DIPSETTING(    0x02, "30000" )
346   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )               PORT_DIPLOCATION("SW2:4") /* Listed as "Missle" */
347   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
348   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
349   PORT_DIPNAME( 0x10, 0x10, "Number of UFOs" )                  PORT_DIPLOCATION("SW2:5")
350   PORT_DIPSETTING(    0x10, "Few" )
293351   PORT_DIPSETTING(    0x00, "Many" )
294   PORT_DIPNAME( 0x10, 0x10, "Enemy's Speed" )      PORT_DIPLOCATION("SW2:5")
295   PORT_DIPSETTING(    0x10, "Slow" )
296   PORT_DIPSETTING(    0x00, "Fast" )
297352   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
298353INPUT_PORTS_END
299
300354static INPUT_PORTS_START( ctornado )
301355   PORT_INCLUDE( decocass )
302356
303357   PORT_MODIFY("DSW2")
304   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
358   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
305359   PORT_DIPSETTING(    0x01, "3" )
306360   PORT_DIPSETTING(    0x00, "5" )
307   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
361   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
308362   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
309363   PORT_DIPSETTING(    0x06, "10000" )
310364   PORT_DIPSETTING(    0x04, "20000" )
311365   PORT_DIPSETTING(    0x02, "30000" )
312   PORT_DIPNAME( 0x08, 0x08, "Crash Bombs" )      PORT_DIPLOCATION("SW2:4") /* Printed English translation "Hero Destructor" */
366   PORT_DIPNAME( 0x08, 0x08, "Crash Bombs" )                     PORT_DIPLOCATION("SW2:4") /* Printed English translation "Hero Destructor" */
313367   PORT_DIPSETTING(    0x08, "3" )
314368   PORT_DIPSETTING(    0x00, "5" )
315   PORT_DIPNAME( 0x10, 0x10, "Alens' Speed" )      PORT_DIPLOCATION("SW2:5")
369   PORT_DIPNAME( 0x10, 0x10, "Alens' Speed" )                     PORT_DIPLOCATION("SW2:5")
316370   PORT_DIPSETTING(    0x10, "Slow" )
317371   PORT_DIPSETTING(    0x00, "Fast" )
318372   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
319373INPUT_PORTS_END
320374
321static INPUT_PORTS_START( cbdash )
375static INPUT_PORTS_START( cmissnx )
322376   PORT_INCLUDE( decocass )
323377
324378   PORT_MODIFY("DSW2")
325   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
379   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
326380   PORT_DIPSETTING(    0x01, "3" )
327381   PORT_DIPSETTING(    0x00, "5" )
328   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
382   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
329383   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
384   PORT_DIPSETTING(    0x06, "5000" )
385   PORT_DIPSETTING(    0x04, "10000" )
386   PORT_DIPSETTING(    0x02, "15000" )
387   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )               PORT_DIPLOCATION("SW2:4,5") /* Listed as "Game Level" */
388   PORT_DIPSETTING(    0x18, DEF_STR( Easy ) )
389   PORT_DIPSETTING(    0x10, DEF_STR( Normal ) )
390   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
391   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
392   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
393INPUT_PORTS_END
394
395static INPUT_PORTS_START( cbtime )
396   PORT_INCLUDE( decocass )
397
398   PORT_MODIFY("DSW2")
399   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
400   PORT_DIPSETTING(    0x01, "3" )
401   PORT_DIPSETTING(    0x00, "5" )
402   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
330403   PORT_DIPSETTING(    0x06, "20000" )
331404   PORT_DIPSETTING(    0x04, "30000" )
332405   PORT_DIPSETTING(    0x02, "40000" )
333   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:4,5")
334   PORT_DIPSETTING(    0x18, DEF_STR( Normal ) )      /* Number of Diamonds Little, Timer: Long */
335   PORT_DIPSETTING(    0x10, DEF_STR( Hard ) )      /* Number of Diamonds Little, Timer: Long */
336   PORT_DIPSETTING(    0x08, DEF_STR( Harder ) )      /* Number of Diamonds Many, Timer: Short */
337   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )      /* Number of Diamonds Many, Timer: Short */
338   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
406   PORT_DIPSETTING(    0x00, "50000" )
407   PORT_DIPNAME( 0x08, 0x08, "Enemies" )                        PORT_DIPLOCATION("SW2:4")
408   PORT_DIPSETTING(    0x08, "4" )
409   PORT_DIPSETTING(    0x00, "6" )
410   PORT_DIPNAME( 0x10, 0x10, "End of Level Pepper" )               PORT_DIPLOCATION("SW2:5")
411   PORT_DIPSETTING(    0x10, DEF_STR( No ) )
412   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
339413INPUT_PORTS_END
340414
341static INPUT_PORTS_START( cprogolf )
415static INPUT_PORTS_START( cgraplop )
342416   PORT_INCLUDE( decocass )
343417
344418   PORT_MODIFY("DSW2")
345   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
346   PORT_DIPSETTING(    0x01, "2" )
347   PORT_DIPSETTING(    0x00, "3" )
348   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3") /* You must shoot equal to or under the listed value for a bonus */
419   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
420   PORT_DIPSETTING(    0x01, "3" )
421   PORT_DIPSETTING(    0x00, "5" )
422   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
349423   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
350   PORT_DIPSETTING(    0x02, "6 Under" )
351   PORT_DIPSETTING(    0x04, "3 Under" )
352   PORT_DIPSETTING(    0x06, "1 Under" )
353   PORT_DIPNAME( 0x08, 0x08, "Number of Strokes" )      PORT_DIPLOCATION("SW2:4") /* You must shoot equal to or under to continue, else you lose a life */
354   PORT_DIPSETTING(    0x00, "Par +2" )
355   PORT_DIPSETTING(    0x08, "Par +3" )
356   PORT_DIPNAME( 0x10, 0x10, "Show Stroke Power/Ball Direction" )      PORT_DIPLOCATION("SW2:5")
357   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
358   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
359   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
424   PORT_DIPSETTING(    0x06, "20000" )
425   PORT_DIPSETTING(    0x04, "50000" )
426   PORT_DIPSETTING(    0x02, "70000" )
427   PORT_DIPNAME( 0x08, 0x08, "Number of Up Sign" )                  PORT_DIPLOCATION("SW2:4")
428   PORT_DIPSETTING(    0x08, "Few" )
429   PORT_DIPSETTING(    0x00, "Many" )
430   PORT_DIPNAME( 0x10, 0x10, "Falling Speed" )                     PORT_DIPLOCATION("SW2:5")
431   PORT_DIPSETTING(    0x10, DEF_STR( Easy ) )
432   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
433   /* Switches 6, 7 & 8 are listed as "Not Used" and "Don't Change" */
360434INPUT_PORTS_END
361435
362static INPUT_PORTS_START( csuperas )
436static INPUT_PORTS_START( cnightst )
363437   PORT_INCLUDE( decocass )
364438
365439   PORT_MODIFY("DSW2")
366   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
440   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
367441   PORT_DIPSETTING(    0x01, "3" )
368442   PORT_DIPSETTING(    0x00, "5" )
369   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
370   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
371   PORT_DIPSETTING(    0x06, "20000" )
372   PORT_DIPSETTING(    0x04, "30000" )
373   PORT_DIPSETTING(    0x02, "40000" )
374   PORT_DIPNAME( 0x08, 0x08, "Alien Craft Movement" )   PORT_DIPLOCATION("SW2:4")
375   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
376   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
443   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
444   PORT_DIPSETTING(    0x06, "When Night Star Completed (First 2 Times)" )
445   PORT_DIPSETTING(    0x04, "When Night Star Completed (First Time Only)" )
446   PORT_DIPSETTING(    0x02, "Every 70000"  )
447   PORT_DIPSETTING(    0x00, "30000 Only"  )
448   PORT_DIPNAME( 0x08, 0x08, "Number of Missles" )                  PORT_DIPLOCATION("SW2:4")
449   PORT_DIPSETTING(    0x08, "Few" )
450   PORT_DIPSETTING(    0x00, "Many" )
451   PORT_DIPNAME( 0x10, 0x10, "Enemy's Speed" )                     PORT_DIPLOCATION("SW2:5")
452   PORT_DIPSETTING(    0x10, "Slow" )
453   PORT_DIPSETTING(    0x00, "Fast" )
377454   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
378455INPUT_PORTS_END
379456
380static INPUT_PORTS_START( cscrtry )
457static INPUT_PORTS_START( cskater )
381458   PORT_INCLUDE( decocass )
382459
383460   PORT_MODIFY("DSW2")
384   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
385   PORT_DIPSETTING(    0x01, "2" )
386   PORT_DIPSETTING(    0x00, "4" )
387   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
388   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
389   PORT_DIPSETTING(    0x06, "30000" )
390   PORT_DIPSETTING(    0x04, "50000" )
391   PORT_DIPSETTING(    0x02, "70000" )
392   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:4")
461   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1") /* Listed as "Number of Balls" */
462   PORT_DIPSETTING(    0x01, "3" )
463   PORT_DIPSETTING(    0x00, "5" )
464   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
465   PORT_DIPSETTING(    0x00, "60000" )
466   PORT_DIPSETTING(    0x06, "20000" )
467   PORT_DIPSETTING(    0x04, "30000" )
468   PORT_DIPSETTING(    0x02, "40000" )
469   PORT_DIPNAME( 0x08, 0x08, "Enemy's Speed" )                     PORT_DIPLOCATION("SW2:4")
393470   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
394471   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
395   /* Switches 5, 6, 7 & 8 are listed as "Special Purpose" and "Don't Change" */
472   PORT_DIPNAME( 0x10, 0x10, "Number of Skates" )                  PORT_DIPLOCATION("SW2:5")
473   PORT_DIPSETTING(    0x10, "Small" )
474   PORT_DIPSETTING(    0x00, "Large" )
475   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
396476INPUT_PORTS_END
397477
398478static INPUT_PORTS_START( cpsoccer )
399479   PORT_INCLUDE( decocass )
400480
401481   PORT_MODIFY("DSW2")
402   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1") /* Listed as "Number of Balls" */
482   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1") /* Listed as "Number of Balls" */
403483   PORT_DIPSETTING(    0x01, "3" )
404484   PORT_DIPSETTING(    0x00, "5" )
405   PORT_DIPNAME( 0x06, 0x06, "Number of Nice Goal" )   PORT_DIPLOCATION("SW2:2,3")
485   PORT_DIPNAME( 0x06, 0x06, "Number of Nice Goal" )               PORT_DIPLOCATION("SW2:2,3")
406486   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
407487   PORT_DIPSETTING(    0x06, "5" )
408488   PORT_DIPSETTING(    0x04, "10" )
409489   PORT_DIPSETTING(    0x02, "20" )
410   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )   PORT_DIPLOCATION("SW2:4")
490   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )               PORT_DIPLOCATION("SW2:4")
411491   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
412492   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
413   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:4") /* Listed as "Class" */
493   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )               PORT_DIPLOCATION("SW2:4") /* Listed as "Class" */
414494   PORT_DIPSETTING(    0x10, DEF_STR( Easy ) )
415495   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
416496   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
417497INPUT_PORTS_END
418498
419static INPUT_PORTS_START( cterrani )
499static INPUT_PORTS_START( csdtenis )
420500   PORT_INCLUDE( decocass )
421501
422502   PORT_MODIFY("DSW2")
423   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
424   PORT_DIPSETTING(    0x01, "3" )
425   PORT_DIPSETTING(    0x00, "5" )
426   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
503   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1") /* Listed as "Number of Balls" */
504   PORT_DIPSETTING(    0x01, "2" )
505   PORT_DIPSETTING(    0x00, "1" )
506   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
427507   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
428   PORT_DIPSETTING(    0x06, "3000" )
429   PORT_DIPSETTING(    0x04, "5000" )
430   PORT_DIPSETTING(    0x02, "7000" )
431   PORT_DIPNAME( 0x08, 0x08, "Player's Rocket Movement" )   PORT_DIPLOCATION("SW2:4")
432   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
433   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
434   PORT_DIPNAME( 0x10, 0x10, "Alien Craft Movement" )   PORT_DIPLOCATION("SW2:5")
508   PORT_DIPSETTING(    0x06, "Every 1set" )
509   PORT_DIPSETTING(    0x04, "Every 2set" )
510   PORT_DIPSETTING(    0x02, "Every 3set" )
511   PORT_DIPNAME( 0x08, 0x08, "Speed Level" )                     PORT_DIPLOCATION("SW2:4")
512   PORT_DIPSETTING(    0x08, "Low Speed" )
513   PORT_DIPSETTING(    0x00, "High Speed" )
514   PORT_DIPNAME( 0x10, 0x10, "Attack Level" )                     PORT_DIPLOCATION("SW2:5")
435515   PORT_DIPSETTING(    0x10, DEF_STR( Easy ) )
436516   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
437   /* Switches 6, 7 & 8 are shown as completly blank */
517   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
438518INPUT_PORTS_END
439519
440static INPUT_PORTS_START( cmissnx )
520static INPUT_PORTS_START( cscrtry )
441521   PORT_INCLUDE( decocass )
442522
443523   PORT_MODIFY("DSW2")
444   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
445   PORT_DIPSETTING(    0x01, "3" )
446   PORT_DIPSETTING(    0x00, "5" )
447   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
524   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
525   PORT_DIPSETTING(    0x01, "2" )
526   PORT_DIPSETTING(    0x00, "4" )
527   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
448528   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
449   PORT_DIPSETTING(    0x06, "5000" )
450   PORT_DIPSETTING(    0x04, "10000" )
451   PORT_DIPSETTING(    0x02, "15000" )
452   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:4,5") /* Listed as "Game Level" */
453   PORT_DIPSETTING(    0x18, DEF_STR( Easy ) )
454   PORT_DIPSETTING(    0x10, DEF_STR( Normal ) )
455   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
456   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
457   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
529   PORT_DIPSETTING(    0x06, "30000" )
530   PORT_DIPSETTING(    0x04, "50000" )
531   PORT_DIPSETTING(    0x02, "70000" )
532   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )               PORT_DIPLOCATION("SW2:4")
533   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
534   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
535   PORT_DIPNAME( 0x10, 0x10, "Timer(Don't Change)" )               PORT_DIPLOCATION("SW2:5")
536   PORT_DIPSETTING(    0x10, "Timer decrease" )
537   PORT_DIPSETTING(    0x00, "Timer infinity" )
538   /* Switches 6, 7 & 8 are listed as "Special Purpose" and "Don't Change" */
458539INPUT_PORTS_END
459540
460541static INPUT_PORTS_START( cfghtice )
461542   PORT_INCLUDE( decocass )
462543
463544   PORT_MODIFY("DSW2")
464   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
545   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
465546   PORT_DIPSETTING(    0x01, "3" )
466547   PORT_DIPSETTING(    0x00, "5" )
467   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Very_Difficult ) )   PORT_DIPLOCATION("SW2:2,3")
548   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Very_Difficult ) )            PORT_DIPLOCATION("SW2:2,3")
468549   PORT_DIPSETTING(    0x04, DEF_STR( Very_Easy )  )
469550   PORT_DIPSETTING(    0x06, DEF_STR( Easy ) )
470551   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
471552   PORT_DIPSETTING(    0x02, DEF_STR( Very_Difficult ) )
472   PORT_DIPNAME( 0x08, 0x08, "Enemy's Speed" )      PORT_DIPLOCATION("SW2:4")
553   PORT_DIPNAME( 0x08, 0x08, "Enemy's Speed" )                     PORT_DIPLOCATION("SW2:4")
473554   PORT_DIPSETTING(    0x08, DEF_STR( Normal ) )
474555   PORT_DIPSETTING(    0x00, "Fast" )
475556   PORT_SERVICE_DIPLOC(  0x10, IP_ACTIVE_LOW, "SW2:5" )   /* Listed as Test Mode, but doesn't seem to work??? */
476557   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
477558INPUT_PORTS_END
478559
479static INPUT_PORTS_START( clocknch )
560static INPUT_PORTS_START( cbdash )
480561   PORT_INCLUDE( decocass )
481562
482563   PORT_MODIFY("DSW2")
483   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
564   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )                  PORT_DIPLOCATION("SW2:1")
484565   PORT_DIPSETTING(    0x01, "3" )
485566   PORT_DIPSETTING(    0x00, "5" )
486   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
567   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )               PORT_DIPLOCATION("SW2:2,3")
487568   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
488   PORT_DIPSETTING(    0x06, "15000" )
489   PORT_DIPSETTING(    0x04, "20000" )
490   PORT_DIPSETTING(    0x02, "30000" )
491   /* Switches 4, 5, 6, 7 & 8 are listed as "Not Used" and "Don't Change" */
492INPUT_PORTS_END
493
494static INPUT_PORTS_START( cgraplop )
495   PORT_INCLUDE( decocass )
496
497   PORT_MODIFY("DSW2")
498   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
499   PORT_DIPSETTING(    0x01, "3" )
500   PORT_DIPSETTING(    0x00, "5" )
501   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
502   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
503569   PORT_DIPSETTING(    0x06, "20000" )
504   PORT_DIPSETTING(    0x04, "50000" )
505   PORT_DIPSETTING(    0x02, "70000" )
506   PORT_DIPNAME( 0x08, 0x08, "Number of UPs" )      PORT_DIPLOCATION("SW2:4")
507   PORT_DIPSETTING(    0x08, "Few" )
508   PORT_DIPSETTING(    0x00, "Many" )
509   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:5") /* Listed as "Falling Speed" */
510   PORT_DIPSETTING(    0x10, DEF_STR( Easy ) )
511   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
512   /* Switches 6, 7 & 8 are listed as "Not Used" and "Don't Change" */
513INPUT_PORTS_END
514
515static INPUT_PORTS_START( cexplore )
516   PORT_INCLUDE( decocass )
517
518   PORT_MODIFY("DSW2")
519   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1")
520   PORT_DIPSETTING(    0x01, "3" )
521   PORT_DIPSETTING(    0x00, "5" )
522   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:2,3")
523   PORT_DIPSETTING(    0x00, DEF_STR( None )  )
524   PORT_DIPSETTING(    0x06, "10000" )
525   PORT_DIPSETTING(    0x04, "1500000" )
526   PORT_DIPSETTING(    0x02, "30000" )
527   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:4") /* Listed as "Missle" */
528   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
529   PORT_DIPSETTING(    0x00, DEF_STR( Difficult ) )
530   PORT_DIPNAME( 0x10, 0x10, "Number of UFOs" )      PORT_DIPLOCATION("SW2:5")
531   PORT_DIPSETTING(    0x10, "Few" )
532   PORT_DIPSETTING(    0x00, "Many" )
570   PORT_DIPSETTING(    0x04, "30000" )
571   PORT_DIPSETTING(    0x02, "40000" )
572   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )               PORT_DIPLOCATION("SW2:4,5")
573   PORT_DIPSETTING(    0x18, DEF_STR( Normal ) )      /* Number of Diamonds Little, Timer: Long */
574   PORT_DIPSETTING(    0x10, DEF_STR( Hard ) )      /* Number of Diamonds Little, Timer: Long */
575   PORT_DIPSETTING(    0x08, DEF_STR( Harder ) )      /* Number of Diamonds Many, Timer: Short */
576   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )      /* Number of Diamonds Many, Timer: Short */
533577   /* Switches 6, 7 & 8 are listed as "Country Code" A through F and "Don't Change" */
534578INPUT_PORTS_END
535579
r14742r14743
650694
651695   /* video hardware */
652696   MCFG_SCREEN_ADD("screen", RASTER)
653   MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
697   MCFG_SCREEN_RAW_PARAMS(HCLK, 384, 0*8, 256, 272, 1*8, 248)
654698   MCFG_SCREEN_UPDATE_STATIC(decocass)
655699
656700   MCFG_GFXDECODE(decocass)
r14742r14743
684728MACHINE_CONFIG_END
685729
686730
687static MACHINE_CONFIG_DERIVED( clocknch, decocass )
731static MACHINE_CONFIG_DERIVED( cterrani, decocass )
688732
689733   /* basic machine hardware */
690   MCFG_MACHINE_RESET(clocknch)
734   MCFG_MACHINE_RESET(cterrani)
691735MACHINE_CONFIG_END
692736
693737
694static MACHINE_CONFIG_DERIVED( ctisland, decocass )
738static MACHINE_CONFIG_DERIVED( castfant, decocass )
695739
696740   /* basic machine hardware */
697   MCFG_MACHINE_RESET(ctisland)
741   MCFG_MACHINE_RESET(castfant)
698742MACHINE_CONFIG_END
699743
700744
r14742r14743
705749MACHINE_CONFIG_END
706750
707751
708static MACHINE_CONFIG_DERIVED( castfant, decocass )
752static MACHINE_CONFIG_DERIVED( clocknch, decocass )
709753
710754   /* basic machine hardware */
711   MCFG_MACHINE_RESET(castfant)
755   MCFG_MACHINE_RESET(clocknch)
712756MACHINE_CONFIG_END
713757
714758
759static MACHINE_CONFIG_DERIVED( cprogolf, decocass )
760
761   /* basic machine hardware */
762   MCFG_MACHINE_RESET(cprogolf)
763MACHINE_CONFIG_END
764
765
715766static MACHINE_CONFIG_DERIVED( cluckypo, decocass )
716767
717768   /* basic machine hardware */
r14742r14743
719770MACHINE_CONFIG_END
720771
721772
722static MACHINE_CONFIG_DERIVED( cterrani, decocass )
773static MACHINE_CONFIG_DERIVED( ctisland, decocass )
723774
724775   /* basic machine hardware */
725   MCFG_MACHINE_RESET(cterrani)
776   MCFG_MACHINE_RESET(ctisland)
726777MACHINE_CONFIG_END
727778
728779
r14742r14743
733784MACHINE_CONFIG_END
734785
735786
736static MACHINE_CONFIG_DERIVED( cprogolf, decocass )
787static MACHINE_CONFIG_DERIVED( cdiscon1, decocass )
737788
738789   /* basic machine hardware */
739   MCFG_MACHINE_RESET(cprogolf)
790   MCFG_MACHINE_RESET(cdiscon1)
740791MACHINE_CONFIG_END
741792
742793
743static MACHINE_CONFIG_DERIVED( cmissnx, decocass )
794static MACHINE_CONFIG_DERIVED( ctornado, decocass )
744795
745796   /* basic machine hardware */
746   MCFG_MACHINE_RESET(cmissnx)
797   MCFG_MACHINE_RESET(ctornado)
747798MACHINE_CONFIG_END
748799
749800
750static MACHINE_CONFIG_DERIVED( cdiscon1, decocass )
801static MACHINE_CONFIG_DERIVED( cmissnx, decocass )
751802
752803   /* basic machine hardware */
753   MCFG_MACHINE_RESET(cdiscon1)
804   MCFG_MACHINE_RESET(cmissnx)
754805MACHINE_CONFIG_END
755806
756807
r14742r14743
761812MACHINE_CONFIG_END
762813
763814
764static MACHINE_CONFIG_DERIVED( ctornado, decocass )
815static MACHINE_CONFIG_DERIVED( cbtime, decocass )
765816
766817   /* basic machine hardware */
767   MCFG_MACHINE_RESET(ctornado)
818   MCFG_MACHINE_RESET(cbtime)
768819MACHINE_CONFIG_END
769820
770821
771static MACHINE_CONFIG_DERIVED( cbnj, decocass )
772
773   /* basic machine hardware */
774   MCFG_MACHINE_RESET(cbnj)
775MACHINE_CONFIG_END
776
777
778822static MACHINE_CONFIG_DERIVED( cburnrub, decocass )
779823
780824   /* basic machine hardware */
r14742r14743
782826MACHINE_CONFIG_END
783827
784828
785static MACHINE_CONFIG_DERIVED( cbtime, decocass )
786
787   /* basic machine hardware */
788   MCFG_MACHINE_RESET(cbtime)
789MACHINE_CONFIG_END
790
791
792829static MACHINE_CONFIG_DERIVED( cgraplop, decocass )
793830
794831   /* basic machine hardware */
r14742r14743
810847MACHINE_CONFIG_END
811848
812849
813static MACHINE_CONFIG_DERIVED( cfghtice, decocass )
850static MACHINE_CONFIG_DERIVED( cskater, decocass )
814851
815852   /* basic machine hardware */
816   MCFG_MACHINE_RESET(cfghtice)
853   MCFG_MACHINE_RESET(cskater)
817854MACHINE_CONFIG_END
818855
819856
r14742r14743
838875MACHINE_CONFIG_END
839876
840877
878static MACHINE_CONFIG_DERIVED( csdtenis, decocass )
879
880   /* basic machine hardware */
881   MCFG_MACHINE_RESET(csdtenis)
882MACHINE_CONFIG_END
883
884
885static MACHINE_CONFIG_DERIVED( czeroize, decocass )
886
887   /* basic machine hardware */
888   MCFG_MACHINE_RESET(czeroize)
889MACHINE_CONFIG_END
890
891
841892static MACHINE_CONFIG_DERIVED( cppicf, decocass )
842893
843894   /* basic machine hardware */
r14742r14743
845896MACHINE_CONFIG_END
846897
847898
848static MACHINE_CONFIG_DERIVED( cbdash, decocass )
899static MACHINE_CONFIG_DERIVED( cfghtice, decocass )
849900
850901   /* basic machine hardware */
851   MCFG_MACHINE_RESET(cbdash)
902   MCFG_MACHINE_RESET(cfghtice)
852903MACHINE_CONFIG_END
853904
854905
855static MACHINE_CONFIG_DERIVED( cscrtry, decocass )
906static MACHINE_CONFIG_DERIVED( type4, decocass )
856907
857908   /* basic machine hardware */
858   MCFG_MACHINE_RESET(cscrtry)
909   MCFG_MACHINE_RESET(type4)
859910MACHINE_CONFIG_END
860911
861912
862static MACHINE_CONFIG_DERIVED( cflyball, decocass )
913static MACHINE_CONFIG_DERIVED( cbdash, decocass )
863914
864915   /* basic machine hardware */
865   MCFG_MACHINE_RESET(cflyball)
916   MCFG_MACHINE_RESET(cbdash)
866917MACHINE_CONFIG_END
867918
868919
869static MACHINE_CONFIG_DERIVED( czeroize, decocass )
920static MACHINE_CONFIG_DERIVED( cflyball, decocass )
870921
871922   /* basic machine hardware */
872   MCFG_MACHINE_RESET(czeroize)
873   MCFG_SCREEN_MODIFY("screen")
874   MCFG_SCREEN_VISIBLE_AREA(1*8, 32*8-1, 1*8, 31*8-1)
923   MCFG_MACHINE_RESET(cflyball)
875924MACHINE_CONFIG_END
876925
877926
878927#define DECOCASS_COMMON_ROMS   \
879928   ROM_REGION( 0x10000, "audiocpu", 0 )     \
880   ROM_LOAD( "v1.5a",     0xf800, 0x0800, CRC(b66b2c2a) SHA1(0097f38beb4872e735e560148052e258a26b08fd) ) /* from RMS-8 board: 2716 eprom @5A w/V1 label,  contains audio cpu code */ \
929   ROM_LOAD( "v1-.5a",     0xf800, 0x0800, CRC(b66b2c2a) SHA1(0097f38beb4872e735e560148052e258a26b08fd) ) /* from RMS-8 board: 2716 eprom @5A w/V1- label,  contains audio cpu code */ \
881930\
882931   ROM_REGION( 0x10000, "mcu", 0 )     /* 4k for the 8041 MCU (actually 1K ROM + 64 bytes RAM @ 0x800) */ \
883   ROM_LOAD( "cassmcu.1c", 0x0000, 0x0400, CRC(a6df18fd) SHA1(1f9ea47e372d31767c936c15852b43df2b0ee8ff) ) /* from B10-B board: "NEC // JAPAN // X1202D-108 // D8041C 535" 8041 MCU @1C, handles cassette and other stuff; This info needs additional verification, as the d8041-535 mcu has not been dumped yet to prove code is the same. */ \
932   ROM_LOAD( "cassmcu.1c", 0x0000, 0x0400, CRC(a6df18fd) SHA1(1f9ea47e372d31767c936c15852b43df2b0ee8ff) ) /* from B10-B board: "NEC // JAPAN // X1202D-108 // D8041C 535" 8041 MCU @1C, handles cassette and other stuff; This info needs additional verification, as the d8041-535 mcu has not been dumped yet to prove code is the same. */ \
884933\
885934   ROM_REGION( 0x00060, "proms", 0 )     /* PROMS */ \
886935   ROM_LOAD( "v2.3m",      0x0000, 0x0020, CRC(238fdb40) SHA1(b88e8fabb82092105c3828154608ea067acbf2e5) ) /* from DSP-8 board: M3-7603-5 (82s123 equiv, 32x8 TS) PROM @3M w/'V2' stamp, unknown purpose (gfx related: row/interrupt/vblank related? vertical counter related) */ \
r14742r14743
892941   /* v0a.7e, New boardset bios, revision A */ \
893942\
894943   ROM_REGION( 0x10000, "maincpu", 0 ) \
895   ROM_LOAD( "v0a.7e", 0xf000, 0x1000, CRC(3D33AC34) SHA1(909D59E7A993AFFD10224402B4370E82A5F5545C) ) /* from RMS-8 board: 2732 EPROM @7E w/'V0A' label (has HDRA01HDR string inside it), bios code */ \
944   ROM_LOAD( "v0a-.7e",    0xf000, 0x1000, CRC(3D33AC34) SHA1(909D59E7A993AFFD10224402B4370E82A5F5545C) ) /* from RMS-8 board: 2732 EPROM @7E w/'V0A-' label (has HDRA01HDR string inside it), bios code */ \
896945\
897946   DECOCASS_COMMON_ROMS \
898947
r14742r14743
901950   /* rms8.7e, New boardset bios, revision B */ \
902951\
903952   ROM_REGION( 0x10000, "maincpu", 0 ) \
904   ROM_LOAD( "rms8.7e", 0xf000, 0x1000, CRC(23d929b7) SHA1(063f83020ba3d6f43ab8471f95ca919767b93aa4) ) /* from RMS-8 board: 2732 EPROM @7E w/unknown label (probably 'V0B', needs checking; has HDRB01HDR string in it), bios code */ \
953   ROM_LOAD( "v0b-.7e",    0xf000, 0x1000, CRC(23d929b7) SHA1(063f83020ba3d6f43ab8471f95ca919767b93aa4) ) /* from RMS-8 board: 2732 EPROM @7E w/'V0B-' label (has HDRB01HDR string inside it), bios code */ \
905954\
906955   DECOCASS_COMMON_ROMS \
907956
r14742r14743
910959   /* dsp3.p0b/p1b, Old boardset bios, revision B?; from DSP-3 board? has HDRB01x string in it, 2x 2716 EPROM? */ \
911960\
912961   ROM_REGION( 0x10000, "maincpu", 0 ) \
913   ROM_LOAD( "dsp3.p0b",  0xf000, 0x0800, CRC(b67a91d9) SHA1(681c040be0f0ed1ba0a50161b36d0ad8e1c8c5cb) ) \
914   ROM_LOAD( "dsp3.p1b",  0xf800, 0x0800, CRC(3bfff5f3) SHA1(4e9437cb1b76d64da6b37f01bd6e879fb399e8ce) ) \
962   ROM_LOAD( "dsp3.p0b",   0xf000, 0x0800, CRC(b67a91d9) SHA1(681c040be0f0ed1ba0a50161b36d0ad8e1c8c5cb) ) \
963   ROM_LOAD( "dsp3.p1b",   0xf800, 0x0800, CRC(3bfff5f3) SHA1(4e9437cb1b76d64da6b37f01bd6e879fb399e8ce) ) \
915964\
916965   DECOCASS_COMMON_ROMS \
917966
r14742r14743
934983   ROM_LOAD( "testtape.cas", 0x0000, 0x2000, CRC(4f9d8efb) SHA1(5b77747dad1033e5703f06c0870441b54b4256c5) )
935984ROM_END
936985
986/* 01 Highway Chase */
937987ROM_START( chwy )
938988   DECOCASS_BIOS_B_ROMS
939989
r14742r14743
945995   ROM_LOAD( "chwy.cas",   0x0000, 0x8000, CRC(68a48064) SHA1(7e389737972fd0c54f398d296159c561f5ec3a93) )
946996ROM_END
947997
948ROM_START( clocknch )
998/* 04 Terranean */
999ROM_START( cterrani )
9491000   DECOCASS_BIOS_B_ROMS
9501001
9511002   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
9521003   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
9531004
9541005   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
955   ROM_LOAD( "clocknch.cas", 0x0000, 0x8000, CRC(c9d163a4) SHA1(3ef55a8d8f603059e263776c08eb81f2cf18b75c) )
1006   ROM_LOAD( "cterrani.cas", 0x0000, 0x8000, CRC(eb71adbc) SHA1(67becfde39c034d4b8edc2eb100050de102773da) )
9561007ROM_END
9571008
958ROM_START( ctisland )
1009/* 07 Astro Fantasia */
1010ROM_START( castfant )
9591011   DECOCASS_BIOS_B_ROMS
9601012
9611013   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
9621014   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
9631015
9641016   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
965   ROM_LOAD( "ctisland.cas", 0x0000, 0x8000, CRC(3f63b8f8) SHA1(2fd0679ef9750a228ebb098672ab6091fda75804) )
966
967   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
968   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
969   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
970   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
971   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
1017   ROM_LOAD( "castfant.cas", 0x0000, 0x8000, CRC(6d77d1b5) SHA1(821bd65fbe887cbeac9281a2ad3f88595918f886) )
9721018ROM_END
9731019
974ROM_START( ctisland2 )
1020/* 09 Super Astro Fighter */
1021ROM_START( csuperas )
9751022   DECOCASS_BIOS_B_ROMS
9761023
9771024   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
9781025   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
9791026
9801027   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
981   ROM_LOAD( "ctislnd2.cas", 0x0000, 0x8000, CRC(2854b4c0) SHA1(d3b4e0031dbb2340fbbe396a1ff9b8fbfd63663e) )
982
983   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
984   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
985   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
986   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
987   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
1028   ROM_LOAD( "csuperas.cas", 0x0000, 0x8000, CRC(fabcd07f) SHA1(4070c668ad6725f0710cf7fe6df0d5f80272a449) )
9881029ROM_END
9891030
990ROM_START( ctisland3 )
1031/* 11 Lock'n'Chase */
1032ROM_START( clocknch )
9911033   DECOCASS_BIOS_B_ROMS
9921034
9931035   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
9941036   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
9951037
9961038   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
997   ROM_LOAD( "ctislnd3.cas", 0x0000, 0x8000, CRC(45464e1e) SHA1(03275694d963c7ab0e0f5525e248e69da5f9b591) )
998
999   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
1000   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
1001   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
1002   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
1003   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
1039   ROM_LOAD( "clocknch.cas", 0x0000, 0x8000, CRC(c9d163a4) SHA1(3ef55a8d8f603059e263776c08eb81f2cf18b75c) )
10041040ROM_END
10051041
1006ROM_START( csuperas )
1042/* 13 */
1043ROM_START( cprogolf )
10071044   DECOCASS_BIOS_B_ROMS
10081045
10091046   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
10101047   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
10111048
10121049   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1013   ROM_LOAD( "csuperas.cas", 0x0000, 0x8000, CRC(fabcd07f) SHA1(4070c668ad6725f0710cf7fe6df0d5f80272a449) )
1050   ROM_LOAD( "cprogolf.cas", 0x0000, 0x8000, CRC(02123cd1) SHA1(e4c630ed293725f23d539cb43beb97953558dabd) )
10141051ROM_END
10151052
1016ROM_START( castfant )
1053/* 15 Lucky Poker */
1054ROM_START( cluckypo )
10171055   DECOCASS_BIOS_B_ROMS
10181056
10191057   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
10201058   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
10211059
10221060   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1023   ROM_LOAD( "castfant.cas", 0x0000, 0x8000, CRC(6d77d1b5) SHA1(821bd65fbe887cbeac9281a2ad3f88595918f886) )
1061   ROM_LOAD( "cluckypo.cas", 0x0000, 0x8000, CRC(2070c243) SHA1(cd3af309af8eb27937756c1fe6fd0504be5aaaf5) )
10241062ROM_END
10251063
1026ROM_START( cluckypo )
1064/* 16 Treasure Island */
1065ROM_START( ctisland )
10271066   DECOCASS_BIOS_B_ROMS
10281067
10291068   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
10301069   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
10311070
10321071   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1033   ROM_LOAD( "cluckypo.cas", 0x0000, 0x8000, CRC(2070c243) SHA1(cd3af309af8eb27937756c1fe6fd0504be5aaaf5) )
1072   ROM_LOAD( "ctisland.cas", 0x0000, 0x8000, CRC(3f63b8f8) SHA1(2fd0679ef9750a228ebb098672ab6091fda75804) )
1073
1074   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
1075   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
1076   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
1077   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
1078   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
10341079ROM_END
10351080
1036ROM_START( cterrani )
1081ROM_START( ctisland2 )
10371082   DECOCASS_BIOS_B_ROMS
10381083
10391084   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
10401085   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
10411086
10421087   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1043   ROM_LOAD( "cterrani.cas", 0x0000, 0x8000, CRC(eb71adbc) SHA1(67becfde39c034d4b8edc2eb100050de102773da) )
1088   ROM_LOAD( "ctislnd2.cas", 0x0000, 0x8000, CRC(2854b4c0) SHA1(d3b4e0031dbb2340fbbe396a1ff9b8fbfd63663e) )
1089
1090   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
1091   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
1092   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
1093   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
1094   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
10441095ROM_END
10451096
1046ROM_START( cexplore )
1097ROM_START( ctisland3 )
10471098   DECOCASS_BIOS_B_ROMS
10481099
10491100   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
1050   /* The dongle data is reverse engineered by table analysis */
1051   ROM_LOAD( "cexplore.pro", 0x0000, 0x0020, BAD_DUMP CRC(c7a9ac8f) SHA1(b0a566d948f71a4eddcde0dd5e9e69ca96f71c36) )
1101   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
10521102
10531103   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1054   ROM_LOAD( "cexplore.cas", 0x0000, 0x8000, CRC(fae49c66) SHA1(4ae69e2f706fdf30204f0aa1277619395cacc21b) )
1104   ROM_LOAD( "ctislnd3.cas", 0x0000, 0x8000, CRC(45464e1e) SHA1(03275694d963c7ab0e0f5525e248e69da5f9b591) )
10551105
10561106   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
1057   ROM_LOAD( "cexplore_overlay_roms", 0x0000, 0x4000, NO_DUMP )
1107   ROM_LOAD( "deco-ti.x1",   0x0000, 0x1000, CRC(a7f8aeba) SHA1(0c9ba1a46d0636b36f40fad31638db89f374f778) )
1108   ROM_LOAD( "deco-ti.x2",   0x1000, 0x1000, CRC(2a0d3c91) SHA1(552d08fcddddbea5b52fa1e8decd188ae49c86ea) )
1109   ROM_LOAD( "deco-ti.x3",   0x2000, 0x1000, CRC(3a26b97c) SHA1(f57e76077806e149a9e455c85e5431eac2d42bc3) )
1110   ROM_LOAD( "deco-ti.x4",   0x3000, 0x1000, CRC(1cbe43de) SHA1(8f26ad224e96c87da810c60d3dd88d415400b9fc) )
10581111ROM_END
10591112
1060ROM_START( cprogolf )
1113/* 18 Explorer */
1114ROM_START( cexplore )
10611115   DECOCASS_BIOS_B_ROMS
10621116
10631117   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
1064   ROM_LOAD( "de-0061.pro", 0x0000, 0x0020, CRC(e09ae5de) SHA1(7dec067d0739a6dad2607132641b66880a5b7751) )
1118   /* The dongle data is reverse engineered by table analysis */
1119   ROM_LOAD( "cexplore.pro", 0x0000, 0x0020, BAD_DUMP CRC(c7a9ac8f) SHA1(b0a566d948f71a4eddcde0dd5e9e69ca96f71c36) )
10651120
10661121   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1067   ROM_LOAD( "cprogolf.cas", 0x0000, 0x8000, CRC(02123cd1) SHA1(e4c630ed293725f23d539cb43beb97953558dabd) )
1122   ROM_LOAD( "cexplore.cas", 0x0000, 0x8000, CRC(fae49c66) SHA1(4ae69e2f706fdf30204f0aa1277619395cacc21b) )
1123
1124   ROM_REGION( 0x4000, "user3", 0 )     /* roms from the overlay pcb */
1125   ROM_LOAD( "cexplore_overlay_roms", 0x0000, 0x4000, NO_DUMP )
10681126ROM_END
10691127
10701128/* The Following use Dongle Type 2 (CS82-007)
10711129    (dongle data differs for each game)      */
10721130
1073ROM_START( cmissnx )
1074   DECOCASS_BIOS_B_ROMS
1075
1076   ROM_REGION( 0x00800, "dongle", 0 )     /* dongle data */
1077   ROM_LOAD( "cmissnx.pro",  0x0000, 0x0800, CRC(8a41c071) SHA1(7b16d933707bf21d25dcd11db6a6c28834b11c5b) )
1078
1079   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1080   ROM_LOAD( "cmissnx.cas",  0x0000, 0x8000, CRC(3a094e11) SHA1(c355fe14838187cbde19a799e5c60083c82615ac) )
1081ROM_END
1082
1131/* 19 Disco No.1 / Sweet Heart */
10831132ROM_START( cdiscon1 )
10841133   DECOCASS_BIOS_B_ROMS
10851134
r14742r14743
11001149   ROM_LOAD( "csweetht.cas", 0x0000, 0x8000, CRC(175ef706) SHA1(49b86233f69d0daf54a6e59b86e69b8159e8f6cc) )
11011150ROM_END
11021151
1103ROM_START( cptennis )
1152/* 20 Tornado */
1153ROM_START( ctornado )
11041154   DECOCASS_BIOS_B_ROMS
11051155
11061156   ROM_REGION( 0x00800, "dongle", 0 )     /* dongle data */
1107   ROM_LOAD( "cptennis.pro", 0x0000, 0x0800, CRC(59b8cede) SHA1(514861a652b5256a11477fc357bc01dfd87f712b) )
1157   ROM_LOAD( "ctornado.pro", 0x0000, 0x0800, CRC(c9a91697) SHA1(3f7163291edbdf1a596e3cd2b7a16bbb140ffb36) )
11081158
11091159   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1110   ROM_LOAD( "cptennis.cas", 0x0000, 0x8000, CRC(6bb257fe) SHA1(7554bf1996bc9e9c04a276aab050708d70103f54) )
1160   ROM_LOAD( "ctornado.cas", 0x0000, 0x8000, CRC(e4e36ce0) SHA1(48a11823121fb2e3de31ae08e453c0124fc4f7f3) )
11111161ROM_END
11121162
1113ROM_START( ctornado )
1163/* 21 Mission-X */
1164ROM_START( cmissnx )
11141165   DECOCASS_BIOS_B_ROMS
11151166
11161167   ROM_REGION( 0x00800, "dongle", 0 )     /* dongle data */
1117   ROM_LOAD( "ctornado.pro", 0x0000, 0x0800, CRC(c9a91697) SHA1(3f7163291edbdf1a596e3cd2b7a16bbb140ffb36) )
1168   ROM_LOAD( "cmissnx.pro", 0x0000, 0x0800, CRC(8a41c071) SHA1(7b16d933707bf21d25dcd11db6a6c28834b11c5b) )
11181169
11191170   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1120   ROM_LOAD( "ctornado.cas", 0x0000, 0x8000, CRC(e4e36ce0) SHA1(48a11823121fb2e3de31ae08e453c0124fc4f7f3) )
1171   ROM_LOAD( "cmissnx.cas", 0x0000, 0x8000, CRC(3a094e11) SHA1(c355fe14838187cbde19a799e5c60083c82615ac) )
11211172ROM_END
11221173
1174/* 22 Pro Tennis */
1175ROM_START( cptennis )
1176   DECOCASS_BIOS_B_ROMS
1177
1178   ROM_REGION( 0x00800, "dongle", 0 )     /* dongle data */
1179   ROM_LOAD( "cptennis.pro", 0x0000, 0x0800, CRC(59b8cede) SHA1(514861a652b5256a11477fc357bc01dfd87f712b) )
1180
1181   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1182   ROM_LOAD( "cptennis.cas", 0x0000, 0x8000, CRC(6bb257fe) SHA1(7554bf1996bc9e9c04a276aab050708d70103f54) )
1183ROM_END
1184
1185
11231186/* The Following use Dongle Type 3 (unknown part number?)
11241187    (dongle data differs for each game)      */
11251188
1189/* 26 Hamburger / Burger Time */
1190ROM_START( cbtime )
1191   DECOCASS_BIOS_B_ROMS
1192
1193   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1194   ROM_LOAD( "cbtime.pro",   0x0000, 0x1000, CRC(25bec0f0) SHA1(9fb1f9699f37937421e26d4fb8fdbcd21a5ddc5c) )
1195
1196   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1197   ROM_LOAD( "cbtime.cas",   0x0000, 0x8000, CRC(56d7dc58) SHA1(34b2513c9ca7ab40f532b6d6d911aa3012113632) )
1198ROM_END
1199
1200/* 27 Burnin' Rubber / Bump 'n' Jump */
11261201ROM_START( cburnrub )
11271202   DECOCASS_BIOS_B_ROMS
11281203
r14742r14743
11531228   ROM_LOAD( "cbnj.cas",       0x0000, 0x8000, CRC(eed41560) SHA1(85d5df76efac33cd10427f659c4259afabb3daaf) )
11541229ROM_END
11551230
1156ROM_START( cbtime )
1157   DECOCASS_BIOS_B_ROMS
1158
1159   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1160   ROM_LOAD( "cbtime.pro",   0x0000, 0x1000, CRC(25bec0f0) SHA1(9fb1f9699f37937421e26d4fb8fdbcd21a5ddc5c) )
1161
1162   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1163   ROM_LOAD( "cbtime.cas",   0x0000, 0x8000, CRC(56d7dc58) SHA1(34b2513c9ca7ab40f532b6d6d911aa3012113632) )
1164ROM_END
1165
1231/* 28 Graplop / Cluster Buster */
11661232ROM_START( cgraplop )
11671233   DECOCASS_BIOS_B_ROMS
11681234
r14742r14743
11831249   ROM_LOAD( "cgraplop2.cas", 0x0000, 0x8000, CRC(2e728981) SHA1(83ba90d95858d647315a1c311b8643672afea5f7) )
11841250ROM_END
11851251
1252/* 29 La-Pa-Pa / Rootin' Tootin' */
11861253ROM_START( clapapa )
11871254   DECOCASS_BIOS_B_ROMS
11881255
r14742r14743
12031270   ROM_LOAD( "clapapa2.cas",  0x0000, 0x8000, CRC(069dd3c4) SHA1(5a19392c7ac5aea979187c96267e73bf5126307e) )
12041271ROM_END
12051272
1206ROM_START( cfghtice )
1207   DECOCASS_BIOS_B_ROMS
1273/* 30 Skater */
1274ROM_START( cskater )
1275   DECOCASS_BIOS_A_ROMS
12081276
12091277   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1210   ROM_LOAD( "cfghtice.pro", 0x0000, 0x1000, CRC(5abd27b5) SHA1(2ab1c171adffd491759036d6ce2433706654aad2) )
1278   ROM_LOAD( "dp-130 a.dgl",   0x0000, 0x1000, CRC(469e80a8) SHA1(f581cd534ce6faba010c6616538cdf9d96d787da) )
12111279
12121280   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1213   ROM_LOAD( "cfghtice.cas", 0x0000, 0x10000, CRC(906dd7fb) SHA1(894a7970d5476ed035edd15656e5cf10d6ddcf57) )
1281   ROM_LOAD( "dt-130 a.bin",   0x0000, 0x8000, CRC(1722e5e1) SHA1(e94066ead608df85d3f7310d4a81ba291da4bee6) )
12141282ROM_END
12151283
1284/* 31 Pro Bowling */
12161285ROM_START( cprobowl )
12171286   DECOCASS_BIOS_B_ROMS
12181287
r14742r14743
12231292   ROM_LOAD( "cprobowl.cas", 0x0000, 0x8000, CRC(cb86c5e1) SHA1(66c467418cff2ed6d7c121a8b1650ee97ae48fe9) )
12241293ROM_END
12251294
1295/* 32 Night Star */
12261296ROM_START( cnightst )
12271297   DECOCASS_BIOS_B_ROMS
12281298
r14742r14743
12431313   ROM_LOAD( "cnights2.cas", 0x0000, 0x8000, CRC(1a28128c) SHA1(4b620a1919d02814f734aba995115c09dc2db930) )
12441314ROM_END
12451315
1316/* 33 Pro Soccer */
12461317ROM_START( cpsoccer )
12471318   DECOCASS_BIOS_B_ROMS
12481319
r14742r14743
12571328   DECOCASS_BIOS_A_ROMS
12581329
12591330   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1260   ROM_LOAD( "dp-133a.dgl", 0x0000, 0x1000,  CRC(919fabb2) SHA1(3d6a0676cea7b0be0fe69d06e04ca08c36b2851a) )
1331   ROM_LOAD( "dp-133 a.dgl",  0x0000, 0x1000,  CRC(919fabb2) SHA1(3d6a0676cea7b0be0fe69d06e04ca08c36b2851a) )
12611332
12621333   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1263   ROM_LOAD( "dt-133a.cas", 0x0000, 0x10000, CRC(de682a29) SHA1(2ee0dd8cb7fb595020d730a9da5d9cccda3f1264) )
1334   ROM_LOAD( "dt-133 a.bin",  0x0000, 0x10000, CRC(de682a29) SHA1(2ee0dd8cb7fb595020d730a9da5d9cccda3f1264) )
12641335ROM_END
12651336
1337/* 34 Super Doubles Tennis */
1338ROM_START( csdtenis )
1339   DECOCASS_BIOS_A_ROMS
1340
1341   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1342   ROM_LOAD( "dp-134 a.dgl",   0x0000, 0x1000,  CRC(e484d2f5) SHA1(ee4e4c221933d391aeed8ff7182fa931a4e01466) )
1343
1344   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1345   ROM_LOAD( "dt-134 a.bin",   0x0000, 0x10000, CRC(9a69d961) SHA1(f88e267815ca0697708aca0ac9fa6f7664a0519c) )
1346ROM_END
1347
1348/* 37 Zeroize */
1349ROM_START( czeroize )
1350   DECOCASS_BIOS_B_ROMS
1351
1352   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1353   ROM_LOAD( "czeroize.pro",  0x0000, 0x1000, NO_DUMP ) /* The Following have unknown Dongles (dongle data not read) */
1354
1355   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1356   ROM_LOAD( "czeroize.cas",   0x0000, 0x10000, CRC(3ef0a406) SHA1(645b34cd477e0bb5539c8fe937a7a2dbd8369003) )
1357ROM_END
1358
1359/* 39 Peter Pepper's Ice Cream Factory */
12661360ROM_START( cppicf )
12671361   DECOCASS_BIOS_B_ROMS
12681362
r14742r14743
12831377   ROM_LOAD( "cppicf2.cas",   0x0000, 0x8000, CRC(78ffa1bc) SHA1(d15f2a240ae7b45885d32b5f507243f82e820d4b) )
12841378ROM_END
12851379
1380/* 40 Fighting Ice Hockey */
1381ROM_START( cfghtice )
1382   DECOCASS_BIOS_B_ROMS
1383
1384   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1385   ROM_LOAD( "cfghtice.pro", 0x0000, 0x1000, CRC(5abd27b5) SHA1(2ab1c171adffd491759036d6ce2433706654aad2) )
1386
1387   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1388   ROM_LOAD( "cfghtice.cas", 0x0000, 0x10000, CRC(906dd7fb) SHA1(894a7970d5476ed035edd15656e5cf10d6ddcf57) )
1389ROM_END
1390
12861391/* The Following use Dongle Type 4 (unknown part number?)
12871392    (dongle data is used for most of the graphics) */
12881393
1394/* 38 Scrum Try */
12891395ROM_START( cscrtry )
12901396   DECOCASS_BIOS_B_ROMS
12911397
r14742r14743
13061412   ROM_LOAD( "cscrtry2.cas",  0x0000, 0x8000, CRC(04597842) SHA1(7f1fc3e06b61df880debe9056bdfbbb8600af739) )
13071413ROM_END
13081414
1309ROM_START( cgsumo )
1415/* 41 Oozumou - The Grand Sumo */
1416ROM_START( coozumou )
13101417   DECOCASS_BIOS_A_ROMS
13111418
13121419   ROM_REGION( 0x08000, "dongle", 0 )     /* dongle data */
1313   ROM_LOAD( "dp-141a.pro",  0x0000, 0x8000, CRC(bc379d2c) SHA1(bab19dcb6d68fdbd547ebab1598353f436321157) )
1420   ROM_LOAD( "dp-141 a.dgl",  0x0000, 0x8000, CRC(bc379d2c) SHA1(bab19dcb6d68fdbd547ebab1598353f436321157) )
13141421
13151422   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1316   ROM_LOAD( "dt-141[1a]ext.bin",  0x0000, 0x10000, CRC(20c2e86a) SHA1(a18248ba00b847a09df0bea7752a21162af8af76) )
1423   ROM_LOAD( "dt-141 1a.bin",  0x0000, 0x10000, CRC(20c2e86a) SHA1(a18248ba00b847a09df0bea7752a21162af8af76) )
13171424ROM_END
13181425
1319/* The Following use Dongle Type 5 (unknown part number?)
1320    (dongle data not read)       */
1321
1426/* 44 Boulder Dash */
13221427ROM_START( cbdash )
13231428   DECOCASS_BIOS_B_ROMS
13241429
r14742r14743
13311436
13321437/* The Following have no Dongles at all */
13331438
1439/* 35 Flying Ball*/
13341440ROM_START( cflyball )
13351441   DECOCASS_BIOS_B_ROMS
13361442
r14742r14743
13401446   ROM_LOAD( "cflyball.cas",   0x0000, 0x10000, CRC(cb40d043) SHA1(57698bac7e0d552167efa99d08116bf19a3b29c9) )
13411447ROM_END
13421448
1343/* The Following have unknown Dongles
1344    (dongle data not read)       */
13451449
1346ROM_START( czeroize )
1347   DECOCASS_BIOS_B_ROMS
1348
1349   ROM_REGION( 0x01000, "dongle", 0 )     /* dongle data */
1350   ROM_LOAD( "czeroize.pro",  0x0000, 0x1000, NO_DUMP )
1351
1352   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1353   ROM_LOAD( "czeroize.cas",   0x0000, 0x10000, CRC(3ef0a406) SHA1(645b34cd477e0bb5539c8fe937a7a2dbd8369003) )
1354ROM_END
1355
1356
13571450static DRIVER_INIT( decocass )
13581451{
13591452   decocass_state *state = machine.driver_data<decocass_state>();
r14742r14743
14431536/* 26 */ GAME( 1983, cbtime,   decocass, cbtime,   cbtime,   decocass, ROT270, "Data East Corporation", "Burger Time (DECO Cassette)", 0 )
14441537/* 27 */ GAME( 1982, cburnrub, decocass, cburnrub, decocass, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette, set 1)", 0 )
14451538       GAME( 1982, cburnrub2,cburnrub, cburnrub, decocass, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette, set 2)", 0 )
1446       GAME( 1982, cbnj,     cburnrub, cbnj,    decocass, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette)", 0 )
1539       GAME( 1982, cbnj,     cburnrub, cburnrub, decocass, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette)", 0 )
14471540/* 28 */ GAME( 1983, cgraplop, decocass, cgraplop, cgraplop, decocass, ROT270, "Data East Corporation", "Cluster Buster / Graplop (DECO Cassette, set 1)", 0 )
14481541       GAME( 1983, cgraplop2,cgraplop, cgraplop2,cgraplop, decocass, ROT270, "Data East Corporation", "Cluster Buster / Graplop (DECO Cassette, set 2)", GAME_NOT_WORKING )
14491542/* 29 */ GAME( 1983, clapapa,  decocass, clapapa,  decocass, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' / La-Pa-Pa (DECO Cassette)" , 0) /* Displays 'La-Pa-Pa during attract */
14501543        GAME( 1983, clapapa2, clapapa,  clapapa,  decocass, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' (DECO Cassette)" , 0) /* Displays 'Rootin' Tootin' during attract */
1451/* 30 */ // 1983.03 Skater
1544/* 30 */ GAME( 1983, cskater,  decocass, cskater,  cskater,  decocass, ROT270, "Data East Corporation", "Skater (DECO Cassette, Japan)", 0 )
14521545/* 31 */ GAME( 1983, cprobowl, decocass, cprobowl, decocass, decocass, ROT270, "Data East Corporation", "Pro Bowling (DECO Cassette)", 0 )
14531546/* 32 */ GAME( 1983, cnightst, decocass, cnightst, cnightst, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 1)", 0 )
14541547       GAME( 1983, cnightst2,cnightst, cnightst, cnightst, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 2)", 0 )
14551548/* 33 */ GAME( 1983, cpsoccer, decocass, cpsoccer, cpsoccer, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette)", 0 )
14561549       GAME( 1983, cpsoccerj,cpsoccer, cpsoccer, cpsoccer, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette, Japan)", 0 )
1457/* 34 */ // 1983.09 Super Doubles Tennis
1550/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette, Japan)", GAME_WRONG_COLORS )
14581551/* 35 */ GAME( 1985, cflyball, decocass, cflyball, decocass, decocass, ROT270, "Data East Corporation", "Flying Ball (DECO Cassette)", 0 )
14591552/* 36 */ // 1984.04 Genesis/Boomer Rang'r
14601553/* 37 */ GAME( 1983, czeroize, decocass, czeroize, decocass, decocass, ROT270, "Data East Corporation", "Zeroize (DECO Cassette)", 0 )
1461/* 38 */ GAME( 1984, cscrtry,  decocass, cscrtry,  cscrtry,  decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 1)", 0 )
1462       GAME( 1984, cscrtry2, cscrtry,  cscrtry,  cscrtry,  decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 2)", 0 )
1554/* 38 */ GAME( 1984, cscrtry,  decocass, type4,    cscrtry,  decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 1)", 0 )
1555       GAME( 1984, cscrtry2, cscrtry,  type4,    cscrtry,  decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 2)", 0 )
14631556/* 39 */ GAME( 1984, cppicf,   decocass, cppicf,   decocass, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 1)", 0 )
14641557       GAME( 1984, cppicf2,  cppicf,   cppicf,   decocass, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 2)", 0 )
14651558/* 40 */ GAME( 1984, cfghtice, decocass, cfghtice, cfghtice, decocass, ROT270, "Data East Corporation", "Fighting Ice Hockey (DECO Cassette)", 0 )
1466/* 41 */ GAME( 1984, cgsumo,   decocass, cscrtry,  cscrtry,  decocass, ROT270, "Data East Corporation", "Oozumou - The Grand Sumo (DECO Cassette)", 0 )
1559/* 41 */ GAME( 1984, coozumou, decocass, type4,    cscrtry,  decocass, ROT270, "Data East Corporation", "Oozumou - The Grand Sumo (DECO Cassette, Japan)", 0 )
14671560/* 42 */ // 1984.08 Hellow Gateball // not a typo, this is official spelling
14681561/* 43 */ // 1984.08 Yellow Cab
14691562/* 44 */ GAME( 1985, cbdash,   decocass, cbdash,   cbdash,   decocass, ROT270, "Data East Corporation", "Boulder Dash (DECO Cassette)", 0 )
src/mame/drivers/konamigx.c
r14742r14743
12571257
12581258static INTERRUPT_GEN(tms_sync)
12591259{
1260   tms57002_sync(device);
1260   downcast<tms57002_device *>(device)->sync();
12611261}
12621262
12631263static READ16_HANDLER(tms57002_data_word_r)
12641264{
1265   return tms57002_data_r(space->machine().device("dasp"), 0);
1265   return space->machine().device<tms57002_device>("dasp")->data_r(*space, 0);
12661266}
12671267
12681268static WRITE16_HANDLER(tms57002_data_word_w)
12691269{
12701270   if (ACCESSING_BITS_0_7)
1271      tms57002_data_w(space->machine().device("dasp"), 0, data);
1271      space->machine().device<tms57002_device>("dasp")->data_w(*space, 0, data);
12721272}
12731273
12741274static READ16_HANDLER(tms57002_status_word_r)
12751275{
1276   return (tms57002_dready_r(space->machine().device("dasp"), 0) ? 4 : 0) |
1277      (tms57002_empty_r(space->machine().device("dasp"), 0) ? 1 : 0);
1276   return (space->machine().device<tms57002_device>("dasp")->dready_r(*space, 0) ? 4 : 0) |
1277      (space->machine().device<tms57002_device>("dasp")->empty_r(*space, 0) ? 1 : 0);
12781278}
12791279
12801280static WRITE16_HANDLER(tms57002_control_word_w)
12811281{
12821282   if (ACCESSING_BITS_0_7)
12831283   {
1284      tms57002_pload_w(space->machine().device("dasp"), 0, data & 4);
1285      tms57002_cload_w(space->machine().device("dasp"), 0, data & 8);
1284      space->machine().device<tms57002_device>("dasp")->pload_w(*space, 0, data & 4);
1285      space->machine().device<tms57002_device>("dasp")->cload_w(*space, 0, data & 8);
12861286      cputag_set_input_line(space->machine(), "dasp", INPUT_LINE_RESET, !(data & 16) ? ASSERT_LINE : CLEAR_LINE);
12871287   }
12881288}
src/mame/drivers/segas16b.c
r14742r14743
34693469 **************************************************************************************************************************
34703470    Ace Attacker, Sega System 16B
34713471    CPU: FD1094 (317-0059, also 317-0061 version known to be exist)
3472    ROM Board: 171-5358
3472    ROM Board type: 171-5358
34733473*/
34743474ROM_START( aceattac )
34753475   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
35103510 **************************************************************************************************************************
35113511    Alien Syndrome, Sega System 16B
35123512    CPU: 68000
3513    ROM Board: 171-5358
3513    ROM Board type: 171-5358
35143514*/
35153515ROM_START( aliensyn )
35163516   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
35463546/**************************************************************************************************************************
35473547    Alien Syndrome, Sega System 16B
35483548    CPU: FD1089A (317-0033)
3549    ROM Board: 171-5358
3549    ROM Board type: 171-5358
35503550    Sega game ID: 833-6308-03
35513551      Main board: 837-6312
35523552       Rom board: 834-6311-03
r14742r14743
35893589/**************************************************************************************************************************
35903590    Alien Syndrome, Sega System 16B
35913591    CPU: FD1089A (317-0033)
3592    ROM Board: 171-5358
3592    ROM Board type: 171-5358
35933593    Sega game ID: 833-6308
35943594      Main board: 837-6312
35953595       Rom board: 834-6311
r14742r14743
36343634 **************************************************************************************************************************
36353635    Altered Beast, Sega System 16B
36363636    CPU: 68000 + i8751 (317-0078)
3637    ROM Board: 171-5521
3637    ROM Board type: 171-5521
36383638    Sega ID# for ROM board: 834-6661-10
36393639*/
36403640ROM_START( altbeast )
r14742r14743
36693669/**************************************************************************************************************************
36703670    Altered Beast, Sega System 16B
36713671    CPU: 68000 + i8751 (317-0077)
3672    ROM Board: 171-5521
3672    ROM Board type: 171-5521
36733673*/
36743674ROM_START( altbeastj )
36753675   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
37123712/**************************************************************************************************************************
37133713    Altered Beast, Sega System 16B
37143714    CPU: 68000 + i8751 (317-0076)
3715    ROM Board: 171-5521
3715    ROM Board type: 171-5521
37163716*/
37173717ROM_START( altbeast6 )
37183718   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
37553755/**************************************************************************************************************************
37563756    Altered Beast, Sega System 16B
37573757    CPU: FD1094 (317-0069)
3758    ROM Board: 171-5521
3759    Sega ID# for ROM board: 834-6661-07
3758    ROM Board type: 171-5521
3759    Sega game ID: 833-6660-07
3760      Main board: 837-6662-05
3761       ROM board: 834-6661-07
37603762*/
37613763ROM_START( altbeast5 )
37623764   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
37993801/**************************************************************************************************************************
38003802    Altered Beast, Sega System 16B
38013803    CPU: 68000 + MC-8123B 317-0066
3802    ROM Board: 171-5521
3804    ROM Board type: 171-5521
38033805    Sega ID# for ROM board: 834-6661-06
38043806*/
38053807ROM_START( altbeast4 )
r14742r14743
38433845/**************************************************************************************************************************
38443846    Jyuohki (Altered Beast), Sega System 16B
38453847    CPU: FD1094 (317-0068)
3846    ROM Board: 171-5521
3848    ROM Board type: 171-5521
38473849*/
38483850ROM_START( altbeastj3 )
38493851   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
38863888/**************************************************************************************************************************
38873889    Altered Beast, Sega System 16B
38883890    CPU: 68000 + MC8123B (317-0066)
3889    ROM Board: 171-5521
3891    ROM Board type: 171-5521
38903892    Sega ID# for ROM board: 834-6661-02
38913893*/
38923894ROM_START( altbeast2 )
r14742r14743
39213923/**************************************************************************************************************************
39223924    Jyuohki (Altered Beast), Sega System 16B
39233925    CPU: FD1094 (317-0065)
3924    ROM Board: 171-5521
3926    ROM Board type: 171-5521
39253927*/
39263928ROM_START( altbeastj1 )
39273929   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
40044006 **************************************************************************************************************************
40054007    Aurail, Sega System 16B
40064008    CPU: 68000
4007    ROM Board: 171-????
4009    ROM Board type: 171-????
40084010*/
40094011ROM_START( aurail )
40104012   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
40484050/**************************************************************************************************************************
40494051    Aurail, Sega System 16B
40504052    CPU: FD1089B (317-0168)
4051    ROM Board: 171-????
4053    ROM Board type: 171-????
40524054*/
40534055ROM_START( aurail1 )
40544056   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
40964098/**************************************************************************************************************************
40974099    Aurail, Sega System 16B
40984100    CPU: FD1089A (317-0167)
4099    ROM Board: 171-5704
4101    ROM Board type: 171-5704
41004102
41014103    S1  - -
41024104    S2  ---
r14742r14743
41674169 **************************************************************************************************************************
41684170    Bay Route, Sega System 16B
41694171    CPU: FD1094 (317-0116)
4170    ROM Board: 171-5704
4172    ROM Board type: 171-5704
41714173*/
41724174ROM_START( bayroute )
41734175   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
42004202/**************************************************************************************************************************
42014203    Bay Route, Sega System 16B
42024204    CPU: FD1094 (317-0115)
4203    ROM Board: 171-5704
4205    ROM Board type: 171-5704
42044206*/
42054207ROM_START( bayroutej )
42064208   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
42334235/**************************************************************************************************************************
42344236    Bay Route, Sega System 16B
42354237    CPU: 68000
4236    ROM Board: 171-5358
4238    ROM Board type: 171-5358
42374239*/
42384240ROM_START( bayroute1 )
42394241   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
43234325 **************************************************************************************************************************
43244326    Cotton, Sega System 16B
43254327    CPU: FD1094 (317-0181A)
4326    ROM Board: 171-5704
4328    ROM Board type: 171-5704
43274329*/
43284330ROM_START( cotton )
43294331   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
r14742r14743
43704372/**************************************************************************************************************************
43714373    Cotton, Sega System 16B
43724374    CPU: FD1094 (317-0180T) // T could be wrong, it was handwritten
4373    ROM Board: 171-5704
4375    ROM Board type: 171-5704
43744376*/
43754377ROM_START( cottonu )
43764378   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
r14742r14743
44174419/**************************************************************************************************************************
44184420    Cotton (Japan), Sega System 16B
44194421    CPU: FD1094 (317-0179A)
4420    ROM Board: 171-5704
4422    ROM Board type: 171-5704
44214423*/
44224424ROM_START( cottonj )
44234425   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
r14742r14743
44674469 **************************************************************************************************************************
44684470    Dunk Shot, Sega System 16B
44694471    CPU: FD1089A (317-0022)
4470    ROM Board: 171-5358
4472    ROM Board type: 171-5358
44714473*/
44724474ROM_START( dunkshot )
44734475   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
45174519 **************************************************************************************************************************
45184520    Dynamite Dux, Sega System 16B
45194521    CPU: FD1094 (317-0096, version uses 317-0094 known to be exist)
4520    ROM Board: 171-5521
4522    ROM Board type: 171-5521
45214523
45224524    Pos.   Silk        Type        Part         Pos.   Silk        Type        Part
45234525
r14742r14743
46064608 **************************************************************************************************************************
46074609    E-Swat (World), Sega System 16B
46084610    CPU: FD1094 (317-0130)
4609    ROM Board: 171-5797
4611    ROM Board type: 171-5797
46104612*/
46114613ROM_START( eswat )
46124614   ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */
r14742r14743
46434645/**************************************************************************************************************************
46444646    E-Swat (US), Sega System 16B
46454647    CPU: FD1094 (317-0129)
4646    ROM Board: 171-5797
4648    ROM Board type: 171-5797
46474649    Sega ID# for ROM board: 834-7165-01
46484650*/
46494651ROM_START( eswatu )
r14742r14743
46804682
46814683/**************************************************************************************************************************
46824684    E-Swat (Japan), Sega System 16B
4683    Game board : 837-7166/833-7164/834-7165
46844685    CPU: FD1094 (317-0128)
4685    ROM Board: 171-5797
4686    ROM Board type: 171-5797
4687    Sega game ID: 833-7164
4688      Main board: 837-7166
4689       ROM board: 834-7165
46864690*/
46874691ROM_START( eswatj )
46884692   ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */
r14742r14743
47224726 **************************************************************************************************************************
47234727    Excite League, Sega System 16B
47244728    CPU: FD1094 (317-0079)
4725    ROM Board: 171-5358
4729    ROM Board type: 171-5358
47264730*/
47274731ROM_START( exctleag )
47284732   ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */
r14742r14743
47654769 **************************************************************************************************************************
47664770    Flash Point, Sega System 16B
47674771    CPU: FD1094 (317-0127A)
4768    ROM Board: 171-5358
4772    ROM Board type: 171-5358
47694773
47704774    171-5358        834-6764
47714775    ROW A       171-5358
r14742r14743
48174821/**************************************************************************************************************************
48184822    Flash Point, Sega System 16B
48194823    CPU: FD1094 (317-0127A)
4820    ROM Board: 171-5704
4824    ROM Board type: 171-5704
48214825    Sega ID# for ROM board: 834-7122-03
48224826
48234827    Pos.   Silk        Type        Part         Pos.   Silk        Type        Part
r14742r14743
48654869 **************************************************************************************************************************
48664870    Golden Axe, Sega System 16B
48674871    CPU: 68000 + i8751 (317-123A)
4868    ROM Board: 171-5797
4872    ROM Board type: 171-5797
48694873    Sega ID# for ROM board: 834-7002-07
48704874*/
48714875ROM_START( goldnaxe )
r14742r14743
49034907/**************************************************************************************************************************
49044908    Golden Axe, Sega System 16B
49054909    CPU: FD1094 (317-0122)
4906    ROM Board: 171-5797
4910    ROM Board type: 171-5797
49074911    Sega ID# for ROM board: 834-7002-06
49084912*/
49094913ROM_START( goldnaxeu )
r14742r14743
49414945/**************************************************************************************************************************
49424946    Golden Axe (Japan), Sega System 16B
49434947    CPU: FD1094 (317-0121)
4944    ROM Board: 171-5704
4948    ROM Board type: 171-5704
49454949    Sega ID# for ROM board: 834-7002-04
49464950*/
49474951ROM_START( goldnaxej )
r14742r14743
49834987/**************************************************************************************************************************
49844988    Golden Axe (World), Sega System 16B
49854989    CPU: FD1094 (317-0120)
4986    ROM Board: 171-5704
4990    ROM Board type: 171-5704
49874991    Sega ID# for ROM board: 834-7002-11
49884992*/
49894993ROM_START( goldnaxe3 )
r14742r14743
50255029/**************************************************************************************************************************
50265030    Golden Axe (Japan), Sega System 16B
50275031    CPU: 68000 + i8751 (317-0112)
5028    ROM Board: 171-5704
5032    ROM Board type: 171-5704
50295033    Sega ID# for ROM board: 834-7002-02
50305034*/
50315035ROM_START( goldnaxe2 )
r14742r14743
50665070/**************************************************************************************************************************
50675071    Golden Axe, Sega System 16B
50685072    CPU: FD1094 (317-0110)
5069    ROM Board: 171-5797
5073    ROM Board type: 171-5797
50705074    Sega ID# for ROM board: 834-7002
50715075*/
50725076ROM_START( goldnaxe1 )
r14742r14743
51075111 **************************************************************************************************************************
51085112    Heavyweight Champ, Sega System 16B
51095113    CPU: 68000
5110    ROM Board: 171-5521
5114    ROM Board type: 171-5521
51115115    Filter Board: 834-6383 (takes input from controls and routes through the CN5 connector on the mainboard)
51125116    Sega ID# for ROM board: 834-6398-02
51135117*/
r14742r14743
51545158/**************************************************************************************************************************
51555159    Heavyweight Champ (Japan), Sega System 16B
51565160    CPU: FD1094 (317-0046)
5157    ROM Board: 171-5521
5161    ROM Board type: 171-5521
51585162*/
51595163ROM_START( hwchampj )
51605164   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
52055209 **************************************************************************************************************************
52065210    MVP, Sega System 16B
52075211    CPU: FD1094 (317-0143)
5208    ROM Board: 171-5797
5212    ROM Board type: 171-5797
52095213*/
52105214ROM_START( mvp )
52115215   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
r14742r14743
54175421 **************************************************************************************************************************
54185422    Riot City, Sega System 16B
54195423    CPU: 68000
5420    ROM Board: 171-5704
5424    ROM Board type: 171-5704
54215425*/
54225426ROM_START( riotcity )
54235427   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
54605464 **************************************************************************************************************************
54615465    Ryukyu, Sega System 16B
54625466    CPU: FD1094 8J2 (317-5023)
5463    ROM Board: 171-5521
5467    ROM Board type: 171-5521
54645468*/
54655469ROM_START( ryukyu )
54665470   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
r14742r14743
54915495 **************************************************************************************************************************
54925496    Defense, Sega System 16B
54935497    CPU: FD1089A 317-0028
5494    ROM Board: 171-5358
5498    ROM Board type: 171-5358
54955499*/
54965500
54975501ROM_START( defense )
r14742r14743
55285532 **************************************************************************************************************************
55295533    SDI, Sega System 16B
55305534    CPU: FD1089A 317-0028
5531    ROM Board: 171-5358
5535    ROM Board type: 171-5358
55325536*/
55335537
55345538ROM_START( sdib )
r14742r14743
55665570 **************************************************************************************************************************
55675571    SDI, Sega System 16B
55685572    CPU: 68000
5569    ROM Board: 171-5358
5573    ROM Board type: 171-5358
55705574    Note: decrypted bootleg
55715575*/
55725576ROM_START( sdibl )
r14742r14743
56025606
56035607    Shinobi, Sega System 16B
56045608    CPU: 68000
5605    ROM Board: 171-5521
5609    ROM Board type: 171-5521
56065610*/
56075611ROM_START( shinobi5 )
56085612   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
56305634
56315635    Shinobi, Sega System 16B
56325636    CPU: 68000 + MC8123B (317-0054)
5633    ROM Board: 171-5521
5637    ROM Board type: 171-5521
56345638 Game Nunmber: 834-6496-04
56355639    ROM board: 834-6499-03
56365640*/
r14742r14743
56615665/**************************************************************************************************************************
56625666    Shinobi, Sega System 16B
56635667    CPU: 68000 + MC8123B (317-0054)
5664    ROM Board: 171-5358
5668    ROM Board type: 171-5358
56655669 Game Nunmber: 834-6496-04
56665670    ROM board: 834-6499-02
56675671*/
r14742r14743
56995703/**************************************************************************************************************************
57005704    Shinobi, Sega System 16B
57015705    CPU: FD1094 (317-0049)
5702    ROM Board: 171-5358
5706    ROM Board type: 171-5358
5707    ROM board: 834-6499
57035708*/
57045709ROM_START( shinobi2 )
57055710   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
57385743 **************************************************************************************************************************
57395744    Sonic Boom, Sega System 16B
57405745    CPU: FD1094 (317-0053)
5741    ROM Board: 171-5358
5746    ROM Board type: 171-5358
57425747
57435748    Pos.   Silk        Type        Part                Pos.   Silk        Type        Part
57445749
r14742r14743
57915796 **************************************************************************************************************************
57925797    Sukeban Jansi Ryuko (JPN Ver.)
57935798    CPU: FD1089B 317-5021 (16A/16B) (version uses i8751(317-5019) known to be exist)
5794    ROM Board: 171-???
5799    ROM Board type: 171-???
57955800
57965801    (c)1988 White Board
57975802
r14742r14743
58415846 **************************************************************************************************************************
58425847    Super League, Sega System 16B
58435848    CPU: FD1094 (317-0045)
5844    ROM Board: 171-5358
5849    ROM Board type: 171-5358
58455850*/
58465851ROM_START( suprleag )
58475852   ROM_REGION( 0x060000, "maincpu", 0 ) /* 68000 code */
r14742r14743
58845889 **************************************************************************************************************************
58855890    Tetris, Sega System 16B
58865891    CPU: FD1094 (317-0092)
5887    ROM Board: 171-5704
5892    ROM Board type: 171-5704
58885893*/
58895894ROM_START( tetris2 )
58905895   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
59105915/**************************************************************************************************************************
59115916    Tetris, Sega System 16B
59125917    CPU: FD1094 (317-0091)
5913    ROM Board: 171-5358
5918    ROM Board type: 171-5358
59145919
59155920    Pos.   Silk        Type        Part                Pos.   Silk        Type        Part
59165921    A1     EPR-12163   27C256      68000 program       B1     EPR-12169   27C256      Sprite data
r14742r14743
59525957 **************************************************************************************************************************
59535958    Time Scanner, Sega System 16B
59545959    CPU: 68000
5955    ROM Board: 171-5358
5960    ROM Board type: 171-5358
59565961 */
59575962ROM_START( timescan )
59585963   ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
r14742r14743
59895994 **************************************************************************************************************************
59905995    Toryumon, Sega System 16B
59915996    CPU: 68000
5992    ROM Board: 171-5797
5997    ROM Board type: 171-5797
59935998 */
59945999ROM_START( toryumon )
59956000   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
60226027 **************************************************************************************************************************
60236028    Tough Turf, Sega System 16B
60246029    CPU: 68000 + i8751 (317-0104, 317-0100 also known to be exist)
6025    ROM Board: 171-5704
6030    ROM Board type: 171-5704
60266031 */
60276032ROM_START( tturf )
60286033   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
60566061/**************************************************************************************************************************
60576062    Tough Turf, Sega System 16B
60586063    CPU: 68000 + i8751 (317-0099)
6059    ROM Board: 171-5358
6064    ROM Board type: 171-5358
60606065    Sega ID# for ROM board: 834-6949
60616066 */
60626067ROM_START( tturfu )
r14742r14743
60986103 **************************************************************************************************************************
60996104    Wonder Boy III, Sega System 16B
61006105    CPU: 68000 + i8751 (317-0098)
6101    ROM Board: 171-5704
6106    ROM Board type: 171-5704
61026107 */
61036108ROM_START( wb3 )
61046109   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
61316136/**************************************************************************************************************************
61326137    Wonder Boy III, Sega System 16B
61336138    CPU: FD1094 (317-0087)
6134    ROM Board: 171-5704
6139    ROM Board type: 171-5704
61356140 */
61366141ROM_START( wb34 )
61376142   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
61636168/**************************************************************************************************************************
61646169    Wonder Boy III, Sega System 16B
61656170    CPU: FD1094 (317-0089)
6166    ROM Board: 171-5704
6171    ROM Board type: 171-5704
61676172 */
61686173ROM_START( wb33 )
61696174   ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
r14742r14743
61956200/**************************************************************************************************************************
61966201    Wonder Boy III, Sega System 16B
61976202    CPU: FD1094 (317-0085)
6198    ROM Board: 171-5358
6203    ROM Board type: 171-5358
61996204
62006205    Pos.   Silk        Type        Part                Pos.   Silk        Type        Part
62016206    A1     EPR-12198   27C512      68000 program       B1     EPR-12190   27C512      Sprite data
r14742r14743
62456250 **************************************************************************************************************************
62466251    Wrestle War, Sega System 16B
62476252    CPU: 68000 + i8751 (317-0103)
6248    ROM Board: 171-5704
6253    ROM Board type: 171-5704
62496254    GAME NUMBER: 837-6889-02 (MB:833-6887-07, ROM:834-6888-07)
62506255
62516256    LOC   NAME         LOC   NAME
r14742r14743
63056310/**************************************************************************************************************************
63066311    Wrestle War, Sega System 16B
63076312    CPU: FD1094 (317-0102)
6308    ROM Board: 171-5704
6313    ROM Board type: 171-5704
63096314*/
63106315ROM_START( wrestwar2 )
63116316   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
r14742r14743
63466351/**************************************************************************************************************************
63476352    Wrestle War, Sega System 16B
63486353    CPU: FD1094 (317-0090)
6349    ROM Board: 171-5704
6354    ROM Board type: 171-5704
63506355*/
63516356ROM_START( wrestwar1 )
63526357   ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
src/mame/drivers/dec8.c
r14742r14743
22
33Various Data East 8 bit games:
44
5    Cobra Command (World)       (c) 1988 Data East Corporation (6809)
6    Cobra Command (Japan)       (c) 1988 Data East Corporation (6809)
7    The Real Ghostbusters (2p)  (c) 1987 Data East USA (6809 + I8751)
8    The Real Ghostbusters (3p)  (c) 1987 Data East USA (6809 + I8751)
9    Meikyuu Hunter G            (c) 1987 Data East Corporation (6809 + I8751)
10    Super Real Darwin           (c) 1987 Data East Corporation (6809 + I8751)
11    Psycho-Nics Oscar           (c) 1988 Data East USA (2*6809 + I8751)
12    Psycho-Nics Oscar (Japan)   (c) 1987 Data East Corporation (2*6809 + I8751)
13    Gondomania                  (c) 1987 Data East USA (6809 + I8751)
14    Makyou Senshi               (c) 1987 Data East Corporation (6809 + I8751)
155    Last Mission (rev 6)        (c) 1986 Data East USA (2*6809 + I8751)
166    Last Mission (rev 5)        (c) 1986 Data East USA (2*6809 + I8751)
7    Last Mission (Japan)        (c) 1986 Data East Corporation (2*6809 + I8751)
178    Shackled                    (c) 1986 Data East USA (2*6809 + I8751)
189    Breywood                    (c) 1986 Data East Corporation (2*6809 + I8751)
10    Gondomania                  (c) 1987 Data East USA (6809 + I8751)
11    Makyou Senshi               (c) 1987 Data East Corporation (6809 + I8751)
12    Garyo Retsuden              (c) 1987 Data East Corporation (6809 + I8751)
13    The Real Ghostbusters (2p)  (c) 1987 Data East USA (6809 + I8751)
14    The Real Ghostbusters (3p)  (c) 1987 Data East USA (6809 + I8751)
15    Meikyuu Hunter G            (c) 1987 Data East Corporation (6809 + I8751)
1916    Captain Silver (World)      (c) 1987 Data East Corporation (2*6809 + I8751)
2017    Captain Silver (Japan)      (c) 1987 Data East Corporation (2*6809 + I8751)
21    Garyo Retsuden (Japan)      (c) 1987 Data East Corporation (6809 + I8751)
18    Psycho-Nics Oscar (World)   (c) 1987 Data East Corporation (2*6809 + I8751)
19    Psycho-Nics Oscar (US)      (c) 1988 Data East USA (2*6809 + I8751)
20    Psycho-Nics Oscar (Japan)   (c) 1987 Data East Corporation (2*6809 + I8751)
21    Super Real Darwin (World)   (c) 1987 Data East Corporation (6809 + I8751)
22    Super Real Darwin (Japan)   (c) 1987 Data East Corporation (6809 + I8751)
23    Cobra Command (World)       (c) 1988 Data East Corporation (6809)
24    Cobra Command (Japan)       (c) 1988 Data East Corporation (6809)
2225
2326    All games use a 6502 for sound (some are encrypted), all games except Cobracom
24    use an Intel 8751 for protection & coinage.  For these games the coinage dip
25    switch is not currently supported, they are fixed at 1 coin 1 credit.
27    use an Intel 8751 for protection & coinage. For the games without (fake) MCU,
28    the coinage dip switch (sometimes based on the manual) is simulated.
2629
2730    Meikyuu Hunter G was formerly known as Mazehunter.
2831
2932    Emulation by Bryan McPhail, mish@tendril.co.uk
3033
3134To do:
32    Support coinage options for all i8751 emulations.
3335    Super Real Darwin 'Double' sprites appearing from the top of the screen are clipped
3436    Strangely coloured butterfly on Garyo Retsuden water levels!
3537
r14742r14743
162164*
163165********************************/
164166
165static WRITE8_HANDLER( srdarwin_i8751_w )
167static WRITE8_HANDLER( lastmisn_i8751_w )
166168{
167169   dec8_state *state = space->machine().driver_data<dec8_state>();
170
171   /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */
172   int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}};   /* slot 1 : coins needed */
173   int lcred1[2][4] = {{1, 2, 3, 1}, {1, 2, 3, 5}};   /* slot 1 : credits awarded */
174   int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}};   /* slot 2 : coins needed */
175   int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}};   /* slot 2 : credits awarded */
176
168177   state->m_i8751_return = 0;
169178
170179   switch (offset)
171180   {
172181   case 0: /* High byte */
173182      state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8);
183      device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
174184      break;
175185   case 1: /* Low byte */
176186      state->m_i8751_value = (state->m_i8751_value & 0xff00) | data;
177187      break;
178188   }
179189
180   if (state->m_i8751_value == 0x0000) {state->m_i8751_return = 0; state->m_coin1 = 0;}
181   if (state->m_i8751_value == 0x3063) state->m_i8751_return = 0x9c;            /* Protection - Japanese version */
182   if (state->m_i8751_value == 0x306b) state->m_i8751_return = 0x94;            /* Protection - World version */
183   if ((state->m_i8751_value & 0xff00) == 0x4000) state->m_i8751_return = state->m_i8751_value;   /* Coinage settings */
184   if (state->m_i8751_value == 0x5000) state->m_i8751_return = ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10);   /* Coin request */
185   if (state->m_i8751_value == 0x6000) {state->m_i8751_value = -1; state->m_coin1--; }   /* Coin clear */
186   /* Nb:  Command 0x4000 for setting coinage options is not sup3ed */
187   if ((input_port_read(space->machine(), "FAKE") & 1) == 1) state->m_latch = 1;
188   if ((input_port_read(space->machine(), "FAKE") & 1) != 1 && state->m_latch) {state->m_coin1++; state->m_latch = 0;}
190   /* Coins are controlled by the i8751 */
191   if ((input_port_read(space->machine(), "IN2") & 3) == 3) state->m_latch = 1;
192   if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch)
193   {
194      state->m_coin1++;
195      state->m_latch = 0;
196      state->m_snd = 0x400;
197      state->m_i8751_return = 0x400;
198      if (state->m_coin1>=state->m_need1)
199      {
200         state->m_coin1-=state->m_need1;
201         state->m_credits+=state->m_cred1;
202      }
203   }
204   if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch)
205   {
206      state->m_coin2++;
207      state->m_latch = 0;
208      state->m_snd = 0x400;
209      state->m_i8751_return = 0x400;
210      if (state->m_coin2>=state->m_need2)
211      {
212         state->m_coin2-=state->m_need2;
213         state->m_credits+=state->m_cred2;
214      }
215   }
216   if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */
189217
190   /* This next value is the index to a series of tables,
191    each table controls the end of level bad guy, wrong values crash the
192    cpu right away via a bogus jump.
218   if (state->m_i8751_value == 0x0401) state->m_i8751_return = 0;    /* ??? */
193219
194    Level number requested is in low byte
220   if (state->m_i8751_value == 0x007a) { state->m_i8751_return = 0x85; state->m_coinage_id = 0; }  /* Japanese version ID */
221   if (state->m_i8751_value == 0x007b) { state->m_i8751_return = 0x84; state->m_coinage_id = 0; }  /* US version ID */
195222
196    Addresses on left hand side are from the protection vector table which is
197    stored at location 0xf580 in rom dy_01.rom
198
199ba5e (lda #00) = Level 0?
200ba82 (lda #01) = Pyramid boss, Level 1?
201baaa           = No boss appears, game hangs
202bacc (lda #04) = Killer Bee boss, Level 4?
203bae0 (lda #03) = Snake type boss, Level 3?
204baf9           = Double grey thing boss...!
205bb0a           = Single grey thing boss!
206bb18 (lda #00) = Hailstorm from top of screen.
207bb31 (lda #28) = Small hailstorm
208bb47 (ldb #05) = Small hailstorm
209bb5a (lda #08) = Weird square things..
210bb63           = Square things again
211(24)           = Another square things boss..
212(26)           = Clock boss! (level 3)
213(28)           = Big dragon boss, perhaps an end-of-game baddy
214(30)           = 4 things appear at corners, seems to fit with attract mode (level 1)
215(32)           = Grey things teleport onto screen..
216(34)           = Grey thing appears in middle of screen
217(36)           = As above
218(38)           = Circle thing with two pincers
219(40)           = Grey bird
220(42)           = Crash (end of table)
221
222    The table below is hopefully correct thanks to Jose Miguel Morales Farreras,
223    but Boss #6 is uncomfirmed as correct.
224
225*/
226   if (state->m_i8751_value == 0x8000) state->m_i8751_return = 0xf580 +  0; /* Boss #1: Snake + Bees */
227   if (state->m_i8751_value == 0x8001) state->m_i8751_return = 0xf580 + 30; /* Boss #2: 4 Corners */
228   if (state->m_i8751_value == 0x8002) state->m_i8751_return = 0xf580 + 26; /* Boss #3: Clock */
229   if (state->m_i8751_value == 0x8003) state->m_i8751_return = 0xf580 +  2; /* Boss #4: Pyramid */
230   if (state->m_i8751_value == 0x8004) state->m_i8751_return = 0xf580 +  6; /* Boss #5: Snake + Head Combo */
231   if (state->m_i8751_value == 0x8005) state->m_i8751_return = 0xf580 + 24; /* Boss #6: LED Panels */
232   if (state->m_i8751_value == 0x8006) state->m_i8751_return = 0xf580 + 28; /* Boss #7: Dragon */
233   if (state->m_i8751_value == 0x8007) state->m_i8751_return = 0xf580 + 32; /* Boss #8: Teleport */
234   if (state->m_i8751_value == 0x8008) state->m_i8751_return = 0xf580 + 38; /* Boss #9: Octopus (Pincer) */
235   if (state->m_i8751_value == 0x8009) state->m_i8751_return = 0xf580 + 40; /* Boss #10: Bird */
236   if (state->m_i8751_value == 0x800a) state->m_i8751_return = 0xf580 + 42; /* End Game(bad address?) */
223   if (offset == 0)
224   {
225      if ((state->m_i8751_value >> 8) == 0x01) /* Coinage settings */
226      {
227         state->m_i8751_return = state->m_i8751_value;
228         state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
229         state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
230         state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
231         state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
232      }
233      if ((state->m_i8751_value >> 8) == 0x02) { state->m_i8751_return = state->m_snd | ((state->m_credits / 10) << 4) | (state->m_credits % 10); state->m_snd = 0; }   /* Credits request */
234      if ((state->m_i8751_value >> 8) == 0x03 && state->m_credits) { state->m_i8751_return = 0; state->m_credits--; } /* Credits clear */
235   }
237236}
238237
239
240238static WRITE8_HANDLER( shackled_i8751_w )
241239{
242240   dec8_state *state = space->machine().driver_data<dec8_state>();
r14742r14743
246244   {
247245   case 0: /* High byte */
248246      state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8);
249      device_set_input_line(state->m_subcpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
247      device_set_input_line(state->m_subcpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal sub cpu */
250248      break;
251249   case 1: /* Low byte */
252250      state->m_i8751_value = (state->m_i8751_value & 0xff00) | data;
r14742r14743
254252   }
255253
256254   /* Coins are controlled by the i8751 */
257   if (/*(input_port_read(space->machine(), "IN2") & 3) == 3*/!state->m_latch) {state->m_latch = 1; state->m_coin1 = state->m_coin2 = 0;}
258   if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch)  {state->m_coin1 = 1; state->m_latch = 0;}
259   if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch)  {state->m_coin2 = 1; state->m_latch = 0;}
255   if (/*(input_port_read(space->machine(), "IN2") & 3) == 3*/!state->m_latch) { state->m_latch = 1; state->m_coin1 = state->m_coin2 = 0; }
256   if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch)  { state->m_coin1 = 1; state->m_latch = 0; }
257   if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch)  { state->m_coin2 = 1; state->m_latch = 0; }
260258
261   if (state->m_i8751_value == 0x0050) state->m_i8751_return = 0; /* Breywood ID */
262   if (state->m_i8751_value == 0x0051) state->m_i8751_return = 0; /* Shackled ID */
263   if (state->m_i8751_value == 0x0102) state->m_i8751_return = 0; /* ?? */
264   if (state->m_i8751_value == 0x0101) state->m_i8751_return = 0; /* ?? */
265   if (state->m_i8751_value == 0x8101) state->m_i8751_return = ((state->m_coin2 / 10) << 4) | (state->m_coin2 % 10) |
266         ((((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10)) << 8); /* Coins */
259   if (state->m_i8751_value == 0x0102) state->m_i8751_return = 0;    /* ??? */
260   if (state->m_i8751_value == 0x0101) state->m_i8751_return = 0;    /* ??? */
261   if (state->m_i8751_value == 0x0400) state->m_i8751_return = 0;    /* ??? */
262
263   if (state->m_i8751_value == 0x0050) state->m_i8751_return = 0; /* Japanese version (Breywood) ID */
264   if (state->m_i8751_value == 0x0051) state->m_i8751_return = 0; /* US version (Shackled) ID */
265
266   if (state->m_i8751_value == 0x8101) state->m_i8751_return = ((((state->m_coin2 / 10) << 4) | (state->m_coin2 % 10)) << 0) |
267                                                ((((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10)) << 8);    /* Coins */
267268}
268269
269static WRITE8_HANDLER( lastmisn_i8751_w )
270static WRITE8_HANDLER( csilver_i8751_w )
270271{
271272   dec8_state *state = space->machine().driver_data<dec8_state>();
273
274   /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */
275   int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}};   /* slot 1 : coins needed */
276   int lcred1[2][4] = {{1, 2, 3, 1}, {2, 3, 4, 6}};   /* slot 1 : credits awarded */
277   int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}};   /* slot 2 : coins needed */
278   int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}};   /* slot 2 : credits awarded */
279
272280   state->m_i8751_return = 0;
273281
274282   switch (offset)
r14742r14743
282290      break;
283291   }
284292
285   if (offset == 0)
293   /* Coins are controlled by the i8751 */
294   if ((input_port_read(space->machine(), "IN2") & 3) == 3) state->m_latch = 1;
295   if ((input_port_read(space->machine(), "IN2") & 1) != 1 && state->m_latch)
286296   {
287      /* Coins are controlled by the i8751 */
288      if ((input_port_read(space->machine(), "IN2") & 3) == 3 && !state->m_latch) state->m_latch = 1;
289      if ((input_port_read(space->machine(), "IN2") & 3) != 3 && state->m_latch) {state->m_coin1++; state->m_latch = 0; state->m_snd = 0x400; state->m_i8751_return = 0x400; return;}
290      if (state->m_i8751_value == 0x007a) state->m_i8751_return = 0x0185; /* Japan ID code */
291      if (state->m_i8751_value == 0x007b) state->m_i8751_return = 0x0184; /* USA ID code */
292      if (state->m_i8751_value == 0x0001) {state->m_coin1 = state->m_snd = 0;}//???
293      if (state->m_i8751_value == 0x0000) {state->m_i8751_return = 0x0184;}//???
294      if (state->m_i8751_value == 0x0401) state->m_i8751_return = 0x0184; //???
295      if ((state->m_i8751_value >> 8) == 0x01) state->m_i8751_return = 0x0184; /* Coinage setup */
296      if ((state->m_i8751_value >> 8) == 0x02) {state->m_i8751_return = state->m_snd | ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10); state->m_snd = 0;} /* Coin return */
297      if ((state->m_i8751_value >> 8) == 0x03 && state->m_coin1) {state->m_i8751_return = 0; state->m_coin1--; } /* Coin clear */
297      state->m_coin1++;
298      state->m_latch = 0;
299      state->m_snd = 0x1200;
300      state->m_i8751_return = 0x1200;
301      if (state->m_coin1>=state->m_need1)
302      {
303         state->m_coin1-=state->m_need1;
304         state->m_credits+=state->m_cred1;
305      }
298306   }
299}
300
301static WRITE8_HANDLER( csilver_i8751_w )
302{
303   dec8_state *state = space->machine().driver_data<dec8_state>();
304   state->m_i8751_return = 0;
305
306   switch (offset)
307   if ((input_port_read(space->machine(), "IN2") & 2) != 2 && state->m_latch)
307308   {
308   case 0: /* High byte */
309      state->m_i8751_value = (state->m_i8751_value & 0xff) | (data << 8);
310      device_set_input_line(state->m_maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
311      break;
312   case 1: /* Low byte */
313      state->m_i8751_value = (state->m_i8751_value & 0xff00) | data;
314      break;
309      state->m_coin2++;
310      state->m_latch = 0;
311      state->m_snd = 0x1200;
312      state->m_i8751_return = 0x1200;
313      if (state->m_coin2>=state->m_need2)
314      {
315         state->m_coin2-=state->m_need2;
316         state->m_credits+=state->m_cred2;
317      }
315318   }
319   if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */
316320
321   if (state->m_i8751_value == 0x054a) { state->m_i8751_return = 0xb5; state->m_coinage_id = 0; }  /* Japanese version ID */
322   if (state->m_i8751_value == 0x054c) { state->m_i8751_return = 0xb3; state->m_coinage_id = 1; }  /* World version ID */
323
317324   if (offset == 0)
318325   {
319      /* Coins are controlled by the i8751 */
320      if ((input_port_read(space->machine(), "IN2") & 3) == 3 && !state->m_latch) state->m_latch = 1;
321      if ((input_port_read(space->machine(), "IN2") & 3) != 3 && state->m_latch) {state->m_coin1++; state->m_latch = 0; state->m_snd = 0x1200; state->m_i8751_return = 0x1200; return;}
322
323      if (state->m_i8751_value == 0x054a) {state->m_i8751_return = ~(0x4a); state->m_coin1 = 0; state->m_snd = 0;} /* Captain Silver (Japan) ID */
324      if (state->m_i8751_value == 0x054c) {state->m_i8751_return = ~(0x4c); state->m_coin1 = 0; state->m_snd = 0;} /* Captain Silver (World) ID */
325      if ((state->m_i8751_value >> 8) == 0x01) state->m_i8751_return = 0; /* Coinage - Not Supported */
326      if ((state->m_i8751_value >> 8) == 0x02) {state->m_i8751_return = state->m_snd | state->m_coin1; state->m_snd = 0; } /* Coin Return */
327      if ((state->m_i8751_value >> 8) == 0x03 && state->m_coin1) {state->m_i8751_return = 0; state->m_coin1--;} /* Coin Clear */
326      if ((state->m_i8751_value >> 8) == 0x01) /* Coinage settings */
327      {
328         state->m_i8751_return = state->m_i8751_value;
329         state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
330         state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
331         state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
332         state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
333      }
334      if ((state->m_i8751_value >> 8) == 0x02) { state->m_i8751_return = state->m_snd | state->m_credits; state->m_snd = 0; }   /* Credits request */
335      if ((state->m_i8751_value >> 8) == 0x03 && state->m_credits) { state->m_i8751_return = 0; state->m_credits--; } /* Credits clear */
328336   }
329337}
330338
331static WRITE8_HANDLER( garyoret_i8751_w )
339static WRITE8_HANDLER( srdarwin_i8751_w )
332340{
333341   dec8_state *state = space->machine().driver_data<dec8_state>();
342   
343   /* Japan coinage first, then World coinage - US coinage shall be the same as the Japan one */
344   int lneed1[2][4] = {{1, 1, 1, 2}, {1, 1, 1, 1}};   /* slot 1 : coins needed */
345   int lcred1[2][4] = {{1, 2, 3, 1}, {2, 3, 4, 6}};   /* slot 1 : credits awarded */
346   int lneed2[2][4] = {{1, 1, 1, 2}, {1, 2, 3, 4}};   /* slot 2 : coins needed */
347   int lcred2[2][4] = {{1, 2, 3, 1}, {1, 1, 1, 1}};   /* slot 2 : credits awarded */
348
334349   state->m_i8751_return = 0;
335350
336351   switch (offset)
r14742r14743
345360
346361   /* Coins are controlled by the i8751 */
347362   if ((input_port_read(space->machine(), "I8751") & 3) == 3) state->m_latch = 1;
348   if ((input_port_read(space->machine(), "I8751") & 1) != 1 && state->m_latch) {state->m_coin1++; state->m_latch = 0;}
349   if ((input_port_read(space->machine(), "I8751") & 2) != 2 && state->m_latch) {state->m_coin2++; state->m_latch = 0;}
363   if ((input_port_read(space->machine(), "I8751") & 1) != 1 && state->m_latch)
364   {
365      state->m_coin1++;
366      state->m_latch = 0;
367      if (state->m_coin1>=state->m_need1)
368      {
369         state->m_coin1-=state->m_need1;
370         state->m_credits+=state->m_cred1;
371      }
372   }
373   if ((input_port_read(space->machine(), "I8751") & 2) != 2 && state->m_latch)
374   {
375      state->m_coin2++;
376      state->m_latch = 0;
377      if (state->m_coin2>=state->m_need2)
378      {
379         state->m_coin2-=state->m_need2;
380         state->m_credits+=state->m_cred2;
381      }
382   }
383   if (state->m_credits>99) state->m_credits=99; /* not handled by main CPU */
350384
351   /* Work out return values */
352   if ((state->m_i8751_value >> 8) == 0x00) {state->m_i8751_return = 0; state->m_coin1 = state->m_coin2 = 0;}
353   if ((state->m_i8751_value >> 8) == 0x01)  state->m_i8751_return = 0x59a; /* ID */
354   if ((state->m_i8751_value >> 8) == 0x04)  state->m_i8751_return = state->m_i8751_value; /* Coinage settings (Not supported) */
355   if ((state->m_i8751_value >> 8) == 0x05) {state->m_i8751_return = 0x00 | ((state->m_coin1 / 10) << 4) | (state->m_coin1 % 10);  } /* Coin 1 */
356   if ((state->m_i8751_value >> 8) == 0x06 && state->m_coin1 && !offset) {state->m_i8751_return = 0x600; state->m_coin1--; } /* Coin 1 clear */
385   if (state->m_i8751_value == 0x0000) state->m_i8751_return = 0;    /* ??? */
386
387   if (state->m_i8751_value == 0x3063)   { state->m_i8751_return = 0x9c; state->m_coinage_id = 0; }  /* Japanese version ID */
388   if (state->m_i8751_value == 0x306b)   { state->m_i8751_return = 0x94; state->m_coinage_id = 1; }  /* World version ID */
389
390   if ((state->m_i8751_value >> 8) == 0x40) /* Coinage settings */
391   {
392      state->m_i8751_return = state->m_i8751_value;
393      state->m_need1 = lneed1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
394      state->m_need2 = lneed2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
395      state->m_cred1 = lcred1[state->m_coinage_id][(state->m_i8751_value & 0x03) >> 0];
396      state->m_cred2 = lcred2[state->m_coinage_id][(state->m_i8751_value & 0x0c) >> 2];
397   }
398   if (state->m_i8751_value == 0x5000) { state->m_i8751_return = ((state->m_credits / 10) << 4) | (state->m_credits % 10); } /* Credits request */
399   if (state->m_i8751_value == 0x6000 && state->m_credits) { state->m_i8751_value = -1; state->m_credits--; }     /* Credits clear */
400
401/*
402   This next value is the index to a series of tables,
403    each table controls the end of level bad guy,
404    wrong values crash the cpu right away via a bogus jump.
405
406    Level number requested is in low byte
407
408    Addresses on left hand side are from the protection vector table which is
409    stored at location 0xf580 in rom dy_01.rom
410
411ba5e (lda #00) = Level 0?
412ba82 (lda #01) = Pyramid boss, Level 1?
413baaa           = No boss appears, game hangs
414bacc (lda #04) = Killer Bee boss, Level 4?
415bae0 (lda #03) = Snake type boss, Level 3?
416baf9           = Double grey thing boss...!
417bb0a           = Single grey thing boss!
418bb18 (lda #00) = Hailstorm from top of screen.
419bb31 (lda #28) = Small hailstorm
420bb47 (ldb #05) = Small hailstorm
421bb5a (lda #08) = Weird square things..
422bb63           = Square things again
423(24)           = Another square things boss..
424(26)           = Clock boss! (level 3)
425(28)           = Big dragon boss, perhaps an end-of-game baddy
426(30)           = 4 things appear at corners, seems to fit with attract mode (level 1)
427(32)           = Grey things teleport onto screen..
428(34)           = Grey thing appears in middle of screen
429(36)           = As above
430(38)           = Circle thing with two pincers
431(40)           = Grey bird
432(42)           = Crash (end of table)
433
434    The table below is hopefully correct thanks to Jose Miguel Morales Farreras,
435    but Boss #6 is uncomfirmed as correct.
436*/
437   if (state->m_i8751_value == 0x8000) state->m_i8751_return = 0xf580 +  0; /* Boss #1: Snake + Bees */
438   if (state->m_i8751_value == 0x8001) state->m_i8751_return = 0xf580 + 30; /* Boss #2: 4 Corners */
439   if (state->m_i8751_value == 0x8002) state->m_i8751_return = 0xf580 + 26; /* Boss #3: Clock */
440   if (state->m_i8751_value == 0x8003) state->m_i8751_return = 0xf580 +  2; /* Boss #4: Pyramid */
441   if (state->m_i8751_value == 0x8004) state->m_i8751_return = 0xf580 +  6; /* Boss #5: Snake + Head Combo */
442   if (state->m_i8751_value == 0x8005) state->m_i8751_return = 0xf580 + 24; /* Boss #6: LED Panels */
443   if (state->m_i8751_value == 0x8006) state->m_i8751_return = 0xf580 + 28; /* Boss #7: Dragon */
444   if (state->m_i8751_value == 0x8007) state->m_i8751_return = 0xf580 + 32; /* Boss #8: Teleport */
445   if (state->m_i8751_value == 0x8008) state->m_i8751_return = 0xf580 + 38; /* Boss #9: Octopus (Pincer) */
446   if (state->m_i8751_value == 0x8009) state->m_i8751_return = 0xf580 + 40; /* Boss #10: Bird */
447   if (state->m_i8751_value == 0x800a) state->m_i8751_return = 0xf580 + 42; /* End Game(bad address?) */
357448}
358449
359450/******************************************************************************/
r14742r14743
503594/******************************************************************************/
504595
505596
506
507static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8 )
508   AM_RANGE(0x0000, 0x07ff) AM_RAM
509   AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
510   AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
511   AM_RANGE(0x1800, 0x1fff) AM_RAM
512   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
513   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
514   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
515   AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */
516   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
517   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
518   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0")   /* Dip 1 */
519   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
520   AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
521   AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w)
522   AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2")   /* VBL & coins */
523   AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_pf_control0_8bit_w)
524   AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_pf_control1_8bit_w)
525   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
526   AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
527   AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
528   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
529   AM_RANGE(0x8000, 0xffff) AM_ROM
530ADDRESS_MAP_END
531
532static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8 )
533   AM_RANGE(0x0000, 0x0fff) AM_RAM
534   AM_RANGE(0x1000, 0x17ff) AM_RAM
535   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
536   AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
537   AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror?
538   AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w)
539   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")
540   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
541   AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
542   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
543   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2")   /* Player 3 */
544   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")   /* Start buttons + VBL */
545   AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1")   /* Dip */
546   AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
547   AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w)
548   AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
549   AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
550   AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
551   AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w)
552   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
553   AM_RANGE(0x8000, 0xffff) AM_ROM
554ADDRESS_MAP_END
555
556static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8 )
557   AM_RANGE(0x0000, 0x05ff) AM_RAM
558   AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram")
559   AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram)
560   AM_RANGE(0x1000, 0x13ff) AM_RAM
561   AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
562   AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w)
563   AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w)      /* Maybe.. */
564   AM_RANGE(0x1803, 0x1803) AM_WRITENOP         /* NMI ack */
565   AM_RANGE(0x1804, 0x1804) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram8_device, write) /* DMA */
566   AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */
567   AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w)   /* Sound */
568   AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w)      /* Flipscreen */
569   AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
570   AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
571   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
572   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0")   /* Player 1 */
573   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1")   /* Player 2 (cocktail) + VBL */
574   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
575   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
576   AM_RANGE(0x8000, 0xffff) AM_ROM
577ADDRESS_MAP_END
578
579static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8 )
580   AM_RANGE(0x0000, 0x17ff) AM_RAM
581   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
582   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
583   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
584   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
585   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")   /* Sprites */
586   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")      /* Dip 1 */
587   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")      /* Dip 2 */
588   AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r)   /* Player 1 rotary */
589   AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r)   /* Player 2 rotary */
590   AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3")      /* VBL */
591   AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2")      /* Fire buttons */
592   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
593   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
594   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
595   AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
596   AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
597   AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w)
598   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
599   AM_RANGE(0x8000, 0xffff) AM_ROM
600ADDRESS_MAP_END
601
602static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8 )
603   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
604   AM_RANGE(0x0f00, 0x0fff) AM_RAM
605   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
606   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
607   AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
608   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
609   AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
610   AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
611   AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1")
612   AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2")   /* VBL & coins */
613   AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0")   /* Dip 1 */
614   AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1")
615   AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
616   AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w)
617   AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w)   /* DMA */
618   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w)        /* BNKS */
619   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w)       /* SOUN */
620   AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP         /* COINCL */
621   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
622   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
623   AM_RANGE(0x8000, 0xffff) AM_ROM
624ADDRESS_MAP_END
625
626static ADDRESS_MAP_START( oscar_sub_map, AS_PROGRAM, 8 )
627   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
628   AM_RANGE(0x0f00, 0x0fff) AM_RAM
629   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
630   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
631   AM_RANGE(0x4000, 0xffff) AM_ROM
632ADDRESS_MAP_END
633
634597static ADDRESS_MAP_START( lastmisn_map, AS_PROGRAM, 8 )
635598   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
636599   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE("share3") AM_BASE_GENERIC(paletteram)
r14742r14743
726689   AM_RANGE(0x4000, 0xffff) AM_ROM
727690ADDRESS_MAP_END
728691
692static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8 )
693   AM_RANGE(0x0000, 0x17ff) AM_RAM
694   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
695   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
696   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
697   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
698   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")   /* Sprites */
699   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")      /* Dip 1 */
700   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")      /* Dip 2 */
701   AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r)   /* Player 1 rotary */
702   AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r)   /* Player 2 rotary */
703   AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3")      /* VBL */
704   AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2")      /* Fire buttons */
705   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
706   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
707   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
708   AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
709   AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
710   AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w)
711   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
712   AM_RANGE(0x8000, 0xffff) AM_ROM
713ADDRESS_MAP_END
714
715static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8 )
716   AM_RANGE(0x0000, 0x17ff) AM_RAM
717   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
718   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
719   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
720   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
721   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
722   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
723   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")   /* Dip 2 */
724   AM_RANGE(0x3808, 0x3808) AM_READNOP      /* ? */
725   AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1")   /* Player 2 + VBL */
726   AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0")   /* Player 1 */
727   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
728   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
729   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
730   AM_RANGE(0x3838, 0x3839) AM_WRITE(dec8_i8751_w)
731   AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
732   AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
733   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
734   AM_RANGE(0x8000, 0xffff) AM_ROM
735ADDRESS_MAP_END
736
737static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8 )
738   AM_RANGE(0x0000, 0x0fff) AM_RAM
739   AM_RANGE(0x1000, 0x17ff) AM_RAM
740   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
741   AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
742   AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror?
743   AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w)
744   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram")
745   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
746   AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
747   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
748   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2")   /* Player 3 */
749   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")   /* Start buttons + VBL */
750   AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1")   /* Dip */
751   AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
752   AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_control1_8bit_r, deco_bac06_pf_control1_8bit_w)
753   AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
754   AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
755   AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
756   AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w)
757   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
758   AM_RANGE(0x8000, 0xffff) AM_ROM
759ADDRESS_MAP_END
760
729761static ADDRESS_MAP_START( csilver_map, AS_PROGRAM, 8 )
730762   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
731763   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE("share3") AM_BASE_GENERIC(paletteram)
r14742r14743
767799   AM_RANGE(0x4000, 0xffff) AM_ROM
768800ADDRESS_MAP_END
769801
770static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8 )
771   AM_RANGE(0x0000, 0x17ff) AM_RAM
772   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
773   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
774   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
775   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
802static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8 )
803   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
804   AM_RANGE(0x0f00, 0x0fff) AM_RAM
805   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
806   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
807   AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
776808   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
809   AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
810   AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
811   AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1")
812   AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2")   /* VBL & coins */
813   AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0")   /* Dip 1 */
814   AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1")
815   AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
816   AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w)
817   AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w)   /* DMA */
818   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w)        /* BNKS */
819   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w)       /* SOUN */
820   AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP         /* COINCL */
821   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
822   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
823   AM_RANGE(0x8000, 0xffff) AM_ROM
824ADDRESS_MAP_END
825
826static ADDRESS_MAP_START( oscar_sub_map, AS_PROGRAM, 8 )
827   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1")
828   AM_RANGE(0x0f00, 0x0fff) AM_RAM
829   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2")
830   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
831   AM_RANGE(0x4000, 0xffff) AM_ROM
832ADDRESS_MAP_END
833
834static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8 )
835   AM_RANGE(0x0000, 0x05ff) AM_RAM
836   AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram")
837   AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram)
838   AM_RANGE(0x1000, 0x13ff) AM_RAM
839   AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data)
840   AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w)
841   AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w)      /* Maybe.. */
842   AM_RANGE(0x1803, 0x1803) AM_WRITENOP         /* NMI ack */
843   AM_RANGE(0x1804, 0x1804) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram8_device, write) /* DMA */
844   AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */
845   AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w)   /* Sound */
846   AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w)      /* Flipscreen */
847   AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
848   AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
777849   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
778   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")   /* Dip 2 */
779   AM_RANGE(0x3808, 0x3808) AM_READNOP      /* ? */
780   AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1")   /* Player 2 + VBL */
781   AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0")   /* Player 1 */
782   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
783   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
784   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
785   AM_RANGE(0x3838, 0x3839) AM_WRITE(garyoret_i8751_w)
786   AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
787   AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
850   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0")   /* Player 1 */
851   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1")   /* Player 2 (cocktail) + VBL */
852   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
788853   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
789854   AM_RANGE(0x8000, 0xffff) AM_ROM
790855ADDRESS_MAP_END
791856
857static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8 )
858   AM_RANGE(0x0000, 0x07ff) AM_RAM
859   AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
860   AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w)
861   AM_RANGE(0x1800, 0x1fff) AM_RAM
862   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size)
863   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
864   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
865   AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */
866   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
867   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
868   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0")   /* Dip 1 */
869   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
870   AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_pf_control0_8bit_w)
871   AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_pf_control1_8bit_w)
872   AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2")   /* VBL & coins */
873   AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_pf_control0_8bit_w)
874   AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_pf_control1_8bit_w)
875   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
876   AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
877   AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
878   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
879   AM_RANGE(0x8000, 0xffff) AM_ROM
880ADDRESS_MAP_END
881
792882/******************************************************************************/
793883
794884/* Used for Cobra Command, Maze Hunter, Super Real Darwin etc */
r14742r14743
894984/******************************************************************************/
895985
896986#define PLAYER1_JOYSTICK /* Player 1 controls */ \
897   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \
898   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \
899   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY \
987   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY \
988   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY \
989   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY \
900990   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
901991
902992#define PLAYER2_JOYSTICK /* Player 2 controls */ \
903   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL \
904   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL \
905   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL \
993   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_COCKTAIL \
994   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_COCKTAIL \
995   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_COCKTAIL \
906996   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
907997
908static INPUT_PORTS_START( cobracom )
998
999/* verified from M6809 code - coinage needs further checking when the MCU is available */
1000static INPUT_PORTS_START( lastmisn )
9091001   PORT_START("IN0")
9101002   PLAYER1_JOYSTICK
911   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
912   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
913   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
914   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1003   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )                 /* shoot */
1004   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )                 /* bomb */
1005   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )                 /* select */
1006   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
9151007
9161008   PORT_START("IN1")
9171009   PLAYER2_JOYSTICK
918   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
919   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
920   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
921   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1010   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL   /* shoot */
1011   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL   /* bomb */
1012   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL   /* select */
1013   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
9221014
9231015   PORT_START("IN2")
9241016   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
9251017   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
926   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
927   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1018   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
1019   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
9281020   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
9291021   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
9301022   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
931   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
1023   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
9321024
9331025   PORT_START("DSW0")
9341026   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
935   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
936   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1027   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
9371028   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
9381029   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1030   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
9391031   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
940   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
941   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1032   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
9421033   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
9431034   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
944   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1035   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
1036   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
9451037   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
9461038   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
947   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
948   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
949   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
950   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
1039   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
1040   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1041   PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
1042   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")
9511043   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
9521044   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
953   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
954   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
955   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
1045   PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)")
1046   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1047   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
9561048
9571049   PORT_START("DSW1")
958   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
959   PORT_DIPSETTING(    0x03, "3" )
960   PORT_DIPSETTING(    0x02, "4" )
961   PORT_DIPSETTING(    0x01, "5" )
962   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
963   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
964   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
965   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1050   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
1051   PORT_DIPSETTING(    0x01, "3" )
1052   PORT_DIPSETTING(    0x00, "5" )
1053   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )       /* tables at 0x82c1 (4 words) and 0xde38 (3 words) in 'lastmisn', 0x82c1 and 0xde17 in 'lastmisno' */
1054   PORT_DIPSETTING(    0x06, "30k 70k 70k+" )
1055   PORT_DIPSETTING(    0x04, "40k 90k 90k+" )
1056   PORT_DIPSETTING(    0x02, "40k and 80k" )
1057   PORT_DIPSETTING(    0x00, "50k only" )
1058   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1059   PORT_DIPSETTING(    0x18, DEF_STR( Easy ) )
1060   PORT_DIPSETTING(    0x10, DEF_STR( Normal ) )
9661061   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
9671062   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
968   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) )
969   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
970   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
971   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
972   PORT_DIPSETTING(    0x20, "50k, 150k" )
973   PORT_DIPSETTING(    0x00, "100k, 200k" )
974   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
975   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
976   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
977   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
978   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
979   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1063   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1064   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1065   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) )
1066   PORT_DIPSETTING(    0x80, DEF_STR( No ) )
1067   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
9801068INPUT_PORTS_END
9811069
982static INPUT_PORTS_START( ghostb )
1070/* verified from M6809 code - coinage needs further checking when the MCU is available */
1071static INPUT_PORTS_START( lastmisnj )
1072   PORT_INCLUDE(lastmisn)
1073
1074   PORT_MODIFY("DSW1")
1075   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )       /* tables at 0x82b7 (4 words) and 0xdd29 (3 words) */
1076   PORT_DIPSETTING(    0x06, "30k 50k 50k+" )
1077   PORT_DIPSETTING(    0x04, "30k 70k 70k+" )
1078   PORT_DIPSETTING(    0x02, "50k 100k 100k+" )
1079   PORT_DIPSETTING(    0x00, "50k only" )
1080   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1081   PORT_DIPSETTING(    0x18, DEF_STR( Normal ) )
1082   PORT_DIPSETTING(    0x10, DEF_STR( Hard ) )             /* "difficult" */
1083   PORT_DIPSETTING(    0x08, DEF_STR( Very_Hard ) )        /* "very difficult" */
1084   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )          /* "top difficult" */
1085   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
1086INPUT_PORTS_END
1087
1088
1089/* verified from M6809 code */
1090static INPUT_PORTS_START( shackled )
9831091   PORT_START("IN0")
9841092   PLAYER1_JOYSTICK
9851093   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
9861094   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
987   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
988   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1095   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1096   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
9891097
9901098   PORT_START("IN1")
9911099   PLAYER2_JOYSTICK
9921100   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
9931101   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
994   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
995   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1102   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1103   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
9961104
9971105   PORT_START("IN2")
998   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
999   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1000   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1001   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1002   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1003   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1004   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1005   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1106   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1107   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1108   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
1109   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
1110   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
1111   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
1112   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1113   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
10061114
10071115   PORT_START("DSW0")
1008   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1009   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
1010   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1011   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
1012   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1116   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
1117   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1118   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1119   PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW )
1120   PORT_DIPUNUSED( 0x04, IP_ACTIVE_LOW )
1121   PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW )
1122   PORT_DIPNAME( 0x10, 0x40, "Leave Off" )                   /* game doesn't boot when this is On - code at 0x401a - related to MCU - "dias" in Dip Switches page */
10131123   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
10141124   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1015   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
1016   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1017   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1018   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
1019   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1020   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1021   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1125   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1126   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1127   PORT_DIPNAME( 0x80, 0x80, "Freeze" )
10221128   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
10231129   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10241130
1025   PORT_START("I8751")
1026   /* Low 4 bits not connected on schematics */
1027   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1028   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1029   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1030   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
1031
10321131   PORT_START("DSW1")
1033   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1034   PORT_DIPSETTING(    0x01, "1" )
1035   PORT_DIPSETTING(    0x03, "3" )
1036   PORT_DIPSETTING(    0x02, "5" )
1037   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1038   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
1039   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
1040   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1041   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1132   /* tables in main CPU : 0x859b (Help), 0x85e9 (6-Help), 0x8fbe (Coin), 0x91b6 (Heart) */
1133   PORT_DIPNAME( 0x07, 0x07, "Coin/Heart/Help/6-Help" )    /* name from Dip Switches page */
1134   PORT_DIPSETTING( 0x00, "2/100/50/200" )
1135   PORT_DIPSETTING( 0x01, "4/100/60/300" )
1136   PORT_DIPSETTING( 0x02, "6/200/70/300" )
1137   PORT_DIPSETTING( 0x03, "8/200/80/400" )
1138   PORT_DIPSETTING( 0x07, "10/200/100/500" )
1139   PORT_DIPSETTING( 0x06, "12/300/100/600" )
1140   PORT_DIPSETTING( 0x05, "18/400/200/700" )
1141   PORT_DIPSETTING( 0x04, "20/500/200/800" )
1142   PORT_DIPUNUSED( 0x08, IP_ACTIVE_LOW )
1143   PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
1144   PORT_DIPSETTING(    0x30, DEF_STR( Normal ) )
1145   PORT_DIPSETTING(    0x20, DEF_STR( Hard ) )
1146   PORT_DIPSETTING(    0x10, DEF_STR( Very_Hard ) )
10421147   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1043   PORT_DIPNAME( 0x30, 0x30, "Scene Time" )
1044   PORT_DIPSETTING(    0x00, "4.00" )
1045   PORT_DIPSETTING(    0x10, "4.30" )
1046   PORT_DIPSETTING(    0x30, "5.00" )
1047   PORT_DIPSETTING(    0x20, "6.00" )
1048   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) )
1049   PORT_DIPSETTING(    0x40, DEF_STR( No ) )
1050   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1051   PORT_DIPNAME( 0x80, 0x80, "Beam Energy Pickup" ) /* Ghostb only */
1052   PORT_DIPSETTING(    0x00, "Up 1.5%" )
1053   PORT_DIPSETTING(    0x80, DEF_STR( Normal ) )
1148   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1149   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
1150   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1151   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10541152INPUT_PORTS_END
10551153
1056static INPUT_PORTS_START( ghostb3 )
1057   PORT_INCLUDE(ghostb)
1154/* verified from M6809 code */
1155static INPUT_PORTS_START( breywood )
1156   PORT_INCLUDE(shackled)
10581157
1059   PORT_MODIFY("IN2")
1060   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
1061   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
1062   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
1063   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
1064   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
1065   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
1066
1067   PORT_MODIFY("DSW0")
1068   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 )
1158   PORT_MODIFY("DSW1")
1159   PORT_DIPNAME( 0x0f, 0x0f, "Power" )                     /* table at 0x41be in sub CPU */
1160   PORT_DIPSETTING( 0x07, "200" )
1161   PORT_DIPSETTING( 0x0b, "300" )
1162   PORT_DIPSETTING( 0x03, "400" )
1163   PORT_DIPSETTING( 0x0d, "500" )
1164   PORT_DIPSETTING( 0x05, "600" )
1165   PORT_DIPSETTING( 0x09, "700" )
1166   PORT_DIPSETTING( 0x01, "800" )
1167   PORT_DIPSETTING( 0x0e, "900" )
1168   PORT_DIPSETTING( 0x0f, "1000" )
1169   PORT_DIPSETTING( 0x06, "2000" )
1170   PORT_DIPSETTING( 0x0a, "3000" )
1171   PORT_DIPSETTING( 0x02, "4000" )
1172   PORT_DIPSETTING( 0x0c, "5000" )
1173   PORT_DIPSETTING( 0x04, "6000" )
1174   PORT_DIPSETTING( 0x08, "7000" )
1175   PORT_DIPSETTING( 0x00, "8000" )
10691176INPUT_PORTS_END
10701177
1071static INPUT_PORTS_START( meikyuh )
1072   PORT_INCLUDE(ghostb)
10731178
1074   PORT_MODIFY("I8751")
1075   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1076   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
1077   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1078   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1079
1080INPUT_PORTS_END
1081
1082
1083static INPUT_PORTS_START( srdarwin )
1084   PORT_START("IN0")
1085   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
1086   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
1087   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
1088   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
1089   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1090   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1091   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1092   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1093
1094   PORT_START("IN1")
1095   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
1096   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
1097   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
1098   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
1099   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1100   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1101   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_VBLANK )
1102   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1103
1104   PORT_START("DSW0")
1105   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1106   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1107   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1108   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1109   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1110   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1111   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1112   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1113   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1114   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1115   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
1116   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1117   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1118   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
1119   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1120   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1121   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
1122   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1123   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1124   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1125   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1126   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
1127
1128   PORT_START("DSW1")
1129   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1130   PORT_DIPSETTING(    0x01, "1" )
1131   PORT_DIPSETTING(    0x03, "3" )
1132   PORT_DIPSETTING(    0x02, "5" )
1133   PORT_DIPSETTING(    0x00, "28 (Cheat)")
1134   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
1135   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
1136   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1137   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1138   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1139   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1140   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1141   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1142   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1143   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1144   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1145   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1146   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1147   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1148   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Continues ) )
1149   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1150   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1151
1152   PORT_START("FAKE")
1153   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) /* Fake */
1154INPUT_PORTS_END
1155
1179/* verified from HD6309 code - 'makyosen' coinage needs further checking when its REAL MCU is available */
11561180static INPUT_PORTS_START( gondo )
11571181   PORT_START("IN0")
11581182   PLAYER1_JOYSTICK
r14742r14743
11871211   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
11881212   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
11891213   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1190   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
1214   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )              /* produces sound but gives 0 credits - coinage not initialised in the MCU */
11911215
11921216   PORT_START("AN0")   /* player 1 12-way rotary control */
11931217   PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
r14742r14743
11961220   PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
11971221
11981222   PORT_START("DSW0")
1199   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1200   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1201   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1223   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )           /* table at 0x01b8 in MCU (4 bytes : coins in 4 MSbits and credits in 4 LSbits) */
1224   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
12021225   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
12031226   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1204   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1205   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1206   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1227   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1228   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )           /* table at 0x01bc in MCU (4 bytes : coins in 4 MSbits and credits in 4 LSbits) */
1229   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
12071230   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
12081231   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1209   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1210   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1211   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1232   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
1233   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
12121234   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
12131235   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
12141236   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
12151237   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
12161238   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
12171239   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1218   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1240   PORT_DIPNAME( 0x80, 0x80, "Swap buttons" )              /* code at 0x8a2b in 'gondo', 0x88c5 in 'makyosen' - undocumented in the manual */
12191241   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
12201242   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
12211243
r14742r14743
12241246   PORT_DIPSETTING(    0x01, "1" )
12251247   PORT_DIPSETTING(    0x03, "3" )
12261248   PORT_DIPSETTING(    0x02, "5" )
1227   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1249   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")           /* gives 99 lives */
12281250   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
1229   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
1251   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
12301252   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1231   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1253   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
12321254   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1233   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) )
1255   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Allow_Continue ) )
12341256   PORT_DIPSETTING(    0x10, DEF_STR( No ) )
12351257   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1236   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1237   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1238   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1239   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1240   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1241   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1242   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1243   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1244   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1258   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1259   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1260   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
12451261INPUT_PORTS_END
12461262
1247static INPUT_PORTS_START( oscar )
1263
1264/* verified from HD6309 code - coinage needs further checking when the MCU is available */
1265static INPUT_PORTS_START( garyoret )
12481266   PORT_START("IN0")
12491267   PLAYER1_JOYSTICK
1250   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1251   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1252   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
1253   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1268   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )                 /* shoot */
1269   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )                 /* bomb */
1270   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1271   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
12541272
12551273   PORT_START("IN1")
12561274   PLAYER2_JOYSTICK
1257   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1258   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1259   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
1260   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1261
1262   PORT_START("IN2")
1263   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1264   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1265   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
1266   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1267   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1268   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1275   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)  /* shoot */
1276   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)  /* bomb */
12691277   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
12701278   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
12711279
1280   PORT_START("I8751")   /* hooked up on the (fake) i8751 */
1281   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1282   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1283   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1284   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )              /* produces sound but gives 0 credits - coinage not initialised in the (fake) MCU */
1285
12721286   PORT_START("DSW0")
12731287   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
12741288   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
r14742r14743
12801294   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
12811295   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
12821296   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
1283   PORT_DIPNAME( 0x10, 0x10, "Freeze Mode" )
1284   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1285   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1297   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
12861298   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
12871299   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
12881300   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
12891301   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
12901302   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
12911303   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1292   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1293   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1294   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
1304   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )                   /* not tested - no cocktail when simultaneous players anyway */
12951305
12961306   PORT_START("DSW1")
1297   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1298   PORT_DIPSETTING(    0x01, "1" )
1299   PORT_DIPSETTING(    0x03, "3" )
1300   PORT_DIPSETTING(    0x02, "5" )
1301   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1307   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
1308   PORT_DIPSETTING(    0x01, "3" )
1309   PORT_DIPSETTING(    0x00, "5" )
1310   PORT_DIPUNUSED( 0x02, IP_ACTIVE_LOW )
13021311   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
13031312   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
13041313   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
13051314   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
13061315   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1307   PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
1308   PORT_DIPSETTING(    0x30, "Every 40000" )
1309   PORT_DIPSETTING(    0x20, "Every 60000" )
1310   PORT_DIPSETTING(    0x10, "Every 90000" )
1311   PORT_DIPSETTING(    0x00, "50000 only" )
1312   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")
1316   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
1317   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1318   PORT_DIPNAME( 0x40, 0x40, "Leave Off" )                   /* game doesn't boot when this is On - code at 0x807f and test at 0x819e */
13131319   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
13141320   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1315   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) )
1316   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1317   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
1321   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
13181322INPUT_PORTS_END
13191323
1320static INPUT_PORTS_START( oscaru )
1324
1325/* verified from HD6309 code */
1326static INPUT_PORTS_START( ghostb )
13211327   PORT_START("IN0")
13221328   PLAYER1_JOYSTICK
1323   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1324   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1325   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
1326   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1329   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)  /* "FIRE" */
1330   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)  /* beam / upgradable shot when out of energy */
1331   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1332   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
13271333
13281334   PORT_START("IN1")
13291335   PLAYER2_JOYSTICK
1330   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1331   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1332   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
1333   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1336   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)  /* "FIRE" */
1337   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)  /* beam / upgradable shot when out of energy */
1338   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1339   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
13341340
13351341   PORT_START("IN2")
1336   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1337   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1338   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
1342   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1343   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1344   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
13391345   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
13401346   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
13411347   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
13421348   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1343   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
1349   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
13441350
1351   PORT_START("I8751")
1352   /* Low 4 bits not connected on schematics */
1353   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1354   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1355   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1356   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )              /* produce sound but gives 0 credits - "ANDA" instruction at 0x8a5a */
1357
13451358   PORT_START("DSW0")
1346   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1347   PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
1348   PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
1349   PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
1350   PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
1351   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1352   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1353   PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
1354   PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
1355   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1356   PORT_DIPNAME( 0x10, 0x10, "Freeze Mode" )
1357   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1358   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1359   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
1360   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
1361   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1362   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
1363   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
13591364   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
13601365   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
13611366   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
13621367   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
13631368   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
13641369   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1365   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1366   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1367   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
1370   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )                   /* not tested - no cocktail when simultaneous players anyway */
13681371
13691372   PORT_START("DSW1")
1370   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1373   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )            /* lives are added when STARTn is pressed */
13711374   PORT_DIPSETTING(    0x01, "1" )
13721375   PORT_DIPSETTING(    0x03, "3" )
13731376   PORT_DIPSETTING(    0x02, "5" )
1374   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1377   PORT_DIPSETTING(    0x00, "Invulnerability (Cheat)")    /* gives 1 life */
13751378   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
13761379   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
13771380   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
13781381   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
13791382   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1380   PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
1381   PORT_DIPSETTING(    0x30, "Every 40000" )
1382   PORT_DIPSETTING(    0x20, "Every 60000" )
1383   PORT_DIPSETTING(    0x10, "Every 90000" )
1384   PORT_DIPSETTING(    0x00, "50000 only" )
1385   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")
1386   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1383   PORT_DIPNAME( 0x30, 0x30, "Max Scene Time" )            /* 1:00 is added when STARTn is pressed until max scene time is reached */
1384   PORT_DIPSETTING(    0x00, "4:00" )
1385   PORT_DIPSETTING(    0x10, "4:30" )
1386   PORT_DIPSETTING(    0x30, "5:00" )
1387   PORT_DIPSETTING(    0x20, "6:00" )
1388   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) )
1389   PORT_DIPSETTING(    0x40, DEF_STR( No ) )
1390   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1391   PORT_DIPNAME( 0x80, 0x80, "Energy Bonus" )              /* energy is set to value each new life */
1392   PORT_DIPSETTING(    0x80, DEF_STR( None ) )             /* 0x0100 */
1393   PORT_DIPSETTING(    0x00, "+25%" )                      /* 0x0140 */
1394INPUT_PORTS_END
1395
1396/* verified from HD6309 code */
1397static INPUT_PORTS_START( ghostb2a )
1398   PORT_INCLUDE(ghostb)
1399
1400   /* BUTTON1 : upgradable shot - BUTTON2 : beam (provided you have energy) */
1401
1402   PORT_MODIFY("I8751")
1403   /* Low 4 bits not connected on schematics */
1404   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1405   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1406   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1407   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )              /* produce sound but gives 0 lives - "ANDA" instruction at 0x8a20 */
1408
1409   PORT_MODIFY("DSW0")
1410   /* NO start buttons - to start a game, press any button from any player */
1411   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1412   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1413
1414   PORT_MODIFY("DSW1")
1415   /* lives are added when COINn is pressed */
1416   /* 1:00 is added when COINn is pressed until max scene time is reached */
1417   PORT_DIPNAME( 0x80, 0x80, "Energy Bonus" )              /* energy is added when COINn is pressed */
1418   PORT_DIPSETTING(    0x80, DEF_STR( None ) )             /* 0x0040 */
1419   PORT_DIPSETTING(    0x00, "+50%" )                      /* 0x0060 */
1420INPUT_PORTS_END
1421
1422/* verified from HD6309 code */
1423static INPUT_PORTS_START( ghostb3 )
1424   PORT_INCLUDE(ghostb2a)
1425
1426   PORT_MODIFY("IN2")
1427   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_PLAYER(3)
1428   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_PLAYER(3)
1429   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_PLAYER(3)
1430   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
1431   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)  /* upgradable shot */
1432   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)  /* beam (provided you have energy) */
1433
1434   PORT_MODIFY("I8751")
1435   /* Low 4 bits not connected on schematics */
1436   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1437   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
1438   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1439   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
1440INPUT_PORTS_END
1441
1442/* verified from HD6309 code */
1443static INPUT_PORTS_START( meikyuh )
1444   PORT_INCLUDE(ghostb)
1445
1446   PORT_MODIFY("I8751")
1447   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
1448   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )              /* gives 4 credits for 14 coins ! */
1449   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1450   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1451
1452   /* BUTTON1 : upgradable shot - BUTTON2 : circular fire (provided you have energy) - BUTTON1 + BUTTON2 : beam (provided you have energy) */
1453
1454   PORT_MODIFY("DSW1")
1455   /* lives are added when STARTn is pressed - 1 extra life is awarded on 2nd credit and after for the same player who gets then 2, 4 or 6 additional lives */
1456   /* max time scene is always 6:00 at start - 0:30 is subed every 8 levels - 1:00 is added when STARTn is pressed until max scene time is reached */
1457   PORT_DIPNAME( 0x10, 0x10, "Energy Bonus" )              /* energy is added when STARTn is pressed */
1458   PORT_DIPSETTING(    0x10, DEF_STR( None ) )             /* 0x0020 */
1459   PORT_DIPSETTING(    0x00, "+50%" )                      /* 0x0030 */
1460   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1461   PORT_DIPNAME( 0x80, 0x80, "Freeze" )
1462   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
13871463   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1388   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) )
1389   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1390   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
13911464INPUT_PORTS_END
13921465
1393static INPUT_PORTS_START( lastmisn )
1466
1467/* verified from M6809 code - coinage needs further checking when the MCU is available */
1468static INPUT_PORTS_START( csilver )
13941469   PORT_START("IN0")
13951470   PLAYER1_JOYSTICK
1396   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1397   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1398   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
1471   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )                 /* sword */
1472   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )                 /* jump */
1473   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
13991474   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
14001475
14011476   PORT_START("IN1")
14021477   PLAYER2_JOYSTICK
1403   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1404   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1405   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
1478   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL   /* sword */
1479   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL   /* jump */
1480   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
14061481   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
14071482
14081483   PORT_START("IN2")
r14742r14743
14171492
14181493   PORT_START("DSW0")
14191494   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1420   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1421   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1422   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1423   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1495   PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
1496   PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
1497   PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
1498   PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
14241499   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1425   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1426   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1500   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1501   PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
1502   PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
14271503   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1428   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1429   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
1430   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1504   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
1505   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
1506   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1507   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1508   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
1509   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
14311510   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1432   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
1511   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
14331512   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1434   PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
1435   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")
1436   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1437   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1438   PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)")
1439   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1440   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1513   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
14411514
14421515   PORT_START("DSW1")
1443   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
1444   PORT_DIPSETTING(    0x01, "3" )
1445   PORT_DIPSETTING(    0x00, "5" )
1446   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )
1447   PORT_DIPSETTING(    0x06, "30k, 70k then every 70k" )
1448   PORT_DIPSETTING(    0x04, "40k, 90k then every 90k" )
1449   PORT_DIPSETTING(    0x02, "40k and 80k" )
1450   PORT_DIPSETTING(    0x00, "50k only" )
1451   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1516   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1517   PORT_DIPSETTING(    0x01, "1" )
1518   PORT_DIPSETTING(    0x03, "3" )
1519   PORT_DIPSETTING(    0x02, "5" )
1520   PORT_DIPSETTING(    0x00, "255 (Cheat)")
1521   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
14521522   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
1453   PORT_DIPSETTING(    0x18, DEF_STR( Normal ) )
1454   PORT_DIPSETTING(    0x10, DEF_STR( Hard ) )
1523   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1524   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
14551525   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1456   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Unused according to the manual */
1457   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1458   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1459   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1526   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) )
1527   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1528   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
1529   PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW )
1530   PORT_DIPNAME( 0x40, 0x40, "No Key for Door (Cheat)")    /* code at 0x9816 in sub CPU */
14601531   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
14611532   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1462   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) )
1463   PORT_DIPSETTING(    0x80, DEF_STR( No ) )
1464   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1533   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
14651534INPUT_PORTS_END
14661535
1467static INPUT_PORTS_START( lastmisnj )
1536/* verified from M6809 code - coinage needs further checking when the MCU is available */
1537static INPUT_PORTS_START( csilverj )
1538   PORT_INCLUDE(csilver)
1539
1540   PORT_MODIFY("DSW0")
1541   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1542   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1543   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1544   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1545   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1546   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1547   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1548   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1549   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1550   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
1551INPUT_PORTS_END
1552
1553
1554/* verified from HD6309 code */
1555static INPUT_PORTS_START( oscar )
14681556   PORT_START("IN0")
14691557   PLAYER1_JOYSTICK
1470   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1471   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1472   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
1473   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1558   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )                 /* shoot */
1559   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )                 /* jump */
1560   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )                 /* select */
1561   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
14741562
14751563   PORT_START("IN1")
14761564   PLAYER2_JOYSTICK
1477   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
1478   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1479   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
1480   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1565   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL   /* shoot */
1566   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL   /* jump */
1567   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL   /* select */
1568   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
14811569
14821570   PORT_START("IN2")
14831571   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
14841572   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1485   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
1486   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
1573   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )           /* always adds 1 credit */
1574   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
14871575   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
14881576   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
14891577   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
14901578   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
14911579
14921580   PORT_START("DSW0")
1493   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1494   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1495   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1496   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1497   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1498   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1499   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1500   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1581   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )           /* table at 0xf8e3 (4 * 2 bytes : coins then credits) */
1582   PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
1583   PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
1584   PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
1585   PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
1586   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )           /* table at 0xf8eb (4 * 2 bytes : coins then credits) */
1587   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1588   PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
1589   PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
15011590   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1502   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1503   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )
1591   PORT_DIPNAME( 0x10, 0x10, "Freeze Mode" )
15041592   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
15051593   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1506   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
1507   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1508   PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
1509   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")
1594   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
1595   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1596   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1597   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
15101598   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
15111599   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1512   PORT_DIPNAME( 0x80, 0x80, "Infinite Lives (Cheat)")
1513   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1514   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1600   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1601   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1602   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
15151603
15161604   PORT_START("DSW1")
1517   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
1518   PORT_DIPSETTING(    0x01, "3" )
1519   PORT_DIPSETTING(    0x00, "5" )
1520   PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )
1521   PORT_DIPSETTING(    0x06, "30k, 50k then every 50k" )
1522   PORT_DIPSETTING(    0x04, "30k, 70k then every 70k" )
1523   PORT_DIPSETTING(    0x02, "50k, 100k then every 100k" )
1524   PORT_DIPSETTING(    0x00, "50k only" )
1525   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
1605   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1606   PORT_DIPSETTING(    0x01, "1" )
1607   PORT_DIPSETTING(    0x03, "3" )
1608   PORT_DIPSETTING(    0x02, "5" )
1609   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1610   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
15261611   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
1527   PORT_DIPSETTING(    0x18, DEF_STR( Normal ) )
1528   PORT_DIPSETTING(    0x10, DEF_STR( Hard ) )
1612   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1613   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
15291614   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1530   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Unused according to the manual */
1531   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1532   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1533   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1615   PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )       /* tables at 0x82d8 (4 words) and 0xf3fe (3 words) */
1616   PORT_DIPSETTING(    0x30, "40k 100k 60k+" )
1617   PORT_DIPSETTING(    0x20, "60k 160k 100k+" )
1618   PORT_DIPSETTING(    0x10, "90k 240k 150k+" )
1619   PORT_DIPSETTING(    0x00, "50k only" )
1620   PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)")    /* not when falling into void or water - also gives infinite time */
15341621   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
15351622   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1536   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1537   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1538   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1623   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) )
1624   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1625   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
15391626INPUT_PORTS_END
15401627
1541static INPUT_PORTS_START( shackled )
1542   PORT_START("IN0")
1543   PLAYER1_JOYSTICK
1544   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1545   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1546   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1547   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
1628/* verified from HD6309 code */
1629static INPUT_PORTS_START( oscarj )
1630   PORT_INCLUDE(oscar)
15481631
1549   PORT_START("IN1")
1550   PLAYER2_JOYSTICK
1551   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1552   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1553   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1554   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
1632   PORT_MODIFY("DSW0")
1633   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )           /* table at 0xf8d6 (4 * 2 bytes : coins then credits) in 'oscarj1', 0xf8e6 in 'oscarj2', 0xf8f2 in 'oscaru' */
1634   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1635   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1636   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1637   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1638   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )           /* table at 0xf8de (4 * 2 bytes : coins then credits) in 'oscarj1', 0xf8ee in 'oscarj2', 0xf8fa in 'oscaru' */
1639   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1640   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1641   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1642   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
15551643
1556   PORT_START("IN2")
1557   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1558   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1559   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
1560   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
1561   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
1562   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
1563   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
1564   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
1644   /* bonus lives : tables at 0x82d8 (4 words) and 0xf3f1 (3 words) in 'oscarj1', 0x82de and 0xf401 in 'orscarj2', 0x82d8 and 0xf412 in 'orscaru' - same as in 'oscar' */
1645INPUT_PORTS_END
15651646
1566   PORT_START("DSW0")
1567   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
1568   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1569   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1570   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* All marked as unused in the manual */
1571   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1572   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1573   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
1574   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1575   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1576   PORT_DIPNAME( 0x10, 0x10, "Leave Off" )   /* game doesn't boot when this is On */
1577   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1578   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1579   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
1580   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1581   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1582   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1583   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1584   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1585   PORT_DIPNAME( 0x80, 0x80, "Freeze" )
1586   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1587   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
15881647
1589   PORT_START("DSW1")
1590   PORT_DIPNAME( 0x0f, 0x0f, "Power" )
1591   PORT_DIPSETTING( 0x07, "200" )
1592   PORT_DIPSETTING( 0x0b, "300" )
1593   PORT_DIPSETTING( 0x03, "400" )
1594   PORT_DIPSETTING( 0x0d, "500" )
1595   PORT_DIPSETTING( 0x05, "600" )
1596   PORT_DIPSETTING( 0x09, "700" )
1597   PORT_DIPSETTING( 0x01, "800" )
1598   PORT_DIPSETTING( 0x0e, "900" )
1599   PORT_DIPSETTING( 0x0f, "1000" )
1600   PORT_DIPSETTING( 0x06, "2000" )
1601   PORT_DIPSETTING( 0x0a, "3000" )
1602   PORT_DIPSETTING( 0x02, "4000" )
1603   PORT_DIPSETTING( 0x0c, "5000" )
1604   PORT_DIPSETTING( 0x04, "6000" )
1605   PORT_DIPSETTING( 0x08, "7000" )
1606   PORT_DIPSETTING( 0x00, "8000" )
1607   PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
1608   PORT_DIPSETTING(    0x30, DEF_STR( Normal ) )
1609   PORT_DIPSETTING(    0x20, DEF_STR( Hard ) )
1610   PORT_DIPSETTING(    0x10, DEF_STR( Very_Hard ) )
1611   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1612   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1613   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1614   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1615   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
1616   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1617   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1618INPUT_PORTS_END
1619
1620static INPUT_PORTS_START( csilver )
1648/* verified from M6809 code - coinage needs further checking when the MCU is available */
1649static INPUT_PORTS_START( srdarwin )
16211650   PORT_START("IN0")
1622   PLAYER1_JOYSTICK
1651   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
1652   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY
1653   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY
1654   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY
16231655   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
16241656   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1625   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1626   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1657   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1658   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
16271659
16281660   PORT_START("IN1")
1629   PLAYER2_JOYSTICK
1661   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
1662   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_COCKTAIL
1663   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_COCKTAIL
1664   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_COCKTAIL
16301665   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
16311666   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
1632   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1667   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_VBLANK )
16331668   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
16341669
1635   PORT_START("IN2")
1670   PORT_START("I8751") /* Fake port for i8751 */
16361671   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
16371672   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1638   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
1639   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
1640   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1641   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1642   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1643   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
16441673
16451674   PORT_START("DSW0")
16461675   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1647   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1648   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
1649   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1650   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1676   PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
1677   PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
1678   PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
1679   PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
16511680   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1652   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
1653   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
1681   PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1682   PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
1683   PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
16541684   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1655   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1656   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) /* Listed as "Unused" in the manual */
1657   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1658   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1685   PORT_DIPUNUSED( 0x10, IP_ACTIVE_LOW )
16591686   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
16601687   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
16611688   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
r14742r14743
16711698   PORT_DIPSETTING(    0x01, "1" )
16721699   PORT_DIPSETTING(    0x03, "3" )
16731700   PORT_DIPSETTING(    0x02, "5" )
1674   PORT_DIPSETTING(    0x00, "Infinite (Cheat)")
1701   PORT_DIPSETTING(    0x00, "28 (Cheat)")
16751702   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
1676   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
1703   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
16771704   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1678   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1705   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
16791706   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1680   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) )
1707   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
1708   PORT_DIPSETTING(    0x10, "Every 50k" )                 /* table at 0xab06 - last bonus life at 850k */
1709   PORT_DIPSETTING(    0x00, "Every 100k" )                /* table at 0xab17 - last bonus life at 900k */
1710   PORT_DIPNAME( 0x20, 0x20, "After Stage 10" )            /* code at 0xab94 */
1711   PORT_DIPSETTING(    0x20, "Back to Stage 1" )
1712   PORT_DIPSETTING(    0x00, "Game Over" )
1713   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1714   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) )
16811715   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1682   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
1683   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) /* Manual states dips 6-8 are "Unused" */
1684   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1685   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1686   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1687   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1688   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1689   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1690   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1691   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1716   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
16921717INPUT_PORTS_END
16931718
1694static INPUT_PORTS_START( garyoret )
1719/* verified from M6809 code - coinage needs further checking when the MCU is available */
1720static INPUT_PORTS_START( srdarwinj )
1721   PORT_INCLUDE(srdarwin)
1722
1723   PORT_MODIFY("DSW0")
1724   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1725   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1726   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
1727   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1728   PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
1729   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1730   PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
1731   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
1732   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1733   PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
1734INPUT_PORTS_END
1735
1736
1737/* verified from M6809 code */
1738static INPUT_PORTS_START( cobracom )
16951739   PORT_START("IN0")
16961740   PLAYER1_JOYSTICK
1697   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1698   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1699   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1700   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
1741   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )                 /* fire */
1742   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )                 /* missile */
1743   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1744   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
17011745
17021746   PORT_START("IN1")
17031747   PLAYER2_JOYSTICK
1704   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1705   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1748   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)  /* fire */
1749   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)  /* missile */
17061750   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1707   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
1751   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
17081752
1709   PORT_START("I8751") /* Fake port for i8751 */
1753   PORT_START("IN2")
17101754   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
17111755   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1756   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )           /* always adds 1 credit */
1757   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1758   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1759   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1760   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1761   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
17121762
17131763   PORT_START("DSW0")
1714   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
1764   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )           /* code at 0x88b7 in 'cobracom', 0x890e in 'cobracomj' */
17151765   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
17161766   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
17171767   PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
17181768   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1719   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
1769   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )           /* code at 0x889b in 'cobracom', 0x88f2 in 'cobracomj' */
17201770   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
17211771   PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
17221772   PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
17231773   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
1724   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
1774   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
17251775   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
17261776   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
17271777   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
r14742r14743
17301780   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
17311781   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
17321782   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1733   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1734   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1735   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1783   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
1784   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1785   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
17361786
17371787   PORT_START("DSW1")
1738   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
1739   PORT_DIPSETTING(    0x01, "3" )
1740   PORT_DIPSETTING(    0x00, "5" )
1741   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
1742   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1743   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1788   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
1789   PORT_DIPSETTING(    0x03, "3" )
1790   PORT_DIPSETTING(    0x02, "4" )
1791   PORT_DIPSETTING(    0x01, "5" )
1792   PORT_DIPSETTING(    0x00, "99 (Cheat)")                 /* lose a life before getting 2nd bonus life ! */
17441793   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
1745   PORT_DIPSETTING(    0x04, DEF_STR( Easy ) )
1794   PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
17461795   PORT_DIPSETTING(    0x0c, DEF_STR( Normal ) )
1747   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
1796   PORT_DIPSETTING(    0x04, DEF_STR( Hard ) )
17481797   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1749   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
1750   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1751   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1752   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
1753   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1754   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1755   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1756   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1757   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1758   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1759   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1760   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1798   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) )
1799   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1800   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
1801   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )       /* table at 0xa898 (2* 2 words) in 'cobracomj', 0xa8fe in 'cobracomj' */
1802   PORT_DIPSETTING(    0x20, "50k and 150k" )
1803   PORT_DIPSETTING(    0x00, "100k and 200k" )
1804   PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW )
1805   PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )                   /* previously "Freeze" : code at 0x8849 in 'cobracomj', 0x88a0 in 'cobracomj' */
17611806INPUT_PORTS_END
17621807
17631808/******************************************************************************/
r14742r14743
19622007   state->save_item(NAME(state->m_i8751_port1));
19632008   state->save_item(NAME(state->m_i8751_return));
19642009   state->save_item(NAME(state->m_i8751_value));
2010   state->save_item(NAME(state->m_coinage_id));
19652011   state->save_item(NAME(state->m_coin1));
19662012   state->save_item(NAME(state->m_coin2));
2013   state->save_item(NAME(state->m_need1));
2014   state->save_item(NAME(state->m_need2));
2015   state->save_item(NAME(state->m_cred1));
2016   state->save_item(NAME(state->m_cred2));
2017   state->save_item(NAME(state->m_credits));
19672018   state->save_item(NAME(state->m_snd));
19682019   state->save_item(NAME(state->m_msm5205next));
19692020   state->save_item(NAME(state->m_toggle));
r14742r14743
19802031
19812032   state->m_nmi_enable = state->m_i8751_port0 = state->m_i8751_port1 = 0;
19822033   state->m_i8751_return = state->m_i8751_value = 0;
1983   state->m_coin1 = state->m_coin2 = state->m_snd = 0;
2034   state->m_coinage_id = 0;
2035   state->m_coin1 = state->m_coin2 = state->m_credits = state->m_snd = 0;
2036   state->m_need1 = state->m_need2 = state->m_cred1 = state->m_cred2 = 1;
19842037   state->m_msm5205next = 0;
19852038   state->m_toggle = 0;
19862039
r14742r14743
19932046}
19942047
19952048
1996static MACHINE_CONFIG_START( cobracom, dec8_state )
2049static MACHINE_CONFIG_START( lastmisn, dec8_state )
19972050
19982051   /* basic machine hardware */
19992052   MCFG_CPU_ADD("maincpu", M6809, 2000000)
2000   MCFG_CPU_PROGRAM_MAP(cobra_map)
2001   MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
2053   MCFG_CPU_PROGRAM_MAP(lastmisn_map)
20022054
2055   MCFG_CPU_ADD("sub", M6809, 2000000)
2056   MCFG_CPU_PROGRAM_MAP(lastmisn_sub_map)
2057
20032058   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2004   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
2059   MCFG_CPU_PROGRAM_MAP(ym3526_s_map)
20052060                        /* NMIs are caused by the main CPU */
2061   MCFG_QUANTUM_TIME(attotime::from_hz(12000))
20062062
20072063   MCFG_MACHINE_START(dec8)
20082064   MCFG_MACHINE_RESET(dec8)
r14742r14743
20102066   /* video hardware */
20112067   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
20122068   
2013   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2014   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
2015   MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
2016   deco_bac06_device::set_gfx_region_wide(*device, 3,3,0);
2069   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2070   deco_karnovsprites_device::set_gfx_region(*device, 1);
20172071
2018   MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
2019   deco_mxc06_device::set_gfx_region(*device, 1);
2020
2021
20222072   MCFG_SCREEN_ADD("screen", RASTER)
20232073   MCFG_SCREEN_REFRESH_RATE(58)
2024   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
2074   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
20252075   MCFG_SCREEN_SIZE(32*8, 32*8)
20262076   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2027   MCFG_SCREEN_UPDATE_STATIC(cobracom)
2077   MCFG_SCREEN_UPDATE_STATIC(lastmisn)
20282078
2029   MCFG_GFXDECODE(cobracom)
2030   MCFG_PALETTE_LENGTH(256)
2079   MCFG_GFXDECODE(shackled)
2080   MCFG_PALETTE_LENGTH(1024)
20312081
2032   MCFG_VIDEO_START(cobracom)
2082   MCFG_VIDEO_START(lastmisn)
20332083
20342084   /* sound hardware */
20352085   MCFG_SPEAKER_STANDARD_MONO("mono")
20362086
20372087   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
2038   MCFG_SOUND_ROUTE(0, "mono", 0.53)
2039   MCFG_SOUND_ROUTE(1, "mono", 0.53)
2040   MCFG_SOUND_ROUTE(2, "mono", 0.53)
2041   MCFG_SOUND_ROUTE(3, "mono", 0.50)
2088   MCFG_SOUND_ROUTE(0, "mono", 0.23)
2089   MCFG_SOUND_ROUTE(1, "mono", 0.23)
2090   MCFG_SOUND_ROUTE(2, "mono", 0.23)
2091   MCFG_SOUND_ROUTE(3, "mono", 0.20)
20422092
2043   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2044   MCFG_SOUND_CONFIG(ym3812_config)
2093   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2094   MCFG_SOUND_CONFIG(ym3526_config)
20452095   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
20462096MACHINE_CONFIG_END
20472097
2048static MACHINE_CONFIG_START( ghostb, dec8_state )
2098static MACHINE_CONFIG_START( shackled, dec8_state )
20492099
20502100   /* basic machine hardware */
2051   MCFG_CPU_ADD("maincpu", HD6309, 3000000*4)
2052   MCFG_CPU_PROGRAM_MAP(meikyuh_map)
2053   MCFG_CPU_VBLANK_INT("screen", gondo_interrupt)
2101   MCFG_CPU_ADD("maincpu", M6809, 2000000)
2102   MCFG_CPU_PROGRAM_MAP(shackled_map)
20542103
2104   MCFG_CPU_ADD("sub", M6809, 2000000)
2105   MCFG_CPU_PROGRAM_MAP(shackled_sub_map)
2106
20552107   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2056   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
2108   MCFG_CPU_PROGRAM_MAP(ym3526_s_map)
20572109                        /* NMIs are caused by the main CPU */
2110   MCFG_QUANTUM_TIME(attotime::from_hz(4800))
20582111
2059   MCFG_CPU_ADD("mcu", I8751, 3000000*4)
2060   MCFG_CPU_IO_MAP(dec8_mcu_io_map)
2061
20622112   MCFG_MACHINE_START(dec8)
20632113   MCFG_MACHINE_RESET(dec8)
20642114
20652115   /* video hardware */
20662116   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
20672117   
2068   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2069   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
2070
20712118   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
20722119   deco_karnovsprites_device::set_gfx_region(*device, 1);
20732120
r14742r14743
20762123   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
20772124   MCFG_SCREEN_SIZE(32*8, 32*8)
20782125   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2079   MCFG_SCREEN_UPDATE_STATIC(ghostb)
2080   MCFG_SCREEN_VBLANK_STATIC(dec8)
2126   MCFG_SCREEN_UPDATE_STATIC(shackled)
20812127
2082   MCFG_GFXDECODE(ghostb)
2128   MCFG_GFXDECODE(shackled)
20832129   MCFG_PALETTE_LENGTH(1024)
20842130
2085   MCFG_PALETTE_INIT(ghostb)
2086   MCFG_VIDEO_START(ghostb)
2131   MCFG_VIDEO_START(shackled)
20872132
20882133   /* sound hardware */
20892134   MCFG_SPEAKER_STANDARD_MONO("mono")
r14742r14743
20942139   MCFG_SOUND_ROUTE(2, "mono", 0.23)
20952140   MCFG_SOUND_ROUTE(3, "mono", 0.20)
20962141
2097   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2098   MCFG_SOUND_CONFIG(ym3812_config)
2142   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2143   MCFG_SOUND_CONFIG(ym3526_config)
20992144   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
21002145MACHINE_CONFIG_END
21012146
2147static MACHINE_CONFIG_START( gondo, dec8_state )
21022148
2103static MACHINE_CONFIG_START( oscar, dec8_state )
2104
21052149   /* basic machine hardware */
2106   MCFG_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */
2107   MCFG_CPU_PROGRAM_MAP(oscar_map)
2108   MCFG_CPU_VBLANK_INT("screen", oscar_interrupt)
2150   MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2151   MCFG_CPU_PROGRAM_MAP(gondo_map)
2152   MCFG_CPU_VBLANK_INT("screen", gondo_interrupt)
21092153
2110   MCFG_CPU_ADD("sub", HD6309, XTAL_12MHz/2) /* verified on pcb */
2111   MCFG_CPU_PROGRAM_MAP(oscar_sub_map)
2112
2113   MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8)
2154   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
21142155   MCFG_CPU_PROGRAM_MAP(oscar_s_map)
21152156                        /* NMIs are caused by the main CPU */
2116   MCFG_QUANTUM_TIME(attotime::from_hz(2400)) /* 40 CPU slices per frame */
21172157
2158   MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz)
2159   MCFG_CPU_IO_MAP(dec8_mcu_io_map)
2160
21182161   MCFG_MACHINE_START(dec8)
21192162   MCFG_MACHINE_RESET(dec8)
21202163
21212164   /* video hardware */
21222165   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
21232166   
2124   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2125   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
2167   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2168   deco_karnovsprites_device::set_gfx_region(*device, 1);
21262169
2127   MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
2128   deco_mxc06_device::set_gfx_region(*device, 1);
2129
21302170   MCFG_SCREEN_ADD("screen", RASTER)
21312171   MCFG_SCREEN_REFRESH_RATE(58)
2132   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
2172   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
21332173   MCFG_SCREEN_SIZE(32*8, 32*8)
21342174   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2135   MCFG_SCREEN_UPDATE_STATIC(oscar)
2175   MCFG_SCREEN_UPDATE_STATIC(gondo)
2176   MCFG_SCREEN_VBLANK_STATIC(dec8)
21362177
2137   MCFG_GFXDECODE(oscar)
2138   MCFG_PALETTE_LENGTH(512)
2178   MCFG_GFXDECODE(gondo)
2179   MCFG_PALETTE_LENGTH(1024)
21392180
2140   MCFG_VIDEO_START(oscar)
2181   MCFG_VIDEO_START(gondo)
21412182
21422183   /* sound hardware */
21432184   MCFG_SPEAKER_STANDARD_MONO("mono")
21442185
2145   MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */
2186   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
21462187   MCFG_SOUND_ROUTE(0, "mono", 0.23)
21472188   MCFG_SOUND_ROUTE(1, "mono", 0.23)
21482189   MCFG_SOUND_ROUTE(2, "mono", 0.23)
21492190   MCFG_SOUND_ROUTE(3, "mono", 0.20)
21502191
2151   MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
2192   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
21522193   MCFG_SOUND_CONFIG(ym3526_config)
21532194   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
21542195MACHINE_CONFIG_END
21552196
2197static MACHINE_CONFIG_START( garyoret, dec8_state )
21562198
2157static MACHINE_CONFIG_START( srdarwin, dec8_state )
2158
21592199   /* basic machine hardware */
2160   MCFG_CPU_ADD("maincpu", M6809,2000000)  /* MC68A09EP */
2161   MCFG_CPU_PROGRAM_MAP(srdarwin_map)
2162   MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
2200   MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2201   MCFG_CPU_PROGRAM_MAP(garyoret_map)
2202   MCFG_CPU_VBLANK_INT("screen", gondo_interrupt)
21632203
21642204   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2165   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
2205   MCFG_CPU_PROGRAM_MAP(oscar_s_map)
21662206                        /* NMIs are caused by the main CPU */
21672207
2208   MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz)
2209   MCFG_CPU_IO_MAP(dec8_mcu_io_map)
2210
21682211   MCFG_MACHINE_START(dec8)
21692212   MCFG_MACHINE_RESET(dec8)
21702213
21712214   /* video hardware */
21722215   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
21732216   
2217   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2218   deco_karnovsprites_device::set_gfx_region(*device, 1);
2219
21742220   MCFG_SCREEN_ADD("screen", RASTER)
21752221   MCFG_SCREEN_REFRESH_RATE(58)
21762222   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
21772223   MCFG_SCREEN_SIZE(32*8, 32*8)
21782224   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2179   MCFG_SCREEN_UPDATE_STATIC(srdarwin)
2225   MCFG_SCREEN_UPDATE_STATIC(garyoret)
2226   MCFG_SCREEN_VBLANK_STATIC(dec8)
21802227
2181   MCFG_GFXDECODE(srdarwin)
2182   MCFG_PALETTE_LENGTH(144)
2228   MCFG_GFXDECODE(gondo)
2229   MCFG_PALETTE_LENGTH(1024)
21832230
2184   MCFG_VIDEO_START(srdarwin)
2231   MCFG_VIDEO_START(garyoret)
21852232
21862233   /* sound hardware */
21872234   MCFG_SPEAKER_STANDARD_MONO("mono")
r14742r14743
21922239   MCFG_SOUND_ROUTE(2, "mono", 0.23)
21932240   MCFG_SOUND_ROUTE(3, "mono", 0.20)
21942241
2195   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2196   MCFG_SOUND_CONFIG(ym3812_config)
2242   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2243   MCFG_SOUND_CONFIG(ym3526_config)
21972244   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
21982245MACHINE_CONFIG_END
21992246
2200static MACHINE_CONFIG_START( gondo, dec8_state )
2247static MACHINE_CONFIG_START( ghostb, dec8_state )
22012248
22022249   /* basic machine hardware */
2203   MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2204   MCFG_CPU_PROGRAM_MAP(gondo_map)
2250   MCFG_CPU_ADD("maincpu", HD6309, 3000000*4)
2251   MCFG_CPU_PROGRAM_MAP(meikyuh_map)
22052252   MCFG_CPU_VBLANK_INT("screen", gondo_interrupt)
22062253
22072254   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2208   MCFG_CPU_PROGRAM_MAP(oscar_s_map)
2255   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
22092256                        /* NMIs are caused by the main CPU */
22102257
2211   MCFG_CPU_ADD("mcu", I8751, XTAL_8MHz)
2258   MCFG_CPU_ADD("mcu", I8751, 3000000*4)
22122259   MCFG_CPU_IO_MAP(dec8_mcu_io_map)
22132260
22142261   MCFG_MACHINE_START(dec8)
r14742r14743
22172264   /* video hardware */
22182265   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
22192266   
2267   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2268   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
2269
22202270   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
22212271   deco_karnovsprites_device::set_gfx_region(*device, 1);
22222272
22232273   MCFG_SCREEN_ADD("screen", RASTER)
22242274   MCFG_SCREEN_REFRESH_RATE(58)
2225   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
2275   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
22262276   MCFG_SCREEN_SIZE(32*8, 32*8)
22272277   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2228   MCFG_SCREEN_UPDATE_STATIC(gondo)
2278   MCFG_SCREEN_UPDATE_STATIC(ghostb)
22292279   MCFG_SCREEN_VBLANK_STATIC(dec8)
22302280
2231   MCFG_GFXDECODE(gondo)
2281   MCFG_GFXDECODE(ghostb)
22322282   MCFG_PALETTE_LENGTH(1024)
22332283
2234   MCFG_VIDEO_START(gondo)
2284   MCFG_PALETTE_INIT(ghostb)
2285   MCFG_VIDEO_START(ghostb)
22352286
22362287   /* sound hardware */
22372288   MCFG_SPEAKER_STANDARD_MONO("mono")
r14742r14743
22422293   MCFG_SOUND_ROUTE(2, "mono", 0.23)
22432294   MCFG_SOUND_ROUTE(3, "mono", 0.20)
22442295
2245   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2246   MCFG_SOUND_CONFIG(ym3526_config)
2296   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2297   MCFG_SOUND_CONFIG(ym3812_config)
22472298   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
22482299MACHINE_CONFIG_END
22492300
2250static MACHINE_CONFIG_START( lastmisn, dec8_state )
2301static MACHINE_CONFIG_START( csilver, dec8_state )
22512302
22522303   /* basic machine hardware */
2253   MCFG_CPU_ADD("maincpu", M6809, 2000000)
2254   MCFG_CPU_PROGRAM_MAP(lastmisn_map)
2304   MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */
2305   MCFG_CPU_PROGRAM_MAP(csilver_map)
22552306
2256   MCFG_CPU_ADD("sub", M6809, 2000000)
2257   MCFG_CPU_PROGRAM_MAP(lastmisn_sub_map)
2307   MCFG_CPU_ADD("sub", M6809, XTAL_12MHz/8) /* verified on pcb */
2308   MCFG_CPU_PROGRAM_MAP(csilver_sub_map)
2309   MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
22582310
2259   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2260   MCFG_CPU_PROGRAM_MAP(ym3526_s_map)
2311   MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) /* verified on pcb */
2312   MCFG_CPU_PROGRAM_MAP(csilver_s_map)
22612313                        /* NMIs are caused by the main CPU */
2262   MCFG_QUANTUM_TIME(attotime::from_hz(12000))
2314   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
22632315
22642316   MCFG_MACHINE_START(dec8)
22652317   MCFG_MACHINE_RESET(dec8)
r14742r14743
22722324
22732325   MCFG_SCREEN_ADD("screen", RASTER)
22742326   MCFG_SCREEN_REFRESH_RATE(58)
2275   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
2327   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
22762328   MCFG_SCREEN_SIZE(32*8, 32*8)
22772329   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
22782330   MCFG_SCREEN_UPDATE_STATIC(lastmisn)
r14742r14743
22852337   /* sound hardware */
22862338   MCFG_SPEAKER_STANDARD_MONO("mono")
22872339
2288   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
2340   MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */
22892341   MCFG_SOUND_ROUTE(0, "mono", 0.23)
22902342   MCFG_SOUND_ROUTE(1, "mono", 0.23)
22912343   MCFG_SOUND_ROUTE(2, "mono", 0.23)
22922344   MCFG_SOUND_ROUTE(3, "mono", 0.20)
22932345
2294   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2346   MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
22952347   MCFG_SOUND_CONFIG(ym3526_config)
22962348   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
2349
2350   MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */
2351   MCFG_SOUND_CONFIG(msm5205_config)
2352   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.88)
22972353MACHINE_CONFIG_END
22982354
2299static MACHINE_CONFIG_START( shackled, dec8_state )
2355static MACHINE_CONFIG_START( oscar, dec8_state )
23002356
23012357   /* basic machine hardware */
2302   MCFG_CPU_ADD("maincpu", M6809, 2000000)
2303   MCFG_CPU_PROGRAM_MAP(shackled_map)
2358   MCFG_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */
2359   MCFG_CPU_PROGRAM_MAP(oscar_map)
2360   MCFG_CPU_VBLANK_INT("screen", oscar_interrupt)
23042361
2305   MCFG_CPU_ADD("sub", M6809, 2000000)
2306   MCFG_CPU_PROGRAM_MAP(shackled_sub_map)
2362   MCFG_CPU_ADD("sub", HD6309, XTAL_12MHz/2) /* verified on pcb */
2363   MCFG_CPU_PROGRAM_MAP(oscar_sub_map)
23072364
2308   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2309   MCFG_CPU_PROGRAM_MAP(ym3526_s_map)
2365   MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8)
2366   MCFG_CPU_PROGRAM_MAP(oscar_s_map)
23102367                        /* NMIs are caused by the main CPU */
2311   MCFG_QUANTUM_TIME(attotime::from_hz(4800))
2368   MCFG_QUANTUM_TIME(attotime::from_hz(2400)) /* 40 CPU slices per frame */
23122369
23132370   MCFG_MACHINE_START(dec8)
23142371   MCFG_MACHINE_RESET(dec8)
r14742r14743
23162373   /* video hardware */
23172374   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
23182375   
2319   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2320   deco_karnovsprites_device::set_gfx_region(*device, 1);
2376   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2377   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
23212378
2379   MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
2380   deco_mxc06_device::set_gfx_region(*device, 1);
2381
23222382   MCFG_SCREEN_ADD("screen", RASTER)
23232383   MCFG_SCREEN_REFRESH_RATE(58)
23242384   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* 58Hz, 529ms Vblank duration */)
23252385   MCFG_SCREEN_SIZE(32*8, 32*8)
23262386   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2327   MCFG_SCREEN_UPDATE_STATIC(shackled)
2387   MCFG_SCREEN_UPDATE_STATIC(oscar)
23282388
2329   MCFG_GFXDECODE(shackled)
2330   MCFG_PALETTE_LENGTH(1024)
2389   MCFG_GFXDECODE(oscar)
2390   MCFG_PALETTE_LENGTH(512)
23312391
2332   MCFG_VIDEO_START(shackled)
2392   MCFG_VIDEO_START(oscar)
23332393
23342394   /* sound hardware */
23352395   MCFG_SPEAKER_STANDARD_MONO("mono")
23362396
2337   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
2397   MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */
23382398   MCFG_SOUND_ROUTE(0, "mono", 0.23)
23392399   MCFG_SOUND_ROUTE(1, "mono", 0.23)
23402400   MCFG_SOUND_ROUTE(2, "mono", 0.23)
23412401   MCFG_SOUND_ROUTE(3, "mono", 0.20)
23422402
2343   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2403   MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
23442404   MCFG_SOUND_CONFIG(ym3526_config)
23452405   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
23462406MACHINE_CONFIG_END
23472407
2348static MACHINE_CONFIG_START( csilver, dec8_state )
2408static MACHINE_CONFIG_START( srdarwin, dec8_state )
23492409
23502410   /* basic machine hardware */
2351   MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */
2352   MCFG_CPU_PROGRAM_MAP(csilver_map)
2353
2354   MCFG_CPU_ADD("sub", M6809, XTAL_12MHz/8) /* verified on pcb */
2355   MCFG_CPU_PROGRAM_MAP(csilver_sub_map)
2411   MCFG_CPU_ADD("maincpu", M6809,2000000)  /* MC68A09EP */
2412   MCFG_CPU_PROGRAM_MAP(srdarwin_map)
23562413   MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
23572414
2358   MCFG_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) /* verified on pcb */
2359   MCFG_CPU_PROGRAM_MAP(csilver_s_map)
2415   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2416   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
23602417                        /* NMIs are caused by the main CPU */
2361   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
23622418
23632419   MCFG_MACHINE_START(dec8)
23642420   MCFG_MACHINE_RESET(dec8)
r14742r14743
23662422   /* video hardware */
23672423   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
23682424   
2369   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2370   deco_karnovsprites_device::set_gfx_region(*device, 1);
2371
23722425   MCFG_SCREEN_ADD("screen", RASTER)
23732426   MCFG_SCREEN_REFRESH_RATE(58)
23742427   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
23752428   MCFG_SCREEN_SIZE(32*8, 32*8)
23762429   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2377   MCFG_SCREEN_UPDATE_STATIC(lastmisn)
2430   MCFG_SCREEN_UPDATE_STATIC(srdarwin)
23782431
2379   MCFG_GFXDECODE(shackled)
2380   MCFG_PALETTE_LENGTH(1024)
2432   MCFG_GFXDECODE(srdarwin)
2433   MCFG_PALETTE_LENGTH(144)
23812434
2382   MCFG_VIDEO_START(lastmisn)
2435   MCFG_VIDEO_START(srdarwin)
23832436
23842437   /* sound hardware */
23852438   MCFG_SPEAKER_STANDARD_MONO("mono")
23862439
2387   MCFG_SOUND_ADD("ym1", YM2203, XTAL_12MHz/8) /* verified on pcb */
2440   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
23882441   MCFG_SOUND_ROUTE(0, "mono", 0.23)
23892442   MCFG_SOUND_ROUTE(1, "mono", 0.23)
23902443   MCFG_SOUND_ROUTE(2, "mono", 0.23)
23912444   MCFG_SOUND_ROUTE(3, "mono", 0.20)
23922445
2393   MCFG_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
2394   MCFG_SOUND_CONFIG(ym3526_config)
2446   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2447   MCFG_SOUND_CONFIG(ym3812_config)
23952448   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
2396
2397   MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */
2398   MCFG_SOUND_CONFIG(msm5205_config)
2399   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.88)
24002449MACHINE_CONFIG_END
24012450
2402static MACHINE_CONFIG_START( garyoret, dec8_state )
2451static MACHINE_CONFIG_START( cobracom, dec8_state )
24032452
24042453   /* basic machine hardware */
2405   MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2406   MCFG_CPU_PROGRAM_MAP(garyoret_map)
2407   MCFG_CPU_VBLANK_INT("screen", gondo_interrupt)
2454   MCFG_CPU_ADD("maincpu", M6809, 2000000)
2455   MCFG_CPU_PROGRAM_MAP(cobra_map)
2456   MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
24082457
24092458   MCFG_CPU_ADD("audiocpu", M6502, 1500000)
2410   MCFG_CPU_PROGRAM_MAP(oscar_s_map)
2459   MCFG_CPU_PROGRAM_MAP(dec8_s_map)
24112460                        /* NMIs are caused by the main CPU */
24122461
24132462   MCFG_MACHINE_START(dec8)
r14742r14743
24162465   /* video hardware */
24172466   MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
24182467   
2419   MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0)
2420   deco_karnovsprites_device::set_gfx_region(*device, 1);
2468   MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0)
2469   deco_bac06_device::set_gfx_region_wide(*device, 2,2,0);
2470   MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0)
2471   deco_bac06_device::set_gfx_region_wide(*device, 3,3,0);
24212472
2473   MCFG_DEVICE_ADD("spritegen", DECO_MXC06, 0)
2474   deco_mxc06_device::set_gfx_region(*device, 1);
2475
2476
24222477   MCFG_SCREEN_ADD("screen", RASTER)
24232478   MCFG_SCREEN_REFRESH_RATE(58)
24242479   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */)
24252480   MCFG_SCREEN_SIZE(32*8, 32*8)
24262481   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
2427   MCFG_SCREEN_UPDATE_STATIC(garyoret)
2428   MCFG_SCREEN_VBLANK_STATIC(dec8)
2482   MCFG_SCREEN_UPDATE_STATIC(cobracom)
24292483
2430   MCFG_GFXDECODE(gondo)
2431   MCFG_PALETTE_LENGTH(1024)
2484   MCFG_GFXDECODE(cobracom)
2485   MCFG_PALETTE_LENGTH(256)
24322486
2433   MCFG_VIDEO_START(garyoret)
2487   MCFG_VIDEO_START(cobracom)
24342488
24352489   /* sound hardware */
24362490   MCFG_SPEAKER_STANDARD_MONO("mono")
24372491
24382492   MCFG_SOUND_ADD("ym1", YM2203, 1500000)
2439   MCFG_SOUND_ROUTE(0, "mono", 0.23)
2440   MCFG_SOUND_ROUTE(1, "mono", 0.23)
2441   MCFG_SOUND_ROUTE(2, "mono", 0.23)
2442   MCFG_SOUND_ROUTE(3, "mono", 0.20)
2493   MCFG_SOUND_ROUTE(0, "mono", 0.53)
2494   MCFG_SOUND_ROUTE(1, "mono", 0.53)
2495   MCFG_SOUND_ROUTE(2, "mono", 0.53)
2496   MCFG_SOUND_ROUTE(3, "mono", 0.50)
24432497
2444   MCFG_SOUND_ADD("ym2", YM3526, 3000000)
2445   MCFG_SOUND_CONFIG(ym3526_config)
2498   MCFG_SOUND_ADD("ym2", YM3812, 3000000)
2499   MCFG_SOUND_CONFIG(ym3812_config)
24462500   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
24472501MACHINE_CONFIG_END
24482502
24492503/******************************************************************************/
24502504
2451ROM_START( cobracom )
2452   ROM_REGION( 0x30000, "maincpu", 0 )
2453   ROM_LOAD( "el11-5.bin",  0x08000, 0x08000, CRC(af0a8b05) SHA1(096e4e7f2785a20bfaec14277413ce4e20e90214) )
2454   ROM_LOAD( "el12-4.bin",  0x10000, 0x10000, CRC(7a44ef38) SHA1(d7dc277dce08f9d073290e100be4a7ca2e2b82cb) )
2455   ROM_LOAD( "el13.bin",    0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) )
2505ROM_START( lastmisn )
2506   ROM_REGION( 0x20000, "maincpu", 0 )
2507   ROM_LOAD( "dl03-6.13h",  0x08000, 0x08000, CRC(47751a5e) SHA1(190970a6eb849781e8853f2bed7b34ac44e569ca) ) /* Rev 6 roms */
2508   ROM_LOAD( "lm_dl04.7h",  0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) )
24562509
2510   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
2511   ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) )
2512
24572513   ROM_REGION( 0x10000, "audiocpu", 0 )
2458   ROM_LOAD( "el10-4.bin",  0x8000, 0x8000, CRC(edfad118) SHA1(10de8805472346fead62460a3fdc09ae26a4e0d5) )
2514   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
24592515
2460   ROM_REGION( 0x08000, "gfx1", 0 )   /* characters */
2461   ROM_LOAD( "el14.bin",    0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) )
2516   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2517   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
24622518
2463   ROM_REGION( 0x80000, "gfx2", 0 )   /* sprites */
2464   ROM_LOAD( "el00-4.bin",  0x00000, 0x10000, CRC(122da2a8) SHA1(ce72f16abf7e5449c7d044d4b827e8735c3be0ff) )
2465   ROM_LOAD( "el01-4.bin",  0x20000, 0x10000, CRC(27bf705b) SHA1(196c35aaf3816d3eef4c2af6d146a90a48365d33) )
2466   ROM_LOAD( "el02-4.bin",  0x40000, 0x10000, CRC(c86fede6) SHA1(97584fa19591651fcfb39d1b2b6306165e93554c) )
2467   ROM_LOAD( "el03-4.bin",  0x60000, 0x10000, CRC(1d8a855b) SHA1(429261c200dddc62a330be8aea150b2037133188) )
2519   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2520   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
2521   ROM_CONTINUE(             0x06000, 0x2000 )
2522   ROM_CONTINUE(              0x04000, 0x2000 )
2523   ROM_CONTINUE(              0x02000, 0x2000 )
24682524
2469   ROM_REGION( 0x80000, "gfx3", 0 )   /* tiles 1 */
2470   ROM_LOAD( "el05.bin",    0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) )
2471   ROM_LOAD( "el06.bin",    0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) )
2472   ROM_LOAD( "el04.bin",    0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) )
2473   ROM_LOAD( "el07.bin",    0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) )
2525   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2526   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
2527   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
2528   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
2529   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
24742530
2475   ROM_REGION( 0x80000, "gfx4", 0 )    /* tiles 2 */
2476   ROM_LOAD( "el08.bin",    0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) )
2477   ROM_CONTINUE(            0x40000, 0x08000 )
2478   ROM_LOAD( "el09.bin",    0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) )
2479   ROM_CONTINUE(            0x60000, 0x08000 )
2531   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2532   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
2533   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
2534   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
2535   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
2536
2537   ROM_REGION( 256, "proms", 0 )
2538   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
24802539ROM_END
24812540
2482ROM_START( cobracomj )
2483   ROM_REGION( 0x30000, "maincpu", 0 )
2484   ROM_LOAD( "eh-11.rom",    0x08000, 0x08000, CRC(868637e1) SHA1(8b1e3e045e341bb94b1f6c7d89198b22e6c19de7) )
2485   ROM_LOAD( "eh-12.rom",    0x10000, 0x10000, CRC(7c878a83) SHA1(9b2a3083c6dae69626fdab16d97517d30eaa1859) )
2486   ROM_LOAD( "el13.bin",     0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) )
2541ROM_START( lastmisno )
2542   ROM_REGION( 0x20000, "maincpu", 0 )
2543   ROM_LOAD( "lm_dl03.13h", 0x08000, 0x08000, CRC(357f5f6b) SHA1(a114aac50db62a6bcb943681e517ad7c88ec47f4) ) /* Rev 5 roms */
2544   ROM_LOAD( "lm_dl04.7h",  0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) )
24872545
2546   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
2547   ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) )
2548
24882549   ROM_REGION( 0x10000, "audiocpu", 0 )
2489   ROM_LOAD( "eh-10.rom",    0x8000, 0x8000, CRC(62ca5e89) SHA1(b04acaccc58846e0d277868a873a440b7f8071b0) )
2550   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
24902551
2552   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2553   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2554
24912555   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2492   ROM_LOAD( "el14.bin",    0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) )
2556   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
2557   ROM_CONTINUE(             0x06000, 0x2000 )
2558   ROM_CONTINUE(              0x04000, 0x2000 )
2559   ROM_CONTINUE(              0x02000, 0x2000 )
24932560
24942561   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2495   ROM_LOAD( "eh-00.rom",    0x00000, 0x10000, CRC(d96b6797) SHA1(01c4a9f2bebb13cba14636690cd5356db73f045e) )
2496   ROM_LOAD( "eh-01.rom",    0x20000, 0x10000, CRC(3fef9c02) SHA1(e4b731faf6a2f4e5fed8ba9bd07e0f203981ffec) )
2497   ROM_LOAD( "eh-02.rom",    0x40000, 0x10000, CRC(bfae6c34) SHA1(9503a120e11e9466cd9a2931fd44a631d72ca5f0) )
2498   ROM_LOAD( "eh-03.rom",    0x60000, 0x10000, CRC(d56790f8) SHA1(1cc7cb9f7102158de14a737e9317a54f01790ba8) )
2562   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
2563   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
2564   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
2565   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
24992566
2500   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles 1 */
2501   ROM_LOAD( "el05.bin",    0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) )
2502   ROM_LOAD( "el06.bin",    0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) )
2503   ROM_LOAD( "el04.bin",    0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) )
2504   ROM_LOAD( "el07.bin",    0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) )
2567   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2568   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
2569   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
2570   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
2571   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
25052572
2506   ROM_REGION( 0x80000, "gfx4", 0 )    /* tiles 2 */
2507   ROM_LOAD( "el08.bin",    0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) )
2508   ROM_CONTINUE(            0x40000, 0x08000 )
2509   ROM_LOAD( "el09.bin",    0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) )
2510   ROM_CONTINUE(            0x60000, 0x08000 )
2573   ROM_REGION( 256, "proms", 0 )
2574   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
25112575ROM_END
25122576
2577ROM_START( lastmisnj )
2578   ROM_REGION( 0x20000, "maincpu", 0 )
2579   ROM_LOAD( "dl03-.13h",   0x08000, 0x08000, CRC(4be5e7e1) SHA1(9f943658663da31947cebdcbcb5f4e2be0714c06) )
2580   ROM_LOAD( "dl04-.7h",    0x10000, 0x10000, CRC(f026adf9) SHA1(4ccd0e714a6eb7cee388c93beee2d5510407c961) )
2581
2582   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
2583   ROM_LOAD( "dl02-.18h",   0x0000, 0x10000, CRC(d0de2b5d) SHA1(e0bb34c2a2ef6fc6f05ab9a98bd23a39004c0c05) )
2584
2585   ROM_REGION( 0x10000, "audiocpu", 0 )
2586   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
2587
2588   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2589   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2590
2591   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2592   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
2593   ROM_CONTINUE(             0x06000, 0x2000 )
2594   ROM_CONTINUE(              0x04000, 0x2000 )
2595   ROM_CONTINUE(              0x02000, 0x2000 )
2596
2597   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2598   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
2599   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
2600   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
2601   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
2602
2603   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2604   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
2605   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
2606   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
2607   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
2608
2609   ROM_REGION( 256, "proms", 0 )
2610   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
2611ROM_END
2612
2613ROM_START( shackled )
2614   ROM_REGION( 0x48000, "maincpu", 0 )
2615   ROM_LOAD( "dk-02.rom", 0x08000, 0x08000, CRC(87f8fa85) SHA1(1cb93a60eefdb453a3cc6ec9c5cc2e367fb8aeb0) )
2616   ROM_LOAD( "dk-06.rom", 0x10000, 0x10000, CRC(69ad62d1) SHA1(1aa23b12ab4f1908cddd25f091e1f9bd70a5113c) )
2617   ROM_LOAD( "dk-05.rom", 0x20000, 0x10000, CRC(598dd128) SHA1(10843c5352eef03c8675df6abaf23c9c9c795aa3) )
2618   ROM_LOAD( "dk-04.rom", 0x30000, 0x10000, CRC(36d305d4) SHA1(17586c316aff405cf20c1467d69c98fa2a3c2630) )
2619   ROM_LOAD( "dk-03.rom", 0x40000, 0x08000, CRC(6fd90fd1) SHA1(2f8db17e5545c82d243a7e23e7bda2c2a9101360) )
2620
2621   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
2622   ROM_LOAD( "dk-01.rom", 0x00000, 0x10000, CRC(71fe3bda) SHA1(959cce01362b2c670c2e15b03a78a1ff9cea4ee9) )
2623
2624   ROM_REGION( 0x10000, "audiocpu", 0 )
2625   ROM_LOAD( "dk-07.rom", 0x08000, 0x08000, CRC(887e4bcc) SHA1(6427396080e9cd8647adff47c8ed04593a14268c) )
2626
2627   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2628   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2629
2630   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2631   ROM_LOAD( "dk-00.rom", 0x00000, 0x08000, CRC(69b975aa) SHA1(38cb96768c79ff1aa1b4b190e08ec9155baf698a) )
2632
2633   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2634   ROM_LOAD( "dk-12.rom", 0x00000, 0x10000, CRC(615c2371) SHA1(30b25dc27d34646d886a465c77622eaa894d83c3) )
2635   ROM_LOAD( "dk-13.rom", 0x10000, 0x10000, CRC(479aa503) SHA1(1167f0d15439c95a1094f81855203e863ce0488d) )
2636   ROM_LOAD( "dk-14.rom", 0x20000, 0x10000, CRC(cdc24246) SHA1(1a4189bc2b1fa99740dd7921608159936ba3bd07) )
2637   ROM_LOAD( "dk-15.rom", 0x30000, 0x10000, CRC(88db811b) SHA1(7d3c4a80925f323efb589798b4a341d1a2ca95f9) )
2638   ROM_LOAD( "dk-16.rom", 0x40000, 0x10000, CRC(061a76bd) SHA1(5bcb513e48bed9b7c4207d94531be691a85e295d) )
2639   ROM_LOAD( "dk-17.rom", 0x50000, 0x10000, CRC(a6c5d8af) SHA1(58f3fece9a5ef8b39090a2f39610381b8e7cdbf7) )
2640   ROM_LOAD( "dk-18.rom", 0x60000, 0x10000, CRC(4d466757) SHA1(701d79bebbba4f266e19080d16ff2f93ffa94287) )
2641   ROM_LOAD( "dk-19.rom", 0x70000, 0x10000, CRC(1911e83e) SHA1(174e9db3f2211ecbbb93c6bda8f6185dbfdbc818) )
2642
2643   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2644   ROM_LOAD( "dk-11.rom", 0x00000, 0x10000, CRC(5cf5719f) SHA1(8c7582ac19010421ec748391a193aa18e51b981f) )
2645   ROM_LOAD( "dk-10.rom", 0x20000, 0x10000, CRC(408e6d08) SHA1(28cb76792e5f84bd101a91cb82597a5939804f84) )
2646   ROM_LOAD( "dk-09.rom", 0x40000, 0x10000, CRC(c1557fac) SHA1(7d39ec793113a48baf45c2ea07abb07e2e48985a) )
2647   ROM_LOAD( "dk-08.rom", 0x60000, 0x10000, CRC(5e54e9f5) SHA1(1ab41a3bde1f2c2be670e89cf402be28001c17d1) )
2648ROM_END
2649
2650ROM_START( breywood )
2651   ROM_REGION( 0x48000, "maincpu", 0 )
2652   ROM_LOAD( "7.bin", 0x08000, 0x08000, CRC(c19856b9) SHA1(766994703bb59879c311675353d7231ad27c7c16) )
2653   ROM_LOAD( "3.bin", 0x10000, 0x10000, CRC(2860ea02) SHA1(7ac090c3ae9d71baa6227ec9555f1c9f2d25ea0d) )
2654   ROM_LOAD( "4.bin", 0x20000, 0x10000, CRC(0fdd915e) SHA1(262df956dfc727c710ade28af7f33fddaafd7ee2) )
2655   ROM_LOAD( "5.bin", 0x30000, 0x10000, CRC(71036579) SHA1(c58ff3222b5bcd75d58c5f282554e92103e80916) )
2656   ROM_LOAD( "6.bin", 0x40000, 0x08000, CRC(308f4893) SHA1(539c138ff01c5718cc8a982482b989468d532699) )
2657
2658   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
2659   ROM_LOAD( "8.bin", 0x0000, 0x10000,  CRC(3d9fb623) SHA1(6e5eaad9bb0a432e2da5da5b18a2ed36617bdde2) )
2660
2661   ROM_REGION( 0x10000, "audiocpu", 0 )
2662   ROM_LOAD( "2.bin", 0x8000, 0x8000,  CRC(4a471c38) SHA1(963ed7b6afeefdfc2cf0d65b0998f973330e6495) )
2663
2664   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2665   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2666
2667   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2668   ROM_LOAD( "1.bin",  0x00000, 0x08000, CRC(815a891a) SHA1(e557d6a35821a8589d9e3df0f42131b58b08c8ca) )
2669
2670   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2671   ROM_LOAD( "20.bin", 0x00000, 0x10000, CRC(2b7634f2) SHA1(56d963d4960d9b3e888c8107340763e176adfa9b) )
2672   ROM_LOAD( "19.bin", 0x10000, 0x10000, CRC(4530a952) SHA1(99251a21347815cba465669e18df31262bcdaba1) )
2673   ROM_LOAD( "18.bin", 0x20000, 0x10000, CRC(87c28833) SHA1(3f1a294065326389d304e540bc880844c6c7cb06) )
2674   ROM_LOAD( "17.bin", 0x30000, 0x10000, CRC(bfb43a4d) SHA1(56092935147a3b643a9b39eb7cfc067a764644c5) )
2675   ROM_LOAD( "16.bin", 0x40000, 0x10000, CRC(f9848cc4) SHA1(6d8e77b67ce4d418defba6f6979632f31d2307c6) )
2676   ROM_LOAD( "15.bin", 0x50000, 0x10000, CRC(baa3d218) SHA1(3c31df23cc871cffd9a4dafae106e4a98f5af848) )
2677   ROM_LOAD( "14.bin", 0x60000, 0x10000, CRC(12afe533) SHA1(6df3471c16a714d118717da549a7523aa388ddd3) )
2678   ROM_LOAD( "13.bin", 0x70000, 0x10000, CRC(03373755) SHA1(d2541dd957803168f246d96b7cd74eae7fd43188) )
2679
2680   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2681   ROM_LOAD( "9.bin",  0x00000, 0x10000, CRC(067e2a43) SHA1(f1da7455aab21f94ed25a93b0ebfde69baa475d1) )
2682   ROM_LOAD( "10.bin", 0x20000, 0x10000, CRC(c19733aa) SHA1(3dfcfd33c5c4f792bb941ac933301c03ddd72b03) )
2683   ROM_LOAD( "11.bin", 0x40000, 0x10000, CRC(e37d5dbe) SHA1(ff79b4f6d8b0a3061e78d15480df0155650f347f) )
2684   ROM_LOAD( "12.bin", 0x60000, 0x10000, CRC(beee880f) SHA1(9a818a75cbec425a13f629bda6d50aa341aa1896) )
2685ROM_END
2686
2687ROM_START( gondo )
2688   ROM_REGION( 0x40000, "maincpu", 0 )
2689   ROM_LOAD( "dt-00.256", 0x08000, 0x08000, CRC(a8cf9118) SHA1(865744c9866957d686a31608d356e279fe58934e) )
2690   ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) )
2691   ROM_LOAD( "dt-02.512", 0x20000, 0x10000, CRC(bb5e674b) SHA1(8057dc7464a8b6987536f248d607957923b223cf) )
2692   ROM_LOAD( "dt-03.512", 0x30000, 0x10000, CRC(99c32b13) SHA1(3d79f48e7d198cb2e519d592a89eda505044bce5) )
2693
2694   ROM_REGION( 0x10000, "audiocpu", 0 )
2695   ROM_LOAD( "dt-05.256", 0x8000, 0x8000, CRC(ec08aa29) SHA1(ce83974ae095d9518d1ebf9f7e712f0cbc2c1b42) )
2696
2697   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2698   ROM_LOAD( "dt-a.1b", 0x0000, 0x1000, CRC(03abceeb) SHA1(a16b779d7cea1c1437f85fa6b6e08894a46a5674) )
2699
2700   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2701   ROM_LOAD( "dt-14.256", 0x00000, 0x08000, CRC(4bef16e1) SHA1(b8157a7a1b8f36cea1fd353267a4e03d920cb4aa) )
2702
2703   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2704   ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) )
2705   ROM_LOAD( "dt-20.256", 0x10000, 0x08000, CRC(42d01002) SHA1(5a289ffdc83c05f21908a5d0b6247da5b51c1ddd) )
2706   ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) )
2707   ROM_LOAD( "dt-18.256", 0x30000, 0x08000, CRC(c0c5df1c) SHA1(5b0f71f590434cdd0545ce098666798927727469) )
2708   ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) )
2709   ROM_LOAD( "dt-17.256", 0x50000, 0x08000, CRC(3bbcff0d) SHA1(a8f7aa56ff49ed6b29240c3504d6c9945944953b) )
2710   ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) )
2711   ROM_LOAD( "dt-22.256", 0x70000, 0x08000, CRC(c1876a5f) SHA1(66122ce765723765e20036bd4d461a210c8b94d3) )
2712
2713   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2714   ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) )
2715   ROM_CONTINUE(          0x10000, 0x08000 )
2716   ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) )
2717   ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) )
2718   ROM_CONTINUE(          0x30000, 0x08000 )
2719   ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) )
2720   ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) )
2721   ROM_CONTINUE(          0x50000, 0x08000 )
2722   ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) )
2723   ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) )
2724   ROM_CONTINUE(          0x70000, 0x08000 )
2725   ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) )
2726
2727   ROM_REGION( 1024, "proms", 0 )
2728   ROM_LOAD( "mb7122e.10b", 0x00000,  0x400,  CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) )    /* Priority (Not yet used) */
2729ROM_END
2730
2731ROM_START( makyosen )
2732   ROM_REGION( 0x40000, "maincpu", 0 )
2733   ROM_LOAD( "ds00",      0x08000, 0x08000, CRC(33bb16fe) SHA1(5d3873b66e0d08b35d56a8b508c774b27368a100) )
2734   ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) )
2735   ROM_LOAD( "ds02",      0x20000, 0x10000, CRC(925307a4) SHA1(1e8b8eb21df1a11b14c981b343b34c6cc3676517) )
2736   ROM_LOAD( "ds03",      0x30000, 0x10000, CRC(9c0fcbf6) SHA1(bfe42b5277fea111840a9f59b2cb8dfe44444029) )
2737
2738   ROM_REGION( 0x10000, "audiocpu", 0 )
2739   ROM_LOAD( "ds05",      0x8000, 0x8000, CRC(e6e28ca9) SHA1(3b1f8219331db1910bfb428f8964f8fc1063df6f) )
2740
2741   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H (fake) MCU based on 'gondo' one */
2742   ROM_LOAD( "ds-a.1b", 0x0000, 0x1000, BAD_DUMP CRC(f61b77cf) SHA1(2d3549876ea08623ce9da1d637853cb4c740300a))
2743
2744   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2745   ROM_LOAD( "ds14",      0x00000, 0x08000, CRC(00cbe9c8) SHA1(de7b640de8fd54ee79194945c96d5768d09f483b) )
2746
2747   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2748   ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) )
2749   ROM_LOAD( "ds20",      0x10000, 0x08000, CRC(0eef7f56) SHA1(05c23aa6a598478cd4822634cff96055c585e9d2) )
2750   ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) )
2751   ROM_LOAD( "ds18",      0x30000, 0x08000, CRC(2b2d1468) SHA1(a144ac1b367e1fec876156230e9ab1c99416962e) )
2752   ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) )
2753   ROM_LOAD( "ds17",      0x50000, 0x08000, CRC(75ae349a) SHA1(15755a28925d5ed37fab4bd988716fcc5d20c290) )
2754   ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) )
2755   ROM_LOAD( "ds22",      0x70000, 0x08000, CRC(c8ffb148) SHA1(ae1a8b3cd1f5e423dc1a3c7d05f9fe7c689432e3) )
2756
2757   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2758   ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) )
2759   ROM_CONTINUE(          0x10000, 0x08000 )
2760   ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) )
2761   ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) )
2762   ROM_CONTINUE(          0x30000, 0x08000 )
2763   ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) )
2764   ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) )
2765   ROM_CONTINUE(          0x50000, 0x08000 )
2766   ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) )
2767   ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) )
2768   ROM_CONTINUE(          0x70000, 0x08000 )
2769   ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) )
2770
2771   ROM_REGION( 1024, "proms", 0 )
2772   ROM_LOAD( "mb7122e.10b", 0x00000,  0x400,  CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) )    /* Priority (Not yet used) */
2773
2774   ROM_REGION( 0x0600, "plds", 0 )
2775   ROM_LOAD( "pal16r4nc.10u", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
2776   ROM_LOAD( "pal16r4nc.11g", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */
2777   ROM_LOAD( "pal16r4nc.1s",  0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */
2778ROM_END
2779
2780ROM_START( garyoret )
2781   ROM_REGION( 0x50000, "maincpu", 0 )
2782   ROM_LOAD( "dv00", 0x08000, 0x08000, CRC(cceaaf05) SHA1(b8f54638feab77d023e01ced947e1269f0d19fd8) )
2783   ROM_LOAD( "dv01", 0x10000, 0x10000, CRC(c33fc18a) SHA1(0d9594b0e6c39aea5b9f15f6aa364b31604f1066) )
2784   ROM_LOAD( "dv02", 0x20000, 0x10000, CRC(f9e26ce7) SHA1(8589594ebc7ae16942739382273a222dfa30b3b7) )
2785   ROM_LOAD( "dv03", 0x30000, 0x10000, CRC(55d8d699) SHA1(da1519cd54d27cc406420ce0845e43f7228cfd4e) )
2786   ROM_LOAD( "dv04", 0x40000, 0x10000, CRC(ed3d00ee) SHA1(6daa2ee509235ad03d3012a00382820279add620) )
2787
2788   ROM_REGION( 0x10000, "audiocpu", 0 )
2789   ROM_LOAD( "dv05", 0x08000, 0x08000, CRC(c97c347f) SHA1(a1b22733dc15d524af97db3e608a82503a49b182) )
2790
2791   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H (fake) MCU based on 'gondo' one */
2792   ROM_LOAD( "dv__.mcu", 0x0000, 0x1000, BAD_DUMP CRC(37cacec6) SHA1(d81fe36939ccac784a83a69dfc6898b22a4515ec) )
2793
2794   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2795   ROM_LOAD( "dv14", 0x00000, 0x08000, CRC(fb2bc581) SHA1(d597976c5ae586166c49051cc3de8cf0c2e5a5e1) )    /* Characters */
2796
2797   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2798   ROM_LOAD( "dv22", 0x00000, 0x10000, CRC(cef0367e) SHA1(8beb3a6b91ec0a6ec052243c8f626a581d349f65) )
2799   ROM_LOAD( "dv21", 0x10000, 0x08000, CRC(90042fb7) SHA1(f19bbf158c92030e8fddb5087b5b69b71956baf8) )
2800   ROM_LOAD( "dv20", 0x20000, 0x10000, CRC(451a2d8c) SHA1(f4eea444b797d394edeb514ddc1c494fd7ccc2f2) )
2801   ROM_LOAD( "dv19", 0x30000, 0x08000, CRC(14e1475b) SHA1(f0aec5b7b4be0da06a73ed382e7e851654e47e47) )
2802   ROM_LOAD( "dv18", 0x40000, 0x10000, CRC(7043bead) SHA1(5d1be8b9cd56ae43d60406b05258d20de980096d) )
2803   ROM_LOAD( "dv17", 0x50000, 0x08000, CRC(28f449d7) SHA1(cf1bc690b67910c42ad09531ab1d88461d00b944) )
2804   ROM_LOAD( "dv16", 0x60000, 0x10000, CRC(37e4971e) SHA1(9442c315b7cdbcc046d9e6838cb793c1857174ed) )
2805   ROM_LOAD( "dv15", 0x70000, 0x08000, CRC(ca41b6ac) SHA1(d7a9ef6c89741c1e8e17a668a9d39ea089f5c73f) )
2806
2807   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2808   ROM_LOAD( "dv08", 0x00000, 0x08000, CRC(89c13e15) SHA1(6507e60de5cd78a5b46090e4825a44c2a23631d7) )
2809   ROM_CONTINUE(     0x10000, 0x08000 )
2810   ROM_LOAD( "dv09", 0x08000, 0x08000, CRC(6a345a23) SHA1(b86f81b9fe25acd833ca3e2cff6cfa853c02280a) )
2811   ROM_CONTINUE(     0x18000, 0x08000 )
2812
2813   ROM_LOAD( "dv06", 0x20000, 0x08000, CRC(1eb52a20) SHA1(46670ed973f794be9c2c7e6bf5d97db51211e9a9) )
2814   ROM_CONTINUE(     0x30000, 0x08000 )
2815   ROM_LOAD( "dv07", 0x28000, 0x08000, CRC(e7346ef8) SHA1(8083a7a182e8ed904daf2f692115d01b3d0830eb) )
2816   ROM_CONTINUE(     0x38000, 0x08000 )
2817
2818   ROM_LOAD( "dv12", 0x40000, 0x08000, CRC(46ba5af4) SHA1(a1c13e7e3c85060202120b64e3cee32c1f733270) )
2819   ROM_CONTINUE(     0x50000, 0x08000 )
2820   ROM_LOAD( "dv13", 0x48000, 0x08000, CRC(a7af6dfd) SHA1(fa41bdafb64c79bd9769903fd37d4d5172b66a52) )
2821   ROM_CONTINUE(     0x58000, 0x08000 )
2822
2823   ROM_LOAD( "dv10", 0x60000, 0x08000, CRC(68b6d75c) SHA1(ac719ef6b30ac9e63fab13cb359e6114493f274d) )
2824   ROM_CONTINUE(     0x70000, 0x08000 )
2825   ROM_LOAD( "dv11", 0x68000, 0x08000, CRC(b5948aee) SHA1(587afbfeda985bede9e4b5f57dad6763f4294962) )
2826   ROM_CONTINUE(     0x78000, 0x08000 )
2827ROM_END
2828
25132829ROM_START( ghostb )
25142830   ROM_REGION( 0x50000, "maincpu", 0 )
25152831   ROM_LOAD( "dz01-22.1d", 0x08000, 0x08000, CRC(fc65fdf2) SHA1(b6ffe2043d5dbff061a9806631646428eed95dd3) )
r14742r14743
25212837   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
25222838   ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) )
25232839
2524   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2840   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H (fake) MCU */
25252841   ROM_LOAD( "dz-1.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) ) /* Verfied label, but is it different the other DZ */
25262842
25272843   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
r14742r14743
25592875   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
25602876   ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) )
25612877
2562   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2878   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H (fake) MCU */
25632879   ROM_LOAD( "dz.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) )
25642880
25652881   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
r14742r14743
25972913   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
25982914   ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) )
25992915
2600   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2916   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H (fake) MCU */
26012917   ROM_LOAD( "dz.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) )
26022918
26032919   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
r14742r14743
28423158   ROM_LOAD( "dw19.10d", 0x0400, 0x0400, CRC(cc16f3fa) SHA1(4562106ff752f5fc5ae00ff098141e5d74fe4700)  )
28433159ROM_END
28443160
2845ROM_START( srdarwin )
2846   ROM_REGION( 0x28000, "maincpu", 0 )
2847   ROM_LOAD( "dy01-e.b14", 0x20000, 0x08000, CRC(176e9299) SHA1(20cd44ab610e384ab4f0172054c9adc432b12e9c) )
2848   ROM_CONTINUE(           0x08000, 0x08000 )
2849   ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) )
3161/*
3162Main Compoennts
3163---------------
28503164
2851   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
2852   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
3165Top board (DATA EAST DE-0250-3):
31662x MC68B09EP (18e,19e)(main)
31671x RP65C02A (3f)(sound)
31681x YM3812 (1e)(sound)
31691x YM2203 (1f)(sound)
31702x Y30148 (1j,2j)(sound)
31711x OKI M5205 (3j)(sound)
31721x NEC PC3403C (1j)(sound)
31731x C4558C (2j)(sound)
31741x oscillator 8.000 (x1)
31751x ID8751H (read protected)
28533176
2854   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2855   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3177Lower board (DATA EAST DE-0251-2):
31781x DECO TC15G032AY-0013-8644a-DSPC10 (square component, with 135 pass-through pins)(14h)
31791x DECO VSC30-M60348-6102 (DIL40)(9a)
31801x DECO HMC20-M60232-6902 (DIL28)(14a)
31811x oscillator 12.000 (x1)
28563182
2857   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2858   ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) )
3183ROMs
3184----
28593185
2860   ROM_REGION( 0x30000, "gfx2", 0 )    /* sprites */
2861   ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) )
2862   ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) )
2863   ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) )
2864   ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) )
2865   ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) )
2866   ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) )
3186Top board (DATA EAST DE-0250-3):
31872x MBM27256 (00,03)
318810x MBM27C512 (01,02,04,05,06,07,08,09,10,11)
31891x MB7122 (DIL18) (15)
28673190
2868   ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
2869   ROM_LOAD( "dy03.b4",  0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) )
2870   ROM_CONTINUE(         0x10000, 0x4000 )
2871   ROM_CONTINUE(         0x20000, 0x4000 )
2872   ROM_CONTINUE(         0x30000, 0x4000 )
2873   ROM_LOAD( "dy02.b5",  0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) )
2874   ROM_CONTINUE(         0x18000, 0x4000 )
2875   ROM_CONTINUE(         0x28000, 0x4000 )
2876   ROM_CONTINUE(         0x38000, 0x4000 )
3191Lower board (DATA EAST DE-0251-2):
31923x MBM27C512
28773193
2878   ROM_REGION( 256, "proms", 0 )
2879   ROM_LOAD( "dy12.f4",  0x00000,  0x100,  CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) )    /* Priority (Not yet used) */
2880ROM_END
3194Notes
3195-----
28813196
2882ROM_START( srdarwinj )
2883   ROM_REGION( 0x28000, "maincpu", 0 )
2884   ROM_LOAD( "dy_01.rom", 0x20000, 0x08000, CRC(1eeee4ff) SHA1(89a70de8bd61c671582b11773ce69b2edcd9c2f8) )
2885   ROM_CONTINUE(          0x08000, 0x08000 )
2886   ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) )
3197Top board (DATA EAST DE-0250-3):
31981x JAMMA edge connector
31992x 25x2 legs connectors to lower board (cn1,cn2)
32001x trimmer (volume)
32012x 8 switches dip (7k,16k)
28873202
2888   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
2889   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
3203Lower board (DATA EAST DE-0251-2):
32042x 25x2 legs connectors to top board (cn1,cn2)
28903205
2891   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2892   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3206*/
28933207
2894   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2895   ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) )
3208ROM_START( csilver )
3209   ROM_REGION( 0x48000, "maincpu", 0 )
3210   ROM_LOAD( "dx03-12.18d", 0x08000, 0x08000, CRC(2d926e7c) SHA1(cf38e92904edb1870b0a4965f9049d67efe8cf6a) )
3211   ROM_LOAD( "dx01.12d", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) )
3212   ROM_LOAD( "dx02.13d", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) )
28963213
2897   ROM_REGION( 0x30000, "gfx2", 0 )    /* sprites */
2898   ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) )
2899   ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) )
2900   ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) )
2901   ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) )
2902   ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) )
2903   ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) )
3214   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3215   ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000,  CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
29043216
2905   ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
2906   ROM_LOAD( "dy03.b4",  0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) )
2907   ROM_CONTINUE(         0x10000, 0x4000 )
2908   ROM_CONTINUE(         0x20000, 0x4000 )
2909   ROM_CONTINUE(         0x30000, 0x4000 )
2910   ROM_LOAD( "dy02.b5",  0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) )
2911   ROM_CONTINUE(         0x18000, 0x4000 )
2912   ROM_CONTINUE(         0x28000, 0x4000 )
2913   ROM_CONTINUE(         0x38000, 0x4000 )
3217   ROM_REGION( 0x18000, "audiocpu", 0 )
3218   ROM_LOAD( "dx05.3f", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
3219   ROM_CONTINUE(   0x08000, 0x08000 )
29143220
2915   ROM_REGION( 256, "proms", 0 )
2916   ROM_LOAD( "dy12.f4",  0x00000,  0x100,  CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) )    /* Priority (Not yet used) */
2917ROM_END
2918
2919ROM_START( gondo )
2920   ROM_REGION( 0x40000, "maincpu", 0 )
2921   ROM_LOAD( "dt-00.256", 0x08000, 0x08000, CRC(a8cf9118) SHA1(865744c9866957d686a31608d356e279fe58934e) )
2922   ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) )
2923   ROM_LOAD( "dt-02.512", 0x20000, 0x10000, CRC(bb5e674b) SHA1(8057dc7464a8b6987536f248d607957923b223cf) )
2924   ROM_LOAD( "dt-03.512", 0x30000, 0x10000, CRC(99c32b13) SHA1(3d79f48e7d198cb2e519d592a89eda505044bce5) )
2925
2926   ROM_REGION( 0x10000, "audiocpu", 0 )
2927   ROM_LOAD( "dt-05.256", 0x8000, 0x8000, CRC(ec08aa29) SHA1(ce83974ae095d9518d1ebf9f7e712f0cbc2c1b42) )
2928
29293221   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2930   ROM_LOAD( "dt-a.1b", 0x0000, 0x1000, CRC(03abceeb) SHA1(a16b779d7cea1c1437f85fa6b6e08894a46a5674) )
3222   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) // dx-8.19a ?
29313223
29323224   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2933   ROM_LOAD( "dt-14.256", 0x00000, 0x08000, CRC(4bef16e1) SHA1(b8157a7a1b8f36cea1fd353267a4e03d920cb4aa) )
3225   ROM_LOAD( "dx00.3d", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) )
29343226
2935   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2936   ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) )
2937   ROM_LOAD( "dt-20.256", 0x10000, 0x08000, CRC(42d01002) SHA1(5a289ffdc83c05f21908a5d0b6247da5b51c1ddd) )
2938   ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) )
2939   ROM_LOAD( "dt-18.256", 0x30000, 0x08000, CRC(c0c5df1c) SHA1(5b0f71f590434cdd0545ce098666798927727469) )
2940   ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) )
2941   ROM_LOAD( "dt-17.256", 0x50000, 0x08000, CRC(3bbcff0d) SHA1(a8f7aa56ff49ed6b29240c3504d6c9945944953b) )
2942   ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) )
2943   ROM_LOAD( "dt-22.256", 0x70000, 0x08000, CRC(c1876a5f) SHA1(66122ce765723765e20036bd4d461a210c8b94d3) )
3227   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites (3bpp) */
3228   ROM_LOAD( "dx14.15k",  0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) )
3229    /* 0x10000-0x1ffff empy */
3230   ROM_LOAD( "dx13.13k",  0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) )
3231    /* 0x30000-0x3ffff empy */
3232   ROM_LOAD( "dx12.10k",  0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) )
3233    /* 0x50000-0x5ffff empy */
3234    /* 0x60000-0x7ffff empy (no 4th plane) */
29443235
2945   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2946   ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) )
2947   ROM_CONTINUE(          0x10000, 0x08000 )
2948   ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) )
2949   ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) )
2950   ROM_CONTINUE(          0x30000, 0x08000 )
2951   ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) )
2952   ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) )
2953   ROM_CONTINUE(          0x50000, 0x08000 )
2954   ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) )
2955   ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) )
2956   ROM_CONTINUE(          0x70000, 0x08000 )
2957   ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) )
2958
2959   ROM_REGION( 1024, "proms", 0 )
2960   ROM_LOAD( "mb7122e.10b", 0x00000,  0x400,  CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) )    /* Priority (Not yet used) */
3236   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles (3bpp) */
3237   ROM_LOAD( "dx06.5f",  0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) )
3238   ROM_LOAD( "dx07.7f",  0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) )
3239   ROM_LOAD( "dx08.8f",  0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) )
3240   ROM_LOAD( "dx09.10f", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) )
3241   ROM_LOAD( "dx10.12f",  0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) )
3242   ROM_LOAD( "dx11.13f",  0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) )
29613243ROM_END
29623244
2963ROM_START( makyosen )
2964   ROM_REGION( 0x40000, "maincpu", 0 )
2965   ROM_LOAD( "ds00",      0x08000, 0x08000, CRC(33bb16fe) SHA1(5d3873b66e0d08b35d56a8b508c774b27368a100) )
2966   ROM_LOAD( "dt-01.512", 0x10000, 0x10000, CRC(c39bb877) SHA1(9beb59ba19f38417c5d4d36e8f3c41f2b017d2d6) )
2967   ROM_LOAD( "ds02",      0x20000, 0x10000, CRC(925307a4) SHA1(1e8b8eb21df1a11b14c981b343b34c6cc3676517) )
2968   ROM_LOAD( "ds03",      0x30000, 0x10000, CRC(9c0fcbf6) SHA1(bfe42b5277fea111840a9f59b2cb8dfe44444029) )
3245/* Different IC positions to World set? */
3246ROM_START( csilverj )
3247   ROM_REGION( 0x48000, "maincpu", 0 )
3248   ROM_LOAD( "dx03-3.a4", 0x08000, 0x08000, CRC(02dd8cfc) SHA1(f29c0d9dd03e8c52672c0f3dbee44a93c5b4261d) )
3249   ROM_LOAD( "dx01.a2", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) )
3250   ROM_LOAD( "dx02.a3", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) )
29693251
2970   ROM_REGION( 0x10000, "audiocpu", 0 )
2971   ROM_LOAD( "ds05",      0x8000, 0x8000, CRC(e6e28ca9) SHA1(3b1f8219331db1910bfb428f8964f8fc1063df6f) )
3252   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3253   ROM_LOAD( "dx04-1.a5", 0x0000, 0x10000,  CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
29723254
3255   ROM_REGION( 0x18000, "audiocpu", 0 )
3256   ROM_LOAD( "dx05.a6", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
3257   ROM_CONTINUE(   0x08000, 0x08000 )
3258
29733259   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
2974   ROM_LOAD( "ds-a.1b", 0x0000, 0x1000, BAD_DUMP CRC(8bb25edc) SHA1(7073b06747e55e4ac5b60b68a64ffbc7e18cb593) )
3260   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
29753261
29763262   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
2977   ROM_LOAD( "ds14",      0x00000, 0x08000, CRC(00cbe9c8) SHA1(de7b640de8fd54ee79194945c96d5768d09f483b) )
3263   ROM_LOAD( "dx00.a1",  0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) )
29783264
2979   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
2980   ROM_LOAD( "dt-19.512", 0x00000, 0x10000, CRC(da2abe4b) SHA1(d53e4769671f3fd437edcff7e7ea05156bbcb45d) )
2981   ROM_LOAD( "ds20",      0x10000, 0x08000, CRC(0eef7f56) SHA1(05c23aa6a598478cd4822634cff96055c585e9d2) )
2982   ROM_LOAD( "dt-16.512", 0x20000, 0x10000, CRC(e9955d8f) SHA1(aeef5e18f9d36c1bab3000e95205ce1b18cfbf0b) )
2983   ROM_LOAD( "ds18",      0x30000, 0x08000, CRC(2b2d1468) SHA1(a144ac1b367e1fec876156230e9ab1c99416962e) )
2984   ROM_LOAD( "dt-15.512", 0x40000, 0x10000, CRC(a54b2eb6) SHA1(25cb61f67135672154f1ad8e0c49ec04655e91de) )
2985   ROM_LOAD( "ds17",      0x50000, 0x08000, CRC(75ae349a) SHA1(15755a28925d5ed37fab4bd988716fcc5d20c290) )
2986   ROM_LOAD( "dt-21.512", 0x60000, 0x10000, CRC(1c5f682d) SHA1(4b7022cce930a9e9a0087c91e8344269fe7ed889) )
2987   ROM_LOAD( "ds22",      0x70000, 0x08000, CRC(c8ffb148) SHA1(ae1a8b3cd1f5e423dc1a3c7d05f9fe7c689432e3) )
3265   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites (3bpp) */
3266   ROM_LOAD( "dx14.b5",  0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) )
3267    /* 0x10000-0x1ffff empy */
3268   ROM_LOAD( "dx13.b4",  0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) )
3269    /* 0x30000-0x3ffff empy */
3270   ROM_LOAD( "dx12.b3",  0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) )
3271    /* 0x50000-0x5ffff empy */
3272    /* 0x60000-0x7ffff empy (no 4th plane) */
29883273
2989   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
2990   ROM_LOAD( "dt-08.512", 0x00000, 0x08000, CRC(aec483f5) SHA1(1d6de823ab0eeb9c89e9c227428ff278663627f3) )
2991   ROM_CONTINUE(          0x10000, 0x08000 )
2992   ROM_LOAD( "dt-09.256", 0x08000, 0x08000, CRC(446f0ce0) SHA1(072b88d6de5aa0ed6b1d60c266bcf170dea927d5) )
2993   ROM_LOAD( "dt-06.512", 0x20000, 0x08000, CRC(3fe1527f) SHA1(b8df4bef2b1a879b65214025fc3b5998ef5c8886) )
2994   ROM_CONTINUE(          0x30000, 0x08000 )
2995   ROM_LOAD( "dt-07.256", 0x28000, 0x08000, CRC(61f9bce5) SHA1(ef8a5f5e4c66a143304bcab50ca87579f1507864) )
2996   ROM_LOAD( "dt-12.512", 0x40000, 0x08000, CRC(1a72ca8d) SHA1(f412758452cb3417e85c355ccb8794fde7edf1cc) )
2997   ROM_CONTINUE(          0x50000, 0x08000 )
2998   ROM_LOAD( "dt-13.256", 0x48000, 0x08000, CRC(ccb81aec) SHA1(56e524ed4373b7bd1074a0d22ff75ede379f1696) )
2999   ROM_LOAD( "dt-10.512", 0x60000, 0x08000, CRC(cfcfc9ed) SHA1(57f43d638cf864d68420f0203740be7bda9da5ca) )
3000   ROM_CONTINUE(          0x70000, 0x08000 )
3001   ROM_LOAD( "dt-11.256", 0x68000, 0x08000, CRC(53e9cf17) SHA1(8cbb45154a60f42f1b1e7299b12d2e92fc194df8) )
3002
3003   ROM_REGION( 1024, "proms", 0 )
3004   ROM_LOAD( "mb7122e.10b", 0x00000,  0x400,  CRC(dcbfec4e) SHA1(a375caef4575746870e285d90ba991ea7daefad6) )    /* Priority (Not yet used) */
3005
3006   ROM_REGION( 0x0600, "plds", 0 )
3007   ROM_LOAD( "pal16r4nc.10u", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
3008   ROM_LOAD( "pal16r4nc.11g", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */
3009   ROM_LOAD( "pal16r4nc.1s",  0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */
3274   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles (3bpp) */
3275   ROM_LOAD( "dx06.a7",  0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) )
3276   ROM_LOAD( "dx07.a8",  0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) )
3277   ROM_LOAD( "dx08.a9",  0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) )
3278   ROM_LOAD( "dx09.a10", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) )
3279   ROM_LOAD( "dx10.b1",  0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) )
3280   ROM_LOAD( "dx11.b2",  0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) )
30103281ROM_END
30113282
30123283ROM_START( oscar )
r14742r14743
31383409   ROM_LOAD( "du-13.bin", 0x00000,  0x200,  CRC(bea1f87e) SHA1(f5215992e4b53c9cd4c7e0b20ff5cfdce3ab6d02) )    /* Priority (Not yet used) */
31393410ROM_END
31403411
3141ROM_START( lastmisn )
3142   ROM_REGION( 0x20000, "maincpu", 0 )
3143   ROM_LOAD( "dl03-6.13h",  0x08000, 0x08000, CRC(47751a5e) SHA1(190970a6eb849781e8853f2bed7b34ac44e569ca) ) /* Rev 6 roms */
3144   ROM_LOAD( "lm_dl04.7h",  0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) )
3412ROM_START( srdarwin )
3413   ROM_REGION( 0x28000, "maincpu", 0 )
3414   ROM_LOAD( "dy01-e.b14", 0x20000, 0x08000, CRC(176e9299) SHA1(20cd44ab610e384ab4f0172054c9adc432b12e9c) )
3415   ROM_CONTINUE(           0x08000, 0x08000 )
3416   ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) )
31453417
3146   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3147   ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) )
3418   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
3419   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
31483420
3149   ROM_REGION( 0x10000, "audiocpu", 0 )
3150   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
3151
31523421   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
31533422   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
31543423
31553424   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3156   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
3157   ROM_CONTINUE(             0x06000, 0x2000 )
3158   ROM_CONTINUE(              0x04000, 0x2000 )
3159   ROM_CONTINUE(              0x02000, 0x2000 )
3425   ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) )
31603426
3161   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3162   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
3163   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
3164   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
3165   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
3427   ROM_REGION( 0x30000, "gfx2", 0 )    /* sprites */
3428   ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) )
3429   ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) )
3430   ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) )
3431   ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) )
3432   ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) )
3433   ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) )
31663434
3167   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3168   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
3169   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
3170   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
3171   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
3435   ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
3436   ROM_LOAD( "dy03.b4",  0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) )
3437   ROM_CONTINUE(         0x10000, 0x4000 )
3438   ROM_CONTINUE(         0x20000, 0x4000 )
3439   ROM_CONTINUE(         0x30000, 0x4000 )
3440   ROM_LOAD( "dy02.b5",  0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) )
3441   ROM_CONTINUE(         0x18000, 0x4000 )
3442   ROM_CONTINUE(         0x28000, 0x4000 )
3443   ROM_CONTINUE(         0x38000, 0x4000 )
31723444
31733445   ROM_REGION( 256, "proms", 0 )
3174   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
3446   ROM_LOAD( "dy12.f4",  0x00000,  0x100,  CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) )    /* Priority (Not yet used) */
31753447ROM_END
31763448
3177ROM_START( lastmisno )
3178   ROM_REGION( 0x20000, "maincpu", 0 )
3179   ROM_LOAD( "lm_dl03.13h", 0x08000, 0x08000, CRC(357f5f6b) SHA1(a114aac50db62a6bcb943681e517ad7c88ec47f4) ) /* Rev 5 roms */
3180   ROM_LOAD( "lm_dl04.7h",  0x10000, 0x10000, CRC(7dea1552) SHA1(920684413e2ba4313111e79821c5714977b26b1a) )
3449ROM_START( srdarwinj )
3450   ROM_REGION( 0x28000, "maincpu", 0 )
3451   ROM_LOAD( "dy_01.rom", 0x20000, 0x08000, CRC(1eeee4ff) SHA1(89a70de8bd61c671582b11773ce69b2edcd9c2f8) )
3452   ROM_CONTINUE(          0x08000, 0x08000 )
3453   ROM_LOAD( "dy00.b16", 0x10000, 0x10000, CRC(2bf6b461) SHA1(435d922c7b9df7f2b2f774346caed81d330be8a0) )
31813454
3182   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3183   ROM_LOAD( "lm_dl02.18h", 0x0000, 0x10000, CRC(ec9b5daf) SHA1(86d47bad123676abc82dd7c92943878c54c33075) )
3455   ROM_REGION( 2*0x10000, "audiocpu", 0 )    /* 64K for sound CPU + 64k for decrypted opcodes */
3456   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
31843457
3185   ROM_REGION( 0x10000, "audiocpu", 0 )
3186   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
3187
31883458   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
31893459   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
31903460
31913461   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3192   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
3193   ROM_CONTINUE(             0x06000, 0x2000 )
3194   ROM_CONTINUE(              0x04000, 0x2000 )
3195   ROM_CONTINUE(              0x02000, 0x2000 )
3462   ROM_LOAD( "dy05.b6", 0x00000, 0x4000, CRC(8780e8a3) SHA1(03ea91fdc5aba8e139201604fb3bf9b69f71f056) )
31963463
3197   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3198   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
3199   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
3200   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
3201   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
3464   ROM_REGION( 0x30000, "gfx2", 0 )    /* sprites */
3465   ROM_LOAD( "dy07.h16", 0x00000, 0x8000, CRC(97eaba60) SHA1(e3252b67bad7babcf4ece39f46ae4aeb950eb92b) )
3466   ROM_LOAD( "dy06.h14", 0x08000, 0x8000, CRC(c279541b) SHA1(eb3737413499d07b6c2af99a95b27b2590e670c5) )
3467   ROM_LOAD( "dy09.k13", 0x10000, 0x8000, CRC(d30d1745) SHA1(647b6121ab6fa812368da45e1295cc41f73be89d) )
3468   ROM_LOAD( "dy08.k11", 0x18000, 0x8000, CRC(71d645fd) SHA1(a74a9b9697fc39b4e675e732a9d7d82976cc95dd) )
3469   ROM_LOAD( "dy11.k16", 0x20000, 0x8000, CRC(fd9ccc5b) SHA1(b38c44c01acdc455d4192e4c8be1d68d9eb0c7b6) )
3470   ROM_LOAD( "dy10.k14", 0x28000, 0x8000, CRC(88770ab8) SHA1(0a4a807a8d3b0653864bd984872d5567836f8cf8) )
32023471
3203   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3204   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
3205   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
3206   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
3207   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
3472   ROM_REGION( 0x40000, "gfx3", 0 )    /* tiles */
3473   ROM_LOAD( "dy03.b4",  0x00000, 0x4000, CRC(44f2a4f9) SHA1(97368dd112451cd630f2fa5ba54679e84e7d4d97) )
3474   ROM_CONTINUE(         0x10000, 0x4000 )
3475   ROM_CONTINUE(         0x20000, 0x4000 )
3476   ROM_CONTINUE(         0x30000, 0x4000 )
3477   ROM_LOAD( "dy02.b5",  0x08000, 0x4000, CRC(522d9a9e) SHA1(248274ed6df604357cad386fcf0521b26810aa0e) )
3478   ROM_CONTINUE(         0x18000, 0x4000 )
3479   ROM_CONTINUE(         0x28000, 0x4000 )
3480   ROM_CONTINUE(         0x38000, 0x4000 )
32083481
32093482   ROM_REGION( 256, "proms", 0 )
3210   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
3483   ROM_LOAD( "dy12.f4",  0x00000,  0x100,  CRC(ebfaaed9) SHA1(5723dbfa3eb3fc4df8c8975b320a5c49848309d8) )    /* Priority (Not yet used) */
32113484ROM_END
32123485
3213ROM_START( lastmisnj )
3214   ROM_REGION( 0x20000, "maincpu", 0 )
3215   ROM_LOAD( "dl03-.13h",   0x08000, 0x08000, CRC(4be5e7e1) SHA1(9f943658663da31947cebdcbcb5f4e2be0714c06) )
3216   ROM_LOAD( "dl04-.7h",    0x10000, 0x10000, CRC(f026adf9) SHA1(4ccd0e714a6eb7cee388c93beee2d5510407c961) )
3486ROM_START( cobracom )
3487   ROM_REGION( 0x30000, "maincpu", 0 )
3488   ROM_LOAD( "el11-5.bin",  0x08000, 0x08000, CRC(af0a8b05) SHA1(096e4e7f2785a20bfaec14277413ce4e20e90214) )
3489   ROM_LOAD( "el12-4.bin",  0x10000, 0x10000, CRC(7a44ef38) SHA1(d7dc277dce08f9d073290e100be4a7ca2e2b82cb) )
3490   ROM_LOAD( "el13.bin",    0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) )
32173491
3218   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3219   ROM_LOAD( "dl02-.18h",   0x0000, 0x10000, CRC(d0de2b5d) SHA1(e0bb34c2a2ef6fc6f05ab9a98bd23a39004c0c05) )
3220
32213492   ROM_REGION( 0x10000, "audiocpu", 0 )
3222   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
3493   ROM_LOAD( "el10-4.bin",  0x8000, 0x8000, CRC(edfad118) SHA1(10de8805472346fead62460a3fdc09ae26a4e0d5) )
32233494
3224   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3225   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3495   ROM_REGION( 0x08000, "gfx1", 0 )   /* characters */
3496   ROM_LOAD( "el14.bin",    0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) )
32263497
3227   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3228   ROM_LOAD( "dl01-.2a",    0x00000, 0x2000, CRC(f3787a5d) SHA1(3701df42cb2aca951963703e72c6c7b272eed82b) )
3229   ROM_CONTINUE(             0x06000, 0x2000 )
3230   ROM_CONTINUE(              0x04000, 0x2000 )
3231   ROM_CONTINUE(              0x02000, 0x2000 )
3498   ROM_REGION( 0x80000, "gfx2", 0 )   /* sprites */
3499   ROM_LOAD( "el00-4.bin",  0x00000, 0x10000, CRC(122da2a8) SHA1(ce72f16abf7e5449c7d044d4b827e8735c3be0ff) )
3500   ROM_LOAD( "el01-4.bin",  0x20000, 0x10000, CRC(27bf705b) SHA1(196c35aaf3816d3eef4c2af6d146a90a48365d33) )
3501   ROM_LOAD( "el02-4.bin",  0x40000, 0x10000, CRC(c86fede6) SHA1(97584fa19591651fcfb39d1b2b6306165e93554c) )
3502   ROM_LOAD( "el03-4.bin",  0x60000, 0x10000, CRC(1d8a855b) SHA1(429261c200dddc62a330be8aea150b2037133188) )
32323503
3233   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3234   ROM_LOAD( "dl11-.13f",   0x00000, 0x08000, CRC(36579d3b) SHA1(8edf952dafcd5bc66e08074687f0bec809fd4c2f) )
3235   ROM_LOAD( "dl12-.9f",    0x20000, 0x08000, CRC(2ba6737e) SHA1(c5e4c27726bf14e9cd60d62e2f17ea5be8093c37) )
3236   ROM_LOAD( "dl13-.8f",    0x40000, 0x08000, CRC(39a7dc93) SHA1(3b7968fd06ac0379525c1d3e73f8bbe18ea36439) )
3237   ROM_LOAD( "dl10-.16f",   0x60000, 0x08000, CRC(fe275ea8) SHA1(2f089f96583235f1f5226ef2a64b430d84efbeee) )
3504   ROM_REGION( 0x80000, "gfx3", 0 )   /* tiles 1 */
3505   ROM_LOAD( "el05.bin",    0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) )
3506   ROM_LOAD( "el06.bin",    0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) )
3507   ROM_LOAD( "el04.bin",    0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) )
3508   ROM_LOAD( "el07.bin",    0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) )
32383509
3239   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3240   ROM_LOAD( "dl09-.12k",   0x00000, 0x10000, CRC(6a5a0c5d) SHA1(0106cf693c284be5faf96e56b651fab92a410915) )
3241   ROM_LOAD( "dl08-.14k",   0x20000, 0x10000, CRC(3b38cfce) SHA1(d6829bed6916fb301c08031bd466ee4dcc05b275) )
3242   ROM_LOAD( "dl07-.15k",   0x40000, 0x10000, CRC(1b60604d) SHA1(1ee15cfdac87f7eeb92050766293b894cfad1466) )
3243   ROM_LOAD( "dl06-.17k",   0x60000, 0x10000, CRC(c43c26a7) SHA1(896e278935b100edc12cd970469f2e8293eb96cc) )
3244
3245   ROM_REGION( 256, "proms", 0 )
3246   ROM_LOAD( "dl-14.9c",    0x00000,  0x100,  CRC(2e55aa12) SHA1(c0f2b9649467eb9d2c1e47589b5990f5c5e8cc93) )    /* Priority (Not yet used) */
3510   ROM_REGION( 0x80000, "gfx4", 0 )    /* tiles 2 */
3511   ROM_LOAD( "el08.bin",    0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) )
3512   ROM_CONTINUE(            0x40000, 0x08000 )
3513   ROM_LOAD( "el09.bin",    0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) )
3514   ROM_CONTINUE(            0x60000, 0x08000 )
32473515ROM_END
32483516
3249ROM_START( shackled )
3250   ROM_REGION( 0x48000, "maincpu", 0 )
3251   ROM_LOAD( "dk-02.rom", 0x08000, 0x08000, CRC(87f8fa85) SHA1(1cb93a60eefdb453a3cc6ec9c5cc2e367fb8aeb0) )
3252   ROM_LOAD( "dk-06.rom", 0x10000, 0x10000, CRC(69ad62d1) SHA1(1aa23b12ab4f1908cddd25f091e1f9bd70a5113c) )
3253   ROM_LOAD( "dk-05.rom", 0x20000, 0x10000, CRC(598dd128) SHA1(10843c5352eef03c8675df6abaf23c9c9c795aa3) )
3254   ROM_LOAD( "dk-04.rom", 0x30000, 0x10000, CRC(36d305d4) SHA1(17586c316aff405cf20c1467d69c98fa2a3c2630) )
3255   ROM_LOAD( "dk-03.rom", 0x40000, 0x08000, CRC(6fd90fd1) SHA1(2f8db17e5545c82d243a7e23e7bda2c2a9101360) )
3517ROM_START( cobracomj )
3518   ROM_REGION( 0x30000, "maincpu", 0 )
3519   ROM_LOAD( "eh-11.rom",    0x08000, 0x08000, CRC(868637e1) SHA1(8b1e3e045e341bb94b1f6c7d89198b22e6c19de7) )
3520   ROM_LOAD( "eh-12.rom",    0x10000, 0x10000, CRC(7c878a83) SHA1(9b2a3083c6dae69626fdab16d97517d30eaa1859) )
3521   ROM_LOAD( "el13.bin",     0x20000, 0x10000, CRC(04505acb) SHA1(2220efb277884588859375dab9960f04f07273a7) )
32563522
3257   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3258   ROM_LOAD( "dk-01.rom", 0x00000, 0x10000, CRC(71fe3bda) SHA1(959cce01362b2c670c2e15b03a78a1ff9cea4ee9) )
3259
32603523   ROM_REGION( 0x10000, "audiocpu", 0 )
3261   ROM_LOAD( "dk-07.rom", 0x08000, 0x08000, CRC(887e4bcc) SHA1(6427396080e9cd8647adff47c8ed04593a14268c) )
3524   ROM_LOAD( "eh-10.rom",    0x8000, 0x8000, CRC(62ca5e89) SHA1(b04acaccc58846e0d277868a873a440b7f8071b0) )
32623525
3263   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3264   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3265
32663526   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3267   ROM_LOAD( "dk-00.rom", 0x00000, 0x08000, CRC(69b975aa) SHA1(38cb96768c79ff1aa1b4b190e08ec9155baf698a) )
3527   ROM_LOAD( "el14.bin",    0x00000, 0x08000, CRC(47246177) SHA1(51b025740dc03b04009ac97d8d110ab521894386) )
32683528
32693529   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3270   ROM_LOAD( "dk-12.rom", 0x00000, 0x10000, CRC(615c2371) SHA1(30b25dc27d34646d886a465c77622eaa894d83c3) )
3271   ROM_LOAD( "dk-13.rom", 0x10000, 0x10000, CRC(479aa503) SHA1(1167f0d15439c95a1094f81855203e863ce0488d) )
3272   ROM_LOAD( "dk-14.rom", 0x20000, 0x10000, CRC(cdc24246) SHA1(1a4189bc2b1fa99740dd7921608159936ba3bd07) )
3273   ROM_LOAD( "dk-15.rom", 0x30000, 0x10000, CRC(88db811b) SHA1(7d3c4a80925f323efb589798b4a341d1a2ca95f9) )
3274   ROM_LOAD( "dk-16.rom", 0x40000, 0x10000, CRC(061a76bd) SHA1(5bcb513e48bed9b7c4207d94531be691a85e295d) )
3275   ROM_LOAD( "dk-17.rom", 0x50000, 0x10000, CRC(a6c5d8af) SHA1(58f3fece9a5ef8b39090a2f39610381b8e7cdbf7) )
3276   ROM_LOAD( "dk-18.rom", 0x60000, 0x10000, CRC(4d466757) SHA1(701d79bebbba4f266e19080d16ff2f93ffa94287) )
3277   ROM_LOAD( "dk-19.rom", 0x70000, 0x10000, CRC(1911e83e) SHA1(174e9db3f2211ecbbb93c6bda8f6185dbfdbc818) )
3530   ROM_LOAD( "eh-00.rom",    0x00000, 0x10000, CRC(d96b6797) SHA1(01c4a9f2bebb13cba14636690cd5356db73f045e) )
3531   ROM_LOAD( "eh-01.rom",    0x20000, 0x10000, CRC(3fef9c02) SHA1(e4b731faf6a2f4e5fed8ba9bd07e0f203981ffec) )
3532   ROM_LOAD( "eh-02.rom",    0x40000, 0x10000, CRC(bfae6c34) SHA1(9503a120e11e9466cd9a2931fd44a631d72ca5f0) )
3533   ROM_LOAD( "eh-03.rom",    0x60000, 0x10000, CRC(d56790f8) SHA1(1cc7cb9f7102158de14a737e9317a54f01790ba8) )
32783534
3279   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3280   ROM_LOAD( "dk-11.rom", 0x00000, 0x10000, CRC(5cf5719f) SHA1(8c7582ac19010421ec748391a193aa18e51b981f) )
3281   ROM_LOAD( "dk-10.rom", 0x20000, 0x10000, CRC(408e6d08) SHA1(28cb76792e5f84bd101a91cb82597a5939804f84) )
3282   ROM_LOAD( "dk-09.rom", 0x40000, 0x10000, CRC(c1557fac) SHA1(7d39ec793113a48baf45c2ea07abb07e2e48985a) )
3283   ROM_LOAD( "dk-08.rom", 0x60000, 0x10000, CRC(5e54e9f5) SHA1(1ab41a3bde1f2c2be670e89cf402be28001c17d1) )
3284ROM_END
3535   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles 1 */
3536   ROM_LOAD( "el05.bin",    0x00000, 0x10000, CRC(1c4f6033) SHA1(4a7dece911166d1ff5f41df6ec5140596206d8d4) )
3537   ROM_LOAD( "el06.bin",    0x20000, 0x10000, CRC(d24ba794) SHA1(b34b7bbaab4ebdd81c87d363f087cc92e27e8d1c) )
3538   ROM_LOAD( "el04.bin",    0x40000, 0x10000, CRC(d80a49ce) SHA1(1a92413b5ab53f80e44a954433e69ec5fe2c0aa6) )
3539   ROM_LOAD( "el07.bin",    0x60000, 0x10000, CRC(6d771fc3) SHA1(f29979f3aa07bdb544fb0c1d773c5558b4533390) )
32853540
3286ROM_START( breywood )
3287   ROM_REGION( 0x48000, "maincpu", 0 )
3288   ROM_LOAD( "7.bin", 0x08000, 0x08000, CRC(c19856b9) SHA1(766994703bb59879c311675353d7231ad27c7c16) )
3289   ROM_LOAD( "3.bin", 0x10000, 0x10000, CRC(2860ea02) SHA1(7ac090c3ae9d71baa6227ec9555f1c9f2d25ea0d) )
3290   ROM_LOAD( "4.bin", 0x20000, 0x10000, CRC(0fdd915e) SHA1(262df956dfc727c710ade28af7f33fddaafd7ee2) )
3291   ROM_LOAD( "5.bin", 0x30000, 0x10000, CRC(71036579) SHA1(c58ff3222b5bcd75d58c5f282554e92103e80916) )
3292   ROM_LOAD( "6.bin", 0x40000, 0x08000, CRC(308f4893) SHA1(539c138ff01c5718cc8a982482b989468d532699) )
3293
3294   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3295   ROM_LOAD( "8.bin", 0x0000, 0x10000,  CRC(3d9fb623) SHA1(6e5eaad9bb0a432e2da5da5b18a2ed36617bdde2) )
3296
3297   ROM_REGION( 0x10000, "audiocpu", 0 )
3298   ROM_LOAD( "2.bin", 0x8000, 0x8000,  CRC(4a471c38) SHA1(963ed7b6afeefdfc2cf0d65b0998f973330e6495) )
3299
3300   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3301   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3302
3303   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3304   ROM_LOAD( "1.bin",  0x00000, 0x08000, CRC(815a891a) SHA1(e557d6a35821a8589d9e3df0f42131b58b08c8ca) )
3305
3306   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3307   ROM_LOAD( "20.bin", 0x00000, 0x10000, CRC(2b7634f2) SHA1(56d963d4960d9b3e888c8107340763e176adfa9b) )
3308   ROM_LOAD( "19.bin", 0x10000, 0x10000, CRC(4530a952) SHA1(99251a21347815cba465669e18df31262bcdaba1) )
3309   ROM_LOAD( "18.bin", 0x20000, 0x10000, CRC(87c28833) SHA1(3f1a294065326389d304e540bc880844c6c7cb06) )
3310   ROM_LOAD( "17.bin", 0x30000, 0x10000, CRC(bfb43a4d) SHA1(56092935147a3b643a9b39eb7cfc067a764644c5) )
3311   ROM_LOAD( "16.bin", 0x40000, 0x10000, CRC(f9848cc4) SHA1(6d8e77b67ce4d418defba6f6979632f31d2307c6) )
3312   ROM_LOAD( "15.bin", 0x50000, 0x10000, CRC(baa3d218) SHA1(3c31df23cc871cffd9a4dafae106e4a98f5af848) )
3313   ROM_LOAD( "14.bin", 0x60000, 0x10000, CRC(12afe533) SHA1(6df3471c16a714d118717da549a7523aa388ddd3) )
3314   ROM_LOAD( "13.bin", 0x70000, 0x10000, CRC(03373755) SHA1(d2541dd957803168f246d96b7cd74eae7fd43188) )
3315
3316   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3317   ROM_LOAD( "9.bin",  0x00000, 0x10000, CRC(067e2a43) SHA1(f1da7455aab21f94ed25a93b0ebfde69baa475d1) )
3318   ROM_LOAD( "10.bin", 0x20000, 0x10000, CRC(c19733aa) SHA1(3dfcfd33c5c4f792bb941ac933301c03ddd72b03) )
3319   ROM_LOAD( "11.bin", 0x40000, 0x10000, CRC(e37d5dbe) SHA1(ff79b4f6d8b0a3061e78d15480df0155650f347f) )
3320   ROM_LOAD( "12.bin", 0x60000, 0x10000, CRC(beee880f) SHA1(9a818a75cbec425a13f629bda6d50aa341aa1896) )
3541   ROM_REGION( 0x80000, "gfx4", 0 )    /* tiles 2 */
3542   ROM_LOAD( "el08.bin",    0x00000, 0x08000, CRC(cb0dcf4c) SHA1(e14853f83ee9ba5cbf2eb1e085fee4e65af3cc25) )
3543   ROM_CONTINUE(            0x40000, 0x08000 )
3544   ROM_LOAD( "el09.bin",    0x20000, 0x08000, CRC(1fae5be7) SHA1(be6e090b0b82648b385d9b6d11775f3ff40f0af3) )
3545   ROM_CONTINUE(            0x60000, 0x08000 )
33213546ROM_END
33223547
3323/*
3324Main Compoennts
3325---------------
3326
3327Top board (DATA EAST DE-0250-3):
33282x MC68B09EP (18e,19e)(main)
33291x RP65C02A (3f)(sound)
33301x YM3812 (1e)(sound)
33311x YM2203 (1f)(sound)
33322x Y30148 (1j,2j)(sound)
33331x OKI M5205 (3j)(sound)
33341x NEC PC3403C (1j)(sound)
33351x C4558C (2j)(sound)
33361x oscillator 8.000 (x1)
33371x ID8751H (read protected)
3338
3339Lower board (DATA EAST DE-0251-2):
33401x DECO TC15G032AY-0013-8644a-DSPC10 (square component, with 135 pass-through pins)(14h)
33411x DECO VSC30-M60348-6102 (DIL40)(9a)
33421x DECO HMC20-M60232-6902 (DIL28)(14a)
33431x oscillator 12.000 (x1)
3344
3345ROMs
3346----
3347
3348Top board (DATA EAST DE-0250-3):
33492x MBM27256 (00,03)
335010x MBM27C512 (01,02,04,05,06,07,08,09,10,11)
33511x MB7122 (DIL18) (15)
3352
3353Lower board (DATA EAST DE-0251-2):
33543x MBM27C512
3355
3356Notes
3357-----
3358
3359Top board (DATA EAST DE-0250-3):
33601x JAMMA edge connector
33612x 25x2 legs connectors to lower board (cn1,cn2)
33621x trimmer (volume)
33632x 8 switches dip (7k,16k)
3364
3365Lower board (DATA EAST DE-0251-2):
33662x 25x2 legs connectors to top board (cn1,cn2)
3367
3368*/
3369
3370ROM_START( csilver )
3371   ROM_REGION( 0x48000, "maincpu", 0 )
3372   ROM_LOAD( "dx03-12.18d", 0x08000, 0x08000, CRC(2d926e7c) SHA1(cf38e92904edb1870b0a4965f9049d67efe8cf6a) )
3373   ROM_LOAD( "dx01.12d", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) )
3374   ROM_LOAD( "dx02.13d", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) )
3375
3376   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3377   ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000,  CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
3378
3379   ROM_REGION( 0x18000, "audiocpu", 0 )
3380   ROM_LOAD( "dx05.3f", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
3381   ROM_CONTINUE(   0x08000, 0x08000 )
3382
3383   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3384   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) // dx-8.19a ?
3385
3386   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3387   ROM_LOAD( "dx00.3d",  0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) )
3388
3389   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites (3bpp) */
3390   ROM_LOAD( "dx14.15k",  0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) )
3391    /* 0x10000-0x1ffff empy */
3392   ROM_LOAD( "dx13.13k",  0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) )
3393    /* 0x30000-0x3ffff empy */
3394   ROM_LOAD( "dx12.10k",  0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) )
3395    /* 0x50000-0x5ffff empy */
3396    /* 0x60000-0x7ffff empy (no 4th plane) */
3397
3398   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles (3bpp) */
3399   ROM_LOAD( "dx06.5f",  0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) )
3400   ROM_LOAD( "dx07.7f",  0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) )
3401   ROM_LOAD( "dx08.8f",  0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) )
3402   ROM_LOAD( "dx09.10f", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) )
3403   ROM_LOAD( "dx10.12f",  0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) )
3404   ROM_LOAD( "dx11.13f",  0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) )
3405ROM_END
3406
3407/* Different IC positions to World set? */
3408ROM_START( csilverj )
3409   ROM_REGION( 0x48000, "maincpu", 0 )
3410   ROM_LOAD( "dx03-3.a4", 0x08000, 0x08000, CRC(02dd8cfc) SHA1(f29c0d9dd03e8c52672c0f3dbee44a93c5b4261d) )
3411   ROM_LOAD( "dx01.a2", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) )
3412   ROM_LOAD( "dx02.a3", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) )
3413
3414   ROM_REGION( 0x10000, "sub", 0 )    /* CPU 2, 1st 16k is empty */
3415   ROM_LOAD( "dx04-1.a5", 0x0000, 0x10000,  CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
3416
3417   ROM_REGION( 0x18000, "audiocpu", 0 )
3418   ROM_LOAD( "dx05.a6", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
3419   ROM_CONTINUE(   0x08000, 0x08000 )
3420
3421   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3422   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3423
3424   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3425   ROM_LOAD( "dx00.a1",  0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) )
3426
3427   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites (3bpp) */
3428   ROM_LOAD( "dx14.b5",  0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) )
3429    /* 0x10000-0x1ffff empy */
3430   ROM_LOAD( "dx13.b4",  0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) )
3431    /* 0x30000-0x3ffff empy */
3432   ROM_LOAD( "dx12.b3",  0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) )
3433    /* 0x50000-0x5ffff empy */
3434    /* 0x60000-0x7ffff empy (no 4th plane) */
3435
3436   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles (3bpp) */
3437   ROM_LOAD( "dx06.a7",  0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) )
3438   ROM_LOAD( "dx07.a8",  0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) )
3439   ROM_LOAD( "dx08.a9",  0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) )
3440   ROM_LOAD( "dx09.a10", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) )
3441   ROM_LOAD( "dx10.b1",  0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) )
3442   ROM_LOAD( "dx11.b2",  0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) )
3443ROM_END
3444
3445ROM_START( garyoret )
3446   ROM_REGION( 0x50000, "maincpu", 0 )
3447   ROM_LOAD( "dv00", 0x08000, 0x08000, CRC(cceaaf05) SHA1(b8f54638feab77d023e01ced947e1269f0d19fd8) )
3448   ROM_LOAD( "dv01", 0x10000, 0x10000, CRC(c33fc18a) SHA1(0d9594b0e6c39aea5b9f15f6aa364b31604f1066) )
3449   ROM_LOAD( "dv02", 0x20000, 0x10000, CRC(f9e26ce7) SHA1(8589594ebc7ae16942739382273a222dfa30b3b7) )
3450   ROM_LOAD( "dv03", 0x30000, 0x10000, CRC(55d8d699) SHA1(da1519cd54d27cc406420ce0845e43f7228cfd4e) )
3451   ROM_LOAD( "dv04", 0x40000, 0x10000, CRC(ed3d00ee) SHA1(6daa2ee509235ad03d3012a00382820279add620) )
3452
3453   ROM_REGION( 0x10000, "audiocpu", 0 )
3454   ROM_LOAD( "dv05", 0x08000, 0x08000, CRC(c97c347f) SHA1(a1b22733dc15d524af97db3e608a82503a49b182) )
3455
3456   ROM_REGION( 0x1000, "mcu", 0 )    /* ID8751H MCU */
3457   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
3458
3459   ROM_REGION( 0x08000, "gfx1", 0 )    /* characters */
3460   ROM_LOAD( "dv14", 0x00000, 0x08000, CRC(fb2bc581) SHA1(d597976c5ae586166c49051cc3de8cf0c2e5a5e1) )    /* Characters */
3461
3462   ROM_REGION( 0x80000, "gfx2", 0 )    /* sprites */
3463   ROM_LOAD( "dv22", 0x00000, 0x10000, CRC(cef0367e) SHA1(8beb3a6b91ec0a6ec052243c8f626a581d349f65) )
3464   ROM_LOAD( "dv21", 0x10000, 0x08000, CRC(90042fb7) SHA1(f19bbf158c92030e8fddb5087b5b69b71956baf8) )
3465   ROM_LOAD( "dv20", 0x20000, 0x10000, CRC(451a2d8c) SHA1(f4eea444b797d394edeb514ddc1c494fd7ccc2f2) )
3466   ROM_LOAD( "dv19", 0x30000, 0x08000, CRC(14e1475b) SHA1(f0aec5b7b4be0da06a73ed382e7e851654e47e47) )
3467   ROM_LOAD( "dv18", 0x40000, 0x10000, CRC(7043bead) SHA1(5d1be8b9cd56ae43d60406b05258d20de980096d) )
3468   ROM_LOAD( "dv17", 0x50000, 0x08000, CRC(28f449d7) SHA1(cf1bc690b67910c42ad09531ab1d88461d00b944) )
3469   ROM_LOAD( "dv16", 0x60000, 0x10000, CRC(37e4971e) SHA1(9442c315b7cdbcc046d9e6838cb793c1857174ed) )
3470   ROM_LOAD( "dv15", 0x70000, 0x08000, CRC(ca41b6ac) SHA1(d7a9ef6c89741c1e8e17a668a9d39ea089f5c73f) )
3471
3472   ROM_REGION( 0x80000, "gfx3", 0 )    /* tiles */
3473   ROM_LOAD( "dv08", 0x00000, 0x08000, CRC(89c13e15) SHA1(6507e60de5cd78a5b46090e4825a44c2a23631d7) )
3474   ROM_CONTINUE(     0x10000, 0x08000 )
3475   ROM_LOAD( "dv09", 0x08000, 0x08000, CRC(6a345a23) SHA1(b86f81b9fe25acd833ca3e2cff6cfa853c02280a) )
3476   ROM_CONTINUE(     0x18000, 0x08000 )
3477
3478   ROM_LOAD( "dv06", 0x20000, 0x08000, CRC(1eb52a20) SHA1(46670ed973f794be9c2c7e6bf5d97db51211e9a9) )
3479   ROM_CONTINUE(     0x30000, 0x08000 )
3480   ROM_LOAD( "dv07", 0x28000, 0x08000, CRC(e7346ef8) SHA1(8083a7a182e8ed904daf2f692115d01b3d0830eb) )
3481   ROM_CONTINUE(     0x38000, 0x08000 )
3482
3483   ROM_LOAD( "dv12", 0x40000, 0x08000, CRC(46ba5af4) SHA1(a1c13e7e3c85060202120b64e3cee32c1f733270) )
3484   ROM_CONTINUE(     0x50000, 0x08000 )
3485   ROM_LOAD( "dv13", 0x48000, 0x08000, CRC(a7af6dfd) SHA1(fa41bdafb64c79bd9769903fd37d4d5172b66a52) )
3486   ROM_CONTINUE(     0x58000, 0x08000 )
3487
3488   ROM_LOAD( "dv10", 0x60000, 0x08000, CRC(68b6d75c) SHA1(ac719ef6b30ac9e63fab13cb359e6114493f274d) )
3489   ROM_CONTINUE(     0x70000, 0x08000 )
3490   ROM_LOAD( "dv11", 0x68000, 0x08000, CRC(b5948aee) SHA1(587afbfeda985bede9e4b5f57dad6763f4294962) )
3491   ROM_CONTINUE(     0x78000, 0x08000 )
3492ROM_END
3493
34943548/******************************************************************************/
34953549
34963550static DRIVER_INIT( dec8 )
r14742r14743
35213575}
35223576
35233577/* Below, I set up the correct number of banks depending on the "maincpu" region size */
3524static DRIVER_INIT( ghostb )
3578static DRIVER_INIT( lastmisn )
35253579{
35263580   UINT8 *ROM = machine.region("maincpu")->base();
3527   UINT8 *RAM = machine.region("proms")->base();
3528
3529   /* Blank out unused garbage in colour prom to avoid colour overflow */
3530   memset(RAM + 0x20, 0, 0xe0);
3531
3532   memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000);
3533   DRIVER_INIT_CALL(deco222);
3581   memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000);
3582   DRIVER_INIT_CALL( dec8 );
35343583}
35353584
3536static DRIVER_INIT( meikyuh )
3585static DRIVER_INIT( shackled )
35373586{
35383587   UINT8 *ROM = machine.region("maincpu")->base();
3539   UINT8 *RAM = machine.region("proms")->base();
3540
3541   /* Blank out unused garbage in colour prom to avoid colour overflow */
3542   memset(RAM + 0x20, 0, 0xe0);
3543
3544   memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000);
3588   memory_configure_bank(machine, "bank1", 0, 14, &ROM[0x10000], 0x4000);
35453589   DRIVER_INIT_CALL( dec8 );
35463590}
35473591
3548static DRIVER_INIT( cobracom )
3592static DRIVER_INIT( gondo )
35493593{
35503594   UINT8 *ROM = machine.region("maincpu")->base();
3551   memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x4000);
3595   memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000);
35523596   DRIVER_INIT_CALL( dec8 );
35533597}
35543598
3555static DRIVER_INIT( oscar )
3599static DRIVER_INIT( garyoret )
35563600{
35573601   UINT8 *ROM = machine.region("maincpu")->base();
3558   memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000);
3559   DRIVER_INIT_CALL( deco222 );
3602   memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000);
3603   DRIVER_INIT_CALL( dec8 );
35603604}
35613605
3562static DRIVER_INIT( gondo )
3606static DRIVER_INIT( ghostb )
35633607{
35643608   UINT8 *ROM = machine.region("maincpu")->base();
3565   memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000);
3566   DRIVER_INIT_CALL( dec8 );
3609   UINT8 *RAM = machine.region("proms")->base();
3610
3611   /* Blank out unused garbage in colour prom to avoid colour overflow */
3612   memset(RAM + 0x20, 0, 0xe0);
3613
3614   memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000);
3615   DRIVER_INIT_CALL(deco222);
35673616}
35683617
3569static DRIVER_INIT( garyoret )
3618static DRIVER_INIT( meikyuh )
35703619{
35713620   UINT8 *ROM = machine.region("maincpu")->base();
3572   memory_configure_bank(machine, "bank1", 0, 16, &ROM[0x10000], 0x4000);
3621   UINT8 *RAM = machine.region("proms")->base();
3622
3623   /* Blank out unused garbage in colour prom to avoid colour overflow */
3624   memset(RAM + 0x20, 0, 0xe0);
3625
3626   memory_configure_bank(machine, "bank1", 0, 12, &ROM[0x10000], 0x4000);
35733627   DRIVER_INIT_CALL( dec8 );
35743628}
35753629
r14742r14743
35833637   DRIVER_INIT_CALL( dec8 );
35843638}
35853639
3586static DRIVER_INIT( shackled )
3640static DRIVER_INIT( oscar )
35873641{
35883642   UINT8 *ROM = machine.region("maincpu")->base();
3589   memory_configure_bank(machine, "bank1", 0, 14, &ROM[0x10000], 0x4000);
3590   DRIVER_INIT_CALL( dec8 );
3591}
3592
3593static DRIVER_INIT( lastmisn )
3594{
3595   UINT8 *ROM = machine.region("maincpu")->base();
35963643   memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x10000], 0x4000);
3597   DRIVER_INIT_CALL( dec8 );
3644   DRIVER_INIT_CALL( deco222 );
35983645}
35993646
36003647static DRIVER_INIT( srdarwin )
r14742r14743
36043651   DRIVER_INIT_CALL( deco222 );
36053652}
36063653
3654static DRIVER_INIT( cobracom )
3655{
3656   UINT8 *ROM = machine.region("maincpu")->base();
3657   memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x4000);
3658   DRIVER_INIT_CALL( dec8 );
3659}
36073660
3661
36083662/******************************************************************************/
36093663
3610GAME( 1988, cobracom, 0,        cobracom, cobracom, cobracom,    ROT0,   "Data East Corporation", "Cobra-Command (World revision 5)", GAME_SUPPORTS_SAVE )
3611GAME( 1988, cobracomj,cobracom, cobracom, cobracom, cobracom,    ROT0,   "Data East Corporation", "Cobra-Command (Japan)", GAME_SUPPORTS_SAVE )
3612GAME( 1987, ghostb,   0,        ghostb,   ghostb,   ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", GAME_SUPPORTS_SAVE )
3613GAME( 1987, ghostb2a, ghostb,   ghostb,   ghostb,   ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 2 Players)", GAME_SUPPORTS_SAVE )
3614GAME( 1987, ghostb3,  ghostb,   ghostb,   ghostb3,  ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 3 Players)", GAME_SUPPORTS_SAVE )
3615GAME( 1987, meikyuh,  ghostb,   ghostb,   meikyuh,  meikyuh,     ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", GAME_SUPPORTS_SAVE )
3616GAME( 1987, meikyuha, ghostb,   ghostb,   meikyuh,  meikyuh,     ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", GAME_SUPPORTS_SAVE )
3617GAME( 1987, srdarwin, 0,        srdarwin, srdarwin, srdarwin,    ROT270, "Data East Corporation", "Super Real Darwin (World)", GAME_SUPPORTS_SAVE )
3618GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwin, srdarwin,    ROT270, "Data East Corporation", "Super Real Darwin (Japan)", GAME_SUPPORTS_SAVE )
3619GAME( 1987, gondo,    0,        gondo,    gondo,    gondo,       ROT270, "Data East USA", "Gondomania (US)", GAME_SUPPORTS_SAVE )
3620GAME( 1987, makyosen, gondo,    gondo,    gondo,    gondo,       ROT270, "Data East Corporation", "Makyou Senshi (Japan)", GAME_SUPPORTS_SAVE )
3621GAME( 1988, oscar,    0,        oscar,    oscar,    oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", GAME_SUPPORTS_SAVE )
3622GAME( 1987, oscaru,   oscar,    oscar,    oscaru,   oscar,       ROT0,   "Data East USA", "Psycho-Nics Oscar (US)", GAME_SUPPORTS_SAVE )
3623GAME( 1987, oscarj1,  oscar,    oscar,    oscaru,   oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", GAME_SUPPORTS_SAVE )
3624GAME( 1987, oscarj2,  oscar,    oscar,    oscaru,   oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", GAME_SUPPORTS_SAVE )
3625GAME( 1986, lastmisn, 0,        lastmisn, lastmisn, lastmisn,    ROT270, "Data East USA", "Last Mission (US revision 6)", GAME_SUPPORTS_SAVE )
3626GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, lastmisn,    ROT270, "Data East USA", "Last Mission (US revision 5)", GAME_SUPPORTS_SAVE )
3627GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, lastmisn,   ROT270, "Data East Corporation", "Last Mission (Japan)", GAME_SUPPORTS_SAVE )
3628GAME( 1986, shackled, 0,        shackled, shackled, shackled,    ROT0,   "Data East USA", "Shackled (US)", GAME_SUPPORTS_SAVE )
3629GAME( 1986, breywood, shackled, shackled, shackled, shackled,    ROT0,   "Data East Corporation", "Breywood (Japan revision 2)", GAME_SUPPORTS_SAVE )
3630GAME( 1987, csilver,  0,        csilver,  csilver,  csilver,     ROT0,   "Data East Corporation", "Captain Silver (World)", GAME_SUPPORTS_SAVE )
3631GAME( 1987, csilverj, csilver,  csilver,  csilver,  csilver,     ROT0,   "Data East Corporation", "Captain Silver (Japan)", GAME_SUPPORTS_SAVE )
3632GAME( 1987, garyoret, 0,        garyoret, garyoret, garyoret,    ROT0,   "Data East Corporation", "Garyo Retsuden (Japan)", GAME_SUPPORTS_SAVE )
3664GAME( 1986, lastmisn, 0,        lastmisn, lastmisn,  lastmisn,    ROT270, "Data East USA", "Last Mission (US revision 6)", GAME_SUPPORTS_SAVE )
3665GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn,  lastmisn,    ROT270, "Data East USA", "Last Mission (US revision 5)", GAME_SUPPORTS_SAVE )
3666GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, lastmisn,    ROT270, "Data East Corporation", "Last Mission (Japan)", GAME_SUPPORTS_SAVE )
3667GAME( 1986, shackled, 0,        shackled, shackled,  shackled,    ROT0,   "Data East USA", "Shackled (US)", GAME_SUPPORTS_SAVE )
3668GAME( 1986, breywood, shackled, shackled, breywood,  shackled,    ROT0,   "Data East Corporation", "Breywood (Japan revision 2)", GAME_SUPPORTS_SAVE )
3669GAME( 1987, gondo,    0,        gondo,    gondo,     gondo,       ROT270, "Data East USA", "Gondomania (US)", GAME_SUPPORTS_SAVE )
3670GAME( 1987, makyosen, gondo,    gondo,    gondo,     gondo,       ROT270, "Data East Corporation", "Makyou Senshi (Japan)", GAME_SUPPORTS_SAVE )
3671GAME( 1987, garyoret, 0,        garyoret, garyoret,  garyoret,    ROT0,   "Data East Corporation", "Garyo Retsuden (Japan)", GAME_SUPPORTS_SAVE )
3672GAME( 1987, ghostb,   0,        ghostb,   ghostb,    ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", GAME_SUPPORTS_SAVE )
3673GAME( 1987, ghostb2a, ghostb,   ghostb,   ghostb2a,  ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 2 Players)", GAME_SUPPORTS_SAVE )
3674GAME( 1987, ghostb3,  ghostb,   ghostb,   ghostb3,   ghostb,      ROT0,   "Data East USA", "The Real Ghostbusters (US 3 Players)", GAME_SUPPORTS_SAVE )
3675GAME( 1987, meikyuh,  ghostb,   ghostb,   meikyuh,   meikyuh,     ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", GAME_SUPPORTS_SAVE )
3676GAME( 1987, meikyuha, ghostb,   ghostb,   meikyuh,   meikyuh,     ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", GAME_SUPPORTS_SAVE )
3677GAME( 1987, csilver,  0,        csilver,  csilver,   csilver,     ROT0,   "Data East Corporation", "Captain Silver (World)", GAME_SUPPORTS_SAVE )
3678GAME( 1987, csilverj, csilver,  csilver,  csilverj,  csilver,     ROT0,   "Data East Corporation", "Captain Silver (Japan)", GAME_SUPPORTS_SAVE )
3679GAME( 1987, oscar,    0,        oscar,    oscar,     oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
3680GAME( 1988, oscaru,   oscar,    oscar,    oscarj,    oscar,       ROT0,   "Data East USA", "Psycho-Nics Oscar (US)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
3681GAME( 1987, oscarj1,  oscar,    oscar,    oscarj,    oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
3682GAME( 1987, oscarj2,  oscar,    oscar,    oscarj,    oscar,       ROT0,   "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
3683GAME( 1987, srdarwin, 0,        srdarwin, srdarwin,  srdarwin,    ROT270, "Data East Corporation", "Super Real Darwin (World)", GAME_SUPPORTS_SAVE )
3684GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwinj, srdarwin,    ROT270, "Data East Corporation", "Super Real Darwin (Japan)", GAME_SUPPORTS_SAVE )
3685GAME( 1988, cobracom, 0,        cobracom, cobracom,  cobracom,    ROT0,   "Data East Corporation", "Cobra-Command (World revision 5)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
3686GAME( 1988, cobracomj,cobracom, cobracom, cobracom,  cobracom,    ROT0,   "Data East Corporation", "Cobra-Command (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
src/emu/cpu/cpu.mak
r14742r14743
17121712
17131713$(CPUOBJ)/tms57002/tms57002.o:   $(CPUSRC)/tms57002/tms57002.c \
17141714                        $(CPUSRC)/tms57002/tms57002.h \
1715                        $(CPUSRC)/tms57002/tms57kpr.h \
17161715                        $(CPUOBJ)/tms57002/tms57002.inc
17171716
17181717$(CPUOBJ)/tms57002/tms57kdec.o:   $(CPUSRC)/tms57002/tms57kdec.c \
17191718                        $(CPUSRC)/tms57002/tms57002.h \
1720                        $(CPUSRC)/tms57002/tms57kpr.h \
17211719                        $(CPUOBJ)/tms57002/tms57002.inc
17221720
17231721$(CPUOBJ)/tms57002/57002dsm.o:   $(CPUSRC)/tms57002/57002dsm.c \
src/emu/cpu/tms57002/57002dsm.c
r14742r14743
1/***************************************************************************
2
3    57002dsm.c
4
5    TMS57002 "DASP" emulator.
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
140#include "emu.h"
241#include "debugger.h"
342#include "tms57002.h"
r14742r14743
241
3#ifdef __GNUC__
4#define noinline __attribute__((noinline))
5#else
6#define noinline /* */
7#endif
8
9static const char *tms57002_get_memadr(UINT32 opcode, char type)
42const char *tms57002_device::get_memadr(UINT32 opcode, char type)
1043{
r14742r14743
3164   return buf;
3265}
3366
67UINT32 tms57002_device::disasm_min_opcode_bytes() const
68{
69   return 4;
70}
3471
35CPU_DISASSEMBLE(tms57002)
72UINT32 tms57002_device::disasm_max_opcode_bytes() const
3673{
74   return 4;
75}
76
77offs_t tms57002_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
78{
3779   UINT32 opcode = opram[0] | (opram[1] << 8) | (opram[2] << 16);
3880   UINT8 fa = opcode >> 18;
3981   char *buf = buffer;
src/emu/cpu/tms57002/tms57002.c
r14742r14743
1/***************************************************************************
2
3    tms57002.c
4
5    TMS57002 "DASP" emulator.
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
40#define ADDRESS_MAP_MODERN
41
142#include "emu.h"
243#include "debugger.h"
344#include "tms57002.h"
4#include "tms57kpr.h"
545
6INLINE tms57002_t *get_safe_token(device_t *device)
46const device_type TMS57002 = &device_creator<tms57002_device>;
47
48// Can't use a DEVICE_ADDRESS_MAP, not yet anyway
49static ADDRESS_MAP_START(internal_pgm, AS_PROGRAM, 32, tms57002_device)
50   AM_RANGE(0x000, 0x3ff) AM_RAM
51ADDRESS_MAP_END
52
53tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
54   : cpu_device(mconfig, TMS57002, "TMS57002", tag, owner, clock),
55     program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)),
56     data_config("data", ENDIANNESS_LITTLE, 8, 20)
757{
8   assert(device != NULL);
9   assert(device->type() == TMS57002);
10   return (tms57002_t *)downcast<legacy_cpu_device *>(device)->token();
1158}
1259
13static void tms57002_cache_flush(tms57002_t *s);
1460
15WRITE8_DEVICE_HANDLER(tms57002_pload_w)
61WRITE8_MEMBER(tms57002_device::pload_w)
1662{
17   tms57002_t *s = get_safe_token(device);
18   UINT8 olds = s->sti;
19
63   UINT8 olds = sti;
2064   if(data)
21      s->sti &= ~IN_PLOAD;
65      sti &= ~IN_PLOAD;
2266   else
23      s->sti |= IN_PLOAD;
24
25   if(olds ^ s->sti)
26      s->hidx = 0;
67      sti |= IN_PLOAD;
68   if(olds ^ sti)
69      hidx = 0;
2770}
2871
29WRITE8_DEVICE_HANDLER(tms57002_cload_w)
72WRITE8_MEMBER(tms57002_device::cload_w)
3073{
31   tms57002_t *s = get_safe_token(device);
32   UINT8 olds = s->sti;
74   UINT8 olds = sti;
3375   if(data)
34      s->sti &= ~IN_CLOAD;
76      sti &= ~IN_CLOAD;
3577   else
36      s->sti |= IN_CLOAD;
37   if(olds ^ s->sti)
38      s->hidx = 0;
78      sti |= IN_CLOAD;
79   if(olds ^ sti)
80      hidx = 0;
3981}
4082
41static CPU_RESET(tms57002)
83void tms57002_device::device_reset()
4284{
43   tms57002_t *s = get_safe_token(device);
85   sti = (sti & ~(SU_MASK|S_READ|S_WRITE|S_BRANCH|S_HOST)) | (SU_ST0|S_IDLE);
86   pc = 0;
87   ca = 0;
88   hidx = 0;
89   id = 0;
90   ba0 = 0;
91   ba1 = 0;
92   st0 &= ~(ST0_INCS | ST0_DIRI | ST0_FI | ST0_SIM | ST0_PLRI |
93         ST0_PBCI | ST0_DIRO | ST0_FO | ST0_SOM | ST0_PLRO |
94         ST0_PBCO | ST0_CNS);
95   st1 &= ~(ST1_AOV | ST1_SFAI | ST1_SFAO | ST1_MOVM | ST1_MOV |
96         ST1_SFMA | ST1_SFMO | ST1_RND | ST1_CRM | ST1_DBP);
4497
45   s->sti = (s->sti & ~(SU_MASK|S_READ|S_WRITE|S_BRANCH|S_HOST)) | (SU_ST0|S_IDLE);
46   s->pc = 0;
47   s->ca = 0;
48   s->hidx = 0;
49   s->id = 0;
50   s->ba0 = 0;
51   s->ba1 = 0;
52   s->st0 &= ~(ST0_INCS | ST0_DIRI | ST0_FI | ST0_SIM | ST0_PLRI |
53            ST0_PBCI | ST0_DIRO | ST0_FO | ST0_SOM | ST0_PLRO |
54            ST0_PBCO | ST0_CNS);
55   s->st1 &= ~(ST1_AOV | ST1_SFAI | ST1_SFAO | ST1_MOVM | ST1_MOV |
56            ST1_SFMA | ST1_SFMO | ST1_RND | ST1_CRM | ST1_DBP);
98   xba = 0; // Not sure but makes sense
5799
58   s->xba = 0; // Not sure but makes sense
59
60   tms57002_cache_flush(s);
100   cache_flush();
61101}
62102
63
64WRITE8_DEVICE_HANDLER(tms57002_data_w)
103WRITE8_MEMBER(tms57002_device::data_w)
65104{
66   tms57002_t *s = get_safe_token(device);
67
68   switch(s->sti & (IN_PLOAD|IN_CLOAD)) {
105   switch(sti & (IN_PLOAD|IN_CLOAD)) {
69106   case 0:
70      s->hidx = 0;
71      s->sti &= ~SU_CVAL;
107      hidx = 0;
108      sti &= ~SU_CVAL;
72109      break;
73110   case IN_PLOAD:
74      s->host[s->hidx++] = data;
75      if(s->hidx >= 3) {
76         UINT32 val = (s->host[0]<<16) | (s->host[1]<<8) | s->host[2];
77         s->hidx = 0;
111      host[hidx++] = data;
112      if(hidx >= 3) {
113         UINT32 val = (host[0]<<16) | (host[1]<<8) | host[2];
114         hidx = 0;
78115
79         switch(s->sti & SU_MASK) {
116         switch(sti & SU_MASK) {
80117         case SU_ST0:
81            s->st0 = val;
82            s->sti = (s->sti & ~SU_MASK) | SU_ST1;
118            st0 = val;
119            sti = (sti & ~SU_MASK) | SU_ST1;
83120            break;
84121         case SU_ST1:
85            s->st1 = val;
86            s->sti = (s->sti & ~SU_MASK) | SU_PRG;
122            st1 = val;
123            sti = (sti & ~SU_MASK) | SU_PRG;
87124            break;
88125         case SU_PRG:
89            s->program->write_dword((s->pc++) << 2, val);
126            program->write_dword((pc++) << 2, val);
90127            break;
91128         }
92129      }
93130      break;
94131   case IN_CLOAD:
95      if(s->sti & SU_CVAL) {
96         s->host[s->hidx++] = data;
97         if(s->hidx >= 4) {
98            UINT32 val = (s->host[0]<<24) | (s->host[1]<<16) | (s->host[2]<<8) | s->host[3];
99            s->cmem[s->sa] = val;
100            s->sti &= ~SU_CVAL;
101            s->allow_update = 0;
132      if(sti & SU_CVAL) {
133         host[hidx++] = data;
134         if(hidx >= 4) {
135            UINT32 val = (host[0]<<24) | (host[1]<<16) | (host[2]<<8) | host[3];
136            cmem[sa] = val;
137            sti &= ~SU_CVAL;
138            allow_update = 0;
102139         }
103140      } else {
104         s->sa = data;
105         s->hidx = 0;
106         s->sti |= SU_CVAL;
141         sa = data;
142         hidx = 0;
143         sti |= SU_CVAL;
107144      }
108145
109146      break;
110147   case IN_PLOAD|IN_CLOAD:
111      s->host[s->hidx++] = data;
112      if(s->hidx >= 4) {
113         UINT32 val = (s->host[0]<<24) | (s->host[1]<<16) | (s->host[2]<<8) | s->host[3];
114         s->hidx = 0;
115         s->cmem[s->ca++] = val;
148      host[hidx++] = data;
149      if(hidx >= 4) {
150         UINT32 val = (host[0]<<24) | (host[1]<<16) | (host[2]<<8) | host[3];
151         hidx = 0;
152         cmem[ca++] = val;
116153      }
117154      break;
118155   };
119156}
120157
121READ8_DEVICE_HANDLER(tms57002_data_r)
158READ8_MEMBER(tms57002_device::data_r)
122159{
123   tms57002_t *s = get_safe_token(device);
124160   UINT8 res;
125   if(!(s->sti & S_HOST))
161   if(!(sti & S_HOST))
126162      return 0xff;
127163
128   res = s->host[s->hidx];
129   s->hidx++;
130   if(s->hidx == 4) {
131      s->hidx = 0;
132      s->sti &= ~S_HOST;
164   res = host[hidx];
165   hidx++;
166   if(hidx == 4) {
167      hidx = 0;
168      sti &= ~S_HOST;
133169   }
134170
135171   return res;
136172}
137173
138READ8_DEVICE_HANDLER(tms57002_empty_r)
174READ8_MEMBER(tms57002_device::empty_r)
139175{
140176   return 1;
141177}
142178
143READ8_DEVICE_HANDLER(tms57002_dready_r)
179READ8_MEMBER(tms57002_device::dready_r)
144180{
145   tms57002_t *s = get_safe_token(device);
146   return s->sti & S_HOST ? 0 : 1;
181   return sti & S_HOST ? 0 : 1;
147182}
148183
149void tms57002_sync(device_t *device)
184void tms57002_device::sync()
150185{
151   tms57002_t *s = get_safe_token(device);
152
153   if(s->sti & (IN_PLOAD | IN_CLOAD))
186   if(sti & (IN_PLOAD | IN_CLOAD))
154187      return;
155188
156   s->allow_update = 1;
157   s->pc = 0;
158   s->ca = 0;
159   s->id = 0;
160   if(!(s->st0 & ST0_INCS)) {
161      s->ba0--;
162      s->ba1++;
189   allow_update = 1;
190   pc = 0;
191   ca = 0;
192   id = 0;
193   if(!(st0 & ST0_INCS)) {
194      ba0--;
195      ba1++;
163196   }
164   s->xba = (s->xba-1) & 0x7ffff;
165   s->st1 &= ~(ST1_AOV | ST1_MOV);
166   s->sti &= ~S_IDLE;
197   xba = (xba-1) & 0x7ffff;
198   st1 &= ~(ST1_AOV | ST1_MOV);
199   sti &= ~S_IDLE;
167200}
168201
169#ifdef UNUSED_FUNCTION
170static UINT32 tms57002_read_c(tms57002_t *s, UINT8 index)
202void tms57002_device::xm_init()
171203{
172   UINT32 v = s->cmem[index];
173   if((s->st1 & ST1_CRM) != ST1_CRM_32) {
174      if((s->st1 & ST1_CRM) == ST1_CRM_16H)
175         v &= 0xffff0000;
176      else if((s->st1 & ST1_CRM) == ST1_CRM_16L)
177         v <<= 16;
178   }
179   return v;
180}
181
182static void tms57002_write_c(tms57002_t *s, UINT8 index, UINT32 v)
183{
184   s->cmem[index] = v;
185}
186
187static void tms57002_write_d(tms57002_t *s, UINT8 index, UINT32 v)
188{
189   if(s->st1 & ST1_DBP)
190      s->dmem1[(s->ba1 + index) & 0x1f] = v;
191   else
192      s->dmem0[(s->ba0 + index) & 0xff] = v;
193}
194
195static UINT32 tms57002_read_d(tms57002_t *s, UINT8 index)
196{
197   if(s->st1 & ST1_DBP)
198      return s->dmem1[(s->ba1 + index) & 0x1f];
199   else
200      return s->dmem0[(s->ba0 + index) & 0xff];
201}
202
203static void tms57002_opc_write_c(tms57002_t *s, UINT32 opcode, UINT32 v)
204{
205   if(opcode & 0x400) {
206      if(opcode & 0x100)
207         tms57002_write_c(s, opcode & 0xff, v);
208      else if(opcode & 0x80)
209         tms57002_write_c(s, s->ca++, v);
210      else
211         tms57002_write_c(s, s->ca, v);
212   } else if(opcode & 0x200)
213      tms57002_write_c(s, s->ca++, v);
214   else
215      tms57002_write_c(s, s->ca, v);
216}
217
218static UINT32 tms57002_opc_read_c(tms57002_t *s, UINT32 opcode)
219{
220   if(opcode & 0x400) {
221      if(opcode & 0x100)
222         return tms57002_read_c(s, opcode & 0xff);
223      else if(opcode & 0x80)
224         return tms57002_read_c(s, s->ca++);
225      else
226         return tms57002_read_c(s, s->ca);
227   } else if(opcode & 0x200)
228      return tms57002_read_c(s, s->ca++);
229   else
230      return tms57002_read_c(s, s->ca);
231}
232
233static void tms57002_opc_write_d(tms57002_t *s, UINT32 opcode, UINT32 v)
234{
235   if(!(opcode & 0x400)) {
236      if(opcode & 0x100)
237         tms57002_write_d(s, opcode & 0xff, v);
238      else if(opcode & 0x80)
239         tms57002_write_d(s, s->id++, v);
240      else
241         tms57002_write_d(s, s->id, v);
242   } else if(opcode & 0x200)
243      tms57002_write_d(s, s->id++, v);
244   else
245      tms57002_write_d(s, s->id, v);
246}
247
248static UINT32 tms57002_opc_read_d(tms57002_t *s, UINT32 opcode)
249{
250   if(!(opcode & 0x400)) {
251      if(opcode & 0x100)
252         return tms57002_read_d(s, opcode & 0xff);
253      else if(opcode & 0x80)
254         return tms57002_read_d(s, s->id++);
255      else
256         return tms57002_read_d(s, s->id);
257   } else if(opcode & 0x200)
258      return tms57002_read_d(s, s->id++);
259   else
260      return tms57002_read_d(s, s->id);
261}
262#endif
263
264static void tms57002_xm_init(tms57002_t *s)
265{
266   UINT32 adr = s->xoa + s->xba;
204   UINT32 adr = xoa + xba;
267205   UINT32 mask = 0;
268206
269   switch(s->st0 & ST0_M) {
207   switch(st0 & ST0_M) {
270208   case ST0_M_64K:  mask = 0x0ffff; break;
271209   case ST0_M_256K: mask = 0x3ffff; break;
272210   case ST0_M_1M:   mask = 0xfffff; break;
273211   }
274   if(s->st0 & ST0_WORD)
212   if(st0 & ST0_WORD)
275213      adr <<= 2;
276214   else
277215      adr <<= 1;
278216
279   if(!(s->st0 & ST0_SEL))
217   if(!(st0 & ST0_SEL))
280218      adr <<= 1;
281219
282   s->xm_adr = adr & mask;
220   xm_adr = adr & mask;
283221}
284222
285static void tms57002_xm_step_read(tms57002_t *s)
223void tms57002_device::xm_step_read()
286224{
287   UINT32 adr = s->xm_adr;
288   UINT8 v = s->data->read_byte(adr);
225   UINT32 adr = xm_adr;
226   UINT8 v = data->read_byte(adr);
289227   int done;
290   if(s->st0 & ST0_WORD) {
291      if(s->st0 & ST0_SEL) {
228   if(st0 & ST0_WORD) {
229      if(st0 & ST0_SEL) {
292230         int off = (adr & 3) << 3;
293         s->xrd = (s->xrd & ~(0xff << off)) | (v << off);
231         xrd = (xrd & ~(0xff << off)) | (v << off);
294232         done = off == 16;
295233      } else {
296234         int off = (adr & 7) << 2;
297         s->xrd = (s->xrd & ~(0xf << off)) | ((v & 0xf) << off);
235         xrd = (xrd & ~(0xf << off)) | ((v & 0xf) << off);
298236         done = off == 20;
299237      }
300238   } else {
301      if(s->st0 & ST0_SEL) {
239      if(st0 & ST0_SEL) {
302240         int off = (adr & 1) << 3;
303         s->xrd = (s->xrd & ~(0xff << off)) | (v << off);
241         xrd = (xrd & ~(0xff << off)) | (v << off);
304242         done = off == 8;
305243         if(done)
306            s->xrd &= 0x00ffff;
244            xrd &= 0x00ffff;
307245      } else {
308246         int off = (adr & 3) << 2;
309         s->xrd = (s->xrd & ~(0xf << off)) | ((v & 0xf) << off);
247         xrd = (xrd & ~(0xf << off)) | ((v & 0xf) << off);
310248         done = off == 12;
311249         if(done)
312            s->xrd &= 0x00ffff;
250            xrd &= 0x00ffff;
313251      }
314252   }
315253   if(done) {
316      s->sti &= ~S_READ;
317      s->xm_adr = 0;
254      sti &= ~S_READ;
255      xm_adr = 0;
318256   } else
319      s->xm_adr = adr+1;
257      xm_adr = adr+1;
320258}
321259
322static void tms57002_xm_step_write(tms57002_t *s)
260void tms57002_device::xm_step_write()
323261{
324   UINT32 adr = s->xm_adr;
262   UINT32 adr = xm_adr;
325263   UINT8 v;
326264   int done;
327   if(s->st0 & ST0_WORD) {
328      if(s->st0 & ST0_SEL) {
265   if(st0 & ST0_WORD) {
266      if(st0 & ST0_SEL) {
329267         int off = (adr & 3) << 3;
330         v = s->xwr >> off;
268         v = xwr >> off;
331269         done = off == 16;
332270      } else {
333271         int off = (adr & 7) << 2;
334         v = (s->xwr >> off) & 0xf;
272         v = (xwr >> off) & 0xf;
335273         done = off == 20;
336274      }
337275   } else {
338      if(s->st0 & ST0_SEL) {
276      if(st0 & ST0_SEL) {
339277         int off = (adr & 1) << 3;
340         v = s->xwr >> off;
278         v = xwr >> off;
341279         done = off == 8;
342280      } else {
343281         int off = (adr & 3) << 2;
344         v = (s->xwr >> off) & 0xf;
282         v = (xwr >> off) & 0xf;
345283         done = off == 12;
346284      }
347285   }
348   s->data->write_byte(adr, v);
286   data->write_byte(adr, v);
349287   if(done) {
350      s->sti &= ~S_WRITE;
351      s->xm_adr = 0;
288      sti &= ~S_WRITE;
289      xm_adr = 0;
352290   } else
353      s->xm_adr = adr+1;
291      xm_adr = adr+1;
354292}
355293
356#ifdef UNUSED_FUNCTION
357static UINT32 tms57002_aacc_to_output(tms57002_t *s)
294INT64 tms57002_device::macc_to_output_0(INT64 rounding, UINT64 rmask)
358295{
359   if(s->st1 & ST1_SFAO)
360      return s->aacc << 7;
361   else
362      return s->aacc;
363}
364
365static INT64 tms57002_macc_to_output(tms57002_t *s)
366{
367   INT64 m = s->macc;
296   INT64 m = macc;
368297   UINT64 m1;
369   int over = 0, rmode;
370   static const INT64 rounding[8] = {
371      0,
372      1LL << (48-32-1),
373      1LL << (48-24-1),
374      1LL << (48-30-1),
375      1LL << (48-16-1),
376      0, 0, 0
377   };
378   static const UINT64 rmask[8] = {
379      ~0ULL,
380      (~0ULL) << (48-32),
381      (~0ULL) << (48-24),
382      (~0ULL) << (48-30),
383      (~0ULL) << (48-16),
384      ~0ULL, ~0ULL, ~0ULL
385   };
386
387   // Overflow detection and shifting
388   switch((s->st1 & ST1_SFMO) >> ST1_SFMO_SHIFT) {
389   case 0: // sfmo 0
390      m1 = m & 0xf800000000000ULL;
391      if(m1 && m1 != 0xf800000000000ULL)
392         over = 1;
393      break;
394   case 1: // sfmo 2
395      m1 = m & 0xfe00000000000ULL;
396      if(m1 && m1 != 0xfe00000000000ULL)
397         over = 1;
398      m <<= 2;
399      break;
400   case 2: // sfmo 4
401      m1 = m & 0xff80000000000ULL;
402      if(m1 && m1 != 0xff80000000000ULL)
403         over = 1;
404      m <<= 4;
405      break;
406   case 3: // sfmo -8
407      m >>= 8;
408      break;
409   }
410
411   // Rounder
412   rmode = (s->st1 & ST1_RND) >> ST1_RND_SHIFT;
413   m = (m + rounding[rmode]) & rmask[rmode];
414
415   // Second overflow detection
416   m1 = m & 0xf800000000000ULL;
417   if(m1 && m1 != 0xf800000000000ULL)
418      over = 1;
419
420   // Overflow handling
421   if(over) {
422      s->st1 |= ST1_MOV;
423      if(s->st1 & ST1_MOVM) {
424         if(m & 0x8000000000000ULL)
425            m = 0xffff800000000000ULL;
426         else
427            m = 0x00007fffffffffffULL;
428      }
429   }
430   return m;
431}
432#endif
433
434static noinline INT64 tms57002_macc_to_output_0(tms57002_t *s, INT64 rounding, UINT64 rmask)
435{
436   INT64 m = s->macc;
437   UINT64 m1;
438298   int over = 0;
439299
440300   // Overflow detection and shifting
r14742r14743
451311
452312   // Overflow handling
453313   if(over) {
454      s->st1 |= ST1_MOV;
314      st1 |= ST1_MOV;
455315   }
456316   return m;
457317}
458318
459static noinline INT64 tms57002_macc_to_output_1(tms57002_t *s, INT64 rounding, UINT64 rmask)
319INT64 tms57002_device::macc_to_output_1(INT64 rounding, UINT64 rmask)
460320{
461   INT64 m = s->macc;
321   INT64 m = macc;
462322   UINT64 m1;
463323   int over = 0;
464324
r14742r14743
477337
478338   // Overflow handling
479339   if(over) {
480      s->st1 |= ST1_MOV;
340      st1 |= ST1_MOV;
481341   }
482342   return m;
483343}
484344
485static noinline INT64 tms57002_macc_to_output_2(tms57002_t *s, INT64 rounding, UINT64 rmask)
345INT64 tms57002_device::macc_to_output_2(INT64 rounding, UINT64 rmask)
486346{
487   INT64 m = s->macc;
347   INT64 m = macc;
488348   UINT64 m1;
489349   int over = 0;
490350
r14742r14743
503363
504364   // Overflow handling
505365   if(over) {
506      s->st1 |= ST1_MOV;
366      st1 |= ST1_MOV;
507367   }
508368   return m;
509369}
510370
511static noinline INT64 tms57002_macc_to_output_3(tms57002_t *s, INT64 rounding, UINT64 rmask)
371INT64 tms57002_device::macc_to_output_3(INT64 rounding, UINT64 rmask)
512372{
513   INT64 m = s->macc;
373   INT64 m = macc;
514374   UINT64 m1;
515375   int over = 0;
516376
r14742r14743
526386
527387   // Overflow handling
528388   if(over) {
529      s->st1 |= ST1_MOV;
389      st1 |= ST1_MOV;
530390   }
531391   return m;
532392}
533393
534static noinline INT64 tms57002_macc_to_output_0s(tms57002_t *s, INT64 rounding, UINT64 rmask)
394INT64 tms57002_device::macc_to_output_0s(INT64 rounding, UINT64 rmask)
535395{
536   INT64 m = s->macc;
396   INT64 m = macc;
537397   UINT64 m1;
538398   int over = 0;
539399
r14742r14743
551411
552412   // Overflow handling
553413   if(over) {
554      s->st1 |= ST1_MOV;
414      st1 |= ST1_MOV;
555415      if(m & 0x8000000000000ULL)
556416         m = 0xffff800000000000ULL;
557417      else
r14742r14743
560420   return m;
561421}
562422
563static noinline INT64 tms57002_macc_to_output_1s(tms57002_t *s, INT64 rounding, UINT64 rmask)
423INT64 tms57002_device::macc_to_output_1s(INT64 rounding, UINT64 rmask)
564424{
565   INT64 m = s->macc;
425   INT64 m = macc;
566426   UINT64 m1;
567427   int over = 0;
568428
r14742r14743
581441
582442   // Overflow handling
583443   if(over) {
584      s->st1 |= ST1_MOV;
444      st1 |= ST1_MOV;
585445      if(m & 0x8000000000000ULL)
586446         m = 0xffff800000000000ULL;
587447      else
r14742r14743
590450   return m;
591451}
592452
593static noinline INT64 tms57002_macc_to_output_2s(tms57002_t *s, INT64 rounding, UINT64 rmask)
453INT64 tms57002_device::macc_to_output_2s(INT64 rounding, UINT64 rmask)
594454{
595   INT64 m = s->macc;
455   INT64 m = macc;
596456   UINT64 m1;
597457   int over = 0;
598458
r14742r14743
611471
612472   // Overflow handling
613473   if(over) {
614      s->st1 |= ST1_MOV;
474      st1 |= ST1_MOV;
615475      if(m & 0x8000000000000ULL)
616476         m = 0xffff800000000000ULL;
617477      else
r14742r14743
620480   return m;
621481}
622482
623static noinline INT64 tms57002_macc_to_output_3s(tms57002_t *s, INT64 rounding, UINT64 rmask)
483INT64 tms57002_device::macc_to_output_3s(INT64 rounding, UINT64 rmask)
624484{
625   INT64 m = s->macc;
485   INT64 m = macc;
626486   UINT64 m1;
627487   int over = 0;
628488
r14742r14743
638498
639499   // Overflow handling
640500   if(over) {
641      s->st1 |= ST1_MOV;
501      st1 |= ST1_MOV;
642502      if(m & 0x8000000000000ULL)
643503         m = 0xffff800000000000ULL;
644504      else
r14742r14743
647507   return m;
648508}
649509
650#ifdef UNUSED_FUNCTION
651static INT64 tms57002_check_macc_overflow(tms57002_t *s)
510INT64 tms57002_device::check_macc_overflow_0()
652511{
653   INT64 m = s->macc;
512   INT64 m = macc;
654513   UINT64 m1;
655   int over = 0;
656514
657515   // Overflow detection
658   switch((s->st1 & ST1_SFMO) >> ST1_SFMO_SHIFT) {
659   case 0: // sfmo 0
660      m1 = m & 0xf800000000000ULL;
661      if(m1 && m1 != 0xf800000000000ULL)
662         over = 1;
663      break;
664   case 1: // sfmo 2
665      m1 = m & 0xfe00000000000ULL;
666      if(m1 && m1 != 0xfe00000000000ULL)
667         over = 1;
668      break;
669   case 2: // sfmo 4
670      m1 = m & 0xff80000000000ULL;
671      if(m1 && m1 != 0xff80000000000ULL)
672         over = 1;
673      break;
674   case 3: // sfmo -8
675      break;
676   }
677
678   // Overflow handling
679   if(over) {
680      s->st1 |= ST1_MOV;
681      if(s->st1 & ST1_MOVM) {
682         if(m & 0x8000000000000ULL)
683            m = 0xffff800000000000ULL;
684         else
685            m = 0x00007fffffffffffULL;
686      }
687   }
688   return m;
689}
690#endif
691
692static noinline INT64 tms57002_check_macc_overflow_0(tms57002_t *s)
693{
694   INT64 m = s->macc;
695   UINT64 m1;
696
697   // Overflow detection
698516   m1 = m & 0xf800000000000ULL;
699517   if(m1 && m1 != 0xf800000000000ULL) {
700      s->st1 |= ST1_MOV;
518      st1 |= ST1_MOV;
701519   }
702520   return m;
703521}
704522
705static noinline INT64 tms57002_check_macc_overflow_1(tms57002_t *s)
523INT64 tms57002_device::check_macc_overflow_1()
706524{
707   INT64 m = s->macc;
525   INT64 m = macc;
708526   UINT64 m1;
709527
710528   // Overflow detection
711529   m1 = m & 0xfe00000000000ULL;
712530   if(m1 && m1 != 0xfe00000000000ULL) {
713      s->st1 |= ST1_MOV;
531      st1 |= ST1_MOV;
714532   }
715533   return m;
716534}
717535
718static noinline INT64 tms57002_check_macc_overflow_2(tms57002_t *s)
536INT64 tms57002_device::check_macc_overflow_2()
719537{
720   INT64 m = s->macc;
538   INT64 m = macc;
721539   UINT64 m1;
722540
723541   // Overflow detection
724542   m1 = m & 0xff80000000000ULL;
725543   if(m1 && m1 != 0xff80000000000ULL) {
726      s->st1 |= ST1_MOV;
544      st1 |= ST1_MOV;
727545   }
728546   return m;
729547}
730548
731static INT64 tms57002_check_macc_overflow_3(tms57002_t *s)
549INT64 tms57002_device::check_macc_overflow_3()
732550{
733   return s->macc;
551   return macc;
734552}
735553
736static noinline INT64 tms57002_check_macc_overflow_0s(tms57002_t *s)
554INT64 tms57002_device::check_macc_overflow_0s()
737555{
738   INT64 m = s->macc;
556   INT64 m = macc;
739557   UINT64 m1;
740558
741559   // Overflow detection
742560   m1 = m & 0xf800000000000ULL;
743561   if(m1 && m1 != 0xf800000000000ULL) {
744      s->st1 |= ST1_MOV;
562      st1 |= ST1_MOV;
745563      if(m & 0x8000000000000ULL)
746564         m = 0xffff800000000000ULL;
747565      else
r14742r14743
750568   return m;
751569}
752570
753static noinline INT64 tms57002_check_macc_overflow_1s(tms57002_t *s)
571INT64 tms57002_device::check_macc_overflow_1s()
754572{
755   INT64 m = s->macc;
573   INT64 m = macc;
756574   UINT64 m1;
757575
758576   // Overflow detection
759577   m1 = m & 0xfe00000000000ULL;
760578   if(m1 && m1 != 0xfe00000000000ULL) {
761      s->st1 |= ST1_MOV;
579      st1 |= ST1_MOV;
762580      if(m & 0x8000000000000ULL)
763581         m = 0xffff800000000000ULL;
764582      else
r14742r14743
767585   return m;
768586}
769587
770static noinline INT64 tms57002_check_macc_overflow_2s(tms57002_t *s)
588INT64 tms57002_device::check_macc_overflow_2s()
771589{
772   INT64 m = s->macc;
590   INT64 m = macc;
773591   UINT64 m1;
774592
775593   // Overflow detection
776594   m1 = m & 0xff80000000000ULL;
777595   if(m1 && m1 != 0xff80000000000ULL) {
778      s->st1 |= ST1_MOV;
596      st1 |= ST1_MOV;
779597      if(m & 0x8000000000000ULL)
780598         m = 0xffff800000000000ULL;
781599      else
r14742r14743
784602   return m;
785603}
786604
787static INT64 tms57002_check_macc_overflow_3s(tms57002_t *s)
605INT64 tms57002_device::check_macc_overflow_3s()
788606{
789   return s->macc;
607   return macc;
790608}
791609
792#ifdef UNUSED_FUNCTION
793static INT64 tms57002_macc_to_loop(tms57002_t *s)
610void tms57002_device::cache_flush()
794611{
795   INT64 m = s->macc;
796
797   // sfma shifting
798   switch((s->st1 & ST1_SFMA) >> ST1_SFMA_SHIFT) {
799   case 0: // sfma 0
800      break;
801   case 1: // sfma 2
802      m <<= 2;
803      break;
804   case 2: // sfma 4
805      m <<= 4;
806      break;
807   case 3: // sfma -16
808      if(m & 0x8000000000000ULL)
809         m |= 0xfff0000000000000ULL;
810      m >>= 16;
811      break;
812   }
813
814   return m;
815}
816
817static void tms57002_execute_cat1(tms57002_t *s, UINT32 opcode)
818{
819   UINT32 c, d;
820   INT64 r;
821   switch(opcode >> 18) {
822   case 0x00: // nop
823      break;
824
825#define INTRP1
826#include "cpu/tms57002/tms57002.inc"
827#undef INTRP1
828
829   default:
830      fatalerror("Unhandled case in tms57002_execute_cat1");
831   }
832}
833
834static void tms57002_execute_cat2_pre(tms57002_t *s, UINT32 opcode)
835{
836   switch((opcode >> 11) & 0x7f) {
837   case 0x00: // nop
838      break;
839
840#define INTRP2A
841#include "cpu/tms57002/tms57002.inc"
842#undef INTRP2A
843
844   default:
845      fatalerror("Unhandled case in tms57002_execute_cat2_pre");
846   }
847}
848
849static void tms57002_execute_cat2_post(tms57002_t *s, UINT32 opcode)
850{
851   UINT32 c;
852   switch((opcode >> 11) & 0x7f) {
853   case 0x00: // nop
854      break;
855
856#define INTRP2B
857#include "cpu/tms57002/tms57002.inc"
858#undef INTRP2B
859
860   default:
861      fatalerror("Unhandled case in tms57002_execute_cat2_post");
862   }
863}
864
865static void tms57002_execute_cat3(tms57002_t *s, UINT32 opcode)
866{
867   switch((opcode >> 11) & 0x7f) {
868   case 0x00: // nop
869      break;
870
871#define INTRP3
872#include "cpu/tms57002/tms57002.inc"
873#undef INTRP3
874
875   default:
876      fatalerror("Unhandled case in tms57002_execute_cat3");
877   }
878}
879
880void tms57002_execute(tms57002_t *s)
881{
882   while(!(s->sti & (S_IDLE | IN_PLOAD | IN_CLOAD))) {
883      UINT32 opcode = s->program->read_dword(s->pc << 2);
884
885      if(s->sti & (S_READ|S_WRITE)) {
886         if(s->sti & S_READ)
887            tms57002_xm_step_read(s);
888         else
889            tms57002_xm_step_write(s);
890      }
891
892      if((opcode & 0xfc0000) == 0xfc0000)
893         tms57002_execute_cat3(s, opcode);
894      else {
895         tms57002_execute_cat2_pre(s, opcode);
896         tms57002_execute_cat1(s, opcode);
897         tms57002_execute_cat2_post(s, opcode);
898      }
899
900      if(s->rptc)
901         s->rptc--;
902      else if(s->sti & S_BRANCH)
903         s->sti &= ~S_BRANCH;
904      else
905         s->pc++; // Wraps if it reaches 256
906
907      if(s->rptc_next) {
908         s->rptc = s->rptc_next;
909         s->rptc_next = 0;
910      }
911   }
912}
913#endif
914
915static void tms57002_cache_flush(tms57002_t *s)
916{
917612   int i;
918   s->cache.hused = s->cache.iused = 0;
613   cache.hused = cache.iused = 0;
919614   for(i=0; i != 256; i++)
920      s->cache.hashbase[i] = -1;
615      cache.hashbase[i] = -1;
921616   for(i=0; i != HBS; i++) {
922      s->cache.hashnode[i].st1 = 0;
923      s->cache.hashnode[i].ipc = -1;
924      s->cache.hashnode[i].next = -1;
617      cache.hashnode[i].st1 = 0;
618      cache.hashnode[i].ipc = -1;
619      cache.hashnode[i].next = -1;
925620   }
926621   for(i=0; i != IBS; i++) {
927      s->cache.inst[i].op = 0;
928      s->cache.inst[i].next = -1;
929      s->cache.inst[i].param = 0;
622      cache.inst[i].op = 0;
623      cache.inst[i].next = -1;
624      cache.inst[i].param = 0;
930625   }
931626}
932627
933static void tms57002_add_one(tms57002_t *s, cstate *cs, unsigned short op, UINT8 param)
628void tms57002_device::add_one(cstate *cs, unsigned short op, UINT8 param)
934629{
935   short ipc = s->cache.iused++;
936   s->cache.inst[ipc].op = op;
937   s->cache.inst[ipc].param = param;
938   s->cache.inst[ipc].next = -1;
630   short ipc = cache.iused++;
631   cache.inst[ipc].op = op;
632   cache.inst[ipc].param = param;
633   cache.inst[ipc].next = -1;
939634   if(cs->ipc != -1)
940      s->cache.inst[cs->ipc].next = ipc;
635      cache.inst[cs->ipc].next = ipc;
941636   cs->ipc = ipc;
942637   if(cs->hnode != -1) {
943      s->cache.hashnode[cs->hnode].ipc = ipc;
638      cache.hashnode[cs->hnode].ipc = ipc;
944639      cs->hnode = -1;
945640   }
946641}
947642
948static void tms57002_decode_one(tms57002_t *s, UINT32 opcode, cstate *cs, void (*dec)(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs))
643void tms57002_device::decode_one(UINT32 opcode, cstate *cs, void (tms57002_device::*dec)(UINT32 opcode, unsigned short *op, cstate *cs))
949644{
950645   unsigned short op = 0;
951   dec(s, opcode, &op, cs);
646   (this->*dec)(opcode, &op, cs);
952647   if(!op)
953648      return;
954   tms57002_add_one(s, cs, op, opcode & 0xff);
649   add_one(cs, op, opcode & 0xff);
955650}
956651
957static short tms57002_get_hash(tms57002_t *s, unsigned char adr, UINT32 st1, short *pnode)
652short tms57002_device::get_hash(unsigned char adr, UINT32 st1, short *pnode)
958653{
959654   short hnode;
960655   st1 &= ST1_CACHE;
961656   *pnode = -1;
962   hnode = s->cache.hashbase[adr];
657   hnode = cache.hashbase[adr];
963658   while(hnode != -1) {
964      if(s->cache.hashnode[hnode].st1 == st1)
965         return s->cache.hashnode[hnode].ipc;
659      if(cache.hashnode[hnode].st1 == st1)
660         return cache.hashnode[hnode].ipc;
966661      *pnode = hnode;
967      hnode = s->cache.hashnode[hnode].next;
662      hnode = cache.hashnode[hnode].next;
968663   }
969664   return -1;
970665}
971666
972static short tms57002_get_hashnode(tms57002_t *s, unsigned char adr, UINT32 st1, short pnode)
667short tms57002_device::get_hashnode(unsigned char adr, UINT32 st1, short pnode)
973668{
974   short hnode = s->cache.hused++;
975   s->cache.hashnode[hnode].st1 = st1 & ST1_CACHE;
976   s->cache.hashnode[hnode].ipc = -1;
977   s->cache.hashnode[hnode].next = -1;
669   short hnode = cache.hused++;
670   cache.hashnode[hnode].st1 = st1 & ST1_CACHE;
671   cache.hashnode[hnode].ipc = -1;
672   cache.hashnode[hnode].next = -1;
978673   if(pnode == -1)
979      s->cache.hashbase[adr] = hnode;
674      cache.hashbase[adr] = hnode;
980675   else
981      s->cache.hashnode[pnode].next = hnode;
676      cache.hashnode[pnode].next = hnode;
982677   return hnode;
983678}
984679
985static int tms57002_decode_get_pc(tms57002_t *s)
680int tms57002_device::decode_get_pc()
986681{
987   UINT32 st1 = s->st1;
988682   short pnode, res;
989683   cstate cs;
990   UINT8 adr = s->pc;
684   UINT8 adr = pc;
991685
992   res = tms57002_get_hash(s, adr, st1, &pnode);
686   res = get_hash(adr, st1, &pnode);
993687   if(res != -1)
994688      return res;
995689
996   if(HBS - s->cache.hused < 256 || IBS - s->cache.iused < 256*3) {
997      tms57002_cache_flush(s);
690   if(HBS - cache.hused < 256 || IBS - cache.iused < 256*3) {
691      cache_flush();
998692      pnode = -1;
999693   }
1000694
1001   cs.hnode = res = tms57002_get_hashnode(s, adr, st1, pnode);
695   cs.hnode = res = get_hashnode(adr, st1, pnode);
1002696   cs.ipc = -1;
1003697   cs.branch = 0;
1004698
1005699   for(;;) {
1006700      short ipc;
1007      UINT32 opcode = s->program->read_dword(adr << 2);
701      UINT32 opcode = program->read_dword(adr << 2);
1008702
1009703      if((opcode & 0xfc0000) == 0xfc0000)
1010         tms57002_decode_one(s, opcode, &cs, tms57002_decode_cat3);
704         decode_one(opcode, &cs, &tms57002_device::decode_cat3);
1011705      else {
1012         tms57002_decode_one(s, opcode, &cs, tms57002_decode_cat2_pre);
1013         tms57002_decode_one(s, opcode, &cs, tms57002_decode_cat1);
1014         tms57002_decode_one(s, opcode, &cs, tms57002_decode_cat2_post);
706         decode_one(opcode, &cs, &tms57002_device::decode_cat2_pre);
707         decode_one(opcode, &cs, &tms57002_device::decode_cat1);
708         decode_one(opcode, &cs, &tms57002_device::decode_cat2_post);
1015709      }
1016      tms57002_add_one(s, &cs, 0, 0);
710      add_one(&cs, 0, 0);
1017711
1018712      if(cs.branch)
1019713         break;
1020714
1021715      adr++;
1022      ipc = tms57002_get_hash(s, adr, st1, &pnode);
716      ipc = get_hash(adr, st1, &pnode);
1023717      if(ipc != -1) {
1024         s->cache.inst[cs.ipc].next = ipc;
718         cache.inst[cs.ipc].next = ipc;
1025719         break;
1026720      }
1027      cs.hnode = tms57002_get_hashnode(s, adr, s->st1, pnode);
721      cs.hnode = get_hashnode(adr, st1, pnode);
1028722   }
1029723
1030   s->st1 = st1;
1031   return s->cache.hashnode[res].ipc;
724   return cache.hashnode[res].ipc;
1032725}
1033726
1034static CPU_EXECUTE(tms57002)
727void tms57002_device::execute_run()
1035728{
1036   tms57002_t *s = get_safe_token(device);
1037729   int ipc = -1;
1038730
1039   while(s->icount > 0 && !(s->sti & (S_IDLE | IN_PLOAD | IN_CLOAD))) {
731   while(icount > 0 && !(sti & (S_IDLE | IN_PLOAD | IN_CLOAD))) {
1040732      int iipc;
1041733
1042      debugger_instruction_hook(device, s->pc);
734      debugger_instruction_hook(this, pc);
1043735
1044736      if(ipc == -1)
1045         ipc = tms57002_decode_get_pc(s);
737         ipc = decode_get_pc();
1046738
1047739      iipc = ipc;
1048740
1049      if(s->sti & (S_READ|S_WRITE)) {
1050         if(s->sti & S_READ)
1051            tms57002_xm_step_read(s);
741      if(sti & (S_READ|S_WRITE)) {
742         if(sti & S_READ)
743            xm_step_read();
1052744         else
1053            tms57002_xm_step_write(s);
745            xm_step_write();
1054746      }
1055747
1056748      for(;;) {
1057749         UINT32 c, d;
1058750         INT64 r;
1059         const icd *i = s->cache.inst + ipc;
751         const icd *i = cache.inst + ipc;
1060752
1061753         ipc = i->next;
1062754         switch(i->op) {
r14742r14743
1072764         }
1073765      }
1074766   inst:
1075      s->icount--;
767      icount--;
1076768
1077      if(s->rptc) {
1078         s->rptc--;
769      if(rptc) {
770         rptc--;
1079771         ipc = iipc;
1080      } else if(s->sti & S_BRANCH) {
1081         s->sti &= ~S_BRANCH;
772      } else if(sti & S_BRANCH) {
773         sti &= ~S_BRANCH;
1082774         ipc = -1;
1083775      } else
1084         s->pc++; // Wraps if it reaches 256, next wraps too
776         pc++; // Wraps if it reaches 256, next wraps too
1085777
1086      if(s->rptc_next) {
1087         s->rptc = s->rptc_next;
1088         s->rptc_next = 0;
778      if(rptc_next) {
779         rptc = rptc_next;
780         rptc_next = 0;
1089781      }
1090782   }
1091783
1092   if(s->icount > 0)
1093      s->icount = 0;
784   if(icount > 0)
785      icount = 0;
1094786}
1095787
1096static CPU_INIT(tms57002)
788void tms57002_device::device_start()
1097789{
1098   tms57002_t *s = get_safe_token(device);
1099   tms57002_cache_flush(s);
1100   s->sti = S_IDLE;
1101   s->program = device->space(AS_PROGRAM);
1102   s->data    = device->space(AS_DATA);
790   sti = S_IDLE;
791   program = space(AS_PROGRAM);
792   data    = space(AS_DATA);
793
794   state_add(STATE_GENPC,"GENPC", pc).noshow();
795
796   m_icountptr = &icount;
797
798   save_item(NAME(macc));
799
800   save_item(NAME(cmem));
801   save_item(NAME(dmem0));
802   save_item(NAME(dmem1));
803
804   save_item(NAME(si));
805   save_item(NAME(so));
806
807   save_item(NAME(st0));
808   save_item(NAME(st1));
809   save_item(NAME(sti));
810   save_item(NAME(aacc));
811   save_item(NAME(xoa));
812   save_item(NAME(xba));
813   save_item(NAME(xwr));
814   save_item(NAME(xrd));
815   save_item(NAME(creg));
816
817   save_item(NAME(pc));
818   save_item(NAME(ca));
819   save_item(NAME(id));
820   save_item(NAME(ba0));
821   save_item(NAME(ba1));
822   save_item(NAME(rptc));
823   save_item(NAME(rptc_next));
824   save_item(NAME(sa));
825
826   save_item(NAME(xm_adr));
827
828   save_item(NAME(host));
829   save_item(NAME(hidx));
830   save_item(NAME(allow_update));
1103831}
1104832
833UINT32 tms57002_device::execute_min_cycles() const
834{
835   return 1;
836}
1105837
1106static CPU_SET_INFO(tms57002)
838UINT32 tms57002_device::execute_max_cycles() const
1107839{
840   return 3;
1108841}
1109842
1110static ADDRESS_MAP_START(internal_pgm, AS_PROGRAM, 32)
1111   AM_RANGE(0x000, 0x3ff) AM_RAM
1112ADDRESS_MAP_END
1113
1114CPU_GET_INFO(tms57002)
843UINT32 tms57002_device::execute_input_lines() const
1115844{
1116   tms57002_t *s = (device != NULL && device->token() != NULL) ? get_safe_token(device) : NULL;
845   return 0;
846}
1117847
1118   switch(state) {
1119   case CPUINFO_INT_CONTEXT_SIZE:            info->i = sizeof(tms57002_t); break;
1120   case CPUINFO_INT_INPUT_LINES:            info->i = 0; break;
1121   case DEVINFO_INT_ENDIANNESS:            info->i = ENDIANNESS_LITTLE; break;
1122   case CPUINFO_INT_CLOCK_MULTIPLIER:         info->i = 1; break;
1123   case CPUINFO_INT_CLOCK_DIVIDER:            info->i = 1; break;
1124   case CPUINFO_INT_MIN_INSTRUCTION_BYTES:      info->i = 4; break;
1125   case CPUINFO_INT_MAX_INSTRUCTION_BYTES:      info->i = 4; break;
1126   case CPUINFO_INT_MIN_CYCLES:            info->i = 1; break;
1127   case CPUINFO_INT_MAX_CYCLES:            info->i = 3; break;
1128   case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM:      info->i = 32; break;
1129   case DEVINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM:      info->i = 8; break;
1130   case DEVINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM:      info->i = -2; break;
1131   case DEVINFO_INT_DATABUS_WIDTH + AS_DATA:      info->i = 8; break;
1132   case DEVINFO_INT_ADDRBUS_WIDTH + AS_DATA:      info->i = 20; break;
1133   case DEVINFO_INT_ADDRBUS_SHIFT + AS_DATA:      info->i = 0; break;
1134   case DEVINFO_INT_DATABUS_WIDTH + AS_IO:         info->i = 0; break;
1135   case DEVINFO_INT_ADDRBUS_WIDTH + AS_IO:         info->i = 0; break;
1136   case DEVINFO_INT_ADDRBUS_SHIFT + AS_IO:         info->i = 0; break;
1137   case CPUINFO_FCT_SET_INFO:               info->setinfo = CPU_SET_INFO_NAME(tms57002); break;
1138   case CPUINFO_FCT_INIT:                  info->init = CPU_INIT_NAME(tms57002); break;
1139   case CPUINFO_FCT_RESET:                  info->reset = CPU_RESET_NAME(tms57002); break;
1140   case CPUINFO_FCT_EXECUTE:               info->execute = CPU_EXECUTE_NAME(tms57002); break;
1141   case CPUINFO_FCT_DISASSEMBLE:            info->disassemble = CPU_DISASSEMBLE_NAME(tms57002); break;
1142   case CPUINFO_PTR_INSTRUCTION_COUNTER:      info->icount = &s->icount; break;
1143   case DEVINFO_PTR_INTERNAL_MEMORY_MAP + AS_PROGRAM:info->internal_map32 = ADDRESS_MAP_NAME(internal_pgm); break;
1144   case DEVINFO_STR_NAME:                  strcpy( info->s, "TMS57002" ); break;
1145   case DEVINFO_STR_FAMILY:            strcpy( info->s, "Texas Instruments TMS57002 (DASP)" ); break;
1146   case DEVINFO_STR_VERSION:            strcpy( info->s, "1.0" ); break;
1147   case DEVINFO_STR_SOURCE_FILE:               strcpy( info->s, __FILE__ ); break;
1148   case DEVINFO_STR_CREDITS:            strcpy( info->s, "Copyright Olivier Galibert" ); break;
848const address_space_config *tms57002_device::memory_space_config(address_spacenum spacenum) const
849{
850   switch(spacenum) {
851   case AS_PROGRAM: return &program_config;
852   case AS_DATA: return &data_config;
853   default: return 0;
1149854   }
1150855}
1151
1152DEFINE_LEGACY_CPU_DEVICE(TMS57002, tms57002);
src/emu/cpu/tms57002/tmsmake.c
r14742r14743
8686static const vinfo vinf[] = {
8787  { I_CMODE, 3, "cmode", "xmode(opcode, 'c')" },
8888  { I_DMODE, 3, "dmode", "xmode(opcode, 'd')" },
89  { I_SFAI,  2, "sfai",  "sfai(s->st1)"       },
90  { I_CRM,   4, "crm",   "crm(s->st1)"        },
91  { I_DBP,   2, "dbp",   "dbp(s->st1)"        },
92  { I_SFAO,  2, "sfao",  "sfao(s->st1)"       },
93  { I_SFMO,  4, "sfmo",  "sfmo(s->st1)"       },
94  { I_RND,   8, "rnd",   "rnd(s->st1)"        },
95  { I_MOVM,  2, "movm",  "movm(s->st1)"       },
96  { I_SFMA,  4, "sfma",  "sfma(s->st1)"       },
89  { I_SFAI,  2, "sfai",  "sfai(st1)"       },
90  { I_CRM,   4, "crm",   "crm(st1)"        },
91  { I_DBP,   2, "dbp",   "dbp(st1)"        },
92  { I_SFAO,  2, "sfao",  "sfao(st1)"       },
93  { I_SFMO,  4, "sfmo",  "sfmo(st1)"       },
94  { I_RND,   8, "rnd",   "rnd(st1)"        },
95  { I_MOVM,  2, "movm",  "movm(st1)"       },
96  { I_SFMA,  4, "sfma",  "sfma(st1)"       },
9797  { 0 }
9898};
9999
r14742r14743
453453      for(j=0; j != pc; j++)
454454   switch(par[j]) {
455455   case PC:
456     fprintf(f, ", tms57002_get_memadr(opcode, 'c')");
456     fprintf(f, ", get_memadr(opcode, 'c')");
457457     break;
458458   case PD:
459     fprintf(f, ", tms57002_get_memadr(opcode, 'd')");
459     fprintf(f, ", get_memadr(opcode, 'd')");
460460     break;
461461   case PI:
462462     fprintf(f, ", opcode & 0xff");
r14742r14743
482482      break;
483483
484484    case PA:
485      scs(p, "tms57002_aacc_to_output(s)");
485      scs(p, "aacc_to_output()");
486486      break;
487487
488488    case PC:
489      scs(p, "tms57002_opc_read_c(s, opcode)");
489      scs(p, "opc_read_c(opcode)");
490490      break;
491491
492492    case PD:
493      scs(p, "(tms57002_opc_read_d(s, opcode) << 8)");
493      scs(p, "(opc_read_d(opcode) << 8)");
494494      break;
495495
496496    case PI:
r14742r14743
498498      break;
499499
500500    case PD24:
501      scs(p, "tms57002_opc_read_d(s, opcode)");
501      scs(p, "opc_read_d(opcode)");
502502      break;
503503
504504    case PML:
505      scs(p, "tms57002_macc_to_loop(s)");
505      scs(p, "macc_to_loop()");
506506      break;
507507
508508    case PMO:
509      scs(p, "tms57002_macc_to_output(s)");
509      scs(p, "macc_to_output()");
510510      break;
511511
512512    case PMV:
513      scs(p, "tms57002_check_macc_overflow(s)");
513      scs(p, "check_macc_overflow()");
514514      break;
515515
516516    case PB:
517      scs(p, "s->pc = ");
517      scs(p, "pc = ");
518518      intrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1]);
519519      scs(p, ";\n");
520      scs(p, "  s->sti |= S_BRANCH");
520      scs(p, "  sti |= S_BRANCH");
521521      break;
522522
523523    case PWA:
r14742r14743
525525      intrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1]);
526526      scs(p, ";\n");
527527      scs(p, "  if(r < -0x80000000 || r > 0x7fffffff)\n");
528      scs(p, "    s->st1 |= ST1_AOV;\n");
529      scs(p, "  s->aacc = r");
528      scs(p, "    st1 |= ST1_AOV;\n");
529      scs(p, "  aacc = r");
530530      break;
531531
532532    case PWC:
533      scs(p, "tms57002_opc_write_c(s, opcode, ");
533      scs(p, "opc_write_c(opcode, ");
534534      intrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1]);
535535      scs(p, ")");
536536      break;
537537
538538    case PWD:
539      scs(p, "tms57002_opc_write_d(s, opcode, ");
539      scs(p, "opc_write_d(opcode, ");
540540      intrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1]);
541541      scs(p, ")");
542542      break;
r14742r14743
546546      scs(p, " = ");
547547      intrp_expand(p, parse_res[i].ppos[1], parse_res[i].ppos[2]);
548548      scs(p, ";\n");
549      scs(p, "  if(s->st1 & ST1_SFAI)\n");
549      scs(p, "  if(st1 & ST1_SFAI)\n");
550550      scs(p, "    ");
551551      intrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1]);
552552      scs(p, " = ((INT32)");
r14742r14743
636636
637637    case PA:
638638      if(cv[IxSFAO])
639   scs(p, "(s->aacc << 7)");
639   scs(p, "(aacc << 7)");
640640      else
641   scs(p, "s->aacc");
641   scs(p, "aacc");
642642      break;
643643
644644    case PC: {
645645      const char *r = NULL;
646646      if(cv[IxCMODE] == 0)
647   r = "s->cmem[i->param]";
647   r = "cmem[i->param]";
648648      else if(cv[IxCMODE] == 1)
649   r = "s->cmem[s->ca]";
649   r = "cmem[ca]";
650650      else if(cv[IxCMODE] == 2)
651   r = "s->cmem[s->ca++]";
651   r = "cmem[ca++]";
652652      else
653653   abort();
654654
r14742r14743
670670    case PD:
671671      if(cv[IxDMODE] == 0)
672672   if(cv[IxDBP])
673     scs(p, "(s->dmem1[(i->param + s->ba1) & 0x1f] << 8)");
673     scs(p, "(dmem1[(i->param + ba1) & 0x1f] << 8)");
674674   else
675     scs(p, "(s->dmem0[(i->param + s->ba0) & 0xff] << 8)");
675     scs(p, "(dmem0[(i->param + ba0) & 0xff] << 8)");
676676      else if(cv[IxDMODE] == 1)
677677   if(cv[IxDBP])
678     scs(p, "(s->dmem1[(s->id + s->ba1) & 0x1f] << 8)");
678     scs(p, "(dmem1[(id + ba1) & 0x1f] << 8)");
679679   else
680     scs(p, "(s->dmem0[(s->id + s->ba0) & 0xff] << 8)");
680     scs(p, "(dmem0[(id + ba0) & 0xff] << 8)");
681681      else if(cv[IxDMODE] == 2)
682682   if(cv[IxDBP])
683     scs(p, "(s->dmem1[((s->id++) + s->ba1) & 0x1f] << 8)");
683     scs(p, "(dmem1[((id++) + ba1) & 0x1f] << 8)");
684684   else
685     scs(p, "(s->dmem0[((s->id++) + s->ba0) & 0xff] << 8)");
685     scs(p, "(dmem0[((id++) + ba0) & 0xff] << 8)");
686686      else
687687   abort();
688688      break;
r14742r14743
694694    case PD24:
695695      if(cv[IxDMODE] == 0)
696696   if(cv[IxDBP])
697     scs(p, "s->dmem1[(i->param + s->ba1) & 0x1f]");
697     scs(p, "dmem1[(i->param + ba1) & 0x1f]");
698698   else
699     scs(p, "s->dmem0[(i->param + s->ba0) & 0xff]");
699     scs(p, "dmem0[(i->param + ba0) & 0xff]");
700700      else if(cv[IxDMODE] == 1)
701701   if(cv[IxDBP])
702     scs(p, "s->dmem1[(s->id + s->ba1) & 0x1f]");
702     scs(p, "dmem1[(id + ba1) & 0x1f]");
703703   else
704     scs(p, "s->dmem0[(s->id + s->ba0) & 0xff]");
704     scs(p, "dmem0[(id + ba0) & 0xff]");
705705      else if(cv[IxDMODE] == 2)
706706   if(cv[IxDBP])
707     scs(p, "s->dmem1[((s->id++) + s->ba1) & 0x1f]");
707     scs(p, "dmem1[((id++) + ba1) & 0x1f]");
708708   else
709     scs(p, "s->dmem0[((s->id++) + s->ba0) & 0xff]");
709     scs(p, "dmem0[((id++) + ba0) & 0xff]");
710710      else
711711   abort();
712712      break;
713713
714714    case PML:
715715      if(cv[IxSFMA] == 0)
716   scs(p, "s->macc");
716   scs(p, "macc");
717717      else if(cv[IxSFMA] == 1)
718   scs(p, "(s->macc << 2)");
718   scs(p, "(macc << 2)");
719719      else if(cv[IxSFMA] == 2)
720   scs(p, "(s->macc << 4)");
720   scs(p, "(macc << 4)");
721721      else if(cv[IxSFMA] == 3)
722   scs(p, "(s->macc >> 16)");
722   scs(p, "(macc >> 16)");
723723      else
724724   abort();
725725      break;
r14742r14743
743743      };
744744
745745      char r[256];
746      sprintf(r, "tms57002_macc_to_output_%d%s(s, 0x%016" I64FMT "xULL, 0x%016" I64FMT "xULL)", cv[IxSFMO], cv[IxMOVM] ? "s" : "", rounding[cv[IxRND]], rmask[cv[IxRND]]);
746      sprintf(r, "macc_to_output_%d%s(0x%016" I64FMT "xULL, 0x%016" I64FMT "xULL)", cv[IxSFMO], cv[IxMOVM] ? "s" : "", rounding[cv[IxRND]], rmask[cv[IxRND]]);
747747      scs(p, r);
748748      break;
749749    }
750750
751751    case PMV: {
752752      char r[256];
753      sprintf(r, "tms57002_check_macc_overflow_%d%s(s)", cv[IxSFMO], cv[IxMOVM] ? "s" : "");
753      sprintf(r, "check_macc_overflow_%d%s()", cv[IxSFMO], cv[IxMOVM] ? "s" : "");
754754      scs(p, r);
755755      break;
756756    }
757757
758758    case PB:
759      scs(p, "s->pc = ");
759      scs(p, "pc = ");
760760      cintrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1], cv);
761761      scs(p, ";\n");
762      scs(p, "  s->sti |= S_BRANCH");
762      scs(p, "  sti |= S_BRANCH");
763763      break;
764764
765765    case PWA:
r14742r14743
767767      cintrp_expand(p, parse_res[i].ppos[0], parse_res[i].ppos[1], cv);
768768      scs(p, ";\n");
769769      scs(p, "  if(r < -0x80000000 || r > 0x7fffffff)\n");
770      scs(p, "    s->st1 |= ST1_AOV;\n");
771      scs(p, "  s->aacc = r");
770      scs(p, "    st1 |= ST1_AOV;\n");
771      scs(p, "  aacc = r");
772772      break;
773773
774774    case PWC:
775775      if(cv[IxCMODE] == 0)
776   scs(p, "s->cmem[i->param] = ");
776   scs(p, "cmem[i->param] = ");
777777      else if(cv[IxCMODE] == 1)
778   scs(p, "s->cmem[s->ca] = ");
778   scs(p, "cmem[ca] = ");
779779      else if(cv[IxCMODE] == 2)
780   scs(p, "s->cmem[s->ca++] = ");
780   scs(p, "cmem[ca++] = ");
781781      else
782782   abort();
783783
r14742r14743
787787    case PWD:
788788      if(cv[IxDMODE] == 0)
789789   if(cv[IxDBP])
790     scs(p, "s->dmem1[(i->param + s->ba1) & 0x1f] = ");
790     scs(p, "dmem1[(i->param + ba1) & 0x1f] = ");
791791   else
792     scs(p, "s->dmem0[(i->param + s->ba0) & 0xff] = ");
792     scs(p, "dmem0[(i->param + ba0) & 0xff] = ");
793793      else if(cv[IxDMODE] == 1)
794794   if(cv[IxDBP])
795     scs(p, "s->dmem1[(s->id + s->ba1) & 0x1f] = ");
795     scs(p, "dmem1[(id + ba1) & 0x1f] = ");
796796   else
797     scs(p, "s->dmem0[(s->id + s->ba0) & 0xff] = ");
797     scs(p, "dmem0[(id + ba0) & 0xff] = ");
798798      else if(cv[IxDMODE] == 2)
799799   if(cv[IxDBP])
800     scs(p, "s->dmem1[((s->id++) + s->ba1) & 0x1f] = ");
800     scs(p, "dmem1[((id++) + ba1) & 0x1f] = ");
801801   else
802     scs(p, "s->dmem0[((s->id++) + s->ba0) & 0xff] = ");
802     scs(p, "dmem0[((id++) + ba0) & 0xff] = ");
803803      else
804804   abort();
805805
r14742r14743
876876  save_dasm_cat(f, "DASM3", cat3, 0x80);
877877}
878878
879static void save_intrp(FILE *f)
879void save_intrp(FILE *f)
880880{
881881  save_intrp_cat(f, "INTRP1",  cat1, 0x40, 0,      0);
882882  save_intrp_cat(f, "INTRP2A", cat2, 0x80, I_POST, 0);
r14742r14743
916916  compute_cache_ids();
917917
918918  save_dasm(f);
919  save_intrp(f);
919  //  save_intrp(f);
920920  save_cdec(f);
921921  save_cintrp(f);
922922
src/emu/cpu/tms57002/tmsinstr.lst
r14742r14743
11abs  1  01 1 n
22  abs
3  s->aacc = %a;
4  if(((INT32)s->aacc) < 0) {
5    s->aacc = - s->aacc;
6    if(((INT32)s->aacc) < 0)
7      s->st1 |= ST1_AOV;
3  aacc = %a;
4  if(((INT32)aacc) < 0) {
5    aacc = - aacc;
6    if(((INT32)aacc) < 0)
7      st1 |= ST1_AOV;
88  }
99
1010add  1  03 1 y
r14742r14743
4040and  1  14 1 n
4141  and %d,a
4242  %sfai(d, %d);
43  s->aacc &= d;
43  aacc &= d;
4444
4545and  1  15 1 n
4646  and %c,a
47  s->aacc &= %c;
47  aacc &= %c;
4848
4949and  1  16 1 n
5050  and %d,%c
5151  %sfai(d, %d);
52  s->aacc = %c & d;
52  aacc = %c & d;
5353
5454b    3  48 3 n b
5555  b %i
r14742r14743
5757
5858bgz  3  50 3 n cb
5959  bgz %i
60  if(((INT32)s->aacc) > 0) {
60  if(((INT32)aacc) > 0) {
6161    %b(%i);
6262  }
6363
r14742r14743
6666
6767blz  3  58 3 n cb
6868  blz %i
69  if(((INT32)s->aacc) < 0) {
69  if(((INT32)aacc) < 0) {
7070    %b(%i);
7171  }
7272
7373bnz  3  60 3 n cb
7474  bnz %i
75  if(s->aacc) {
75  if(aacc) {
7676    %b(%i);
7777  }
7878
7979bv   3  78 3 n cb
8080  bv %i
81  if(s->st1 & ST1_AOV) {
82    s->st1 &= ~ST1_AOV;
81  if(st1 & ST1_AOV) {
82    st1 &= ~ST1_AOV;
8383    %b(%i);
8484  }
8585
r14742r14743
112112
113113dis  2a 10 1 n
114114  dis si0_l,%d
115  %wd(s->si[0]);
115  %wd(si[0]);
116116
117117dis  2a 11 1 n
118118  dis si0_r,%d
119  %wd(s->si[1]);
119  %wd(si[1]);
120120
121121dis  2a 12 1 n
122122  dis si1_l,%d
123  %wd(s->si[2]);
123  %wd(si[2]);
124124
125125dis  2a 13 1 n
126126  dis si1_r,%d
127  %wd(s->si[3]);
127  %wd(si[3]);
128128
129129domh 2a 20 1 n
130130  domh so0_l
131  s->so[0] = (%mo >> 24) & 0xffffff;
131  so[0] = (%mo >> 24) & 0xffffff;
132132
133133domh 2a 21 1 n
134134  domh so0_r
135  s->so[1] = (%mo >> 24) & 0xffffff;
135  so[1] = (%mo >> 24) & 0xffffff;
136136
137137domh 2a 22 1 n
138138  domh so1_l
139  s->so[2] = (%mo >> 24) & 0xffffff;
139  so[2] = (%mo >> 24) & 0xffffff;
140140
141141domh 2a 23 1 n
142142  domh so1_r
143  s->so[3] = (%mo >> 24) & 0xffffff;
143  so[3] = (%mo >> 24) & 0xffffff;
144144
145145doml 2a 24 1 n
146146  doml so0_l
r14742r14743
168168
169169idle 3  08 1 n i
170170  idle
171  s->sti |= S_IDLE;
171  sti |= S_IDLE;
172172
173173incd 2a 42 1 y
174174  incd
175175
176176lacc 1  12 1 n
177177  lacc %c
178  s->aacc = %c;
178  aacc = %c;
179179
180180lacd 1  11 1 n
181181  lacd %d
182182  %sfai(d, %d);
183  s->aacc = d;
183  aacc = d;
184184
185185lbrk 3  28 1 n
186186  lbrk %i
187187
188188lcaa 2a 08 1 y
189189  lcaa
190  s->ca = %a >> 24;
190  ca = %a >> 24;
191191
192192lcac 3  40 1 n
193193  lcac %i
194  if(((INT32)s->aacc) >= 0)
195    s->ca = %i;
194  if(((INT32)aacc) >= 0)
195    ca = %i;
196196
197197lcak 3  18 1 n
198198  lcak %i
199  s->ca = %i;
199  ca = %i;
200200
201201ldpk 2a 44 1 n f
202202  ldpk 0
203  s->st1 &= ~ST1_DBP;
203  st1 &= ~ST1_DBP;
204204
205205ldpk 2a 45 1 n f
206206  ldpk 1
207  s->st1 |= ST1_DBP;
207  st1 |= ST1_DBP;
208208
209209ld0t 2b 0c 1 y
210210  ld0t %d
211211
212212lira 2a 09 1 y
213213  lira
214  s->id = %a >> 24;
214  id = %a >> 24;
215215
216216lirk 3  20 1 n
217217  lirk %i
218  s->id = %i;
218  id = %i;
219219
220220lmhc 1  33 1 n
221221  lmhc %c
222  s->macc = ((INT64)(INT32)%c) << 16;
222  macc = ((INT64)(INT32)%c) << 16;
223223
224224lmhd 1  31 1 n
225225  lmhd %d
226  s->macc = ((INT64)(INT32)%d) << 16;
226  macc = ((INT64)(INT32)%d) << 16;
227227
228228lmld 1  32 1 n
229229  lmld %d
230  s->macc = (s->macc & ~0xffffffULL) | %d24;
230  macc = (macc & ~0xffffffULL) | %d24;
231231
232232lpc  2b 31 1 n
233233  lpc %c
234  if(s->sti & S_HOST)
234  if(sti & S_HOST)
235235    break;
236236  c = %c;
237  s->host[0] = c >> 24;
238  s->host[1] = c >> 16;
239  s->host[2] = c >> 8;
240  s->host[3] = c;
241  s->hidx = 0;
242  s->sti |= S_HOST;
237  host[0] = c >> 24;
238  host[1] = c >> 16;
239  host[2] = c >> 8;
240  host[3] = c;
241  hidx = 0;
242  sti |= S_HOST;
243243
244244lpd  2b 30 1 n
245245  lpd %d
r14742r14743
249249  d = %d24;
250250  if(d & 0x00800000)
251251    d |= 0xff000000;
252  s->creg = c = %c;
252  creg = c = %c;
253253  r = (INT64)(INT32)c * (INT64)(INT32)d;
254  s->macc = %ml + (r >> 7);
254  macc = %ml + (r >> 7);
255255
256256mac  1  25 1 y
257257  mac a,%d
258258
259259mac  1  26 1 y
260260  mac %c,a
261  s->creg = c = %c;
261  creg = c = %c;
262262  r = (INT64)(INT32)c * (INT64)(INT32)%a;
263  s->macc = %ml + (r >> 15);
263  macc = %ml + (r >> 15);
264264
265265macs 1  2e 1 y
266266  macs %c,a
267  s->creg = c = %c;
267  creg = c = %c;
268268  r = (INT64)(INT32)c * (INT64)(INT32)%a;
269  s->macc = %ml + (r >> 14);
269  macc = %ml + (r >> 14);
270270
271271macu 1  29 1 y
272272  macu %d,%c
273273  d = %d24; // d is 24bits unsigned
274  s->creg = c = %c;
274  creg = c = %c;
275275  r = (INT64)(INT32)c * (INT64)d;
276  s->macc = %ml + (r >> 7);
276  macc = %ml + (r >> 7);
277277
278278macu 1  2a 1 y
279279  macu a,%d
280280  d = %d24; // d is 24bits unsigned
281  s->creg = c = %a;
281  creg = c = %a;
282282  r = (INT64)(INT32)c * (INT64)d;
283  s->macc = %ml + (r >> 7);
283  macc = %ml + (r >> 7);
284284
285285mpy  1  21 1 y
286286  mpy %d,%c
287287  d = %d24;
288288  if(d & 0x00800000)
289289    d |= 0xff000000;
290  s->creg = c = %c;
290  creg = c = %c;
291291  r = (INT64)(INT32)c * (INT64)(INT32)d;
292  s->macc = r >> 7;
292  macc = r >> 7;
293293
294294mpy  1  22 1 y
295295  mpy %c,a
296  s->creg = c = %c;
296  creg = c = %c;
297297  r = (INT64)(INT32)c * (INT64)(INT32)%a;
298  s->macc = r >> 15;
298  macc = r >> 15;
299299
300300mpy  1  23 1 y
301301  mpy creg,%d
302302
303303mpyu 1  28 1 y
304304  mpyu %d,%c
305  s->creg = c = %c;
305  creg = c = %c;
306306  d = %d24; // d is 24bits unsigned
307307  r = (INT64)(INT32)c * (INT64)d;
308  s->macc = r >> 7;
308  macc = r >> 7;
309309
310310neg  1  02 1 n
311311  neg
r14742r14743
313313or   1  17 1 n
314314  or %d,a
315315  %sfai(d, %d);
316  s->aacc |= d;
316  aacc |= d;
317317
318318or   1  18 1 n
319319  or %c,a
320  s->aacc |= %c;
320  aacc |= %c;
321321
322322or   1  19 1 n
323323  or %d,%c
324324  %sfai(d, %d);
325  s->aacc = %c | d;
325  aacc = %c | d;
326326
327327raov 2a 38 1 n
328328  raov
329329
330330rde  1  39 1 n
331331  rde %c
332  if(s->sti & (S_READ|S_WRITE))
332  if(sti & (S_READ|S_WRITE))
333333    break;
334  s->xoa = %c;
335  tms57002_xm_init(s);
336  s->sti |= S_READ;
334  xoa = %c;
335  xm_init();
336  sti |= S_READ;
337337
338338ref  2a 0e 1 n
339339  ref
r14742r14743
341341
342342rmom 2a 40 1 n f
343343  rmom
344  s->st1 &= ~ST1_MOVM;
344  st1 &= ~ST1_MOVM;
345345
346346rmov 2a 3a 1 n
347347  rmov
348  s->st1 &= ~ST1_MOV;
348  st1 &= ~ST1_MOV;
349349
350350rnd  2a 68 1 n f
351351  rnd 48
352  s->st1 = (s->st1 & ~ST1_RND) | (0 << ST1_RND_SHIFT);
352  st1 = (st1 & ~ST1_RND) | (0 << ST1_RND_SHIFT);
353353
354354rnd  2a 69 1 n f
355355  rnd 32
356  s->st1 = (s->st1 & ~ST1_RND) | (1 << ST1_RND_SHIFT);
356  st1 = (st1 & ~ST1_RND) | (1 << ST1_RND_SHIFT);
357357
358358rnd  2a 6a 1 n f
359359  rnd 24
360  s->st1 = (s->st1 & ~ST1_RND) | (2 << ST1_RND_SHIFT);
360  st1 = (st1 & ~ST1_RND) | (2 << ST1_RND_SHIFT);
361361
362362rnd  2a 6b 1 n f
363363  rnd 20
364  s->st1 = (s->st1 & ~ST1_RND) | (3 << ST1_RND_SHIFT);
364  st1 = (st1 & ~ST1_RND) | (3 << ST1_RND_SHIFT);
365365
366366rnd  2a 6c 1 n f
367367  rnd 16
368  s->st1 = (s->st1 & ~ST1_RND) | (4 << ST1_RND_SHIFT);
368  st1 = (st1 & ~ST1_RND) | (4 << ST1_RND_SHIFT);
369369
370370rnd  2a 6d 1 n f
371371  rnd <5>
372  s->st1 = (s->st1 & ~ST1_RND) | (5 << ST1_RND_SHIFT);
372  st1 = (st1 & ~ST1_RND) | (5 << ST1_RND_SHIFT);
373373
374374rnd  2a 6e 1 n f
375375  rnd <6>
376  s->st1 = (s->st1 & ~ST1_RND) | (6 << ST1_RND_SHIFT);
376  st1 = (st1 & ~ST1_RND) | (6 << ST1_RND_SHIFT);
377377
378378rnd  2a 6f 1 n f
379379  rnd <7>
380  s->st1 = (s->st1 & ~ST1_RND) | (7 << ST1_RND_SHIFT);
380  st1 = (st1 & ~ST1_RND) | (7 << ST1_RND_SHIFT);
381381
382382rptk 3  10 1 n
383383  rptk %i
384  s->rptc_next = %i;
384  rptc_next = %i;
385385
386386sacc 2a 01 1 y
387387  sacc %c
r14742r14743
393393
394394scrm 2a 48 1 n f
395395  scrm 32
396  s->st1 = (s->st1 & ~ST1_CRM) | (0 << ST1_CRM_SHIFT);
396  st1 = (st1 & ~ST1_CRM) | (0 << ST1_CRM_SHIFT);
397397
398398scrm 2a 49 1 n f
399399  scrm 16h
400  s->st1 = (s->st1 & ~ST1_CRM) | (1 << ST1_CRM_SHIFT);
400  st1 = (st1 & ~ST1_CRM) | (1 << ST1_CRM_SHIFT);
401401
402402scrm 2a 4a 1 n f
403403  scrm 16l
404  s->st1 = (s->st1 & ~ST1_CRM) | (2 << ST1_CRM_SHIFT);
404  st1 = (st1 & ~ST1_CRM) | (2 << ST1_CRM_SHIFT);
405405
406406scrm 2a 4b 1 n f
407407  scrm <3>
408  s->st1 = (s->st1 & ~ST1_CRM) | (3 << ST1_CRM_SHIFT);
408  st1 = (st1 & ~ST1_CRM) | (3 << ST1_CRM_SHIFT);
409409
410410sfai 2b 54 1 n f
411411  sfai 0
412  s->st1 &= ~ST1_SFAI;
412  st1 &= ~ST1_SFAI;
413413
414414sfai 2b 55 1 n f
415415  sfai -1
416  s->st1 |= ST1_SFAI;
416  st1 |= ST1_SFAI;
417417
418418sfao 2a 50 1 n f
419419  sfao 0
420  s->st1 &= ~ST1_SFAO;
420  st1 &= ~ST1_SFAO;
421421
422422sfao 2a 51 1 n f
423423  sfao 7
424  s->st1 |= ST1_SFAI;
424  st1 |= ST1_SFAI;
425425
426426sfma 2b 58 1 n f
427427  sfma 0
428  s->st1 = (s->st1 & ~ST1_SFMA) | (0 << ST1_SFMA_SHIFT);
428  st1 = (st1 & ~ST1_SFMA) | (0 << ST1_SFMA_SHIFT);
429429
430430sfma 2b 59 1 n f
431431  sfma 2
432  s->st1 = (s->st1 & ~ST1_SFMA) | (1 << ST1_SFMA_SHIFT);
432  st1 = (st1 & ~ST1_SFMA) | (1 << ST1_SFMA_SHIFT);
433433
434434sfma 2b 5a 1 n f
435435  sfma 4
436  s->st1 = (s->st1 & ~ST1_SFMA) | (2 << ST1_SFMA_SHIFT);
436  st1 = (st1 & ~ST1_SFMA) | (2 << ST1_SFMA_SHIFT);
437437
438438sfma 2b 5b 1 n f
439439  sfma -16
440  s->st1 = (s->st1 & ~ST1_SFMA) | (3 << ST1_SFMA_SHIFT);
440  st1 = (st1 & ~ST1_SFMA) | (3 << ST1_SFMA_SHIFT);
441441
442442sfml 1  34 1 y
443443  sfml
444  s->macc = (s->macc & 0x8000000000000ULL) | ((s->macc << 1) & 0x7ffffffffffffULL);
444  macc = (macc & 0x8000000000000ULL) | ((macc << 1) & 0x7ffffffffffffULL);
445445
446446sfmo 2a 60 1 n f
447447  sfmo 0
448  s->st1 = (s->st1 & ~ST1_SFMO) | (0 << ST1_SFMO_SHIFT);
448  st1 = (st1 & ~ST1_SFMO) | (0 << ST1_SFMO_SHIFT);
449449
450450sfmo 2a 61 1 n f
451451  sfmo 2
452  s->st1 = (s->st1 & ~ST1_SFMO) | (1 << ST1_SFMO_SHIFT);
452  st1 = (st1 & ~ST1_SFMO) | (1 << ST1_SFMO_SHIFT);
453453
454454sfmo 2a 62 1 n f
455455  sfmo 4
456  s->st1 = (s->st1 & ~ST1_SFMO) | (2 << ST1_SFMO_SHIFT);
456  st1 = (st1 & ~ST1_SFMO) | (2 << ST1_SFMO_SHIFT);
457457
458458sfmo 2a 63 1 n f
459459  sfmo -8
460  s->st1 = (s->st1 & ~ST1_SFMO) | (3 << ST1_SFMO_SHIFT);
460  st1 = (st1 & ~ST1_SFMO) | (3 << ST1_SFMO_SHIFT);
461461
462462sfmr 1  35 1 y
463463  sfmr
r14742r14743
483483
484484smom 2a 41 1 n f
485485  smom
486  s->st1 |= ST1_MOVM;
486  st1 |= ST1_MOVM;
487487
488488srbd 2a 0f 1 y
489489  srbd %d
490  %wd(s->xrd);
490  %wd(xrd);
491491
492492std1 2a 0d 1 y
493493  std1 %d
r14742r14743
512512
513513wre  1  38 1 n
514514  wre %d,%c
515  if(s->sti & (S_READ|S_WRITE))
515  if(sti & (S_READ|S_WRITE))
516516    break;
517  s->xwr = %d24;
518  s->xoa = %c;
519  tms57002_xm_init(s);
520  s->sti |= S_WRITE;
517  xwr = %d24;
518  xoa = %c;
519  xm_init();
520  sti |= S_WRITE;
521521
522522xor  1  1a 1 n
523523  xor %d,a
src/emu/cpu/tms57002/tms57002.h
r14742r14743
1/***************************************************************************
2
3    tms57002.h
4
5    TMS57002 "DASP" emulator.
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
139#pragma once
240
341#ifndef __TMS57002_H__
r14742r14743
341#define __TMS57002_H__
442
43class tms57002_device : public cpu_device {
44public:
45   tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
546
47   DECLARE_READ8_MEMBER(data_r);
48   DECLARE_WRITE8_MEMBER(data_w);
49
50   DECLARE_WRITE8_MEMBER(pload_w);
51   DECLARE_WRITE8_MEMBER(cload_w);
52   DECLARE_READ8_MEMBER(empty_r);
53   DECLARE_READ8_MEMBER(dready_r);
54
55   void sync();
56
57protected:
58   virtual void device_start();
59   virtual void device_reset();
60   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
61   virtual UINT32 execute_min_cycles() const;
62   virtual UINT32 execute_max_cycles() const;
63   virtual UINT32 execute_input_lines() const;
64   virtual void execute_run();
65   virtual UINT32 disasm_min_opcode_bytes() const;
66   virtual UINT32 disasm_max_opcode_bytes() const;
67   virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
68
69private:
70   enum {
71      IN_PLOAD = 0x00000001,
72      IN_CLOAD = 0x00000002,
73      SU_CVAL  = 0x00000004,
74      SU_MASK  = 0x00000018, SU_ST0 = 0x00, SU_ST1 = 0x08, SU_PRG = 0x10,
75      S_IDLE   = 0x00000020,
76      S_READ   = 0x00000040,
77      S_WRITE  = 0x00000080,
78      S_BRANCH = 0x00000100,
79      S_HOST   = 0x00000200
80   };
81
82   enum {
83      ST0_INCS = 0x000001,
84      ST0_DIRI = 0x000002,
85      ST0_FI   = 0x000004,
86      ST0_SIM  = 0x000008,
87      ST0_PLRI = 0x000020,
88      ST0_PBCI = 0x000040,
89      ST0_DIRO = 0x000080,
90      ST0_FO   = 0x000100,
91      ST0_SOM  = 0x000600,
92      ST0_PLRO = 0x000800,
93      ST0_PBCO = 0x001000,
94      ST0_CNS  = 0x002000,
95      ST0_WORD = 0x004000,
96      ST0_SEL  = 0x008000,
97      ST0_M    = 0x030000, ST0_M_64K = 0x000000, ST0_M_256K = 0x010000, ST0_M_1M = 0x020000,
98      ST0_SRAM = 0x200000,
99
100      ST1_AOV  = 0x000001,
101      ST1_SFAI = 0x000002,
102      ST1_SFAO = 0x000004,
103      ST1_MOVM = 0x000020,
104      ST1_MOV  = 0x000040,
105      ST1_SFMA = 0x000180, ST1_SFMA_SHIFT = 7,
106      ST1_SFMO = 0x001800, ST1_SFMO_SHIFT = 11,
107      ST1_RND  = 0x038000, ST1_RND_SHIFT = 15,
108      ST1_CRM  = 0x0C0000, ST1_CRM_SHIFT = 18, ST1_CRM_32 = 0x000000, ST1_CRM_16H = 0x040000, ST1_CRM_16L = 0x080000,
109      ST1_DBP  = 0x100000,
110      ST1_CAS  = 0x200000,
111
112      ST1_CACHE = ST1_SFAI|ST1_SFAO|ST1_MOVM|ST1_SFMA|ST1_SFMO|ST1_RND|ST1_CRM|ST1_DBP
113   };
114
115
116   enum { BR_UB, BR_CB, BR_IDLE };
117
118   enum { IBS = 8192, HBS = 4096 };
119
120   struct icd {
121      unsigned short op;
122      short next;
123      unsigned char param;
124   };
125
126   struct hcd {
127      unsigned int st1;
128      short ipc;
129      short next;
130   };
131
132   struct cd {
133      short hashbase[256];
134      hcd hashnode[HBS];
135      icd inst[IBS];
136      int hused, iused;
137   };
138
139   struct cstate {
140      int branch;
141      short hnode;
142      short ipc;
143   };
144
145   INT64 macc;
146
147   UINT32 cmem[256];
148   UINT32 dmem0[256];
149   UINT32 dmem1[32];
150
151   UINT32 si[4], so[4];
152
153   UINT32 st0, st1, sti;
154   UINT32 aacc, xoa, xba, xwr, xrd, creg;
155
156   UINT8 pc, ca, id, ba0, ba1, rptc, rptc_next, sa;
157
158   UINT32 xm_adr;
159
160   UINT8 host[4], hidx, allow_update;
161
162   cd cache;
163
164   const address_space_config program_config, data_config;
165
166   address_space *program, *data;
167   int icount;
168   int unsupported_inst_warning;
169
170   void decode_error(UINT32 opcode);
171   void decode_cat1(UINT32 opcode, unsigned short *op, cstate *cs);
172   void decode_cat2_pre(UINT32 opcode, unsigned short *op, cstate *cs);
173   void decode_cat3(UINT32 opcode, unsigned short *op, cstate *cs);
174   void decode_cat2_post(UINT32 opcode, unsigned short *op, cstate *cs);
175
176   inline int xmode(UINT32 opcode, char type);
177   inline int sfao(UINT32 st1);
178   inline int dbp(UINT32 st1);
179   inline int crm(UINT32 st1);
180   inline int sfai(UINT32 st1);
181   inline int sfmo(UINT32 st1);
182   inline int rnd(UINT32 st1);
183   inline int movm(UINT32 st1);
184   inline int sfma(UINT32 st1);
185
186   const char *get_memadr(UINT32 opcode, char type);
187
188   void xm_init();
189   void xm_step_read();
190   void xm_step_write();
191   INT64 macc_to_output_0(INT64 rounding, UINT64 rmask);
192   INT64 macc_to_output_1(INT64 rounding, UINT64 rmask);
193   INT64 macc_to_output_2(INT64 rounding, UINT64 rmask);
194   INT64 macc_to_output_3(INT64 rounding, UINT64 rmask);
195   INT64 macc_to_output_0s(INT64 rounding, UINT64 rmask);
196   INT64 macc_to_output_1s(INT64 rounding, UINT64 rmask);
197   INT64 macc_to_output_2s(INT64 rounding, UINT64 rmask);
198   INT64 macc_to_output_3s(INT64 rounding, UINT64 rmask);
199   INT64 check_macc_overflow_0();
200   INT64 check_macc_overflow_1();
201   INT64 check_macc_overflow_2();
202   INT64 check_macc_overflow_3();
203   INT64 check_macc_overflow_0s();
204   INT64 check_macc_overflow_1s();
205   INT64 check_macc_overflow_2s();
206   INT64 check_macc_overflow_3s();
207   void cache_flush();
208   void add_one(cstate *cs, unsigned short op, UINT8 param);
209   void decode_one(UINT32 opcode, cstate *cs, void (tms57002_device::*dec)(UINT32 opcode, unsigned short *op, cstate *cs));
210   short get_hash(unsigned char adr, UINT32 st1, short *pnode);
211   short get_hashnode(unsigned char adr, UINT32 st1, short pnode);
212   int decode_get_pc();
213};
214
6215enum {
7216   TMS57002_PC=1
8217};
9218
10DECLARE_LEGACY_CPU_DEVICE(TMS57002, tms57002);
219extern const device_type TMS57002;
11220
12WRITE8_DEVICE_HANDLER(tms57002_data_w);
13READ8_DEVICE_HANDLER(tms57002_data_r);
14
15WRITE8_DEVICE_HANDLER(tms57002_pload_w);
16WRITE8_DEVICE_HANDLER(tms57002_cload_w);
17READ8_DEVICE_HANDLER(tms57002_empty_r);
18READ8_DEVICE_HANDLER(tms57002_dready_r);
19
20void tms57002_sync(device_t *cpu);
21
22221#endif
23222
src/emu/cpu/tms57002/tms57kdec.c
r14742r14743
1/***************************************************************************
2
3    tms57kdec.c
4
5    TMS57002 "DASP" emulator.
6
7****************************************************************************
8
9    Copyright Olivier Galibert
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
140#include "emu.h"
241#include "debugger.h"
342#include "tms57002.h"
4#include "tms57kpr.h"
543
6#ifdef __GNUC__
7#define noinline __attribute__((noinline))
8#else
9#define noinline /* */
10#endif
44inline int tms57002_device::xmode(UINT32 opcode, char type)
45{
46   if(((opcode & 0x400) && (type == 'c')) || (!(opcode & 0x400) && (type == 'd'))) {
47      if(opcode & 0x100)
48         return 0;
49      else if(opcode & 0x80)
50         return 2;
51      else
52         return 1;
53   } else if(opcode & 0x200)
54      return 2;
1155
12static void tms57002_decode_error(tms57002_t *s, UINT32 opcode)
56   return 1;
57}
58
59inline int tms57002_device::sfao(UINT32 st1)
1360{
61   return st1 & ST1_SFAO ? 1 : 0;
62}
63
64inline int tms57002_device::dbp(UINT32 st1)
65{
66   return st1 & ST1_DBP ? 1 : 0;
67}
68
69inline int tms57002_device::crm(UINT32 st1)
70{
71   return (st1 & ST1_CRM) >> ST1_CRM_SHIFT;
72}
73
74inline int tms57002_device::sfai(UINT32 st1)
75{
76   return st1 & ST1_SFAI ? 1 : 0;
77}
78
79inline int tms57002_device::sfmo(UINT32 st1)
80{
81   return (st1 & ST1_SFMO) >> ST1_SFMO_SHIFT;
82}
83
84inline int tms57002_device::rnd(UINT32 st1)
85{
86   return (st1 & ST1_RND) >> ST1_RND_SHIFT;
87}
88
89inline int tms57002_device::movm(UINT32 st1)
90{
91   return st1 & ST1_MOVM ? 1 : 0;
92}
93
94inline int tms57002_device::sfma(UINT32 st1)
95{
96   return (st1 & ST1_SFMA) >> ST1_SFMA_SHIFT;
97}
98
99void tms57002_device::decode_error(UINT32 opcode)
100{
14101   char buf[256];
15102   UINT8 opr[3];
16   if(s->unsupported_inst_warning)
103   if(unsupported_inst_warning)
17104      return;
18105
19   s->unsupported_inst_warning = 1;
106   unsupported_inst_warning = 1;
20107   opr[0] = opcode;
21108   opr[1] = opcode >> 8;
22109   opr[2] = opcode >> 16;
23110
24   CPU_DISASSEMBLE_NAME(tms57002)(0, buf, s->pc, opr, opr, 0);
111   disasm_disassemble(buf, pc, opr, opr, 0);
25112   popmessage("tms57002: %s - Contact Mamedev", buf);
26113}
27114
28void tms57002_decode_cat1(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
115void tms57002_device::decode_cat1(UINT32 opcode, unsigned short *op, cstate *cs)
29116{
30117   switch(opcode >> 18) {
31118   case 0x00: // nop
r14742r14743
36123#undef CDEC1
37124
38125   default:
39      tms57002_decode_error(s, opcode);
126      decode_error(opcode);
40127      break;
41128   }
42129}
43130
44void tms57002_decode_cat2_pre(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
131void tms57002_device::decode_cat2_pre(UINT32 opcode, unsigned short *op, cstate *cs)
45132{
46133   switch((opcode >> 11) & 0x7f) {
47134   case 0x00: // nop
r14742r14743
52139#undef CDEC2A
53140
54141   default:
55      tms57002_decode_error(s, opcode);
142      decode_error(opcode);
56143      break;
57144   }
58145}
59146
60void tms57002_decode_cat2_post(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
147void tms57002_device::decode_cat2_post(UINT32 opcode, unsigned short *op, cstate *cs)
61148{
62149   switch((opcode >> 11) & 0x7f) {
63150   case 0x00: // nop
r14742r14743
68155#undef CDEC2B
69156
70157   default:
71      tms57002_decode_error(s, opcode);
158      decode_error(opcode);
72159      break;
73160   }
74161}
75162
76void tms57002_decode_cat3(tms57002_t *s, UINT32 opcode, unsigned short *op, cstate *cs)
163void tms57002_device::decode_cat3(UINT32 opcode, unsigned short *op, cstate *cs)
77164{
78165   switch((opcode >> 11) & 0x7f) {
79166   case 0x00: // nop
r14742r14743
84171#undef CDEC3
85172
86173   default:
87      tms57002_decode_error(s, opcode);
174      decode_error(opcode);
88175      break;
89176   }
90177}
src/emu/sound/votrax.c
r14742r14743
303303   m_subphoneme_period = UINT32(ceil(period * double(m_master_clock_freq)));
304304}
305305
306//-------------------------------------------------
307//  bits_to_caps - compute the final capacity from
308//  a grid of bit-selected caps
309//-------------------------------------------------
306310
311double votrax_sc01_device::bits_to_caps(UINT32 value, int caps_count, const double *caps_values)
312{
313   double sum = 0;
314   for(int i=0; i<caps_count; i++)
315      if(value & (1<<i))
316         sum += caps_values[i];
317   return sum;
318}
319
320/*
321  Playing with analog filters, or where all the magic filter formulas are coming from.
322
323  First you start with an analog circuit, for instance this one:
324
325  |                     +--[R2]--+
326  |                     |        |
327  |                     +--|C2|--+<V1     +--|C3|--+
328  |                     |        |        |        |
329  |  Vi   +--[R1]--+    |  |\    |        |  |\    |
330  |  -----+        +----+--+-\   |        +--+-\   |
331  |       +--|C1|--+       |  >--+--[Rx]--+  |  >--+----- Vo
332  |                |     0-++/             0-++/   |
333  |                |       |/    +--[R0]--+  |/    |
334  |                |             |        |        |
335  |                |             |    /|  |        |
336  |                |             |   /-+--+--[R0]--+
337  |                +--[R4]-------+--<  |
338  |                            V2^   \++-0
339  |                                   \|
340
341  You need to determine the transfer function H(s) of the circuit, which is
342  defined as the ratio Vo/Vi.  To do that, you use some properties:
343
344  - The intensity through an element is equal to the voltage
345    difference through the element divided by the impedence
346
347  - The impedence of a resistance is equal to its resistance
348
349  - The impedence of a capacitor is 1/(s*C) where C is its capacitance
350
351  - The impedence of elements in series is the sum of the impedences
352
353  - The impedence of elements in parallel is the inverse of the sum of
354    the inverses
355
356  - The sum of all intensities flowing into a node is 0 (there's no
357    charge accumulation in a wire)
358
359  - An operational amplifier in looped mode is an interesting beast:
360    the intensity at its two inputs is always 0, and the voltage is
361    forced identical between the inputs.  In our case, since the '+'
362    inputs are all tied to ground, that means that the '-' inputs are at
363    voltage 0, intensity 0.
364
365  From here we can build some equations.  Noting:
366  X1 = 1/(1/R1 + s*C1)
367  X2 = 1/(1/R2 + s*C2)
368  X3 = 1/(s*C3)
369
370  Then computing the intensity flow at each '-' input we have:
371  Vi/X1 + V2/R4 + V1/X2 = 0
372  V2/R0 + Vo/R0 = 0
373  V1/Rx + Vo/X3 = 0
374
375  Wrangling the equations, one eventually gets:
376  |                            1 + s * C1*R1
377  | Vo/Vi = H(s) = (R4/R1) * -------------------------------------------
378  |                            1 + s * C3*Rx*R4/R2 + s^2 * C2*C3*Rx*R4
379
380  To check the mathematics between the 's' stuff, check "Laplace
381  transform".  In short, it's a nice way of manipulating derivatives
382  and integrals without having to manipulate derivatives and
383  integrals.
384
385  With that transfer function, we first can compute what happens to
386  every frequency in the input signal.  You just compute H(2i*pi*f)
387  where f is the frequency, which will give you a complex number
388  representing the amplitude and phase effect.  To get the usual dB
389  curves, compute 20*log10(abs(v))).
390
391  Now, once you have an analog transfer function, you can build a
392  digital filter from it using what is called the bilinear transform.
393
394  In our case, we have an analog filter with the transfer function:
395  |                 1 + k[0]*s
396  |        H(s) = -------------------------
397  |                 1 + k[1]*s + k[2]*s^2
398
399  We can always reintroduce the global multipler later, and it's 1 in
400  most of our cases anyway.
401
402  The we pose:
403  |                    z-1
404  |        s(z) = zc * ---
405  |                    z+1
406
407  where zc = 2*pi*fr/tan(pi*fr/fs)
408  with fs = sampling frequency
409  and fr = most interesting frequency
410
411  Then we rewrite H in function of negative integer powers of z.
412
413  Noting m0 = zc*k[0], m1 = zc*k[1], m2=zc*zc*k[2],
414
415  a little equation wrangling then gives:
416
417  |                 (1+m0)    + (3+m0)   *z^-1 + (3-m0)   *z^-2 +    (1-m0)*z^-3
418  |        H(z) = ----------------------------------------------------------------
419  |                 (1+m1+m2) + (3+m1-m2)*z^-1 + (3-m1-m2)*z^-2 + (1-m1+m2)*z^-3
420
421  That beast in the digital transfer function, of which you can
422  extract response curves by posing z = exp(2*i*pi*f/fs).
423
424  Note that the bilinear transform is an approximation, and H(z(f)) =
425  H(s(f)) only at frequency fr.  And the shape of the filter will be
426  better respected around fr.  If you look at the curves of the
427  filters we're interested in, the frequency:
428  fr = sqrt(abs(k[0]*k[1]-k[2]))/(2*pi*k[2])
429
430  which is a (good) approximation of the filter peak position is a
431  good choice.
432
433  Note that terminology wise, the "standard" bilinear transform is
434  with fr = fs/2, and using a different fr is called "pre-warping".
435
436  So now we have a digital transfer function of the generic form:
437
438  |                 a[0] + a[1]*z^-1 + a[2]*z^-2 + a[3]*z^-3
439  |        H(z) = --------------------------------------------
440  |                 b[0] + b[1]*z^-1 + b[2]*z^-2 + b[3]*z^-3
441
442  The magic then is that the powers of z represent time in samples.
443  Noting x the input stream and y the output stream, you have:
444  H(z) = y(z)/x(z)
445
446  or in other words:
447  y*b[0]*z^0 + y*b[1]*z^-1 + y*b[2]*z^-2 + y*b[3]*z^-3 = x*a[0]*z^0 + x*a[1]*z^-1 + x*a[2]*z^-2 + x*a[3]*z^-3
448
449  i.e.
450
451  y*z^0 = (x*a[0]*z^0 + x*a[1]*z^-1 + x*a[2]*z^-2 + x*a[3]*z^-3 - y*b[1]*z^-1 - y*b[2]*z^-2 - y*b[3]*z^-3) / b[0]
452
453  and powers of z being time in samples,
454
455  y[0] = (x[0]*a[0] + x[-1]*a[1] + x[-2]*a[2] + x[-3]*a[3] - y[-1]*b[1] - y[-2]*b[2] - y[-3]*b[3]) / b[0]
456
457  So you have a filter you can apply.  Note that this is why you want
458  negative powers of z.  Positive powers would mean looking into the
459  future (which is possible in some cases, in particular with x, and
460  has some very interesting properties, but is not very useful in
461  analog circuit simulation).
462
463  Note that if you have multiple inputs, all this stuff is linear.
464  Or, in other words, you just have to split it in multiple circuits
465  with only one input connected each time and sum the results.  It
466  will be correct.
467
468  Also, since we're in practice in a dynamic system, for an amplifying
469  filter (i.e. where things like r4/r1 is not 1), it's better to
470  proceed in two steps:
471
472  - amplify the input by the current value of the coefficient, and
473    historize it
474  - apply the now non-amplifying filter to the historized amplified
475    input
476
477  That way reduces the probability of the output boucing all over the
478  place.
479
480*/
481
482
483//-------------------------------------------------------------
484//  filter_s_to_z - analog to digital filter transformation
485//-------------------------------------------------------------
486
487void votrax_sc01_device::filter_s_to_z(const double *k, double fs, double *a, double *b)
488{
489   double fpeak = sqrt(fabs(k[0]*k[1]-k[2]))/(2*M_PI*k[2]);
490   double zc = 2*M_PI*fpeak/tan(M_PI*fpeak/fs);
491
492    double m0 = zc*k[0];
493    double m1 = zc*k[1];
494    double m2 = zc*zc*k[2];
495
496   a[0] = 1+m0;
497   a[1] = 3+m0;
498   a[2] = 3-m0;
499   a[3] = 1-m0;
500   b[0] = 1+m1+m2;
501   b[1] = 3+m1-m2;
502   b[2] = 3-m1-m2;
503   b[3] = 1-m1+m2;
504}
505
506
507//-------------------------------------------------------------
508//  apply_filter - apply the digital filter (before output
509//                 shifting, so y[0] is one step in the past)
510//-------------------------------------------------------------
511double votrax_sc01_device::apply_filter(const double *x, const double *y, const double *a, const double *b)
512{
513   return (x[0]*a[0] + x[1]*a[1] + x[2]*a[2] + x[3]*a[3] - y[0]*b[1] - y[1]*b[2] - y[2]*b[3]) / b[0];
514}
515
516
517//-------------------------------------------------------------
518//  shift_hist - shift a value in an output history
519//-------------------------------------------------------------
520
521void votrax_sc01_device::shift_hist(double val, double *hist_array, int hist_size)
522{
523   for(int i = 0; i < hist_size-1; i++)
524      hist_array[hist_size-1-i] = hist_array[hist_size-2-i];
525   hist_array[0] = val;
526}
527
528
307529//-------------------------------------------------
308530//  sound_stream_update - handle update requests
309531//  for our sound stream
r14742r14743
320542   {
321543      // run the digital logic at the master clock rate
322544      double glottal_out = 0;
323      double noise_out = 0;
545      UINT8 noise_out_digital = 0;
324546      for (int curclock = 0; curclock < clocks_per_sample; curclock++)
325547      {
326548if (LOG_TIMING | LOG_LOWPARAM | LOG_GLOTTAL | LOG_TRANSITION)
r14742r14743
7841006         }
7851007         
7861008         // compute final noise out signal
787         UINT8 noise_out_digital = !(BIT(m_shift_252, 13) & (m_fgate | (m_va == 0)));
788         noise_out = noise_out_digital ? (double(m_fa) / 15.0f) : 0;
1009         noise_out_digital = !(BIT(m_shift_252, 13) & (m_fgate | (m_va == 0)));
7891010      }
790         
791      // amplify the glottal pulse by the VA and cheesily mix in the noise just to
792      // help see what's going on
793      double current = 0.5 * glottal_out * (double(m_va) / 15.0f) + 0.5 * noise_out;
1011
1012      // TODO: cache the filters
1013      // filter coefs
1014      double k[3], a[4], b[4];
1015
1016      // base frequencies
1017      double fc = m_master_clock_freq / 30.0; // Nominal is 20KHz
1018      double fs = stream.sample_rate();
1019
1020      // useful temporaries
1021      double rcp, rcq, rca;
1022
1023      // amplification stage
1024      static const double va_caps[4] = { 27, 53, 107, 213 };
1025      double va_out = glottal_out * bits_to_caps(m_va, 4, va_caps) / 400;
1026
1027      shift_hist(va_out, m_va_hist, 4);
1028
1029
1030      // noise shaping
1031      static const double fa_caps[4] = { 27, 53, 107, 213 };
1032      rcp = bits_to_caps(m_fa,  4, fa_caps);
1033
1034      shift_hist(-noise_out_digital * 400*rcp/(358.0*100000*566*(fc*rcp*1e-12 + 1.0/100000 + 1.0/2000)), m_ni_hist, 4);
1035
1036      k[0] = 400/(fc*358);
1037      k[1] = 400*400/(fc*358*566);
1038      k[2] = 400*400/(fc*fc*358*358);
1039
1040      filter_s_to_z(k, fs, a, b);
1041      double no_out = apply_filter(m_ni_hist, m_no_hist, a, b);
1042      shift_hist(no_out, m_no_hist, 4);
1043
1044
1045      // stage 1 filter
1046
1047      static const double s1_p_caps[4] = { 16.4, 33, 66, 130 };
1048      rcp = 24 + bits_to_caps(m_f1, 4, s1_p_caps);
1049      rcq = 20;
1050
1051      k[0] = 253/(fc*270);
1052      k[1] = 1080*rcq/(fc*270*rcp);
1053      k[2] = 1080*1080/(fc*fc*270*rcp);
1054
1055      filter_s_to_z(k, fs, a, b);
1056      double s1_out = apply_filter(m_va_hist, m_s1_hist, a, b);
1057      shift_hist(s1_out, m_s1_hist, 4);
1058
1059
1060      // stage 2 filter, glottal half
1061
1062      static const double s2_p_caps[5] = { 14, 28, 56, 113, 226 };
1063      static const double s2_q_caps[4] = { 23, 46, 93, 186 };
1064      rcp = 46 + bits_to_caps(m_f2,  5, s2_p_caps);
1065      rcq = 20 + bits_to_caps(m_f2q, 4, s2_q_caps);;
1066
1067      k[0] = 400/(fc*470);
1068      k[1] = 620*rcq/(fc*470*rcp);
1069      k[2] = 620*620/(fc*fc*470*rcp);
1070
1071      filter_s_to_z(k, fs, a, b);
1072      double s2g_out = apply_filter(m_s1_hist, m_s2g_hist, a, b);
1073      shift_hist(s2g_out, m_s2g_hist, 4);
1074
1075
1076      // stage 2 filter, noise half (rcp and rcq kept from stage 2 glottal)
1077
1078      static const double s2_n_caps[5] = { 19, 38, 76, 152 };
1079      rca = bits_to_caps(m_fc, 4, s2_n_caps);
1080
1081      shift_hist(-no_out*rcq*rca/(470*rcp), m_s2ni_hist, 4);
1082
1083      k[0] = 400/(fc*470);
1084      k[1] = 620*rcq/(fc*470*rcp);
1085      k[2] = 620*620/(fc*fc*470*rcp);
1086
1087      filter_s_to_z(k, fs, a, b);
1088      double s2n_out = apply_filter(m_s2ni_hist, m_s2n_hist, a, b);
1089      shift_hist(s2n_out, m_s2n_hist, 4);
1090
1091      // sum the stage 2 outputs
1092      double s2_out = s2g_out + s2n_out;
1093      shift_hist(s2_out, m_s2_hist, 4);
1094
1095
1096      // stage 3 filter
1097
1098      static const double s3_p_caps[4] = { 21, 42, 84, 168 };
1099      rcp = 76 + bits_to_caps(m_f3, 4, s3_p_caps);
1100      rcq = 20;
1101
1102      k[0] = 0;
1103      k[1] = 420*rcq/(fc*390*rcp);
1104      k[2] = 420*420/(fc*fc*390*rcp);
1105
1106      filter_s_to_z(k, fs, a, b);
1107      double s3_out = apply_filter(m_s2_hist, m_s3_hist, a, b);
1108      shift_hist(s3_out, m_s3_hist, 4);
1109
1110
1111      // stage 4 filter, noise injection
1112
1113      // The resulting non-amplifying filter is identical, so we
1114      // inject instead of splitting
1115
1116      static const double s4_n_caps[4] = { 24, 48, 96, 192 };
1117      rca = 115 + bits_to_caps(~m_fc, 4, s4_n_caps);
1118
1119      shift_hist(s3_out + no_out*470/rca, m_s4i_hist, 4);
1120
1121
1122      // stage 4 filter
1123
1124      rcp = 30;
1125      rcq = 20;
1126
1127      k[0] = 0;
1128      k[1] = 338*rcq/(fc*470*rcp);
1129      k[2] = 338*338/(fc*fc*470*rcp);
1130
1131      filter_s_to_z(k, fs, a, b);
1132      double s4_out = apply_filter(m_s4i_hist, m_s4_hist, a, b);
1133      shift_hist(s4_out, m_s4_hist, 4);
1134
7941135     
795      // TODO: apply high pass noise shaping to noise_out (see figure 8)
796     
797      // TODO: apply resonsant filters based on m_f1, m_f2, m_f2q and
798      // inject noise based on m_fc (see figure 9)
799     
800      // TODO: apply final filter f3 and inject inverse of noise based on ~m_fc (see figure 5)
801     
8021136      // TODO: apply closure circuit (undocumented)
8031137     
8041138      // output the current result
805      *dest++ = INT16(current * 32767.0);
1139      *dest++ = INT16(s4_out * 4000);
8061140   }
8071141}
8081142
r14742r14743
9051239   save_item(NAME(m_noise_clock));
9061240   save_item(NAME(m_shift_252));
9071241   save_item(NAME(m_counter_250));
1242
1243   // save filter histories
1244   save_item(NAME(m_ni_hist));
1245   save_item(NAME(m_no_hist));
1246   save_item(NAME(m_va_hist));
1247   save_item(NAME(m_s1_hist));
1248   save_item(NAME(m_s2g_hist));
1249   save_item(NAME(m_s2n_hist));
1250   save_item(NAME(m_s2ni_hist));
1251   save_item(NAME(m_s2_hist));
1252   save_item(NAME(m_s3_hist));
1253   save_item(NAME(m_s4i_hist));
1254   save_item(NAME(m_s4_hist));
9081255}
9091256
9101257
r14742r14743
9741321   m_noise_clock = 0;
9751322   m_shift_252 = 0;
9761323   m_counter_250 = 0;
1324
1325   // reset filter histories
1326   memset(m_ni_hist,   0, sizeof(m_ni_hist));
1327   memset(m_no_hist,   0, sizeof(m_no_hist));
1328   memset(m_va_hist,   0, sizeof(m_va_hist));
1329   memset(m_s1_hist,   0, sizeof(m_s1_hist));
1330   memset(m_s2g_hist,  0, sizeof(m_s2g_hist));
1331   memset(m_s2n_hist,  0, sizeof(m_s2n_hist));
1332   memset(m_s2ni_hist, 0, sizeof(m_s2ni_hist));
1333   memset(m_s2_hist,   0, sizeof(m_s2_hist));
1334   memset(m_s3_hist,   0, sizeof(m_s3_hist));
1335   memset(m_s4i_hist,  0, sizeof(m_s4i_hist));
1336   memset(m_s4_hist,   0, sizeof(m_s4_hist));
9771337}
9781338
9791339
src/emu/sound/votrax.h
r14742r14743
9999private:
100100   // internal helpers
101101   void update_subphoneme_clock_period();
102   static double bits_to_caps(UINT32 value, int caps_count, const double *caps_values);
103   static void shift_hist(double val, double *hist_array, int hist_size);
104   static void filter_s_to_z(const double *k, double fs, double *a, double *b);
105   static double apply_filter(const double *x, const double *y, const double *a, const double *b);
102106
103107   // internal state
104108   sound_stream *            m_stream;            // output stream
r14742r14743
170174   UINT32                  m_shift_252;         // shift register @ 252
171175   UINT8                  m_counter_250;         // 4-bit counter @ 250
172176
177   // stages outputs history
178   double                   m_ni_hist[4];
179   double                   m_no_hist[4];
180   double                   m_va_hist[4];
181   double                   m_s1_hist[4];
182   double                   m_s2g_hist[4];
183   double                   m_s2ni_hist[4];
184   double                   m_s2n_hist[4];
185   double                   m_s2_hist[4];
186   double                   m_s3_hist[4];
187   double                   m_s4i_hist[4];
188   double                   m_s4_hist[4];
189
173190   // static tables
174191   static const char *const s_phoneme_table[64];
175192   static const double s_glottal_wave[16];
src/emu/machine/ncr539x.h
r14742r14743
1515    devcb_write_line m_out_drq_cb;          /* DRQ line */
1616};
1717
18// 539x registers
19enum
20{
21};
18//// 539x registers
19//enum
20//{
21//};
2222
2323// device stuff
2424#define MCFG_NCR539X_ADD(_tag, _clock, _intrf) \

Previous 15994 Revisions Next


© 1998-2018 The MESS Team