summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2014-09-27 09:21:00 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2014-09-27 09:21:00 +0000
commit5842c871442db870e49dece8f8cc641681cd1024 (patch)
tree7444be3f21820ecdb9776a9d6540975d6d2b58dd
parentf8ef333fb4d171a354981bf01de209ec1bf3a557 (diff)
(MESS) timex.c: added software list for DOCK carts. [Fabio Priuli]
-rw-r--r--.gitattributes1
-rw-r--r--hash/timex_dock.xml372
-rw-r--r--src/mess/drivers/timex.c119
3 files changed, 439 insertions, 53 deletions
diff --git a/.gitattributes b/.gitattributes
index d344d718467..e305d6f672a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -311,6 +311,7 @@ hash/tg16.xml svneol=native#text/xml
hash/ti74_cart.xml svneol=native#text/xml
hash/ti99_cart.xml svneol=native#text/xml
hash/tiki100.xml svneol=native#text/xml
+hash/timex_dock.xml svneol=native#text/xml
hash/to770_cart.xml svneol=native#text/xml
hash/to7_cart.xml svneol=native#text/xml
hash/trs80m2.xml svneol=native#text/xml
diff --git a/hash/timex_dock.xml b/hash/timex_dock.xml
new file mode 100644
index 00000000000..0f1f7954229
--- /dev/null
+++ b/hash/timex_dock.xml
@@ -0,0 +1,372 @@
+<?xml version="1.0"?>
+<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+
+<softwarelist name="timex_dock" description="Timex Sinclair TS-2068 DOCK cartridges">
+
+
+ <software name="android" supported="no">
+ <description>Androids</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="androids.bin" size="8192" crc="fec4c2b4" sha1="52b1d4c8316adf74aeb685f54c789a90015215d6" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="backgamm" supported="no">
+ <description>Backgammon</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="backgammon.bin" size="16384" crc="2c125684" sha1="20d8be438259958a1f0eb0a3852b39fbd4c02c8c" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="budgeter" supported="no">
+ <description>Budgeter</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="budgeter.bin" size="16384" crc="9b5e4565" sha1="bead4247e05f22a26cdc6a835a62b1277685b709" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="casino1" supported="no">
+ <description>Casino1</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="casino1.bin" size="24576" crc="3da6d3c9" sha1="f84ba979b94baf092bae70cfa1ec8f276b48885f" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="chess" supported="no">
+ <description>Chess</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="chess.bin" size="16384" crc="e64367ef" sha1="cf7e02a6c20ee0d027f4676e2a1e7aed5d6ced95" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="crazybug" supported="no">
+ <description>Crazy Bugs</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="crazy bugs.bin" size="8192" crc="a440e8f2" sha1="c0f63b7492e542a3bb955a787e7394dc5a3e6fde" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="etoolkit" supported="no">
+ <description>eToolkit</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="etoolkit.bin" size="24576" crc="e647e94f" sha1="c41455daa08ba47d4eb7501c3ed73593a65255d7" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="fsim" supported="no">
+ <description>Flight Simulator</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="flight simulator.bin" size="32768" crc="e1f2e4cc" sha1="30a78405f88041d36f43e2526fb01539bb469458" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="gyruss" supported="no">
+ <description>Gyruss</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="gyruss.bin" size="16384" crc="b2719977" sha1="d950810bf6b729edbc8a92e1e6bdc609cb4d5895" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="horacesp" supported="no">
+ <description>Horace &amp; the Spiders</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="horace and the spiders.bin" size="16384" crc="86e3366d" sha1="904f4e566911b242f967f7d13a16fd81ff1255cd" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="horace" supported="no">
+ <description>Hungry Horace</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="hungry horace.bin" size="16384" crc="1b31125f" sha1="429270c85b5692d9cdb173a7ce6f297b8f35c4c3" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="jupitace" supported="no">
+ <description>Jupiter ACE Emulator</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="jupiter ace emulator.bin" size="16384" crc="905c71fc" sha1="88544ccbc8acdf23adbfb0a37f34283702b09348" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="locomotn" supported="no">
+ <description>Loco Motion</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="loco motion.bin" size="16384" crc="0e0302ca" sha1="0974f75f99d2acb2f3e767c26a2efbef5eb93235" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="montezum" supported="no">
+ <description>Montezuma's Revenge</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="montezuma's revenge.bin" size="8192" crc="683f9f93" sha1="406e1ba6eeb94142696d22293782bfd067b2233c" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="mterm" supported="no">
+ <description>MTERM</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="mterm.bin" size="8192" crc="8e0be19f" sha1="8b18268601c895dc90e79ec9605ed40925832979" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="penetrat" supported="no">
+ <description>Penetrator</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="penetrator.bin" size="32768" crc="19cb2f78" sha1="826d03e2cfc176047a2e913315115d5f71c9ae2a" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="pinball" supported="no">
+ <description>Pinball</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="pinball.bin" size="24576" crc="2fb6a452" sha1="ab74fbe21df513e52aef960be018369ebfb3c33f" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="planet" supported="no">
+ <description>Planetoids</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="planetoids.bin" size="16384" crc="a6c9cc94" sha1="70e05f2d1aaad79cfa2d90111ba0a58cca4cacd9" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="popeye" supported="no">
+ <description>Popeye</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="popeye.bin" size="8192" crc="dae064c0" sha1="dc0ab2c30a86647529d92a737d24f51f4de7ae19" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="qbert" supported="no">
+ <description>Q*Bert</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="qbert.bin" size="8192" crc="58b45e9d" sha1="d748e5b504f3ea4e0cf472dca1746c2654361863" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="jedi" supported="no">
+ <description>Return Of The Jedi - Death Star Battle</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="return of the jedi - death star battle.bin" size="8192" crc="0fafa2b8" sha1="27a50cf2a3272092f3bd350cb0d53619940f4453" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <!-- TODO: add support for RAM in this cart (0xa000-0xffff) -->
+ <software name="rwp32" supported="no">
+ <description>rWP32</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="rwp32.bin" size="8192" crc="a833d73b" sha1="d1348382e6d50ad528577d22200c3455d59e2566" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="unicorn" supported="no">
+ <description>Shadow of the Unicorn</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="shadow of the unicorn.bin" size="65536" crc="9f7af8ef" sha1="676c9142e11b3b706f64b7606aa084f1bb217d67" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="spacerai" supported="no">
+ <description>Space Raiders</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="space raiders.bin" size="16384" crc="86d7a08b" sha1="8e1da4c183e9af2ba11b0745820fff4017cbad19" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="starwars" supported="no">
+ <description>Star Wars - The Arcade Game</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="star wars - the arcade game.bin" size="16384" crc="22cd482b" sha1="c12f38c382fa2a07430fe6daaa3acd96820aa76d" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="statecap" supported="no">
+ <description>States and Capitals</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="states and capitals.bin" size="32768" crc="04bf4a3b" sha1="0ea77fb538bce31cd90f8f926deda7b90d99cf99" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="superhzd" supported="no">
+ <description>Super Hot-Z Disassembler v2.51 (AROS)</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="superhotzdisassemblerv2.51-aros.bin" size="24576" crc="7bf239be" sha1="7c04c6e861b4b82ee3fd5bf21b17d6dd7d893386" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="swordfgt" supported="no">
+ <description>Swordfight</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="swordfight.bin" size="24576" crc="95155511" sha1="69e7e0111ed8d8925314deb661990bf8c9eb5cc4" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="tasword2" supported="no">
+ <description>Tasword II</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="tasword ii.bin" size="16384" crc="7b2a0e31" sha1="2bdf3c10a70e4a02410d4f20cbc1c0aaa444d1e2" offset="0x8000" />
+ </dataarea>
+ </part>
+ </software>
+
+<!-- This must map on the HOME memory?!? How does this actually work? -->
+ <software name="timeword" supported="no">
+ <description>TimeWord</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="timeword.bin" size="16384" crc="a767d39e" sha1="5c606380234f867aafd3d215982eabf374553118" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="vucalc" supported="no">
+ <description>vu-calc</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="vu-calc.bin" size="8192" crc="7bbcc167" sha1="efc626c55125b8a8da527bd986ed9d4065973e8c" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="vufile" supported="no">
+ <description>vu-file</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="vu-file.bin" size="16384" crc="94dafab6" sha1="1007aba595085bc46c406f933484a4dbbd0154bb" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="zebraos" supported="no">
+ <description>Zebra OS 64</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="timex_cart">
+ <dataarea name="rom" size="65536">
+ <rom name="zebra os 64.bin" size="16384" crc="928a8207" sha1="335d2f858d5bbe63989a2df1620ab5838337cfbd" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+</softwarelist>
diff --git a/src/mess/drivers/timex.c b/src/mess/drivers/timex.c
index 29e1cc6d521..89f3d2ead66 100644
--- a/src/mess/drivers/timex.c
+++ b/src/mess/drivers/timex.c
@@ -547,7 +547,7 @@ MACHINE_RESET_MEMBER(spectrum_state,ts2068)
astring region_tag;
m_dock_crt = memregion(region_tag.cpy(m_dock->tag()).cat(GENERIC_ROM_REGION_TAG));
- m_dock_cart_type = (m_dock->exists()) ? TIMEX_CART_DOCK : TIMEX_CART_NONE;
+ m_dock_cart_type = m_dock_crt ? TIMEX_CART_DOCK : TIMEX_CART_NONE;
ts2068_update_memory();
MACHINE_RESET_CALL_MEMBER(spectrum);
@@ -592,62 +592,71 @@ MACHINE_RESET_MEMBER(spectrum_state,tc2048)
DEVICE_IMAGE_LOAD_MEMBER( spectrum_state, timex_cart )
{
UINT32 size = m_dock->common_get_size("rom");
- UINT8 *DOCK;
- int chunks_in_file = 0;
- dynamic_buffer header;
- header.resize(9);
- if (size % 0x2000 != 9)
+ if (image.software_entry() == NULL)
{
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
- return IMAGE_INIT_FAIL;
- }
- if (image.software_entry() != NULL)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Loading from softlist is not supported yet");
- return IMAGE_INIT_FAIL;
- }
-
- m_dock->rom_alloc(0x10000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
- DOCK = m_dock->get_rom_base();
-
- // check header
- image.fread(header, 9);
-
- for (int i = 0; i < 8; i++)
- if (header[i + 1] & 0x02) chunks_in_file++;
-
- if (chunks_in_file * 0x2000 + 0x09 != size)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
- return IMAGE_INIT_FAIL;
- }
-
- switch (header[0])
- {
- case 0x00: logerror ("DOCK cart\n");
- m_ram_chunks = 0;
- for (int i = 0; i < 8; i++)
- {
- m_ram_chunks = m_ram_chunks | ((header[i + 1] & 0x01) << i);
- if (header[i + 1] & 0x02)
- image.fread(DOCK + i * 0x2000, 0x2000);
- else
+ UINT8 *DOCK;
+ int chunks_in_file = 0;
+ dynamic_buffer header;
+ header.resize(9);
+
+ if (size % 0x2000 != 9)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
+ return IMAGE_INIT_FAIL;
+ }
+ if (image.software_entry() != NULL)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Loading from softlist is not supported yet");
+ return IMAGE_INIT_FAIL;
+ }
+
+ m_dock->rom_alloc(0x10000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ DOCK = m_dock->get_rom_base();
+
+ // check header
+ image.fread(header, 9);
+
+ for (int i = 0; i < 8; i++)
+ if (header[i + 1] & 0x02) chunks_in_file++;
+
+ if (chunks_in_file * 0x2000 + 0x09 != size)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
+ return IMAGE_INIT_FAIL;
+ }
+
+ switch (header[0])
+ {
+ case 0x00: logerror ("DOCK cart\n");
+ m_ram_chunks = 0;
+ for (int i = 0; i < 8; i++)
{
- if (header[i + 1] & 0x01)
- memset(DOCK + i * 0x2000, 0x00, 0x2000);
+ m_ram_chunks = m_ram_chunks | ((header[i + 1] & 0x01) << i);
+ if (header[i + 1] & 0x02)
+ image.fread(DOCK + i * 0x2000, 0x2000);
else
- memset(DOCK + i * 0x2000, 0xff, 0x2000);
+ {
+ if (header[i + 1] & 0x01)
+ memset(DOCK + i * 0x2000, 0x00, 0x2000);
+ else
+ memset(DOCK + i * 0x2000, 0xff, 0x2000);
+ }
}
- }
- break;
-
- default:
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Cart type not supported");
- return IMAGE_INIT_FAIL;
+ break;
+
+ default:
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Cart type not supported");
+ return IMAGE_INIT_FAIL;
+ }
+
+ logerror ("Cart loaded [Chunks %02x]\n", m_ram_chunks);
+ }
+ else
+ {
+ m_dock->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ memcpy(m_dock->get_rom_base(), image.get_software_region("rom"), size);
}
-
- logerror ("Cart loaded [Chunks %02x]\n", m_ram_chunks);
return IMAGE_INIT_PASS;
}
@@ -695,10 +704,14 @@ static MACHINE_CONFIG_DERIVED( ts2068, spectrum_128 )
/* cartridge */
MCFG_DEVICE_REMOVE("cartslot")
- MCFG_GENERIC_CARTSLOT_ADD("dockslot", generic_plain_slot, NULL)
- MCFG_GENERIC_EXTENSIONS("dck")
+ MCFG_GENERIC_CARTSLOT_ADD("dockslot", generic_plain_slot, "timex_cart")
+ MCFG_GENERIC_EXTENSIONS("dck,bin")
MCFG_GENERIC_LOAD(spectrum_state, timex_cart)
+ /* Software lists */
+ MCFG_DEVICE_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "timex_dock")
+
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("48K")