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

View File

@ -5035,8 +5035,8 @@ Info from Atariage and Atarimania
</part>
</software>
<software name="dodgeeme" cloneof="dodgeem">
<description>Dodge 'Em (PAL)</description>
<software name="dodgeeme2" cloneof="dodgeem">
<description>Dodge 'Em (PAL, Earlier)</description>
<year>1980</year>
<publisher>Atari</publisher>
<part name="cart" interface="a2600_cart">
@ -5046,13 +5046,16 @@ Info from Atariage and Atarimania
</part>
</software>
<software name="dodgeemef" cloneof="dodgeem">
<description>Dodge 'Em (PAL) (Fixed?)</description>
<year>1980</year>
<software name="dodgeeme" cloneof="dodgeem">
<description>Dodge 'Em (PAL, Later)</description>
<year>1987</year>
<publisher>Atari</publisher>
<info name="serial" value="CX2637" />
<part name="cart" interface="a2600_cart">
<feature name="pcb" value="C011885 REV F" />
<feature name="u1" value="" /> <!-- ROM -->
<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>
</part>
</software>
@ -7275,12 +7278,15 @@ Info from Atariage and Atarimania
</software>
<software name="haunted">
<description>Haunted House</description>
<year>1982</year>
<description>Haunted House (NTSC)</description>
<year>1981</year>
<publisher>Atari</publisher>
<info name="serial" value="CX2654" />
<part name="cart" interface="a2600_cart">
<feature name="pcb" value="C011885 REV F" />
<feature name="u1" value="" /> <!-- ROM -->
<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>
</part>
</software>
@ -10655,11 +10661,14 @@ Info from Atariage and Atarimania
<software name="outlawe" cloneof="outlaw">
<description>Outlaw (PAL)</description>
<year>1978</year>
<year>1979</year>
<publisher>Atari</publisher>
<info name="serial" value="CX-2605-P" />
<part name="cart" interface="a2600_cart">
<feature name="pcb" value="C010789" />
<feature name="u1" value="" /> <!-- ROM -->
<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>
</part>
</software>
@ -16865,11 +16874,15 @@ Info from Atariage and Atarimania
<software name="tubybird">
<description>Tuby Bird (PAL)</description>
<year>19??</year>
<publisher>Suntek</publisher>
<year>1983?</year>
<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">
<feature name="pcb" value="21003A" />
<feature name="u1" value="" /> <!-- Epoxy blob ROM -->
<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>
</part>
</software>
@ -17539,9 +17552,12 @@ Info from Atariage and Atarimania
<description>Weltraumtunnel (PAL)</description>
<year>1983</year>
<publisher>Quelle</publisher>
<info name="alt_title" value="Laaser Voley"/>
<part name="cart" interface="a2600_cart">
<feature name="pcb" value="0019" />
<feature name="u1" value="" /> <!-- Epoxy blob ROM -->
<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>
</part>
</software>

View File

@ -4816,11 +4816,12 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
<description>Mega Games I (Euro)</description>
<year>1992</year>
<publisher>Sega</publisher>
<info name="release" value="19921001"/>
<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 -->
<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>
</part>
</software>
@ -7385,11 +7386,12 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
<description>Sonic the Hedgehog (Euro, USA)</description>
<year>1991</year>
<publisher>Sega</publisher>
<info name="release" value="19910623"/>
<part name="cart" interface="megadriv_cart">
<feature name="pcb" value="171-5703"/>
<feature name="ic1" value="MPR-13913-F, MPR-13913 W33"/>
<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>
</part>
</software>

View File

@ -10899,9 +10899,16 @@ clips onto the player's ear.
<year>1999</year>
<publisher>Acclaim Entertainment</publisher>
<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">
<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">
<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>
</part>
</software>

View File

@ -9929,8 +9929,8 @@ more investigation needed...
<feature name="cart_back_label" value="920214" />
<feature name="slot" value="hirom" />
<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 p3.u2" size="1048576" crc="5b379b50" sha1="83b0507f1a84e686d76b5b869c1a5f2e22278097" offset="0x200000" />
<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" />
</dataarea>
<dataarea name="nvram" size="8192">
</dataarea>
@ -11930,7 +11930,7 @@ more investigation needed...
<feature name="cart_back_label" value="901121" />
<feature name="slot" value="lorom" />
<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 name="nvram" size="8192">
</dataarea>
@ -19340,17 +19340,17 @@ more investigation needed...
<description>Nintendo Scope 6 (Euro)</description>
<year>1992</year>
<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">
<feature name="pcb" value="SHVC-1A0N-02" />
<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-FAH" />
<feature name="cart_back_label" value="SNSP-FAH, SNSP-UKV" />
<feature name="slot" value="lorom" />
<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>
</part>
</software>
@ -25243,7 +25243,7 @@ more investigation needed...
<feature name="cart_back_label" value="920214" />
<feature name="slot" value="lorom" />
<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 name="nvram" size="8192">
</dataarea>
@ -28147,7 +28147,7 @@ Alternate board (XL-1)
<feature name="cart_back_label" value="SNSP-EUR, SNSP-FAH" />
<feature name="slot" value="lorom" />
<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>
</part>
</software>
@ -33286,6 +33286,26 @@ Alternate board (XL-1)
</dataarea>
</part>
</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">
<!-- single cartridge source: Zidanax -->
@ -46113,18 +46133,6 @@ to ensure nothing has been touched in the Retro Quest cart production in 2013/20
</part>
</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">
<description>The Lost Vikings (Fra)</description>
<year>1993</year>
@ -59520,19 +59528,6 @@ to ensure nothing has been touched in the Retro Quest cart production in 2013/20
</part>
</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">
<description>Syvalion (Euro)</description>
<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);
}
// TODO: update DMARQ
(void)m_dmarq_line; // TODO: update DMARQ
m_no_recursion = false;
}

View File

@ -130,6 +130,8 @@ public:
void tc_w(bool val) override;
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_mode(int mode);

View File

@ -36,14 +36,19 @@ public:
};
argo_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_p_videoram(*this, "p_videoram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
{ }
required_device<cpu_device> m_maincpu;
DECLARE_WRITE8_MEMBER(argo_videoram_w);
DECLARE_READ8_MEMBER(argo_io_r);
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;
const uint8_t *m_p_chargen;
uint8_t m_framecnt;
@ -53,8 +58,6 @@ public:
uint8_t m_scroll_ctrl;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(argo);
protected:
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"
// Board Ctrl Reg Offsets
#define CTRL_POWER0 0
#define CTRL_POWER1 1
#define CTRL_IRQ1_EN 2
#define CTRL_IRQ2_EN 3
#define CTRL_IRQ3_EN 4
#define CTRL_IRQ4_EN 5
#define CTRL_GLOBAL_EN 6
#define CTRL_CAUSE 7
#define CTRL_STATUS 8
#define CTRL_SIZE 9
#define CTRL_PLD_REV 0
#define CTRL_RESET 1
#define CTRL_VSYNC_CLEAR 2
#define CTRL_IRQ_MAP1 3
#define CTRL_IRQ_MAP2 4
#define CTRL_IRQ_MAP3 5
// Empty?? 6
#define CTRL_IRQ_EN 7
#define CTRL_CAUSE 8
#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 GALILEO_IRQ_SHIFT 1
#define ZEUS_IRQ_SHIFT 2
#define PARALLEL_IRQ_SHIFT 3
#define UART1_SHIFT 4
#define UART2_SHIFT 5
#define ROMBUS_IRQ_SHIFT 1
#define ZEUS0_IRQ_SHIFT 2
#define ZEUS1_IRQ_SHIFT 3
#define ZEUS2_IRQ_SHIFT 4
#define WDOG_IRQ_SHIFT 5
#define A2D_IRQ_SHIFT 6
#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 */
#define GALILEO_IRQ_NUM MIPS3_IRQ0
#define VBLANK_IRQ_NUM MIPS3_IRQ3
#define IDE_IRQ_NUM MIPS3_IRQ4
#define DEBUG_CONSOLE (0)
@ -127,10 +140,8 @@ public:
DECLARE_WRITE32_MEMBER(asic_fifo_w);
DECLARE_WRITE32_MEMBER(dcs3_fifo_full_w);
READ32_MEMBER (green_r);
WRITE32_MEMBER(green_w);
READ8_MEMBER (blue_r);
WRITE8_MEMBER(blue_w);
READ8_MEMBER (exprom_r);
WRITE8_MEMBER(exprom_w);
WRITE32_MEMBER(user_io_output);
READ32_MEMBER(user_io_input);
@ -151,37 +162,28 @@ public:
DECLARE_WRITE_LINE_MEMBER(uart2_irq_callback);
DECLARE_CUSTOM_INPUT_MEMBER(port_mod_r);
DECLARE_READ32_MEMBER(port_ctrl_r);
DECLARE_WRITE32_MEMBER(port_ctrl_w);
uint32_t m_port_ctrl_reg[0x8];
DECLARE_READ16_MEMBER(port_ctrl_r);
DECLARE_WRITE16_MEMBER(port_ctrl_w);
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
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);
logerror("%06X: exprom_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0);
//return data;
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)
@ -189,9 +191,10 @@ READ32_MEMBER(atlantis_state::board_ctrl_r)
uint32_t newOffset = offset >> 17;
uint32_t data = board_ctrl[newOffset];
switch (newOffset) {
case CTRL_PLD_REV:
// ???
data = 0x1;
case CTRL_STATUS:
if (1 && m_screen->vblank())
data |= 1 << VBLANK_IRQ_SHIFT;
if (m_last_offset != (newOffset | 0x40000))
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);
@ -211,12 +214,12 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
uint32_t changeData = board_ctrl[newOffset] ^ data;
COMBINE_DATA(&board_ctrl[newOffset]);
switch (newOffset) {
case CTRL_POWER0:
case CTRL_RESET:
// 0x1 IOASIC Reset
// 0x4 Zeus2 Reset
// 0x10 IDE Reset
if (changeData & 0x1) {
if ((data & 0x0001) == 0) {
if (changeData & RESET_IOASIC) {
if ((data & RESET_IOASIC) == 0) {
m_ioasic->ioasic_reset();
m_dcs->reset_w(ASSERT_LINE);
}
@ -225,14 +228,15 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
}
}
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;
case CTRL_POWER1:
case CTRL_VSYNC_CLEAR:
//VSYNC_IE (0x1)
//VSYNC_POL (0x2) off=negative true, on=positive true
// 0x1 VBlank clear?
if (changeData & 0x1) {
if ((data & 0x0001) == 0) {
//uint32_t status_bit = (1 << VBLANK_IRQ_SHIFT);
uint32_t status_bit = (1 << 7);
uint32_t status_bit = (1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~status_bit;
board_ctrl[CTRL_STATUS] &= ~status_bit;
update_asic_irq();
@ -240,15 +244,15 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w)
else {
}
}
if (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);
if (0 && LOG_IRQ)
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;
case CTRL_GLOBAL_EN:
case CTRL_IRQ_EN:
// Zero bit will clear cause
board_ctrl[CTRL_CAUSE] &= data;
update_asic_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;
default:
if (LOG_IRQ)
@ -423,7 +427,7 @@ READ32_MEMBER(atlantis_state::user_io_input)
*************************************/
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)) {
board_ctrl[CTRL_STATUS] |= status_bit;
update_asic_irq();
@ -441,7 +445,7 @@ WRITE_LINE_MEMBER(atlantis_state::uart1_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)) {
board_ctrl[CTRL_STATUS] |= status_bit;
update_asic_irq();
@ -460,18 +464,14 @@ WRITE_LINE_MEMBER(atlantis_state::uart2_irq_callback)
WRITE_LINE_MEMBER(atlantis_state::vblank_irq)
{
//logerror("%s: atlantis_state::vblank state = %i\n", machine().describe_context(), state);
if (1) {
if (state) {
board_ctrl[CTRL_STATUS] |= (1 << VBLANK_IRQ_SHIFT);
update_asic_irq();
}
else {
board_ctrl[CTRL_STATUS] &= ~(1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT);
update_asic_irq();
}
} else {
m_maincpu->set_input_line(VBLANK_IRQ_NUM, state);
if (state) {
board_ctrl[CTRL_STATUS] |= (1 << VBLANK_IRQ_SHIFT);
update_asic_irq();
}
else {
board_ctrl[CTRL_STATUS] &= ~(1 << VBLANK_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT);
update_asic_irq();
}
}
@ -479,12 +479,12 @@ WRITE_LINE_MEMBER(atlantis_state::zeus_irq)
{
//logerror("%s: atlantis_state::zeus_irq state = %i\n", machine().describe_context(), state);
if (state) {
board_ctrl[CTRL_STATUS] |= (1 << ZEUS_IRQ_SHIFT);
board_ctrl[CTRL_STATUS] |= (1 << ZEUS0_IRQ_SHIFT);
update_asic_irq();
}
else {
board_ctrl[CTRL_STATUS] &= ~(1 << ZEUS_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << ZEUS_IRQ_SHIFT);
board_ctrl[CTRL_STATUS] &= ~(1 << ZEUS0_IRQ_SHIFT);
board_ctrl[CTRL_CAUSE] &= ~(1 << ZEUS0_IRQ_SHIFT);
update_asic_irq();
}
}
@ -522,21 +522,20 @@ WRITE_LINE_MEMBER(atlantis_state::ioasic_irq)
*************************************/
void atlantis_state::update_asic_irq()
{
// Uknown if CTRL_POWER1 is actually a separate power register. Skip it for now.
for (int irqIndex = 1; irqIndex <= 4; irqIndex++) {
uint32_t irqBits = (board_ctrl[CTRL_GLOBAL_EN] & board_ctrl[CTRL_POWER1 + irqIndex] & board_ctrl[CTRL_STATUS]);
uint32_t causeBits = (board_ctrl[CTRL_GLOBAL_EN] & board_ctrl[CTRL_POWER1 + irqIndex] & board_ctrl[CTRL_CAUSE]);
uint32_t currState = m_irq_state & (1 << irqIndex);
for (int irqIndex = 0; irqIndex < 3; irqIndex++) {
uint32_t irqBits = (board_ctrl[CTRL_IRQ_EN] & board_ctrl[CTRL_IRQ_MAP1 + 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 currState = m_irq_state & (2 << irqIndex);
board_ctrl[CTRL_CAUSE] |= irqBits;
if (irqBits && !currState) {
m_maincpu->set_input_line(MIPS3_IRQ0 + irqIndex, ASSERT_LINE);
m_irq_state |= (1 << irqIndex);
m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, ASSERT_LINE);
m_irq_state |= (2 << irqIndex);
if (LOG_IRQ)
logerror("atlantis_state::update_asic_irq Asserting IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]);
}
else if (!(causeBits) && currState) {
m_maincpu->set_input_line(MIPS3_IRQ0 + irqIndex, CLEAR_LINE);
m_irq_state &= ~(1 << irqIndex);
m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, CLEAR_LINE);
m_irq_state &= ~(2 << irqIndex);
if (LOG_IRQ)
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
*************************************/
READ32_MEMBER(atlantis_state::port_ctrl_r)
READ16_MEMBER(atlantis_state::port_ctrl_r)
{
uint32_t newOffset = offset >> 17;
uint32_t result = m_port_ctrl_reg[newOffset];
uint32_t result = m_port_data;
if (LOG_PORT)
logerror("%s: port_ctrl_r newOffset = %02X data = %08X\n", machine().describe_context(), newOffset, result);
return result;
}
WRITE32_MEMBER(atlantis_state::port_ctrl_w)
WRITE16_MEMBER(atlantis_state::port_ctrl_w)
{
uint32_t newOffset = offset >> 17;
COMBINE_DATA(&m_port_ctrl_reg[newOffset]);
switch (newOffset) {
case 1:
{
uint32_t bits = ioport("KEYPAD")->read();
m_port_ctrl_reg[2] = 0;
m_port_data = 0;
if (!(data & 0x8))
m_port_ctrl_reg[2] = bits & 7; // Row 0
m_port_data = bits & 7; // Row 0
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))
m_port_ctrl_reg[2] = (bits >> 8) & 7; // Row 2
m_port_data = (bits >> 8) & 7; // Row 2
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)
logerror("%s: port_ctrl_w Keypad Row Sel = %04X bits = %08X\n", machine().describe_context(), data, bits);
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:
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);
@ -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();
//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]);
return bits;
return A2D_CTRL_COMPLETE;
}
WRITE16_MEMBER(atlantis_state::a2d_ctrl_w)
{
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_item(NAME(m_irq_state));
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_irq_state = 0;
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 )
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(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(0x00400000, 0x004000bf) AM_READWRITE8(blue_r, blue_w, 0xff)
AM_RANGE(0x00880000, 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(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM
AM_RANGE(0x00800000, 0x00c80003) AM_READWRITE(board_ctrl_r, board_ctrl_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(0x00e80000, 0x00e80003) AM_NOP // Watchdog?
ADDRESS_MAP_END
AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog
//AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl
ADDRESS_MAP_END
static ADDRESS_MAP_START( map1, AS_PROGRAM, 32, atlantis_state )
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(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(0x00800000, 0x00a00003) AM_READWRITE(port_ctrl_r, port_ctrl_w)
//AM_RANGE(0x00800000, 0x00800003) // Written once = 0000fff8
//AM_RANGE(0x00880000, 0x00880003) // Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select?
//AM_RANGE(0x00900000, 0x00900003) // Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad?
//AM_RANGE(0x00980000, 0x00980003) // Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000. POTs?
//AM_RANGE(0x00a00000, 0x00a00003)
//AM_RANGE(0x00980000, 0x00980003) AM_NOP // AM_WRITE(asic_fifo_w)
AM_RANGE(0x00800000, 0x00900003) AM_READWRITE16(port_ctrl_r, port_ctrl_w, 0xffff)
//AM_RANGE(0x00880000, 0x00880003) // AUX Output 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(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(0x00a00000, 0x00a00003) AM_READWRITE16(a2d_data_r, a2d_data_w, 0xffff) // A2D Data
//AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits
//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
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
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
/*************************************
@ -876,31 +884,31 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state )
// TL16C552 UART
MCFG_DEVICE_ADD("uart1", NS16550, XTAL_24MHz)
//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_RTS_CB(DEVWRITELINE("com1", rs232_port_device, write_rts))
//MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart1_irq_callback))
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_RTS_CB(DEVWRITELINE("com1", rs232_port_device, write_rts))
MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart1_irq_callback))
MCFG_DEVICE_ADD("uart2", NS16550, XTAL_24MHz)
//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_RTS_CB(DEVWRITELINE("com2", rs232_port_device, write_rts))
//MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart2_irq_callback))
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_RTS_CB(DEVWRITELINE("com2", rs232_port_device, write_rts))
MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(":", atlantis_state, uart2_irq_callback))
//MCFG_RS232_PORT_ADD("com1", default_rs232_devices, nullptr)
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, rx_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_RI_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, ri_w))
//MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, cts_w))
MCFG_RS232_PORT_ADD("com1", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, rx_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_RI_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart1", ins8250_uart_device, cts_w))
//MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("com1", mwskins_comm)
//MCFG_RS232_PORT_ADD("com2", default_rs232_devices, nullptr)
//MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, rx_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_RI_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, ri_w))
//MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, cts_w))
MCFG_RS232_PORT_ADD("com2", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, rx_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_RI_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, ri_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart2", ins8250_uart_device, cts_w))
MACHINE_CONFIG_END
@ -926,6 +934,14 @@ ROM_START( mwskinsa )
DISK_IMAGE( "mwskinsa", 0, SHA1(72497917b31156eb11a46bbcc6f22a254dcec044) )
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_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) )

View File

@ -28,19 +28,22 @@ class beehive_state : public driver_device
{
public:
beehive_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_p_videoram(*this, "videoram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
{ }
required_device<cpu_device> m_maincpu;
DECLARE_READ8_MEMBER(beehive_60_r);
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;
required_shared_ptr<uint8_t> m_p_videoram;
uint8_t m_keyline;
virtual void machine_reset() 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)

View File

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

View File

@ -25,17 +25,19 @@ public:
};
c10_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_p_videoram(*this, "p_videoram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, 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;
const uint8_t *m_p_chargen;
required_shared_ptr<uint8_t> m_p_videoram;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(c10);
protected:
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(0x8000, 0xbfff) AM_ROM
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
static ADDRESS_MAP_START( c10_io, AS_IO, 8, c10_state)

View File

@ -36,8 +36,6 @@ TODO
#include "sound/wave.h"
#include "sound/beep.h"
#define KEYBOARD_TAG "keyboard"
class cd2650_state : public driver_device
{
public:
@ -291,7 +289,7 @@ static MACHINE_CONFIG_START( cd2650, cd2650_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 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_CASSETTE_ADD( "cassette" )
MACHINE_CONFIG_END

View File

@ -18,17 +18,17 @@ class cdc721_state : public driver_device
public:
cdc721_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_p_videoram(*this, "videoram")
, m_maincpu(*this, "maincpu")
{ }
, m_p_videoram(*this, "videoram")
, 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);
required_shared_ptr<uint8_t> m_p_videoram;
DECLARE_PALETTE_INIT(cdc721);
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;

View File

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

View File

@ -1,5 +1,5 @@
// 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
@ -12,13 +12,15 @@ Credits:
Golden Castle Rom Set Support
- Phil Stroffolino: palette, sprites, misc video driver fixes
- Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation, ADPCM with MC6809
- Tomasz Slanina preliminary Ping Pong King driver
- Nicola Salmoria clean up
- Tomasz Slanina: preliminary Ping Pong King driver
- Nicola Salmoria: clean up
- Vas Crabb: MCU hookup
special thanks to:
- Camilty for precious hardware information and screenshots
- Jason Richmond for hardware information and misc. notes
- Joe Rounceville for schematics
- JunoMan for measuring and tracing signals
- 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
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.
- tilemap Y scroll is not implemented because the game doesn't use it so I can't
verify it's right.
- Tilemap Y scroll is not implemented because the game doesn't use it so I
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:
-----
@ -178,78 +183,36 @@ TODO:
- YM2203 some sound effects just don't sound correct
- Audio Filter Switch not hooked up (might solve YM2203 mixing issue)
- 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 "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 "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)
{
// ROM bankswitching
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)
{
/* 6809 bank memory set */
{
membank("bank2")->set_entry(0);
m_audiocpu->reset();
}
// 6809 bank memory set
membank("bank2")->set_entry(0);
m_audiocpu->reset();
}
/* YM2203 port B handler (output) */
@ -269,12 +232,12 @@ WRITE_LINE_MEMBER(gladiatr_state::gladiator_ym_irq)
/*Sound Functions*/
WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w)
{
/* bit6 = bank offset */
// bit 6 = bank offset
membank("bank2")->set_entry((data & 0x40) ? 1 : 0);
m_msm->data_w(data); /* bit0..3 */
m_msm->reset_w(BIT(data, 5)); /* bit 5 */
m_msm->vclk_w (BIT(data, 4)); /* bit4 */
m_msm->data_w(data); // bit 0..3
m_msm->reset_w(BIT(data, 5)); // bit 5
m_msm->vclk_w (BIT(data, 4)); // bit 4
}
WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w)
@ -304,60 +267,182 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w)
#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)
{
m_data2=data;
m_flag2=1;
m_data2 = data;
m_flag2 = 1;
}
}
WRITE8_MEMBER(gladiatr_state::ppking_qx1_w)
WRITE8_MEMBER(ppking_state::ppking_qx1_w)
{
if(!offset)
{
m_data1=data;
m_flag1=1;
m_data1 = data;
m_flag1 = 1;
}
}
WRITE8_MEMBER(gladiatr_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)
WRITE8_MEMBER(ppking_state::ppking_qx2_w)
{
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
return m_flag2;
}
READ8_MEMBER(gladiatr_state::ppking_qx1_r)
READ8_MEMBER(ppking_state::ppking_qx1_r)
{
if(!offset)
if (!offset)
return m_data2;
else
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_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(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
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
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(0xc000, 0xffff) AM_ROM
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)
AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_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
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)
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)
@ -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(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */
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
ADDRESS_MAP_END
static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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(0x60, 0x61) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3)
AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("cctl", upi41_cpu_device, upi41_master_r, upi41_master_w)
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(0xe0, 0xe0) AM_WRITE(gladiator_cpu_sound_command_w)
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 )
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( 0x02, DEF_STR( Medium ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
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( 0x04, "Ends" )
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_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") /*NOTE: Actual manual has these settings reversed(typo?)! */
PORT_DIPSETTING( 0x08, "Only at 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( 0x20, "2" )
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_DIPSETTING( 0x00, DEF_STR( No ) )
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( 0x00, DEF_STR( On ) )
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( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) )
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( 0x04, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 3C_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( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW2:6" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
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( 0x00, DEF_STR( On ) )
@ -493,68 +604,48 @@ static INPUT_PORTS_START( gladiatr )
PORT_DIPNAME( 0x01, 0x01, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW3:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
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( 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( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW3:5" ) /* 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( 0x10, 0x10, "SW3:5" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" ) /* Listed as "Unused" */
PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:8" )
PORT_START("IN0") /*(8741-3 parallel port 1) */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
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 ) /* COINS */
PORT_START("IN0") // ccpu p1
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_8WAY
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("COINS") /*(8741-3 parallel port bit7) */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
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_COIN1 ) PORT_IMPULSE(1)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
PORT_START("IN1") // ccpu p2
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) // coin counter outputs
PORT_START("IN1") /* (8741-3 parallel port 2) */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
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") // cctl p1
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) // other stuff mixed here
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_START("IN2") /* (8741-3 parallel port 4) */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
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 )
PORT_START("COINS") // ccpu test, cctl test
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
/*******************************************************************/
@ -608,30 +699,25 @@ GFXDECODE_END
READ8_MEMBER(gladiatr_state::ppking_f1_r)
{
return machine().rand();
}
static MACHINE_CONFIG_START( ppking, gladiatr_state )
static MACHINE_CONFIG_START( ppking, ppking_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(ppking_cpu1_map)
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_PROGRAM_MAP(cpu2_map)
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_PROGRAM_MAP(ppking_cpu3_map)
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")
/* video hardware */
@ -640,13 +726,13 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
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_GFXDECODE_ADD("gfxdecode", "palette", ppking)
MCFG_PALETTE_ADD("palette", 1024)
MCFG_VIDEO_START_OVERRIDE(gladiatr_state,ppking)
MCFG_VIDEO_START_OVERRIDE(ppking_state, ppking)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -654,8 +740,8 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_B_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(ppking_state, ppking_f1_r))
MCFG_SOUND_ROUTE(0, "mono", 0.60)
MCFG_SOUND_ROUTE(1, "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_PROGRAM_MAP(gladiatr_cpu3_map)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_RESET_OVERRIDE(gladiatr_state,gladiator)
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_TAITO8741_ADD("taito8741")
MCFG_TAITO8741_MODES(TAITO8741_MASTER,TAITO8741_SLAVE,TAITO8741_PORT,TAITO8741_PORT)
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("cctl", I8741, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_IO_MAP(cctl_io_map)
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 */
MCFG_SCREEN_ADD("screen", RASTER)
@ -724,6 +821,7 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
MACHINE_CONFIG_END
/***************************************************************************
Game driver(s)
@ -811,6 +909,18 @@ ROM_START( gladiatr )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
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_START( ogonsiro )
@ -854,6 +964,18 @@ ROM_START( ogonsiro )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
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_START( greatgur )
@ -898,10 +1020,16 @@ ROM_START( greatgur )
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
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_REGION( 0x0400, "ccpu", 0 ) /* I/O MCU */
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_REGION( 0x0400, "csnd", 0 ) /* comms MCU */
ROM_LOAD( "gladcsnd.18", 0x00000, 0x0400, CRC(3c5ca4c6) SHA1(0d8c2e1c2142ada11e30cfb9a48663386fee9cb8) )
ROM_END
@ -946,6 +1074,18 @@ ROM_START( gcastle )
ROM_REGION( 0x00040, "proms", 0 ) /* unused */
ROM_LOAD( "q3.2b", 0x00000, 0x0020, CRC(6a7c3c60) SHA1(5125bfeb03752c8d76b140a4e74d5cac29dcdaa6) ) /* address decoding */
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
@ -1001,18 +1141,26 @@ DRIVER_INIT_MEMBER(gladiatr_state,gladiatr)
/* make sure bank is valid in cpu-reset */
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)
{
if(space.device().safe_pcbase()==0x8e)
m_nvram[0x6a3]=1;
return m_nvram[0x6a3];
}
DRIVER_INIT_MEMBER(gladiatr_state,ppking)
DRIVER_INIT_MEMBER(ppking_state, ppking)
{
uint8_t *rom;
int i,j;
@ -1034,7 +1182,7 @@ DRIVER_INIT_MEMBER(gladiatr_state,ppking)
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_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, 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 )

View File

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

View File

@ -41,8 +41,6 @@
#include "machine/ins8250.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
#define H19_CLOCK (XTAL_12_288MHz / 6)
#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_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))
/* sound hardware */

View File

@ -28,10 +28,10 @@ class homez80_state : public driver_device
{
public:
homez80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
,
m_p_videoram(*this, "p_videoram"){ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "videoram")
{ }
required_device<cpu_device> m_maincpu;
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)
ADDRESS_MAP_UNMAP_HIGH
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( 0x8000, 0xffff ) AM_RAM // 32 K RAM
ADDRESS_MAP_END

View File

@ -13,8 +13,6 @@
#include "video/i8275.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class ipds_state : public driver_device
{
public:
@ -146,7 +144,7 @@ static MACHINE_CONFIG_START( ipds, ipds_state )
MCFG_I8275_CHARACTER_WIDTH(6)
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))
MACHINE_CONFIG_END

View File

@ -27,9 +27,6 @@ ToDo:
#include "machine/wd_fdc.h"
#include "includes/jupiter.h"
#define TERMINAL_TAG "terminal"
#define KEYBOARD_TAG "keyboard"
//**************************************************************************
// ADDRESS MAPS
@ -75,7 +72,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( jupiter3_mem, AS_PROGRAM, 8, jupiter3_state )
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(0xf000, 0xffff) AM_RAM
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":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
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":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))
// internal ram

View File

@ -14,15 +14,13 @@
#include "cpu/z80/z80.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class k8915_state : public driver_device
{
public:
k8915_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
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)
ADDRESS_MAP_UNMAP_HIGH
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
ADDRESS_MAP_END
@ -166,7 +164,7 @@ static MACHINE_CONFIG_START( k8915, k8915_state )
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))
MACHINE_CONFIG_END

View File

@ -51,8 +51,6 @@
#include "includes/llc.h"
#include "llc1.lh"
#define KEYBOARD_TAG "keyboard"
/* Address maps */
static ADDRESS_MAP_START( llc1_mem, AS_PROGRAM, 8, llc_state )
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_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))
MACHINE_CONFIG_END

View File

@ -68,7 +68,7 @@ public:
m_floppy0(*this, "fd1797:0:5dd"),
m_floppy1(*this, "fd1797:1:5dd"),
m_apb(*this, "apb"),
m_p_videoram(*this, "p_videoram"),
m_p_videoram(*this, "videoram"),
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)
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)
ADDRESS_MAP_END
static ADDRESS_MAP_START(m20_data_mem, AS_DATA, 16, m20_state)
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)
ADDRESS_MAP_END

View File

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

View File

@ -20,8 +20,6 @@
#include "cpu/z80/z80.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class modellot_state : public driver_device
{
public:
@ -167,7 +165,7 @@ static MACHINE_CONFIG_START( modellot, modellot_state )
MCFG_PALETTE_ADD_MONOCHROME("palette")
/* 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))
MACHINE_CONFIG_END

View File

@ -26,8 +26,6 @@
#include "machine/clock.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class mx2178_state : public driver_device
{
public:
@ -181,7 +179,7 @@ static MACHINE_CONFIG_START( mx2178, mx2178_state )
/// 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_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
AM_RANGE(0x0000, 0x0fff) AM_ROM
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(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) /* PIT 8253 */
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/terminal.h"
#define KEYBOARD_TAG "keyboard"
#define TERMINAL_TAG "terminal"
class okean240_state : public driver_device
{
public:
@ -70,7 +67,7 @@ public:
m_term_data(0),
m_j(0),
m_scroll(0),
m_p_videoram(*this, "p_videoram"),
m_p_videoram(*this, "videoram"),
m_io_modifiers(*this, "MODIFIERS"),
m_maincpu(*this, "maincpu")
{
@ -206,7 +203,7 @@ static ADDRESS_MAP_START(okean240_mem, AS_PROGRAM, 8, okean240_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
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(0xc000, 0xffff) AM_ROM
ADDRESS_MAP_END
@ -243,7 +240,7 @@ static ADDRESS_MAP_START(okean240t_io, AS_IO, 8, okean240_state)
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x42) AM_READWRITE(okean240_keyboard_r,okean240_keyboard_w)
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(0xa1, 0xa1) AM_READ(term_status_r)
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_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END
@ -498,8 +495,8 @@ static MACHINE_CONFIG_DERIVED( okean240a, okean240t )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(okean240a_io)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240a)
MCFG_DEVICE_REMOVE(TERMINAL_TAG)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
MCFG_DEVICE_REMOVE("terminal")
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END
@ -507,8 +504,8 @@ static MACHINE_CONFIG_DERIVED( okean240, okean240t )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(okean240_io)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240)
MCFG_DEVICE_REMOVE(TERMINAL_TAG)
MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
MCFG_DEVICE_REMOVE("terminal")
MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
MACHINE_CONFIG_END

View File

@ -37,8 +37,6 @@
#define LOG 1
#define KEYBOARD_TAG "keyboard"
class phunsy_state : public driver_device
{
public:
@ -363,7 +361,7 @@ static MACHINE_CONFIG_START( phunsy, phunsy_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 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_CASSETTE_ADD( "cassette" )

View File

@ -38,7 +38,7 @@ public:
plan80_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_videoram(*this, "p_videoram")
, m_p_videoram(*this, "videoram")
{ }
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
AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
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
ADDRESS_MAP_END

View File

@ -41,8 +41,6 @@
#include "machine/keyboard.h"
#include "sound/speaker.h"
#define KEYBOARD_TAG "keyboard"
class poly_state : public driver_device
{
public:
@ -198,7 +196,7 @@ static MACHINE_CONFIG_START( poly, poly_state )
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))
MACHINE_CONFIG_END

View File

@ -147,7 +147,7 @@ public:
m_maincpu(*this, "maincpu"),
m_sound(*this, "pv1000_sound"),
m_cart(*this, "cartslot"),
m_p_videoram(*this, "p_videoram"),
m_p_videoram(*this, "videoram"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette")
@ -187,7 +187,7 @@ public:
static ADDRESS_MAP_START( pv1000, AS_PROGRAM, 8, pv1000_state )
//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)
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/terminal.h"
#define TERMINAL_TAG "terminal"
#define KEYBOARD_TAG "keyboard"
class sapi1_state : public driver_device
{
public:
@ -226,7 +223,7 @@ static ADDRESS_MAP_START( sapi3a_io, AS_IO, 8, sapi1_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
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)
ADDRESS_MAP_END
@ -560,7 +557,7 @@ static MACHINE_CONFIG_DERIVED( sapi2, sapi1 )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
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))
MACHINE_CONFIG_END
@ -600,7 +597,7 @@ static MACHINE_CONFIG_START( sapi3a, sapi1_state )
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 )
/* 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))
/* internal ram */

View File

@ -17,7 +17,7 @@
static ADDRESS_MAP_START(specialist_mem, AS_PROGRAM, 8, special_state )
AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
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( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
ADDRESS_MAP_END
@ -25,7 +25,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(specialp_mem, AS_PROGRAM, 8, special_state )
AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank
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( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
ADDRESS_MAP_END

View File

@ -62,8 +62,6 @@ Z - more scan lines per row (cursor is bigger)
#include "sound/beep.h"
#include "tavernie.lh"
#define KEYBOARD_TAG "keyboard"
class tavernie_state : public driver_device
{
public:
@ -356,7 +354,7 @@ static MACHINE_CONFIG_DERIVED( ivg09, cpu09 )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 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_MC6845_ADD("crtc", MC6845, "screen", 1008000) // unknown clock

View File

@ -27,8 +27,6 @@ TODO:
#include "machine/i8255.h"
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class tk80bs_state : public driver_device
{
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_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))
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 )
AM_RANGE(0x0000, 0x0fff) AM_ROM
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
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(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(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
ADDRESS_MAP_END
@ -274,7 +274,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( meritum_map, AS_PROGRAM, 8, trs80_state )
AM_RANGE(0x0000, 0x37ff) AM_ROM
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
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( 0x0800, 0xdfff ) AM_RAM // RAM
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( 0xf800, 0xffff ) AM_ROM // System ROM
ADDRESS_MAP_END

View File

@ -60,8 +60,6 @@ ToDo:
#include "sound/speaker.h"
#include "machine/wd_fdc.h"
#define KEYBOARD_TAG "keyboard"
class v6809_state : public driver_device
{
public:
@ -323,7 +321,7 @@ static MACHINE_CONFIG_START( v6809, v6809_state )
MCFG_MC6845_UPDATE_ROW_CB(v6809_state, crtc_update_row)
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))
// port A = drive select and 2 control lines ; port B = keyboard

View File

@ -39,8 +39,6 @@ ToDo:
// temporary
#include "machine/keyboard.h"
#define KEYBOARD_TAG "keyboard"
class z9001_state : public driver_device
{
public:
@ -227,7 +225,7 @@ static MACHINE_CONFIG_START( z9001, z9001_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* 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_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 "sound/beep.h"
#define KEYBOARD_TAG "keyboard"
class zrt80_state : public driver_device
{
public:
@ -302,7 +300,7 @@ static MACHINE_CONFIG_START( zrt80, zrt80_state )
MCFG_DEVICE_ADD( "ins8250", INS8250, 2457600 )
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))
MACHINE_CONFIG_END

View File

@ -1,73 +1,103 @@
// 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 "sound/msm5205.h"
class gladiatr_state : public driver_device
class gladiatr_state_base : public driver_device
{
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(colorram_w);
DECLARE_WRITE8_MEMBER(textram_w);
DECLARE_WRITE8_MEMBER(paletteram_w);
DECLARE_WRITE8_MEMBER(spritebuffer_w);
// gladiator specific
DECLARE_READ8_MEMBER(gladiator_dsw1_r);
DECLARE_READ8_MEMBER(gladiator_dsw2_r);
DECLARE_READ8_MEMBER(gladiator_controls_r);
DECLARE_READ8_MEMBER(gladiator_button3_r);
protected:
gladiatr_state_base(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, 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_video_registers_w);
DECLARE_WRITE8_MEMBER(gladiatr_bankswitch_w);
DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w);
DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r);
@ -77,7 +107,58 @@ public:
DECLARE_WRITE8_MEMBER(gladiator_adpcm_w);
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_f6a3_r);
DECLARE_WRITE8_MEMBER(ppking_qx0_w);
@ -90,19 +171,18 @@ public:
DECLARE_READ8_MEMBER(ppking_qx1_r);
DECLARE_WRITE8_MEMBER(ppking_video_registers_w);
DECLARE_DRIVER_INIT(gladiatr);
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_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_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void swap_block(uint8_t *src1,uint8_t *src2,int len);
private:
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:
jupiter2_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, MCM6571AP_TAG)
{ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, MCM6571AP_TAG)
{ }
required_device<cpu_device> m_maincpu;
virtual void machine_start() override;
DECLARE_DRIVER_INIT(jupiter);
private:
required_device<cpu_device> m_maincpu;
virtual void machine_start() override;
};
class jupiter3_state : public driver_device
{
public:
jupiter3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, Z80_TAG),
m_p_videoram(*this, "p_videoram"),
m_p_ram(*this, "p_ram")
{ }
required_device<cpu_device> m_maincpu;
: driver_device(mconfig, type, tag)
, m_maincpu(*this, Z80_TAG)
, m_p_videoram(*this, "videoram")
, m_p_ram(*this, "p_ram")
{ }
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(jupiter3);
DECLARE_WRITE8_MEMBER(kbd_put);
DECLARE_READ8_MEMBER(status_r);
DECLARE_READ8_MEMBER(key_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_ram;
const uint8_t *m_p_chargen;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_DRIVER_INIT(jupiter3);
};
#endif

View File

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

View File

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

View File

@ -2,8 +2,6 @@
// copyright-holders:Miodrag Milanovic
#include "teleprinter.h"
#define KEYBOARD_TAG "keyboard"
static const uint8_t teleprinter_font[128*8] =
{
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_VISIBLE_AREA(0, TELEPRINTER_WIDTH*8-1, 0, TELEPRINTER_HEIGHT*8-1)
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_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;
}
/*
* 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)
switch (id)
{
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);
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()
@ -210,15 +181,13 @@ void z80ne_state::reset_lx382_banking()
m_bank2->set_entry(0); /* ep382 at 0x8000 */
/* after the first 3 bytes have been read from ROM, switch the RAM back in */
m_reset_delay_counter = 2;
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_reset_delay_count, this));
m_timer_reset->adjust(m_maincpu->cycles_to_attotime(2));
}
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 */
if (VERBOSE)
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_bank3->set_entry(1); /* ep382 at 0x8000 */
m_bank4->set_entry(0); /* RAM at 0xF000 */
/* after the first 3 bytes have been read from ROM, switch the RAM back in */
m_reset_delay_counter = 2;
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_reset_delay_count, this));
// after the first 3 bytes have been read from ROM, switch the RAM back in
m_timer_reset->adjust(m_maincpu->cycles_to_attotime(2));
break;
case 0x02: /* EP548 16k BASIC */
if (VERBOSE)
@ -237,7 +205,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(1); /* ep548 at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */
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;
case 0x03: /* EP390 Boot Loader for 5.5k floppy BASIC */
if (VERBOSE)
@ -246,7 +213,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */
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;
case 0x04: /* EP1390 Boot Loader for NE DOS 1.0/1.5 */
if (VERBOSE)
@ -255,7 +221,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */
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;
case 0x05: /* EP2390 Boot Loader for NE DOS G.1 */
if (VERBOSE)
@ -264,7 +229,6 @@ void z80ne_state::reset_lx390_banking()
m_bank2->set_entry(0); /* RAM at 0x0400-0x3FFF */
m_bank3->set_entry(0); /* RAM at 0x8000 */
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;
}
@ -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_transmitter_clock(m_cass_data.speed * 16.0);
m_nmi_delay_counter = 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)
{
LOG(("In MACHINE_START z80ne\n"));
m_timer_nmi = timer_alloc(0);
m_timer_reset = timer_alloc(1);
m_lx385_ctrl = 0x1f;
save_item(NAME(m_lx383_scan_counter));
save_item(NAME(m_lx383_downsampler));
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));
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 );
else
{
/* after writing to port 0xF8 and the first ~M1 cycles strike a NMI for single step execution */
m_nmi_delay_counter = 1;
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&z80ne_state::z80ne_nmi_delay_count, this));
// after writing to port 0xF8 and the first ~M1 cycles strike a NMI for single step execution
m_timer_reset->adjust(m_maincpu->cycles_to_attotime(1));
}
}

View File

@ -57,10 +57,10 @@ marioo // (c) 1983 Nintendo of America
masao // bootleg
// popeye.cpp
popeye // (c) 1982
popeyeu // (c) 1982
popeyef // (c) 1982
popeyebl // bootleg
popeye // (c) 1982
popeyeu // (c) 1982
popeyef // (c) 1982
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];
@ -26,7 +26,7 @@ TILE_GET_INFO_MEMBER(gladiatr_state::bg_get_tile_info)
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,
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_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_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(ppking_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64);
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_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(gladiatr_state::colorram_w)
WRITE8_MEMBER(gladiatr_state_base::colorram_w)
{
m_colorram[offset] = data;
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_fg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(gladiatr_state::paletteram_w)
WRITE8_MEMBER(gladiatr_state_base::paletteram_w)
{
int r,g,b;
m_generic_paletteram_8[offset] = data;
m_paletteram[offset] = data;
offset &= 0x3ff;
r = (m_generic_paletteram_8[offset] >> 0) & 0x0f;
g = (m_generic_paletteram_8[offset] >> 4) & 0x0f;
b = (m_generic_paletteram_8[offset + 0x400] >> 0) & 0x0f;
r = (m_paletteram[offset] >> 0) & 0x0f;
g = (m_paletteram[offset] >> 4) & 0x0f;
b = (m_paletteram[offset + 0x400] >> 0) & 0x0f;
r = (r << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 4) & 0x01);
g = (g << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 5) & 0x01);
b = (b << 1) + ((m_generic_paletteram_8[offset + 0x400] >> 6) & 0x01);
r = (r << 1) + ((m_paletteram[offset + 0x400] >> 4) & 0x01);
g = (g << 1) + ((m_paletteram[offset + 0x400] >> 5) & 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;
}
@ -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)
{
@ -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;
@ -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);
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'))