(MESS) atari400.c progress: [Fabio Priuli]

- Rewritten cart emulation to use slot devices (many 
  "mappers" do not fully work) and unified cart handling 
  among 8bit home computers, XEGS and Atari 5200
- Added support for loading carts with bankswitch to all XL/XE 
  models
- Added support for loading XEGS carts in Atari 8bits home
  computers (XEGS instead will only load XEGS games until
  support for the keyboard add-on is included)
- Big clean up of the driver, simplifying memory map, removing
  writes to ROM, etc.
- Changed NOT_WORKING flag to IMPERFECT_GRAPHICS
  in 600XL, 65XE, 800XE and XEGS since they should now be 
  working to the same extent of the 800XL, and bugs shall be 
  reported.


as a consequence of the above changes, the new softlists a800.xml, a5200.xml
and xegs.xml are not compatible anymore with 0.154: keep the old xmls until
0.155 if you don't compile your own exe
This commit is contained in:
Fabio Priuli 2014-09-02 05:02:02 +00:00
parent 2851a8ae56
commit 991bcbd1e5
19 changed files with 3376 additions and 2196 deletions

9
.gitattributes vendored
View File

@ -485,6 +485,15 @@ src/emu/bus/a7800/rom.c svneol=native#text/plain
src/emu/bus/a7800/rom.h svneol=native#text/plain
src/emu/bus/a7800/xboard.c svneol=native#text/plain
src/emu/bus/a7800/xboard.h svneol=native#text/plain
src/emu/bus/a800/a800_carts.h svneol=native#text/plain
src/emu/bus/a800/a800_slot.c svneol=native#text/plain
src/emu/bus/a800/a800_slot.h svneol=native#text/plain
src/emu/bus/a800/oss.c svneol=native#text/plain
src/emu/bus/a800/oss.h svneol=native#text/plain
src/emu/bus/a800/rom.c svneol=native#text/plain
src/emu/bus/a800/rom.h svneol=native#text/plain
src/emu/bus/a800/sparta.c svneol=native#text/plain
src/emu/bus/a800/sparta.h svneol=native#text/plain
src/emu/bus/abcbus/abc890.c svneol=native#text/plain
src/emu/bus/abcbus/abc890.h svneol=native#text/plain
src/emu/bus/abcbus/abcbus.c svneol=native#text/plain

View File

@ -103,7 +103,8 @@ Possible Undumped protos: -
<description>5200 Menu (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="5200menu.bin" size="8192" crc="0de2db48" sha1="e64fb1a353c72b87c5483bb88cb3523ea5d37b59" offset="0" />
</dataarea>
@ -114,7 +115,8 @@ Possible Undumped protos: -
<description>A.E. (Prototype)</description>
<year>1982</year>
<publisher>Brøderbund Software Inc</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="aep.bin" size="16384" crc="35484751" sha1="e18a603b18b85e24f9c938b33b6077a767c1fa9c" offset="0" />
</dataarea>
@ -126,7 +128,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FC-008" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="decathln.bin" size="16384" crc="f43e7cd0" sha1="db203973df13b071da46d52fdb078a76f4db428d" offset="0" />
</dataarea>
@ -138,7 +141,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5201" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="asteroid.bin" size="8192" crc="38480891" sha1="18697dd8e640fa1578b3b4ae09af484c14fb8410" offset="0" />
</dataarea>
@ -150,8 +154,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9560" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="astrchse.bin" size="16384" crc="4019ecec" sha1="67e405c37e55dec4071018e8166ab4faf9f21df5" offset="0" />
</dataarea>
@ -163,7 +167,8 @@ Possible Undumped protos: -
<year>1986</year>
<publisher>Atari / Lucasfilm</publisher>
<info name="serial" value="CX5255" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="ballblze.bin" size="32768" crc="94d97d14" sha1="ed92ffd21abd50339f5be0cbff9bdcc8fafbc67f" offset="0" />
</dataarea>
@ -174,7 +179,8 @@ Possible Undumped protos: -
<description>Barroom Baseball (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="barbball.bin" size="32768" crc="21d19c8f" sha1="510ccb20df2ecdbe7f8373de6a9fc11493e8c3f2" offset="0" />
</dataarea>
@ -186,8 +192,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5239" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="bzone.bin" size="16384" crc="b3b8e314" sha1="a339cddfc28477c21c58783d2d3b0cf0f4626ddf" offset="0" />
</dataarea>
@ -199,7 +205,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-009" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="beamrid.bin" size="16384" crc="9bae58dc" sha1="b75d555d059ad61992f9f5a234129ecbf9504c35" offset="0" />
</dataarea>
@ -211,7 +218,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5221" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="berzerk.bin" size="16384" crc="be3cd348" sha1="e56ccc6bf427a832ce00540b02d065a2688260dc" offset="0" />
</dataarea>
@ -223,7 +231,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5231" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="blckbelt.bin" size="32768" crc="ed47b0d8" sha1="9b7ecd444b6239442ef1f54cd8e14c294c064da2" offset="0" />
</dataarea>
@ -234,7 +243,8 @@ Possible Undumped protos: -
<description>Blaster (Prototype)</description>
<year>1984</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="blaster.bin" size="16384" crc="c8f9c094" sha1="ab3130256d16af09cac8b11749dfaff6aaaa3ea3" offset="0" />
</dataarea>
@ -246,7 +256,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>CBS Electronics / Bally Midway MFG. Co.</publisher>
<info name="serial" value="80033" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="blueprnt.bin" size="16384" crc="0624e6e7" sha1="1e1a20c104bf4d55eca0ca1e72dc5dc64fa6b1b5" offset="0" />
</dataarea>
@ -257,7 +268,8 @@ Possible Undumped protos: -
<description>Bounty Bob Strikes Back!</description>
<year>1984</year>
<publisher>Big Five Software</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_bbsb" />
<dataarea name="rom" size="40960">
<rom name="bbstrksb.bin" size="40960" crc="7873c6dd" sha1="cfdd2f8dabb03d8784f336bb0c804270dc3a8a6c" offset="0" />
</dataarea>
@ -269,8 +281,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Sega</publisher>
<info name="serial" value="005-02" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="buckrog.bin" size="16384" crc="04807705" sha1="bc7c81f758dd3e224e42ac8a16c1a12d69aed722" offset="0" />
</dataarea>
@ -282,8 +294,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5212" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="16384">
<rom name="centiped.bin" size="16384" crc="536a70fe" sha1="eb343b90d3de696e69b1f039d4fb2c6afb0d80c0" offset="0" />
@ -296,7 +308,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5253" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="choplift.bin" size="16384" crc="9ad53bbc" sha1="9f1ee191319ef0261cc7074a81c0e6d6b7464cd2" offset="0" />
</dataarea>
@ -308,8 +321,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Sega</publisher>
<info name="serial" value="006-02" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="congo.bin" size="16384" crc="f1f42bbd" sha1="e0203c2124127eba2d679be548fa257ecc5b2607" offset="0" />
</dataarea>
@ -322,8 +335,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5210" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="cntrmsre.bin" size="16384" crc="fd541c80" sha1="fa6d77e6e9afd0ea42fc9f9807932bf9e8fb170e" offset="0" />
</dataarea>
@ -335,7 +348,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-011" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="pitfall2.bin" size="16384" crc="4b910461" sha1="b051f0fb2e816787ab6eed0cb008b9f8cc9963dc" offset="0" />
</dataarea>
@ -347,8 +361,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5218" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="defender.bin" size="16384" crc="bd52623b" sha1="44f6dbf5013a70e646d5c5232981d517069fc449" offset="0" />
</dataarea>
@ -360,8 +374,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5211" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="digdug.bin" size="16384" crc="6a687f9c" sha1="387a76ba5912251e2285b7722004ad75e9ede523" offset="0" />
</dataarea>
@ -373,7 +387,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-005" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="dredfctr.bin" size="8192" crc="460def2d" sha1="ea7b40ce1106378e1d409cab6634fb2e483ff238" offset="0" />
</dataarea>
@ -385,7 +400,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5256" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="finalleg.bin" size="16384" crc="d3bd3221" sha1="48625af4f3e9fe538dab2a0b463887fc8c6b138d" offset="0" />
</dataarea>
@ -396,8 +412,8 @@ Possible Undumped protos: -
<description>Frisky Tom (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="friskyt.bin" size="16384" crc="04b299a4" sha1="69dcc8f59ca449f13dc896b4b29b534762d97064" offset="0" />
</dataarea>
@ -409,7 +425,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9530" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="frogger.bin" size="8192" crc="ae7e3444" sha1="d9a695757f0494aee92a50ab8a49558745e0cedf" offset="0" />
</dataarea>
@ -421,8 +438,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9090" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="frogger2.bin" size="16384" crc="0af19345" sha1="3d815594cf674694b04bb0ff90bf635d7d402fc2" offset="0" />
</dataarea>
@ -434,7 +451,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5206" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="8192">
<rom name="galaxian.bin" size="8192" crc="3ef4a23f" sha1="0df0d7f11d89e2c5b59cc9f98d67d98e203831aa" offset="0" />
@ -447,7 +465,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>CBS Electronics / Bally Midway MFG. Co.</publisher>
<info name="serial" value="80013" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="gorf.bin" size="8192" crc="e955db74" sha1="80926bb270ea66cb5cacc379de1fc16d8a3d814b" offset="0" />
</dataarea>
@ -459,7 +478,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5257" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="gremlins.bin" size="32768" crc="063ec2c4" sha1="f3c32b39580d589799dcead98bb206fbf3df0504" offset="0" />
</dataarea>
@ -471,8 +491,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9080" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="gyruss.bin" size="16384" crc="cfd4a7f9" sha1="d0d8650eb07d1679004d491360c2c041e37c61cd" offset="0" />
</dataarea>
@ -484,7 +504,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-007" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="hero.bin" size="16384" crc="18a73af3" sha1="d286ecb6793a0dda9c9c68f6355dbe3ade6922f9" offset="0" />
</dataarea>
@ -496,8 +517,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9100" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="jamesbnd.bin" size="16384" crc="d9ae4518" sha1="ae765943ae8d909b6ca6ff1560ba027adeeaa515" offset="0" />
</dataarea>
@ -509,8 +530,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5240" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="joust.bin" size="16384" crc="bfd30c01" sha1="0f74125edac90ffd1274a128df2970c239348fb5" offset="0" />
</dataarea>
@ -522,8 +543,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5251" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="jrpacman.bin" size="16384" crc="59983c40" sha1="a3e760d09e4dc6053286967576b5b7d42ee2fd38" offset="0" />
</dataarea>
@ -535,8 +556,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5222" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="jungleh.bin" size="16384" crc="2c676662" sha1="fa02ee04cfad90c6ccf9d9b984e3b7b3327fec12" offset="0" />
</dataarea>
@ -548,7 +569,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>CBS Electronics / Kay Enterprizes Co.</publisher>
<info name="serial" value="80503" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="krazysht.bin" size="8192" crc="ee702214" sha1="c7eb2b4a46a197adfedf33c2ccc17d8424d681c4" offset="0" />
</dataarea>
@ -560,7 +582,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-001" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="4096">
<rom name="kaboom.bin" size="4096" crc="420f5d0b" sha1="a80f876a89a8ceacc71da5d9c02b546970b17730" offset="0" />
@ -573,8 +596,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5229" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="kangaroo.bin" size="16384" crc="ecfa624f" sha1="c3dbeed7adc0e282bf76332ab5a3209550e26d02" offset="0" />
</dataarea>
@ -586,7 +609,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-006" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="keystone.bin" size="8192" crc="8fe3bb2c" sha1="9f31c85a13e919135438590601e33bef11a8df8a" offset="0" />
</dataarea>
@ -598,7 +622,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5260" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="laststar.bin" size="16384" crc="83517703" sha1="4046f60602254a7d86d2a6efd1a330455eaec119" offset="0" />
</dataarea>
@ -609,8 +634,8 @@ Possible Undumped protos: -
<description>Looney Tunes Hotel (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="loontoon.bin" size="16384" crc="84df4925" sha1="bc4a536616ac45689b3ad790f6b1394ebbd8cc7e" offset="0" />
</dataarea>
@ -622,7 +647,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5247" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="mario.bin" size="32768" crc="873742f1" sha1="a293b6b06050e11029d97137f2b1b36059567273" offset="0" />
</dataarea>
@ -633,7 +659,8 @@ Possible Undumped protos: -
<description>Meebzork (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="meebzork.bin" size="32768" crc="9fb13411" sha1="ff0f1d9ed0ae45e3c81b252f3d0a335e03b0aa4b" offset="0" />
</dataarea>
@ -645,7 +672,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-003" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="megamnia.bin" size="8192" crc="240a1e1a" sha1="f5512460c6b6d3a1baa0b23adf6a3a37fe308eb3" offset="0" />
</dataarea>
@ -656,7 +684,8 @@ Possible Undumped protos: -
<description>Meteorites</description>
<year>1983</year>
<publisher>Electra Concepts</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="meteorit.bin" size="16384" crc="ab8e035b" sha1="32d86a381feff43149b66336dcc4ba2523273228" offset="0" />
</dataarea>
@ -667,8 +696,8 @@ Possible Undumped protos: -
<description>Microgammon SB (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="microgam.bin" size="16384" crc="931a454a" sha1="2f152a857a8a58d602b3c717612d9744423ee495" offset="0" />
</dataarea>
@ -680,7 +709,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5248" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="16384">
<rom name="milliped.bin" size="16384" crc="969cfe1a" sha1="1243a8ecfc02a74ae4e1f4fcda38502776f45cb0" offset="0" />
@ -693,7 +723,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Big Five Software</publisher>
<info name="serial" value="BF1912" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="mine2049.bin" size="16384" crc="7df1adfb" sha1="0564b1867a0b570d66dfcbc11adc3e51a2c6f28c" offset="0" />
</dataarea>
@ -705,8 +736,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5230" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="minigolf.bin" size="16384" crc="c597c087" sha1="ef4d3ee7b4da2ef79c6f4d0d1833f10c1eb7725e" offset="0" />
</dataarea>
@ -718,7 +749,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5202" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="8192">
<rom name="missile.bin" size="8192" crc="44d3ff6f" sha1="5c8ec22e131810ccac08066ca96e9944ccfa4ecb" offset="0" />
@ -731,8 +763,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9460" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="montezum.bin" size="16384" crc="2a640143" sha1="7e2a05625598c7e6615f969aa695e64315cd9846" offset="0" />
</dataarea>
@ -744,7 +776,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5241" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="mpatrol.bin" size="16384" crc="d0b2f285" sha1="02dd5b9278c06ae8cbb6dacc094e238fbacf08d2" offset="0" />
</dataarea>
@ -756,7 +789,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>CBS Electronics</publisher>
<info name="serial" value="80083" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="mntnking.bin" size="8192" crc="0f24243c" sha1="2e7ae57260624d1f5710d445a0936f0c280a6655" offset="0" />
</dataarea>
@ -768,7 +802,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9420" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="docastle.bin" size="8192" crc="aa55f9be" sha1="002e6f8c7533b03f8041e7f1896589c0ab0e17a6" offset="0" />
</dataarea>
@ -780,8 +815,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5243" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="mspacman.bin" size="16384" crc="752f5efd" sha1="f93d72444d76075273e508555423936530875148" offset="0" />
</dataarea>
@ -793,8 +828,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5208" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="pacman.bin" size="16384" crc="8873ef51" sha1="ee4b3c6f08aa9fdfab532eec98136306b6923f75" offset="0" />
</dataarea>
@ -806,7 +841,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5236" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="pengo.bin" size="32768" crc="e4f8ba8c" sha1="19ff7622dbbc2915e3e98d8d966340e7e893ff34" offset="0" />
</dataarea>
@ -818,7 +854,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-004" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="pitfall.bin" size="8192" crc="b2887833" sha1="d1c7dc3de097a4bfab82235acec69a97e6e05f18" offset="0" />
</dataarea>
@ -830,8 +867,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5217" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="16384">
<rom name="polepos.bin" size="16384" crc="abc2d1e4" sha1="d504764c5894ee99c0b5e2024cbe833ebba3ab17" offset="0" />
@ -844,8 +881,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9510" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="popeye.bin" size="16384" crc="a18a9a40" sha1="e615aaa0c1d56ac83b91f6087970fa708d6433bf" offset="0" />
</dataarea>
@ -857,7 +894,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9500" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="qbert.bin" size="8192" crc="3fe4a401" sha1="e6966bde5cd4167020c9d21bab613af1648b4d75" offset="0" />
</dataarea>
@ -869,8 +907,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5221" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="qix.bin" size="16384" crc="aea6d2c2" sha1="786cdf54d1625e0d3ea8814506fdeeba5e4ece48" offset="0" />
</dataarea>
@ -882,7 +920,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Sunrise</publisher>
<info name="serial" value="1603" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="questroo.bin" size="16384" crc="b5f3402b" sha1="17a41c5f9a32f8a71939cfaa0e96807b951aedad" offset="0" />
</dataarea>
@ -894,7 +933,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5209" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="32768">
<rom name="rsbsebll.bin" size="32768" crc="44166592" sha1="a94d06739fa19453fa586a836eaacae11fe93989" offset="0" />
@ -907,7 +947,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5219" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="rsbktbll.bin" size="32768" crc="dd217276" sha1="9b21ac7fec8d556585c6970231318ef1f501b2b5" offset="0" />
</dataarea>
@ -919,7 +960,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5219" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="rsbktbll1.bin" size="32768" crc="c90196fa" sha1="9edb066a37ca7657979952c946ab89be7926f4f8" offset="0" />
</dataarea>
@ -931,7 +973,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5219" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="rsbktbll2.bin" size="16384" crc="0f996184" sha1="2b43f74db4833272d2048de8fa32b857af8e090f" offset="0" />
</dataarea>
@ -944,8 +987,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5207" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="16384">
<rom name="rsftball.bin" size="16384" crc="4336c2cc" sha1="a0dbd654ed3ba2583ca175a1356924d9529884df" offset="0" />
@ -959,8 +1002,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5213" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="16384">
<rom name="rssoccer.bin" size="16384" crc="ecbd1853" sha1="c911cc914f3923d5aeb1a897e6dc4a551a9a53da" offset="0" />
@ -973,8 +1016,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5214" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="rstennis.bin" size="16384" crc="10f33c90" sha1="2e6c7472e37926cdfd3d855a4bd37a18fa83d8cf" offset="0" />
</dataarea>
@ -987,7 +1030,8 @@ Possible Undumped protos: -
<year>1986</year>
<publisher>Atari / Lucasfilm</publisher>
<info name="serial" value="CX5254" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="fractal.bin" size="32768" crc="762c591b" sha1="9253d7286cf87999474b37df242ba23b4358ef4a" offset="0" />
</dataarea>
@ -999,7 +1043,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-002" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="riveraid.bin" size="8192" crc="09fc7648" sha1="ce9bd3b0847c5e187c3e8f667c8f5ea771c49965" offset="0" />
</dataarea>
@ -1011,8 +1056,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5242" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="roadrun.bin" size="16384" crc="a97606ab" sha1="0a7aaef5b0ede927cea13e724906207e1db48068" offset="0" />
</dataarea>
@ -1024,7 +1069,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5225" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="robotron.bin" size="16384" crc="4252abd9" sha1="9175e6daca58102ac8b9729d7b0336cf09977d12" offset="0" />
</dataarea>
@ -1036,8 +1082,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5232" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="spcedngn.bin" size="16384" crc="b68d61e8" sha1="127ed1c31c3e85d10212eee7b9e6d71aef7dd891" offset="0" />
</dataarea>
@ -1049,7 +1095,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5204" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="8192">
<rom name="spaceinv.bin" size="8192" crc="de5c354a" sha1="cf411db770217b5af5fcfa32725cc587a8b9e710" offset="0" />
@ -1062,7 +1109,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-012" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="spceshut.bin" size="16384" crc="387365dc" sha1="5ae20e767d9819fe601f3b1ea6d4506ae2f2ceef" offset="0" />
</dataarea>
@ -1073,7 +1121,8 @@ Possible Undumped protos: -
<description>Spitfire (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="spitfire.bin" size="32768" crc="3c311303" sha1="688133761c462d6865bf673ed298b4d828120940" offset="0" />
</dataarea>
@ -1085,8 +1134,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5237" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="sprtgoof.bin" size="16384" crc="73b5b6fb" sha1="5f0354d8792d652313e5a0fa5d395e091c801d97" offset="0" />
</dataarea>
@ -1098,8 +1147,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5202" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="starraid.bin" size="16384" crc="7d819a9f" sha1="57dfc22c9805555f957ed51a2dc7bf35ad00c9d9" offset="0" />
</dataarea>
@ -1111,8 +1160,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Sega</publisher>
<info name="serial" value="004-02" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="startrek.bin" size="16384" crc="69f23548" sha1="19801454ab86f2a5cf691fcd577a71ad2b8dc7d5" offset="0" />
</dataarea>
@ -1124,7 +1173,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9060" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="starwars.bin" size="8192" crc="0675f0a5" sha1="bf77048abc36ba2cba5eeeac812802d6a0eba891" offset="0" />
</dataarea>
@ -1136,8 +1186,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9040" />
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="swa.bin" size="16384" crc="75f566df" sha1="ab676ffe054b23bdd43cee2498afefaabbf9355b" offset="0" />
</dataarea>
@ -1149,7 +1199,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5252" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="stargate.bin" size="16384" crc="1d1cee27" sha1="09d192a3598cdadfb61eceb430b3d5892e40962f" offset="0" />
</dataarea>
@ -1161,7 +1212,8 @@ Possible Undumped protos: -
<year>1982</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5203" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<feature name="peripheral" value="trackball" /> <!-- Works with Trackball controller -->
<dataarea name="rom" size="4096">
<rom name="sprbreak.bin" size="4096" crc="a0642110" sha1="f5f9c7f97bf09e5647e808d892b656f3ee1e19e0" offset="0" />
@ -1174,7 +1226,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Parker Brothers</publisher>
<info name="serial" value="9550" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="scobra.bin" size="8192" crc="97debcd2" sha1="8205093f5fb1fdf0ccb71d667ea0a3849fb0a0f2" offset="0" />
</dataarea>
@ -1185,7 +1238,8 @@ Possible Undumped protos: -
<description>Super Pac-Man (Prototype)</description>
<year>1984</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="spacman.bin" size="16384" crc="0a4ddb1e" sha1="238cb448555d8bb5c96aa0354718411e8777c613" offset="0" />
</dataarea>
@ -1197,7 +1251,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5220" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="tempest.bin" size="16384" crc="1187342f" sha1="85fcea0a4d4d1f22437801c96229ba96e0f6b711" offset="0" />
</dataarea>
@ -1209,7 +1264,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5258" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="trackfld.bin" size="16384" crc="0ba22ece" sha1="9dfbb5d8b77504c66ce3ac4382daf79820393dd8" offset="0" />
</dataarea>
@ -1221,7 +1277,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5216" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="vanguard.bin" size="32768" crc="caaea0a4" sha1="6c633de50e6cc0c0c40061cd24e6f78f552a438f" offset="0" />
</dataarea>
@ -1233,7 +1290,8 @@ Possible Undumped protos: -
<year>1983</year>
<publisher>CBS Electronics</publisher>
<info name="serial" value="80003" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="wow.bin" size="16384" crc="d6f7ddfd" sha1="49debdf3c133fde9905d6d9137da5d8dff8d6283" offset="0" />
</dataarea>
@ -1244,8 +1302,8 @@ Possible Undumped protos: -
<description>Xari Arena (Prototype)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="xariarna.bin" size="16384" crc="b8faaec3" sha1="8b5512d3d2a952c99b9377919f0e06481161d81e" offset="0" />
</dataarea>
@ -1257,7 +1315,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Atari</publisher>
<info name="serial" value="CX5246" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="xevious.bin" size="32768" crc="382634dc" sha1="c3cf33216dfa484309b923f21829d040486bc481" offset="0" />
</dataarea>
@ -1268,7 +1327,8 @@ Possible Undumped protos: -
<description>Yellow Sub Demo</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="4096">
<rom name="yllowsub.bin" size="4096" crc="f47bc091" sha1="e58e1f257923694dbeb586c860f385e74e460f90" offset="0" />
</dataarea>
@ -1280,7 +1340,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Sega</publisher>
<info name="serial" value="008-02" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="zaxxon.bin" size="32768" crc="741746d1" sha1="4a4c4a25c8ed1b0ae79ca22684d7d311a564a7b5" offset="0" />
</dataarea>
@ -1292,7 +1353,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-010" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="zenji.bin" size="8192" crc="da228530" sha1="55da563b4394508c23d866fb1e543262fb45536d" offset="0" />
</dataarea>
@ -1304,7 +1366,8 @@ Possible Undumped protos: -
<year>1984</year>
<publisher>Activision</publisher>
<info name="serial" value="FZ-101" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="16384">
<rom name="znerangr.bin" size="16384" crc="2959d827" sha1="18315bec1e62102290feeb77fb290e1266cf5bfc" offset="0" />
</dataarea>
@ -1315,7 +1378,8 @@ Possible Undumped protos: -
<description>PAM: Pete's Test (USA)</description>
<year>1982</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="petetest.bin" size="8192" crc="28278cd6" sha1="d3ff99e080985c9c8e25389dfa74835e8c9be508" offset="0" />
</dataarea>
@ -1326,8 +1390,8 @@ Possible Undumped protos: -
<description>PAM Diag 2.0</description>
<year>1982</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="pamdiag2.bin" size="16384" crc="e8b130c4" sha1="5cc3b4245faf01c30f77ac20b0b4940f4f8f83d8" offset="0" />
</dataarea>
@ -1338,8 +1402,8 @@ Possible Undumped protos: -
<description>Atari PAM Diagnostics (Rev 2.3)</description>
<year>1983</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<feature name="cart_type" value="A13MIRRORING" />
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200_2chips" />
<dataarea name="rom" size="16384">
<rom name="pamdg23.bin" size="16384" crc="ce07d9ad" sha1="e086e9868aa913e87f94676fd600f003892e73a1" offset="0" />
</dataarea>
@ -1350,7 +1414,8 @@ Possible Undumped protos: -
<description>Atari PAM Final System Test (Rev 1.0)</description>
<year>1982</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="8192">
<rom name="finaltst.bin" size="8192" crc="7ea86e87" sha1="af81c400f1af0ee13a24da5e8b642442a0fc9479" offset="0" />
</dataarea>
@ -1361,7 +1426,8 @@ Possible Undumped protos: -
<description>Boogie (Demo)</description>
<year>1982</year>
<publisher>Atari</publisher>
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="4096">
<rom name="boogie.bin" size="4096" crc="3bd5fdd6" sha1="5236bc13e4b06d2e16d70b0a0c98588e1726da0c" offset="0" />
</dataarea>
@ -1373,7 +1439,8 @@ Possible Undumped protos: -
<year>2002</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="developer" value="Ronen Habot" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="cblast.bin" size="32768" crc="7c988054" sha1="c1a56a1fc51e09b1d8e93af40ddd7596847e6164" offset="0" />
</dataarea>
@ -1385,7 +1452,8 @@ Possible Undumped protos: -
<year>2004</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="developer" value="Bryan Edewaard" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="ccrisis.bin" size="32768" crc="d50e4061" sha1="4e022e101d7346a0a8618018372740e7333b4a36" offset="0" />
</dataarea>
@ -1397,7 +1465,8 @@ Possible Undumped protos: -
<year>2002</year>
<publisher>&lt;unlicensed&gt;</publisher>
<info name="developer" value="Ron Lloyd" />
<part name="cart" interface="a5200_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="a5200" />
<dataarea name="rom" size="32768">
<rom name="koffiyk.bin" size="32768" crc="917be656" sha1="9547c56e2951e1b3a713b0b99d3edb43c9d3cdd8" offset="0" />
</dataarea>

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8099" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="ace of aces (atari)(1988)(rx8099).rom" size="131072" crc="ebad3ddb" sha1="7d87658412d983b368b9f6c75d3d6be05485acf9" offset="0" /> <!-- Verified -->
</dataarea>
@ -42,7 +43,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8109" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="airball (atari)(1988)(rx8109).rom" size="131072" crc="a0ccb3c1" sha1="e397ec3fd8ebfb9626c56e63c9186846f87ad57b" offset="0" /> <!-- Verified -->
</dataarea>
@ -54,7 +56,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8092" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="archon (atari)(1987)(rx8092).rom" size="32768" crc="2636829f" sha1="bfb2782a117cf3efd5b71e225052f737658864c4" offset="0" /> <!-- Verified -->
</dataarea>
@ -66,7 +69,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8064" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="ballblazer (atari)(1987)(rx8064).rom" size="65536" crc="820e5ce5" sha1="16820a57a10fd779ed160e8a25471882e23a719b" offset="0" /> <!-- Verified -->
</dataarea>
@ -78,7 +82,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8086" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<feature name="peripheral" value="lightgun" /> <!-- Uses Lightgun -->
<dataarea name="rom" size="131072">
<rom name="barnyard blaster (atari)(1987)(rx8086).rom" size="131072" crc="13ae30ed" sha1="e4b22790fce8e2e0f7c972960aec692b7fd5e016" offset="0" /> <!-- Verified -->
@ -92,7 +97,8 @@ Compiled by K1W1
<year>2005</year>
<publisher>&lt;homebrew&gt;</publisher>
<info name="developer" value="Ken Siders" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="beef drop (wip 2005-02-16).rom" size="32768" crc="6dd9e838" sha1="e95467917f873820580b5aca6b683bd0d13f1df6" offset="0" /> <!-- Verified -->
</dataarea>
@ -103,7 +109,8 @@ Compiled by K1W1
<description>Bruce Lee (Reproduction)</description>
<year>1984</year>
<publisher>Video 61 / Datasoft</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="bruce lee (proto).rom" size="65536" crc="255dfc59" sha1="cad3ca79d8233df5068f3af99666889603c6dab2" offset="0" />
</dataarea>
@ -115,7 +122,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8077" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="battlezone (atari)(1987)(rx8077).rom" size="65536" crc="692515f2" sha1="de57b3d79a5bb44e7d0af66abe3b9d643865b360" offset="0" /> <!-- Verified -->
</dataarea>
@ -127,7 +135,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8081" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="blue max (atari)(1987)(rx8081).rom" size="32768" crc="003f41ac" sha1="e25be072ae435588724ac9c5d314baf77efd3d96" offset="0" /> <!-- Verified -->
</dataarea>
@ -139,7 +148,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8087" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<feature name="peripheral" value="lightgun" /> <!-- Uses Lightgun -->
<dataarea name="rom" size="65536">
<rom name="bug hunt (atari)(1987)(rx8087).rom" size="65536" crc="246f3872" sha1="48eeec190dbb27e1311938498b087088077dd530" offset="0" /> <!-- Verified -->
@ -151,7 +161,8 @@ Compiled by K1W1
<description>Castle Crisis</description>
<year>2003</year>
<publisher>Atari Age</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="castle crisis.rom" size="32768" crc="7bc6e6dc" sha1="a8e73ef44a1a95ff21e763c9118a1ef49f178132" offset="0" />
</dataarea>
@ -163,7 +174,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8096" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="choplifter! (atari)(1987)(rx8096).rom" size="65536" crc="d426eccc" sha1="03600f288ecedaa61fe7976dfe32ce9a6fdfe03e" offset="0" /> <!-- Verified -->
</dataarea>
@ -174,7 +186,8 @@ Compiled by K1W1
<description>Commando (Prototype)</description>
<year>1988</year>
<publisher>Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="commando (atari)(1988)(proto).rom" size="131072" crc="28288df4" sha1="fe546d4a7be4644e85dd1eef55a8cf273f6b2aaa" offset="0" />
</dataarea>
@ -186,7 +199,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8104" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<feature name="peripheral" value="lightgun" /> <!-- Uses Lightgun -->
<dataarea name="rom" size="131072">
<rom name="crime buster (atari)(1988)(rx8104).rom" size="131072" crc="143fbad9" sha1="d936dee2676d4fb8ea84960bf6c7cef707dc45a2" offset="0" /> <!-- Verified -->
@ -199,7 +213,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8088" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<feature name="peripheral" value="lightgun" /> <!-- Uses Lightgun -->
<dataarea name="rom" size="131072">
<rom name="crossbow (atari)(1988)(rx8088).rom" size="131072" crc="0557a91f" sha1="7778002227315ab9fa3410b3a686634877cdd22e" offset="0" /> <!-- Verified -->
@ -212,7 +227,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8102" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="crystal castles (atari)(1988)(rx8102).rom" size="32768" crc="998fa803" sha1="be8532d6f1c4024bc13bf7ea01832f07d387623d" offset="0" /> <!-- Verified -->
</dataarea>
@ -224,7 +240,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8101" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="dark chambers (atari)(1988)(rx8101).rom" size="65536" crc="fa2f132c" sha1="cc602bee2c589e78332f729dfe08832763aec714" offset="0" /> <!-- Verified -->
</dataarea>
@ -236,7 +253,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8083" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="david's midnight magic (atari)(1987)(rx8083).rom" size="65536" crc="b7ca61a2" sha1="cf7b224a4477597c872da00aebb3dcf11955b569" offset="0" /> <!-- Verified -->
</dataarea>
@ -247,7 +265,8 @@ Compiled by K1W1
<description>Deflektor (Prototype)</description>
<year>1988</year>
<publisher>Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="deflektor (atari)(1988)(proto).rom" size="65536" crc="e4ed154e" sha1="44949d6ac68b3c155a58461292cccbe9bded5a21" offset="0" /> <!-- Verified -->
</dataarea>
@ -259,7 +278,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8089" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="desert falcon (atari)(1988)(rx8089).rom" size="65536" crc="a8f9324d" sha1="fd4666796a4498339835d75ddb63c7b99d1d93bb" offset="0" /> <!-- Verified -->
</dataarea>
@ -271,7 +291,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8085" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="fight night (atari)(1987)(rx8085).rom" size="131072" crc="4440d167" sha1="e6d26417365c6ed89b84683a73b31a7423b1a1fb" offset="0" /> <!-- Verified -->
</dataarea>
@ -283,7 +304,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8091" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="flight simulator 2 (atari)(1987)(rx8091).rom" size="131072" crc="10cfc489" sha1="2b3a785d134251272ab606e6b9b2cd9eb25f6714" offset="0" /> <!-- Verified -->
</dataarea>
@ -295,7 +317,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="CA400201" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="flight simulator 2 (demo).rom" size="65536" crc="5133a213" sha1="d1087e8d47a106555670d0aa40d97e90d0cd407a" offset="0" /> <!-- Verified -->
</dataarea>
@ -307,7 +330,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8079" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="food fight (atari)(1987)(rx8079).rom" size="32768" crc="4236f0ea" sha1="79aafc04d41d5167502b4ea74c531f9c2e706580" offset="0" /> <!-- Verified -->
</dataarea>
@ -319,7 +343,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8090" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="gato (atari)(1987)(rx8090).rom" size="131072" crc="ab06a3f5" sha1="cabb1effa554d915521b2a49961d8e61b67ec9b3" offset="0" /> <!-- Verified -->
</dataarea>
@ -331,7 +356,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8084" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="hardball! (atari)(1987)(rx8084).rom" size="65536" crc="bf0c6df2" sha1="8a8556b2398168a557bc04e37f1f3a26bc066147" offset="0" /> <!-- Verified -->
</dataarea>
@ -343,7 +369,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8114" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="into the eagle's nest (atari)(1988)(rx8114).rom" size="32768" crc="f31321c2" sha1="61d6f9264947481bc49cd47441e8fa5c8ed5fc55" offset="0" /> <!-- Verified -->
</dataarea>
@ -355,7 +382,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8095" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="karateka (atari)(1988)(rx8095).rom" size="131072" crc="97646f16" sha1="23d1ab351201d5a7aaeade45bd64860ff3af90f5" offset="0" /> <!-- Verified -->
</dataarea>
@ -367,7 +395,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8082" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="lode runner (atari)(1987)(rx8082).rom" size="65536" crc="b9a89bbd" sha1="9c59cf69f1c248fb673a3712ec7e35b1a0c42523" offset="0" /> <!-- Verified -->
</dataarea>
@ -379,7 +408,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8103" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="mario bros. (atari)(1988)(rx8103).rom" size="65536" crc="7ba07c34" sha1="7acfd4a8205cbfe9528ab86bb53c2bb791a69bd6" offset="0" /> <!-- Verified -->
</dataarea>
@ -390,7 +420,8 @@ Compiled by K1W1
<description>Mean 18 (Prototype)</description>
<year>1988</year>
<publisher>Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="mean 18 (atari)(1988)(proto).rom" size="131072" crc="0ee74a89" sha1="4597d669cd1551a4459cba8e023a7fae8e9a9c18" offset="0" />
</dataarea>
@ -401,7 +432,8 @@ Compiled by K1W1
<description>MIDI Maze (Reproduction)</description>
<year>199?</year>
<publisher>Video 61 / Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="midi maze.rom" size="131072" crc="4695522f" sha1="8ed0e6b7afad565ea3adc8844a2e6840f7393b73" offset="0" />
</dataarea>
@ -412,7 +444,8 @@ Compiled by K1W1
<description>MIDI Maze (Prototype)</description>
<year>1988</year>
<publisher>Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="midi maze (atari)(1988)(proto).rom" size="131072" crc="193a53f6" sha1="9748bd366a8b79a2c962104098b03916501d005e" offset="0" />
</dataarea>
@ -424,7 +457,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8108" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="16384">
<rom name="necromancer (atari)(1988)(rx8108).rom" size="16384" crc="39250ff2" sha1="995d78c380697118b4e2a030844994015385262a" offset="0" /> <!-- Verified -->
</dataarea>
@ -436,7 +470,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8093" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="one-on-one (atari)(1987)(rx8093).rom" size="32768" crc="ab060567" sha1="d7eb0ed496db4de878c0f1688aa06ade2e3a4bb2" offset="0" /> <!-- Verified -->
</dataarea>
@ -448,7 +483,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8063" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="rescue on fractalus! (atari)(1987)(rx8063).rom" size="65536" crc="1ca549ad" sha1="36bc00b2e4452855d0681c50cdec2403ffb2a6bb" offset="0" /> <!-- Verified -->
</dataarea>
@ -459,7 +495,8 @@ Compiled by K1W1
<description>Sinistar (Reproduction)</description>
<year>199?</year>
<publisher>Video 61 / Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="sinistar.rom" size="32768" crc="6092c611" sha1="3993362cc0efa2325a5d72484bb05bb398e2655a" offset="0" />
</dataarea>
@ -471,7 +508,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8078" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="32768">
<rom name="star raiders ii (atari)(1987)(rx8078).rom" size="32768" crc="737d4196" sha1="7e04d33d17a5dfcab5e41fca4ae6880730583dce" offset="0" /> <!-- Verified -->
</dataarea>
@ -483,7 +521,8 @@ Compiled by K1W1
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8098" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="summer games (atari)(1987)(rx8098).rom" size="131072" crc="95e6932d" sha1="7082c5304cfdb2ecc2421a4feb36f4dfc0c62132" offset="0" />
</dataarea>
@ -494,7 +533,8 @@ Compiled by K1W1
<description>Tapper (Reproduction)</description>
<year>20??</year>
<publisher>Video 61 / Bally Midway</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="tapper.rom" size="65536" crc="eff12440" sha1="f1be77d3b2e8e46a4b8acafe3a599341e308fb46" offset="0" />
</dataarea>
@ -506,7 +546,8 @@ Compiled by K1W1
<year>1988</year>
<publisher>Atari</publisher>
<info name="serial" value="RX8113" />
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="thunderfox (atari)(1988)(rx8113).rom" size="65536" crc="b15ccef2" sha1="6ce6431474d7189f30820768f3cafee54d1ddf6e" offset="0" /> <!-- Verified -->
</dataarea>
@ -517,7 +558,8 @@ Compiled by K1W1
<description>Tower Toppler (Prototype)</description>
<year>1988</year>
<publisher>Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="tower toppler (atari)(1988)(proto).rom" size="65536" crc="6b5333bd" sha1="adc0fee6f79ac00b357b3cab76fcaa872647f1c9" offset="0" />
</dataarea>
@ -528,7 +570,8 @@ Compiled by K1W1
<description>Vanguard (5200 Conversion)</description>
<year>199?</year>
<publisher>Video 61 / Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="65536">
<rom name="vanguard.rom" size="65536" crc="688ef8bd" sha1="3a47fc61a9f4c1a22c9fe180da3fd5057f186d67" offset="0" />
</dataarea>
@ -540,7 +583,8 @@ Compiled by K1W1
<description>Xenophobe (Reproduction)</description>
<year>2010</year>
<publisher>Video 61 / Atari</publisher>
<part name="cart" interface="xegs_cart">
<part name="cart" interface="a8bit_cart">
<feature name="slot" value="xegs" />
<dataarea name="rom" size="131072">
<rom name="xenophobe (repro).bin" size="131072" crc="68466666" sha1="109271ce4333b6a7d3030ea5c82a5e63eb4a99df" offset="0" />
</dataarea>

View File

@ -0,0 +1,41 @@
#ifndef __A800_CARTS_H
#define __A800_CARTS_H
#include "emu.h"
#include "rom.h"
#include "oss.h"
#include "sparta.h"
static SLOT_INTERFACE_START(a800_left)
SLOT_INTERFACE_INTERNAL("a800_8k", A800_ROM)
SLOT_INTERFACE_INTERNAL("a800_8k_right", A800_ROM)
SLOT_INTERFACE_INTERNAL("a800_16k", A800_ROM)
SLOT_INTERFACE_INTERNAL("a800_phoenix", A800_ROM) // not really emulated at this stage
SLOT_INTERFACE_INTERNAL("a800_bbsb", A800_ROM_BBSB)
SLOT_INTERFACE_INTERNAL("a800_oss034m", A800_ROM_OSS34)
SLOT_INTERFACE_INTERNAL("a800_oss043m", A800_ROM_OSS43)
SLOT_INTERFACE_INTERNAL("a800_ossm091", A800_ROM_OSS91)
SLOT_INTERFACE_INTERNAL("a800_williams", A800_ROM_WILLIAMS)
SLOT_INTERFACE_INTERNAL("a800_diamond", A800_ROM_EXPRESS)
SLOT_INTERFACE_INTERNAL("a800_express", A800_ROM_EXPRESS)
SLOT_INTERFACE_INTERNAL("a800_sparta", A800_ROM_SPARTADOS) // this is a passthru cart with unemulated (atm) subslot
SLOT_INTERFACE_INTERNAL("xegs", XEGS_ROM)
SLOT_INTERFACE_END
static SLOT_INTERFACE_START(a800_right)
SLOT_INTERFACE_INTERNAL("a800_8k_right", A800_ROM)
SLOT_INTERFACE_END
static SLOT_INTERFACE_START(xegs_carts)
SLOT_INTERFACE_INTERNAL("xegs", XEGS_ROM)
SLOT_INTERFACE_END
static SLOT_INTERFACE_START(a5200_carts)
SLOT_INTERFACE_INTERNAL("a5200", A800_ROM)
SLOT_INTERFACE_INTERNAL("a5200_2chips", A5200_ROM_2CHIPS)
SLOT_INTERFACE_INTERNAL("a5200_bbsb", A5200_ROM_BBSB)
SLOT_INTERFACE_END
#endif

View File

@ -0,0 +1,532 @@
/***********************************************************************************************************
Atari 8 bit cart emulation
(through slot devices)
Emulation of the cartslot(s) for Atari 8bit series of home computers
Accessors to ROM are typically given in the area 0xa000-0xbfff, but some
carts (and the right slot in A800) maps ROM to 0x8000-0x9fff too
Bankswitch typically happens by accessing addresses in 0xd500-0xd5ff
Accordingly, this device offers the following handlers
- read_80xx/write_80xx
- read_d5xx/write_d5xx
Notice that these are installed in different ranges at machine start by
the drivers, so that it might well be that offs=0 for read_80xx is 0xa000!
***********************************************************************************************************/
#include "emu.h"
#include "hashfile.h"
#include "a800_slot.h"
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
const device_type A800_CART_SLOT = &device_creator<a800_cart_slot_device>;
const device_type A5200_CART_SLOT = &device_creator<a5200_cart_slot_device>;
const device_type XEGS_CART_SLOT = &device_creator<xegs_cart_slot_device>;
//-------------------------------------------------
// device_vcs_cart_interface - constructor
//-------------------------------------------------
device_a800_cart_interface::device_a800_cart_interface (const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device),
m_bank_mask(0)
{
}
//-------------------------------------------------
// ~device_a800_cart_interface - destructor
//-------------------------------------------------
device_a800_cart_interface::~device_a800_cart_interface ()
{
}
//-------------------------------------------------
// rom_alloc - alloc the space for the cart
//-------------------------------------------------
void device_a800_cart_interface::rom_alloc(UINT32 size)
{
if (m_rom == NULL)
{
m_rom.resize(size);
// setup other helpers
m_bank_mask = (size / 0x2000) - 1; // code for XEGS carts makes use of this to simplify banking
}
}
//-------------------------------------------------
// ram_alloc - alloc the space for the on-cart RAM
//-------------------------------------------------
void device_a800_cart_interface::ram_alloc(UINT32 size)
{
if (m_ram == NULL)
{
m_ram.resize(size);
device().save_item(NAME(m_ram));
}
}
//-------------------------------------------------
// ram_alloc - alloc the space for the on-cart RAM
//-------------------------------------------------
void device_a800_cart_interface::nvram_alloc(UINT32 size)
{
if (m_nvram == NULL)
{
m_nvram.resize(size);
device().save_item(NAME(m_nvram));
}
}
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// ****_cart_slot_device - constructor
//-------------------------------------------------
a800_cart_slot_device::a800_cart_slot_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, __FILE__),
device_image_interface(mconfig, *this),
device_slot_interface(mconfig, *this)
{
m_type = A800_NOCART;
}
a800_cart_slot_device::a800_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, A800_CART_SLOT, "Atari 8bit Cartridge Slot", tag, owner, clock, "a800_cart_slot", __FILE__),
device_image_interface(mconfig, *this),
device_slot_interface(mconfig, *this)
{
m_type = A800_NOCART;
}
a5200_cart_slot_device::a5200_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
a800_cart_slot_device(mconfig, A5200_CART_SLOT, "Atari 5200 Cartridge Slot", tag, owner, clock, "a5200_cart_slot", __FILE__)
{
}
xegs_cart_slot_device::xegs_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
a800_cart_slot_device(mconfig, XEGS_CART_SLOT, "Atari XEGS Cartridge Slot", tag, owner, clock, "xegs_cart_slot", __FILE__)
{
}
//-------------------------------------------------
// ****_cart_slot_device - destructor
//-------------------------------------------------
a800_cart_slot_device::~a800_cart_slot_device()
{
}
a5200_cart_slot_device::~a5200_cart_slot_device()
{
}
xegs_cart_slot_device::~xegs_cart_slot_device()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void a800_cart_slot_device::device_start()
{
m_cart = dynamic_cast<device_a800_cart_interface *>(get_card_device());
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void a800_cart_slot_device::device_config_complete()
{
// set brief and instance name
update_names();
}
/*-------------------------------------------------
call load
-------------------------------------------------*/
//-------------------------------------------------
// A800 PCBs
//-------------------------------------------------
struct a800_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 a800_slot slot_list[] =
{
{ A800_8K, "a800_8k" },
{ A800_16K, "a800_16k" },
{ A800_OSS034M, "a800_oss034m" },
{ A800_OSS043M, "a800_oss043m" },
{ A800_OSSM091, "a800_ossm091" },
{ A800_PHOENIX, "a800_phoenix" },
{ A800_XEGS, "xegs" },
{ A800_BBSB, "a800_bbsb" },
{ A800_DIAMOND, "a800_diamond" },
{ A800_WILLIAMS, "a800_williams" },
{ A800_EXPRESS, "a800_express" },
{ A800_SPARTADOS, "a800_sparta" },
{ A800_8K_RIGHT, "a800_8k_right" },
{ A5200_4K, "a5200" },
{ A5200_8K, "a5200" },
{ A5200_16K, "a5200" },
{ A5200_32K, "a5200" },
{ A5200_16K_2CHIPS, "a5200_2chips" },
{ A5200_32K, "a5200" },
{ A5200_BBSB, "a5200_bbsb" },
{ A800_NOCART, "empty" },
};
static int a800_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 *a800_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 "a800_8k";
}
bool a800_cart_slot_device::call_load()
{
if (m_cart)
{
UINT8 *ROM;
UINT32 len;
if (software_entry() != NULL)
{
const char *pcb_name;
len = get_software_region_length("rom");
m_cart->rom_alloc(len);
ROM = m_cart->get_rom_base();
memcpy(ROM, get_software_region("rom"), len);
if ((pcb_name = get_feature("slot")) != NULL)
m_type = a800_get_pcb_id(pcb_name);
else
m_type = A800_8K;
}
else
{
len = length();
// check whether there is an header, to identify the cart type
if ((len % 0x1000) == 0x10)
{
UINT8 header[16];
fread(header, 0x10);
m_type = identify_cart_type(header);
len -= 0x10; // in identify_cart_type the first 0x10 bytes are read, so we need to adjust here
}
else // otherwise try to guess based on size
{
if (len == 0x8000)
m_type = A5200_32K;
if (len == 0x4000)
m_type = A800_16K;
if (len == 0x2000)
m_type = A800_8K;
if (len == 0x1000)
m_type = A5200_4K;
}
m_cart->rom_alloc(len);
ROM = m_cart->get_rom_base();
fread(ROM, len);
}
printf("%s loaded cartridge '%s' size %dK\n", machine().system().name, filename(), len/1024);
}
return IMAGE_INIT_PASS;
}
/*-------------------------------------------------
call_unload
-------------------------------------------------*/
void a800_cart_slot_device::call_unload()
{
}
/*-------------------------------------------------
call softlist load
-------------------------------------------------*/
bool a800_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;
}
/*-------------------------------------------------
identify_cart_type - code to detect cart type from
fullpath
-------------------------------------------------*/
int a800_cart_slot_device::identify_cart_type(UINT8 *header)
{
int type = A800_8K;
// check CART format
if (strncmp((const char *)header, "CART", 4))
fatalerror("Invalid header detected!\n");
switch ((header[4] << 24) + (header[5] << 16) + (header[6] << 8) + (header[7] << 0))
{
case 1:
type = A800_8K;
break;
case 2:
type = A800_16K;
break;
case 3:
type = A800_OSS034M;
break;
case 8:
type = A800_WILLIAMS;
break;
case 9:
type = A800_DIAMOND;
break;
case 10:
type = A800_EXPRESS;
break;
case 11:
type = A800_SPARTADOS;
break;
case 12:
type = A800_XEGS;
break;
case 15:
type = A800_OSSM091;
break;
case 18:
type = A800_BBSB;
break;
case 21:
type = A800_8K_RIGHT;
break;
case 39:
type = A800_PHOENIX;
break;
// Atari 5200 CART files
case 4:
type = A5200_32K;
break;
case 16:
type = A5200_16K;
break;
case 19:
type = A5200_8K;
break;
case 20:
type = A5200_4K;
break;
case 6:
type = A5200_16K_2CHIPS;
break;
case 7:
type = A5200_BBSB;
break;
default:
osd_printf_info("Cart type \"%d\" is currently unsupported.\n", (header[4] << 24) + (header[5] << 16) + (header[6] << 8) + (header[7] << 0));
break;
}
return type;
}
/*-------------------------------------------------
get default card software
-------------------------------------------------*/
void a800_cart_slot_device::get_default_card_software(astring &result)
{
if (open_image_file(mconfig().options()))
{
const char *slot_string = "a800_8k";
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A800_8K;
// check whether there is an header, to identify the cart type
if ((len % 0x1000) == 0x10)
{
core_fread(m_file, head, 0x10);
type = identify_cart_type(head);
}
else // otherwise try to guess based on size
{
if (len == 0x4000)
type = A800_16K;
if (len == 0x2000)
type = A800_8K;
}
if (type >= A5200_4K)
osd_printf_info("This game is not designed for A800. You might want to run it in A5200.\n");
slot_string = a800_get_slot(type);
clear();
result.cpy(slot_string);
}
else
software_get_default_slot(result, "a800_8k");
}
void a5200_cart_slot_device::get_default_card_software(astring &result)
{
if (open_image_file(mconfig().options()))
{
const char *slot_string = "a5200";
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A5200_8K;
// check whether there is an header, to identify the cart type
if ((len % 0x1000) == 0x10)
{
core_fread(m_file, head, 0x10);
type = identify_cart_type(head);
astring info;
if (hashfile_extrainfo(*this, info) && info == "A13MIRRORING")
type = A5200_16K_2CHIPS;
}
if (type < A5200_4K)
osd_printf_info("This game is not designed for A5200. You might want to run it in A800 or A800XL.\n");
slot_string = a800_get_slot(type);
clear();
result.cpy(slot_string);
}
else
software_get_default_slot(result, "a5200");
}
void xegs_cart_slot_device::get_default_card_software(astring &result)
{
if (open_image_file(mconfig().options()))
{
const char *slot_string = "xegs";
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A800_8K;
// check whether there is an header, to identify the cart type
if ((len % 0x1000) == 0x10)
{
core_fread(m_file, head, 0x10);
type = identify_cart_type(head);
}
if (type != A800_XEGS)
{
osd_printf_info("This game is not designed for XEGS. ");
if (type >= A5200_4K)
osd_printf_info("You might want to run it in A5200.\n");
else
osd_printf_info("You might want to run it in A800 or A800XL.\n");
}
slot_string = a800_get_slot(type);
clear();
result.cpy(slot_string);
}
else
software_get_default_slot(result, "xegs");
}
/*-------------------------------------------------
read
-------------------------------------------------*/
READ8_MEMBER(a800_cart_slot_device::read_80xx)
{
if (m_cart)
return m_cart->read_80xx(space, offset, mem_mask);
else
return 0xff;
}
READ8_MEMBER(a800_cart_slot_device::read_d5xx)
{
if (m_cart)
return m_cart->read_d5xx(space, offset, mem_mask);
else
return 0xff;
}
/*-------------------------------------------------
write
-------------------------------------------------*/
WRITE8_MEMBER(a800_cart_slot_device::write_80xx)
{
if (m_cart)
m_cart->write_80xx(space, offset, data, mem_mask);
}
WRITE8_MEMBER(a800_cart_slot_device::write_d5xx)
{
if (m_cart)
m_cart->write_d5xx(space, offset, data, mem_mask);
}

View File

@ -0,0 +1,177 @@
#ifndef __A800_SLOT_H
#define __A800_SLOT_H
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
/* PCB */
enum
{
A800_8K = 0,
A800_8K_RIGHT,
A800_16K,
A800_OSS034M,
A800_OSS043M,
A800_OSSM091,
A800_PHOENIX,
A800_XEGS,
A800_BBSB,
A800_DIAMOND,
A800_WILLIAMS,
A800_EXPRESS,
A800_SPARTADOS,
A5200_4K,
A5200_8K,
A5200_16K,
A5200_32K,
A5200_16K_2CHIPS,
A5200_BBSB,
A800_NOCART
};
// ======================> device_a800_cart_interface
class device_a800_cart_interface : public device_slot_card_interface
{
public:
// construction/destruction
device_a800_cart_interface(const machine_config &mconfig, device_t &device);
virtual ~device_a800_cart_interface();
// memory accessor
virtual DECLARE_READ8_MEMBER(read_80xx) { return 0xff; }
virtual DECLARE_READ8_MEMBER(read_d5xx) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_80xx) {}
virtual DECLARE_WRITE8_MEMBER(write_d5xx) {}
void rom_alloc(UINT32 size);
void ram_alloc(UINT32 size);
void nvram_alloc(UINT32 size);
UINT8* get_rom_base() { return m_rom; }
UINT8* get_ram_base() { return m_ram; }
UINT8* get_nvram_base() { return m_nvram; }
UINT32 get_rom_size() { return m_rom.bytes(); }
UINT32 get_ram_size() { return m_ram.bytes(); }
UINT32 get_nvram_size() { return m_nvram.bytes(); }
protected:
// internal state
dynamic_buffer m_rom;
dynamic_buffer m_ram;
dynamic_buffer m_nvram; // HiScore cart can save scores!
// helpers
int m_bank_mask;
};
// ======================> a800_cart_slot_device
class a800_cart_slot_device : public device_t,
public device_image_interface,
public device_slot_interface
{
public:
// construction/destruction
a800_cart_slot_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);
a800_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~a800_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_cart_type() { return m_type; };
int identify_cart_type(UINT8 *header);
bool has_cart() { return m_cart != NULL; }
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 "a8bit_cart"; }
virtual const char *file_extensions() const { return "bin,rom,car"; }
// slot interface overrides
virtual void get_default_card_software(astring &result);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_READ8_MEMBER(read_d5xx);
virtual DECLARE_WRITE8_MEMBER(write_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
private:
device_a800_cart_interface* m_cart;
int m_type;
};
// The variants below are added to handle the additional formats for a5200, and to give more
// clear error messages if you try to load an A5200 game into an A800 or a XEGS, etc.
// ======================> a5200_cart_slot_device
class a5200_cart_slot_device : public a800_cart_slot_device
{
public:
// construction/destruction
a5200_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~a5200_cart_slot_device();
virtual const char *file_extensions() const { return "bin,rom,car,a52"; }
// slot interface overrides
virtual void get_default_card_software(astring &result);
};
// ======================> xegs_cart_slot_device
class xegs_cart_slot_device : public a800_cart_slot_device
{
public:
// construction/destruction
xegs_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~xegs_cart_slot_device();
virtual const char *file_extensions() const { return "bin,rom,car"; }
// slot interface overrides
virtual void get_default_card_software(astring &result);
};
// device type definition
extern const device_type A800_CART_SLOT;
extern const device_type A5200_CART_SLOT;
extern const device_type XEGS_CART_SLOT;
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_A800_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, A800_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_A5200_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, A5200_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_XEGS_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, XEGS_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#endif

200
src/emu/bus/a800/oss.c Normal file
View File

@ -0,0 +1,200 @@
/***********************************************************************************************************
A800 ROM cart emulation
***********************************************************************************************************/
#include "emu.h"
#include "oss.h"
//-------------------------------------------------
// constructor
//-------------------------------------------------
const device_type A800_ROM_OSS34 = &device_creator<a800_rom_oss34_device>;
const device_type A800_ROM_OSS43 = &device_creator<a800_rom_oss43_device>;
const device_type A800_ROM_OSS91 = &device_creator<a800_rom_oss91_device>;
a800_rom_oss34_device::a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_OSS34, "Atari 800 ROM Carts OSS-034M", tag, owner, clock, "a800_034m", __FILE__)
{
}
a800_rom_oss43_device::a800_rom_oss43_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_OSS43, "Atari 800 ROM Carts OSS-043M", tag, owner, clock, "a800_043m", __FILE__)
{
}
a800_rom_oss91_device::a800_rom_oss91_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_OSS91, "Atari 800 ROM Carts OSS-M091", tag, owner, clock, "a800_m091", __FILE__)
{
}
void a800_rom_oss34_device::device_start()
{
save_item(NAME(m_bank));
}
void a800_rom_oss34_device::device_reset()
{
m_bank = 1;
}
void a800_rom_oss43_device::device_start()
{
save_item(NAME(m_bank));
}
void a800_rom_oss43_device::device_reset()
{
m_bank = 0;
}
void a800_rom_oss91_device::device_start()
{
save_item(NAME(m_bank));
}
void a800_rom_oss91_device::device_reset()
{
m_bank = 0;
}
/*-------------------------------------------------
mapper specific handlers
-------------------------------------------------*/
/*-------------------------------------------------
OSS 034M
This apparently comes from a dump with the wrong bank order...
investigate whether we should remove it!
-------------------------------------------------*/
READ8_MEMBER(a800_rom_oss34_device::read_80xx)
{
if (offset >= 0x1000)
return m_rom[(offset & 0xfff) + 0x3000];
else if (m_bank == 3)
return 0xff;
else
return m_rom[(offset & 0xfff) + (m_bank * 0x1000)];
}
WRITE8_MEMBER(a800_rom_oss34_device::write_d5xx)
{
switch (offset & 0x0f)
{
case 0:
case 1:
m_bank = 0;
break;
case 2:
case 6:
m_bank = 3; // in this case the ROM gets disabled and 0xff is returned in 0xa000-0xafff
break;
case 3:
case 7:
m_bank = 1;
break;
case 4:
case 5:
m_bank = 2;
break;
default:
break;
}
}
/*-------------------------------------------------
OSS 043M
Same as above but with correct bank order
-------------------------------------------------*/
READ8_MEMBER(a800_rom_oss43_device::read_80xx)
{
if (offset >= 0x1000)
return m_rom[(offset & 0xfff) + 0x3000];
else if (m_bank == 3)
return 0xff;
else
return m_rom[(offset & 0xfff) + (m_bank * 0x1000)];
}
WRITE8_MEMBER(a800_rom_oss43_device::write_d5xx)
{
switch (offset & 0x0f)
{
case 0:
case 1:
m_bank = 0;
break;
case 2:
case 6:
m_bank = 3; // in this case the ROM gets disabled and 0xff is returned in 0xa000-0xafff
break;
case 3:
case 7:
m_bank = 2;
break;
case 4:
case 5:
m_bank = 1;
break;
default:
break;
}
}
/*-------------------------------------------------
OSS M091
Simplified banking system which only uses two
address lines (A0 & A3)
-------------------------------------------------*/
READ8_MEMBER(a800_rom_oss91_device::read_80xx)
{
if (offset >= 0x1000)
return m_rom[offset & 0xfff];
else
return m_rom[(offset & 0xfff) + (m_bank * 0x1000)];
}
WRITE8_MEMBER(a800_rom_oss91_device::write_d5xx)
{
switch (offset & 0x09)
{
case 0:
m_bank = 1;
break;
case 1:
m_bank = 3;
break;
case 9:
m_bank = 2;
break;
default:
break;
}
}

74
src/emu/bus/a800/oss.h Normal file
View File

@ -0,0 +1,74 @@
#ifndef __A800_OSS_H
#define __A800_OSS_H
#include "rom.h"
// ======================> a800_rom_oss34_device
class a800_rom_oss34_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// ======================> a800_rom_oss43_device
class a800_rom_oss43_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_oss43_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// ======================> a800_rom_oss91_device
class a800_rom_oss91_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_oss91_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// device type definition
extern const device_type A800_ROM_OSS34;
extern const device_type A800_ROM_OSS43;
extern const device_type A800_ROM_OSS91;
#endif

331
src/emu/bus/a800/rom.c Normal file
View File

@ -0,0 +1,331 @@
/***********************************************************************************************************
A800/A5200/XEGS ROM cart emulation
Basic carts work the same (in addition of being mostly compatible) for all these systems
and thus we deal with them in a single file
***********************************************************************************************************/
#include "emu.h"
#include "rom.h"
//-------------------------------------------------
// constructor
//-------------------------------------------------
const device_type A800_ROM = &device_creator<a800_rom_device>;
const device_type A800_ROM_BBSB = &device_creator<a800_rom_bbsb_device>;
const device_type A800_ROM_WILLIAMS = &device_creator<a800_rom_williams_device>;
const device_type A800_ROM_EXPRESS = &device_creator<a800_rom_express_device>;
const device_type XEGS_ROM = &device_creator<xegs_rom_device>;
const device_type A5200_ROM_2CHIPS = &device_creator<a5200_rom_2chips_device>;
const device_type A5200_ROM_BBSB = &device_creator<a5200_rom_bbsb_device>;
a800_rom_device::a800_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_a800_cart_interface( mconfig, *this )
{
}
a800_rom_device::a800_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, A800_ROM, "Atari 800 ROM Carts", tag, owner, clock, "a800_rom", __FILE__),
device_a800_cart_interface( mconfig, *this )
{
}
a800_rom_bbsb_device::a800_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_BBSB, "Atari 800 ROM Cart BBSB", tag, owner, clock, "a800_bbsb", __FILE__)
{
}
xegs_rom_device::xegs_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, XEGS_ROM, "Atari XEGS 64K ROM Carts", tag, owner, clock, "xegs", __FILE__)
{
}
a800_rom_williams_device::a800_rom_williams_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_WILLIAMS, "Atari 800 64K ROM Carts Williams", tag, owner, clock, "a800_williams", __FILE__)
{
}
a800_rom_express_device::a800_rom_express_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_EXPRESS, "Atari 800 64K ROM Carts Express/Diamond", tag, owner, clock, "a800_express", __FILE__)
{
}
a5200_rom_2chips_device::a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A5200_ROM_2CHIPS, "Atari 5200 ROM Cart 16K in 2 Chips", tag, owner, clock, "a5200_16k2c", __FILE__)
{
}
a5200_rom_bbsb_device::a5200_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A5200_ROM_BBSB, "Atari 5200 ROM Cart BBSB", tag, owner, clock, "a5200_bbsb", __FILE__)
{
}
void a800_rom_device::device_start()
{
}
void a800_rom_device::device_reset()
{
}
void a800_rom_bbsb_device::device_start()
{
save_item(NAME(m_banks));
}
void a800_rom_bbsb_device::device_reset()
{
m_banks[0] = 0;
m_banks[1] = 0;
}
void xegs_rom_device::device_start()
{
save_item(NAME(m_bank));
}
void xegs_rom_device::device_reset()
{
m_bank = 0;
}
void a800_rom_williams_device::device_start()
{
save_item(NAME(m_bank));
}
void a800_rom_williams_device::device_reset()
{
m_bank = 0;
}
void a800_rom_express_device::device_start()
{
save_item(NAME(m_bank));
}
void a800_rom_express_device::device_reset()
{
m_bank = 0;
}
void a5200_rom_bbsb_device::device_start()
{
save_item(NAME(m_banks));
}
void a5200_rom_bbsb_device::device_reset()
{
m_banks[0] = 0;
m_banks[1] = 0;
}
/*-------------------------------------------------
mapper specific handlers
-------------------------------------------------*/
/*-------------------------------------------------
Carts with no bankswitch (8K, 16K)
The cart accessors are mapped in the correct
range at driver start
-------------------------------------------------*/
READ8_MEMBER(a800_rom_device::read_80xx)
{
return m_rom[offset & (m_rom.bytes() - 1)];
}
/*-------------------------------------------------
Bounty Bob Strikes Back! cart (40K)
Area 0xa000-0xbfff always point to last 8K bank
Areas 0x8000-0x8fff and 0x9000-0x9fff are
separate banks of 4K mapped either in the first
16K chunk or in the second 16K chunk
Bankswitch is controlled by data written in
0x8000-0x8fff and 0x9000-0x9fff respectively
-------------------------------------------------*/
READ8_MEMBER(a800_rom_bbsb_device::read_80xx)
{
if (offset < 0x1000)
return m_rom[(offset & 0xfff) + (m_banks[0] * 0x1000) + 0];
else if (offset < 0x2000)
return m_rom[(offset & 0xfff) + (m_banks[1] * 0x1000) + 0x4000];
else
return m_rom[(offset & 0x1fff) + 0x8000];
}
WRITE8_MEMBER(a800_rom_bbsb_device::write_80xx)
{
UINT16 addr = offset & 0xfff;
if (addr >= 0xff6 && addr <= 0xff9)
m_banks[BIT(offset, 12)] = (addr - 0xff6);
}
/*-------------------------------------------------
XEGS carts (32K, 64K or 128K)
Bankswitch is controlled by data written in
0xd500-0xd5ff
-------------------------------------------------*/
READ8_MEMBER(xegs_rom_device::read_80xx)
{
if (offset < 0x2000)
return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)];
else
return m_rom[(offset & 0x1fff) + (m_bank_mask * 0x2000)]; // always last 8K bank
}
WRITE8_MEMBER(xegs_rom_device::write_d5xx)
{
m_bank = data & m_bank_mask;
}
/*-------------------------------------------------
Williams 64K
The rom is accessed in 8K chunks at 0xa000-0xbfff
Bankswitch is controlled by writing to 7 diff
offsets (their location varies with the cart type):
offs 0 points to bank 0, offs 1 points to bank 1,
and so on... the rom can be disabled by writing to
the offsets 0x8-0xf of the same range as the bankswitch
-------------------------------------------------*/
READ8_MEMBER(a800_rom_williams_device::read_80xx)
{
return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)];
}
WRITE8_MEMBER(a800_rom_williams_device::write_d5xx)
{
m_bank = (offset & 0x07);
}
/*-------------------------------------------------
Express 64K / Diamond 64K carts
The rom is accessed in 8K chunks at 0xa000-0xbfff
Bankswitch is the same as above, but writes trigger
banks in reverse order: offs 7 points to bank 0, offs 6
points to bank 1, and so on... the rom can be disabled
by writing to the offsets 0x8-0xf of the same range
as the bankswitch
-------------------------------------------------*/
READ8_MEMBER(a800_rom_express_device::read_80xx)
{
return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)];
}
WRITE8_MEMBER(a800_rom_express_device::write_d5xx)
{
m_bank = (offset ^ 0x07) & 0x0f;
}
// Atari 5200
/*-------------------------------------------------
Carts with no bankswitch (4K, 8K, 16K, 32K)
Same as base carts above
-------------------------------------------------*/
/*-------------------------------------------------
Carts with 2x8K (16K) with A13 line not connected
Range 0x4000-0x7fff contains two copies of the low
8K, range 0x8000-0xbfff contains two copies of the
high 8K
-------------------------------------------------*/
READ8_MEMBER(a5200_rom_2chips_device::read_80xx)
{
if (offset < 0x4000)
return m_rom[offset & 0x1fff];
else
return m_rom[(offset & 0x1fff) + 0x2000];
}
/*-------------------------------------------------
Bounty Bob Strikes Back! cart (40K)
Similar to the A800 version, but:
Area 0x8000-0xbfff always point to last 8K bank
(repeated twice)
Areas 0x4000-0x4fff and 0x5000-0x5fff are
separate banks of 4K mapped either in the first
16K chunk or in the second 16K chunk
Bankswitch is controlled by data written in
0x4000-0x4fff and 0x5000-0x5fff respectively
-------------------------------------------------*/
READ8_MEMBER(a5200_rom_bbsb_device::read_80xx)
{
if (offset < 0x1000)
return m_rom[(offset & 0xfff) + (m_banks[0] * 0x1000) + 0];
else if (offset < 0x2000)
return m_rom[(offset & 0xfff) + (m_banks[1] * 0x1000) + 0x4000];
else if (offset >= 0x4000)
return m_rom[(offset & 0x1fff) + 0x8000];
else
return 0;
}
WRITE8_MEMBER(a5200_rom_bbsb_device::write_80xx)
{
UINT16 addr = offset & 0xfff;
if (addr >= 0xff6 && addr <= 0xff9)
m_banks[BIT(offset, 12)] = (addr - 0xff6);
}

148
src/emu/bus/a800/rom.h Normal file
View File

@ -0,0 +1,148 @@
#ifndef __A800_ROM_H
#define __A800_ROM_H
#include "a800_slot.h"
// ======================> a800_rom_device
class a800_rom_device : public device_t,
public device_a800_cart_interface
{
public:
// construction/destruction
a800_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);
a800_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();
virtual DECLARE_READ8_MEMBER(read_80xx);
};
// ======================> a800_rom_bbsb_device
class a800_rom_bbsb_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_80xx);
protected:
int m_banks[2];
};
// ======================> a800_rom_williams_device
class a800_rom_williams_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_williams_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// ======================> a800_rom_express_device
class a800_rom_express_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_express_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// ======================> xegs_rom_device
class xegs_rom_device : public a800_rom_device
{
public:
// construction/destruction
xegs_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();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank;
};
// ======================> a5200_rom_2chips_device
class a5200_rom_2chips_device : public a800_rom_device
{
public:
// construction/destruction
a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual DECLARE_READ8_MEMBER(read_80xx);
};
// ======================> a5200_rom_bbsb_device
class a5200_rom_bbsb_device : public a800_rom_device
{
public:
// construction/destruction
a5200_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_80xx);
protected:
int m_banks[2];
};
// device type definition
extern const device_type A800_ROM;
extern const device_type A800_ROM_BBSB;
extern const device_type A800_ROM_WILLIAMS;
extern const device_type A800_ROM_EXPRESS;
extern const device_type XEGS_ROM;
extern const device_type A5200_ROM_2CHIPS;
extern const device_type A5200_ROM_BBSB;
#endif

70
src/emu/bus/a800/sparta.c Normal file
View File

@ -0,0 +1,70 @@
/***********************************************************************************************************
A800 SpartaDOS cart emulation
***********************************************************************************************************/
#include "emu.h"
#include "sparta.h"
//-------------------------------------------------
// constructor
//-------------------------------------------------
const device_type A800_ROM_SPARTADOS = &device_creator<a800_rom_spartados_device>;
a800_rom_spartados_device::a800_rom_spartados_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: a800_rom_device(mconfig, A800_ROM_SPARTADOS, "Atari 800 SpartaDOS ROM Carts", tag, owner, clock, "a800_sparta", __FILE__)
{
}
void a800_rom_spartados_device::device_start()
{
save_item(NAME(m_bank));
save_item(NAME(m_subslot_enabled));
}
void a800_rom_spartados_device::device_reset()
{
m_bank = 0;
m_subslot_enabled = 0;
}
/*-------------------------------------------------
mapper specific handlers
-------------------------------------------------*/
/*-------------------------------------------------
SpartaDOS 64K carts
Similar to Express / Diamond carts, because
bankswitch is controlled by writing to 7 diff
offsets in reverse order, but writes to offsets
0x8-0xf also enable/disable subslot
-------------------------------------------------*/
READ8_MEMBER(a800_rom_spartados_device::read_80xx)
{
if (!m_subslot_enabled)
return m_rom[(offset & 0x1fff) + (m_bank * 0x2000)];
else
return 0xff; // subslot, currently not implemented
}
WRITE8_MEMBER(a800_rom_spartados_device::write_d5xx)
{
if (offset & 0x08)
m_subslot_enabled = !BIT(offset, 2);
else
m_bank = (offset ^ 0x07) & 0x0f;
}

32
src/emu/bus/a800/sparta.h Normal file
View File

@ -0,0 +1,32 @@
#ifndef __A800_SPARTA_H
#define __A800_SPARTA_H
#include "rom.h"
// ======================> a800_rom_spartados_device
class a800_rom_spartados_device : public a800_rom_device
{
public:
// construction/destruction
a800_rom_spartados_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// device-level overrides
virtual void device_start();
virtual void device_reset();
virtual DECLARE_READ8_MEMBER(read_80xx);
virtual DECLARE_WRITE8_MEMBER(write_d5xx);
protected:
int m_bank, m_subslot_enabled;
};
// device type definition
extern const device_type A800_ROM_SPARTADOS;
#endif

View File

@ -28,6 +28,20 @@ BUSOBJS += $(BUSOBJ)/a7800/xboard.o
endif
#-------------------------------------------------
#
#@src/emu/bus/a800/a800_slot.h,BUSES += A800
#-------------------------------------------------
ifneq ($(filter A800,$(BUSES)),)
OBJDIRS += $(BUSOBJ)/a800
BUSOBJS += $(BUSOBJ)/a800/a800_slot.o
BUSOBJS += $(BUSOBJ)/a800/rom.o
BUSOBJS += $(BUSOBJ)/a800/oss.o
BUSOBJS += $(BUSOBJ)/a800/sparta.o
endif
#-------------------------------------------------
#
#@src/emu/bus/abcbus/abcbus.h,BUSES += ABCBUS

View File

@ -43,6 +43,7 @@ public:
UINT8 m_tdr;
UINT8 m_tcr;
timer_device *m_mcu_timer;
void mmu(UINT8 new_mmu);
DECLARE_READ8_MEMBER(mcu_portA_r);
DECLARE_WRITE8_MEMBER(mcu_portA_w);
DECLARE_READ8_MEMBER(mcu_portB_r);
@ -60,7 +61,7 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
DECLARE_READ8_MEMBER(maxaflex_atari_pia_pa_r);
DECLARE_READ8_MEMBER(maxaflex_atari_pia_pb_r);
WRITE8_MEMBER(a600xl_pia_pb_w) { a600xl_mmu(data); }
WRITE8_MEMBER(a600xl_pia_pb_w) { mmu(data); }
WRITE_LINE_MEMBER(atari_pia_cb2_w) { } // This is used by Floppy drive on Atari 8bits Home Computers
DECLARE_DRIVER_INIT(a600xl);
DECLARE_MACHINE_RESET(supervisor_board);
@ -73,6 +74,23 @@ public:
};
void maxaflex_state::mmu(UINT8 new_mmu)
{
/* check if self-test ROM changed */
if ( new_mmu & 0x80 )
{
logerror("%s MMU SELFTEST RAM\n", machine().system().name);
machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x5000, 0x57ff);
}
else
{
logerror("%s MMU SELFTEST ROM\n", machine().system().name);
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x5000, 0x57ff, "bank2");
machine().device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x5000, 0x57ff);
machine().root_device().membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base() + 0x5000);
}
}
/* Supervisor board emulation */

View File

@ -23,8 +23,6 @@ public:
: driver_device(mconfig, type, tag),
tv_artifacts(0) { }
void a600xl_mmu(UINT8 new_mmu);
/* This is needed in MESS as well for Atari 8bit drivers */
void atari_machine_start();

View File

@ -52,30 +52,6 @@ void atari_interrupt_cb(pokey_device *device, int mask)
device->machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE);
}
/**************************************************************
*
* Memory banking
*
**************************************************************/
void atari_common_state::a600xl_mmu(UINT8 new_mmu)
{
/* check if self-test ROM changed */
if ( new_mmu & 0x80 )
{
logerror("%s MMU SELFTEST RAM\n", machine().system().name);
machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x5000, 0x57ff);
}
else
{
logerror("%s MMU SELFTEST ROM\n", machine().system().name);
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x5000, 0x57ff, "bank2");
machine().device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x5000, 0x57ff);
machine().root_device().membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base() + 0x5000);
}
}
/**************************************************************
*

File diff suppressed because it is too large Load Diff

View File

@ -562,6 +562,7 @@ MACHINES += DIABLO_HD
BUSES += A1BUS
BUSES += A2BUS
BUSES += A7800
BUSES += A800
BUSES += ABCBUS
BUSES += ABCKB
BUSES += ADAM