diff options
author | 2014-09-27 09:21:00 +0000 | |
---|---|---|
committer | 2014-09-27 09:21:00 +0000 | |
commit | 5842c871442db870e49dece8f8cc641681cd1024 (patch) | |
tree | 7444be3f21820ecdb9776a9d6540975d6d2b58dd | |
parent | f8ef333fb4d171a354981bf01de209ec1bf3a557 (diff) |
(MESS) timex.c: added software list for DOCK carts. [Fabio Priuli]
-rw-r--r-- | .gitattributes | 1 | ||||
-rw-r--r-- | hash/timex_dock.xml | 372 | ||||
-rw-r--r-- | src/mess/drivers/timex.c | 119 |
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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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 & the Spiders</description> + <year>19??</year> + <publisher><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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") |