(MESS) converted arcadia and vc4000 to use slot devices for

their carts too.
This commit is contained in:
Fabio Priuli 2014-10-02 20:07:31 +00:00
parent 6b0d73a9f2
commit 9e85f295bd
18 changed files with 1558 additions and 464 deletions

8
.gitattributes vendored
View File

@ -582,6 +582,10 @@ src/emu/bus/apf/rom.c svneol=native#text/plain
src/emu/bus/apf/rom.h svneol=native#text/plain
src/emu/bus/apf/slot.c svneol=native#text/plain
src/emu/bus/apf/slot.h svneol=native#text/plain
src/emu/bus/arcadia/rom.c svneol=native#text/plain
src/emu/bus/arcadia/rom.h svneol=native#text/plain
src/emu/bus/arcadia/slot.c svneol=native#text/plain
src/emu/bus/arcadia/slot.h svneol=native#text/plain
src/emu/bus/bml3/bml3bus.c svneol=native#text/plain
src/emu/bus/bml3/bml3bus.h svneol=native#text/plain
src/emu/bus/bml3/bml3kanji.c svneol=native#text/plain
@ -1598,6 +1602,10 @@ src/emu/bus/vboy/rom.c svneol=native#text/plain
src/emu/bus/vboy/rom.h svneol=native#text/plain
src/emu/bus/vboy/slot.c svneol=native#text/plain
src/emu/bus/vboy/slot.h svneol=native#text/plain
src/emu/bus/vc4000/rom.c svneol=native#text/plain
src/emu/bus/vc4000/rom.h svneol=native#text/plain
src/emu/bus/vc4000/slot.c svneol=native#text/plain
src/emu/bus/vc4000/slot.h svneol=native#text/plain
src/emu/bus/vcs/compumat.c svneol=native#text/plain
src/emu/bus/vcs/compumat.h svneol=native#text/plain
src/emu/bus/vcs/dpc.c svneol=native#text/plain

View File

@ -381,6 +381,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Bowling, Bowling (3 Dimensions), Video-Bowling" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="3dbowl.bin" size="4096" crc="f3c08e19" sha1="edd33cabd3d600e9e3d3c22f326a065ea6ebe32c" offset="0000" />
</dataarea>
@ -394,6 +395,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Fußball" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="3dsoccera.bin" size="8192" crc="1b5be22a" sha1="d3df9ed4e09bacacde47fa4f1128383fd62ffd6e" offset="0000" />
</dataarea>
@ -406,6 +408,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Fußball" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="3dsoccer.bin" size="8192" crc="4da68df8" sha1="50e799c96be3613f937825c6c722521bc6df0162" offset="0000" />
</dataarea>
@ -418,6 +421,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Alien, Alien Invader, Les Envahisseurs Etrangers, Invasion aus dem Weltall" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="alieninv.bin" size="4096" crc="1f65b21e" sha1="8d17de81fbf70db8fe32830763c6a940aa9124c3" offset="0000" />
</dataarea>
@ -430,6 +434,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Football Américain" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="6144">
<rom name="football.bin" size="6144" crc="22624414" sha1="359e938391b72742643c81228713fac804ff8244" offset="0000" />
</dataarea>
@ -441,6 +446,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1980</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="astroinv.bin" size="4096" crc="ddcf5b2c" sha1="b6f693e3333607181fbe3a43dffa9f30f9656998" offset="0000" />
</dataarea>
@ -453,6 +459,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Course De Voitures" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="autorace.bin" size="4096" crc="99ac48ca" sha1="6182219b2b8c8747f67d627a056ac947754f0978" offset="0000" />
</dataarea>
@ -464,6 +471,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="baseball.bin" size="4096" crc="1cf08155" sha1="f4d39aaab61e6b01c673166ae54841d450860b31" offset="0000" />
</dataarea>
@ -477,6 +485,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="vidpanz.bin" size="4096" crc="6818c8bd" sha1="21eadc7841e0a59671aacca93d28d81c580f16f2" offset="0000" />
</dataarea>
@ -488,6 +497,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="blckjack.bin" size="4096" crc="0930ce04" sha1="a8afadfcaea847c2e998005652ace36803d6601b" offset="0000" />
</dataarea>
@ -499,6 +509,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="boxing.bin" size="4096" crc="9240891b" sha1="0fc3a8a33f2e89b2b32ea0a962effcf3ee430d34" offset="0000" />
</dataarea>
@ -511,6 +522,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Intelligenz-Übung, Math/Logic, Mathematiques Logiques" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="brainqz.bin" size="4096" crc="ca58b3f8" sha1="e9560e064043946b6bc0a88087d4164adf62e773" offset="0000" />
</dataarea>
@ -523,6 +535,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Evasion, La Desertion, Video-Breakout" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="breakawy.bin" size="4096" crc="33c348c1" sha1="396fe12bd34cc7cd555ad3b9b66f20e56e862385" offset="0000" />
</dataarea>
@ -534,6 +547,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="bsktball.bin" size="4096" crc="e93938f6" sha1="c6e3f963ea9db520bcd682a3206cc291504c9e3d" offset="0000" />
</dataarea>
@ -546,6 +560,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Othello, Side Attack, Video-Mühle" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="capture.bin" size="2048" crc="aeb803e4" sha1="107c864252647a4f3569ff501c8a9a3c7dd6067f" offset="000" />
</dataarea>
@ -558,6 +573,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Cat Track, Cat Tracks" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="cattrax.bin" size="4096" crc="fd2cf496" sha1="b0982ed95d92a4d97a5451acbee36af10ff99a3f" offset="0000" />
</dataarea>
@ -570,6 +586,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Cirque, Acrobat, Clown" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="circus.bin" size="4096" crc="086ebc8c" sha1="e8abeb702d9a7b7e12e1cea02946dae267b23041" offset="0000" />
</dataarea>
@ -581,6 +598,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="combat.bin" size="4096" crc="a6bffa9e" sha1="87addcdd0fccb5f36066f21938458235d5a37bd0" offset="0000" />
</dataarea>
@ -593,6 +611,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Crazy Wall" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="cclimber.bin" size="4096" crc="76e773fa" sha1="0c6ce7577a121e7810ec54c5dd180a55dd0ace17" offset="0000" />
</dataarea>
@ -605,6 +624,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Le Glouton Super Vorace" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="crzygblr.bin" size="2048" crc="e84df2ef" sha1="021e78bbc1f2c4ee2e7ca2fa560dd448bdd39798" offset="000" />
</dataarea>
@ -616,6 +636,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>Bandai</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="doraemon.bin" size="8192" crc="62c45881" sha1="a16fda96d00c8b08bb362f2573a45939aa6be051" offset="0000" />
</dataarea>
@ -627,6 +648,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>Bandai</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="drslump.bin" size="8192" crc="927c375a" sha1="389259f1505deef5c0fb83f9cf8b0f7fa4ed5d04" offset="0000" />
</dataarea>
@ -639,6 +661,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Escape Man" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="escape.bin" size="4096" crc="fc7eba76" sha1="87f81511ea5b7a9671fb945cb22bb578bedb47c9" offset="0000" />
</dataarea>
@ -650,6 +673,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="funkyfsh.bin" size="8192" crc="77c19320" sha1="e56be2ecd8284cd43a44620d56d6615766f45451" offset="0000" />
</dataarea>
@ -662,6 +686,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Golfer" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="golf" />
<dataarea name="rom" size="6144">
<rom name="golf.bin" size="6144" crc="a23c7a01" sha1="7c9251e42fd03b9c26a13d0e25cdf9a838319a39" offset="0000" />
</dataarea>
@ -674,6 +699,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Monaco Grand Prix, Video-Autorennen" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="gpmonaco.bin" size="4096" crc="5e033f9c" sha1="7dcc1387892fa7275514c91ce584f83a5d3e14d6" offset="0000" />
</dataarea>
@ -686,6 +712,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Tennis, Tennis: Yannick Noah" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="gstennis.bin" size="8192" crc="8bf2dfa9" sha1="03cedd5fd67ff11a4ac74d513f03a2266af89446" offset="0000" />
</dataarea>
@ -697,6 +724,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="hobo.bin" size="8192" crc="1cec4b21" sha1="cebb340cb0a50b2815dafc6df8f46d814015a49f" offset="0000" />
</dataarea>
@ -716,6 +744,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Course de Chevaux, Pferderennen" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="horserac.bin" size="4096" crc="560daa7f" sha1="72dd8dea83bf9ab7d486931516e99b2209ca0a1d" offset="0000" />
</dataarea>
@ -728,6 +757,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Happy Bug" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="jumpbug.bin" size="8192" crc="97060a54" sha1="d0ace24fd1f3805e46b077e8a4770f922157c8c4" offset="0000" />
</dataarea>
@ -741,6 +771,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Happy Bug" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="jumpbuga.bin" size="8192" crc="dc0264b8" sha1="bf3ccf7a54409f22ca4295b1df1c01bfbbe9f0a2" offset="0000" />
</dataarea>
@ -752,6 +783,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="jungler.bin" size="8192" crc="dfb5dd55" sha1="8d6e32ab3cc872017c597e61c076330015411435" offset="0000" />
</dataarea>
@ -764,6 +796,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>Bandai</publisher>
<info name="alt_title" value="Super Dimension Fortress Macross" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="macross.bin" size="8192" crc="4c885af2" sha1="3d24ab9e42ff44a223bb53c5491dea7f41691df2" offset="0000" />
</dataarea>
@ -776,6 +809,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>Bandai</publisher>
<info name="alt_title" value="Mobile Soldier Gundam" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="gundam.bin" size="8192" crc="1241f128" sha1="4b07a88b06008ddfc3676983e826e107caf3ba0f" offset="0000" />
</dataarea>
@ -788,6 +822,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Angriff der Ufos, Le Guerre Des Missiles" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="msslewar.bin" size="4096" crc="a615f068" sha1="cc3e46adc8a3ed2cbfd5f9bbbf96f61f4e2ecebe" offset="0000" />
</dataarea>
@ -800,6 +835,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Devilman the Dot Muncher, Super Gobbler" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="nbblemen.bin" size="4096" crc="7832f7ad" sha1="a2f3d269e422e6ee89d58f001d39438704178e17" offset="0000" />
</dataarea>
@ -812,6 +848,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Devilman the Dot Muncher, Super Gobbler" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="nbblemena.bin" size="4096" crc="08d8b186" sha1="ca2efbcb1f1f580b7995aa47ab7da09fa4a1b9e2" offset="0000" />
</dataarea>
@ -824,6 +861,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Bataille Navale, Le Combat Naval, Sea Battle, Seeschlacht" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="oceanbat.bin" size="4096" crc="449e80cb" sha1="444146bf89c3a0e0e010f6a30e675be3f2b023a7" offset="0000" />
</dataarea>
@ -836,6 +874,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Parachute" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="parashtr.bin" size="4096" crc="4f538848" sha1="2e7c8e4263eec7f033019ec763effebca40ca30b" offset="0000" />
</dataarea>
@ -847,6 +886,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="pleiades.bin" size="8192" crc="4f19fd9b" sha1="bdb7ce3d4552c82be3cf8db43d5ad103f9d9cc91" offset="0000" />
</dataarea>
@ -858,6 +898,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1981</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="r2dtank.bin" size="4096" crc="a0626e23" sha1="e1daef4cc1e8c51cf542d900ba7139f5f472f2c8" offset="0000" />
</dataarea>
@ -869,6 +910,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="redclash.bin" size="4096" crc="a06f284b" sha1="7a94f4f1768e4c62209cc03adc0fbadb954d2c24" offset="0000" />
</dataarea>
@ -881,6 +923,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Le Robot Meurtrier" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="robtkllr.bin" size="4096" crc="4671b7f7" sha1="acb45a8314fe531390d1c58be23ae860fa344c94" offset="0000" />
</dataarea>
@ -892,6 +935,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1983</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="route16.bin" size="8192" crc="8169864e" sha1="6f6d0c0e2ae06112643c63cb6892f8c7269c98a6" offset="0000" />
</dataarea>
@ -904,6 +948,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Football, Fußball Spiel, Video- Fußball" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="soccer.bin" size="4096" crc="b0b98a92" sha1="1a575203b78af7ac992f109add1721dda8872fc1" offset="0000" />
</dataarea>
@ -915,6 +960,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="spacewar.bin" size="2048" crc="c91828cb" sha1="9e84d1884a002aafb84682eeb9e1cb2f29944d64" offset="000" />
</dataarea>
@ -926,6 +972,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="spaceatta.bin" size="2048" crc="669632ec" sha1="0d96d79d22237312e217d8da8e2185e9245bdf47" offset="000" />
</dataarea>
@ -937,6 +984,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="spaceatt.bin" size="4096" crc="e3794a2c" sha1="25a27466dc3ffb6013cd4f632947834002c80105" offset="0000" />
</dataarea>
@ -949,6 +997,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Mission Spaciale, Weltraum-Abenteuer" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="spcemssn.bin" size="4096" crc="3ff224e5" sha1="a46fa9cbc12cb83218d3936ec3f4d0a4aff8cd60" offset="0000" />
</dataarea>
@ -961,6 +1010,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Space Raider" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="spcerdrs.bin" size="4096" crc="88defacf" sha1="c2c247b57c3d3a9321f7c16e48b1d733bd7d7dbb" offset="0000" />
</dataarea>
@ -973,6 +1023,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Escadrille de L'Espace, L'Escadron de L'Espace" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="spcesqdn.bin" size="4096" crc="caa5f449" sha1="e76efb5f2707f67775d09d2d1547a4af0254b7b1" offset="0000" />
</dataarea>
@ -985,6 +1036,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Vautour de L'espace" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="6144">
<rom name="spcevult.bin" size="6144" crc="7666a712" sha1="a1697ee165307792f07fdd7767122140958a4e9f" offset="0000" />
</dataarea>
@ -996,6 +1048,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="spiders.bin" size="4096" crc="bb88daea" sha1="e2fe75ec968a586a9c4885df02481b00abef2bc7" offset="0000" />
</dataarea>
@ -1008,6 +1061,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Echec Etiles, Échecs Vidéo, Space Chess, Video Chess, Video-Schach" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="starchss.bin" size="4096" crc="83e6e40b" sha1="348ca876b1113827d8e7ffb9b2422e863ba92b0f" offset="0000" />
</dataarea>
@ -1019,6 +1073,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="superbuga.bin" size="4096" crc="15436f39" sha1="bf22e0fae67bc3c2147a669b194752e34fe3564d" offset="0000" />
</dataarea>
@ -1030,6 +1085,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="superbug.bin" size="4096" crc="fef2aae9" sha1="1e7f7b81ecd2f766c94bd5ff17763374fb0318f1" offset="0000" />
</dataarea>
@ -1042,6 +1098,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<publisher>UA Ltd.</publisher>
<info name="alt_title" value="Space Pirates" />
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="theend.bin" size="4096" crc="e66f362d" sha1="1148aa1525d7b46640babb50b004c79abec45d3a" offset="0000" />
</dataarea>
@ -1053,6 +1110,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="tnksalot.bin" size="4096" crc="0076422e" sha1="c431d5190e86f3dfbb3e8b1a3b9bec82bb5014ae" offset="0000" />
</dataarea>
@ -1064,6 +1122,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>1982</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="8192">
<rom name="turtles.bin" size="8192" crc="306e39c1" sha1="a806e3f248a962bb99e2515f489d45bb11fb0a0e" offset="0000" />
</dataarea>
@ -1076,6 +1135,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="12288">
<rom name="vidlex [main cartridge unit].bin" size="4096" crc="e0a9dd9a" sha1="eadb3a791b100a208bbe8c445a96315cbeb7a097" offset="0x0000" />
<rom name="vidlexe [english module].bin" size="4096" crc="320b0a9d" sha1="5058e17464ac50f86cd1c297c031b4d0ef063303" offset="0x1000" />
@ -1090,6 +1150,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="12288">
<rom name="dicte2g.bin" size="12288" crc="6289f607" sha1="23d5d52e3403b3e9cd7864a16abac03508db8c97" offset="0000" />
</dataarea>
@ -1102,6 +1163,7 @@ Rumoured or Unreleased files: - 3D Raceway, Centipede, Fun with Math, Galaga, Ho
<year>198?</year>
<publisher>UA Ltd.</publisher>
<part name="cart" interface="arcadia_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="12288">
<rom name="dictg2e.bin" size="12288" crc="0739504d" sha1="de2c037c5ec9b31f2ae63a467dcd82647f92e908" offset="0000" />
</dataarea>

View File

@ -9,6 +9,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="carraces.bin" size="2048" crc="5c7f11e0" sha1="0d1cd6f7da36660f19e0b0e9c4312b1c56d5fbc6" offset="0" />
</dataarea>
@ -21,6 +22,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="blckjack.bin" size="2048" crc="ec2a91b3" sha1="ba4553d116cffa74a71ef10fbffa4c28c779c836" offset="0" />
</dataarea>
@ -33,6 +35,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="paddleg.bin" size="2048" crc="682b876a" sha1="ecc0146c40daa79a13934b8884bc8fd0f96461c1" offset="0" />
</dataarea>
@ -45,6 +48,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="tbattle.bin" size="2048" crc="468e4779" sha1="191d0a1bf399a09525b57dbbca92d83de18003fd" offset="0" />
</dataarea>
@ -57,6 +61,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="mathema1.bin" size="2048" crc="e38e0c03" sha1="d48c8ca8811fa9418d257c92365b88bba0cdffb2" offset="0" />
</dataarea>
@ -69,6 +74,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="mathema2.bin" size="2048" crc="66c5975e" sha1="efa4a5ebe540efdedec226c0af238c2652ad5b5a" offset="0" />
</dataarea>
@ -81,6 +87,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="airseaba.bin" size="2048" crc="f3d37699" sha1="922b9469b2262eb1a135defd5dbc11f33094df5c" offset="0" />
</dataarea>
@ -93,6 +100,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="memory1.bin" size="2048" crc="ea8f717f" sha1="a383ced230178c9c829b82b2793cb036411ccb5d" offset="0" />
</dataarea>
@ -105,6 +113,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="intel1.bin" size="2048" crc="4d3f9cfb" sha1="b8cba1672f5b7286e8895fc6e6c46bbb54fb3f46" offset="0" status="baddump" />
</dataarea>
@ -117,6 +126,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="wintersp.bin" size="4096" crc="bdd652b7" sha1="aa3af1df1095aadf9d7428a59847fbef3505d93d" offset="0" />
</dataarea>
@ -129,6 +139,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="hippodro.bin" size="2048" crc="aaea290f" sha1="0c4dd4f31adccdf02ba783a23ca9debe2c4cee02" offset="0" />
</dataarea>
@ -141,6 +152,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="hunting.bin" size="2048" crc="31978ad4" sha1="68a21765ae57357c7e5385e57b3caa60f796c0cc" offset="0" />
</dataarea>
@ -153,10 +165,12 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<!-- 1k internal ram -->
<feature name="slot" value="ram1k" />
<dataarea name="rom" size="4096">
<rom name="chess.bin" size="4096" crc="e9c53288" sha1="468188fd58aefb9f8e17e72ea4494f4e8219338a" offset="0" />
</dataarea>
<dataarea name="ram" size="1024">
</dataarea>
</part>
</software>
@ -166,6 +180,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="motocrss.bin" size="4096" crc="55011f0a" sha1="a461b66f6cff37e4038e80da0a205a816abe35d4" offset="0" />
</dataarea>
@ -178,6 +193,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="intel2.bin" size="2048" crc="8ab96827" sha1="58c7cabd14e3cd0505f8ea27aaf08cc8045bc590" offset="0" status="baddump" />
</dataarea>
@ -190,6 +206,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="intel3.bin" size="2048" crc="52b8c6e7" sha1="b83fd9679912b0888df38f708dbea80dfe3b8193" offset="0" />
</dataarea>
@ -202,6 +219,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="circus.bin" size="2048" crc="0ab80f3e" sha1="cff0b7066669aad1e35803767fd98ecef4ea162d" offset="0" />
</dataarea>
@ -214,6 +232,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="boxing.bin" size="4096" crc="922c9f0d" sha1="b49a37dd6d0272f6c71d778ffada6bc7c90f8348" offset="0" />
</dataarea>
@ -226,6 +245,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="outersc.bin" size="2048" crc="b1c31f9a" sha1="8a2b29af42051f61a22a033c7dd140705cf7bc6e" offset="0" />
</dataarea>
@ -238,6 +258,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="memory2.bin" size="2048" crc="d68da80a" sha1="4cf0f74b4a0d3305c9ffa830c067a054fab25419" offset="0" />
</dataarea>
@ -250,6 +271,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="reversi.bin" size="2048" crc="619c07c9" sha1="30c595f60e464a93c69579ae9bffdd42ee2f73e7" offset="0" />
</dataarea>
@ -262,11 +284,13 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<!-- 1k internal ram -->
<feature name="slot" value="chess2" />
<dataarea name="rom" size="6144">
<!-- redump needed, should be a 4k and a 2k file -->
<rom name="chess2.bin" size="6144" crc="1b948aeb" sha1="0da5c4e865ce4a6b0293e51949eb0fb525881cf0" offset="0" />
</dataarea>
<dataarea name="ram" size="1024">
</dataarea>
</part>
</software>
@ -276,6 +300,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="pinball.bin" size="2048" crc="add99c6e" sha1="85b904e5bc37e5a44c88c000307401438285910a" offset="0" />
</dataarea>
@ -288,6 +313,7 @@
<year>1979</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="soccer.bin" size="2048" crc="05af8228" sha1="fd4212b955688aec985102d84575cae55bc651eb" offset="0" />
</dataarea>
@ -300,6 +326,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="bowling.bin" size="2048" crc="a47fe1bf" sha1="e637787ed9d868f85339a413bbf2989a785fa2a7" offset="0" />
</dataarea>
@ -312,10 +339,12 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<!-- 1k internal ram -->
<feature name="slot" value="ram1k" />
<dataarea name="rom" size="4096">
<rom name="draughts.bin" size="4096" crc="7b868473" sha1="2557172b07c0ebaffe18a345cfa88ef24febecb0" offset="0" />
</dataarea>
<dataarea name="ram" size="1024">
</dataarea>
</part>
</software>
@ -325,6 +354,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="golf.bin" size="4096" crc="d399ce07" sha1="41b6c7d3bc8ea2ef9777066dfd74ec2c5932ddb6" offset="0" />
</dataarea>
@ -337,6 +367,7 @@
<year>19??</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="cockpit.bin" size="4096" crc="11dd7f0d" sha1="456e9c5d1d48877e8c5eb5e5499c911a73e30584" offset="0" />
</dataarea>
@ -349,6 +380,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="metropol.bin" size="4096" crc="a640a330" sha1="3b9b1b5c35d3e2ef909e1498f96026cfb437ea80" offset="0" />
</dataarea>
@ -361,6 +393,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="solitair.bin" size="2048" crc="08209d98" sha1="bf96ceb173f17017b99cf8d38ed55e66b5320260" offset="0" />
</dataarea>
@ -373,6 +406,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="casino.bin" size="2048" crc="50fd6a18" sha1="7d2549a3a3373592d2eb88c3a5c9918b32fddafd" offset="0" />
</dataarea>
@ -385,6 +419,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="invaders.bin" size="2048" crc="9497204a" sha1="1fba78476ee93f09b6db033ec4d5332498ebc4d0" offset="0" />
</dataarea>
@ -397,6 +432,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="superinv.bin" size="2048" crc="a46c2f9e" sha1="bf851dbd92a539232c89fe2f6c4e2759b61ef3d4" offset="0" />
</dataarea>
@ -412,10 +448,12 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<!-- 1k internal ram -->
<feature name="slot" value="ram1k" />
<dataarea name="rom" size="4096">
<rom name="backgamm.bin" size="4096" crc="08cd8135" sha1="942f65a68e4116b1da66df57c09829f9d9b62659" offset="0" />
</dataarea>
<dataarea name="ram" size="1024">
</dataarea>
</part>
</software>
@ -425,6 +463,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="ram1k" />
<dataarea name="rom" size="4096">
<rom name="mnstrman.bin" size="4096" crc="27cce96f" sha1="f55798c634be020b46699f2e3e71301230db86d2" offset="0" />
</dataarea>
@ -437,6 +476,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="2048">
<rom name="hyperspa.bin" size="2048" crc="b3ed1129" sha1="4c0f862f6fa4850e5e7305b90df71f7b899f0c27" offset="0" />
</dataarea>
@ -451,6 +491,7 @@
<year>19??</year>
<publisher>Interton</publisher>
<part name="cart" interface="vc4000_cart">
<feature name="slot" value="std" />
<dataarea name="rom" size="4096">
<rom name="suprspac.bin" size="4096" crc="306e37bb" sha1="b11e9fed7700d5192b05dfabeca7b23feca64540" offset="0" />
</dataarea>

60
src/emu/bus/arcadia/rom.c Normal file
View File

@ -0,0 +1,60 @@
/***********************************************************************************************************
Emerson Arcadia 2001 cart emulation
Golf carts have the "extra_rom" handler installed at $4000 instead of $2000
***********************************************************************************************************/
#include "emu.h"
#include "rom.h"
//-------------------------------------------------
// arcadia_rom_device - constructor
//-------------------------------------------------
const device_type ARCADIA_ROM_STD = &device_creator<arcadia_rom_device>;
const device_type ARCADIA_ROM_GOLF = &device_creator<arcadia_golf_device>;
arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_arcadia_cart_interface( mconfig, *this )
{
}
arcadia_rom_device::arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, ARCADIA_ROM_STD, "Emerson Arcadia Standard Carts", tag, owner, clock, "arcadia_rom", __FILE__),
device_arcadia_cart_interface( mconfig, *this )
{
}
arcadia_golf_device::arcadia_golf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: arcadia_rom_device(mconfig, ARCADIA_ROM_GOLF, "Emerson Arcadia Golf Cart", tag, owner, clock, "arcadia_golf", __FILE__)
{
}
/*-------------------------------------------------
mapper specific handlers
-------------------------------------------------*/
READ8_MEMBER(arcadia_rom_device::read_rom)
{
if (offset < m_rom_size)
return m_rom[offset];
else
return 0xff;
}
READ8_MEMBER(arcadia_rom_device::extra_rom)
{
if (offset + 0x1000 < m_rom_size)
return m_rom[offset + 0x1000];
else
return 0xff;
}

42
src/emu/bus/arcadia/rom.h Normal file
View File

@ -0,0 +1,42 @@
#ifndef __ARCADIA_ROM_H
#define __ARCADIA_ROM_H
#include "slot.h"
// ======================> arcadia_rom_device
class arcadia_rom_device : public device_t,
public device_arcadia_cart_interface
{
public:
// construction/destruction
arcadia_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
arcadia_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start() {}
virtual void device_reset() {}
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
virtual DECLARE_READ8_MEMBER(extra_rom);
};
// ======================> arcadia_golf_device
class arcadia_golf_device : public arcadia_rom_device
{
public:
// construction/destruction
arcadia_golf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
// device type definition
extern const device_type ARCADIA_ROM_STD;
extern const device_type ARCADIA_ROM_GOLF;
#endif

260
src/emu/bus/arcadia/slot.c Normal file
View File

@ -0,0 +1,260 @@
/***********************************************************************************************************
Emerson Arcadia 2001 (and clones) cart emulation
(through slot devices)
***********************************************************************************************************/
#include "emu.h"
#include "slot.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
const device_type EA2001_CART_SLOT = &device_creator<arcadia_cart_slot_device>;
//**************************************************************************
// ARCADIA Cartridges Interface
//**************************************************************************
//-------------------------------------------------
// device_arcadia_cart_interface - constructor
//-------------------------------------------------
device_arcadia_cart_interface::device_arcadia_cart_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device),
m_rom(NULL),
m_rom_size(0)
{
}
//-------------------------------------------------
// ~device_arcadia_cart_interface - destructor
//-------------------------------------------------
device_arcadia_cart_interface::~device_arcadia_cart_interface()
{
}
//-------------------------------------------------
// rom_alloc - alloc the space for the cart
//-------------------------------------------------
void device_arcadia_cart_interface::rom_alloc(UINT32 size, const char *tag)
{
if (m_rom == NULL)
{
astring tempstring(tag);
tempstring.cat(EA2001SLOT_ROM_REGION_TAG);
m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base();
m_rom_size = size;
}
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// arcadia_cart_slot_device - constructor
//-------------------------------------------------
arcadia_cart_slot_device::arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, EA2001_CART_SLOT, "Emerson Arcadia Cartridge Slot", tag, owner, clock, "arcadia_cart_slot", __FILE__),
device_image_interface(mconfig, *this),
device_slot_interface(mconfig, *this),
m_type(ARCADIA_STD)
{
}
//-------------------------------------------------
// arcadia_cart_slot_device - destructor
//-------------------------------------------------
arcadia_cart_slot_device::~arcadia_cart_slot_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void arcadia_cart_slot_device::device_start()
{
m_cart = dynamic_cast<device_arcadia_cart_interface *>(get_card_device());
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void arcadia_cart_slot_device::device_config_complete()
{
// set brief and instance name
update_names();
}
//-------------------------------------------------
// ARCADIA PCB
//-------------------------------------------------
struct arcadia_slot
{
int pcb_id;
const char *slot_option;
};
// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
static const arcadia_slot slot_list[] =
{
{ ARCADIA_STD, "std" },
{ ARCADIA_GOLF, "golf" }
};
static int arcadia_get_pcb_id(const char *slot)
{
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
{
if (!core_stricmp(slot_list[i].slot_option, slot))
return slot_list[i].pcb_id;
}
return 0;
}
static const char *arcadia_get_slot(int type)
{
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
{
if (slot_list[i].pcb_id == type)
return slot_list[i].slot_option;
}
return "std";
}
/*-------------------------------------------------
call load
-------------------------------------------------*/
bool arcadia_cart_slot_device::call_load()
{
if (m_cart)
{
UINT32 len = (software_entry() == NULL) ? length() : get_software_region_length("rom");
m_cart->rom_alloc(len, tag());
if (software_entry() == NULL)
fread(m_cart->get_rom_base(), len);
else
memcpy(m_cart->get_rom_base(), get_software_region("rom"), len);
if (software_entry() == NULL)
{
// we need to identify Golf!
m_type = ARCADIA_STD;
// the patch below is kept in case it could be used to identify golf cart from fullpath
#if 0
// this is a testpatch for the golf cartridge
// so to make it work on a standard arcadia 2001
// cart (i.e. mapping the hi 2K to $2000)
// not enough yet (some pointers stored as data?)
patch[]= {
// addr, orig. value, patched value
{ 0x0077, 0x40, 0x20 },
{ 0x011e, 0x40, 0x20 },
{ 0x0348, 0x40, 0x20 },
{ 0x03be, 0x40, 0x20 },
{ 0x04ce, 0x40, 0x20 },
{ 0x04da, 0x40, 0x20 },
{ 0x0562, 0x42, 0x22 },
{ 0x0617, 0x40, 0x20 },
{ 0x0822, 0x40, 0x20 },
{ 0x095e, 0x42, 0x22 },
{ 0x09d3, 0x42, 0x22 },
{ 0x0bb0, 0x42, 0x22 },
{ 0x0efb, 0x40, 0x20 },
{ 0x0ec1, 0x43, 0x23 },
{ 0x0f00, 0x40, 0x20 },
{ 0x0f12, 0x40, 0x20 },
{ 0x0ff5, 0x43, 0x23 },
{ 0x0ff7, 0x41, 0x21 },
{ 0x0ff9, 0x40, 0x20 },
{ 0x0ffb, 0x41, 0x21 },
{ 0x20ec, 0x42, 0x22 }
};
#endif
}
else
{
const char *pcb_name = get_feature("slot");
if (pcb_name)
m_type = arcadia_get_pcb_id(pcb_name);
}
printf("Type: %s\n", arcadia_get_slot(m_type));
return IMAGE_INIT_PASS;
}
return IMAGE_INIT_PASS;
}
/*-------------------------------------------------
call softlist load
-------------------------------------------------*/
bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
/*-------------------------------------------------
get default card software
-------------------------------------------------*/
void arcadia_cart_slot_device::get_default_card_software(astring &result)
{
software_get_default_slot(result, "std");
}
/*-------------------------------------------------
read
-------------------------------------------------*/
READ8_MEMBER(arcadia_cart_slot_device::read_rom)
{
if (m_cart)
return m_cart->read_rom(space, offset);
else
return 0xff;
}
/*-------------------------------------------------
write
-------------------------------------------------*/
READ8_MEMBER(arcadia_cart_slot_device::extra_rom)
{
if (m_cart)
return m_cart->extra_rom(space, offset);
else
return 0xff;
}

102
src/emu/bus/arcadia/slot.h Normal file
View File

@ -0,0 +1,102 @@
#ifndef __ARCADIA_SLOT_H
#define __ARCADIA_SLOT_H
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
/* PCB */
enum
{
ARCADIA_STD = 0,
ARCADIA_GOLF
};
// ======================> device_arcadia_cart_interface
class device_arcadia_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
device_arcadia_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_arcadia_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
virtual DECLARE_READ8_MEMBER(extra_rom) { return 0xff; }
void rom_alloc(UINT32 size, const char *tag);
UINT8* get_rom_base() { return m_rom; }
UINT32 get_rom_size() { return m_rom_size; }
protected:
// internal state
UINT8 *m_rom;
UINT32 m_rom_size;
};
// ======================> arcadia_cart_slot_device
class arcadia_cart_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
public:
// construction/destruction
arcadia_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~arcadia_cart_slot_device();
// device-level overrides
virtual void device_start();
virtual void device_config_complete();
// image-level overrides
virtual bool call_load();
virtual void call_unload() {}
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
int get_type() { return m_type; }
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
virtual bool is_readable() const { return 1; }
virtual bool is_writeable() const { return 0; }
virtual bool is_creatable() const { return 0; }
virtual bool must_be_loaded() const { return 1; }
virtual bool is_reset_on_load() const { return 1; }
virtual const option_guide *create_option_guide() const { return NULL; }
virtual const char *image_interface() const { return "arcadia_cart"; }
virtual const char *file_extensions() const { return "bin"; }
// slot interface overrides
virtual void get_default_card_software(astring &result);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
virtual DECLARE_READ8_MEMBER(extra_rom);
protected:
int m_type;
device_arcadia_cart_interface* m_cart;
};
// device type definition
extern const device_type EA2001_CART_SLOT;
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define EA2001SLOT_ROM_REGION_TAG ":cart:rom"
#define MCFG_ARCADIA_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, EA2001_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
#endif

View File

@ -108,6 +108,18 @@ BUSOBJS += $(BUSOBJ)/apf/rom.o
endif
#-------------------------------------------------
#
#@src/emu/bus/arcadia/slot.h,BUSES += ARCADIA
#-------------------------------------------------
ifneq ($(filter ARCADIA,$(BUSES)),)
OBJDIRS += $(BUSOBJ)/arcadia
BUSOBJS += $(BUSOBJ)/arcadia/slot.o
BUSOBJS += $(BUSOBJ)/arcadia/rom.o
endif
#-------------------------------------------------
#
#@src/emu/bus/bw2/exp.h,BUSES += BW2
@ -630,6 +642,18 @@ BUSOBJS += $(BUSOBJ)/tvc/hbf.o
endif
#-------------------------------------------------
#
#@src/emu/bus/vc4000/slot.h,BUSES += VC4000
#-------------------------------------------------
ifneq ($(filter VC4000,$(BUSES)),)
OBJDIRS += $(BUSOBJ)/vc4000
BUSOBJS += $(BUSOBJ)/vc4000/slot.o
BUSOBJS += $(BUSOBJ)/vc4000/rom.o
endif
#-------------------------------------------------
#
#@src/emu/bus/vcs/vcs_slot.h,BUSES += VCS

261
src/emu/bus/vc4000/rom.c Normal file
View File

@ -0,0 +1,261 @@
/***********************************************************************************************************
Interton Electronic VC 4000 cart emulation
***********************************************************************************************************/
/* Game List and Emulation Status
When you load a game it will normally appear to be unresponsive. Most carts contain a number of variants
of each game (e.g. Difficulty, Player1 vs Player2 or Player1 vs Computer, etc).
Press F2 (if needed) to select which game variant you would like to play. The variant number will increment
on-screen. When you've made your choice, press F1 to start. The main keys are unlabelled, because an overlay
is provided with each cart. See below for a guide. You need to read the instructions that come with each game.
In some games, the joystick is used like 4 buttons, and other games like a paddle. The two modes are
incompatible when using a keyboard. Therefore (in the emulation) a config dipswitch is used. The preferred
setting is listed below.
(AC = Auto-centre, NAC = no auto-centre, 90 = turn controller 90 degrees).
The list is rather incomplete, information will be added as it becomes available.
The game names and numbers were obtained from the Amigan Software site.
Cart Num Name
----------------------------------------------
1. Grand Prix / Car Races / Autosport / Motor Racing / Road Race
Config: Paddle, NAC
Status: Working
Controls: Left-Right: Steer; Up: Accelerate
2. Black Jack
Status: Not working (some digits missing; indicator missing; dealer's cards missing)
Controls: set bet with S and D; A to deal; 1 to hit, 2 to stay; Q accept insurance, E to decline; double-up (unknown key)
Indicator: E make a bet then deal; I choose insurance; - you lost; + you won; X hit or stay
3. Olympics / Paddle Games / Bat & Ball / Pro Sport 60 / Sportsworld
Config: Paddle, NAC
Status: Working
4. Tank Battle / Combat
Config: Button, 90
Status: Working
Controls: Left-Right: Steer; Up: Accelerate; Fire: Shoot
5. Maths 1
Status: Working
Controls: Z difficulty; X = addition or subtraction; C ask question; A=1;S=2;D=3;Q=4;W=5;E=6;1=7;2=8;3=9;0=0; C enter
6. Maths 2
Status: Not working
Controls: Same as above.
7. Air Sea Attack / Air Sea Battle
Config: Button, 90
Status: Working
Controls: Left-Right: Move; Fire: Shoot
8. Treasure Hunt / Capture the Flag / Concentration / Memory Match
Config: Buttons
Status: Working
9. Labyrinth / Maze / Intelligence 1
Config: Buttons
Status: Working
10. Winter Sports
Notes: Background colours should be Cyan and White instead of Red and Black
11. Hippodrome / Horse Race
12. Hunting / Shooting Gallery
13. Chess 1
Status: Can't see what you're typing, wrong colours
14. Moto-cros
15. Four in a row / Intelligence 2
Config: Buttons
Status: Working
Notes: Seems the unused squares should be black. The screen jumps about while the computer is "thinking".
16. Code Breaker / Master Mind / Intelligence 3 / Challenge
17. Circus
STatus: severe gfx issues
18. Boxing / Prize Fight
19. Outer Space / Spacewar / Space Attack / Outer Space Combat
20. Melody Simon / Musical Memory / Follow the Leader / Musical Games / Electronic Music / Face the Music
21. Capture / Othello / Reversi / Attack / Intelligence 4
Config: Buttons
Status: Working
Notes: Seems the unused squares should be black
22. Chess 2
Status: Can't see what you're typing, wrong colours
23. Pinball / Flipper / Arcade
Status: gfx issues
24. Soccer
25. Bowling / NinePins
Config: Paddle, rotated 90 degrees, up/down autocentre, left-right does not
Status: Working
26. Draughts
27. Golf
Status: gfx issues
28. Cockpit
Status: gfx issues
29. Metropolis / Hangman
Status: gfx issues
30. Solitaire
31. Casino
Status: gfx issues, items missing and unplayable
Controls: 1 or 3=START; q=GO; E=STOP; D=$; Z=^; X=tens; C=units
32. Invaders / Alien Invasion / Earth Invasion
Status: Works
Config: Buttons
33. Super Invaders
Status: Stars are missing, colours are wrong
Config: Buttons (90)
36. BackGammon
Status: Not all counters are visible, Dice & game number not visible.
Controls: Fire=Exec; 1=D+; 3=D-; Q,W,E=4,5,6; A,S,D=1,2,3; Z=CL; X=STOP; C=SET
37. Monster Man / Spider's Web
Status: Works
Config: Buttons
38. Hyperspace
Status: Works
Config: Buttons (90)
Controls: 3 - status button; Q,W,E,A,S,D,Z,X,C selects which galaxy to visit
40. Super Space
Status: Works, some small gfx issues near the bottom
Config: Buttons
Acetronic: (dumps are compatible)
------------
* Shooting Gallery
Status: works but screen flickers
Config: Buttons
* Planet Defender
Status: Works
Config: Paddle (NAC)
* Laser Attack
Status: Works
Config: Buttons
Public Domain: (written for emulators, may not work on real hardware)
---------------
* Picture (no controls) - works
* Wincadia Stub (no controls) - works, small graphic error */
#include "emu.h"
#include "rom.h"
//-------------------------------------------------
// vc4000_rom_device - constructor
//-------------------------------------------------
const device_type VC4000_ROM_STD = &device_creator<vc4000_rom_device>;
const device_type VC4000_ROM_RAM1K = &device_creator<vc4000_ram1k_device>;
const device_type VC4000_ROM_CHESS2 = &device_creator<vc4000_chess2_device>;
vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_vc4000_cart_interface( mconfig, *this )
{
}
vc4000_rom_device::vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, VC4000_ROM_STD, "VC 4000 Standard Carts", tag, owner, clock, "vc4000_rom", __FILE__),
device_vc4000_cart_interface( mconfig, *this )
{
}
vc4000_ram1k_device::vc4000_ram1k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: vc4000_rom_device(mconfig, VC4000_ROM_RAM1K, "VC 4000 Carts w/1K RAM", tag, owner, clock, "vc4000_ram1k", __FILE__)
{
}
vc4000_chess2_device::vc4000_chess2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: vc4000_rom_device(mconfig, VC4000_ROM_CHESS2, "VC 4000 Chess II Cart", tag, owner, clock, "vc4000_chess2", __FILE__)
{
}
/*-------------------------------------------------
mapper specific handlers
-------------------------------------------------*/
READ8_MEMBER(vc4000_rom_device::read_rom)
{
if (offset < m_rom_size)
return m_rom[offset];
else
return 0xff;
}
READ8_MEMBER(vc4000_ram1k_device::read_ram)
{
return m_ram[offset & m_ram.count()];
}
WRITE8_MEMBER(vc4000_ram1k_device::write_ram)
{
m_ram[offset & m_ram.count()] = data;
}
READ8_MEMBER(vc4000_chess2_device::extra_rom)
{
if (offset < (m_rom_size - 0x2000))
return m_rom[offset + 0x2000];
else
return 0xff;
}
READ8_MEMBER(vc4000_chess2_device::read_ram)
{
return m_ram[offset & m_ram.count()];
}
WRITE8_MEMBER(vc4000_chess2_device::write_ram)
{
m_ram[offset & m_ram.count()] = data;
}

62
src/emu/bus/vc4000/rom.h Normal file
View File

@ -0,0 +1,62 @@
#ifndef __VC4000_ROM_H
#define __VC4000_ROM_H
#include "slot.h"
// ======================> vc4000_rom_device
class vc4000_rom_device : public device_t,
public device_vc4000_cart_interface
{
public:
// construction/destruction
vc4000_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
vc4000_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start() {}
virtual void device_reset() {}
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
};
// ======================> vc4000_ram1k_device
class vc4000_ram1k_device : public vc4000_rom_device
{
public:
// construction/destruction
vc4000_ram1k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_ram);
virtual DECLARE_WRITE8_MEMBER(write_ram);
};
// ======================> vc4000_chess2_device
class vc4000_chess2_device : public vc4000_rom_device
{
public:
// construction/destruction
vc4000_chess2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(extra_rom);
virtual DECLARE_READ8_MEMBER(read_ram);
virtual DECLARE_WRITE8_MEMBER(write_ram);
};
// device type definition
extern const device_type VC4000_ROM_STD;
extern const device_type VC4000_ROM_RAM1K;
extern const device_type VC4000_ROM_CHESS2;
#endif

296
src/emu/bus/vc4000/slot.c Normal file
View File

@ -0,0 +1,296 @@
/***********************************************************************************************************
Interton Electronic VC 4000 cart emulation
(through slot devices)
***********************************************************************************************************/
#include "emu.h"
#include "slot.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
const device_type VC4000_CART_SLOT = &device_creator<vc4000_cart_slot_device>;
//**************************************************************************
// APF Cartridges Interface
//**************************************************************************
//-------------------------------------------------
// device_vc4000_cart_interface - constructor
//-------------------------------------------------
device_vc4000_cart_interface::device_vc4000_cart_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device),
m_rom(NULL),
m_rom_size(0)
{
}
//-------------------------------------------------
// ~device_vc4000_cart_interface - destructor
//-------------------------------------------------
device_vc4000_cart_interface::~device_vc4000_cart_interface()
{
}
//-------------------------------------------------
// rom_alloc - alloc the space for the cart
//-------------------------------------------------
void device_vc4000_cart_interface::rom_alloc(UINT32 size, const char *tag)
{
if (m_rom == NULL)
{
astring tempstring(tag);
tempstring.cat(VC4000SLOT_ROM_REGION_TAG);
m_rom = device().machine().memory().region_alloc(tempstring, size, 1, ENDIANNESS_LITTLE)->base();
m_rom_size = size;
}
}
//-------------------------------------------------
// ram_alloc - alloc the space for the ram
//-------------------------------------------------
void device_vc4000_cart_interface::ram_alloc(UINT32 size)
{
m_ram.resize(size);
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// vc4000_cart_slot_device - constructor
//-------------------------------------------------
vc4000_cart_slot_device::vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, VC4000_CART_SLOT, "Interton VC 4000 Cartridge Slot", tag, owner, clock, "vc4000_cart_slot", __FILE__),
device_image_interface(mconfig, *this),
device_slot_interface(mconfig, *this),
m_type(VC4000_STD)
{
}
//-------------------------------------------------
// vc4000_cart_slot_device - destructor
//-------------------------------------------------
vc4000_cart_slot_device::~vc4000_cart_slot_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void vc4000_cart_slot_device::device_start()
{
m_cart = dynamic_cast<device_vc4000_cart_interface *>(get_card_device());
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void vc4000_cart_slot_device::device_config_complete()
{
// set brief and instance name
update_names();
}
//-------------------------------------------------
// APF PCB
//-------------------------------------------------
struct vc4000_slot
{
int pcb_id;
const char *slot_option;
};
// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
static const vc4000_slot slot_list[] =
{
{ VC4000_STD, "std" },
{ VC4000_RAM1K, "ram1k" },
{ VC4000_CHESS2, "chess2" }
};
static int vc4000_get_pcb_id(const char *slot)
{
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
{
if (!core_stricmp(slot_list[i].slot_option, slot))
return slot_list[i].pcb_id;
}
return 0;
}
static const char *vc4000_get_slot(int type)
{
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++)
{
if (slot_list[i].pcb_id == type)
return slot_list[i].slot_option;
}
return "std";
}
/*-------------------------------------------------
call load
-------------------------------------------------*/
bool vc4000_cart_slot_device::call_load()
{
if (m_cart)
{
UINT32 size = (software_entry() == NULL) ? length() : get_software_region_length("rom");
if (size > 0x1800)
{
seterror(IMAGE_ERROR_UNSPECIFIED, "Image extends beyond the expected size for a VC4000 cart");
return IMAGE_INIT_FAIL;
}
m_cart->rom_alloc(size, tag());
if (software_entry() == NULL)
fread(m_cart->get_rom_base(), size);
else
memcpy(m_cart->get_rom_base(), get_software_region("rom"), size);
if (software_entry() == NULL)
{
m_type = VC4000_STD;
// attempt to identify the non-standard types
if (size > 0x1000) // 6k rom + 1k ram - Chess2 only
m_type = VC4000_CHESS2;
else if (size > 0x0800) // some 4k roms have 1k of mirrored ram
m_type = VC4000_RAM1K;
if (m_type == VC4000_RAM1K || m_type == VC4000_CHESS2)
m_cart->ram_alloc(0x400);
}
else
{
const char *pcb_name = get_feature("slot");
if (pcb_name)
m_type = vc4000_get_pcb_id(pcb_name);
if (get_software_region("ram"))
m_cart->ram_alloc(get_software_region_length("ram"));
}
//printf("Type: %s\n", vc4000_get_slot(m_type));
return IMAGE_INIT_PASS;
}
return IMAGE_INIT_PASS;
}
/*-------------------------------------------------
call softlist load
-------------------------------------------------*/
bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
/*-------------------------------------------------
get default card software
-------------------------------------------------*/
void vc4000_cart_slot_device::get_default_card_software(astring &result)
{
if (open_image_file(mconfig().options()))
{
const char *slot_string = "std";
UINT32 size = core_fsize(m_file);
int type = VC4000_STD;
// attempt to identify the non-standard types
if (size > 0x1000) // 6k rom + 1k ram - Chess2 only
type = VC4000_CHESS2;
else if (size > 0x0800) // some 4k roms have 1k of mirrored ram
type = VC4000_RAM1K;
slot_string = vc4000_get_slot(type);
//printf("type: %s\n", slot_string);
clear();
result.cpy(slot_string);
return;
}
software_get_default_slot(result, "std");
}
/*-------------------------------------------------
read
-------------------------------------------------*/
READ8_MEMBER(vc4000_cart_slot_device::read_rom)
{
if (m_cart)
return m_cart->read_rom(space, offset);
else
return 0xff;
}
/*-------------------------------------------------
read
-------------------------------------------------*/
READ8_MEMBER(vc4000_cart_slot_device::extra_rom)
{
if (m_cart)
return m_cart->extra_rom(space, offset);
else
return 0xff;
}
/*-------------------------------------------------
read
-------------------------------------------------*/
READ8_MEMBER(vc4000_cart_slot_device::read_ram)
{
if (m_cart)
return m_cart->read_ram(space, offset);
else
return 0xff;
}
/*-------------------------------------------------
write
-------------------------------------------------*/
WRITE8_MEMBER(vc4000_cart_slot_device::write_ram)
{
if (m_cart)
m_cart->write_ram(space, offset, data);
}

115
src/emu/bus/vc4000/slot.h Normal file
View File

@ -0,0 +1,115 @@
#ifndef __VC4000_SLOT_H
#define __VC4000_SLOT_H
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
/* PCB */
enum
{
VC4000_STD = 0,
VC4000_RAM1K,
VC4000_CHESS2
};
// ======================> device_vc4000_cart_interface
class device_vc4000_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
device_vc4000_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_vc4000_cart_interface();
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
virtual DECLARE_READ8_MEMBER(extra_rom) { return 0xff; }
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_ram) {}
void rom_alloc(UINT32 size, const char *tag);
void ram_alloc(UINT32 size);
UINT8* get_rom_base() { return m_rom; }
UINT8* get_ram_base() { return m_ram; }
UINT32 get_rom_size() { return m_rom_size; }
UINT32 get_ram_size() { return m_ram.count(); }
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
// internal state
UINT8 *m_rom;
UINT32 m_rom_size;
dynamic_buffer m_ram;
};
// ======================> vc4000_cart_slot_device
class vc4000_cart_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
public:
// construction/destruction
vc4000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~vc4000_cart_slot_device();
// device-level overrides
virtual void device_start();
virtual void device_config_complete();
// image-level overrides
virtual bool call_load();
virtual void call_unload() {}
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
int get_type() { return m_type; }
void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
virtual bool is_readable() const { return 1; }
virtual bool is_writeable() const { return 0; }
virtual bool is_creatable() const { return 0; }
virtual bool must_be_loaded() const { return 0; }
virtual bool is_reset_on_load() const { return 1; }
virtual const option_guide *create_option_guide() const { return NULL; }
virtual const char *image_interface() const { return "vc4000_cart"; }
virtual const char *file_extensions() const { return "bin,rom"; }
// slot interface overrides
virtual void get_default_card_software(astring &result);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
virtual DECLARE_READ8_MEMBER(extra_rom);
virtual DECLARE_READ8_MEMBER(read_ram);
virtual DECLARE_WRITE8_MEMBER(write_ram);
protected:
int m_type;
device_vc4000_cart_interface* m_cart;
};
// device type definition
extern const device_type VC4000_CART_SLOT;
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define VC4000SLOT_ROM_REGION_TAG ":cart:rom"
#define MCFG_VC4000_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, VC4000_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
#endif

View File

@ -120,13 +120,12 @@ anything in hardware. No cartridge has been found which uses them.
#include "includes/arcadia.h"
static ADDRESS_MAP_START( arcadia_mem, AS_PROGRAM, 8, arcadia_state )
AM_RANGE( 0x0000, 0x0fff) AM_ROM
AM_RANGE( 0x1800, 0x1aff) AM_READWRITE( arcadia_video_r, arcadia_video_w )
AM_RANGE( 0x2000, 0x2fff) AM_ROM
AM_RANGE( 0x0000, 0x0fff) AM_DEVREAD("cartslot", arcadia_cart_slot_device, read_rom)
AM_RANGE( 0x1800, 0x1aff) AM_READWRITE(video_r, video_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( arcadia_io, AS_IO, 8, arcadia_state )
AM_RANGE( S2650_SENSE_PORT,S2650_SENSE_PORT) AM_READ( arcadia_vsync_r)
AM_RANGE( S2650_SENSE_PORT,S2650_SENSE_PORT) AM_READ(vsync_r)
ADDRESS_MAP_END
/* The Emerson Arcadia 2001 controllers have 2 fire buttons on the side,
@ -440,95 +439,41 @@ static const unsigned short arcadia_palette[128+8] = /* bgnd, fgnd */
PALETTE_INIT_MEMBER(arcadia_state, arcadia)
{
int i;
for (i = 0; i < 8; i++)
for (int i = 0; i < 8; i++)
palette.set_indirect_color(i, arcadia_colors[i]);
for (i = 0; i < 128+8; i++)
for (int i = 0; i < 128+8; i++)
palette.set_pen_indirect(i, arcadia_palette[i]);
}
DEVICE_IMAGE_LOAD_MEMBER( arcadia_state, arcadia_cart )
void arcadia_state::machine_start()
{
UINT8 *rom = memregion("maincpu")->base();
int size;
memset(rom, 0, 0x8000);
if (image.software_entry() == NULL)
if (m_cart->exists())
{
size = image.length();
if (size > memregion("maincpu")->bytes())
size = memregion("maincpu")->bytes();
if (image.fread(rom, size) != size)
return IMAGE_INIT_FAIL;
switch (m_cart->get_type())
{
case ARCADIA_STD:
m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0xffff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
break;
case ARCADIA_GOLF:
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
break;
}
}
else
{
size = image.get_software_region_length("rom");
memcpy(rom, image.get_software_region("rom"), size);
}
if (size > 0x1000)
memmove(rom + 0x2000, rom + 0x1000, size - 0x1000);
if (size > 0x2000)
memmove(rom + 0x4000, rom + 0x3000, size - 0x2000);
#if 1
// golf cartridge support
// 4kbyte at 0x0000
// 2kbyte at 0x4000
if (size <= 0x2000)
memcpy(rom + 0x4000, rom + 0x2000, 0x1000);
#else
/* this is a testpatch for the golf cartridge
so it could be burned in a arcadia 2001 cartridge
activate it and use debugger to save patched version */
// not enough yet (some pointers stored as data?)
int i;
static const struct { UINT16 address; UINT8 old; UINT8 new; }
patch[]= {
{ 0x0077,0x40,0x20 },
{ 0x011e,0x40,0x20 },
{ 0x0348,0x40,0x20 },
{ 0x03be,0x40,0x20 },
{ 0x04ce,0x40,0x20 },
{ 0x04da,0x40,0x20 },
{ 0x0562,0x42,0x22 },
{ 0x0617,0x40,0x20 },
{ 0x0822,0x40,0x20 },
{ 0x095e,0x42,0x22 },
{ 0x09d3,0x42,0x22 },
{ 0x0bb0,0x42,0x22 },
{ 0x0efb,0x40,0x20 },
{ 0x0ec1,0x43,0x23 },
{ 0x0f00,0x40,0x20 },
{ 0x0f12,0x40,0x20 },
{ 0x0ff5,0x43,0x23 },
{ 0x0ff7,0x41,0x21 },
{ 0x0ff9,0x40,0x20 },
{ 0x0ffb,0x41,0x21 },
{ 0x20ec,0x42,0x22 }
};
for (i = 0; i < ARRAY_LENGTH(patch); i++)
{
assert(rom[patch[i].address] == patch[i].old);
rom[patch[i].address] = patch[i].new;
}
#endif
return IMAGE_INIT_PASS;
}
static SLOT_INTERFACE_START(arcadia_cart)
SLOT_INTERFACE_INTERNAL("std", ARCADIA_ROM_STD)
SLOT_INTERFACE_INTERNAL("golf", ARCADIA_ROM_GOLF)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( arcadia, arcadia_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", S2650, 3580000/4) /* 0.895 MHz */
MCFG_CPU_PROGRAM_MAP(arcadia_mem)
MCFG_CPU_IO_MAP(arcadia_io)
MCFG_CPU_PERIODIC_INT_DRIVER(arcadia_state, arcadia_video_line, 262*60)
MCFG_CPU_PERIODIC_INT_DRIVER(arcadia_state, video_line, 262*60)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
@ -545,23 +490,19 @@ static MACHINE_CONFIG_START( arcadia, arcadia_state )
MCFG_PALETTE_INDIRECT_ENTRIES(8)
MCFG_PALETTE_INIT_OWNER(arcadia_state, arcadia)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_ARCADIA_SOUND_ADD("custom")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("arcadia_cart")
MCFG_CARTSLOT_LOAD(arcadia_state,arcadia_cart)
MCFG_ARCADIA_CARTRIDGE_ADD("cartslot", arcadia_cart, NULL)
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","arcadia")
MACHINE_CONFIG_END
ROM_START(advsnha)
ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)

View File

@ -45,8 +45,6 @@ It consisted of a 2K ROM and 2K RAM which are most likely mapped as follows (nee
The Cartridge is called Hobby Module and the Rom is probably the same as used in
elektor TV Game Computer which is a kind of developer machine for the VC4000.
Go to the bottom to see the game list and emulation status of each.
******************************************************************************
Elektor TV Games Computer
@ -360,55 +358,166 @@ PALETTE_INIT_MEMBER(vc4000_state, vc4000)
palette.set_pen_colors(0, vc4000_palette, ARRAY_LENGTH(vc4000_palette));
}
DEVICE_IMAGE_LOAD_MEMBER( vc4000_state, vc4000_cart )
void vc4000_state::machine_start()
{
address_space &memspace = m_maincpu->space(AS_PROGRAM);
UINT32 size;
if (image.software_entry() == NULL)
size = image.length();
else
size = image.get_software_region_length("rom");
if (size > 0x1600)
size = 0x1600;
if (size > 0x1000) /* 6k rom + 1k ram - Chess2 only */
if (m_cart->exists())
{
memspace.install_read_bank(0x0800, 0x15ff, "bank1"); /* extra rom */
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000);
memspace.install_readwrite_bank(0x1800, 0x1bff, "bank2"); /* ram */
membank("bank2")->set_base(memregion("maincpu")->base() + 0x1800);
}
else if (size > 0x0800) /* some 4k roms have 1k of mirrored ram */
{
memspace.install_read_bank(0x0800, 0x0fff, "bank1"); /* extra rom */
membank("bank1")->set_base(memregion("maincpu")->base() + 0x0800);
memspace.install_readwrite_bank(0x1000, 0x15ff, 0, 0x800, "bank2"); /* ram */
membank("bank2")->set_base(memregion("maincpu")->base() + 0x1000);
}
else if (size == 0x0800) /* 2k roms + 2k ram - Hobby Module(Radofin) and elektor TVGC*/
{
memspace.install_readwrite_bank(0x0800, 0x0fff, "bank1"); /* ram */
membank("bank1")->set_base(memregion("maincpu")->base() + 0x0800);
}
if (size > 0)
{
if (image.software_entry() == NULL)
// extra handler
switch (m_cart->get_type())
{
if (image.fread(memregion("maincpu")->base(), size) != size)
return IMAGE_INIT_FAIL;
case VC4000_STD:
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
break;
case VC4000_RAM1K:
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
break;
case VC4000_CHESS2:
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
break;
// undumped Radofin Hobby Module
// case VC4000_HOBBY:
// m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart));
// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart));
// break;
}
m_cart->save_ram();
}
}
QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
int i;
int exec_addr;
int quick_length;
dynamic_buffer quick_data;
int read_;
int result = IMAGE_INIT_FAIL;
quick_length = image.length();
quick_data.resize(quick_length);
read_ = image.fread( quick_data, quick_length);
if (read_ != quick_length)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
image.message(" Cannot read the file");
}
else
{
if (core_stricmp(image.filetype(), "tvc")==0)
{
if (quick_data[0] != 2)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
image.message(" Invalid header");
}
else
{
int quick_addr = quick_data[1] * 256 + quick_data[2];
exec_addr = quick_data[3] * 256 + quick_data[4];
if (quick_length < 0x5)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
image.message(" File too short");
}
else
if ((quick_length + quick_addr - 5) > 0x1600)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
image.message(" File too long");
}
else
{
space.write_byte(0x08be, quick_data[3]);
space.write_byte(0x08bf, quick_data[4]);
for (i = 5; i < quick_length; i++)
space.write_byte(i - 5 + quick_addr, quick_data[i]);
/* display a message about the loaded quickload */
image.message(" Quickload: size=%04X : start=%04X : end=%04X : exec=%04X",quick_length-5,quick_addr,quick_addr+quick_length-5,exec_addr);
// Start the quickload
m_maincpu->set_state_int(S2650_PC, exec_addr);
result = IMAGE_INIT_PASS;
}
}
}
else
memcpy(memregion("maincpu")->base(), image.get_software_region("rom"), size);
if (core_stricmp(image.filetype(), "pgm")==0)
{
if (quick_data[0] != 0)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
image.message(" Invalid header");
}
else
{
exec_addr = quick_data[1] * 256 + quick_data[2];
if (exec_addr >= quick_length)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Exec address beyond end of file");
image.message(" Exec address beyond end of file");
}
else
if (quick_length < 0x904)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
image.message(" File too short");
}
else
if (quick_length > 0x2000)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
image.message(" File too long");
}
else
{
space.write_byte(0x08be, quick_data[1]);
space.write_byte(0x08bf, quick_data[2]);
// load to 08C0-15FF (standard ram + extra)
int read_ = 0x1600;
if (quick_length < 0x1600)
read_ = quick_length;
for (i = 0x8c0; i < read_; i++)
space.write_byte(i, quick_data[i]);
// load to 1F50-1FAF (PVI regs)
read_ = 0x1FB0;
if (quick_length < 0x1FB0)
read_ = quick_length;
if (quick_length > 0x1FC0)
for (i = 0x1F50; i < read_; i++)
vc4000_video_w(space, i-0x1f00, quick_data[i]);
/* display a message about the loaded quickload */
image.message(" Quickload: size=%04X : exec=%04X",quick_length,exec_addr);
// Start the quickload
m_maincpu->set_state_int(S2650_PC, exec_addr);
result = IMAGE_INIT_PASS;
}
}
}
}
return IMAGE_INIT_PASS;
return result;
}
static SLOT_INTERFACE_START(vc4000_cart)
SLOT_INTERFACE_INTERNAL("std", VC4000_ROM_STD)
SLOT_INTERFACE_INTERNAL("ram1k", VC4000_ROM_RAM1K)
SLOT_INTERFACE_INTERNAL("chess2", VC4000_ROM_CHESS2)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START( vc4000, vc4000_state )
/* basic machine hardware */
// MCFG_CPU_ADD("maincpu", S2650, 865000) /* 3550000/4, 3580000/3, 4430000/3 */
@ -437,11 +546,7 @@ static MACHINE_CONFIG_START( vc4000, vc4000_state )
MCFG_QUICKLOAD_ADD("quickload", vc4000_state, vc4000, "pgm,tvc", 0)
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("rom,bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("vc4000_cart")
MCFG_CARTSLOT_LOAD(vc4000_state,vc4000_cart)
MCFG_VC4000_CARTRIDGE_ADD("cartslot", vc4000_cart, NULL)
/* software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","vc4000")
@ -552,131 +657,10 @@ ROM_START( elektor )
ROM_LOAD( "elektor.rom", 0x0000, 0x0800, CRC(e6ef1ee1) SHA1(6823b5a22582344016415f2a37f9f3a2dc75d2a7))
ROM_END
QUICKLOAD_LOAD_MEMBER( vc4000_state,vc4000)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
int i;
int exec_addr;
int quick_length;
dynamic_buffer quick_data;
int read_;
int result = IMAGE_INIT_FAIL;
quick_length = image.length();
quick_data.resize(quick_length);
read_ = image.fread( quick_data, quick_length);
if (read_ != quick_length)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
image.message(" Cannot read the file");
}
else
{
if (core_stricmp(image.filetype(), "tvc")==0)
{
if (quick_data[0] != 2)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
image.message(" Invalid header");
}
else
{
int quick_addr = quick_data[1] * 256 + quick_data[2];
exec_addr = quick_data[3] * 256 + quick_data[4];
if (quick_length < 0x5)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
image.message(" File too short");
}
else
if ((quick_length + quick_addr - 5) > 0x1600)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
image.message(" File too long");
}
else
{
space.write_byte(0x08be, quick_data[3]);
space.write_byte(0x08bf, quick_data[4]);
for (i = 5; i < quick_length; i++)
space.write_byte(i - 5 + quick_addr, quick_data[i]);
/* display a message about the loaded quickload */
image.message(" Quickload: size=%04X : start=%04X : end=%04X : exec=%04X",quick_length-5,quick_addr,quick_addr+quick_length-5,exec_addr);
// Start the quickload
m_maincpu->set_state_int(S2650_PC, exec_addr);
result = IMAGE_INIT_PASS;
}
}
}
else
if (core_stricmp(image.filetype(), "pgm")==0)
{
if (quick_data[0] != 0)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Invalid header");
image.message(" Invalid header");
}
else
{
exec_addr = quick_data[1] * 256 + quick_data[2];
if (exec_addr >= quick_length)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Exec address beyond end of file");
image.message(" Exec address beyond end of file");
}
else
if (quick_length < 0x904)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too short");
image.message(" File too short");
}
else
if (quick_length > 0x2000)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "File too long");
image.message(" File too long");
}
else
{
space.write_byte(0x08be, quick_data[1]);
space.write_byte(0x08bf, quick_data[2]);
// load to 08C0-15FF (standard ram + extra)
int read_ = 0x1600;
if (quick_length < 0x1600)
read_ = quick_length;
for (i = 0x8c0; i < read_; i++)
space.write_byte(i, quick_data[i]);
// load to 1F50-1FAF (PVI regs)
read_ = 0x1FB0;
if (quick_length < 0x1FB0)
read_ = quick_length;
if (quick_length > 0x1FC0)
for (i = 0x1F50; i < read_; i++)
vc4000_video_w(space, i-0x1f00, quick_data[i]);
/* display a message about the loaded quickload */
image.message(" Quickload: size=%04X : exec=%04X",quick_length,exec_addr);
// Start the quickload
m_maincpu->set_state_int(S2650_PC, exec_addr);
result = IMAGE_INIT_PASS;
}
}
}
}
return result;
}
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
CONS(1978, vc4000, 0, 0, vc4000, vc4000, driver_device, 0, "Interton", "Intertion Electronic VC 4000", GAME_IMPERFECT_GRAPHICS ) /* Germany, Austria, UK, Australia */
CONS(1978, vc4000, 0, 0, vc4000, vc4000, driver_device, 0, "Interton", "Interton Electronic VC 4000", GAME_IMPERFECT_GRAPHICS ) /* Germany, Austria, UK, Australia */
CONS(1979, spc4000, vc4000, 0, vc4000, vc4000, driver_device, 0, "Grundig", "Super Play Computer 4000", GAME_IMPERFECT_GRAPHICS ) /* Germany, Austria */
CONS(1979, cx3000tc, vc4000, 0, vc4000, vc4000, driver_device, 0, "Palson", "CX 3000 Tele Computer", GAME_IMPERFECT_GRAPHICS ) /* Spain */
CONS(1979, tvc4000, vc4000, 0, vc4000, vc4000, driver_device, 0, "Koerting", "TVC-4000", GAME_IMPERFECT_GRAPHICS ) /* Argentina */
@ -700,176 +684,3 @@ CONS(1979, krvnjvtv, 0, vc4000, vc4000, vc4000, driver_device,
CONS(1979, oc2000, krvnjvtv, 0, vc4000, vc4000, driver_device, 0, "SOE", "OC-2000", GAME_IMPERFECT_GRAPHICS ) /* France */
CONS(1980, mpt05, 0, vc4000, vc4000, vc4000, driver_device, 0, "ITMC", "MPT-05", GAME_IMPERFECT_GRAPHICS ) /* France */
CONS(1979, elektor, 0, 0, elektor, elektor, driver_device, 0, "Elektor", "Elektor TV Games Computer", GAME_IMPERFECT_GRAPHICS )
/* Game List and Emulation Status
When you load a game it will normally appear to be unresponsive. Most carts contain a number of variants
of each game (e.g. Difficulty, Player1 vs Player2 or Player1 vs Computer, etc).
Press F2 (if needed) to select which game variant you would like to play. The variant number will increment
on-screen. When you've made your choice, press F1 to start. The main keys are unlabelled, because an overlay
is provided with each cart. See below for a guide. You need to read the instructions that come with each game.
In some games, the joystick is used like 4 buttons, and other games like a paddle. The two modes are
incompatible when using a keyboard. Therefore (in the emulation) a config dipswitch is used. The preferred
setting is listed below.
(AC = Auto-centre, NAC = no auto-centre, 90 = turn controller 90 degrees).
The list is rather incomplete, information will be added as it becomes available.
The game names and numbers were obtained from the Amigan Software site.
Cart Num Name
----------------------------------------------
1. Grand Prix / Car Races / Autosport / Motor Racing / Road Race
Config: Paddle, NAC
Status: Working
Controls: Left-Right: Steer; Up: Accelerate
2. Black Jack
Status: Not working (some digits missing; indicator missing; dealer's cards missing)
Controls: set bet with S and D; A to deal; 1 to hit, 2 to stay; Q accept insurance, E to decline; double-up (unknown key)
Indicator: E make a bet then deal; I choose insurance; - you lost; + you won; X hit or stay
3. Olympics / Paddle Games / Bat & Ball / Pro Sport 60 / Sportsworld
Config: Paddle, NAC
Status: Working
4. Tank Battle / Combat
Config: Button, 90
Status: Working
Controls: Left-Right: Steer; Up: Accelerate; Fire: Shoot
5. Maths 1
Status: Working
Controls: Z difficulty; X = addition or subtraction; C ask question; A=1;S=2;D=3;Q=4;W=5;E=6;1=7;2=8;3=9;0=0; C enter
6. Maths 2
Status: Not working
Controls: Same as above.
7. Air Sea Attack / Air Sea Battle
Config: Button, 90
Status: Working
Controls: Left-Right: Move; Fire: Shoot
8. Treasure Hunt / Capture the Flag / Concentration / Memory Match
Config: Buttons
Status: Working
9. Labyrinth / Maze / Intelligence 1
Config: Buttons
Status: Working
10. Winter Sports
Notes: Background colours should be Cyan and White instead of Red and Black
11. Hippodrome / Horse Race
12. Hunting / Shooting Gallery
13. Chess 1
Status: Can't see what you're typing, wrong colours
14. Moto-cros
15. Four in a row / Intelligence 2
Config: Buttons
Status: Working
Notes: Seems the unused squares should be black. The screen jumps about while the computer is "thinking".
16. Code Breaker / Master Mind / Intelligence 3 / Challenge
17. Circus
STatus: severe gfx issues
18. Boxing / Prize Fight
19. Outer Space / Spacewar / Space Attack / Outer Space Combat
20. Melody Simon / Musical Memory / Follow the Leader / Musical Games / Electronic Music / Face the Music
21. Capture / Othello / Reversi / Attack / Intelligence 4
Config: Buttons
Status: Working
Notes: Seems the unused squares should be black
22. Chess 2
Status: Can't see what you're typing, wrong colours
23. Pinball / Flipper / Arcade
Status: gfx issues
24. Soccer
25. Bowling / NinePins
Config: Paddle, rotated 90 degrees, up/down autocentre, left-right does not
Status: Working
26. Draughts
27. Golf
Status: gfx issues
28. Cockpit
Status: gfx issues
29. Metropolis / Hangman
Status: gfx issues
30. Solitaire
31. Casino
Status: gfx issues, items missing and unplayable
Controls: 1 or 3=START; q=GO; E=STOP; D=$; Z=^; X=tens; C=units
32. Invaders / Alien Invasion / Earth Invasion
Status: Works
Config: Buttons
33. Super Invaders
Status: Stars are missing, colours are wrong
Config: Buttons (90)
36. BackGammon
Status: Not all counters are visible, Dice & game number not visible.
Controls: Fire=Exec; 1=D+; 3=D-; Q,W,E=4,5,6; A,S,D=1,2,3; Z=CL; X=STOP; C=SET
37. Monster Man / Spider's Web
Status: Works
Config: Buttons
38. Hyperspace
Status: Works
Config: Buttons (90)
Controls: 3 - status button; Q,W,E,A,S,D,Z,X,C selects which galaxy to visit
40. Super Space
Status: Works, some small gfx issues near the bottom
Config: Buttons
Acetronic: (dumps are compatible)
------------
* Shooting Gallery
Status: works but screen flickers
Config: Buttons
* Planet Defender
Status: Works
Config: Paddle (NAC)
* Laser Attack
Status: Works
Config: Buttons
Public Domain: (written for emulators, may not work on real hardware)
---------------
* Picture (no controls) - works
* Wincadia Stub (no controls) - works, small graphic error */

View File

@ -9,9 +9,10 @@
#include "emu.h"
#include "cpu/s2650/s2650.h"
#include "imagedev/cartslot.h"
#include "audio/arcadia.h"
#include "bus/arcadia/slot.h"
#include "bus/arcadia/rom.h"
// space vultures sprites above
// combat below and invisible
@ -40,13 +41,14 @@ public:
m_controller2_extra(*this, "controller2_extra"),
m_joysticks(*this, "joysticks") ,
m_maincpu(*this, "maincpu"),
m_cart(*this, "cartslot"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_screen(*this, "screen") { }
DECLARE_READ8_MEMBER(arcadia_vsync_r);
DECLARE_READ8_MEMBER(arcadia_video_r);
DECLARE_WRITE8_MEMBER(arcadia_video_w);
DECLARE_READ8_MEMBER(vsync_r);
DECLARE_READ8_MEMBER(video_r);
DECLARE_WRITE8_MEMBER(video_w);
int m_line;
int m_charline;
int m_shift;
@ -92,11 +94,11 @@ public:
} m_reg;
bitmap_ind16 *m_bitmap;
DECLARE_DRIVER_INIT(arcadia);
virtual void machine_start();
virtual void video_start();
DECLARE_PALETTE_INIT(arcadia);
UINT32 screen_update_arcadia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(arcadia_video_line);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( arcadia_cart );
INTERRUPT_GEN_MEMBER(video_line);
protected:
required_device<arcadia_sound_device> m_custom;
@ -111,11 +113,12 @@ protected:
required_ioport m_controller2_extra;
required_ioport m_joysticks;
void arcadia_draw_char(UINT8 *ch, int charcode, int y, int x);
void arcadia_vh_draw_line(int y, UINT8 chars1[16]);
int arcadia_sprite_collision(int n1, int n2);
void arcadia_draw_sprites();
void draw_char(UINT8 *ch, int charcode, int y, int x);
void vh_draw_line(int y, UINT8 chars1[16]);
int sprite_collision(int n1, int n2);
void draw_sprites();
required_device<cpu_device> m_maincpu;
required_device<arcadia_cart_slot_device> m_cart;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;

View File

@ -9,11 +9,13 @@
#include "emu.h"
#include "cpu/s2650/s2650.h"
#include "imagedev/cartslot.h"
#include "imagedev/snapquik.h"
#include "imagedev/cassette.h"
#include "sound/wave.h"
#include "bus/vc4000/slot.h"
#include "bus/vc4000/rom.h"
// define this to use digital inputs instead of the slow
// autocentering analog mame joys
#define ANALOG_HACK
@ -73,9 +75,10 @@ class vc4000_state : public driver_device
public:
vc4000_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_cassette(*this, "cassette"),
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
m_cassette(*this, "cassette"),
m_cart(*this, "cartslot"),
m_keypad1_1(*this, "KEYPAD1_1"),
m_keypad1_2(*this, "KEYPAD1_2"),
m_keypad1_3(*this, "KEYPAD1_3"),
@ -110,17 +113,18 @@ public:
UINT8 m_objects[512];
UINT8 m_irq_pause;
bitmap_ind16 *m_bitmap;
optional_device<cassette_image_device> m_cassette;
virtual void machine_start();
virtual void video_start();
DECLARE_PALETTE_INIT(vc4000);
UINT32 screen_update_vc4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vc4000_video_line);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vc4000_cart);
DECLARE_QUICKLOAD_LOAD_MEMBER(vc4000);
protected:
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
optional_device<cassette_image_device> m_cassette;
required_device<vc4000_cart_slot_device> m_cart;
required_ioport m_keypad1_1;
required_ioport m_keypad1_2;
required_ioport m_keypad1_3;

View File

@ -569,6 +569,7 @@ BUSES += ABCKB
BUSES += ADAM
BUSES += ADAMNET
BUSES += APF
BUSES += ARCADIA
BUSES += BML3
BUSES += BW2
BUSES += C64
@ -622,6 +623,7 @@ BUSES += SNES
BUSES += TI99PEB
BUSES += TVC
BUSES += VBOY
BUSES += VC4000
BUSES += VCS
BUSES += VCS_CTRL
BUSES += VIC10

View File

@ -308,7 +308,7 @@ void arcadia_state::video_start()
}
}
READ8_MEMBER( arcadia_state::arcadia_video_r )
READ8_MEMBER( arcadia_state::video_r )
{
UINT8 data=0;
switch (offset)
@ -370,7 +370,7 @@ READ8_MEMBER( arcadia_state::arcadia_video_r )
return data;
}
WRITE8_MEMBER( arcadia_state::arcadia_video_w )
WRITE8_MEMBER( arcadia_state::video_w )
{
m_reg.data[offset]=data;
switch (offset)
@ -419,7 +419,7 @@ WRITE8_MEMBER( arcadia_state::arcadia_video_w )
}
}
void arcadia_state::arcadia_draw_char(UINT8 *ch, int charcode, int y, int x)
void arcadia_state::draw_char(UINT8 *ch, int charcode, int y, int x)
{
int k,b,cc,sc, colour;
if (m_multicolor)
@ -472,7 +472,7 @@ void arcadia_state::arcadia_draw_char(UINT8 *ch, int charcode, int y, int x)
}
void arcadia_state::arcadia_vh_draw_line(int y, UINT8 chars1[16])
void arcadia_state::vh_draw_line(int y, UINT8 chars1[16])
{
int x, ch, j, h;
int graphics = m_graphics;
@ -501,14 +501,14 @@ void arcadia_state::arcadia_vh_draw_line(int y, UINT8 chars1[16])
}
}
if (graphics)
arcadia_draw_char(m_rectangle[ch&0x3f], ch, y, x);
draw_char(m_rectangle[ch&0x3f], ch, y, x);
else
arcadia_draw_char(m_chars[ch&0x3f], ch, y, x);
draw_char(m_chars[ch&0x3f], ch, y, x);
}
}
int arcadia_state::arcadia_sprite_collision(int n1, int n2)
int arcadia_state::sprite_collision(int n1, int n2)
{
int k, b1, b2, x;
if (m_pos[n1].x+8<=m_pos[n2].x)
@ -536,7 +536,7 @@ int arcadia_state::arcadia_sprite_collision(int n1, int n2)
}
void arcadia_state::arcadia_draw_sprites()
void arcadia_state::draw_sprites()
{
int i, k, x, y, color=0;
UINT8 b;
@ -603,15 +603,15 @@ void arcadia_state::arcadia_draw_sprites()
}
}
}
if (arcadia_sprite_collision(0,1)) m_reg.d.collision_sprite&=~1;
if (arcadia_sprite_collision(0,2)) m_reg.d.collision_sprite&=~2;
if (arcadia_sprite_collision(0,3)) m_reg.d.collision_sprite&=~4;
if (arcadia_sprite_collision(1,2)) m_reg.d.collision_sprite&=~8;
if (arcadia_sprite_collision(1,3)) m_reg.d.collision_sprite&=~0x10; //guess
if (arcadia_sprite_collision(2,3)) m_reg.d.collision_sprite&=~0x20; //guess
if (sprite_collision(0,1)) m_reg.d.collision_sprite&=~1;
if (sprite_collision(0,2)) m_reg.d.collision_sprite&=~2;
if (sprite_collision(0,3)) m_reg.d.collision_sprite&=~4;
if (sprite_collision(1,2)) m_reg.d.collision_sprite&=~8;
if (sprite_collision(1,3)) m_reg.d.collision_sprite&=~0x10; //guess
if (sprite_collision(2,3)) m_reg.d.collision_sprite&=~0x20; //guess
}
INTERRUPT_GEN_MEMBER(arcadia_state::arcadia_video_line)
INTERRUPT_GEN_MEMBER(arcadia_state::video_line)
{
int width = m_screen->width();
@ -639,7 +639,7 @@ INTERRUPT_GEN_MEMBER(arcadia_state::arcadia_video_line)
{
if (((m_line-m_ypos)&(h-1))==0)
{
arcadia_vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars1[m_charline]);
vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars1[m_charline]);
}
}
else
@ -647,7 +647,7 @@ INTERRUPT_GEN_MEMBER(arcadia_state::arcadia_video_line)
{
if (((m_line-m_ypos)&(h-1))==0)
{
arcadia_vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars2[m_charline-13]);
vh_draw_line(m_charline*h+m_ypos, m_reg.d.chars2[m_charline-13]);
}
m_charline-=13;
}
@ -659,10 +659,10 @@ INTERRUPT_GEN_MEMBER(arcadia_state::arcadia_video_line)
}
}
if (m_line==261)
arcadia_draw_sprites();
draw_sprites();
}
READ8_MEMBER( arcadia_state::arcadia_vsync_r )
READ8_MEMBER( arcadia_state::vsync_r )
{
return m_line>=216 ? 0x80 : 0 ;
}