Merge remote-tracking branch 'refs/remotes/mamedev/master' into interpro

This commit is contained in:
Patrick Mackinlay 2017-01-07 08:59:36 +07:00
commit f6cc05136b
56 changed files with 3390 additions and 2402 deletions

View File

@ -7076,8 +7076,7 @@ static const char *ReadString(std::string *s, const char *ptr) {
static bool ReadAttribute(std::string *name, std::string *type, static bool ReadAttribute(std::string *name, std::string *type,
std::vector<unsigned char> *data, size_t *marker_size, std::vector<unsigned char> *data, size_t *marker_size,
const char *marker, size_t size) { const char *marker, size_t size) {
using namespace bx; size_t name_len = bx::strnlen(marker, size);
size_t name_len = strnlen(marker, size);
if (name_len == size) { if (name_len == size) {
// String does not have a terminating character. // String does not have a terminating character.
return false; return false;
@ -7087,7 +7086,7 @@ static bool ReadAttribute(std::string *name, std::string *type,
marker += name_len + 1; marker += name_len + 1;
size -= name_len + 1; size -= name_len + 1;
size_t type_len = strnlen(marker, size); size_t type_len = bx::strnlen(marker, size);
if (type_len == size) { if (type_len == size) {
return false; return false;
} }

View File

@ -5035,8 +5035,8 @@ Info from Atariage and Atarimania
</part> </part>
</software> </software>
<software name="dodgeeme" cloneof="dodgeem"> <software name="dodgeeme2" cloneof="dodgeem">
<description>Dodge 'Em (PAL)</description> <description>Dodge 'Em (PAL, Earlier)</description>
<year>1980</year> <year>1980</year>
<publisher>Atari</publisher> <publisher>Atari</publisher>
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
@ -5046,13 +5046,16 @@ Info from Atariage and Atarimania
</part> </part>
</software> </software>
<software name="dodgeemef" cloneof="dodgeem"> <software name="dodgeeme" cloneof="dodgeem">
<description>Dodge 'Em (PAL) (Fixed?)</description> <description>Dodge 'Em (PAL, Later)</description>
<year>1980</year> <year>1987</year>
<publisher>Atari</publisher> <publisher>Atari</publisher>
<info name="serial" value="CX2637" />
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
<feature name="pcb" value="C011885 REV F" />
<feature name="u1" value="" /> <!-- ROM -->
<dataarea name="rom" size="4096"> <dataarea name="rom" size="4096">
<rom name="dodge 'em (head on) (1980) (atari, carla meninsky) (cx2637, cx2637p) (pal) [fixed].bin" size="4096" crc="10cfc6c0" sha1="b26674d6e30d1a0bb2719b9bb1b3ccfa346260cf" offset="0" /> <rom name="AIP.u1" size="4096" crc="10cfc6c0" sha1="b26674d6e30d1a0bb2719b9bb1b3ccfa346260cf" offset="0" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -7275,12 +7278,15 @@ Info from Atariage and Atarimania
</software> </software>
<software name="haunted"> <software name="haunted">
<description>Haunted House</description> <description>Haunted House (NTSC)</description>
<year>1982</year> <year>1981</year>
<publisher>Atari</publisher> <publisher>Atari</publisher>
<info name="serial" value="CX2654" />
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
<feature name="pcb" value="C011885 REV F" />
<feature name="u1" value="" /> <!-- ROM -->
<dataarea name="rom" size="4096"> <dataarea name="rom" size="4096">
<rom name="haunted house (mystery mansion, graves' manor, nightmare manor) (1982) (atari, james andreasen - sears) (cx2654 - 49-75141).bin" size="4096" crc="aa62d961" sha1="1476c869619075b551b20f2c7f95b11e0d16aec1" offset="0" /> <rom name="054.u1" size="4096" crc="aa62d961" sha1="1476c869619075b551b20f2c7f95b11e0d16aec1" offset="0" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -10655,11 +10661,14 @@ Info from Atariage and Atarimania
<software name="outlawe" cloneof="outlaw"> <software name="outlawe" cloneof="outlaw">
<description>Outlaw (PAL)</description> <description>Outlaw (PAL)</description>
<year>1978</year> <year>1979</year>
<publisher>Atari</publisher> <publisher>Atari</publisher>
<info name="serial" value="CX-2605-P" />
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
<feature name="pcb" value="C010789" />
<feature name="u1" value="" /> <!-- ROM -->
<dataarea name="rom" size="2048"> <dataarea name="rom" size="2048">
<rom name="outlaw (1978) (atari, david crane) (cx2605, cx2605p) (pal).bin" size="2048" crc="64f136d2" sha1="4a1514a7cf4279fded1b0db6f5b31818b9ff011c" offset="0" /> <rom name="B113.u1" size="2048" crc="64f136d2" sha1="4a1514a7cf4279fded1b0db6f5b31818b9ff011c" offset="0" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -16865,11 +16874,15 @@ Info from Atariage and Atarimania
<software name="tubybird"> <software name="tubybird">
<description>Tuby Bird (PAL)</description> <description>Tuby Bird (PAL)</description>
<year>19??</year> <year>1983?</year>
<publisher>Suntek</publisher> <publisher>Suntek, Quelle</publisher>
<info name="serial" value="SS-020 (Suntek), 465.302 8 (Quelle)" />
<info name="alt_title" value="Vogel Flieh (Quelle)"/>
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
<feature name="pcb" value="21003A" />
<feature name="u1" value="" /> <!-- Epoxy blob ROM -->
<dataarea name="rom" size="4096"> <dataarea name="rom" size="4096">
<rom name="tuby bird (aka dolphin) (rainbow vision - suntek) (ss-020) (pal).bin" size="4096" crc="1ca034ca" sha1="f4f941b779bcb7902df0eb7cf6b985f56e751183" offset="0" /> <rom name="u1" size="4096" crc="1ca034ca" sha1="f4f941b779bcb7902df0eb7cf6b985f56e751183" offset="0" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -17539,9 +17552,12 @@ Info from Atariage and Atarimania
<description>Weltraumtunnel (PAL)</description> <description>Weltraumtunnel (PAL)</description>
<year>1983</year> <year>1983</year>
<publisher>Quelle</publisher> <publisher>Quelle</publisher>
<info name="alt_title" value="Laaser Voley"/>
<part name="cart" interface="a2600_cart"> <part name="cart" interface="a2600_cart">
<feature name="pcb" value="0019" />
<feature name="u1" value="" /> <!-- Epoxy blob ROM -->
<dataarea name="rom" size="4096"> <dataarea name="rom" size="4096">
<rom name="weltraumtunnel (aka laser gates) (1983) (quelle) (292.651 7) (pal).bin" size="4096" crc="dc1d3627" sha1="c513703d638c01b0c26922d5e3e7bfb65ea597da" offset="0" /> <rom name="u1" size="4096" crc="dc1d3627" sha1="c513703d638c01b0c26922d5e3e7bfb65ea597da" offset="0" />
</dataarea> </dataarea>
</part> </part>
</software> </software>

View File

@ -4816,11 +4816,12 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
<description>Mega Games I (Euro)</description> <description>Mega Games I (Euro)</description>
<year>1992</year> <year>1992</year>
<publisher>Sega</publisher> <publisher>Sega</publisher>
<info name="release" value="19921001"/>
<part name="cart" interface="megadriv_cart"> <part name="cart" interface="megadriv_cart">
<feature name="pcb" value="171-5978BA"/> <feature name="pcb" value="171-5978BA"/> <!-- Also found with 171-5978B -->
<feature name="u1" value="MPR-15009 W50"/> <!-- location not really marked on PCB, using u1 for consistency --> <feature name="u1" value="MPR-15009 W50"/> <!-- location not really marked on PCB, using u1 for consistency -->
<dataarea name="rom" width="16" endianness="big" size="1048576"> <dataarea name="rom" width="16" endianness="big" size="1048576">
<rom name="mpr-15009 w50.u1" size="1048576" crc="db753224" sha1="076df34a01094ce0893f32600e24323567e2a23b" offset="0x000000"/> <rom name="MPR-15009 W50.u1" size="1048576" crc="db753224" sha1="076df34a01094ce0893f32600e24323567e2a23b" offset="0x000000"/>
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -7385,11 +7386,12 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
<description>Sonic the Hedgehog (Euro, USA)</description> <description>Sonic the Hedgehog (Euro, USA)</description>
<year>1991</year> <year>1991</year>
<publisher>Sega</publisher> <publisher>Sega</publisher>
<info name="release" value="19910623"/>
<part name="cart" interface="megadriv_cart"> <part name="cart" interface="megadriv_cart">
<feature name="pcb" value="171-5703"/> <feature name="pcb" value="171-5703"/>
<feature name="ic1" value="MPR-13913-F, MPR-13913 W33"/> <feature name="ic1" value="MPR-13913-F, MPR-13913 W33"/>
<dataarea name="rom" width="16" endianness="big" size="524288"> <dataarea name="rom" width="16" endianness="big" size="524288">
<rom name="mpr-13913-f.ic1" size="524288" crc="f9394e97" sha1="6ddb7de1e17e7f6cdb88927bd906352030daa194" offset="0x000000"/> <rom name="MPR-13913-F.ic1" size="524288" crc="f9394e97" sha1="6ddb7de1e17e7f6cdb88927bd906352030daa194" offset="0x000000"/>
</dataarea> </dataarea>
</part> </part>
</software> </software>

View File

@ -10899,9 +10899,16 @@ clips onto the player's ear.
<year>1999</year> <year>1999</year>
<publisher>Acclaim Entertainment</publisher> <publisher>Acclaim Entertainment</publisher>
<info name="serial" value="NUS-NRWD-NOE"/> <info name="serial" value="NUS-NRWD-NOE"/>
<info name="release" value="19991226"/>
<info name="alt_title" value="Turok - Rage Wars (Cart)"/>
<part name="cart" interface="n64_cart"> <part name="cart" interface="n64_cart">
<feature name="pcb_model" value="NUS-01A-02" />
<feature name="u1" value="U1" /> <!-- ROM -->
<feature name="u2" value="U2" /> <!-- empty socket -->
<feature name="u3" value="U3" /> <!-- CIC -->
<feature name="cart_back_label" value="NUS-EUR-1" />
<dataarea name="rom" size="8388608"> <dataarea name="rom" size="8388608">
<rom name="turok - legenden des verlorenen landes (germany).bin" size="8388608" crc="a2754ca4" sha1="51792351f4fd61c11f4b3b755a5eb8b9ea725b72" offset="000000" /> <rom name="NUS-NRWD-0.u1" size="8388608" crc="a2754ca4" sha1="51792351f4fd61c11f4b3b755a5eb8b9ea725b72" offset="000000" />
</dataarea> </dataarea>
</part> </part>
</software> </software>

View File

@ -9929,8 +9929,8 @@ more investigation needed...
<feature name="cart_back_label" value="920214" /> <feature name="cart_back_label" value="920214" />
<feature name="slot" value="hirom" /> <feature name="slot" value="hirom" />
<dataarea name="rom" size="3145728"> <dataarea name="rom" size="3145728">
<rom name="shvc-adkj-0 p0.u1" size="2097152" crc="5b606ef7" sha1="6b47084fba80ce07347010a7bb4af063f058936b" offset="0x000000" /> <rom name="SHVC-ADKJ-0 P0.u1" size="2097152" crc="5b606ef7" sha1="6b47084fba80ce07347010a7bb4af063f058936b" offset="0x000000" />
<rom name="shvc-adkj-0 p3.u2" size="1048576" crc="5b379b50" sha1="83b0507f1a84e686d76b5b869c1a5f2e22278097" offset="0x200000" /> <rom name="SHVC-ADKJ-0 P3.u2" size="1048576" crc="5b379b50" sha1="83b0507f1a84e686d76b5b869c1a5f2e22278097" offset="0x200000" />
</dataarea> </dataarea>
<dataarea name="nvram" size="8192"> <dataarea name="nvram" size="8192">
</dataarea> </dataarea>
@ -11930,7 +11930,7 @@ more investigation needed...
<feature name="cart_back_label" value="901121" /> <feature name="cart_back_label" value="901121" />
<feature name="slot" value="lorom" /> <feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576"> <dataarea name="rom" size="1048576">
<rom name="shvc-eh-0.u1" size="1048576" crc="5cb9bc35" sha1="745ebf8164ca7be58829c6130c0e06f330cd0748" offset="0x000000" /> <rom name="SHVC-EH-0.u1" size="1048576" crc="5cb9bc35" sha1="745ebf8164ca7be58829c6130c0e06f330cd0748" offset="0x000000" />
</dataarea> </dataarea>
<dataarea name="nvram" size="8192"> <dataarea name="nvram" size="8192">
</dataarea> </dataarea>
@ -19340,17 +19340,17 @@ more investigation needed...
<description>Nintendo Scope 6 (Euro)</description> <description>Nintendo Scope 6 (Euro)</description>
<year>1992</year> <year>1992</year>
<publisher>Nintendo</publisher> <publisher>Nintendo</publisher>
<info name="serial" value="SNSP-LR-FAH, SNSP-LR-FAH-1" /> <info name="serial" value="SNSP-LR-FAH, SNSP-LR-FAH-1, SNSP-LR-UKV" />
<part name="cart" interface="snes_cart"> <part name="cart" interface="snes_cart">
<feature name="pcb" value="SHVC-1A0N-02" /> <feature name="pcb" value="SHVC-1A0N-02" />
<feature name="u1" value="U1 MASK ROM" /> <feature name="u1" value="U1 MASK ROM" />
<feature name="u2" value="U2 CIC" /> <feature name="u2" value="U2 CIC" />
<feature name="lockout" value="" /> <feature name="lockout" value="" />
<feature name="cart_model" value="SNSP-006" /> <feature name="cart_model" value="SNSP-006" />
<feature name="cart_back_label" value="SNSP-FAH" /> <feature name="cart_back_label" value="SNSP-FAH, SNSP-UKV" />
<feature name="slot" value="lorom" /> <feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576"> <dataarea name="rom" size="1048576">
<rom name="spal-lr-0.u1" size="1048576" crc="b1859ca4" sha1="e5efb589e2dd783ef2d99f01caa866d8a3a04d16" offset="0x000000" /> <rom name="SPAL-LR-0.u1" size="1048576" crc="b1859ca4" sha1="e5efb589e2dd783ef2d99f01caa866d8a3a04d16" offset="0x000000" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -25243,7 +25243,7 @@ more investigation needed...
<feature name="cart_back_label" value="920214" /> <feature name="cart_back_label" value="920214" />
<feature name="slot" value="lorom" /> <feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576"> <dataarea name="rom" size="1048576">
<rom name="shvc-fc-0.u1" size="1048576" crc="7c94c86c" sha1="9d60d55b690c02413aa668ed9da196b4f1449e81" offset="0x000000" /> <rom name="SHVC-FC-0.u1" size="1048576" crc="7c94c86c" sha1="9d60d55b690c02413aa668ed9da196b4f1449e81" offset="0x000000" />
</dataarea> </dataarea>
<dataarea name="nvram" size="8192"> <dataarea name="nvram" size="8192">
</dataarea> </dataarea>
@ -28147,7 +28147,7 @@ Alternate board (XL-1)
<feature name="cart_back_label" value="SNSP-EUR, SNSP-FAH" /> <feature name="cart_back_label" value="SNSP-EUR, SNSP-FAH" />
<feature name="slot" value="lorom" /> <feature name="slot" value="lorom" />
<dataarea name="rom" size="524288"> <dataarea name="rom" size="524288">
<rom name="spal-fs-0.u1" size="524288" crc="442c47cb" sha1="6eb6dd6da1e8eefad24c30b59ededbd671b9db2c" offset="0x000000" /> <rom name="SPAL-FS-0.u1" size="524288" crc="442c47cb" sha1="6eb6dd6da1e8eefad24c30b59ededbd671b9db2c" offset="0x000000" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
@ -33286,6 +33286,26 @@ Alternate board (XL-1)
</dataarea> </dataarea>
</part> </part>
</software> </software>
<software name="lostvik">
<description>The Lost Vikings (Euro)</description>
<year>1993</year>
<publisher>Interplay</publisher>
<info name="serial" value="SNSP-LV-SCN" />
<info name="release" value="19931028" />
<part name="cart" interface="snes_cart">
<feature name="pcb" value="SHVC-1A0N-20" />
<feature name="u1" value="U1 MASK ROM" />
<feature name="u2" value="U2 CIC" />
<feature name="lockout" value="" />
<feature name="cart_model" value="SNSP-006" />
<feature name="cart_back_label" value="SNSP-UKV" />
<feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576">
<rom name="SPAL-LV-0.u1" size="1048576" crc="66989491" sha1="2bd4c2af6e5d7252d16342fd1a64454dca3ce557" offset="0x000000" />
</dataarea>
</part>
</software>
<software name="turnburns" cloneof="turnburn"> <software name="turnburns" cloneof="turnburn">
<!-- single cartridge source: Zidanax --> <!-- single cartridge source: Zidanax -->
@ -46113,18 +46133,6 @@ to ensure nothing has been touched in the Retro Quest cart production in 2013/20
</part> </part>
</software> </software>
<software name="lostvik">
<description>The Lost Vikings (Euro)</description>
<year>1993</year>
<publisher>Interplay</publisher>
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576">
<rom name="lost vikings, the (europe).sfc" size="1048576" crc="66989491" sha1="2bd4c2af6e5d7252d16342fd1a64454dca3ce557" offset="0x000000" />
</dataarea>
</part>
</software>
<software name="lostvikf" cloneof="lostvik"> <software name="lostvikf" cloneof="lostvik">
<description>The Lost Vikings (Fra)</description> <description>The Lost Vikings (Fra)</description>
<year>1993</year> <year>1993</year>
@ -59520,19 +59528,6 @@ to ensure nothing has been touched in the Retro Quest cart production in 2013/20
</part> </part>
</software> </software>
<!-- Most likely this is simply a bad dump of syvalionp. -->
<software name="syvalionp2" cloneof="syvalion">
<description>Syvalion (Euro, Prototype 2)</description>
<year>1992</year>
<publisher>Toshiba EMI</publisher>
<part name="cart" interface="snes_cart">
<feature name="slot" value="lorom" />
<dataarea name="rom" size="1048576">
<rom name="syvalion (europe) (beta).sfc" size="1048576" crc="be122755" sha1="ddfa611f1177f371c1107dbd8e8ecdb19011a232" offset="0x000000" status="baddump" />
</dataarea>
</part>
</software>
<software name="syvalion"> <software name="syvalion">
<description>Syvalion (Euro)</description> <description>Syvalion (Euro)</description>
<year>1992</year> <year>1992</year>

File diff suppressed because it is too large Load Diff

181
hash/vsmileb_cart.xml Normal file
View File

@ -0,0 +1,181 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
NOTE: This list is here only to document available dumps and it's not used (yet) by MESS!
-->
<!--
V.Smile Motion: 80-08**** (Smartridges are orange)
V.Smile Smartbook Software: 80-089*** (Smartridges are red)
V.Smile: 80-09**** (Smartridges are purple, some are gray because of plastic defects)
V.Smile Baby 80-099*** (Smartridges are yellow, incompatible with TV based V.Smile consoles)
Language:
********0 = US (White labels on back)
********1 = Italy Apparently distributed by company 'Giochi Preziosi'
********2 = Netherlands (Red or White labels on back)
********3 = UK (Red labels on back)
********4 = Germany (Blue labels on back)
********5 = France (Yellow labels on back, also for NTSC French-Canadian)
********6 = Portugal Apparently distributed by company 'Concentra' (White labels on back)
********7 = Spain (Green labels on back)
*******13 = Denmark Distributed by the company 'Top Toy A/S'
*******14 = Sweden Distributed by the company 'Top Toy A/S'
*******15 = Norway
*******?? = Finland
VTech V.Smile Baby cartridges
+========+===================+============================================================================+
| Dumped | Serial | Name |
+========+===================+============================================================================+
| | 80-099000(US) | Learn and Discover Home (white background on title) (pack-in) |
| | 80-099000(US) | Learn and Discover Home (green background on title) (standalone) |
| | 80-099002(NL) | Dierenhuis |
| | 80-099003(UK) | Learn and Discover Home (white background on title) (pack-in) |
| XX | 80-099004(GE) | Meine kleinen Tierfreunde (Explore and Learn Home on label) |
| | 80-099005(FR) | La Maison des animaux |
| XX | 80-099014(SE) | Lär och upptäck |
+========+===================+============================================================================+
| XX | 80-099020(US) | Pooh's Hundred Acre Wood Adventure |
| | 80-099022(NL) | Poeh's Honderd Bunderbos Avontuur |
| | 80-099023(UK) | Pooh's Hundred Acre Wood Adventure |
| XX | 80-099024(GE) | Puuhs Hundert-Morgen-Wald |
| | 80-099025(FR) | Winnie et ses amis dans la Faret des Reves Bieus |
| XX | 80-099034(SE) | Nalle Puhs Äventyr i Sjumilaskogen |
+========+===================+============================================================================+
| | 80-099040(US) | Baby Einstein - World of Discoveries |
| | 80-099040(US) | Baby Einstein - World of Discoveries (no # on front label) |
| | 80-099043(UK) | Baby Einstein - World of Discoveries |
| | 80-099045(FR) | Baby Einstein - Un Monde de decouvertes |
+========+===================+============================================================================+
| | 80-099060(US) | A Day On The Farm |
| | 80-099063(UK) | A Day On The Farm |
| XX | 80-099064(GE) | Mein erster Bauernhof |
| | 80-099065(FR) | Un jour a la ferme |
+========+===================+============================================================================+
| | 80-099080(US) | <Unknown> |
+========+===================+============================================================================+
| | 80-099100(US) | Noah's Ark Animal Adventure |
| | 80-099102(NL) | De ark van Noach |
| | 80-099103(UK) | Noah's Ark Animal Adventure |
| | 80-099105(FR) | L'arche de Noe - L'aventure des animaux |
+========+===================+============================================================================+
| | 80-099120(US) | Barney - Let's Go to a Party |
+========+===================+============================================================================+
| | 80-099140(US) | Teletubbies |
| | 80-099142(NL) | Teletubbies |
| | 80-099143(UK) | Teletubbies |
| | 80-099145(FR) | Teletubbies |
+========+===================+============================================================================+
| | 80-099160(US) | Discovery with Baby Mickey and Friends |
| | 80-099163(UK) | Discovery with Baby Mickey and Friends |
| | 80-099165(UK) | Les decouvertes de Mickey et ses amis |
+========+===================+============================================================================+
| | 80-099180(US) | Bailey Goes To Town (Included Bailey Plush Bear Controller) |
| | 80-099183(UK) | Bailey Goes To Town (Included Bailey Plush Bear Controller) |
+========+===================+============================================================================+
| | 80-099200(US) | Mother Goose |
+========+===================+============================================================================+
| | 80-099220(US) | Care Bears Play Day |
+========+===================+============================================================================+
| | 80-099240(US) | Backyardigans: Big Backyard Adventures |
+========+===================+============================================================================+
VTech V.Baby cartridges. Note that the VTech V.Baby is not the same console as the VTech V.Smile Baby.
The V.Baby currently have no dumps available, hence the carts are temporarily listed here.
+========+===================+============================================================================+
| Dumped | Serial | Name |
+========+===================+============================================================================+
| | 80-107100-001(US) | Meet Me at the Zoo (Orange, V.Baby packin) |
| | 80-220000(US) | The World of Eric Carle - The Very Hungry Caterpillar |
| | 80-220600(US) | Backyardigans |
| | 80-220700(US) | Noah's Ark - Animal Adventures |
| | 80-220800(US) | Mother Goose |
+========+===================+============================================================================+
-->
<softwarelist name="vsmileb_cart" description="VTech V.Smile Baby cartridges">
<software name="mktierf" supported="no">
<description>Meine kleinen Tierfreunde (Ger)</description>
<year>200?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099004(GE)" />
<part name="cart" interface="vsmileb_cart">
<feature name="pcb" value="707154" />
<feature name="pcb_model" value="707154-3" />
<feature name="u4" value="U4" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="99004.u4" size="8388608" crc="7b48544b" sha1="a736ef1313762c493a366990406c3a7393457b6e" offset="0" />
</dataarea>
</part>
</software>
<software name="bauernhf" supported="no">
<description>Mein erster Bauernhof (Ger)</description>
<year>200?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099064(GE)" />
<part name="cart" interface="vsmileb_cart">
<feature name="pcb" value="707154" />
<feature name="pcb_model" value="707154-3" />
<feature name="u4" value="U4" /> <!-- ROM -->
<dataarea name="rom" size="8388608">
<rom name="27-08788-000.u4" size="8388608" crc="581e16f9" sha1="330b309644db9f017d275b9df0ffe7530ed5bcef" offset="0" />
</dataarea>
</part>
</software>
<software name="poohhawa" supported="no">
<description>Pooh's Hundred Acre Wood Adventure (USA)</description>
<year>2007</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099020(US)" />
<part name="cart" interface="vsmileb_cart">
<dataarea name="rom" size="8388608">
<rom name="099020.bin" size="8388608" crc="a3ac4cd4" sha1="3562c632e0a1e70cb9e382ebb823449757afed67" offset="0" />
</dataarea>
</part>
</software>
<software name="poohhawag" cloneof="poohhawa" supported="no">
<description>Puuhs Hundert-Morgen-Wald (Ger)</description>
<year>2006?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099024(GE)" />
<part name="cart" interface="vsmileb_cart">
<feature name="pcb" value="707155" />
<feature name="pcb_model" value="707155-2" />
</part>
</software>
<software name="poohhawasw" cloneof="poohhawa" supported="no">
<description>Nalle Puhs Äventyr i Sjumilaskogen (Swe)</description>
<year>2007?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099034(SE)" />
<part name="cart" interface="vsmileb_cart">
<feature name="pcb" value="707154" />
<feature name="pcb_model" value="707154-4" />
<feature name="u4" value="U4" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="99034.u4" size="8388608" crc="5dbe1c20" sha1="51f56cedbe99fc7438429a4c02c08f65d2313790" offset="0" />
</dataarea>
</part>
</software>
<software name="lupptack" cloneof="mktierf" supported="no">
<description>Lär och upptäck (Swe)</description>
<year>200?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-099014(SE)" />
<part name="cart" interface="vsmileb_cart">
<feature name="pcb" value="707155" />
<feature name="pcb_model" value="707155-2" />
</part>
</software>
</softwarelist>

331
hash/vsmilem_cart.xml Normal file
View File

@ -0,0 +1,331 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
NOTE: This list is here only to document available dumps and it's not used (yet) by MESS!
-->
<!--
V.Smile Motion: 80-08**** (Smartridges are orange)
V.Smile Smartbook Software: 80-089*** (Smartridges are red)
V.Smile: 80-09**** (Smartridges are purple, some are gray because of plastic defects)
V.Smile Baby 80-099*** (Smartridges are yellow, incompatible with TV based V.Smile consoles)
Language:
********0 = US (White labels on back)
********1 = Italy Apparently distributed by company 'Giochi Preziosi'
********2 = Netherlands (Red or White labels on back)
********3 = UK (Red labels on back)
********4 = Germany (Blue labels on back)
********5 = France (Yellow labels on back, also for NTSC French-Canadian)
********6 = Portugal Apparently distributed by company 'Concentra' (White labels on back)
********7 = Spain (Green labels on back)
*******13 = Denmark Distributed by the company 'Top Toy A/S'
*******14 = Sweden Distributed by the company 'Top Toy A/S'
*******15 = Norway
*******?? = Finland
+========+===================+============================================================================+
| | 80-084000(US) | Action Mania |
| | (IT) | ????? |
| | 80-084002(NL) | Sports Games |
| | 80-084003(UK) | Action Mania |
| | 80-084004(GE) | Sportskanone |
| | 80-084005(FR) | Sporti Folies |
| | 80-084006(PT) | Action Mania (84016 on cart) |
| | 80-084007(SP) | Action Mania |
+========+===================+============================================================================+
| | 80-084020(US) | Dora the Explorer: Dora's Fix It Adventure |
| | 80-084021(US) | Dora the Explorer: Dora's Fix It Adventure (pocket version) |
| | 80-084022(NL) | Dora: Dora's Reparatie Avontuur |
| | 80-084023(UK) | Dora the Explorer: Dora's Fix It Adventure |
| XX | 80-084024(GE) | Dora: Doras Reparatur-Abenteuer |
| | 80-084025(FR) | Dora L'Exploratrice : Les Adventures De Dora Apprentie Mecano |
| | 80-084026(PT) | Dora : em busca das pecas perdidas |
| | 80-084027(SP) | Dora : La Aventura arregla-todo de Dora |
+========+===================+============================================================================+
| | 80-084040(US) | Scooby-Doo! - Funland Frenzy |
| | 80-084043(UK) | Scooby-Doo! - Funland Frenzy |
| | 80-084044(GE) | Scooby-Doo! - Im Lernpark |
| | 80-084045(FR) | Scooby-Doo - Panique A Funland |
| | 80-084047(SP) | Scooby-Doo - Misterio en el Parque |
+========+===================+============================================================================+
| | 80-084060(US) | Thomas and Friends - Engines Working Together |
| | 80-084063(UK) | Thomas and Friends - Engines Working Together |
| | 80-084064(GE) | Thomas - Freunde halten zusammen |
+========+===================+============================================================================+
| | 80-084080(US) | Wall-E |
| | 80-084083(UK) | Wall-E |
| | 80-084084(GE) | Wall-E |
| | 80-084085(FR) | Wall-E |
| | 80-084087(SP) | Wall-E |
+========+===================+============================================================================+
| | 80-084100(US) | Wonder Pets - Save the Animals! |
| | 80-084103(UK) | Wonder Pets - Save the Animals! |
+========+===================+============================================================================+
| | 80-084120(US) | Kung Fu Panda - Path of the Panda |
| | 80-084123(UK) | Kung Fu Panda - Path of the Panda |
| XX | 80-084124(GE) | Kung Fu Panda - Der Weg des Panda |
| | 80-084125(FR) | Kung Fu Panda - La mission de Po |
+========+===================+============================================================================+
| | 80-084140(US) | Spider-Man & Friends - Secret Missions (AKA Professor V's Secret Missions with diff label)
| | 80-084143(UK) | Spider-Man & Friends - Secret Missions |
| | 80-084144(GE) | Spider-Man & Freunde - Geheime Missionen |
| | 80-084145(FR) | Spider-Man and ses amis - Missions Secretes |
| | 80-084147(SP) | Spider-Man y Amigos: Misiones Secretas (no # on label) |
+========+===================+============================================================================+
| | 80-084160(US) | Disney's Little Einsteins: The Glass Slipper Ball |
| | 80-084163(UK) | Disney's Little Einsteins: The Glass Slipper Ball |
| XX | 80-084164(GE) | Disney's Kleine Einsteins: Der Glaspantoffel-Ball |
| | 80-084167(SP) | Little Einsteins de Disney: El baile del zapatito de cristal |
+========+===================+============================================================================+
| | 80-084180(US) | Mickey Mouse Clubhouse |
| | 80-084182(NL) | Mickey Mouse Clubhouse |
| | 80-084183(UK) | Mickey Mouse Clubhouse |
| | 80-084184(GE) | Micky Maus Wunderhaus |
| | 80-084185(FR) | La Maison de Mickey |
| | 80-084186(PT) | A Casa do Mickey Mouse (84196 on cart) |
| | 80-084187(SP) | La Casa de Mickey Mouse |
+========+===================+============================================================================+
| | 80-084200(US) | Nascar Academy - Race Car Superstar |
+========+===================+============================================================================+
| | 80-084220(US) | Snow Park Challenge |
| | 80-084222(NL) | Wintersport Games |
| | 80-084223(UK) | Snow Park Challenge |
| | 80-084224(GE) | Wintersport |
| | 80-084225(FR) | ?????? picture too fuzzy for positve confirm |
+========+===================+============================================================================+
| | 80-084240(US) | Ni Hao Kai Lan |
| | 80-084245(FR) | Ni Hao Kai Lan |
+========+===================+============================================================================+
| | 80-084260(US) | My Pet Puppy (unreleased in USA?? UK version plays AOK on NTSC console) |
| | 80-084262(NL) | Mijn Puppy! |
| | 80-084263(UK) | My Pet Puppy |
| | 80-084264(GE) | Mein erster Hund |
| | 80-084265(FR) | Mon Youtou Tout Fou! |
| | 80-084267(SP) | Dakota y su Mascota |
+========+===================+============================================================================+
| | 80-084280(US) | Wild Waves |
| | 80-084282(NL) | Water-sport Games |
| | 80-084283(UJ) | Wild Waves |
| | 80-084284(GE) | Dolphis Wasser-abenteuer |
| | 80-084285(FR) | Martin le Dauphin |
+========+===================+============================================================================+
| | 80-084300(US) | Soccer Challenge |
| | 80-084303(UK) | Football Challenge |
| | 80-084304(GE) | Fussball Meisterschaft |
| | 80-084305(FR) | Football Challenge |
| | 80-084306(PT) | Football Challenge (cart#??) |
| | 80-084307(SP) | Campeonato de Futbol |
+========+===================+============================================================================+
| | 80-084320(US) | Disney Fairies: TinkerBell |
| | 80-084321(US) | Disney Fairies: TinkerBell (pocket version) |
| | 80-084322(NL) | TinkerBell |
| | 80-084323(UK) | TinkerBell |
| XX | 80-084324(GE) | TinkerBell |
| | 80-084325(FR) | La fee Clochette |
| | 80-084326(PT) | Sininho (84336 on cart) |
| | 80-084327(SP) | Campanilla |
+========+===================+============================================================================+
| | 80-084340(US) | Up! |
| | 80-084342(NL) | Up! |
| | 80-084344(GE) | Oben |
| | 80-084345(FR) | La-Haut |
| | 80-084347(SP) | Up! |
| | 80-084347-022(SP) | Up! (-022 is odd for SP) |
+========+===================+============================================================================+
| | 80-084360(US) | Handy Manny |
| | 80-084362(NL) | Handy Manny |
| | 80-084363(UK) | Handy Manny |
| | 80-084364(GE) | Meister Manny's Werkzeugkiste |
| | 80-084365(FR) | Manny Et Ses Outils |
| | 80-084366(PT) | Manny Maozinhas (84376 on cart) |
| | 80-084367(SP) | Manny Manitas |
+========+===================+============================================================================+
| | 80-084380(US) | Winnie the Pooh - The Honey Hunt |
| | (IT) | Winnie the Pooh - e la caccia al miele ??? |
| | 80-084383(UK) | Winnie the Pooh - The Honey Hunt |
| XX | 80-084384(GE) | Winnie Puuh - Die Honigjagd |
| | 80-084385(FR) | Winnie Rourson - La Chasse au miel de Winnie |
| | 80-084386(PT) | Winnie - Em Busca do Mel (84396 on cart) |
| | 80-084387(SP) | Winnie the Pooh - En busca de la miel |
+========+===================+============================================================================+
| | 80-084400(US) | Cars: Rev It Up in Radiator Springs |
| | 80-084402(NL) | Cars: Spektakel in Radiator Springs |
| | 80-084403(UK) | Cars: Rev it up in Radiator Springs |
| | 80-084404(GE) | Cars: Vollgas in Radiator Springs |
| | 80-084405(FR) | Cars: Quatre Roues |
| | 80-084406(PT) | Cars: Aventura Em Radiator Springs (84416 on cart) |
| | 80-084407(SP) | Cars: Acelera el Motor en Radiador Springs |
+========+===================+============================================================================+
| | 80-084420(US) | Toy Story 3 |
| | 80-084421(US) | Toy Story 3 (pocket version) |
| | (IT) | Toy Story 3 (EAN 8033836704196) GP470419? |
| | 80-084422(NL) | Toy Story 3 |
| | 80-084423(UK) | Toy Story 3 |
| | 80-084424(GE) | Toy Story 3 |
| | 80-084425(FR) | Toy Story 3 |
| | 80-084427(SP) | Toy Story 3 |
+========+===================+============================================================================+
| | 80-084440(US) | Monsters vs. Aliens |
| | 80-084442(NL) | Monsters vs. Aliens |
| | 80-084443(UK) | Monsters vs. Aliens |
| | 80-084444(GE) | Monsters vs. Aliens |
| | 80-084445(FR) | Monsters vs. Aliens |
| | 80-084447(SP) | Monstruos contra Alienigenas |
+========+===================+============================================================================+
| | 80-084460(US) | Noddy - Detective for a Day (unreleased in USA??) see 80-092540 |
| | 80-084463(UK) | Noddy - Detective for a Day |
| | 80-084465(FR) | Oui-Oui - Detective d'un jour |
| | 80-084467(SP) | Noddy - Detective por un Dia |
+========+===================+============================================================================+
| | 80-084480(US) | The Princess and the Frog (motion version) |
| | 80-084481(US) | The Princess and the Frog (pocket version) |
| | 80-084482(NL) | Prinses en de Kikker (label in english) |
| | 80-084483(UK) | The Princess and the Frog |
| | 80-084484(GE) | Kuess den Frosch |
| | 80-084485(FR) | La Princesse Et La Grenouille |
| | 80-084487(SP) | Tiana y el sapo - El gran Sueno de Tiana |
+========+===================+============================================================================+
| | 80-084500(US) | Shrek Forever After |
| | 80-084502(NL) | Sjrek voor eeuwig en altijd |
| | 80-084503(UK) | Shrek Forever After |
| | 80-084504(GE) | Fuer immer Shrek |
| | 80-084505(FR) | Shrek 4 - Il Etait une Fin |
| | 80-084507(SP) | Shrek Felices para siempre |
+========+===================+============================================================================+
| | 80-084520(US) | <Unknown> |
+========+===================+============================================================================+
| | 80-084540(US) | Super Why to the Rescue! The Beach Day Mystery |
| | 80-084541(US) | Super Why to the Rescue! The Beach Day Mystery (pocket version) |
+========+===================+============================================================================+
| | 80-084560(US) | <Unknown> |
+========+===================+============================================================================+
| | 80-084580(US) | Cars 2 (motion version) |
| | 80-084581(US) | Cars 2 (pocket version) |
| | 80-084583(UK) | Cars 2 |
| | 80-084584(GE) | Cars 2 |
| | 80-084585(FR) | Cars 2 |
| | 80-084587(SP) | Cars 2 |
+========+===================+============================================================================+
| | 80-084600(US) | <Unknown> (Should be Orange colored Cinderella - Cinderella's Magic Wishes)|
| | 80-084603(UK) | Cinderella - Cinderella's Magic Wishes |
| XX | 80-084604(GE) | Cinderella - Lernen im Maerchenland |
| | 80-084605(FR) | Cendrillon - ????? |
+========+===================+============================================================================+
| | 80-084620(US) | <Unknown> (Should be Orange colored Finding Nemo) |
| | 80-084624(GE) | Findet Nemo - Nemos Unterwasserabenteuer |
| | 80-084625(FR) | Le Monde de Nemo - Nemo a la decourverte de l'ocean |
| | 80-084627(SP) | Buscando a Nemo - Los Descubrimientos de Nemo |
+========+===================+============================================================================+
| | 80-084640(US) | <Unknown> (Should be Orange colored Spongebob) |
| | 80-084644(GE) | Spongebob Schwammkopf - Der Tag des Schwamms |
| | 80-084647(SP) | Bob Epsonja - Un dia en la vida de una esponja |
+========+===================+============================================================================+
V.Smile Smartbooks
Smartbooks currently have no dumps available, hence they are temporarily listed here.
+========+===================+============================================================================+
| | 80-089000(US) | Spider-Man &amp; Friends Where is Hulk? |
+========+===================+============================================================================+
| | 80-089020(US) | Toy Story 2 |
+========+===================+============================================================================+
| | 80-089040(US) | Dora the Explorer - Dora's Got a Puppy |
| | 80-089045(FR) | Dora's ?????? |
+========+===================+============================================================================+
| | 80-089060(US) | Scooby-Doo! - A Night of Fright is no Delight |
+========+===================+============================================================================+
-->
<softwarelist name="vsmilem_cart" description="VTech V.Smile Motion cartridges">
<software name="cinderla" supported="no">
<description>Disney Princess Cinderella - Lernen im Märchenland (Ger)</description>
<year>2010?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084604(GE)" />
<part name="cart" interface="vsmilem_cart">
<feature name="pcb" value="708201" />
<feature name="pcb_model" value="708201-7" />
<feature name="u1" value="" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="C84604.u1" size="8388608" crc="0229cf3a" sha1="9c08e6370ecf08992924f067b64dd1950e3a2c6c" offset="0" />
</dataarea>
</part>
</software>
<software name="kfpanda" supported="no">
<description>DreamWorks Kung Fu Panda - Der Weg des Panda (Ger)</description>
<year>2008?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084124(GE)" />
<part name="cart" interface="vsmilem_cart">
<feature name="pcb" value="708201" />
<feature name="pcb_model" value="708201-4" />
<feature name="u1" value="" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="84124 OK.u1" size="8388608" crc="16493095" sha1="07c75e46c294901ee9309d98c925a39dc1b5e384" offset="0" />
</dataarea>
</part>
</software>
<software name="dora" supported="no">
<description>Nick Dora - Doras Reparatur-Abenteuer (Ger)</description>
<year>2009?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084024(GE)" />
<part name="cart" interface="vsmilem_cart">
<feature name="pcb" value="708201" />
<feature name="pcb_model" value="708201-4" />
<feature name="u1" value="" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="84024 OK.u1" size="8388608" crc="6769cb8b" sha1="615177d959983cdb67acdb8f3be063b3d09cb5db" offset="0" />
</dataarea>
</part>
</software>
<software name="kleinstn" supported="no">
<description>Kleine Einsteins (Ger)</description>
<year>200?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084164(GE)" />
<part name="cart" interface="vsmilem_cart">
<dataarea name="rom" size="8388608">
<rom name="80-084164.bin" size="8388608" crc="b0ec807e" sha1="e947c84efd3f061cbf10f73e412d4cfdd474bade" offset="0" />
</dataarea>
</part>
</software>
<software name="tinker" supported="no">
<description>TinkerBell (Ger)</description>
<year>2009?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084324(GE)" />
<part name="cart" interface="vsmilem_cart">
<feature name="pcb" value="708201" />
<feature name="pcb_model" value="708201-7" />
<feature name="u1" value="" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="C84324.u1" size="8388608" crc="9e207566" sha1="bb3e180a2c69306b56f08909a05dc83309be0f09" offset="0" />
</dataarea>
</part>
</software>
<software name="pooh" supported="no">
<description>Winnie Puuh - Die Honigjagd (Ger)</description>
<year>2009?</year>
<publisher>VTech</publisher>
<info name="serial" value="80-084384(GE)" />
<part name="cart" interface="vsmilem_cart">
<feature name="pcb" value="708201" />
<feature name="pcb_model" value="708201-4" />
<feature name="u1" value="" /> <!-- EPOXY BLOB ROM -->
<dataarea name="rom" size="8388608">
<rom name="84384.u1" size="8388608" crc="60649955" sha1="2eda79cbf138e25ffb33281987cc885ec98e9b04" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -1037,7 +1037,7 @@ void phi_device::update_fsm(void)
m_int_write_func(m_int_line); m_int_write_func(m_int_line);
} }
// TODO: update DMARQ (void)m_dmarq_line; // TODO: update DMARQ
m_no_recursion = false; m_no_recursion = false;
} }

View File

@ -130,6 +130,8 @@ public:
void tc_w(bool val) override; void tc_w(bool val) override;
void ready_w(bool val); void ready_w(bool val);
DECLARE_WRITE_LINE_MEMBER(tc_line_w) { tc_w(state == ASSERT_LINE); }
void set_rate(int rate); // rate in bps, to be used when the fdc is externally frequency-controlled void set_rate(int rate); // rate in bps, to be used when the fdc is externally frequency-controlled
void set_mode(int mode); void set_mode(int mode);

View File

@ -36,14 +36,19 @@ public:
}; };
argo_state(const machine_config &mconfig, device_type type, const char *tag) argo_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, "maincpu"), , m_maincpu(*this, "maincpu")
m_p_videoram(*this, "p_videoram"){ } , m_p_videoram(*this, "videoram")
{ }
required_device<cpu_device> m_maincpu;
DECLARE_WRITE8_MEMBER(argo_videoram_w); DECLARE_WRITE8_MEMBER(argo_videoram_w);
DECLARE_READ8_MEMBER(argo_io_r); DECLARE_READ8_MEMBER(argo_io_r);
DECLARE_WRITE8_MEMBER(argo_io_w); DECLARE_WRITE8_MEMBER(argo_io_w);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(argo);
private:
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_videoram; required_shared_ptr<uint8_t> m_p_videoram;
const uint8_t *m_p_chargen; const uint8_t *m_p_chargen;
uint8_t m_framecnt; uint8_t m_framecnt;
@ -53,8 +58,6 @@ public:
uint8_t m_scroll_ctrl; uint8_t m_scroll_ctrl;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(argo);
protected: protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;

View File

@ -50,29 +50,42 @@
#include "coreutil.h" #include "coreutil.h"
// Board Ctrl Reg Offsets // Board Ctrl Reg Offsets
#define CTRL_POWER0 0 #define CTRL_PLD_REV 0
#define CTRL_POWER1 1 #define CTRL_RESET 1
#define CTRL_IRQ1_EN 2 #define CTRL_VSYNC_CLEAR 2
#define CTRL_IRQ2_EN 3 #define CTRL_IRQ_MAP1 3
#define CTRL_IRQ3_EN 4 #define CTRL_IRQ_MAP2 4
#define CTRL_IRQ4_EN 5 #define CTRL_IRQ_MAP3 5
#define CTRL_GLOBAL_EN 6 // Empty?? 6
#define CTRL_CAUSE 7 #define CTRL_IRQ_EN 7
#define CTRL_STATUS 8 #define CTRL_CAUSE 8
#define CTRL_SIZE 9 #define CTRL_STATUS 9
#define CTRL_SIZE 10
// These need more verification // Reset bits
#define RESET_IOASIC 0x01
#define RESET_ROMBUS 0x02
#define RESET_ZEUS 0x04
#define RESET_ROMBUS_IN 0x08
#define RESET_IDE 0x10
#define RESET_DUART 0x20
// IRQ Bits
#define IOASIC_IRQ_SHIFT 0 #define IOASIC_IRQ_SHIFT 0
#define GALILEO_IRQ_SHIFT 1 #define ROMBUS_IRQ_SHIFT 1
#define ZEUS_IRQ_SHIFT 2 #define ZEUS0_IRQ_SHIFT 2
#define PARALLEL_IRQ_SHIFT 3 #define ZEUS1_IRQ_SHIFT 3
#define UART1_SHIFT 4 #define ZEUS2_IRQ_SHIFT 4
#define UART2_SHIFT 5 #define WDOG_IRQ_SHIFT 5
#define A2D_IRQ_SHIFT 6
#define VBLANK_IRQ_SHIFT 7 #define VBLANK_IRQ_SHIFT 7
// Not sure how duart interrupts are mapped
#define UART1_IRQ_SHIFT ZEUS2_IRQ_SHIFT
#define UART2_IRQ_SHIFT ZEUS2_IRQ_SHIFT
/* static interrupts */ /* static interrupts */
#define GALILEO_IRQ_NUM MIPS3_IRQ0 #define GALILEO_IRQ_NUM MIPS3_IRQ0
#define VBLANK_IRQ_NUM MIPS3_IRQ3
#define IDE_IRQ_NUM MIPS3_IRQ4 #define IDE_IRQ_NUM MIPS3_IRQ4
#define DEBUG_CONSOLE (0) #define DEBUG_CONSOLE (0)
@ -127,10 +140,8 @@ public:
DECLARE_WRITE32_MEMBER(asic_fifo_w); DECLARE_WRITE32_MEMBER(asic_fifo_w);
DECLARE_WRITE32_MEMBER(dcs3_fifo_full_w); DECLARE_WRITE32_MEMBER(dcs3_fifo_full_w);
READ32_MEMBER (green_r); READ8_MEMBER (exprom_r);
WRITE32_MEMBER(green_w); WRITE8_MEMBER(exprom_w);
READ8_MEMBER (blue_r);
WRITE8_MEMBER(blue_w);
WRITE32_MEMBER(user_io_output); WRITE32_MEMBER(user_io_output);
READ32_MEMBER(user_io_input); READ32_MEMBER(user_io_input);
@ -151,37 +162,28 @@ public:
DECLARE_WRITE_LINE_MEMBER(uart2_irq_callback); DECLARE_WRITE_LINE_MEMBER(uart2_irq_callback);
DECLARE_CUSTOM_INPUT_MEMBER(port_mod_r); DECLARE_CUSTOM_INPUT_MEMBER(port_mod_r);
DECLARE_READ32_MEMBER(port_ctrl_r); DECLARE_READ16_MEMBER(port_ctrl_r);
DECLARE_WRITE32_MEMBER(port_ctrl_w); DECLARE_WRITE16_MEMBER(port_ctrl_w);
uint32_t m_port_ctrl_reg[0x8]; uint16_t m_port_data;
uint16_t m_a2d_data;
DECLARE_READ16_MEMBER(a2d_ctrl_r);
DECLARE_WRITE16_MEMBER(a2d_ctrl_w);
DECLARE_READ16_MEMBER(a2d_data_r);
DECLARE_WRITE16_MEMBER(a2d_data_w);
}; };
READ32_MEMBER(atlantis_state::green_r) READ8_MEMBER (atlantis_state::exprom_r)
{ {
// If not 0x80 cpu writes to 00e80000 = 0 logerror("%06X: exprom_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0);
if ((offset | 0x20000) != m_last_offset)
logerror("%06X: green_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0x80);
m_last_offset = offset | 0x20000;
return 0x80;
}
WRITE32_MEMBER(atlantis_state::green_w)
{
logerror("%06X: green_w %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, data);
m_last_offset = offset | 0x20000;
}
READ8_MEMBER (atlantis_state::blue_r)
{
//uint8_t data = m_red_data[offset];
logerror("%06X: blue_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0);
//return data; //return data;
return 0; return 0;
} }
WRITE8_MEMBER(atlantis_state::blue_w) WRITE8_MEMBER(atlantis_state::exprom_w)
{ {
logerror("%06X: blue_w %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, data); logerror("%06X: exprom_w %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, data);
} }
READ32_MEMBER(atlantis_state::board_ctrl_r) READ32_MEMBER(atlantis_state::board_ctrl_r)
@ -189,9 +191,10 @@ READ32_MEMBER(atlantis_state::board_ctrl_r)
uint32_t newOffset = offset >> 17; uint32_t newOffset = offset >> 17;
uint32_t data = board_ctrl[newOffset]; uint32_t data = board_ctrl[newOffset];
switch (newOffset) { switch (newOffset) {
case CTRL_PLD_REV:
// ???
data = 0x1;
case CTRL_STATUS: case CTRL_STATUS:
if (1 && m_screen->vblank())
data |= 1 << VBLANK_IRQ_SHIFT;
if (m_last_offset != (newOffset | 0x40000)) if (m_last_offset != (newOffset | 0x40000))
if (LOG_IRQ) if (LOG_IRQ)
logerror("%s:board_ctrl_r read from CTRL_STATUS offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); logerror("%s:board_ctrl_r read from CTRL_STATUS offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset);
@ -211,12 +214,12 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
uint32_t changeData = board_ctrl[newOffset] ^ data; uint32_t changeData = board_ctrl[newOffset] ^ data;
COMBINE_DATA(&board_ctrl[newOffset]); COMBINE_DATA(&board_ctrl[newOffset]);
switch (newOffset) { switch (newOffset) {
case CTRL_POWER0: case CTRL_RESET:
// 0x1 IOASIC Reset // 0x1 IOASIC Reset
// 0x4 Zeus2 Reset // 0x4 Zeus2 Reset
// 0x10 IDE Reset // 0x10 IDE Reset
if (changeData & 0x1) { if (changeData & RESET_IOASIC) {
if ((data & 0x0001) == 0) { if ((data & RESET_IOASIC) == 0) {
m_ioasic->ioasic_reset(); m_ioasic->ioasic_reset();
m_dcs->reset_w(ASSERT_LINE); m_dcs->reset_w(ASSERT_LINE);
} }
@ -225,14 +228,15 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
} }
} }
if (LOG_IRQ) if (LOG_IRQ)
logerror("%s:board_ctrl_w write to CTRL_POWER0 offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); logerror("%s:board_ctrl_w write to CTRL_RESET offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset);
break; break;
case CTRL_POWER1: case CTRL_VSYNC_CLEAR:
//VSYNC_IE (0x1)
//VSYNC_POL (0x2) off=negative true, on=positive true
// 0x1 VBlank clear? // 0x1 VBlank clear?
if (changeData & 0x1) { if (changeData & 0x1) {
if ((data & 0x0001) == 0) { if ((data & 0x0001) == 0) {
//uint32_t status_bit = (1 << VBLANK_IRQ_SHIFT); uint32_t status_bit = (1 << VBLANK_IRQ_SHIFT);
uint32_t status_bit = (1 << 7);
board_ctrl[CTRL_CAUSE] &= ~status_bit; board_ctrl[CTRL_CAUSE] &= ~status_bit;
board_ctrl[CTRL_STATUS] &= ~status_bit; board_ctrl[CTRL_STATUS] &= ~status_bit;
update_asic_irq(); update_asic_irq();
@ -240,15 +244,15 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
else { else {
} }
} }
if (LOG_IRQ) if (0 && LOG_IRQ)
logerror("%s:board_ctrl_w write to CTRL_POWER1 offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); logerror("%s:board_ctrl_w write to CTRL_VSYNC_CLEAR offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset);
break; break;
case CTRL_GLOBAL_EN: case CTRL_IRQ_EN:
// Zero bit will clear cause // Zero bit will clear cause
board_ctrl[CTRL_CAUSE] &= data; board_ctrl[CTRL_CAUSE] &= data;
update_asic_irq(); update_asic_irq();
if (LOG_IRQ) if (LOG_IRQ)
logerror("%s:board_ctrl_w write to CTRL_GLOBAL_EN offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); logerror("%s:board_ctrl_w write to CTRL_IRQ_EN offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset);
break; break;
default: default:
if (LOG_IRQ) if (LOG_IRQ)
@ -423,7 +427,7 @@ READ32_MEMBER(atlantis_state::user_io_input)
*************************************/ *************************************/
WRITE_LINE_MEMBER(atlantis_state::uart1_irq_callback) WRITE_LINE_MEMBER(atlantis_state::uart1_irq_callback)
{ {
uint32_t status_bit = (1 << UART1_SHIFT); uint32_t status_bit = UART1_IRQ_SHIFT;
if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) { if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) {
board_ctrl[CTRL_STATUS] |= status_bit; board_ctrl[CTRL_STATUS] |= status_bit;
update_asic_irq(); update_asic_irq();
@ -441,7 +445,7 @@ WRITE_LINE_MEMBER(atlantis_state::uart1_irq_callback)
*************************************/ *************************************/
WRITE_LINE_MEMBER(atlantis_state::uart2_irq_callback) WRITE_LINE_MEMBER(atlantis_state::uart2_irq_callback)
{ {
uint32_t status_bit = (1 << UART2_SHIFT); uint32_t status_bit = UART2_IRQ_SHIFT;
if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) { if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) {
board_ctrl[CTRL_STATUS] |= status_bit; board_ctrl[CTRL_STATUS] |= status_bit;
update_asic_irq(); update_asic_irq();
@ -460,18 +464,14 @@ WRITE_LINE_MEMBER(atlantis_state::uart2_irq_callback)
WRITE_LINE_MEMBER(atlantis_state::vblank_irq) WRITE_LINE_MEMBER(atlantis_state::vblank_irq)
{ {
//logerror("%s: atlantis_state::vblank state = %i\n", machine().describe_context(), state); //logerror("%s: atlantis_state::vblank state = %i\n", machine().describe_context(), state);
if (1) { if (state) {
if (state) { board_ctrl[CTRL_STATUS] |= (1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_STATUS] |= (1 << VBLANK_IRQ_SHIFT); update_asic_irq();
update_asic_irq(); }
} else {
else { board_ctrl[CTRL_STATUS] &= ~(1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_STATUS] &= ~(1 << VBLANK_IRQ_SHIFT); board_ctrl[CTRL_CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT); update_asic_irq();
update_asic_irq();
}
} else {
m_maincpu->set_input_line(VBLANK_IRQ_NUM, state);
} }
} }
@ -479,12 +479,12 @@ WRITE_LINE_MEMBER(atlantis_state::zeus_irq)
{ {
//logerror("%s: atlantis_state::zeus_irq state = %i\n", machine().describe_context(), state); //logerror("%s: atlantis_state::zeus_irq state = %i\n", machine().describe_context(), state);
if (state) { if (state) {
board_ctrl[CTRL_STATUS] |= (1 << ZEUS_IRQ_SHIFT); board_ctrl[CTRL_STATUS] |= (1 << ZEUS0_IRQ_SHIFT);
update_asic_irq(); update_asic_irq();
} }
else { else {
board_ctrl[CTRL_STATUS] &= ~(1 << ZEUS_IRQ_SHIFT); board_ctrl[CTRL_STATUS] &= ~(1 << ZEUS0_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << ZEUS_IRQ_SHIFT); board_ctrl[CTRL_CAUSE] &= ~(1 << ZEUS0_IRQ_SHIFT);
update_asic_irq(); update_asic_irq();
} }
} }
@ -522,21 +522,20 @@ WRITE_LINE_MEMBER(atlantis_state::ioasic_irq)
*************************************/ *************************************/
void atlantis_state::update_asic_irq() void atlantis_state::update_asic_irq()
{ {
// Uknown if CTRL_POWER1 is actually a separate power register. Skip it for now. for (int irqIndex = 0; irqIndex < 3; irqIndex++) {
for (int irqIndex = 1; irqIndex <= 4; irqIndex++) { uint32_t irqBits = (board_ctrl[CTRL_IRQ_EN] & board_ctrl[CTRL_IRQ_MAP1 + irqIndex] & board_ctrl[CTRL_STATUS]);
uint32_t irqBits = (board_ctrl[CTRL_GLOBAL_EN] & board_ctrl[CTRL_POWER1 + irqIndex] & board_ctrl[CTRL_STATUS]); uint32_t causeBits = (board_ctrl[CTRL_IRQ_EN] & board_ctrl[CTRL_IRQ_MAP1 + irqIndex] & board_ctrl[CTRL_CAUSE]);
uint32_t causeBits = (board_ctrl[CTRL_GLOBAL_EN] & board_ctrl[CTRL_POWER1 + irqIndex] & board_ctrl[CTRL_CAUSE]); uint32_t currState = m_irq_state & (2 << irqIndex);
uint32_t currState = m_irq_state & (1 << irqIndex);
board_ctrl[CTRL_CAUSE] |= irqBits; board_ctrl[CTRL_CAUSE] |= irqBits;
if (irqBits && !currState) { if (irqBits && !currState) {
m_maincpu->set_input_line(MIPS3_IRQ0 + irqIndex, ASSERT_LINE); m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, ASSERT_LINE);
m_irq_state |= (1 << irqIndex); m_irq_state |= (2 << irqIndex);
if (LOG_IRQ) if (LOG_IRQ)
logerror("atlantis_state::update_asic_irq Asserting IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]); logerror("atlantis_state::update_asic_irq Asserting IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]);
} }
else if (!(causeBits) && currState) { else if (!(causeBits) && currState) {
m_maincpu->set_input_line(MIPS3_IRQ0 + irqIndex, CLEAR_LINE); m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, CLEAR_LINE);
m_irq_state &= ~(1 << irqIndex); m_irq_state &= ~(2 << irqIndex);
if (LOG_IRQ) if (LOG_IRQ)
logerror("atlantis_state::update_asic_irq Clearing IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]); logerror("atlantis_state::update_asic_irq Clearing IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]);
} }
@ -545,43 +544,36 @@ void atlantis_state::update_asic_irq()
/************************************* /*************************************
* I/O Port control * I/O Port control
*************************************/ *************************************/
READ32_MEMBER(atlantis_state::port_ctrl_r) READ16_MEMBER(atlantis_state::port_ctrl_r)
{ {
uint32_t newOffset = offset >> 17; uint32_t newOffset = offset >> 17;
uint32_t result = m_port_ctrl_reg[newOffset]; uint32_t result = m_port_data;
if (LOG_PORT) if (LOG_PORT)
logerror("%s: port_ctrl_r newOffset = %02X data = %08X\n", machine().describe_context(), newOffset, result); logerror("%s: port_ctrl_r newOffset = %02X data = %08X\n", machine().describe_context(), newOffset, result);
return result; return result;
} }
WRITE32_MEMBER(atlantis_state::port_ctrl_w) WRITE16_MEMBER(atlantis_state::port_ctrl_w)
{ {
uint32_t newOffset = offset >> 17; uint32_t newOffset = offset >> 17;
COMBINE_DATA(&m_port_ctrl_reg[newOffset]);
switch (newOffset) { switch (newOffset) {
case 1: case 1:
{ {
uint32_t bits = ioport("KEYPAD")->read(); uint32_t bits = ioport("KEYPAD")->read();
m_port_ctrl_reg[2] = 0; m_port_data = 0;
if (!(data & 0x8)) if (!(data & 0x8))
m_port_ctrl_reg[2] = bits & 7; // Row 0 m_port_data = bits & 7; // Row 0
else if (!(data & 0x10)) else if (!(data & 0x10))
m_port_ctrl_reg[2] = (bits >> 4) & 7; // Row 1 m_port_data = (bits >> 4) & 7; // Row 1
else if (!(data & 0x20)) else if (!(data & 0x20))
m_port_ctrl_reg[2] = (bits >> 8) & 7; // Row 2 m_port_data = (bits >> 8) & 7; // Row 2
else if (!(data & 0x40)) else if (!(data & 0x40))
m_port_ctrl_reg[2] = (bits >> 12) & 7; // Row 3 m_port_data = (bits >> 12) & 7; // Row 3
if (LOG_PORT) if (LOG_PORT)
logerror("%s: port_ctrl_w Keypad Row Sel = %04X bits = %08X\n", machine().describe_context(), data, bits); logerror("%s: port_ctrl_w Keypad Row Sel = %04X bits = %08X\n", machine().describe_context(), data, bits);
break; break;
} }
case 3:
if (data==0x8f)
m_port_ctrl_reg[4] = ioport("AN.1")->read();
else
m_port_ctrl_reg[4] = ioport("AN.0")->read();
break;
default: default:
if (LOG_PORT) if (LOG_PORT)
logerror("%s: port_ctrl_w write to offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); logerror("%s: port_ctrl_w write to offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset);
@ -589,13 +581,38 @@ WRITE32_MEMBER(atlantis_state::port_ctrl_w)
} }
} }
CUSTOM_INPUT_MEMBER(atlantis_state::port_mod_r) /*************************************
* A2D
*************************************/
#define A2D_CTRL_COMPLETE 0x1
#define A2D_CTRL_ENABLE 0x2
#define A2D_CTRL_SINGLEND 0x4
#define A2D_CTRL_UNIPOLAR 0x8
#define A2D_CTRL_CHAN_SHIFT 4
#define A2D_CTRL_CHAN_MASK 0x70
#define A2D_CTRL_START 0x80
READ16_MEMBER(atlantis_state::a2d_ctrl_r)
{ {
uint32_t bits = ioport((const char *)param)->read(); return A2D_CTRL_COMPLETE;
//bits &= m_port_ctrl_reg[1]; }
//bits >>= m_port_ctrl_reg[1];
logerror("%s: port_mod_r read data %s = %08X m_port_ctrl_reg[1] = %08X\n", machine().describe_context(), (const char *)param, bits, m_port_ctrl_reg[1]); WRITE16_MEMBER(atlantis_state::a2d_ctrl_w)
return bits; {
if (data == 0x8f)
m_a2d_data = ioport("AN.1")->read();
else
m_a2d_data = ioport("AN.0")->read();
}
READ16_MEMBER(atlantis_state::a2d_data_r)
{
return m_a2d_data;
}
WRITE16_MEMBER(atlantis_state::a2d_data_w)
{
} }
/************************************* /*************************************
@ -619,7 +636,6 @@ void atlantis_state::machine_start()
// Save states // Save states
save_item(NAME(m_irq_state)); save_item(NAME(m_irq_state));
save_item(NAME(board_ctrl)); save_item(NAME(board_ctrl));
save_item(NAME(m_port_ctrl_reg));
} }
@ -636,7 +652,6 @@ void atlantis_state::machine_reset()
m_serial_count = 0; m_serial_count = 0;
m_irq_state = 0; m_irq_state = 0;
memset(board_ctrl, 0, sizeof(board_ctrl)); memset(board_ctrl, 0, sizeof(board_ctrl));
memset(m_port_ctrl_reg, 0, sizeof(m_port_ctrl_reg));
} }
/************************************* /*************************************
@ -644,39 +659,32 @@ void atlantis_state::machine_reset()
*************************************/ *************************************/
static ADDRESS_MAP_START( map0, AS_PROGRAM, 32, atlantis_state ) static ADDRESS_MAP_START( map0, AS_PROGRAM, 32, atlantis_state )
AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE8(cmos_r, cmos_w, 0xff) AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE8(cmos_r, cmos_w, 0xff)
//AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug)
AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0) AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0)
AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1) AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1)
//AM_RANGE(0x00200000, 0x0020001f) // Parallel UART (TL16C552 CS2) //AM_RANGE(0x00200000, 0x0020001f) // Parallel UART (TL16C552 CS2)
AM_RANGE(0x00400000, 0x004000bf) AM_READWRITE8(blue_r, blue_w, 0xff) AM_RANGE(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM
AM_RANGE(0x00880000, 0x00c80003) AM_READWRITE(board_ctrl_r, board_ctrl_w) AM_RANGE(0x00800000, 0x00c80003) AM_READWRITE(board_ctrl_r, board_ctrl_w)
//AM_RANGE(0x00880000, 0x00880003) // Sub-module Power0
//AM_RANGE(0x00900000, 0x00900003) // Sub_module Power1 (Zeus or vblank?)
//AM_RANGE(0x00980000, 0x00980003) // IRQ1 Enable
//AM_RANGE(0x00a00000, 0x00a00003) // IRQ2 Enable
//AM_RANGE(0x00a80000, 0x00a80003) // IRQ3 Enable
//AM_RANGE(0x00b00000, 0x00b00003) // IRQ4 Enable Not Seen (Hardcoded to IDE?)
//AM_RANGE(0x00b80000, 0x00b80003) // IRQ Global Enable
//AM_RANGE(0x00c00000, 0x00c00003) // IRQ Cause
//AM_RANGE(0x00c80000, 0x00c80003) // IRQ Status
AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w) AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w)
AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w) AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog? AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog
ADDRESS_MAP_END //AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl
ADDRESS_MAP_END
static ADDRESS_MAP_START( map1, AS_PROGRAM, 32, atlantis_state ) static ADDRESS_MAP_START( map1, AS_PROGRAM, 32, atlantis_state )
AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
// asic_fifo_w
// dcs3_fifo_full_w
AM_RANGE(0x00200000, 0x00200003) AM_WRITE(dcs3_fifo_full_w) AM_RANGE(0x00200000, 0x00200003) AM_WRITE(dcs3_fifo_full_w)
AM_RANGE(0x00400000, 0x00400003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) AM_RANGE(0x00400000, 0x00400003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w)
AM_RANGE(0x00600000, 0x00600003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) AM_RANGE(0x00600000, 0x00600003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w)
AM_RANGE(0x00800000, 0x00a00003) AM_READWRITE(port_ctrl_r, port_ctrl_w) AM_RANGE(0x00800000, 0x00900003) AM_READWRITE16(port_ctrl_r, port_ctrl_w, 0xffff)
//AM_RANGE(0x00800000, 0x00800003) // Written once = 0000fff8 //AM_RANGE(0x00880000, 0x00880003) // AUX Output Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select?
//AM_RANGE(0x00880000, 0x00880003) // Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select? //AM_RANGE(0x00900000, 0x00900003) // AUX Input Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad?
//AM_RANGE(0x00900000, 0x00900003) // Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad? AM_RANGE(0x00980000, 0x00980003) AM_READWRITE16(a2d_ctrl_r, a2d_ctrl_w, 0xffff) // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
//AM_RANGE(0x00980000, 0x00980003) // Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000. POTs? AM_RANGE(0x00a00000, 0x00a00003) AM_READWRITE16(a2d_data_r, a2d_data_w, 0xffff) // A2D Data
//AM_RANGE(0x00a00000, 0x00a00003) //AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits
//AM_RANGE(0x00980000, 0x00980003) AM_NOP // AM_WRITE(asic_fifo_w) //AM_RANGE(0x00b00000, 0x00b00003) // Trackball Chan 1 16 bits
//AM_RANGE(0x00b80000, 0x00b80003) // Trackball Error 16 bits
//AM_RANGE(0x00c00000, 0x00c00003) // Trackball Pins 16 bits
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START(map2, AS_PROGRAM, 32, atlantis_state) static ADDRESS_MAP_START(map2, AS_PROGRAM, 32, atlantis_state)
@ -684,7 +692,7 @@ static ADDRESS_MAP_START(map2, AS_PROGRAM, 32, atlantis_state)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( map3, AS_PROGRAM, 32, atlantis_state ) static ADDRESS_MAP_START( map3, AS_PROGRAM, 32, atlantis_state )
//AM_RANGE(0x000000, 0xffffff) AM_READWRITE(blue_r, blue_w) //AM_RANGE(0x000000, 0xffffff) ROMBUS
ADDRESS_MAP_END ADDRESS_MAP_END
/************************************* /*************************************
@ -876,31 +884,31 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state )
// TL16C552 UART // TL16C552 UART
MCFG_DEVICE_ADD("uart1", NS16550, XTAL_24MHz) MCFG_DEVICE_ADD("uart1", NS16550, XTAL_24MHz)
//MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("com1", rs232_port_device, write_txd)) MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("com1", rs232_port_device, write_txd))
//MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("com1", rs232_port_device, write_dtr)) MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("com1", rs232_port_device, write_dtr))
//MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("com1", rs232_port_device, write_rts)) MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("com1", rs232_port_device, write_rts))
//MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart1_irq_callback)) MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart1_irq_callback))
MCFG_DEVICE_ADD("uart2", NS16550, XTAL_24MHz) MCFG_DEVICE_ADD("uart2", NS16550, XTAL_24MHz)
//MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("com2", rs232_port_device, write_txd)) MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("com2", rs232_port_device, write_txd))
//MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("com2", rs232_port_device, write_dtr)) MCFG_INS8250_OUT_DTR_CB(DEVWRITELINE("com2", rs232_port_device, write_dtr))
//MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("com2", rs232_port_device, write_rts)) MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE("com2", rs232_port_device, write_rts))
//MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart2_irq_callback)) MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart2_irq_callback))
//MCFG_RS232_PORT_ADD("com1", default_rs232_devices, nullptr) MCFG_RS232_PORT_ADD("com1", default_rs232_devices, nullptr)
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, rx_w)) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, rx_w))
//MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, dcd_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, dcd_w))
//MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, dsr_w)) MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, dsr_w))
//MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, ri_w)) MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, ri_w))
//MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, cts_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, cts_w))
//MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("com1", mwskins_comm) //MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("com1", mwskins_comm)
//MCFG_RS232_PORT_ADD("com2", default_rs232_devices, nullptr) MCFG_RS232_PORT_ADD("com2", default_rs232_devices, nullptr)
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, rx_w)) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, rx_w))
//MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, dcd_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, dcd_w))
//MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, dsr_w)) MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, dsr_w))
//MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, ri_w)) MCFG_RS232_RI_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, ri_w))
//MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, cts_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, cts_w))
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -926,6 +934,14 @@ ROM_START( mwskinsa )
DISK_IMAGE( "mwskinsa", 0, SHA1(72497917b31156eb11a46bbcc6f22a254dcec044) ) DISK_IMAGE( "mwskinsa", 0, SHA1(72497917b31156eb11a46bbcc6f22a254dcec044) )
ROM_END ROM_END
ROM_START(mwskinsa_mod)
ROM_REGION32_LE(0x80000, PCI_ID_NILE":rom", 0) /* 512k for R4310 code */
ROM_LOAD("skins_game_u4_boot_1.00.u4", 0x000000, 0x080000, CRC(0fe87720) SHA1(4b24abbe662a2d7b61e6a3f079e28b73605ba19f))
DISK_REGION(PCI_ID_IDE":ide:0:hdd:image")
DISK_IMAGE( "mwskinsc", 0, SHA1(437bc145b7b852f7b4a1da35cab6569f4c357658) )
ROM_END
ROM_START( mwskinso ) ROM_START( mwskinso )
ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* 512k for R4310 code */ ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* 512k for R4310 code */
ROM_LOAD( "skins_game_u4_boot_1.00.u4", 0x000000, 0x080000, CRC(0fe87720) SHA1(4b24abbe662a2d7b61e6a3f079e28b73605ba19f) ) ROM_LOAD( "skins_game_u4_boot_1.00.u4", 0x000000, 0x080000, CRC(0fe87720) SHA1(4b24abbe662a2d7b61e6a3f079e28b73605ba19f) )

View File

@ -28,19 +28,22 @@ class beehive_state : public driver_device
{ {
public: public:
beehive_state(const machine_config &mconfig, device_type type, const char *tag) beehive_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, "maincpu"), , m_maincpu(*this, "maincpu")
m_p_videoram(*this, "videoram"){ } , m_p_videoram(*this, "videoram")
{ }
required_device<cpu_device> m_maincpu;
DECLARE_READ8_MEMBER(beehive_60_r); DECLARE_READ8_MEMBER(beehive_60_r);
DECLARE_WRITE8_MEMBER(beehive_62_w); DECLARE_WRITE8_MEMBER(beehive_62_w);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
required_device<cpu_device> m_maincpu;
const uint8_t *m_p_chargen; const uint8_t *m_p_chargen;
required_shared_ptr<uint8_t> m_p_videoram; required_shared_ptr<uint8_t> m_p_videoram;
uint8_t m_keyline; uint8_t m_keyline;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
}; };
READ8_MEMBER(beehive_state::beehive_60_r) READ8_MEMBER(beehive_state::beehive_60_r)

View File

@ -56,14 +56,12 @@
#include "sound/wave.h" #include "sound/wave.h"
#include "imagedev/snapquik.h" #include "imagedev/snapquik.h"
#define KEYBOARD_TAG "keyboard"
class binbug_state : public driver_device class binbug_state : public driver_device
{ {
public: public:
binbug_state(const machine_config &mconfig, device_type type, const char *tag) binbug_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_rs232(*this, KEYBOARD_TAG), m_rs232(*this, "keyboard"),
m_cass(*this, "cassette"), m_cass(*this, "cassette"),
m_p_videoram(*this, "videoram"), m_p_videoram(*this, "videoram"),
m_p_attribram(*this, "attribram"), m_p_attribram(*this, "attribram"),
@ -309,7 +307,7 @@ static MACHINE_CONFIG_START( binbug, binbug_state )
MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_PALETTE_ADD_MONOCHROME("palette")
/* Keyboard */ /* Keyboard */
MCFG_RS232_PORT_ADD(KEYBOARD_TAG, default_rs232_devices, "keyboard") MCFG_RS232_PORT_ADD("keyboard", default_rs232_devices, "keyboard")
MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("keyboard", keyboard) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("keyboard", keyboard)
/* Cassette */ /* Cassette */

View File

@ -25,17 +25,19 @@ public:
}; };
c10_state(const machine_config &mconfig, device_type type, const char *tag) c10_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, "maincpu"), , m_maincpu(*this, "maincpu")
m_p_videoram(*this, "p_videoram"){ } , m_p_videoram(*this, "videoram")
{ }
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(c10);
private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
const uint8_t *m_p_chargen; const uint8_t *m_p_chargen;
required_shared_ptr<uint8_t> m_p_videoram; required_shared_ptr<uint8_t> m_p_videoram;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(c10);
protected: protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@ -49,7 +51,7 @@ static ADDRESS_MAP_START(c10_mem, AS_PROGRAM, 8, c10_state)
AM_RANGE(0x1000, 0x7fff) AM_RAM AM_RANGE(0x1000, 0x7fff) AM_RAM
AM_RANGE(0x8000, 0xbfff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xf0a1) AM_RAM AM_RANGE(0xc000, 0xf0a1) AM_RAM
AM_RANGE(0xf0a2, 0xffff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0xf0a2, 0xffff) AM_RAM AM_SHARE("videoram")
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( c10_io, AS_IO, 8, c10_state) static ADDRESS_MAP_START( c10_io, AS_IO, 8, c10_state)

View File

@ -36,8 +36,6 @@ TODO
#include "sound/wave.h" #include "sound/wave.h"
#include "sound/beep.h" #include "sound/beep.h"
#define KEYBOARD_TAG "keyboard"
class cd2650_state : public driver_device class cd2650_state : public driver_device
{ {
public: public:
@ -291,7 +289,7 @@ static MACHINE_CONFIG_START( cd2650, cd2650_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(cd2650_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(cd2650_state, kbd_put))
MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_ADD( "cassette" )
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -18,17 +18,17 @@ class cdc721_state : public driver_device
public: public:
cdc721_state(const machine_config &mconfig, device_type type, const char *tag) cdc721_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram") , m_p_videoram(*this, "videoram")
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
{ } { }
public:
virtual void machine_reset() override;
DECLARE_PALETTE_INIT(cdc721);
const uint8_t *m_p_chargen;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_shared_ptr<uint8_t> m_p_videoram; DECLARE_PALETTE_INIT(cdc721);
private: private:
virtual void machine_reset() override;
const uint8_t *m_p_chargen;
required_shared_ptr<uint8_t> m_p_videoram;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;

View File

@ -55,11 +55,10 @@ Notes:
- sprtmtch and drgpunch are "clones", but the gfx are very different; sprtmtch - sprtmtch and drgpunch are "clones", but the gfx are very different; sprtmtch
is a trimmed down version, without all animations between levels. is a trimmed down version, without all animations between levels.
- according to the readme, mjfriday should have a M5205. However there don't seem to be - according to the readme, mjfriday should have a M5205. However the program ROMs don't
accesses to it, and looking at the ROMs I don't see ADPCM data. Note that apart from a seem to make accesses to it or contain ADPCM data for it, and photos of the game's
minor difference in the memory map mjfriday and mjdialq2 are identical, and mjdialq2 PCB don't even show an unpopulated location for one. Note that gekisha and mjdialq2,
doesn't have a 5205 either. Therefore, I think it's either a mistake in the readme or which run on similar hardware, also lack 5205s. Likely it's a mistake in the readme.
the chip is on the board but unused.
TODO: TODO:
@ -5287,7 +5286,7 @@ Mahjong Friday
D2607198L1 D2607198L1
CPU : Zilog Z0840006PSC (Z80) CPU : Zilog Z0840006PSC (Z80)
Sound: YM2413 M5205 Sound: YM2413
OSC : 24MHz (X1) OSC : 24MHz (X1)
CRT Controller: HD46505SP (6845) CRT Controller: HD46505SP (6845)

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Victor Trucco,Steve Ellenoff,Phil Stroffolino,Tatsuyuki Satoh,Tomasz Slanina,Nicola Salmoria // copyright-holders:Victor Trucco,Steve Ellenoff,Phil Stroffolino,Tatsuyuki Satoh,Tomasz Slanina,Nicola Salmoria,Vas Crabb
/*************************************************************************** /***************************************************************************
Ping Pong King (c) Taito 1985 Ping Pong King (c) Taito 1985
@ -12,13 +12,15 @@ Credits:
Golden Castle Rom Set Support Golden Castle Rom Set Support
- Phil Stroffolino: palette, sprites, misc video driver fixes - Phil Stroffolino: palette, sprites, misc video driver fixes
- Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation, ADPCM with MC6809 - Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation, ADPCM with MC6809
- Tomasz Slanina preliminary Ping Pong King driver - Tomasz Slanina: preliminary Ping Pong King driver
- Nicola Salmoria clean up - Nicola Salmoria: clean up
- Vas Crabb: MCU hookup
special thanks to: special thanks to:
- Camilty for precious hardware information and screenshots - Camilty for precious hardware information and screenshots
- Jason Richmond for hardware information and misc. notes - Jason Richmond for hardware information and misc. notes
- Joe Rounceville for schematics - Joe Rounceville for schematics
- JunoMan for measuring and tracing signals
- and everyone else who's offered support along the way! - and everyone else who's offered support along the way!
@ -163,8 +165,11 @@ Notes:
- The fg tilemap is a 1bpp layer which selects the second palette bank when - The fg tilemap is a 1bpp layer which selects the second palette bank when
active, so it could be used for some cool effects. Gladiator just sets the active, so it could be used for some cool effects. Gladiator just sets the
whole palette to white so we can just treat it as a monochromatic layer. whole palette to white so we can just treat it as a monochromatic layer.
- tilemap Y scroll is not implemented because the game doesn't use it so I can't - Tilemap Y scroll is not implemented because the game doesn't use it so I
verify it's right. can't verify it's right.
- gladiatr and clones start with one credit due to the way MAME initialises
memory and the dodgy code the bootleg MCUs use to synchronise with the host
CPUs. On an F3 reset they randomly start with one credit or no credits.
TODO: TODO:
----- -----
@ -178,78 +183,36 @@ TODO:
- YM2203 some sound effects just don't sound correct - YM2203 some sound effects just don't sound correct
- Audio Filter Switch not hooked up (might solve YM2203 mixing issue) - Audio Filter Switch not hooked up (might solve YM2203 mixing issue)
- Ports 60,61,80,81 not fully understood yet... - Ports 60,61,80,81 not fully understood yet...
- The four 8741 ROMs are available but not used. - The four 8741 dumps come from an unprotected bootleg, we need dumps from
original boards.
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/m6809/m6809.h"
#include "machine/tait8741.h"
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
#include "machine/nvram.h"
#include "includes/gladiatr.h" #include "includes/gladiatr.h"
#include "cpu/m6809/m6809.h"
#include "cpu/mcs48/mcs48.h"
#include "cpu/z80/z80.h"
#include "machine/clock.h"
#include "machine/nvram.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
/*Rom bankswitching*/
WRITE8_MEMBER(gladiatr_state::gladiatr_bankswitch_w) WRITE8_MEMBER(gladiatr_state::gladiatr_bankswitch_w)
{ {
// ROM bankswitching
membank("bank1")->set_entry(data & 0x01); membank("bank1")->set_entry(data & 0x01);
} }
READ8_MEMBER(gladiatr_state::gladiator_dsw1_r )
{
int orig = ioport("DSW1")->read()^0xff;
return BITSWAP8(orig, 0,1,2,3,4,5,6,7);
}
READ8_MEMBER(gladiatr_state::gladiator_dsw2_r )
{
int orig = ioport("DSW2")->read()^0xff;
return BITSWAP8(orig, 2,3,4,5,6,7,1,0);
}
READ8_MEMBER(gladiatr_state::gladiator_controls_r )
{
int coins = 0;
if(ioport("COINS")->read() & 0xc0 ) coins = 0x80;
switch(offset)
{
case 0x01: /* start button , coins */
return ioport("IN0")->read() | coins;
case 0x02: /* Player 1 Controller , coins */
return ioport("IN1")->read() | coins;
case 0x04: /* Player 2 Controller , coins */
return ioport("IN2")->read() | coins;
}
/* unknown */
return 0;
}
READ8_MEMBER(gladiatr_state::gladiator_button3_r )
{
switch(offset)
{
case 0x01: /* button 3 */
return ioport("IN3")->read();
}
/* unknown */
return 0;
}
MACHINE_RESET_MEMBER(gladiatr_state,gladiator) MACHINE_RESET_MEMBER(gladiatr_state,gladiator)
{ {
/* 6809 bank memory set */ // 6809 bank memory set
{ membank("bank2")->set_entry(0);
membank("bank2")->set_entry(0); m_audiocpu->reset();
m_audiocpu->reset();
}
} }
/* YM2203 port B handler (output) */ /* YM2203 port B handler (output) */
@ -269,12 +232,12 @@ WRITE_LINE_MEMBER(gladiatr_state::gladiator_ym_irq)
/*Sound Functions*/ /*Sound Functions*/
WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w) WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w)
{ {
/* bit6 = bank offset */ // bit 6 = bank offset
membank("bank2")->set_entry((data & 0x40) ? 1 : 0); membank("bank2")->set_entry((data & 0x40) ? 1 : 0);
m_msm->data_w(data); /* bit0..3 */ m_msm->data_w(data); // bit 0..3
m_msm->reset_w(BIT(data, 5)); /* bit 5 */ m_msm->reset_w(BIT(data, 5)); // bit 5
m_msm->vclk_w (BIT(data, 4)); /* bit4 */ m_msm->vclk_w (BIT(data, 4)); // bit 4
} }
WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w) WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w)
@ -304,60 +267,182 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w)
#endif #endif
WRITE_LINE_MEMBER(gladiatr_state::tclk_w)
{
m_tclk_val = state != 0;
// these are actually edge-triggered, but MAME only supports polled inputs
u8 const new_in0_val(m_in0->read());
if (BIT(~new_in0_val & (new_in0_val ^ m_in0_val), 5))
m_cctl_p1 = (m_cctl_p1 & 0xfc) | BIT(~new_in0_val, 5) | (BIT(~new_in0_val, 5) << 1);
else
m_cctl_p1 = (m_cctl_p1 & 0xfe) | BIT(~new_in0_val, 5);
m_in0_val = new_in0_val;
u8 const new_in1_val(m_in0->read());
if (BIT(~new_in1_val & (new_in1_val ^ m_in1_val), 5))
m_cctl_p2 = (m_cctl_p2 & 0xfc) | BIT(~new_in1_val, 5) | (BIT(~new_in1_val, 5) << 1);
else
m_cctl_p2 = (m_cctl_p2 & 0xfe) | BIT(~new_in1_val, 5);
m_in1_val = new_in1_val;
}
READ8_MEMBER(gladiatr_state::cctl_p1_r)
{
return m_cctl_p1 & m_in2->read();
}
READ8_MEMBER(gladiatr_state::cctl_p2_r)
{
return m_cctl_p2;
}
READ8_MEMBER(gladiatr_state::ucpu_p2_r)
{
return BITSWAP8(m_dsw1->read(), 0,1,2,3,4,5,6,7);
}
READ8_MEMBER(gladiatr_state::cctl_t_r)
{
return BIT(m_coins->read(), offset + 2);
}
READ8_MEMBER(gladiatr_state::ccpu_t_r)
{
return BIT(m_coins->read(), offset);
}
WRITE8_MEMBER(gladiatr_state::ccpu_p2_w)
{
// FIXME: active high or active low? (bootleg MCU never uses these outputs)
machine().bookkeeping().coin_counter_w(0, BIT(data, 6));
machine().bookkeeping().coin_counter_w(1, BIT(data, 7));
}
READ8_MEMBER(gladiatr_state::tclk_r)
{
// fed to t0 on comms MCUs
return m_tclk_val ? 0x01 : 0x00;
}
READ8_MEMBER(gladiatr_state::ucpu_t1_r)
{
// connected to p1 on other MCU
return BIT(m_csnd_p1, 1);
}
READ8_MEMBER(gladiatr_state::ucpu_p1_r)
{
// p10 connected to corresponding line on other MCU
// p11 connected to t1 on other MCU
// other lines floating
return m_csnd_p1 |= 0xfe;
}
WRITE8_MEMBER(gladiatr_state::ucpu_p1_w)
{
m_ucpu_p1 = data;
}
READ8_MEMBER(gladiatr_state::csnd_t1_r)
{
// connected to p1 on other MCU
return BIT(m_ucpu_p1, 1);
}
READ8_MEMBER(gladiatr_state::csnd_p1_r)
{
// p10 connected to corresponding line on other MCU
// p11 connected to t1 on other MCU
// other lines floating
return m_ucpu_p1 |= 0xfe;
}
WRITE8_MEMBER(gladiatr_state::csnd_p1_w)
{
m_csnd_p1 = data;
}
READ8_MEMBER(gladiatr_state::csnd_p2_r)
{
return BITSWAP8(m_dsw2->read(), 2,3,4,5,6,7,1,0);
}
READ8_MEMBER(ppking_state::ppking_f1_r)
{
return machine().rand();
}
READ8_MEMBER(ppking_state::ppking_f6a3_r)
{
if (space.device().safe_pcbase() == 0x8e)
m_nvram[0x6a3] = 1;
WRITE8_MEMBER(gladiatr_state::ppking_qx0_w) return m_nvram[0x6a3];
}
WRITE8_MEMBER(ppking_state::ppking_qx0_w)
{ {
if(!offset) if(!offset)
{ {
m_data2=data; m_data2 = data;
m_flag2=1; m_flag2 = 1;
} }
} }
WRITE8_MEMBER(gladiatr_state::ppking_qx1_w) WRITE8_MEMBER(ppking_state::ppking_qx1_w)
{ {
if(!offset) if(!offset)
{ {
m_data1=data; m_data1 = data;
m_flag1=1; m_flag1 = 1;
} }
} }
WRITE8_MEMBER(gladiatr_state::ppking_qx2_w){ } WRITE8_MEMBER(ppking_state::ppking_qx2_w)
WRITE8_MEMBER(gladiatr_state::ppking_qx3_w){ }
READ8_MEMBER(gladiatr_state::ppking_qx2_r){ return machine().rand(); }
READ8_MEMBER(gladiatr_state::ppking_qx3_r){ return machine().rand()&0xf; }
READ8_MEMBER(gladiatr_state::ppking_qx0_r)
{ {
if(!offset) }
return m_data1;
WRITE8_MEMBER(ppking_state::ppking_qx3_w)
{
}
READ8_MEMBER(ppking_state::ppking_qx0_r)
{
if (!offset)
return m_data1;
else else
return m_flag2; return m_flag2;
} }
READ8_MEMBER(gladiatr_state::ppking_qx1_r) READ8_MEMBER(ppking_state::ppking_qx1_r)
{ {
if(!offset) if (!offset)
return m_data2; return m_data2;
else else
return m_flag1; return m_flag1;
} }
MACHINE_RESET_MEMBER(gladiatr_state,ppking) READ8_MEMBER(ppking_state::ppking_qx2_r)
{
return machine().rand();
}
READ8_MEMBER(ppking_state::ppking_qx3_r)
{
return machine().rand()&0xf;
}
MACHINE_RESET_MEMBER(ppking_state, ppking)
{ {
m_data1 = m_data2 = 0; m_data1 = m_data2 = 0;
m_flag1 = m_flag2 = 1; m_flag1 = m_flag2 = 1;
} }
static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8, gladiatr_state ) static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8, ppking_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w) AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w)
@ -369,12 +454,12 @@ static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8, gladiatr_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( ppking_cpu3_map, AS_PROGRAM, 8, gladiatr_state ) static ADDRESS_MAP_START( ppking_cpu3_map, AS_PROGRAM, 8, ppking_state )
AM_RANGE(0x2000, 0x2fff) AM_ROM AM_RANGE(0x2000, 0x2fff) AM_ROM
AM_RANGE(0xc000, 0xffff) AM_ROM AM_RANGE(0xc000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, gladiatr_state ) static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, ppking_state )
// ADDRESS_MAP_GLOBAL_MASK(0xff) // ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w)
AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w)
@ -382,7 +467,7 @@ static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, gladiatr_state )
AM_RANGE(0xc0bf, 0xc0bf) AM_NOP AM_RANGE(0xc0bf, 0xc0bf) AM_NOP
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, gladiatr_state ) static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, ppking_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w) AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w)
@ -425,37 +510,63 @@ static ADDRESS_MAP_START( gladiatr_cpu1_io, AS_IO, 8, gladiatr_state )
AM_RANGE(0xc002, 0xc002) AM_WRITE(gladiatr_bankswitch_w) AM_RANGE(0xc002, 0xc002) AM_WRITE(gladiatr_bankswitch_w)
AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */ AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */
AM_RANGE(0xc007, 0xc007) AM_WRITE(gladiatr_flipscreen_w) AM_RANGE(0xc007, 0xc007) AM_WRITE(gladiatr_flipscreen_w)
AM_RANGE(0xc09e, 0xc09f) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_0, write_0) AM_RANGE(0xc09e, 0xc09f) AM_DEVREADWRITE("ucpu", upi41_cpu_device, upi41_master_r, upi41_master_w)
AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog_reset_w doesn't work AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog_reset_w doesn't work
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state ) static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_1, write_1) AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("csnd", upi41_cpu_device, upi41_master_r, upi41_master_w)
AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w) AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w)
AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("cctl", upi41_cpu_device, upi41_master_r, upi41_master_w)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ccpu", upi41_cpu_device, upi41_master_r, upi41_master_w)
AM_RANGE(0xa0, 0xa7) AM_NOP // filters on sound output AM_RANGE(0xa0, 0xa7) AM_NOP // filters on sound output
AM_RANGE(0xe0, 0xe0) AM_WRITE(gladiator_cpu_sound_command_w) AM_RANGE(0xe0, 0xe0) AM_WRITE(gladiator_cpu_sound_command_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( cctl_io_map, AS_IO, 8, gladiatr_state )
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(cctl_t_r)
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(cctl_p1_r)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(cctl_p2_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ccpu_io_map, AS_IO, 8, gladiatr_state )
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ_PORT("IN0")
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ_PORT("IN1") AM_WRITE(ccpu_p2_w)
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(ccpu_t_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ucpu_io_map, AS_IO, 8, gladiatr_state )
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(ucpu_p1_r, ucpu_p1_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(ucpu_p2_r)
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r)
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ucpu_t1_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( csnd_io_map, AS_IO, 8, gladiatr_state )
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(csnd_p1_r, csnd_p1_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(csnd_p2_r)
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r)
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(csnd_t1_r)
ADDRESS_MAP_END
static INPUT_PORTS_START( gladiatr ) static INPUT_PORTS_START( gladiatr )
PORT_START("DSW1") /* (8741-0 parallel port)*/ PORT_START("DSW1") /* (8741-0 parallel port)*/
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x03, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x03, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x02, DEF_STR( Medium ) ) PORT_DIPSETTING( 0x02, DEF_STR( Medium ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x04, 0x00, "After 4 Stages" ) PORT_DIPLOCATION("SW1:3") PORT_DIPNAME( 0x04, 0x00, "After 4 Stages" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, DEF_STR( Continues ) ) PORT_DIPSETTING( 0x00, DEF_STR( Continues ) )
PORT_DIPSETTING( 0x04, "Ends" ) PORT_DIPSETTING( 0x04, "Ends" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") /*NOTE: Actual manual has these settings reversed(typo?)! */ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") /*NOTE: Actual manual has these settings reversed(typo?)! */
PORT_DIPSETTING( 0x00, "Only at 100000" ) PORT_DIPSETTING( 0x08, "Only at 100000" )
PORT_DIPSETTING( 0x00, "Every 100000" ) PORT_DIPSETTING( 0x00, "Every 100000" )
PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6") PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
PORT_DIPSETTING( 0x30, "1" ) PORT_DIPSETTING( 0x30, "1" )
PORT_DIPSETTING( 0x20, "2" ) PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x10, "3" ) PORT_DIPSETTING( 0x10, "3" )
@ -463,29 +574,29 @@ static INPUT_PORTS_START( gladiatr )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:7") PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2") /* (8741-1 parallel port) - Dips 6 Unused */ PORT_START("DSW2") /* (8741-1 parallel port) - Dips 6 Unused */
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:3,4") PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 2C_1C ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:5") PORT_DIPNAME( 0x10, 0x10, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) /* Listed as "Unused" */ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7") PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8") PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -493,68 +604,48 @@ static INPUT_PORTS_START( gladiatr )
PORT_DIPNAME( 0x01, 0x01, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW3:1") PORT_DIPNAME( 0x01, 0x01, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW3:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Memory Backup" ) PORT_DIPLOCATION("SW3:2") PORT_DIPNAME( 0x02, 0x02, "Memory Backup" ) PORT_DIPLOCATION("SW3:2")
PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x02, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Clear" ) PORT_DIPSETTING( 0x00, "Clear" )
PORT_DIPNAME( 0x0c, 0x0c, "Starting Stage" ) PORT_DIPLOCATION("SW3:3,4") PORT_DIPNAME( 0x0c, 0x0c, "Starting Stage" ) PORT_DIPLOCATION("SW3:3,4")
PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "4" ) PORT_DIPSETTING( 0x00, "4" )
PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW3:5" ) /* Listed as "Unused" */ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW3:5" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" ) /* Listed as "Unused" */ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" ) /* Listed as "Unused" */ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" ) /* Listed as "Unused" */
PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:8" ) PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:8" )
PORT_START("IN0") /*(8741-3 parallel port 1) */ PORT_START("IN0") // ccpu p1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_8WAY
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* COINS */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("COINS") /*(8741-3 parallel port bit7) */ PORT_START("IN1") // ccpu p2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) // coin counter outputs
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
PORT_START("IN1") /* (8741-3 parallel port 2) */ PORT_START("IN2") // cctl p1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) // other stuff mixed here
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* COINS */
PORT_START("IN2") /* (8741-3 parallel port 4) */ PORT_START("COINS") // ccpu test, cctl test
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* COINS */
PORT_START("IN3") /* (8741-2 parallel port 1) */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
/*******************************************************************/ /*******************************************************************/
@ -608,30 +699,25 @@ GFXDECODE_END
READ8_MEMBER(gladiatr_state::ppking_f1_r) static MACHINE_CONFIG_START( ppking, ppking_state )
{
return machine().rand();
}
static MACHINE_CONFIG_START( ppking, gladiatr_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(ppking_cpu1_map) MCFG_CPU_PROGRAM_MAP(ppking_cpu1_map)
MCFG_CPU_IO_MAP(ppking_cpu1_io) MCFG_CPU_IO_MAP(ppking_cpu1_io)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gladiatr_state, irq0_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", ppking_state, irq0_line_hold)
MCFG_CPU_ADD("sub", Z80, XTAL_12MHz/4) /* verified on pcb */ MCFG_CPU_ADD("sub", Z80, XTAL_12MHz/4) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(cpu2_map) MCFG_CPU_PROGRAM_MAP(cpu2_map)
MCFG_CPU_IO_MAP(ppking_cpu2_io) MCFG_CPU_IO_MAP(ppking_cpu2_io)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gladiatr_state, irq0_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", ppking_state, irq0_line_hold)
MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(ppking_cpu3_map) MCFG_CPU_PROGRAM_MAP(ppking_cpu3_map)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,ppking) MCFG_MACHINE_RESET_OVERRIDE(ppking_state, ppking)
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */ /* video hardware */
@ -640,13 +726,13 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(gladiatr_state, screen_update_ppking) MCFG_SCREEN_UPDATE_DRIVER(ppking_state, screen_update_ppking)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ppking) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ppking)
MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(gladiatr_state,ppking) MCFG_VIDEO_START_OVERRIDE(ppking_state, ppking)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
@ -654,8 +740,8 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, ppking_f1_r)) MCFG_AY8910_PORT_A_READ_CB(READ8(ppking_state, ppking_f1_r))
MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, ppking_f1_r)) MCFG_AY8910_PORT_B_READ_CB(READ8(ppking_state, ppking_f1_r))
MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(0, "mono", 0.60)
MCFG_SOUND_ROUTE(1, "mono", 0.60) MCFG_SOUND_ROUTE(1, "mono", 0.60)
MCFG_SOUND_ROUTE(2, "mono", 0.60) MCFG_SOUND_ROUTE(2, "mono", 0.60)
@ -681,15 +767,26 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", M6809, XTAL_12MHz/16) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(gladiatr_cpu3_map) MCFG_CPU_PROGRAM_MAP(gladiatr_cpu3_map)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator) MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator)
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_TAITO8741_ADD("taito8741") MCFG_DEVICE_ADD("cctl", I8741, XTAL_12MHz/2) /* verified on pcb */
MCFG_TAITO8741_MODES(TAITO8741_MASTER,TAITO8741_SLAVE,TAITO8741_PORT,TAITO8741_PORT) MCFG_CPU_IO_MAP(cctl_io_map)
MCFG_TAITO8741_CONNECT(1,0,0,0)
MCFG_TAITO8741_PORT_HANDLERS(READ8(gladiatr_state,gladiator_dsw1_r),READ8(gladiatr_state,gladiator_dsw2_r),READ8(gladiatr_state,gladiator_button3_r),READ8(gladiatr_state,gladiator_controls_r)) MCFG_DEVICE_ADD("ccpu", I8741, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_IO_MAP(ccpu_io_map)
MCFG_DEVICE_ADD("ucpu", I8741, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_IO_MAP(ucpu_io_map)
MCFG_DEVICE_ADD("csnd", I8741, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_IO_MAP(csnd_io_map)
/* lazy way to make polled serial between MCUs work */
MCFG_QUANTUM_PERFECT_CPU("ucpu")
MCFG_CLOCK_ADD("tclk", XTAL_12MHz/8/128/2) /* verified on pcb */
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(gladiatr_state, tclk_w));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
@ -724,6 +821,7 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
MACHINE_CONFIG_END MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Game driver(s) Game driver(s)
@ -811,6 +909,18 @@ ROM_START( gladiatr )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */ ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */ ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) ) ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) )
ROM_REGION( 0x0400, "cctl", 0 ) /* I/O MCU */
ROM_LOAD( "aq_002.9b", 0x00000, 0x0400, CRC(b30d225f) SHA1(f383286530975c440589c276aa8c46fdfe5292b6) BAD_DUMP )
ROM_REGION( 0x0400, "ccpu", 0 ) /* I/O MCU */
ROM_LOAD( "aq_003.xx", 0x00000, 0x0400, CRC(1d02cd5f) SHA1(f7242039788c66a1d91b01852d7d447330b847c4) BAD_DUMP )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_END ROM_END
ROM_START( ogonsiro ) ROM_START( ogonsiro )
@ -854,6 +964,18 @@ ROM_START( ogonsiro )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */ ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */ ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) ) ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) )
ROM_REGION( 0x0400, "cctl", 0 ) /* I/O MCU */
ROM_LOAD( "aq_002.9b", 0x00000, 0x0400, CRC(b30d225f) SHA1(f383286530975c440589c276aa8c46fdfe5292b6) BAD_DUMP )
ROM_REGION( 0x0400, "ccpu", 0 ) /* I/O MCU */
ROM_LOAD( "aq_003.xx", 0x00000, 0x0400, CRC(1d02cd5f) SHA1(f7242039788c66a1d91b01852d7d447330b847c4) BAD_DUMP )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_END ROM_END
ROM_START( greatgur ) ROM_START( greatgur )
@ -898,10 +1020,16 @@ ROM_START( greatgur )
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */ ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) ) ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) )
ROM_REGION( 0x0400, "user1", 0 ) /* ROMs for the four 8741 (not emulated yet) */ ROM_REGION( 0x0400, "cctl", 0 ) /* I/O MCU */
ROM_LOAD( "gladcctl.1", 0x00000, 0x0400, CRC(b30d225f) SHA1(f383286530975c440589c276aa8c46fdfe5292b6) ) ROM_LOAD( "gladcctl.1", 0x00000, 0x0400, CRC(b30d225f) SHA1(f383286530975c440589c276aa8c46fdfe5292b6) )
ROM_REGION( 0x0400, "ccpu", 0 ) /* I/O MCU */
ROM_LOAD( "gladccpu.2", 0x00000, 0x0400, CRC(1d02cd5f) SHA1(f7242039788c66a1d91b01852d7d447330b847c4) ) ROM_LOAD( "gladccpu.2", 0x00000, 0x0400, CRC(1d02cd5f) SHA1(f7242039788c66a1d91b01852d7d447330b847c4) )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "gladucpu.17", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) ) ROM_LOAD( "gladucpu.17", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) )
ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
ROM_LOAD( "gladcsnd.18", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) ) ROM_LOAD( "gladcsnd.18", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) )
ROM_END ROM_END
@ -946,6 +1074,18 @@ ROM_START( gcastle )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */ ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */ ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) ) ROM_LOAD( "q4.5s", 0x00020, 0x0020, CRC(e325808e) SHA1(5fd92ad4eff24f6ccf2df19d268a6cafba72202e) )
ROM_REGION( 0x0400, "cctl", 0 ) /* I/O MCU */
ROM_LOAD( "aq_002.9b", 0x00000, 0x0400, CRC(b30d225f) SHA1(f383286530975c440589c276aa8c46fdfe5292b6) BAD_DUMP )
ROM_REGION( 0x0400, "ccpu", 0 ) /* I/O MCU */
ROM_LOAD( "aq_003.xx", 0x00000, 0x0400, CRC(1d02cd5f) SHA1(f7242039788c66a1d91b01852d7d447330b847c4) BAD_DUMP )
ROM_REGION( 0x0400, "ucpu", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.3a", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
ROM_LOAD( "aq_006.6c", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) BAD_DUMP )
ROM_END ROM_END
@ -1001,18 +1141,26 @@ DRIVER_INIT_MEMBER(gladiatr_state,gladiatr)
/* make sure bank is valid in cpu-reset */ /* make sure bank is valid in cpu-reset */
membank("bank2")->set_entry(0); membank("bank2")->set_entry(0);
m_tclk_val = false;
m_in0_val = 0xff;
m_in1_val = 0xff;
m_cctl_p1 = 0xff;
m_cctl_p2 = 0xff;
m_ucpu_p1 = 0xff;
m_csnd_p1 = 0xff;
save_item(NAME(m_tclk_val));
save_item(NAME(m_in0_val));
save_item(NAME(m_in1_val));
save_item(NAME(m_cctl_p1));
save_item(NAME(m_cctl_p2));
save_item(NAME(m_ucpu_p1));
save_item(NAME(m_csnd_p1));
} }
READ8_MEMBER(gladiatr_state::ppking_f6a3_r) DRIVER_INIT_MEMBER(ppking_state, ppking)
{
if(space.device().safe_pcbase()==0x8e)
m_nvram[0x6a3]=1;
return m_nvram[0x6a3];
}
DRIVER_INIT_MEMBER(gladiatr_state,ppking)
{ {
uint8_t *rom; uint8_t *rom;
int i,j; int i,j;
@ -1034,7 +1182,7 @@ DRIVER_INIT_MEMBER(gladiatr_state,ppking)
rom[i+2*j*0x2000] = rom[i+j*0x2000]; rom[i+2*j*0x2000] = rom[i+j*0x2000];
} }
} }
m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(gladiatr_state::ppking_f6a3_r),this)); m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(ppking_state::ppking_f6a3_r),this));
save_item(NAME(m_data1)); save_item(NAME(m_data1));
save_item(NAME(m_data2)); save_item(NAME(m_data2));
@ -1042,7 +1190,7 @@ DRIVER_INIT_MEMBER(gladiatr_state,ppking)
GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1985, ppking, 0, ppking, 0, ppking_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", MACHINE_SUPPORTS_SAVE )

View File

@ -39,9 +39,9 @@ class grfd2301_state : public driver_device
public: public:
grfd2301_state(const machine_config &mconfig, device_type type, const char *tag) grfd2301_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram") , m_p_videoram(*this, "videoram")
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
{ } { }
public: public:
virtual void machine_reset() override; virtual void machine_reset() override;

View File

@ -41,8 +41,6 @@
#include "machine/ins8250.h" #include "machine/ins8250.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
#define H19_CLOCK (XTAL_12_288MHz / 6) #define H19_CLOCK (XTAL_12_288MHz / 6)
#define H19_BEEP_FRQ (H19_CLOCK / 1024) #define H19_BEEP_FRQ (H19_CLOCK / 1024)
@ -407,7 +405,7 @@ static MACHINE_CONFIG_START( h19, h19_state )
MCFG_DEVICE_ADD("ins8250", INS8250, XTAL_12_288MHz / 4) // 3.072mhz clock which gets divided down for the various baud rates MCFG_DEVICE_ADD("ins8250", INS8250, XTAL_12_288MHz / 4) // 3.072mhz clock which gets divided down for the various baud rates
MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", 0)) // interrupt MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", 0)) // interrupt
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(h19_state, h19_kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(h19_state, h19_kbd_put))
/* sound hardware */ /* sound hardware */

View File

@ -28,10 +28,10 @@ class homez80_state : public driver_device
{ {
public: public:
homez80_state(const machine_config &mconfig, device_type type, const char *tag) homez80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, , m_p_videoram(*this, "videoram")
m_p_videoram(*this, "p_videoram"){ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
DECLARE_READ8_MEMBER( homez80_keyboard_r ); DECLARE_READ8_MEMBER( homez80_keyboard_r );
@ -55,7 +55,7 @@ READ8_MEMBER( homez80_state::homez80_keyboard_r )
static ADDRESS_MAP_START(homez80_mem, AS_PROGRAM, 8, homez80_state) static ADDRESS_MAP_START(homez80_mem, AS_PROGRAM, 8, homez80_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x0000, 0x0fff ) AM_ROM // Monitor AM_RANGE( 0x0000, 0x0fff ) AM_ROM // Monitor
AM_RANGE( 0x2000, 0x23ff ) AM_RAM AM_SHARE("p_videoram") // Video RAM AM_RANGE( 0x2000, 0x23ff ) AM_RAM AM_SHARE("videoram") // Video RAM
AM_RANGE( 0x7020, 0x702f ) AM_READ(homez80_keyboard_r) AM_RANGE( 0x7020, 0x702f ) AM_READ(homez80_keyboard_r)
AM_RANGE( 0x8000, 0xffff ) AM_RAM // 32 K RAM AM_RANGE( 0x8000, 0xffff ) AM_RAM // 32 K RAM
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -13,8 +13,6 @@
#include "video/i8275.h" #include "video/i8275.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class ipds_state : public driver_device class ipds_state : public driver_device
{ {
public: public:
@ -146,7 +144,7 @@ static MACHINE_CONFIG_START( ipds, ipds_state )
MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_CHARACTER_WIDTH(6)
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(ipds_state, crtc_display_pixels) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(ipds_state, crtc_display_pixels)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(ipds_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(ipds_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -27,9 +27,6 @@ ToDo:
#include "machine/wd_fdc.h" #include "machine/wd_fdc.h"
#include "includes/jupiter.h" #include "includes/jupiter.h"
#define TERMINAL_TAG "terminal"
#define KEYBOARD_TAG "keyboard"
//************************************************************************** //**************************************************************************
// ADDRESS MAPS // ADDRESS MAPS
@ -75,7 +72,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( jupiter3_mem, AS_PROGRAM, 8, jupiter3_state ) static ADDRESS_MAP_START( jupiter3_mem, AS_PROGRAM, 8, jupiter3_state )
AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("p_ram") AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("p_ram")
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0) AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0)
AM_RANGE(0xf000, 0xffff) AM_RAM AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -229,7 +226,7 @@ static MACHINE_CONFIG_START( jupiter, jupiter2_state )
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
// internal ram // internal ram
MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_ADD(RAM_TAG)
@ -263,7 +260,7 @@ static MACHINE_CONFIG_START( jupiter3, jupiter3_state )
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(jupiter3_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(jupiter3_state, kbd_put))
// internal ram // internal ram

View File

@ -14,15 +14,13 @@
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class k8915_state : public driver_device class k8915_state : public driver_device
{ {
public: public:
k8915_state(const machine_config &mconfig, device_type type, const char *tag) k8915_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_p_videoram(*this, "p_videoram") m_p_videoram(*this, "videoram")
{ {
} }
@ -67,7 +65,7 @@ WRITE8_MEMBER( k8915_state::k8915_a8_w )
static ADDRESS_MAP_START(k8915_mem, AS_PROGRAM, 8, k8915_state) static ADDRESS_MAP_START(k8915_mem, AS_PROGRAM, 8, k8915_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot")
AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1800, 0xffff) AM_RAM AM_RANGE(0x1800, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -166,7 +164,7 @@ static MACHINE_CONFIG_START( k8915, k8915_state )
MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_PALETTE_ADD_MONOCHROME("palette")
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(k8915_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(k8915_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -51,8 +51,6 @@
#include "includes/llc.h" #include "includes/llc.h"
#include "llc1.lh" #include "llc1.lh"
#define KEYBOARD_TAG "keyboard"
/* Address maps */ /* Address maps */
static ADDRESS_MAP_START( llc1_mem, AS_PROGRAM, 8, llc_state ) static ADDRESS_MAP_START( llc1_mem, AS_PROGRAM, 8, llc_state )
AM_RANGE(0x0000, 0x07ff) AM_ROM // Monitor ROM AM_RANGE(0x0000, 0x07ff) AM_ROM // Monitor ROM
@ -234,7 +232,7 @@ static MACHINE_CONFIG_START( llc1, llc_state )
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg1)) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg1))
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3)) MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3))
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(llc_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(llc_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -68,7 +68,7 @@ public:
m_floppy0(*this, "fd1797:0:5dd"), m_floppy0(*this, "fd1797:0:5dd"),
m_floppy1(*this, "fd1797:1:5dd"), m_floppy1(*this, "fd1797:1:5dd"),
m_apb(*this, "apb"), m_apb(*this, "apb"),
m_p_videoram(*this, "p_videoram"), m_p_videoram(*this, "videoram"),
m_palette(*this, "palette") m_palette(*this, "palette")
{ {
} }
@ -312,13 +312,13 @@ B/W, 128K cards, 3 cards => 512K of memory:
static ADDRESS_MAP_START(m20_program_mem, AS_PROGRAM, 16, m20_state) static ADDRESS_MAP_START(m20_program_mem, AS_PROGRAM, 16, m20_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("p_videoram") AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram")
AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000) AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START(m20_data_mem, AS_DATA, 16, m20_state) static ADDRESS_MAP_START(m20_data_mem, AS_DATA, 16, m20_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("p_videoram") AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram")
AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000) AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000)
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -18,8 +18,8 @@ class m79152pc_state : public driver_device
public: public:
m79152pc_state(const machine_config &mconfig, device_type type, const char *tag) m79152pc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_p_videoram(*this, "p_videoram"), m_p_videoram(*this, "videoram"),
m_p_attributes(*this, "p_attributes"), m_p_attributes(*this, "attributes"),
m_maincpu(*this, "maincpu") { } m_maincpu(*this, "maincpu") { }
uint8_t *m_p_chargen; uint8_t *m_p_chargen;
@ -35,8 +35,8 @@ static ADDRESS_MAP_START(m79152pc_mem, AS_PROGRAM, 8, m79152pc_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("p_attributes") AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("attributes")
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( m79152pc_io, AS_IO, 8, m79152pc_state) static ADDRESS_MAP_START( m79152pc_io, AS_IO, 8, m79152pc_state)

View File

@ -18,7 +18,7 @@ public:
mes_state(const machine_config &mconfig, device_type type, const char *tag) mes_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_p_videoram(*this, "p_videoram"){ } m_p_videoram(*this, "videoram"){ }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
const uint8_t *m_p_chargen; const uint8_t *m_p_chargen;
@ -34,7 +34,7 @@ static ADDRESS_MAP_START(mes_mem, AS_PROGRAM, 8, mes_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1000, 0xefff) AM_RAM AM_RANGE(0x1000, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("videoram")
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mes_io, AS_IO, 8, mes_state) static ADDRESS_MAP_START( mes_io, AS_IO, 8, mes_state)

View File

@ -20,8 +20,6 @@
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class modellot_state : public driver_device class modellot_state : public driver_device
{ {
public: public:
@ -167,7 +165,7 @@ static MACHINE_CONFIG_START( modellot, modellot_state )
MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_PALETTE_ADD_MONOCHROME("palette")
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(modellot_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(modellot_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -26,8 +26,6 @@
#include "machine/clock.h" #include "machine/clock.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class mx2178_state : public driver_device class mx2178_state : public driver_device
{ {
public: public:
@ -181,7 +179,7 @@ static MACHINE_CONFIG_START( mx2178, mx2178_state )
/// TODO: hook up acia to keyboard and memory map /// TODO: hook up acia to keyboard and memory map
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(mx2178_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(mx2178_state, kbd_put))
MCFG_DEVICE_ADD("acia_clock", CLOCK, 614400) MCFG_DEVICE_ADD("acia_clock", CLOCK, 614400)

View File

@ -244,7 +244,7 @@ static ADDRESS_MAP_START( mz80k_mem, AS_PROGRAM, 8, mz80_state )
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1000, 0xcfff) AM_RAM AM_SHARE("p_ram") // 48 KB of RAM AM_RANGE(0x1000, 0xcfff) AM_RAM AM_SHARE("p_ram") // 48 KB of RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("p_videoram") // Video RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram") // Video RAM
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) /* PPIA 8255 */ AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) /* PPIA 8255 */
AM_RANGE(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) /* PIT 8253 */ AM_RANGE(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) /* PIT 8253 */
AM_RANGE(0xe008, 0xe00b) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w) AM_RANGE(0xe008, 0xe00b) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w)

View File

@ -54,9 +54,6 @@ Usage of terminal:
#include "machine/keyboard.h" #include "machine/keyboard.h"
#include "machine/terminal.h" #include "machine/terminal.h"
#define KEYBOARD_TAG "keyboard"
#define TERMINAL_TAG "terminal"
class okean240_state : public driver_device class okean240_state : public driver_device
{ {
public: public:
@ -70,7 +67,7 @@ public:
m_term_data(0), m_term_data(0),
m_j(0), m_j(0),
m_scroll(0), m_scroll(0),
m_p_videoram(*this, "p_videoram"), m_p_videoram(*this, "videoram"),
m_io_modifiers(*this, "MODIFIERS"), m_io_modifiers(*this, "MODIFIERS"),
m_maincpu(*this, "maincpu") m_maincpu(*this, "maincpu")
{ {
@ -206,7 +203,7 @@ static ADDRESS_MAP_START(okean240_mem, AS_PROGRAM, 8, okean240_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
AM_RANGE(0x0800, 0x3fff) AM_RAM AM_RANGE(0x0800, 0x3fff) AM_RAM
AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x8000, 0xbfff) AM_RAM AM_RANGE(0x8000, 0xbfff) AM_RAM
AM_RANGE(0xc000, 0xffff) AM_ROM AM_RANGE(0xc000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -243,7 +240,7 @@ static ADDRESS_MAP_START(okean240t_io, AS_IO, 8, okean240_state)
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x42) AM_READWRITE(okean240_keyboard_r,okean240_keyboard_w) AM_RANGE(0x40, 0x42) AM_READWRITE(okean240_keyboard_r,okean240_keyboard_w)
AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r) AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r)
AM_RANGE(0xa0, 0xa0) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write) AM_RANGE(0xa0, 0xa0) AM_DEVWRITE("terminal", generic_terminal_device, write)
AM_RANGE(0xa0, 0xa0) AM_READ(term_r) AM_RANGE(0xa0, 0xa0) AM_READ(term_r)
AM_RANGE(0xa1, 0xa1) AM_READ(term_status_r) AM_RANGE(0xa1, 0xa1) AM_READ(term_status_r)
AM_RANGE(0xc0, 0xc0) AM_WRITE(scroll_w) AM_RANGE(0xc0, 0xc0) AM_WRITE(scroll_w)
@ -490,7 +487,7 @@ static MACHINE_CONFIG_START( okean240t, okean240_state )
MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_PALETTE_ADD_MONOCHROME("palette")
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -498,8 +495,8 @@ static MACHINE_CONFIG_DERIVED( okean240a, okean240t )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(okean240a_io) MCFG_CPU_IO_MAP(okean240a_io)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240a) MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240a)
MCFG_DEVICE_REMOVE(TERMINAL_TAG) MCFG_DEVICE_REMOVE("terminal")
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -507,8 +504,8 @@ static MACHINE_CONFIG_DERIVED( okean240, okean240t )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(okean240_io) MCFG_CPU_IO_MAP(okean240_io)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240) MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240)
MCFG_DEVICE_REMOVE(TERMINAL_TAG) MCFG_DEVICE_REMOVE("terminal")
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -37,8 +37,6 @@
#define LOG 1 #define LOG 1
#define KEYBOARD_TAG "keyboard"
class phunsy_state : public driver_device class phunsy_state : public driver_device
{ {
public: public:
@ -363,7 +361,7 @@ static MACHINE_CONFIG_START( phunsy, phunsy_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(phunsy_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(phunsy_state, kbd_put))
MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_ADD( "cassette" )

View File

@ -38,7 +38,7 @@ public:
plan80_state(const machine_config &mconfig, device_type type, const char *tag) plan80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "p_videoram") , m_p_videoram(*this, "videoram")
{ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
@ -88,7 +88,7 @@ static ADDRESS_MAP_START(plan80_mem, AS_PROGRAM, 8, plan80_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
AM_RANGE(0x0800, 0xefff) AM_RAM AM_RANGE(0x0800, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xf800, 0xffff) AM_ROM AM_RANGE(0xf800, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -41,8 +41,6 @@
#include "machine/keyboard.h" #include "machine/keyboard.h"
#include "sound/speaker.h" #include "sound/speaker.h"
#define KEYBOARD_TAG "keyboard"
class poly_state : public driver_device class poly_state : public driver_device
{ {
public: public:
@ -198,7 +196,7 @@ static MACHINE_CONFIG_START( poly, poly_state )
MCFG_DEVICE_ADD("adlc", MC6854, 0) MCFG_DEVICE_ADD("adlc", MC6854, 0)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(poly_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(poly_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -147,7 +147,7 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_sound(*this, "pv1000_sound"), m_sound(*this, "pv1000_sound"),
m_cart(*this, "cartslot"), m_cart(*this, "cartslot"),
m_p_videoram(*this, "p_videoram"), m_p_videoram(*this, "videoram"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"), m_screen(*this, "screen"),
m_palette(*this, "palette") m_palette(*this, "palette")
@ -187,7 +187,7 @@ public:
static ADDRESS_MAP_START( pv1000, AS_PROGRAM, 8, pv1000_state ) static ADDRESS_MAP_START( pv1000, AS_PROGRAM, 8, pv1000_state )
//AM_RANGE(0x0000, 0x7fff) // mapped by the cartslot //AM_RANGE(0x0000, 0x7fff) // mapped by the cartslot
AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("p_videoram") AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(gfxram_w) AM_REGION("gfxram", 0) AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(gfxram_w) AM_REGION("gfxram", 0)
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -38,9 +38,6 @@ Unable to proceed due to no info available (& in English).
#include "machine/keyboard.h" #include "machine/keyboard.h"
#include "machine/terminal.h" #include "machine/terminal.h"
#define TERMINAL_TAG "terminal"
#define KEYBOARD_TAG "keyboard"
class sapi1_state : public driver_device class sapi1_state : public driver_device
{ {
public: public:
@ -226,7 +223,7 @@ static ADDRESS_MAP_START( sapi3a_io, AS_IO, 8, sapi1_state )
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w) AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w)
AM_RANGE(0x12, 0x12) AM_READ(sapi2_keyboard_data_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write) AM_RANGE(0x12, 0x12) AM_READ(sapi2_keyboard_data_r) AM_DEVWRITE("terminal", generic_terminal_device, write)
AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w) AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -560,7 +557,7 @@ static MACHINE_CONFIG_DERIVED( sapi2, sapi1 )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(sapi2_mem) MCFG_CPU_PROGRAM_MAP(sapi2_mem)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -600,7 +597,7 @@ static MACHINE_CONFIG_START( sapi3a, sapi1_state )
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 ) MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 )
/* video hardware */ /* video hardware */
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put)) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put))
/* internal ram */ /* internal ram */

View File

@ -17,7 +17,7 @@
static ADDRESS_MAP_START(specialist_mem, AS_PROGRAM, 8, special_state ) static ADDRESS_MAP_START(specialist_mem, AS_PROGRAM, 8, special_state )
AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
AM_RANGE( 0x3000, 0x8fff ) AM_RAM // RAM AM_RANGE( 0x3000, 0x8fff ) AM_RAM // RAM
AM_RANGE( 0x9000, 0xbfff ) AM_RAM AM_SHARE("p_videoram") // Video RAM AM_RANGE( 0x9000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM
AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM
AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -25,7 +25,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(specialp_mem, AS_PROGRAM, 8, special_state ) static ADDRESS_MAP_START(specialp_mem, AS_PROGRAM, 8, special_state )
AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
AM_RANGE( 0x3000, 0x7fff ) AM_RAM // RAM AM_RANGE( 0x3000, 0x7fff ) AM_RAM // RAM
AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_SHARE("p_videoram") // Video RAM AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM
AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM
AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -62,8 +62,6 @@ Z - more scan lines per row (cursor is bigger)
#include "sound/beep.h" #include "sound/beep.h"
#include "tavernie.lh" #include "tavernie.lh"
#define KEYBOARD_TAG "keyboard"
class tavernie_state : public driver_device class tavernie_state : public driver_device
{ {
public: public:
@ -356,7 +354,7 @@ static MACHINE_CONFIG_DERIVED( ivg09, cpu09 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(tavernie_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(tavernie_state, kbd_put))
MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) // unknown clock MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) // unknown clock

View File

@ -27,8 +27,6 @@ TODO:
#include "machine/i8255.h" #include "machine/i8255.h"
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class tk80bs_state : public driver_device class tk80bs_state : public driver_device
{ {
public: public:
@ -189,7 +187,7 @@ static MACHINE_CONFIG_START( tk80bs, tk80bs_state )
MCFG_I8255_IN_PORTA_CB(READ8(tk80bs_state, port_a_r)) MCFG_I8255_IN_PORTA_CB(READ8(tk80bs_state, port_a_r))
MCFG_I8255_IN_PORTB_CB(READ8(tk80bs_state, port_b_r)) MCFG_I8255_IN_PORTB_CB(READ8(tk80bs_state, port_b_r))
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(tk80bs_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(tk80bs_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -143,7 +143,7 @@ There don't seem to be any JV1 boot disks for Model III/4.
static ADDRESS_MAP_START( trs80_map, AS_PROGRAM, 8, trs80_state ) static ADDRESS_MAP_START( trs80_map, AS_PROGRAM, 8, trs80_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x3800, 0x38ff) AM_READ(trs80_keyboard_r) AM_RANGE(0x3800, 0x38ff) AM_READ(trs80_keyboard_r)
AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("p_videoram") AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x4000, 0x7fff) AM_RAM AM_RANGE(0x4000, 0x7fff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -166,7 +166,7 @@ static ADDRESS_MAP_START( model1_map, AS_PROGRAM, 8, trs80_state )
AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w)
AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w)
AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r) AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r)
AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("p_videoram") AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x4000, 0xffff) AM_RAM AM_RANGE(0x4000, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -274,7 +274,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( meritum_map, AS_PROGRAM, 8, trs80_state ) static ADDRESS_MAP_START( meritum_map, AS_PROGRAM, 8, trs80_state )
AM_RANGE(0x0000, 0x37ff) AM_ROM AM_RANGE(0x0000, 0x37ff) AM_ROM
AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r) AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r)
AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("p_videoram") AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x4000, 0xffff) AM_RAM AM_RANGE(0x4000, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -44,7 +44,7 @@ static ADDRESS_MAP_START( ut88_mem, AS_PROGRAM, 8, ut88_state )
AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank
AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM
AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // Video RAM (not used) AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // Video RAM (not used)
AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("p_videoram") // Video RAM AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("videoram") // Video RAM
AM_RANGE( 0xf400, 0xf7ff ) AM_RAM // System RAM AM_RANGE( 0xf400, 0xf7ff ) AM_RAM // System RAM
AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -60,8 +60,6 @@ ToDo:
#include "sound/speaker.h" #include "sound/speaker.h"
#include "machine/wd_fdc.h" #include "machine/wd_fdc.h"
#define KEYBOARD_TAG "keyboard"
class v6809_state : public driver_device class v6809_state : public driver_device
{ {
public: public:
@ -323,7 +321,7 @@ static MACHINE_CONFIG_START( v6809, v6809_state )
MCFG_MC6845_UPDATE_ROW_CB(v6809_state, crtc_update_row) MCFG_MC6845_UPDATE_ROW_CB(v6809_state, crtc_update_row)
MCFG_MC6845_ADDR_CHANGED_CB(v6809_state, crtc_update_addr) MCFG_MC6845_ADDR_CHANGED_CB(v6809_state, crtc_update_addr)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(v6809_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(v6809_state, kbd_put))
// port A = drive select and 2 control lines ; port B = keyboard // port A = drive select and 2 control lines ; port B = keyboard

View File

@ -39,8 +39,6 @@ ToDo:
// temporary // temporary
#include "machine/keyboard.h" #include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class z9001_state : public driver_device class z9001_state : public driver_device
{ {
public: public:
@ -227,7 +225,7 @@ static MACHINE_CONFIG_START( z9001, z9001_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */ /* Devices */
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(z9001_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(z9001_state, kbd_put))
MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10)) MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10))

View File

@ -23,8 +23,6 @@
#include "machine/keyboard.h" #include "machine/keyboard.h"
#include "sound/beep.h" #include "sound/beep.h"
#define KEYBOARD_TAG "keyboard"
class zrt80_state : public driver_device class zrt80_state : public driver_device
{ {
public: public:
@ -302,7 +300,7 @@ static MACHINE_CONFIG_START( zrt80, zrt80_state )
MCFG_DEVICE_ADD( "ins8250", INS8250, 2457600 ) MCFG_DEVICE_ADD( "ins8250", INS8250, 2457600 )
MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(zrt80_state, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(zrt80_state, kbd_put))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -1,73 +1,103 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Victor Trucco,Steve Ellenoff,Phil Stroffolino,Tatsuyuki Satoh,Tomasz Slanina,Nicola Salmoria // copyright-holders:Victor Trucco,Steve Ellenoff,Phil Stroffolino,Tatsuyuki Satoh,Tomasz Slanina,Nicola Salmoria,Vas Crabb
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "sound/msm5205.h" #include "sound/msm5205.h"
class gladiatr_state : public driver_device
class gladiatr_state_base : public driver_device
{ {
public: public:
gladiatr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_subcpu(*this, "sub"),
m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_nvram(*this, "nvram") ,
m_spriteram(*this, "spriteram"),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_textram(*this, "textram"),
m_generic_paletteram_8(*this, "paletteram") { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<cpu_device> m_subcpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<uint8_t> m_nvram;
required_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_textram;
required_shared_ptr<uint8_t> m_generic_paletteram_8;
int m_data1;
int m_data2;
int m_flag1;
int m_flag2;
int m_video_attributes;
int m_fg_scrollx;
int m_fg_scrolly;
int m_bg_scrollx;
int m_bg_scrolly;
int m_sprite_bank;
int m_sprite_buffer;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
int m_fg_tile_bank;
int m_bg_tile_bank;
// common
DECLARE_WRITE8_MEMBER(videoram_w); DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(colorram_w); DECLARE_WRITE8_MEMBER(colorram_w);
DECLARE_WRITE8_MEMBER(textram_w); DECLARE_WRITE8_MEMBER(textram_w);
DECLARE_WRITE8_MEMBER(paletteram_w); DECLARE_WRITE8_MEMBER(paletteram_w);
DECLARE_WRITE8_MEMBER(spritebuffer_w); DECLARE_WRITE8_MEMBER(spritebuffer_w);
// gladiator specific protected:
DECLARE_READ8_MEMBER(gladiator_dsw1_r); gladiatr_state_base(const machine_config &mconfig, device_type type, const char *tag)
DECLARE_READ8_MEMBER(gladiator_dsw2_r); : driver_device(mconfig, type, tag)
DECLARE_READ8_MEMBER(gladiator_controls_r); , m_maincpu(*this, "maincpu")
DECLARE_READ8_MEMBER(gladiator_button3_r); , m_subcpu(*this, "sub")
, m_audiocpu(*this, "audiocpu")
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
, m_msm(*this, "msm")
, m_soundlatch(*this, "soundlatch")
, m_videoram(*this, "videoram")
, m_colorram(*this, "colorram")
, m_textram(*this, "textram")
, m_paletteram(*this, "paletteram")
, m_spriteram(*this, "spriteram")
, m_video_attributes(0)
, m_fg_scrolly(0)
, m_fg_tile_bank(0)
, m_bg_tile_bank(0)
, m_sprite_bank(0)
, m_sprite_buffer(0)
, m_fg_tilemap(nullptr)
, m_bg_tilemap(nullptr)
{
}
TILE_GET_INFO_MEMBER(bg_get_tile_info);
TILE_GET_INFO_MEMBER(fg_get_tile_info);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<msm5205_device> m_msm;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_textram;
required_shared_ptr<uint8_t> m_paletteram;
required_shared_ptr<uint8_t> m_spriteram;
int m_video_attributes;
int m_fg_scrolly;
int m_fg_tile_bank;
int m_bg_tile_bank;
int m_sprite_bank;
int m_sprite_buffer;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
};
class gladiatr_state : public gladiatr_state_base
{
public:
gladiatr_state(const machine_config &mconfig, device_type type, const char *tag)
: gladiatr_state_base(mconfig, type, tag)
, m_dsw1(*this, "DSW1")
, m_dsw2(*this, "DSW2")
, m_in0(*this, "IN0")
, m_in1(*this, "IN1")
, m_in2(*this, "IN2")
, m_coins(*this, "COINS")
, m_tclk_val(false)
, m_in0_val(0xff)
, m_in1_val(0xff)
, m_cctl_p1(0xff)
, m_cctl_p2(0xff)
, m_ucpu_p1(0xff)
, m_csnd_p1(0xff)
, m_fg_scrollx(0)
, m_bg_scrollx(0)
, m_bg_scrolly(0)
{
}
DECLARE_WRITE8_MEMBER(gladiatr_spritebank_w); DECLARE_WRITE8_MEMBER(gladiatr_spritebank_w);
DECLARE_WRITE8_MEMBER(gladiatr_video_registers_w); DECLARE_WRITE8_MEMBER(gladiatr_video_registers_w);
DECLARE_WRITE8_MEMBER(gladiatr_bankswitch_w); DECLARE_WRITE8_MEMBER(gladiatr_bankswitch_w);
DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w); DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w);
DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r); DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r);
@ -77,7 +107,58 @@ public:
DECLARE_WRITE8_MEMBER(gladiator_adpcm_w); DECLARE_WRITE8_MEMBER(gladiator_adpcm_w);
DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq);
// ppking specific DECLARE_WRITE_LINE_MEMBER(tclk_w);
DECLARE_READ8_MEMBER(cctl_t_r);
DECLARE_READ8_MEMBER(cctl_p1_r);
DECLARE_READ8_MEMBER(cctl_p2_r);
DECLARE_READ8_MEMBER(ccpu_t_r);
DECLARE_WRITE8_MEMBER(ccpu_p2_w);
DECLARE_READ8_MEMBER(tclk_r);
DECLARE_READ8_MEMBER(ucpu_t1_r);
DECLARE_READ8_MEMBER(ucpu_p1_r);
DECLARE_WRITE8_MEMBER(ucpu_p1_w);
DECLARE_READ8_MEMBER(ucpu_p2_r);
DECLARE_READ8_MEMBER(csnd_t1_r);
DECLARE_READ8_MEMBER(csnd_p1_r);
DECLARE_WRITE8_MEMBER(csnd_p1_w);
DECLARE_READ8_MEMBER(csnd_p2_r);
DECLARE_DRIVER_INIT(gladiatr);
DECLARE_MACHINE_RESET(gladiator);
DECLARE_VIDEO_START(gladiatr);
uint32_t screen_update_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void swap_block(uint8_t *src1,uint8_t *src2,int len);
private:
required_ioport m_dsw1, m_dsw2;
required_ioport m_in0, m_in1, m_in2;
required_ioport m_coins;
bool m_tclk_val;
u8 m_in0_val, m_in1_val;
u8 m_cctl_p1, m_cctl_p2;
u8 m_ucpu_p1, m_csnd_p1;
int m_fg_scrollx;
int m_bg_scrollx;
int m_bg_scrolly;
};
class ppking_state : public gladiatr_state_base
{
public:
ppking_state(const machine_config &mconfig, device_type type, const char *tag)
: gladiatr_state_base(mconfig, type, tag)
, m_nvram(*this, "nvram")
, m_data1(0)
, m_data2(0)
, m_flag1(0)
, m_flag2(0)
{
}
DECLARE_READ8_MEMBER(ppking_f1_r); DECLARE_READ8_MEMBER(ppking_f1_r);
DECLARE_READ8_MEMBER(ppking_f6a3_r); DECLARE_READ8_MEMBER(ppking_f6a3_r);
DECLARE_WRITE8_MEMBER(ppking_qx0_w); DECLARE_WRITE8_MEMBER(ppking_qx0_w);
@ -90,19 +171,18 @@ public:
DECLARE_READ8_MEMBER(ppking_qx1_r); DECLARE_READ8_MEMBER(ppking_qx1_r);
DECLARE_WRITE8_MEMBER(ppking_video_registers_w); DECLARE_WRITE8_MEMBER(ppking_video_registers_w);
DECLARE_DRIVER_INIT(gladiatr);
DECLARE_DRIVER_INIT(ppking); DECLARE_DRIVER_INIT(ppking);
TILE_GET_INFO_MEMBER(bg_get_tile_info);
TILE_GET_INFO_MEMBER(fg_get_tile_info);
DECLARE_MACHINE_RESET(ppking); DECLARE_MACHINE_RESET(ppking);
DECLARE_VIDEO_START(ppking); DECLARE_VIDEO_START(ppking);
DECLARE_MACHINE_RESET(gladiator);
DECLARE_VIDEO_START(gladiatr);
uint32_t screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); private:
void swap_block(uint8_t *src1,uint8_t *src2,int len); required_shared_ptr<uint8_t> m_nvram;
u8 m_data1;
u8 m_data2;
u8 m_flag1;
u8 m_flag2;
}; };

View File

@ -17,43 +17,42 @@ class jupiter2_state : public driver_device
{ {
public: public:
jupiter2_state(const machine_config &mconfig, device_type type, const char *tag) jupiter2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, MCM6571AP_TAG) , m_maincpu(*this, MCM6571AP_TAG)
{ } { }
required_device<cpu_device> m_maincpu;
virtual void machine_start() override;
DECLARE_DRIVER_INIT(jupiter); DECLARE_DRIVER_INIT(jupiter);
private:
required_device<cpu_device> m_maincpu;
virtual void machine_start() override;
}; };
class jupiter3_state : public driver_device class jupiter3_state : public driver_device
{ {
public: public:
jupiter3_state(const machine_config &mconfig, device_type type, const char *tag) jupiter3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_maincpu(*this, Z80_TAG), , m_maincpu(*this, Z80_TAG)
m_p_videoram(*this, "p_videoram"), , m_p_videoram(*this, "videoram")
m_p_ram(*this, "p_ram") , m_p_ram(*this, "p_ram")
{ } { }
required_device<cpu_device> m_maincpu;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(jupiter3);
DECLARE_WRITE8_MEMBER(kbd_put); DECLARE_WRITE8_MEMBER(kbd_put);
DECLARE_READ8_MEMBER(status_r); DECLARE_READ8_MEMBER(status_r);
DECLARE_READ8_MEMBER(key_r); DECLARE_READ8_MEMBER(key_r);
DECLARE_READ8_MEMBER(ff_r); DECLARE_READ8_MEMBER(ff_r);
uint8_t m_term_data;
private:
required_device<cpu_device> m_maincpu;
uint8_t m_term_data;
required_shared_ptr<uint8_t> m_p_videoram; required_shared_ptr<uint8_t> m_p_videoram;
required_shared_ptr<uint8_t> m_p_ram; required_shared_ptr<uint8_t> m_p_ram;
const uint8_t *m_p_chargen; const uint8_t *m_p_chargen;
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void video_start() override; virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(jupiter3);
}; };
#endif #endif

View File

@ -40,7 +40,7 @@ public:
m_floppy3(*this, "fdc:3"), m_floppy3(*this, "fdc:3"),
m_speaker(*this, "speaker"), m_speaker(*this, "speaker"),
m_cassette(*this, "cassette"), m_cassette(*this, "cassette"),
m_p_videoram(*this, "p_videoram"), m_p_videoram(*this, "videoram"),
m_region_maincpu(*this, "maincpu"), m_region_maincpu(*this, "maincpu"),
m_io_config(*this, "CONFIG"), m_io_config(*this, "CONFIG"),
m_io_line0(*this, "LINE0"), m_io_line0(*this, "LINE0"),

View File

@ -112,8 +112,6 @@ public:
uint8_t m_lx383_scan_counter; uint8_t m_lx383_scan_counter;
uint8_t m_lx383_key[LX383_KEYS]; uint8_t m_lx383_key[LX383_KEYS];
int m_lx383_downsampler; int m_lx383_downsampler;
int m_nmi_delay_counter;
int m_reset_delay_counter;
uint8_t m_lx385_ctrl; uint8_t m_lx385_ctrl;
emu_timer *m_cassette_timer; emu_timer *m_cassette_timer;
z80ne_cass_data_t m_cass_data; z80ne_cass_data_t m_cass_data;
@ -126,9 +124,6 @@ public:
DECLARE_WRITE8_MEMBER(lx385_ctrl_w); DECLARE_WRITE8_MEMBER(lx385_ctrl_w);
DECLARE_READ8_MEMBER(lx388_data_r); DECLARE_READ8_MEMBER(lx388_data_r);
DECLARE_READ8_MEMBER(lx388_read_field_sync); DECLARE_READ8_MEMBER(lx388_read_field_sync);
DECLARE_DIRECT_UPDATE_MEMBER(z80ne_default);
DECLARE_DIRECT_UPDATE_MEMBER(z80ne_nmi_delay_count);
DECLARE_DIRECT_UPDATE_MEMBER(z80ne_reset_delay_count);
DECLARE_DRIVER_INIT(z80netf); DECLARE_DRIVER_INIT(z80netf);
DECLARE_DRIVER_INIT(z80net); DECLARE_DRIVER_INIT(z80net);
DECLARE_DRIVER_INIT(z80netb); DECLARE_DRIVER_INIT(z80netb);
@ -153,6 +148,8 @@ public:
DECLARE_WRITE8_MEMBER(lx390_fdc_w); DECLARE_WRITE8_MEMBER(lx390_fdc_w);
protected: protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
optional_device<floppy_connector> m_floppy0; optional_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1; optional_device<floppy_connector> m_floppy1;
@ -183,6 +180,9 @@ protected:
optional_ioport m_io_modifiers; optional_ioport m_io_modifiers;
optional_ioport m_io_config; optional_ioport m_io_config;
emu_timer *m_timer_nmi;
emu_timer *m_timer_reset;
cassette_image_device *cassette_device_image(); cassette_image_device *cassette_device_image();
void reset_lx388(); void reset_lx388();
void reset_lx382_banking(); void reset_lx382_banking();

View File

@ -2,8 +2,6 @@
// copyright-holders:Miodrag Milanovic // copyright-holders:Miodrag Milanovic
#include "teleprinter.h" #include "teleprinter.h"
#define KEYBOARD_TAG "keyboard"
static const uint8_t teleprinter_font[128*8] = static const uint8_t teleprinter_font[128*8] =
{ {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@ -215,7 +213,7 @@ MACHINE_CONFIG_FRAGMENT( generic_teleprinter )
MCFG_SCREEN_SIZE(TELEPRINTER_WIDTH*8, TELEPRINTER_HEIGHT*8) MCFG_SCREEN_SIZE(TELEPRINTER_WIDTH*8, TELEPRINTER_HEIGHT*8)
MCFG_SCREEN_VISIBLE_AREA(0, TELEPRINTER_WIDTH*8-1, 0, TELEPRINTER_HEIGHT*8-1) MCFG_SCREEN_VISIBLE_AREA(0, TELEPRINTER_WIDTH*8-1, 0, TELEPRINTER_HEIGHT*8-1)
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, teleprinter_device, tp_update) MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, teleprinter_device, tp_update)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put)) MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put))
MCFG_SPEAKER_STANDARD_MONO("bell") MCFG_SPEAKER_STANDARD_MONO("bell")

View File

@ -154,47 +154,18 @@ TIMER_CALLBACK_MEMBER(z80ne_state::z80ne_kbd_scan)
} }
} }
DIRECT_UPDATE_MEMBER(z80ne_state::z80ne_default) void z80ne_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{ {
return address; switch (id)
}
/*
* Handle NMI delay for single step instruction
*/
DIRECT_UPDATE_MEMBER(z80ne_state::z80ne_nmi_delay_count)
{
m_nmi_delay_counter--;
if (!m_nmi_delay_counter)
{ {
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this)); case 0:
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
break;
case 1:
// switch to RAM bank at address 0x0000
m_bank1->set_entry(0);
break;
} }
return address;
}
/*
* Handle delayed ROM/RAM banking at RESET
* after the first reset_delay_counter bytes have been read from ROM, switch the RAM back in
*/
DIRECT_UPDATE_MEMBER(z80ne_state::z80ne_reset_delay_count)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
/*
* TODO: when debugger is active, his memory access causes this callback
*
*/
if(!space.debugger_access())
m_reset_delay_counter--;
if (!m_reset_delay_counter)
{
/* remove this callback */
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this));
/* and switch to RAM bank at address 0x0000 */
m_bank1->set_entry( 0 ); /* RAM at 0x0000 (bank 1) */
}
return address;
} }
void z80ne_state::reset_lx388() void z80ne_state::reset_lx388()
@ -210,15 +181,13 @@ void z80ne_state::reset_lx382_banking()
m_bank2->set_entry(0); /* ep382 at 0x8000 */ m_bank2->set_entry(0); /* ep382 at 0x8000 */
/* after the first 3 bytes have been read from ROM, switch the RAM back in */ /* after the first 3 bytes have been read from ROM, switch the RAM back in */
m_reset_delay_counter = 2; m_timer_reset->adjust(m_maincpu->cycles_to_attotime(2));
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_reset_delay_count, this));
} }
void z80ne_state::reset_lx390_banking() void z80ne_state::reset_lx390_banking()
{ {
m_reset_delay_counter = 0; switch (m_io_config->read() & 0x07)
{
switch (m_io_config->read() & 0x07) {
case 0x01: /* EP382 Hex Monitor */ case 0x01: /* EP382 Hex Monitor */
if (VERBOSE) if (VERBOSE)
logerror("reset_lx390_banking: banking ep382\n"); logerror("reset_lx390_banking: banking ep382\n");
@ -226,9 +195,8 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400 */ m_bank2->set_entry(0); /* RAM at 0x0400 */
m_bank3->set_entry(1); /* ep382 at 0x8000 */ m_bank3->set_entry(1); /* ep382 at 0x8000 */
m_bank4->set_entry(0); /* RAM at 0xF000 */ m_bank4->set_entry(0); /* RAM at 0xF000 */
/* after the first 3 bytes have been read from ROM, switch the RAM back in */ // after the first 3 bytes have been read from ROM, switch the RAM back in
m_reset_delay_counter = 2; m_timer_reset->adjust(m_maincpu->cycles_to_attotime(2));
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_reset_delay_count, this));
break; break;
case 0x02: /* EP548 16k BASIC */ case 0x02: /* EP548 16k BASIC */
if (VERBOSE) if (VERBOSE)
@ -237,7 +205,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(1); /* ep548 at 0x0400-0x3FFF */ m_bank2->set_entry(1); /* ep548 at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */ m_bank3->set_entry(0); /* RAM at 0x8000 */
m_bank4->set_entry(0); /* RAM at 0xF000 */ m_bank4->set_entry(0); /* RAM at 0xF000 */
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this));
break; break;
case 0x03: /* EP390 Boot Loader for 5.5k floppy BASIC */ case 0x03: /* EP390 Boot Loader for 5.5k floppy BASIC */
if (VERBOSE) if (VERBOSE)
@ -246,7 +213,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */ m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */ m_bank3->set_entry(0); /* RAM at 0x8000 */
m_bank4->set_entry(1); /* ep390 at 0xF000 */ m_bank4->set_entry(1); /* ep390 at 0xF000 */
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this));
break; break;
case 0x04: /* EP1390 Boot Loader for NE DOS 1.0/1.5 */ case 0x04: /* EP1390 Boot Loader for NE DOS 1.0/1.5 */
if (VERBOSE) if (VERBOSE)
@ -255,7 +221,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */ m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */ m_bank3->set_entry(0); /* RAM at 0x8000 */
m_bank4->set_entry(2); /* ep1390 at 0xF000 */ m_bank4->set_entry(2); /* ep1390 at 0xF000 */
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this));
break; break;
case 0x05: /* EP2390 Boot Loader for NE DOS G.1 */ case 0x05: /* EP2390 Boot Loader for NE DOS G.1 */
if (VERBOSE) if (VERBOSE)
@ -264,7 +229,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */ m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */ m_bank3->set_entry(0); /* RAM at 0x8000 */
m_bank4->set_entry(3); /* ep2390 at 0xF000 */ m_bank4->set_entry(3); /* ep2390 at 0xF000 */
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_default, this));
break; break;
} }
@ -321,7 +285,6 @@ MACHINE_RESET_MEMBER(z80ne_state,z80ne_base)
m_ay31015->set_receiver_clock(m_cass_data.speed * 16.0); m_ay31015->set_receiver_clock(m_cass_data.speed * 16.0);
m_ay31015->set_transmitter_clock(m_cass_data.speed * 16.0); m_ay31015->set_transmitter_clock(m_cass_data.speed * 16.0);
m_nmi_delay_counter = 0;
lx385_ctrl_w(m_maincpu->space(AS_PROGRAM), 0, 0); lx385_ctrl_w(m_maincpu->space(AS_PROGRAM), 0, 0);
} }
@ -380,11 +343,14 @@ INPUT_CHANGED_MEMBER(z80ne_state::z80ne_nmi)
MACHINE_START_MEMBER(z80ne_state,z80ne) MACHINE_START_MEMBER(z80ne_state,z80ne)
{ {
LOG(("In MACHINE_START z80ne\n")); LOG(("In MACHINE_START z80ne\n"));
m_timer_nmi = timer_alloc(0);
m_timer_reset = timer_alloc(1);
m_lx385_ctrl = 0x1f; m_lx385_ctrl = 0x1f;
save_item(NAME(m_lx383_scan_counter)); save_item(NAME(m_lx383_scan_counter));
save_item(NAME(m_lx383_downsampler)); save_item(NAME(m_lx383_downsampler));
save_item(NAME(m_lx383_key)); save_item(NAME(m_lx383_key));
save_item(NAME(m_nmi_delay_counter));
m_cassette_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(z80ne_state::z80ne_cassette_tc),this)); m_cassette_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(z80ne_state::z80ne_cassette_tc),this));
machine().scheduler().timer_pulse( attotime::from_hz(1000), timer_expired_delegate(FUNC(z80ne_state::z80ne_kbd_scan),this)); machine().scheduler().timer_pulse( attotime::from_hz(1000), timer_expired_delegate(FUNC(z80ne_state::z80ne_kbd_scan),this));
} }
@ -465,9 +431,8 @@ WRITE8_MEMBER(z80ne_state::lx383_w)
output().set_digit_value( offset, data ^ 0xff ); output().set_digit_value( offset, data ^ 0xff );
else else
{ {
/* after writing to port 0xF8 and the first ~M1 cycles strike a NMI for single step execution */ // after writing to port 0xF8 and the first ~M1 cycles strike a NMI for single step execution
m_nmi_delay_counter = 1; m_timer_reset->adjust(m_maincpu->cycles_to_attotime(1));
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_nmi_delay_count, this));
} }
} }

View File

@ -57,10 +57,10 @@ marioo // (c) 1983 Nintendo of America
masao // bootleg masao // bootleg
// popeye.cpp // popeye.cpp
popeye // (c) 1982 popeye // (c) 1982
popeyeu // (c) 1982 popeyeu // (c) 1982
popeyef // (c) 1982 popeyef // (c) 1982
popeyebl // bootleg popeyebl // bootleg
/******************************************************************************/ /******************************************************************************/

View File

@ -16,7 +16,7 @@
***************************************************************************/ ***************************************************************************/
TILE_GET_INFO_MEMBER(gladiatr_state::bg_get_tile_info) TILE_GET_INFO_MEMBER(gladiatr_state_base::bg_get_tile_info)
{ {
uint8_t attr = m_colorram[tile_index]; uint8_t attr = m_colorram[tile_index];
@ -26,7 +26,7 @@ TILE_GET_INFO_MEMBER(gladiatr_state::bg_get_tile_info)
0); 0);
} }
TILE_GET_INFO_MEMBER(gladiatr_state::fg_get_tile_info) TILE_GET_INFO_MEMBER(gladiatr_state_base::fg_get_tile_info)
{ {
SET_TILE_INFO_MEMBER(0, SET_TILE_INFO_MEMBER(0,
m_textram[tile_index] + (m_fg_tile_bank << 8), m_textram[tile_index] + (m_fg_tile_bank << 8),
@ -42,10 +42,10 @@ TILE_GET_INFO_MEMBER(gladiatr_state::fg_get_tile_info)
***************************************************************************/ ***************************************************************************/
VIDEO_START_MEMBER(gladiatr_state,ppking) VIDEO_START_MEMBER(ppking_state,ppking)
{ {
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gladiatr_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64); m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ppking_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64);
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gladiatr_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64); m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ppking_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64);
m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0);
@ -90,44 +90,44 @@ VIDEO_START_MEMBER(gladiatr_state,gladiatr)
***************************************************************************/ ***************************************************************************/
WRITE8_MEMBER(gladiatr_state::videoram_w) WRITE8_MEMBER(gladiatr_state_base::videoram_w)
{ {
m_videoram[offset] = data; m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(gladiatr_state::colorram_w) WRITE8_MEMBER(gladiatr_state_base::colorram_w)
{ {
m_colorram[offset] = data; m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset); m_bg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(gladiatr_state::textram_w) WRITE8_MEMBER(gladiatr_state_base::textram_w)
{ {
m_textram[offset] = data; m_textram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset); m_fg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER(gladiatr_state::paletteram_w) WRITE8_MEMBER(gladiatr_state_base::paletteram_w)
{ {
int r,g,b; int r,g,b;
m_generic_paletteram_8[offset] = data; m_paletteram[offset] = data;
offset &= 0x3ff; offset &= 0x3ff;
r = (m_generic_paletteram_8[offset] >> 0) & 0x0f; r = (m_paletteram[offset] >> 0) & 0x0f;
g = (m_generic_paletteram_8[offset] >> 4) & 0x0f; g = (m_paletteram[offset] >> 4) & 0x0f;
b = (m_generic_paletteram_8[offset + 0x400] >> 0) & 0x0f; b = (m_paletteram[offset + 0x400] >> 0) & 0x0f;
r = (r << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 4) & 0x01); r = (r << 1) + ((m_paletteram[offset + 0x400] >> 4) & 0x01);
g = (g << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 5) & 0x01); g = (g << 1) + ((m_paletteram[offset + 0x400] >> 5) & 0x01);
b = (b << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 6) & 0x01); b = (b << 1) + ((m_paletteram[offset + 0x400] >> 6) & 0x01);
m_palette->set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b)); m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
} }
WRITE8_MEMBER(gladiatr_state::spritebuffer_w) WRITE8_MEMBER(gladiatr_state_base::spritebuffer_w)
{ {
m_sprite_buffer = data & 1; m_sprite_buffer = data & 1;
} }
@ -138,7 +138,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_spritebank_w)
} }
WRITE8_MEMBER(gladiatr_state::ppking_video_registers_w) WRITE8_MEMBER(ppking_state::ppking_video_registers_w)
{ {
switch (offset & 0x300) switch (offset & 0x300)
{ {
@ -204,7 +204,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_video_registers_w)
***************************************************************************/ ***************************************************************************/
void gladiatr_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) void gladiatr_state_base::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
int offs; int offs;
@ -254,7 +254,7 @@ void gladiatr_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
uint32_t gladiatr_state::screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) uint32_t ppking_state::screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
draw_sprites(bitmap,cliprect); draw_sprites(bitmap,cliprect);

53
src/tools/discrepancy-fixer.py Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/python
# Fix discrepancies in arcade ROM dump names, by Zoe Blade
# For Python 2
import xml.etree.ElementTree
print('Loading XML file...')
root = xml.etree.ElementTree.parse('arcade.xml').getroot()
print('Done.')
for childMachine in root.iter('machine'):
if not childMachine.get('cloneof'):
continue
for parentMachine in root.iter('machine'):
if not parentMachine.get('name') == childMachine.get('cloneof'):
continue
# Machine pair found
for childRom in childMachine.iter('rom'):
for parentRom in parentMachine.iter('rom'):
if not parentRom.get('sha1') == childRom.get('sha1'):
continue
# ROM pair found
if parentRom.get('name') == childRom.get('name'):
break
# The names don't match
sourceFilename = childMachine.get('sourcefile')
input = open(sourceFilename, 'r')
source = input.read()
input.close()
oldRomFilename = '"' + childRom.get('name') + '"'
newRomFilename = '"' + parentRom.get('name') + '"'
oldRomFilenamePadded = oldRomFilename.ljust(14, ' ')
newRomFilenamePadded = newRomFilename.ljust(14, ' ')
source = source.replace(oldRomFilenamePadded, newRomFilenamePadded) # Try to preserve fancy spacing where possible
source = source.replace(oldRomFilename, newRomFilename) # Fallback on just replacing the filename
output = open(sourceFilename, 'w')
output.write(source)
output.close()
print(sourceFilename + ': ' + oldRomFilename + ' -> ' + newRomFilename)

View File

@ -0,0 +1,34 @@
#!/usr/bin/python
# Find discrepancies in arcade ROM dump names, by Zoe Blade
# For Python 2
import xml.etree.ElementTree
print('Loading XML file...')
root = xml.etree.ElementTree.parse('arcade.xml').getroot()
print('Done.')
for childMachine in root.iter('machine'):
if not childMachine.get('cloneof'):
continue
for parentMachine in root.iter('machine'):
if not parentMachine.get('name') == childMachine.get('cloneof'):
continue
# Machine pair found
for childRom in childMachine.iter('rom'):
for parentRom in parentMachine.iter('rom'):
if not parentRom.get('sha1') == childRom.get('sha1'):
continue
# ROM pair found
if parentRom.get('name') == childRom.get('name'):
break
# The names don't match
print(childMachine.get('sourcefile') + ' ' + childMachine.get('name') + ': ' + childRom.get('name') + ' -> ' + parentRom.get('name'))