diff options
102 files changed, 3723 insertions, 2119 deletions
diff --git a/hash/ibm5150.xml b/hash/ibm5150.xml index 7feb2527d71..d2a2ccc94a8 100644 --- a/hash/ibm5150.xml +++ b/hash/ibm5150.xml @@ -2512,6 +2512,36 @@ Known PC Booter Games Not Dumped, Or Dumped and Lost when Demonlord's Site went <!-- Applications --> + <software name="4ptgraph"> + <description>4-POINT Graphics</description> + <year>1984</year> + <publisher>International Microcomputer Software, Inc.</publisher> + <info name="version" value="1.0B" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size = "327680"> + <rom name="disk1.img" size="327680" crc="5fb1596a" sha1="f95bf310b527e2914571a02853208385a6100629" offset="0"/> + </dataarea> + </part> + </software> + + <software name="abilityd"> + <description>Ability (Demo)</description> + <year>1985</year> + <publisher>Xanaro Technologies</publisher> + <part name="flop1" interface="floppy_5_25"> + <feature name="part_id" value="Demo Disk 1" /> + <dataarea name="flop" size = "368640"> + <rom name="Disk01.img" size="368640" crc="33247300" sha1="c9d1acb0c19d64af3ac604c1e108252fa5bffb43" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_5_25"> + <feature name="part_id" value="Demo Disk 2" /> + <dataarea name="flop" size = "368640"> + <rom name="Disk02.img" size="368640" crc="c8e12da7" sha1="428e0dd0eafee1575c847674c34cb4144ab87291" offset="0"/> + </dataarea> + </part> + </software> + <software name="croschex"> <description>Award Software's Cross-chex</description> <year>198?</year> diff --git a/hash/ibm5170.xml b/hash/ibm5170.xml index 1b3c5a025cd..c7a000868c4 100644 --- a/hash/ibm5170.xml +++ b/hash/ibm5170.xml @@ -3978,11 +3978,51 @@ Missing files come here </part> </software> + <software name="dzone"> + <description>D!ZONE</description> + <year>1994</year> + <publisher>WizardWorks</publisher> + <info name="version" value="1.0" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="D!Zone 1.0 #1.img" size="1474560" crc="ae5fd791" sha1="42d16ed62ce3781405ebc0304eafc7bc3f0c0ea0" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "737280"> + <rom name="D!Zone 1.0 #2.img" size="737280" crc="7d146e94" sha1="b0fad9e41cc85e28fb5aa0fd8e06b452d1953cc0" offset="0"/> + </dataarea> + </part> + </software> + + <software name="dzone150"> + <description>D!ZONE 150</description> + <year>1995</year> + <publisher>WizardWorks</publisher> + <info name="version" value="1.3a" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="D!Zone 1.3a #1.img" size="1474560" crc="1d3944ae" sha1="6a3aa137bc3e5e5798e00fb79d8feaef56c834ee" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="D!Zone 1.3a #2.img" size="1474560" crc="f8192965" sha1="97a128e1d03f91b0752fa7f9346d03cb5c1712d9" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="D!Zone 1.3a #3.img" size="1474560" crc="38719ef4" sha1="de87338c3a7d8af5b7aca8626a5d6d77db83ccbd" offset="0"/> + </dataarea> + </part> + </software> + <software name="descsw"> <!-- from Acer CPR 1.2 recovery CD-ROM --> <description>Descent (Shareware, 1.0)</description> <year>1994</year> <publisher>Interplay</publisher> + <info name="version" value="1.0" /> <part name="flop1" interface="floppy_3_5"> <dataarea name="flop" size="1474560"> <rom name="descent disk1.img" size="1474560" crc="5d3a21e6" sha1="bac18f7fc016c438e0ab14893fd417958e99f500" offset="0" /> @@ -4011,6 +4051,199 @@ Missing files come here </part> </software> + <software name="doom"> + <description>DOOM (1.2)</description> + <year>1993</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.2" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.2 #1.img" size="1474560" crc="749f9b21" sha1="117637a9e42b59f75ce6b7e17be21370c3ca4ee1" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.2 #2.img" size="1474560" crc="13a68229" sha1="5c5b647d42d1b89d9199c6529486f1d52baacf57" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.2 #3.img" size="1474560" crc="70f8d3a0" sha1="3fde0fbd3a33c9a5f8ec7cb9fc570bd1ee5adc36" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.2 #4.img" size="1474560" crc="43f9330e" sha1="845707cb49faf201e057a19cbb8911b00fe0ea29" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doom11" cloneof="doom"> + <description>DOOM (1.1)</description> + <year>1993</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.1" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 #1.img" size="1474560" crc="68d914ac" sha1="f3d942e0a57dcf157a7610a886d98680d42033b9" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 #2.img" size="1474560" crc="70e434bb" sha1="ad145cbf582acbbcb5a55fc8d668eda3d931449b" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 #3.img" size="1474560" crc="53c9bdbf" sha1="9ae87abd9f03a861f8e16a7717425d18f246383f" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 #4.img" size="1474560" crc="83f5dd67" sha1="7b14a004a2be7b8fe976ab5c8151ca62d62845fd" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doomsw" cloneof="doom"> + <!-- Companion Disk for The Official DOOM™ Survivor's Strategies & Secrets --> + <description>DOOM (1.25, Shareware)</description> + <year>1994</year> + <publisher>Sybex</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.25" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="DOOM1.img" size="1474560" crc="72ece6a4" sha1="90837dab320489bda5a608e911ae51144e1377e5" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="DOOM2.img" size="1474560" crc="f90e3ea5" sha1="df9a2520e774616e4fd6a8b8c1d2e70f1d5701f3" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doomsw11" cloneof="doom"> + <description>DOOM (1.1, Shareware)</description> + <year>1993</year> + <publisher>Micro Star</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.1" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 shareware #1.img" size="1474560" crc="9e7ba36d" sha1="8891709abd4ba5fe40db61a6e32f6fe9595f2423" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 1 1.1 shareware #2.img" size="1474560" crc="6bb6e2a4" sha1="71a8ce1ed6c6c40ce32acf0b745dea8bebda703b" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doom2"> + <description>DOOM II: Hell on Earth (1.7)</description> + <year>1994</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.7" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #1.img" size="1474560" crc="6bb31858" sha1="746653c590e2d528249bcafe74da6c7c805187fd" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #2.img" size="1474560" crc="e1a91aa2" sha1="eedce368b970077490df421f567dd22cc974c7be" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #3.img" size="1474560" crc="3fc281a4" sha1="def3e6746e9fa4815162c45f5c1e5f6a3b430db0" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #4.img" size="1474560" crc="80d22e1a" sha1="32067ea046127630fbf0b3ec6a79d9d8d53e4a81" offset="0"/> + </dataarea> + </part> + <part name="flop5" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #5.img" size="1474560" crc="15495bde" sha1="df4365f4969fc82c97269116e3da5fa81029f8b6" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doom2a" cloneof="doom2"> + <description>DOOM II: Hell on Earth (1.7, alt)</description> + <year>1994</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.7" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <!-- 1024-byte footer removed from an image with size 1475584 crc c9c3bdc9, disks 2-5 match the doom2 set after removing this --> + <rom name="Doom II v1.7 (1994)(id Software) - Floppy Disk 1.img" size="1474560" crc="9ad5a439" sha1="1d2a3ee9e9578884f602ab69da12c5b2f962b456" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #2.img" size="1474560" crc="e1a91aa2" sha1="eedce368b970077490df421f567dd22cc974c7be" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #3.img" size="1474560" crc="3fc281a4" sha1="def3e6746e9fa4815162c45f5c1e5f6a3b430db0" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #4.img" size="1474560" crc="80d22e1a" sha1="32067ea046127630fbf0b3ec6a79d9d8d53e4a81" offset="0"/> + </dataarea> + </part> + <part name="flop5" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.7 #5.img" size="1474560" crc="15495bde" sha1="df4365f4969fc82c97269116e3da5fa81029f8b6" offset="0"/> + </dataarea> + </part> + </software> + + <software name="doom2_1666" cloneof="doom2"> + <description>DOOM II: Hell on Earth (1.666)</description> + <year>1994</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <info name="version" value="1.666" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.666 #1.img" size="1474560" crc="24257edd" sha1="c0780f6d2e7255ae3f20db5f5656063fec512d01" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.666 #2.img" size="1474560" crc="51504e3d" sha1="61f97373423cbfe7e87b513bb78668d85eaa8b78" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.666 #3.img" size="1474560" crc="b90d5e37" sha1="2e9989976e23cd05255a75b5df99549f4c6c188f" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.666 #4.img" size="1474560" crc="d99d1e34" sha1="b7a035d034a08b05a0f9dee495acdcb16c98ee40" offset="0"/> + </dataarea> + </part> + <part name="flop5" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Doom 2 1.666 #5.img" size="1474560" crc="77d3b177" sha1="4c2fc8dc362074d730e414b992cc8dba2eb7a1e7" offset="0"/> + </dataarea> + </part> + </software> + <software name="duke"> <!-- Dumped via Kryoflux, all tracks show as modified - most likely not professionally duplicated --> <!-- from a registered version ordered circa 2004 --> @@ -4074,6 +4307,34 @@ Missing files come here </part> </software> + <software name="heretic"> + <description>Heretic</description> + <year>1994</year> + <publisher>id Software</publisher> + <info name="developer" value="Raven Software" /> + <info name="version" value="1.0" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Disk1.img" size="1474560" crc="ad1beaa8" sha1="2bfa2c811eb89149ff1b1157867dc267cf446d37" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Disk2.img" size="1474560" crc="fcff8b85" sha1="c245c55f36429292b472c00dc2c99a8418655945" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Disk3.img" size="1474560" crc="96098808" sha1="5da112b9e3babf58f853e152f3f70a7e1a9de742" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Disk4.img" size="1474560" crc="969dae3c" sha1="0627faa028b550c931b73de88598cecce138e443" offset="0"/> + </dataarea> + </part> + </software> + <software name="rylvania"> <description>Horror of Rylvania</description> <year>1993</year> @@ -4190,6 +4451,17 @@ Missing files come here </part> </software> + <software name="tleodoom"> + <description>The Lost Episodes of Doom (Companion Disk)</description> + <year>1995</year> + <publisher>Sybex</publisher> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="tleodoomcd.img" size="1474560" crc="e2ad041a" sha1="e820373ae6bd18282bec8f3aa5b40c71a6105637" offset="0"/> + </dataarea> + </part> + </software> + <software name="m1tank" supported="no"> <!-- Dumped via Kryoflux, shows as good and unmodified --> <description>M1 Tank Platoon</description> @@ -4532,6 +4804,38 @@ Missing files come here </part> </software> + <software name="ultdoom"> + <description>The Ultimate DOOM</description> + <year>1995</year> + <publisher>GT Interactive</publisher> + <info name="developer" value="id Software" /> + <part name="flop1" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Ultimate Doom #1.img" size="1474560" crc="5e0ccd75" sha1="4998a234e28cf87da5d74dde94f872a7e346b286" offset="0"/> + </dataarea> + </part> + <part name="flop2" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Ultimate Doom #2.img" size="1474560" crc="24f77d16" sha1="580066b4556bd705070cb08f02d643ae0bb79e40" offset="0"/> + </dataarea> + </part> + <part name="flop3" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Ultimate Doom #3.img" size="1474560" crc="ecc814a7" sha1="78d89a132259cd6df04451472bf3b1c693b901bb" offset="0"/> + </dataarea> + </part> + <part name="flop4" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Ultimate Doom #4.img" size="1474560" crc="e4f32f3f" sha1="c637904f61b00cc035321bf3023f3dd66333f47c" offset="0"/> + </dataarea> + </part> + <part name="flop5" interface="floppy_3_5"> + <dataarea name="flop" size = "1474560"> + <rom name="Ultimate Doom #5.img" size="1474560" crc="5725506c" sha1="ab6dda5f642c5a5516e7b68803035b518337ffe9" offset="0"/> + </dataarea> + </part> + </software> + <software name="unnkulia"> <description>Unnkulia Zero: The Search for Amanda</description> <year>1993</year> diff --git a/hash/x68k_flop.xml b/hash/x68k_flop.xml index 305233de53d..5399b37b22a 100644 --- a/hash/x68k_flop.xml +++ b/hash/x68k_flop.xml @@ -1602,6 +1602,17 @@ Most info on release dates and Jpn titles come from the following (wonderful) re </part> </software> + <software name="bgelmntt"> + <description>Blade of The Great Elements (Test Version)</description> + <year>1990</year> + <publisher>アミューズメント (Amusement)</publisher> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="blade of the great elements (test version) (1990)(amusement).dim" size="1261824" crc="F0C71952" sha1="7D11252BB23CE4F8C242CFA71F9B04FC1B368B25" offset="000000" /> + </dataarea> + </part> + </software> + <software name="btlchess"> <description>Battle Chess</description> <year>1989</year> @@ -8392,33 +8403,36 @@ maybe the remaining disks are the supposedly undumped addons: Daikairei Powerup </part> </software> - <!-- The first 3 disks are in 2HDE format and are not handled properly --> + <!-- This software is compressed game disk unzipping tool (All unzipped to 17 disks (12 titles)) + Disk 1,2 and 3 use the 2HDE format (Unsupported), Disk 4 system boot disk (2HD format) --> <software name="ldb_x68k" supported="no"> - <description>LOGiN Disk & Book Series - X68000 Kessaku Game-sen</description> - <year>19??</year> + <description>LOGiN Disk & Book Series - LOGiN Software Contest X68000 Kessaku Game-sen</description> + <year>1993</year> <publisher>Login</publisher> + <info name="alt_title" value="LOGiN DISK&BOOKシリーズ - ログインソフトウェアコンテスト X68000傑作ゲーム選" /> + <info name="release" value="19931025" /> <part name="flop1" interface="floppy_5_25"> - <feature name="part_id" value="Disk 1" /> - <dataarea name="flop" size="1474560"> - <rom name="ldbx68k_1.hdm" size="1474560" crc="35a29e6e" sha1="68be72d44ed55bdc2bb84ab2396475e22452a43b" offset="0" /> + <feature name="part_id" value="Disk 4" /> + <dataarea name="flop" size="1261824"> + <rom name="ldbx68k_4.dim" size="1261824" crc="2c235674" sha1="97729CD1071EABA6EA98DFEB172311520F7E8A24" offset="0" /> </dataarea> </part> <part name="flop2" interface="floppy_5_25"> - <feature name="part_id" value="Disk 2" /> - <dataarea name="flop" size="1474560"> - <rom name="ldbx68k_2.hdm" size="1474560" crc="0e1d25f0" sha1="53f3a6b192b788469142092ae4515612ebb0892c" offset="0" /> + <feature name="part_id" value="Disk 1" /> + <dataarea name="flop" size="1474816"> + <rom name="ldbx68k_1.dim" size="1474816" crc="F04FAEF1" sha1="CA01E3367B84B0752E2D3BF21560D12F776D0778" offset="0" /> </dataarea> </part> <part name="flop3" interface="floppy_5_25"> - <feature name="part_id" value="Disk 3" /> - <dataarea name="flop" size="1474560"> - <rom name="ldbx68k_3.hdm" size="1474560" crc="77726148" sha1="850bc85f0f6ef28082d13a4e7eb3fb0cffca9035" offset="0" /> + <feature name="part_id" value="Disk 2" /> + <dataarea name="flop" size="1474816"> + <rom name="ldbx68k_2.dim" size="1474816" crc="CBF0156F" sha1="904BB6FEB5A6DA7EE04C641E19E6B0E950042C97" offset="0" /> </dataarea> </part> <part name="flop4" interface="floppy_5_25"> - <feature name="part_id" value="Disk 4" /> - <dataarea name="flop" size="1261568"> - <rom name="ldbx68k_4.hdm" size="1261568" crc="bfccf8e0" sha1="ee7f6f56086e997620fef4dc1e9e102f33732a68" offset="0" /> + <feature name="part_id" value="Disk 3" /> + <dataarea name="flop" size="1474816"> + <rom name="ldbx68k_3.dim" size="1474816" crc="B29F51D7" sha1="06DBE68C097D7D152DEE8F2AD938731B681913A3" offset="0" /> </dataarea> </part> </software> @@ -8599,6 +8613,38 @@ maybe the remaining disks are the supposedly undumped addons: Daikairei Powerup </part> </software> + <software name="mjfants2"> + <description>Mahjong Gensoukyoku II - Mahjong Fantasia -The 2nd Stage</description> + <year>1993</year> + <publisher>アクティブ (Active)</publisher> + <info name="alt_title" value="麻雀幻想曲Ⅱ" /> + <info name="release" value="19930828" /> + <part name="flop1" interface="floppy_5_25"> + <feature name="part_id" value="Disk A" /> + <dataarea name="flop" size="1261824"> + <rom name="mahjong gensoukyoku ii (1993)(active)(disk 1 of 4)(disk a).dim" size="1261824" crc="E22A0A22" sha1="BD62BFA94F7D54273227F56C8798C5669462AF1D" offset="000000" /> + </dataarea> + </part> + <part name="flop2" interface="floppy_5_25"> + <feature name="part_id" value="Disk B" /> + <dataarea name="flop" size="1261824"> + <rom name="mahjong gensoukyoku ii (1993)(active)(disk 2 of 4)(disk b).dim" size="1261824" crc="11CF0B83" sha1="E7595FA0BE1D176BC54AE7760F7ABB94E554C329" offset="000000" /> + </dataarea> + </part> + <part name="flop3" interface="floppy_5_25"> + <feature name="part_id" value="Disk C" /> + <dataarea name="flop" size="1261824"> + <rom name="mahjong gensoukyoku ii (1993)(active)(disk 3 of 4)(disk c).dim" size="1261824" crc="8DF65565" sha1="4AFD22C642C1C37FF714BAF32F8DB156BF79414B" offset="000000" /> + </dataarea> + </part> + <part name="flop4" interface="floppy_5_25"> + <feature name="part_id" value="Disk D" /> + <dataarea name="flop" size="1261824"> + <rom name="mahjong gensoukyoku ii (1993)(active)(disk 4 of 4)(disk d).dim" size="1261824" crc="880B66CE" sha1="B21AB349547585A9859135979CB44B49EED004A1" offset="000000" /> + </dataarea> + </part> + </software> + <software name="mjkyojs"> <description>Mahjong Kyo Jidai Special</description> <year>1988</year> @@ -10494,6 +10540,18 @@ maybe the remaining disks are the supposedly undumped addons: Daikairei Powerup </part> </software> + <software name="phalanxs" cloneof="phalanx"> + <description>Phalanx (Sample)</description> + <year>1991</year> + <publisher>Zoom</publisher> + <info name="alt_title" value="ファランクス" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="phalanx (sample) (1991)(zoom).dim" size="1261824" crc="B3D81E59" sha1="92874C431F465968E25AE9FB3B29FAA34D92C966" offset="000000" /> + </dataarea> + </part> + </software> + <software name="phantas3"> <description>Phantasie III - The Wrath of Nikademus</description> <year>1989</year> @@ -20365,6 +20423,113 @@ a contest among doujin programmers... --> +<!-- Distributed with Magazine Book from "The World of X68000". There are winner of a + "The first all japan X68000 art festival (第1回全日本X68000芸術祭)" among programmers. --> + + <software name="formulaxa" cloneof="formulax"> + <description>The World of X68000 - Formula X</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="フォーミュラX (ザ・ワールド・オブ・X68000)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 (disk 3 of 3) - formula x.dim" size="1261824" crc="17E7DCB5" sha1="4CA19B5054F77139F5951CE00A8A47D4A98783AF" offset="000000" /> + </dataarea> + </part> + </software> + + <!-- This image file is multi boot disk. + Set drive 0 to boot "Fortress Attack", Set drive 1 to boot "Fortress Attack". --> + <software name="fortatgj"> + <description>The World of X68000 - Fortress Attack & GJ</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="フォートレスアタック & GJ (ザ・ワールド・オブ・X68000)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 (disk 1 of 3) - fortress attack & gj.dim" size="1261824" crc="373B5D62" sha1="B0E9D5304C33546BEE2FFC3E6380B8FE2F3D3E95" offset="000000" /> + </dataarea> + </part> + </software> + + <!-- This image file is multi boot disk. + Set drive 0 to boot "Logic Rush", Set drive 1 to boot "Ah! Ohimesama!". --> + <software name="lcmyprin" supported="no"> + <description>The World of X68000 - Logic Rush & Ah! Ohimesama!</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="ロジックラッシュ & ああっ!お姫さまっ! (ザ・ワールド・オブ・X68000)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 (disk 2 of 3) - logic rush & ah! ohimesama!.dim" size="1261824" crc="235F83CA" sha1="A40470D9FAB4C7D13184B5300EB16AA52DB2D39E" offset="000000" /> + </dataarea> + </part> + </software> + + <software name="cryokua" cloneof="cryoku"> + <description>The World of X68000 II - C Ryoku Kensa</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="C力検査 (ザ・ワールド・オブ・X68000 Ⅱ)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 ii (disk 1 of 4) - c ryoku kensa.dim" size="1261824" crc="962C135E" sha1="12FC6F23E4AC4F8F32C1BA711A7BE926D3CBEB0B" offset="000000" /> + </dataarea> + </part> + </software> + + <software name="cynthiaa"> + <description>The World of X68000 II - Cynthia</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="シンシア (ザ・ワールド・オブ・X68000 Ⅱ)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 ii (disk 2 of 4) - cynthia.dim" size="1261824" crc="EB2F94E9" sha1="430E931D2C0DE8BB6CD2DC1D6B64781EDE15B03D" offset="000000" /> + </dataarea> + </part> + </software> + + <!-- This image file is multi boot disk. + Set drive 0 to boot "Rush!", Set drive 1 to boot "Useful". --> + <software name="rushusfl"> + <description>The World of X68000 II - Rush! & Useful</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="ラッシュ! & ユースフル (ザ・ワールド・オブ・X68000 Ⅱ)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 ii (disk 3 of 4) - rush! & useful.dim" size="1261824" crc="F60F3B1B" sha1="A4FF175494A9438ED4444E533816BAC8303A6E4C" offset="000000" /> + </dataarea> + </part> + </software> + + <software name="t94xa" cloneof="t94x"> + <description>The World of X68000 II - T-94X</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <info name="alt_title" value="T-94X (ザ・ワールド・オブ・X68000 Ⅱ)" /> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="the world of x68000 ii (disk 4 of 4) - t-94x.dim" size="1261824" crc="78930F80" sha1="AF8ECDCA86289F203B30DC4F0BFDE025B54E78C8" offset="000000" /> + </dataarea> + </part> + </software> + + <!-- This boot disk is copied file from "The World of X68000" --> + <software name="aahime"> + <description>Aa! O-Hime-sama!</description> + <year>1993</year> + <publisher>電波新聞社 (Dempa Shinbunsha)</publisher> + <part name="flop1" interface="floppy_5_25"> + <dataarea name="flop" size="1261824"> + <rom name="aa! o-hime-sama!.dim" size="1261824" crc="6605a6b5" sha1="05e30f93a6688a57c34fae9779d7b1cec142fd4c" offset="000000" /> + </dataarea> + </part> + </software> + + + <!-- Doujin --> @@ -20405,17 +20570,6 @@ a contest among doujin programmers... --> </part> </software> - <software name="aahime"> - <description>Aa! O-Hime-sama!</description> - <year>19??</year> - <publisher><doujin></publisher> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1261824"> - <rom name="aa! o-hime-sama!.dim" size="1261824" crc="6605a6b5" sha1="05e30f93a6688a57c34fae9779d7b1cec142fd4c" offset="000000" /> - </dataarea> - </part> - </software> - <software name="abuten"> <description>Abunai Tengoku Densetsu?</description> <year>19??</year> @@ -23418,25 +23572,6 @@ a contest among doujin programmers... --> </part> </software> - <software name="fortatk"> - <description>Fortress Attack</description> - <year>1993</year> - <publisher><doujin></publisher> - <info name="developer" value="Shibahara A." /> - <part name="flop1" interface="floppy_5_25"> - <feature name="part_id" value="Disk 1" /> - <dataarea name="flop" size="1261824"> - <rom name="fortress attack (1993)(shibahara a.)(disk 1 of 2).dim" size="1261824" crc="a919b870" sha1="ad7a2a1400c2bc9106021370f9d959f11e96d56e" offset="000000" /> - </dataarea> - </part> - <part name="flop2" interface="floppy_5_25"> - <feature name="part_id" value="Disk 2" /> - <dataarea name="flop" size="1261824"> - <rom name="fortress attack (1993)(shibahara a.)(disk 2 of 2).dim" size="1261824" crc="ebbf3a16" sha1="28db90ef8a65d405243bf7a43a235ad1a0c5938b" offset="000000" /> - </dataarea> - </part> - </software> - <software name="fortyone"> <description>Forty-One</description> <year>1993</year> @@ -30892,40 +31027,6 @@ Technically speaking these are invalid XDF files, because they contain more trac a DIM dump with DIFC, these are at least confirmed as coming from real disk (by SuperDeadite) --> - <software name="cryokua" cloneof="cryoku"> - <description>C Ryokukensa V3</description> - <year>1992</year> - <publisher><doujin></publisher> - <info name="developer" value="Hayabusa Soft" /> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1277952"> - <rom name="ct.xdf" size="1277952" crc="b494d29c" sha1="4ac45dfa372e0bc4cfd63f16407ed382a942e03a" offset="000000" /> - </dataarea> - </part> - </software> - - <software name="cynthi2"> - <description>Cynthia V2</description> - <year>19??</year> - <publisher><doujin></publisher> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1277952"> - <rom name="cyn.xdf" size="1277952" crc="24b71a3b" sha1="018b73eedd25ae89466157da0de1bf84dd3bb048" offset="000000" /> - </dataarea> - </part> - </software> - - <software name="formulaxa" cloneof="formulax"> - <description>Formula X (Alt)</description> - <year>19??</year> - <publisher><doujin></publisher> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1277952"> - <rom name="for.xdf" size="1277952" crc="593d49fe" sha1="523a83919076de11d377b0d4aeff88c6c271459e" offset="000000" /> - </dataarea> - </part> - </software> - <software name="grdiusac"> <description>Gradius Arcade</description> <year>19??</year> @@ -30972,29 +31073,6 @@ a DIM dump with DIFC, these are at least confirmed as coming from real disk (by </part> </software> - <software name="t94xa" cloneof="t94x"> - <description>T-94X - The Ground Warriors (Alt)</description> - <year>1994</year> - <publisher><doujin></publisher> - <info name="developer" value="Team Acquire" /> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1277952"> - <rom name="tx.xdf" size="1277952" crc="955385f5" sha1="b71782694fd7184351c4551c7d58b9aefd705ba9" offset="000000" /> - </dataarea> - </part> - </software> - - <software name="lcmyprin" supported="no"> - <description>Logic Crush + Ahh My Princess!</description> - <year>19??</year> - <publisher><doujin></publisher> - <part name="flop1" interface="floppy_5_25"> - <dataarea name="flop" size="1277952"> - <rom name="worldii.xdf" size="1277952" crc="66671996" sha1="77421d225dcdb944d07a3f0e2e3714ba3f1988c2" offset="000000" /> - </dataarea> - </part> - </software> - <software name="zeromastx" cloneof="zeromast"> <description>Zero Master-Striker (XDF)</description> <year>1992</year> diff --git a/scripts/src/mame/frontend.lua b/scripts/src/mame/frontend.lua index 41d0598cb15..93129cf85d9 100644 --- a/scripts/src/mame/frontend.lua +++ b/scripts/src/mame/frontend.lua @@ -61,6 +61,8 @@ files { MAME_DIR .. "src/frontend/mame/cheat.h", MAME_DIR .. "src/frontend/mame/clifront.cpp", MAME_DIR .. "src/frontend/mame/clifront.h", + MAME_DIR .. "src/frontend/mame/console.cpp", + MAME_DIR .. "src/frontend/mame/console.h", MAME_DIR .. "src/frontend/mame/info.cpp", MAME_DIR .. "src/frontend/mame/info.h", MAME_DIR .. "src/frontend/mame/language.cpp", @@ -71,6 +73,8 @@ files { MAME_DIR .. "src/frontend/mame/mame.h", MAME_DIR .. "src/frontend/mame/mameopts.cpp", MAME_DIR .. "src/frontend/mame/mameopts.h", + MAME_DIR .. "src/frontend/mame/media_ident.cpp", + MAME_DIR .. "src/frontend/mame/media_ident.h", MAME_DIR .. "src/frontend/mame/pluginopts.cpp", MAME_DIR .. "src/frontend/mame/pluginopts.h", MAME_DIR .. "src/frontend/mame/ui/ui.cpp", diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index c459540b91e..05327f09861 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -866,6 +866,7 @@ function linkProjects_mame_mess(_target, _subtarget) "adc", "alesis", "altos", + "ami", "amiga", "amstrad", "apf", @@ -946,7 +947,6 @@ function linkProjects_mame_mess(_target, _subtarget) "luxor", "magnavox", "makerbot", - "marx", "matsushi", "mattel", "mb", @@ -981,7 +981,6 @@ function linkProjects_mame_mess(_target, _subtarget) "osborne", "osi", "palm", - "parker", "pc", "pdp1", "pel", @@ -1316,6 +1315,11 @@ files { MAME_DIR .. "src/mame/drivers/altos486.cpp", } +createMESSProjects(_target, _subtarget, "ami") +files { + MAME_DIR .. "src/mame/drivers/hh_amis2k.cpp", +} + createMESSProjects(_target, _subtarget, "amiga") files { MAME_DIR .. "src/mame/drivers/amiga.cpp", @@ -2118,11 +2122,6 @@ files { MAME_DIR .. "src/mame/drivers/replicator.cpp", } -createMESSProjects(_target, _subtarget, "marx") -files { - MAME_DIR .. "src/mame/drivers/elecbowl.cpp", -} - createMESSProjects(_target, _subtarget, "mattel") files { MAME_DIR .. "src/mame/drivers/aquarius.cpp", @@ -2141,7 +2140,6 @@ files { createMESSProjects(_target, _subtarget, "mb") files { - MAME_DIR .. "src/mame/drivers/mbdtower.cpp", MAME_DIR .. "src/mame/drivers/microvsn.cpp", MAME_DIR .. "src/mame/drivers/phantom.cpp", } @@ -2420,11 +2418,6 @@ files { MAME_DIR .. "src/mame/drivers/palmz22.cpp", } -createMESSProjects(_target, _subtarget, "parker") -files { - MAME_DIR .. "src/mame/drivers/wildfire.cpp", -} - createMESSProjects(_target, _subtarget, "pitronic") files { MAME_DIR .. "src/mame/drivers/beta.cpp", diff --git a/src/devices/bus/pofo/hpc104.cpp b/src/devices/bus/pofo/hpc104.cpp index e08bb317db9..9a2cfa6b8cc 100644 --- a/src/devices/bus/pofo/hpc104.cpp +++ b/src/devices/bus/pofo/hpc104.cpp @@ -169,9 +169,9 @@ UINT8 hpc104_t::nrdi_r(address_space &space, offs_t offset, UINT8 data, bool iom { if (!(!m_ncc1_out || ncc1)) { - if (LOG) logerror("%s %s CCM0 read %05x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff); - data = m_ccm->nrdi_r(space, offset & 0x1ffff); + + if (LOG) logerror("%s %s CCM1 read %05x:%02x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff, data); } if (m_sw1) @@ -234,7 +234,7 @@ void hpc104_t::nwri_w(address_space &space, offs_t offset, UINT8 data, bool iom, { m_ncc1_out = BIT(data, 0); - if (LOG) logerror("NCC1 out %u\n", machine().time().as_string(), machine().describe_context(), m_ncc1_out); + if (LOG) logerror("%s %s NCC1 out %u\n", machine().time().as_string(), machine().describe_context(), m_ncc1_out); } } } diff --git a/src/devices/bus/sg1000_exp/fm_unit.cpp b/src/devices/bus/sg1000_exp/fm_unit.cpp index da3759ca26f..7e5e5998357 100644 --- a/src/devices/bus/sg1000_exp/fm_unit.cpp +++ b/src/devices/bus/sg1000_exp/fm_unit.cpp @@ -11,13 +11,31 @@ Release data from the Sega Retro project: Notes: -This emulation is based on Charles MacDonald's analysis of Enri's schematics -of the FM unit hardware. +The FM Unit add-on was released for the Mark III, so compatible games were +released only for that console and the Japanese SMS, that has the FM chip +built-in. The games play FM sound only when detect the FM hardware. The normal +PSG sound is replaced, except when sampled voices, not supported by the FM +chip, are played. Some games released for western SMS versions also contain FM +code, that is played on a Mark III / SMSJ when connected through a cartridge +adapter. + +The IO address map (read/write ports) is based on Charles MacDonald's analysis +of Enri's schematics of the FM unit hardware. Any software that access controllers through IO ports $C0/$C1 instead $DC/$DD (the game Fushigi no Oshiro Pit Pot is a known example) has control problems when the FM Sound Unit is attached (real hardware behavior). +TODO: + +- Confirm the assumption that PSG and FM sound are not mixed by the FM unit +and there is only FM sound when the unit is enabled. Two evidences that were +observed: every time a game with FM sound plays sampled voices through PSG, +the game disables/enables the FM chip before/after playing the PSG sound, and +a user reported, on the topic of the SMSPower Forums where the PSG/FM mixing +control of the SMSJ was discovered, that the hack that adds FM sound to Sonic +SMS version is not playing PSG sound on his Mark III with the FM unit. + **********************************************************************/ #include "fm_unit.h" @@ -33,6 +51,8 @@ const device_type SEGA_FM_UNIT = &device_creator<sega_fm_unit_device>; static MACHINE_CONFIG_FRAGMENT( fm_config ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_10_738635MHz/3) + // if this output gain is changed, the gain set when unmute the output need + // to be changed too, probably along the gain set for SMSJ/SMSKRFM drivers. MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":mono", 1.00) MACHINE_CONFIG_END @@ -56,6 +76,7 @@ sega_fm_unit_device::sega_fm_unit_device(const machine_config &mconfig, const ch device_t(mconfig, SEGA_FM_UNIT, "Sega FM Sound Unit", tag, owner, clock, "sega_fm_unit", __FILE__), device_sg1000_expansion_slot_interface(mconfig, *this), m_ym(*this, "ym2413"), + m_psg(*this, ":segapsg"), m_audio_control(0) { } @@ -78,6 +99,8 @@ void sega_fm_unit_device::device_start() READ8_MEMBER(sega_fm_unit_device::peripheral_r) { + // the value previously written to the control port is returned on all + // active read offsets. if (offset <= 3) { return m_audio_control & 0x01; @@ -95,20 +118,28 @@ WRITE8_MEMBER(sega_fm_unit_device::peripheral_w) switch (offset) { case 0: // register port - if (m_audio_control == 0x01) - { - m_ym->write(space, 0, data & 0x3f); - } + m_ym->write(space, 0, data & 0x3f); break; case 1: // data port - if (m_audio_control == 0x01) - { - m_ym->write(space, 1, data); - } + m_ym->write(space, 1, data); break; case 2: // control port case 3: // mirror m_audio_control = data & 0x01; + if (m_audio_control == 0x01) + { + m_ym->set_output_gain(0, 1.0); + // assume the PSG output is muted when FM is active. + // Out Run need this. Needs confirmation (see TODO). + if (m_psg.found()) + m_psg->set_output_gain(0, 0.0); + } + else + { + m_ym->set_output_gain(0, 0.0); + if (m_psg.found()) + m_psg->set_output_gain(0, 1.0); + } break; default: break; diff --git a/src/devices/bus/sg1000_exp/fm_unit.h b/src/devices/bus/sg1000_exp/fm_unit.h index 36ee2678350..9f71ff81190 100644 --- a/src/devices/bus/sg1000_exp/fm_unit.h +++ b/src/devices/bus/sg1000_exp/fm_unit.h @@ -14,6 +14,7 @@ #include "emu.h" #include "sound/ym2413.h" +#include "sound/sn76496.h" #include "sg1000exp.h" @@ -44,6 +45,7 @@ protected: private: required_device<ym2413_device> m_ym; + optional_device<segapsg_device> m_psg; UINT8 m_audio_control; }; diff --git a/src/devices/machine/aicartc.cpp b/src/devices/machine/aicartc.cpp index b4ebca893eb..e4ed8fa44b0 100644 --- a/src/devices/machine/aicartc.cpp +++ b/src/devices/machine/aicartc.cpp @@ -54,40 +54,43 @@ void aicartc_device::device_start() { m_clock_timer = timer_alloc(); m_clock_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock())); +} - { - UINT32 current_time; - int year_count,cur_year,i; - const int month_to_day_conversion[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; - system_time systime; - machine().base_datetime(systime); - - /* put the seconds */ - current_time = systime.local_time.second; - /* put the minutes */ - current_time+= systime.local_time.minute*60; - /* put the hours */ - current_time+= systime.local_time.hour*60*60; - /* put the days (note -1) */ - current_time+= (systime.local_time.mday-1)*60*60*24; - /* take the current year here for calculating leaps */ - cur_year = (systime.local_time.year); - - /* take the months - despite popular beliefs, leap years aren't just evenly divisible by 4 */ - if(((((cur_year % 4) == 0) && ((cur_year % 100) != 0)) || ((cur_year % 400) == 0)) && systime.local_time.month > 2) - current_time+= (month_to_day_conversion[systime.local_time.month]+1)*60*60*24; - else - current_time+= (month_to_day_conversion[systime.local_time.month])*60*60*24; - - /* put the years */ - year_count = (cur_year-1949); - - for(i=0;i<year_count-1;i++) - current_time += (((((i+1950) % 4) == 0) && (((i+1950) % 100) != 0)) || (((i+1950) % 400) == 0)) ? 60*60*24*366 : 60*60*24*365; - - m_rtc_reg_lo = current_time & 0x0000ffff; - m_rtc_reg_hi = (current_time & 0xffff0000) >> 16; - } + +//------------------------------------------------- +// rtc_clock_updated - +//------------------------------------------------- + +void aicartc_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) +{ + const int month_to_day_conversion[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; + + // put the seconds + UINT32 current_time = second; + + // put the minutes + current_time += minute * 60; + + // put the hours + current_time += hour * 60 * 60; + + // put the days (note -1) */ + current_time += (day - 1) * 60 * 60 * 24; + + // take the months - despite popular beliefs, leap years aren't just evenly divisible by 4 */ + if (((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0)) && month > 2) + current_time += (month_to_day_conversion[month - 1] + 1) * 60 * 60 * 24; + else + current_time += (month_to_day_conversion[month - 1]) * 60 * 60 * 24; + + // put the years + int year_count = (year - 1949); + + for (int i = 0; i < year_count - 1; i++) + current_time += (((((i+1950) % 4) == 0) && (((i+1950) % 100) != 0)) || (((i+1950) % 400) == 0)) ? 60*60*24*366 : 60*60*24*365; + + m_rtc_reg_lo = current_time & 0x0000ffff; + m_rtc_reg_hi = (current_time & 0xffff0000) >> 16; } diff --git a/src/devices/machine/aicartc.h b/src/devices/machine/aicartc.h index 6e1d9e2183e..f923ce073ca 100644 --- a/src/devices/machine/aicartc.h +++ b/src/devices/machine/aicartc.h @@ -11,6 +11,7 @@ Template for skeleton device #ifndef __AICARTCDEV_H__ #define __AICARTCDEV_H__ +#include "dirtc.h" //************************************************************************** @@ -48,6 +49,11 @@ protected: virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + // device_rtc_interface overrides + virtual bool rtc_feature_y2k() const override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } + virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; + private: emu_timer *m_clock_timer; }; diff --git a/src/devices/machine/ds1302.cpp b/src/devices/machine/ds1302.cpp index c2cd23b560f..b6f6b0675b4 100644 --- a/src/devices/machine/ds1302.cpp +++ b/src/devices/machine/ds1302.cpp @@ -113,8 +113,6 @@ void ds1302_device::device_start() void ds1302_device::device_reset() { - set_current_time(machine()); - m_clk = 0; m_ce = 0; m_state = STATE_COMMAND; diff --git a/src/devices/machine/ds1302.h b/src/devices/machine/ds1302.h index 515613579b2..273bd6bbc9e 100644 --- a/src/devices/machine/ds1302.h +++ b/src/devices/machine/ds1302.h @@ -19,6 +19,7 @@ #define __DS1302_H__ #include "emu.h" +#include "dirtc.h" @@ -63,7 +64,7 @@ protected: // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } private: void load_shift_register(); diff --git a/src/devices/machine/e0516.cpp b/src/devices/machine/e0516.cpp index f80cad5bdb5..acd6c2d0193 100644 --- a/src/devices/machine/e0516.cpp +++ b/src/devices/machine/e0516.cpp @@ -68,16 +68,6 @@ void e0516_device::device_start() //------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void e0516_device::device_reset() -{ - set_current_time(machine()); -} - - -//------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- @@ -196,3 +186,12 @@ READ_LINE_MEMBER( e0516_device::dio_r ) { return m_dio; } + + +//------------------------------------------------- +// rtc_clock_updated - +//------------------------------------------------- + +void e0516_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) +{ +} diff --git a/src/devices/machine/e0516.h b/src/devices/machine/e0516.h index 7e95be0dfc1..227c65dd2a5 100644 --- a/src/devices/machine/e0516.h +++ b/src/devices/machine/e0516.h @@ -22,7 +22,7 @@ #ifndef __E0516__ #define __E0516__ -#include "emu.h" +#include "dirtc.h" @@ -56,9 +56,11 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + // device_rtc_interface overrides + virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; + private: int m_cs; // chip select int m_clk; // clock diff --git a/src/devices/machine/hd64610.cpp b/src/devices/machine/hd64610.cpp index d4639892e17..f006b2a65d2 100644 --- a/src/devices/machine/hd64610.cpp +++ b/src/devices/machine/hd64610.cpp @@ -183,16 +183,6 @@ void hd64610_device::device_start() //------------------------------------------------- -// device_start - device-specific reset -//------------------------------------------------- - -void hd64610_device::device_reset() -{ - set_current_time(machine()); -} - - -//------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- diff --git a/src/devices/machine/hd64610.h b/src/devices/machine/hd64610.h index 021cf181c27..2dc5726ddea 100644 --- a/src/devices/machine/hd64610.h +++ b/src/devices/machine/hd64610.h @@ -27,6 +27,7 @@ #define __HD64610__ #include "emu.h" +#include "dirtc.h" @@ -67,7 +68,6 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_rtc_interface overrides diff --git a/src/devices/machine/mccs1850.cpp b/src/devices/machine/mccs1850.cpp index 72fb12a667a..28d29bab8bc 100644 --- a/src/devices/machine/mccs1850.cpp +++ b/src/devices/machine/mccs1850.cpp @@ -299,14 +299,18 @@ mccs1850_device::mccs1850_device(const machine_config &mconfig, const char *tag, //------------------------------------------------- -// set_counter - set the counter at startup time +// rtc_clock_changed - //------------------------------------------------- -void mccs1850_device::set_counter(UINT32 value) +void mccs1850_device::rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) { - m_counter = value; + // FIXME: implement this properly + system_time systime; + machine().base_datetime(systime); + m_counter = systime.time; } + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/machine/mccs1850.h b/src/devices/machine/mccs1850.h index e4179c47e82..c029bc3e89b 100644 --- a/src/devices/machine/mccs1850.h +++ b/src/devices/machine/mccs1850.h @@ -23,6 +23,7 @@ #define __MCCS1850__ #include "emu.h" +#include "dirtc.h" @@ -67,9 +68,6 @@ public: DECLARE_WRITE_LINE_MEMBER( por_w ); DECLARE_WRITE_LINE_MEMBER( test_w ); - // For setting the time at startup - void set_counter(UINT32 value); - protected: // device-level overrides virtual void device_start() override; @@ -81,6 +79,9 @@ protected: virtual void nvram_read(emu_file &file) override; virtual void nvram_write(emu_file &file) override; + // device_rtc_interface overrides + virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; + private: inline void check_interrupt(); inline void set_pse_line(bool state); diff --git a/src/devices/machine/mm58167.cpp b/src/devices/machine/mm58167.cpp index ed66df7603f..75e9e799004 100644 --- a/src/devices/machine/mm58167.cpp +++ b/src/devices/machine/mm58167.cpp @@ -83,8 +83,6 @@ void mm58167_device::device_start() void mm58167_device::device_reset() { - set_current_time(machine()); - m_regs[R_CTL_STATUS] = 0; // not busy m_regs[R_CTL_IRQSTATUS] = 0; m_regs[R_CTL_IRQCONTROL] = 0; diff --git a/src/devices/machine/mm58167.h b/src/devices/machine/mm58167.h index c1a7e0b320e..ab1a1d70eb2 100644 --- a/src/devices/machine/mm58167.h +++ b/src/devices/machine/mm58167.h @@ -12,6 +12,7 @@ #define __MM58167_H__ #include "emu.h" +#include "dirtc.h" //************************************************************************** @@ -50,7 +51,7 @@ protected: // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } void set_irq(int bit); void update_rtc(); diff --git a/src/devices/machine/msm5832.cpp b/src/devices/machine/msm5832.cpp index 21fdeb3ba63..e87396bcee8 100644 --- a/src/devices/machine/msm5832.cpp +++ b/src/devices/machine/msm5832.cpp @@ -122,16 +122,6 @@ void msm5832_device::device_start() //------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void msm5832_device::device_reset() -{ - set_current_time(machine()); -} - - -//------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- diff --git a/src/devices/machine/msm5832.h b/src/devices/machine/msm5832.h index a437501f23b..d436d4ccc78 100644 --- a/src/devices/machine/msm5832.h +++ b/src/devices/machine/msm5832.h @@ -24,6 +24,7 @@ #define __MSM5832__ #include "emu.h" +#include "dirtc.h" @@ -65,7 +66,6 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_rtc_interface overrides diff --git a/src/devices/machine/msm58321.cpp b/src/devices/machine/msm58321.cpp index 7bdd77713ea..a66f0ba9865 100644 --- a/src/devices/machine/msm58321.cpp +++ b/src/devices/machine/msm58321.cpp @@ -243,10 +243,6 @@ void msm58321_device::device_start() save_item(NAME(m_cs1)); save_item(NAME(m_address)); save_item(NAME(m_reg)); - - set_current_time(machine()); - - update_output(); } diff --git a/src/devices/machine/msm58321.h b/src/devices/machine/msm58321.h index 04d174eedc2..b4f9de48053 100644 --- a/src/devices/machine/msm58321.h +++ b/src/devices/machine/msm58321.h @@ -23,6 +23,7 @@ #define __MSM58321__ #include "emu.h" +#include "dirtc.h" @@ -89,7 +90,7 @@ protected: // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; - virtual bool rtc_feature_y2k() override { return m_year0 != 0; } + virtual bool rtc_feature_y2k() const override { return m_year0 != 0; } // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/machine/msm6242.cpp b/src/devices/machine/msm6242.cpp index a4a188cbcb6..9b0b35df2c3 100644 --- a/src/devices/machine/msm6242.cpp +++ b/src/devices/machine/msm6242.cpp @@ -86,9 +86,6 @@ void msm6242_device::device_start() m_timer = timer_alloc(TIMER_RTC_CALLBACK); m_timer->adjust(attotime::zero); - // get real time from system - set_current_time(machine()); - // set up registers m_tick = 0; m_irq_flag = 0; diff --git a/src/devices/machine/msm6242.h b/src/devices/machine/msm6242.h index f53e4b60f01..149d58eea38 100644 --- a/src/devices/machine/msm6242.h +++ b/src/devices/machine/msm6242.h @@ -12,6 +12,7 @@ #define __MSM6242DEV_H__ #include "emu.h" +#include "dirtc.h" #define MCFG_MSM6242_OUT_INT_HANDLER(_devcb) \ diff --git a/src/devices/machine/pcf8593.h b/src/devices/machine/pcf8593.h index 63b3befe6b9..b2b09f9ebd0 100644 --- a/src/devices/machine/pcf8593.h +++ b/src/devices/machine/pcf8593.h @@ -12,6 +12,7 @@ #define __PCF8593_H__ #include "emu.h" +#include "dirtc.h" //************************************************************************** @@ -45,7 +46,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_rtc_interface overrides - virtual bool rtc_feature_y2k() override { return true; } + virtual bool rtc_feature_y2k() const override { return true; } virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; // device_nvram_interface overrides diff --git a/src/devices/machine/rp5c01.cpp b/src/devices/machine/rp5c01.cpp index 5ac56b4b415..b2280909fa5 100644 --- a/src/devices/machine/rp5c01.cpp +++ b/src/devices/machine/rp5c01.cpp @@ -201,6 +201,12 @@ void rp5c01_device::device_start() m_16hz_timer->adjust(attotime::from_hz(clock() / 1024), 0, attotime::from_hz(clock() / 1024)); } + memset(m_reg, 0, sizeof(m_reg)); + memset(m_ram, 0, sizeof(m_ram)); + + // 24 hour mode + m_reg[MODE01][REGISTER_12_24_SELECT] = 1; + // state saving save_item(NAME(m_reg[MODE00])); save_item(NAME(m_reg[MODE01])); @@ -214,23 +220,6 @@ void rp5c01_device::device_start() //------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void rp5c01_device::device_reset() -{ - memset(m_reg, 0, sizeof(m_reg)); - memset(m_ram, 0, sizeof(m_ram)); - - // 24 hour mode - m_reg[MODE01][REGISTER_12_24_SELECT] = 1; - - if (m_battery_backed && clock() > 0) - set_current_time(machine()); -} - - -//------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h index f9cf0a12609..0043cc19b6c 100644 --- a/src/devices/machine/rp5c01.h +++ b/src/devices/machine/rp5c01.h @@ -24,6 +24,7 @@ #define __RP5C01__ #include "emu.h" +#include "dirtc.h" @@ -64,11 +65,11 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_rtc_interface overrides - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } + virtual bool rtc_battery_backed() const override { return m_battery_backed; } virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; // device_nvram_interface overrides diff --git a/src/devices/machine/rp5c15.cpp b/src/devices/machine/rp5c15.cpp index 7967366c349..88989b41d7c 100644 --- a/src/devices/machine/rp5c15.cpp +++ b/src/devices/machine/rp5c15.cpp @@ -238,16 +238,6 @@ void rp5c15_device::device_start() //------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void rp5c15_device::device_reset() -{ - set_current_time(machine()); -} - - -//------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h index 1e36dfaf60f..4a10eaeae3c 100644 --- a/src/devices/machine/rp5c15.h +++ b/src/devices/machine/rp5c15.h @@ -24,6 +24,7 @@ #define __RP5C15__ #include "emu.h" +#include "dirtc.h" @@ -59,11 +60,10 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_rtc_interface overrides - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; private: diff --git a/src/devices/machine/rtc4543.cpp b/src/devices/machine/rtc4543.cpp index b068e44f882..619ae57ad4a 100644 --- a/src/devices/machine/rtc4543.cpp +++ b/src/devices/machine/rtc4543.cpp @@ -89,8 +89,6 @@ void rtc4543_device::device_start() void rtc4543_device::device_reset() { - set_current_time(machine()); - m_ce = 0; m_wr = 0; m_clk = 0; diff --git a/src/devices/machine/rtc4543.h b/src/devices/machine/rtc4543.h index 966e15ab0b9..9a252424eb2 100644 --- a/src/devices/machine/rtc4543.h +++ b/src/devices/machine/rtc4543.h @@ -13,6 +13,7 @@ #define __RTC4543_H__ #include "emu.h" +#include "dirtc.h" @@ -63,7 +64,7 @@ protected: // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } // helpers virtual void ce_rising(); diff --git a/src/devices/machine/upd1990a.cpp b/src/devices/machine/upd1990a.cpp index 59f85d9c4ca..cfce446ba37 100644 --- a/src/devices/machine/upd1990a.cpp +++ b/src/devices/machine/upd1990a.cpp @@ -83,9 +83,6 @@ void upd1990a_device::device_start() m_write_data.resolve_safe(); m_write_tp.resolve_safe(); - // initialize - set_current_time(machine()); - for (auto & elem : m_shift_reg) elem = 0; diff --git a/src/devices/machine/upd1990a.h b/src/devices/machine/upd1990a.h index 3c80670ec8e..a526e920017 100644 --- a/src/devices/machine/upd1990a.h +++ b/src/devices/machine/upd1990a.h @@ -22,6 +22,7 @@ #define __UPD1990A__ #include "emu.h" +#include "dirtc.h" diff --git a/src/devices/machine/upd4992.cpp b/src/devices/machine/upd4992.cpp index 5e53da565a6..29535e60c94 100644 --- a/src/devices/machine/upd4992.cpp +++ b/src/devices/machine/upd4992.cpp @@ -61,16 +61,6 @@ void upd4992_device::device_start() } -//------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void upd4992_device::device_reset() -{ - set_current_time(machine()); -} - - void upd4992_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { switch (id) diff --git a/src/devices/machine/upd4992.h b/src/devices/machine/upd4992.h index 23d7dc50cea..dc907fed516 100644 --- a/src/devices/machine/upd4992.h +++ b/src/devices/machine/upd4992.h @@ -11,6 +11,7 @@ #ifndef __UPD4992DEV_H__ #define __UPD4992DEV_H__ +#include "dirtc.h" //************************************************************************** @@ -41,7 +42,6 @@ protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; - virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 72dd9b01d6a..50072d95995 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -377,11 +377,29 @@ bool device_image_interface::try_change_working_directory(const std::string &sub void device_image_interface::setup_working_directory() { - // first set up the working directory to be the starting directory - osd_get_full_path(m_working_directory, "."); + bool success = false; + // get user-specified directory and make sure it exists + m_working_directory = device().mconfig().options().sw_path(); + // if multipath, get first + size_t i = m_working_directory.find_first_of(";"); + if (i != std::string::npos) + m_working_directory.resize(i); + // validate directory + if (!m_working_directory.empty()) + if (osd::directory::open(m_working_directory)) + success = true; + + // if not exist, use previous method + if (!success) + { + // first set up the working directory to be the starting directory + osd_get_full_path(m_working_directory, "."); + // now try browsing down to "software" + if (try_change_working_directory("software")) + success = true; + } - // now try browsing down to "software" - if (try_change_working_directory("software")) + if (success) { // now down to a directory for this computer int gamedrv = driver_list::find(device().machine().system()); diff --git a/src/emu/dirtc.cpp b/src/emu/dirtc.cpp index 912c49d538d..3dd961c2aa6 100644 --- a/src/emu/dirtc.cpp +++ b/src/emu/dirtc.cpp @@ -9,7 +9,7 @@ ***************************************************************************/ #include "emu.h" - +#include "dirtc.h" //************************************************************************** @@ -76,11 +76,8 @@ void device_rtc_interface::set_time(bool update, int year, int month, int day, i // to the current system time //------------------------------------------------- -void device_rtc_interface::set_current_time(running_machine &machine) +void device_rtc_interface::set_current_time(const system_time &systime) { - system_time systime; - machine.base_datetime(systime); - set_time(true, systime.local_time.year, systime.local_time.month + 1, systime.local_time.mday, systime.local_time.weekday + 1, systime.local_time.hour, systime.local_time.minute, systime.local_time.second); } diff --git a/src/emu/dirtc.h b/src/emu/dirtc.h index 758157233ea..cbae4dfecd8 100644 --- a/src/emu/dirtc.h +++ b/src/emu/dirtc.h @@ -10,10 +10,6 @@ #pragma once -#ifndef __EMU_H__ -#error Dont include this file directly; include emu.h instead. -#endif - #ifndef __DIRTC_H__ #define __DIRTC_H__ @@ -52,7 +48,9 @@ public: virtual ~device_rtc_interface(); void set_time(bool update, int year, int month, int day, int day_of_week, int hour, int minute, int second); - void set_current_time(running_machine &machine); + void set_current_time(const system_time &systime); + + bool has_battery() const { return rtc_battery_backed(); } protected: static UINT8 convert_to_bcd(int val); @@ -68,12 +66,16 @@ protected: void adjust_seconds(); // derived class overrides - virtual bool rtc_feature_y2k() { return false; } - virtual bool rtc_feature_leap_year() { return false; } - virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) { } + virtual bool rtc_feature_y2k() const { return false; } + virtual bool rtc_feature_leap_year() const { return false; } + virtual bool rtc_battery_backed() const { return true; } + virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) = 0; int m_register[7]; }; +// iterator +typedef device_interface_iterator<device_rtc_interface> rtc_interface_iterator; + #endif /* __DIRTC_H__ */ diff --git a/src/emu/emu.h b/src/emu/emu.h index f170fc6295a..de2105fc68c 100644 --- a/src/emu/emu.h +++ b/src/emu/emu.h @@ -78,7 +78,6 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_ #include "disound.h" #include "divideo.h" #include "dinvram.h" -#include "dirtc.h" #include "didisasm.h" #include "schedule.h" #include "timer.h" diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp index 1c488239efa..d9cde626d01 100644 --- a/src/emu/emuopts.cpp +++ b/src/emu/emuopts.cpp @@ -39,6 +39,7 @@ const options_entry emu_options::s_option_entries[] = { OPTION_CROSSHAIRPATH, "crosshair", OPTION_STRING, "path to crosshair files" }, { OPTION_PLUGINSPATH, "plugins", OPTION_STRING, "path to plugin files" }, { OPTION_LANGUAGEPATH, "language", OPTION_STRING, "path to language files" }, + { OPTION_SWPATH, "software", OPTION_STRING, "path to loose software" }, // output directory options { nullptr, nullptr, OPTION_HEADER, "CORE OUTPUT DIRECTORY OPTIONS" }, diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h index 5275b65614f..ec0ee216bbe 100644 --- a/src/emu/emuopts.h +++ b/src/emu/emuopts.h @@ -36,6 +36,7 @@ #define OPTION_CROSSHAIRPATH "crosshairpath" #define OPTION_PLUGINSPATH "pluginspath" #define OPTION_LANGUAGEPATH "languagepath" +#define OPTION_SWPATH "swpath" // core directory options #define OPTION_CFG_DIRECTORY "cfg_directory" @@ -224,6 +225,7 @@ public: const char *crosshair_path() const { return value(OPTION_CROSSHAIRPATH); } const char *plugins_path() const { return value(OPTION_PLUGINSPATH); } const char *language_path() const { return value(OPTION_LANGUAGEPATH); } + const char *sw_path() const { return value(OPTION_SWPATH); } // core directory options const char *cfg_directory() const { return value(OPTION_CFG_DIRECTORY); } diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index 5e8c5f478d1..adce482a19c 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -79,6 +79,7 @@ #include "unzip.h" #include "debug/debugvw.h" #include "debug/debugcpu.h" +#include "dirtc.h" #include "image.h" #include "network.h" #include "ui/uimain.h" @@ -267,7 +268,6 @@ void running_machine::start() else if (options().autosave() && (m_system.flags & MACHINE_SUPPORTS_SAVE) != 0) schedule_load("auto"); - manager().update_machine(); } @@ -300,7 +300,7 @@ int running_machine::run(bool quiet) // then finish setting up our local machine start(); - // load the configuration settings and NVRAM + // load the configuration settings m_configuration->load_settings(); // disallow save state registrations starting here. @@ -308,7 +308,12 @@ int running_machine::run(bool quiet) // devices with timers. m_save.allow_registration(false); + // load the NVRAM nvram_load(); + + // set the time on RTCs (this may overwrite parts of NVRAM) + set_rtc_datetime(system_time(m_base_time)); + sound().ui_mute(false); if (!quiet) sound().start_recording(); @@ -796,6 +801,19 @@ void running_machine::current_datetime(system_time &systime) //------------------------------------------------- +// set_rtc_datetime - set the current time on +// battery-backed RTCs +//------------------------------------------------- + +void running_machine::set_rtc_datetime(const system_time &systime) +{ + for (device_rtc_interface &rtc : rtc_interface_iterator(root_device())) + if (rtc.has_battery()) + rtc.set_current_time(systime); +} + + +//------------------------------------------------- // rand - standardized random numbers //------------------------------------------------- @@ -1171,6 +1189,11 @@ system_time::system_time() set(0); } +system_time::system_time(time_t t) +{ + set(t); +} + //------------------------------------------------- // set - fills out a system_time structure diff --git a/src/emu/machine.h b/src/emu/machine.h index 788a6cff7fd..38f64247991 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -107,6 +107,7 @@ class system_time { public: system_time(); + explicit system_time(time_t t); void set(time_t t); struct full_time @@ -226,6 +227,7 @@ public: // date & time void base_datetime(system_time &systime); void current_datetime(system_time &systime); + void set_rtc_datetime(const system_time &systime); // misc void popmessage() const { popmessage(static_cast<char const *>(nullptr)); } diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index c3fbb049ffa..d7f9a7e76e6 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -14,7 +14,6 @@ #include "chd.h" #include "emuopts.h" #include "mameopts.h" -#include "jedparse.h" #include "audit.h" #include "info.h" #include "unzip.h" @@ -22,8 +21,7 @@ #include "sound/samples.h" #include "clifront.h" #include "xmlfile.h" - -#include "drivenum.h" +#include "media_ident.h" #include "osdepend.h" #include "softlist_dev.h" @@ -31,10 +29,7 @@ #include "ui/moptions.h" #include "language.h" #include "pluginopts.h" - -#include "linenoise-ng/include/linenoise.h" -#include <atomic> -#include <thread> +#include "console.h" #include <new> #include <ctype.h> @@ -115,294 +110,6 @@ const options_entry cli_option_entries[] = { nullptr } }; - -// media_identifier class identifies media by hash via a search in -// the driver database -class media_identifier -{ -public: - // construction/destruction - media_identifier(emu_options &options); - - // getters - int total() const { return m_total; } - int matches() const { return m_matches; } - int nonroms() const { return m_nonroms; } - - // operations - void reset() { m_total = m_matches = m_nonroms = 0; } - void identify(const char *name); - void identify_file(const char *name); - void identify_data(const char *name, const UINT8 *data, int length); - int find_by_hash(const util::hash_collection &hashes, int length); - -private: - // internal state - driver_enumerator m_drivlist; - int m_total; - int m_matches; - int m_nonroms; -}; - - - -//************************************************************************** -// MEDIA IDENTIFIER -//************************************************************************** - -//------------------------------------------------- -// media_identifier - constructor -//------------------------------------------------- - -media_identifier::media_identifier(emu_options &options) - : m_drivlist(options), - m_total(0), - m_matches(0), - m_nonroms(0) -{ -} - - -//------------------------------------------------- -// identify - identify a directory, ZIP file, -// or raw file -//------------------------------------------------- - -void media_identifier::identify(const char *filename) -{ - // first try to open as a directory - osd::directory::ptr directory = osd::directory::open(filename); - if (directory) - { - // iterate over all files in the directory - for (const osd::directory::entry *entry = directory->read(); entry != nullptr; entry = directory->read()) - if (entry->type == osd::directory::entry::entry_type::FILE) - { - std::string curfile = std::string(filename).append(PATH_SEPARATOR).append(entry->name); - identify(curfile.c_str()); - } - - // close the directory and be done - directory.reset(); - } - - // if that failed, and the filename ends with .zip, identify as a ZIP file - if (core_filename_ends_with(filename, ".7z") || core_filename_ends_with(filename, ".zip")) - { - // first attempt to examine it as a valid _7Z file - util::archive_file::ptr archive; - util::archive_file::error err; - if (core_filename_ends_with(filename, ".7z")) - err = util::archive_file::open_7z(filename, archive); - else - err = util::archive_file::open_zip(filename, archive); - if ((err == util::archive_file::error::NONE) && archive) - { - std::vector<std::uint8_t> data; - - // loop over entries in the .7z, skipping empty files and directories - for (int i = archive->first_file(); i >= 0; i = archive->next_file()) - { - const std::uint64_t length(archive->current_uncompressed_length()); - if (!archive->current_is_directory() && (length != 0) && (std::uint32_t(length) == length)) - { - // decompress data into RAM and identify it - try - { - data.resize(std::size_t(length)); - err = archive->decompress(&data[0], std::uint32_t(length)); - if (err == util::archive_file::error::NONE) - identify_data(archive->current_name().c_str(), &data[0], length); - } - catch (...) - { - // resizing the buffer could cause a bad_alloc if archive contains large files - } - data.clear(); - } - } - } - - // clear out any cached files - archive.reset(); - util::archive_file::cache_clear(); - } - - // otherwise, identify as a raw file - else - identify_file(filename); -} - - -//------------------------------------------------- -// identify_file - identify a file -//------------------------------------------------- - -void media_identifier::identify_file(const char *name) -{ - // CHD files need to be parsed and their hashes extracted from the header - if (core_filename_ends_with(name, ".chd")) - { - // output the name - osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); - m_total++; - - // attempt to open as a CHD; fail if not - chd_file chd; - chd_error err = chd.open(name); - if (err != CHDERR_NONE) - { - osd_printf_info("NOT A CHD\n"); - m_nonroms++; - return; - } - - // error on writable CHDs - if (!chd.compressed()) - { - osd_printf_info("is a writeable CHD\n"); - return; - } - - // otherwise, get the hash collection for this CHD - util::hash_collection hashes; - if (chd.sha1() != util::sha1_t::null) - hashes.add_sha1(chd.sha1()); - - // determine whether this file exists - int found = find_by_hash(hashes, chd.logical_bytes()); - if (found == 0) - osd_printf_info("NO MATCH\n"); - else - m_matches++; - } - - // all other files have their hashes computed directly - else - { - // load the file and process if it opens and has a valid length - UINT32 length; - void *data; - const osd_file::error filerr = util::core_file::load(name, &data, length); - if (filerr == osd_file::error::NONE && length > 0) - { - identify_data(name, reinterpret_cast<UINT8 *>(data), length); - osd_free(data); - } - } -} - - -//------------------------------------------------- -// identify_data - identify a buffer full of -// data; if it comes from a .JED file, parse the -// fusemap into raw data first -//------------------------------------------------- - -void media_identifier::identify_data(const char *name, const UINT8 *data, int length) -{ - // if this is a '.jed' file, process it into raw bits first - dynamic_buffer tempjed; - jed_data jed; - if (core_filename_ends_with(name, ".jed") && jed_parse(data, length, &jed) == JEDERR_NONE) - { - // now determine the new data length and allocate temporary memory for it - length = jedbin_output(&jed, nullptr, 0); - tempjed.resize(length); - jedbin_output(&jed, &tempjed[0], length); - data = &tempjed[0]; - } - - // compute the hash of the data - util::hash_collection hashes; - hashes.compute(data, length, util::hash_collection::HASH_TYPES_CRC_SHA1); - - // output the name - m_total++; - osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); - - // see if we can find a match in the ROMs - int found = find_by_hash(hashes, length); - - // if we didn't find it, try to guess what it might be - if (found == 0) - osd_printf_info("NO MATCH\n"); - - // if we did find it, count it as a match - else - m_matches++; -} - - -//------------------------------------------------- -// find_by_hash - scan for a file in the list -// of drivers by hash -//------------------------------------------------- - -int media_identifier::find_by_hash(const util::hash_collection &hashes, int length) -{ - int found = 0; - std::unordered_set<std::string> listnames; - std::unordered_set<std::string> shortnames; - - // iterate over drivers - m_drivlist.reset(); - while (m_drivlist.next()) - { - // iterate over devices, regions and files within the region - for (device_t &device : device_iterator(m_drivlist.config().root_device())) - { - if (shortnames.insert(device.shortname()).second) - { - for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) - for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) - { - util::hash_collection romhashes(ROM_GETHASHDATA(rom)); - if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP) && hashes == romhashes) - { - bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); - - // output information about the match - if (found) - osd_printf_info(" "); - osd_printf_info("= %s%-20s %-10s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), m_drivlist.driver().name, m_drivlist.driver().description); - found++; - } - } - } - } - - // next iterate over softlists - for (software_list_device &swlistdev : software_list_device_iterator(m_drivlist.config().root_device())) - { - if (listnames.insert(swlistdev.list_name()).second) - { - for (const software_info &swinfo : swlistdev.get_info()) - for (const software_part &part : swinfo.parts()) - for (const rom_entry *region = part.romdata().data(); region != nullptr; region = rom_next_region(region)) - for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) - { - util::hash_collection romhashes(ROM_GETHASHDATA(rom)); - if (hashes == romhashes) - { - bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); - - // output information about the match - if (found) - osd_printf_info(" "); - osd_printf_info("= %s%-20s %s:%s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), swlistdev.list_name().c_str(), swinfo.shortname().c_str(), swinfo.longname().c_str()); - found++; - } - } - } - } - } - - return found; -} - - - void print_summary( const media_auditor &auditor, media_auditor::summary summary, bool record_none_needed, const char *type, const char *name, const char *parent, @@ -581,95 +288,7 @@ void cli_frontend::start_execution(mame_machine_manager *manager,int argc, char m_result = manager->execute(); } } -/* -static const char* examples[] = { - "db", "hello", "hallo", "hans", "hansekogge", "seamann", "quetzalcoatl", "quit", "power", NULL -}; - -void completionHook(char const* prefix, linenoiseCompletions* lc) { - size_t i; - for (i = 0; examples[i] != NULL; ++i) { - if (strncmp(prefix, examples[i], strlen(prefix)) == 0) { - linenoiseAddCompletion(lc, examples[i]); - } - } -} -*/ - -void read_console(std::atomic<bool>& run, std::atomic<bool>& wait, std::string &cmdLine) -{ - char const* prompt = "\x1b[1;36m[MAME]\x1b[0m> "; - - while (run.load()) - { - while (wait.load()) - { - using namespace std::chrono_literals; - std::this_thread::sleep_for(100ms); - } - char* result = linenoise(prompt); - if (result == NULL) - { - continue; - } -/* else if (!strncmp(result, "/history", 8)) { - // Display the current history. - for (int index = 0; ; ++index) { - char* hist = linenoiseHistoryLine(index); - if (hist == NULL) break; - printf("%4d: %s\n", index, hist); - free(hist); - } - }*/ - else if (*result == '\0') { - free(result); - continue; - } - cmdLine = std::string(result); - linenoiseHistoryAdd(result); - //prompt = "\x1b[1;36m[MAME]\x1b[0m \x1b[1;32m[test]\x1b[0m> "; - - free(result); - wait.store(true); - } -} - -void cli_frontend::start_console() -{ - linenoiseInstallWindowChangeHandler(); - std::string cmdLine = ""; - const char* file = "./history"; - - linenoiseHistoryLoad(file); - //linenoiseSetCompletionCallback(completionHook); - printf(" _/ _/ _/_/ _/ _/ _/_/_/_/\n"); - printf(" _/_/ _/_/ _/ _/ _/_/ _/_/ _/ \n"); - printf(" _/ _/ _/ _/_/_/_/ _/ _/ _/ _/_/_/ \n"); - printf(" _/ _/ _/ _/ _/ _/ _/ \n"); - printf("_/ _/ _/ _/ _/ _/ _/_/_/_/ \n"); - printf("\n"); - printf("%s v%s\n%s\n\n", emulator_info::get_appname(), build_version, emulator_info::get_copyright_info()); - - std::atomic<bool> run(true), wait(false); - std::thread cinThread(read_console, std::ref(run), std::ref(wait), std::ref(cmdLine)); - - while (run.load()) - { - if (wait.load()) - { - //printf("command %s\n", cmdLine.c_str()); - cmdLine.clear(); - wait.store(false); - } - } - - run.store(false); - cinThread.join(); - - linenoiseHistorySave(file); - linenoiseHistoryFree(); -} //------------------------------------------------- // execute - execute a game via the standard // command line interface @@ -695,7 +314,8 @@ int cli_frontend::execute(int argc, char **argv) if (m_options.console()) { //manager->lua()->start_console(); - start_console(); + console_frontend console(m_options, m_osd); + console.start_console(); } else { start_execution(manager, argc, argv, option_errors); } diff --git a/src/frontend/mame/clifront.h b/src/frontend/mame/clifront.h index aeceeace397..4e3958cd5c3 100644 --- a/src/frontend/mame/clifront.h +++ b/src/frontend/mame/clifront.h @@ -62,7 +62,6 @@ private: void display_suggestions(const char *gamename); void output_single_softlist(FILE *out, software_list_device &swlist); void start_execution(mame_machine_manager *manager, int argc, char **argv, std::string &option_errors); - void start_console(); // internal state emu_options & m_options; diff --git a/src/frontend/mame/console.cpp b/src/frontend/mame/console.cpp new file mode 100644 index 00000000000..2d77380a94a --- /dev/null +++ b/src/frontend/mame/console.cpp @@ -0,0 +1,185 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/*************************************************************************** + + console.c + + Console interface frontend for MAME. + +***************************************************************************/ + +#include "emu.h" +#include "console.h" +#include "linenoise-ng/include/linenoise.h" +#include "mame.h" + +#include <atomic> +#include <thread> + +static console_frontend *gConsole = nullptr; +//------------------------------------------------- +// console_frontend - constructor +//------------------------------------------------- + +console_frontend::console_frontend(emu_options &options, osd_interface &osd) + : //m_options(options), + //m_osd(osd), + m_run(true), + m_wait(false), + m_prompt("\x1b[1;36m[MAME]\x1b[0m> ") +{ + using namespace std::placeholders; + m_commands.insert(std::make_pair("quit", std::bind(&console_frontend::cmd_quit, this, _1))); + m_commands.insert(std::make_pair("exit", std::bind(&console_frontend::cmd_quit, this, _1))); + gConsole = this; +} + + +//------------------------------------------------- +// ~console_frontend - destructor +//------------------------------------------------- + +console_frontend::~console_frontend() +{ +} + +void console_frontend::completion(char const* prefix, linenoiseCompletions* lc) +{ + for (auto cmd : m_commands) + { + if (strncmp(prefix, cmd.first.c_str(), strlen(prefix)) == 0) + { + linenoiseAddCompletion(lc, cmd.first.c_str()); + } + } +} + +void console_frontend::cmd_quit(std::vector<std::string>& arg) +{ + printf("Exiting application\n"); + m_run.store(false); + m_wait.store(false); +} + +void console_frontend::read_console(std::string &cmdLine) +{ + while (m_run.load()) + { + while (m_wait.load()) + { + using namespace std::chrono_literals; + std::this_thread::sleep_for(100ms); + } + if (!m_run.load()) break; + char* result = linenoise(m_prompt.c_str()); + if (result == NULL) + { + continue; + } + else if (*result == '\0') { + free(result); + continue; + } + cmdLine = std::string(result); + linenoiseHistoryAdd(result); + //m_prompt = "\x1b[1;36m[MAME]\x1b[0m \x1b[1;32m[test]\x1b[0m> "; + + free(result); + m_wait.store(true); + } +} + +void console_frontend::split_command(std::vector<std::string>& arg, std::string command) +{ + int len = command.length(); + bool qot = false, sqot = false; + int arglen; + for (int i = 0; i < len; i++) { + int start = i; + if (command[i] == '\"') { + qot = true; + } + else if (command[i] == '\'') sqot = true; + + if (qot) { + i++; + start++; + while (i<len && command[i] != '\"') + i++; + if (i<len) + qot = false; + arglen = i - start; + i++; + } + else if (sqot) { + i++; + while (i<len && command[i] != '\'') + i++; + if (i<len) + sqot = false; + arglen = i - start; + i++; + } + else { + while (i<len && command[i] != ' ') + i++; + arglen = i - start; + } + arg.push_back(command.substr(start, arglen)); + } +} + +static void completionHook(char const* prefix, linenoiseCompletions* lc) +{ + gConsole->completion(prefix, lc); +} + +void console_frontend::start_console() +{ + linenoiseInstallWindowChangeHandler(); + std::string cmdLine = ""; + const char* file = "./history"; + + linenoiseHistoryLoad(file); + linenoiseSetCompletionCallback(completionHook); + + // Display app info + printf(" _/ _/ _/_/ _/ _/ _/_/_/_/\n"); + printf(" _/_/ _/_/ _/ _/ _/_/ _/_/ _/ \n"); + printf(" _/ _/ _/ _/_/_/_/ _/ _/ _/ _/_/_/ \n"); + printf(" _/ _/ _/ _/ _/ _/ _/ \n"); + printf("_/ _/ _/ _/ _/ _/ _/_/_/_/ \n"); + printf("\n"); + printf("%s v%s\n%s\n\n", emulator_info::get_appname(), build_version, emulator_info::get_copyright_info()); + + + std::thread cinThread(&console_frontend::read_console, this, std::ref(cmdLine)); + + while (m_run.load()) + { + if (m_wait.load()) + { + std::vector<std::string> arg; + split_command(arg, cmdLine); + auto command = m_commands.find(arg[0]); + if (command != m_commands.end()) + { + command->second(arg); + } + else { + printf("Unknown command: %s\n", arg[0].c_str()); + } + cmdLine.clear(); + m_wait.store(false); + } else { + using namespace std::chrono_literals; + std::this_thread::sleep_for(100ms); + } + } + + m_run.store(false); + cinThread.join(); + + linenoiseHistorySave(file); + linenoiseHistoryFree(); +} diff --git a/src/frontend/mame/console.h b/src/frontend/mame/console.h new file mode 100644 index 00000000000..c2bfb0c87a1 --- /dev/null +++ b/src/frontend/mame/console.h @@ -0,0 +1,44 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/*************************************************************************** + + console.c + + Console interface frontend for MAME. + +***************************************************************************/ +#ifndef MAME_FRONTEND_CONSOLE_H +#define MAME_FRONTEND_CONSOLE_H + +#pragma once + +#include "emu.h" + +struct linenoiseCompletions; + +class console_frontend +{ +public: + // construction/destruction + console_frontend(emu_options &options, osd_interface &osd); + ~console_frontend(); + + void start_console(); + void completion(char const* prefix, linenoiseCompletions* lc); + +private: + void read_console(std::string &cmdLine); + void split_command(std::vector<std::string>& arg, std::string command); + + void cmd_quit(std::vector<std::string>& arg); + // internal state + //emu_options & m_options; + //osd_interface & m_osd; + std::atomic<bool> m_run; + std::atomic<bool> m_wait; + std::string m_prompt; + + std::unordered_map<std::string, std::function<void(std::vector<std::string>& arg)>> m_commands; +}; + +#endif /* MAME_FRONTEND_CONSOLE_H */ diff --git a/src/frontend/mame/media_ident.cpp b/src/frontend/mame/media_ident.cpp new file mode 100644 index 00000000000..892e9091247 --- /dev/null +++ b/src/frontend/mame/media_ident.cpp @@ -0,0 +1,273 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/*************************************************************************** + + media_ident.c + + Media identify. + +***************************************************************************/ + +#include "emu.h" +#include "drivenum.h" +#include "media_ident.h" +#include "unzip.h" +#include "jedparse.h" +#include "softlist_dev.h" + + +//************************************************************************** +// MEDIA IDENTIFIER +//************************************************************************** + +//------------------------------------------------- +// media_identifier - constructor +//------------------------------------------------- + +media_identifier::media_identifier(emu_options &options) + : m_drivlist(options), + m_total(0), + m_matches(0), + m_nonroms(0) +{ +} + + +//------------------------------------------------- +// identify - identify a directory, ZIP file, +// or raw file +//------------------------------------------------- + +void media_identifier::identify(const char *filename) +{ + // first try to open as a directory + osd::directory::ptr directory = osd::directory::open(filename); + if (directory) + { + // iterate over all files in the directory + for (const osd::directory::entry *entry = directory->read(); entry != nullptr; entry = directory->read()) + if (entry->type == osd::directory::entry::entry_type::FILE) + { + std::string curfile = std::string(filename).append(PATH_SEPARATOR).append(entry->name); + identify(curfile.c_str()); + } + + // close the directory and be done + directory.reset(); + } + + // if that failed, and the filename ends with .zip, identify as a ZIP file + if (core_filename_ends_with(filename, ".7z") || core_filename_ends_with(filename, ".zip")) + { + // first attempt to examine it as a valid _7Z file + util::archive_file::ptr archive; + util::archive_file::error err; + if (core_filename_ends_with(filename, ".7z")) + err = util::archive_file::open_7z(filename, archive); + else + err = util::archive_file::open_zip(filename, archive); + if ((err == util::archive_file::error::NONE) && archive) + { + std::vector<std::uint8_t> data; + + // loop over entries in the .7z, skipping empty files and directories + for (int i = archive->first_file(); i >= 0; i = archive->next_file()) + { + const std::uint64_t length(archive->current_uncompressed_length()); + if (!archive->current_is_directory() && (length != 0) && (std::uint32_t(length) == length)) + { + // decompress data into RAM and identify it + try + { + data.resize(std::size_t(length)); + err = archive->decompress(&data[0], std::uint32_t(length)); + if (err == util::archive_file::error::NONE) + identify_data(archive->current_name().c_str(), &data[0], length); + } + catch (...) + { + // resizing the buffer could cause a bad_alloc if archive contains large files + } + data.clear(); + } + } + } + + // clear out any cached files + archive.reset(); + util::archive_file::cache_clear(); + } + + // otherwise, identify as a raw file + else + identify_file(filename); +} + + +//------------------------------------------------- +// identify_file - identify a file +//------------------------------------------------- + +void media_identifier::identify_file(const char *name) +{ + // CHD files need to be parsed and their hashes extracted from the header + if (core_filename_ends_with(name, ".chd")) + { + // output the name + osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); + m_total++; + + // attempt to open as a CHD; fail if not + chd_file chd; + chd_error err = chd.open(name); + if (err != CHDERR_NONE) + { + osd_printf_info("NOT A CHD\n"); + m_nonroms++; + return; + } + + // error on writable CHDs + if (!chd.compressed()) + { + osd_printf_info("is a writeable CHD\n"); + return; + } + + // otherwise, get the hash collection for this CHD + util::hash_collection hashes; + if (chd.sha1() != util::sha1_t::null) + hashes.add_sha1(chd.sha1()); + + // determine whether this file exists + int found = find_by_hash(hashes, chd.logical_bytes()); + if (found == 0) + osd_printf_info("NO MATCH\n"); + else + m_matches++; + } + + // all other files have their hashes computed directly + else + { + // load the file and process if it opens and has a valid length + UINT32 length; + void *data; + const osd_file::error filerr = util::core_file::load(name, &data, length); + if (filerr == osd_file::error::NONE && length > 0) + { + identify_data(name, reinterpret_cast<UINT8 *>(data), length); + osd_free(data); + } + } +} + + +//------------------------------------------------- +// identify_data - identify a buffer full of +// data; if it comes from a .JED file, parse the +// fusemap into raw data first +//------------------------------------------------- + +void media_identifier::identify_data(const char *name, const UINT8 *data, int length) +{ + // if this is a '.jed' file, process it into raw bits first + dynamic_buffer tempjed; + jed_data jed; + if (core_filename_ends_with(name, ".jed") && jed_parse(data, length, &jed) == JEDERR_NONE) + { + // now determine the new data length and allocate temporary memory for it + length = jedbin_output(&jed, nullptr, 0); + tempjed.resize(length); + jedbin_output(&jed, &tempjed[0], length); + data = &tempjed[0]; + } + + // compute the hash of the data + util::hash_collection hashes; + hashes.compute(data, length, util::hash_collection::HASH_TYPES_CRC_SHA1); + + // output the name + m_total++; + osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); + + // see if we can find a match in the ROMs + int found = find_by_hash(hashes, length); + + // if we didn't find it, try to guess what it might be + if (found == 0) + osd_printf_info("NO MATCH\n"); + + // if we did find it, count it as a match + else + m_matches++; +} + + +//------------------------------------------------- +// find_by_hash - scan for a file in the list +// of drivers by hash +//------------------------------------------------- + +int media_identifier::find_by_hash(const util::hash_collection &hashes, int length) +{ + int found = 0; + std::unordered_set<std::string> listnames; + std::unordered_set<std::string> shortnames; + + // iterate over drivers + m_drivlist.reset(); + while (m_drivlist.next()) + { + // iterate over devices, regions and files within the region + for (device_t &device : device_iterator(m_drivlist.config().root_device())) + { + if (shortnames.insert(device.shortname()).second) + { + for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) + for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) + { + util::hash_collection romhashes(ROM_GETHASHDATA(rom)); + if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP) && hashes == romhashes) + { + bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); + + // output information about the match + if (found) + osd_printf_info(" "); + osd_printf_info("= %s%-20s %-10s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), m_drivlist.driver().name, m_drivlist.driver().description); + found++; + } + } + } + } + + // next iterate over softlists + for (software_list_device &swlistdev : software_list_device_iterator(m_drivlist.config().root_device())) + { + if (listnames.insert(swlistdev.list_name()).second) + { + for (const software_info &swinfo : swlistdev.get_info()) + for (const software_part &part : swinfo.parts()) + for (const rom_entry *region = part.romdata().data(); region != nullptr; region = rom_next_region(region)) + for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) + { + util::hash_collection romhashes(ROM_GETHASHDATA(rom)); + if (hashes == romhashes) + { + bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); + + // output information about the match + if (found) + osd_printf_info(" "); + osd_printf_info("= %s%-20s %s:%s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), swlistdev.list_name().c_str(), swinfo.shortname().c_str(), swinfo.longname().c_str()); + found++; + } + } + } + } + } + + return found; +} + diff --git a/src/frontend/mame/media_ident.h b/src/frontend/mame/media_ident.h new file mode 100644 index 00000000000..93ff8caad52 --- /dev/null +++ b/src/frontend/mame/media_ident.h @@ -0,0 +1,42 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/*************************************************************************** + + media_ident.h + + Media identify. + +***************************************************************************/ +#ifndef MAME_FRONTEND_MEDIA_IDENT_H +#define MAME_FRONTEND_MEDIA_IDENT_H + +// media_identifier class identifies media by hash via a search in +// the driver database +class media_identifier +{ +public: + // construction/destruction + media_identifier(emu_options &options); + + // getters + int total() const { return m_total; } + int matches() const { return m_matches; } + int nonroms() const { return m_nonroms; } + + // operations + void reset() { m_total = m_matches = m_nonroms = 0; } + void identify(const char *name); + void identify_file(const char *name); + void identify_data(const char *name, const UINT8 *data, int length); + int find_by_hash(const util::hash_collection &hashes, int length); + +private: + // internal state + driver_enumerator m_drivlist; + int m_total; + int m_matches; + int m_nonroms; +}; + + +#endif /* MAME_FRONTEND_MEDIA_IDENT_H */ diff --git a/src/frontend/mame/ui/dirmenu.cpp b/src/frontend/mame/ui/dirmenu.cpp index 36cf6dbd773..77d035c83c4 100644 --- a/src/frontend/mame/ui/dirmenu.cpp +++ b/src/frontend/mame/ui/dirmenu.cpp @@ -33,6 +33,7 @@ struct folders_entry static const folders_entry s_folders[] = { { __("ROMs"), OPTION_MEDIAPATH, ADDING }, + { __("Software Media"), OPTION_SWPATH, CHANGE }, { __("UI"), OPTION_UI_PATH, CHANGE }, { __("Language"), OPTION_LANGUAGEPATH, CHANGE }, { __("Samples"), OPTION_SAMPLEPATH, ADDING }, diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index b3deb7cf62d..fee8dd43390 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -724,6 +724,7 @@ missb2.cpp missile.cpp mitchell.cpp mjkjidai.cpp +mjsenpu.cpp mjsister.cpp mlanding.cpp mmagic.cpp diff --git a/src/mame/drivers/elecbowl.cpp b/src/mame/drivers/elecbowl.cpp deleted file mode 100644 index 297288fcbde..00000000000 --- a/src/mame/drivers/elecbowl.cpp +++ /dev/null @@ -1,220 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap, Kevin Horton -/*************************************************************************** - - ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) ** - - Marx Series 300 Electronic Bowling Game - Main board: - * TMS1100NLL MP3403 DBS 7836 SINGAPORE (no decap) - * 4*SN75492 quad segment driver, 2*SN74259 8-line demultiplexer, - 2*CD4043 quad r/s input latch - * 5 7seg LEDs, 15 lamps(10 lamps projected to bowling pins reflection), - 1bit-sound with crude volume control - * edge connector to sensors(switches trigger when ball rolls over) - and other inputs - - lamp translation table: SN74259.u5(mux 1) goes to MAME output lamp5x, - SN74259.u6(mux 2) goes to MAME output lamp6x. u1-u3 are SN75492 ICs, - where other: u1 A2 is N/C, u3 A1 is from O2 and goes to digits seg C. - - u5 Q0 -> u1 A4 -> L2 (pin #2) u6 Q0 -> u3 A4 -> L1 (pin #1) - u5 Q1 -> u1 A5 -> L4 (pin #4) u6 Q1 -> u3 A5 -> L5 (pin #5) - u5 Q2 -> u1 A6 -> L7 (pin #7) u6 Q2 -> u2 A3 -> L11 (player 1) - u5 Q3 -> u1 A1 -> L8 (pin #8) u6 Q3 -> u2 A2 -> L12 (player 2) - u5 Q4 -> u3 A2 -> L3 (pin #3) u6 Q4 -> u2 A1 -> L15 (?) - u5 Q5 -> u2 A6 -> L6 (pin #6) u6 Q5 -> u3 A6 -> L14 (?) - u5 Q6 -> u2 A5 -> L10 (pin #10) u6 Q6 -> u1 A3 -> L13 (spare) - u5 Q7 -> u2 A4 -> L9 (pin #9) u6 Q7 -> u3 A3 -> digit 4 B+C - -***************************************************************************/ - -#include "includes/hh_tms1k.h" -#include "elecbowl.lh" - - -class elecbowl_state : public hh_tms1k_state -{ -public: - elecbowl_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) - { } - - void prepare_display(); - DECLARE_WRITE16_MEMBER(write_r); - DECLARE_WRITE16_MEMBER(write_o); - DECLARE_READ8_MEMBER(read_k); -}; - - -/*************************************************************************** - - Display - -***************************************************************************/ - -void elecbowl_state::prepare_display() -{ - // standard 7segs - for (int y = 0; y < 4; y++) - { - m_display_segmask[y] = 0x7f; - m_display_state[y] = (m_r >> (y + 4) & 1) ? m_o : 0; - } - - // lamp muxes - UINT8 mask = 1 << (m_o & 7); - UINT8 d = (m_r & 2) ? mask : 0; - if (~m_r & 1) - m_display_state[5] = (m_display_state[5] & ~mask) | d; - if (~m_r & 4) - m_display_state[6] = (m_display_state[6] & ~mask) | d; - - // digit 4 is from mux2 Q7 - m_display_segmask[4] = 6; - m_display_state[4] = (m_display_state[6] & 0x80) ? 6 : 0; - - set_display_size(8, 7); - display_update(); -} - - - -/*************************************************************************** - - I/O - -***************************************************************************/ - -WRITE16_MEMBER(elecbowl_state::write_r) -{ - // R5-R7,R10: input mux - m_inp_mux = (data >> 5 & 7) | (data >> 7 & 8); - - // R9: speaker out - // R3,R8: speaker volume.. - m_speaker->level_w(data >> 9 & 1); - - // R4-R7: select digit - // R0,R2: lamp mux1,2 _enable - // R1: lamp muxes state - m_r = data; - prepare_display(); -} - -WRITE16_MEMBER(elecbowl_state::write_o) -{ - //if (data & 0x80) printf("%X ",data&0x7f); - - // O0-O2: lamp muxes select - // O0-O6: digit segments A-G - // O7: N/C - m_o = data & 0x7f; - prepare_display(); -} - -READ8_MEMBER(elecbowl_state::read_k) -{ - // K: multiplexed inputs - return read_inputs(4); -} - - - -/*************************************************************************** - - Inputs - -***************************************************************************/ - -static INPUT_PORTS_START( elecbowl ) - PORT_START("IN.0") // R5 - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) - - PORT_START("IN.1") // R6 - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) // reset/test? - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) // reset/test? - - PORT_START("IN.2") // R7 - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) - - PORT_START("IN.3") // R10 - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) // 2 players sw? -INPUT_PORTS_END - - - -/*************************************************************************** - - Machine Config - -***************************************************************************/ - -// output PLA is not decapped -static const UINT16 elecbowl_output_pla[0x20] = -{ - lA+lB+lC+lD+lE+lF, // 0 - lB+lC, // 1 - lA+lB+lG+lE+lD, // 2 - lA+lB+lG+lC+lD, // 3 - lF+lB+lG+lC, // 4 - lA+lF+lG+lC+lD, // 5 - lA+lF+lG+lC+lD+lE, // 6 - lA+lB+lC, // 7 - lA+lB+lC+lD+lE+lF+lG, // 8 - lA+lB+lG+lF+lC+lD, // 9 - - 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0,1,2,3,4,5,6,7, // lamp muxes select - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f -}; - -static MACHINE_CONFIG_START( elecbowl, elecbowl_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=33K, C=100pf - MCFG_TMS1XXX_OUTPUT_PLA(elecbowl_output_pla) - MCFG_TMS1XXX_READ_K_CB(READ8(elecbowl_state, read_k)) - MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecbowl_state, write_r)) - MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecbowl_state, write_o)) - - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) - MCFG_DEFAULT_LAYOUT(layout_elecbowl) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END - - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( elecbowl ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified - ROM_REGION( 365, "maincpu:opla", 0 ) - ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP ) -ROM_END - - -CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index e0484f7094b..f61f0b14743 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -19,6 +19,7 @@ - EAG missing bankswitch? where is the 2nd half of the 32KB ROM used, if at all? - Why does fexcelp give error beeps at start? As if chessboard buttons are pressed (button logic is not inverted). It works fine after pressing clear. + This also happens on real hardware if you manually upgrade model 6080. ****************************************************************************** @@ -346,6 +347,24 @@ CPU D6 to W: (model 6092, tied to VCC otherwise) ****************************************************************************** +Designer series: + +Designer 2000 (model 6102) +---------------- +8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01) +Ricoh RP65C02G CPU, 3MHz XTAL +PCB label 510-1129A01 +basically same as Excellence hardware, reskinned board + +Designer 1500 is on Z80 hardware + +Designer 2100 Display (model 6106) +---------------- +TODO + + +****************************************************************************** + Chesster (model 6120) There is also a German version titled Kishon Chesster ---------------- @@ -374,6 +393,7 @@ I/O is via TTL, see source code for more info // internal artwork #include "fidel_chesster.lh" // clickable #include "fidel_csc.lh" // clickable, with preliminary boardpieces simulation +#include "fidel_des2000.lh" // clickable #include "fidel_eag.lh" // clickable #include "fidel_eas.lh" // clickable #include "fidel_ex.lh" // clickable @@ -1634,6 +1654,15 @@ static MACHINE_CONFIG_DERIVED( fexcelp, fexcel ) MCFG_CPU_PROGRAM_MAP(fexcelp_map) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( fdes2000, fexcel ) + + /* basic machine hardware */ + MCFG_CPU_REPLACE("maincpu", R65C02, XTAL_3MHz) // RP65C02G + MCFG_CPU_PROGRAM_MAP(fexcelp_map) + + MCFG_DEFAULT_LAYOUT(layout_fidel_des2000) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( fexcelv, fexcelb ) /* sound hardware */ @@ -1987,6 +2016,11 @@ ROM_START( fexcelp ) ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) ) // GI 27C256, no label ROM_END +ROM_START( fdes2000 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI +ROM_END + ROM_START( fexcelv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256 @@ -2052,9 +2086,11 @@ CONS( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0 CONS( 1985, fexcel, 0, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model EP12)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, fexcelp, fexcel, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence (model 6083)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, fexcelb, fexcel, 0, fexcelb, fexcelb, driver_device, 0, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence (model 6092)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, driver_device, 0, "Fidelity Electronics", "Excel Display (model 6093)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, fexcelp, fexcel, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, driver_device, 0, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1989, fdes2000, 0, 0, fdes2000, fexcel, driver_device, 0, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Excellence series hardware CONS( 1990, chesster, 0, 0, chesster, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Chesster Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index f92d8ccdc02..8da6e77c0a0 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -18,6 +18,8 @@ pins emulation(with pullup/pulldown), for now there's a workaround which can be removed together with this note when we implement it across MAME. - VBRC card scanner + - VBRC MCU T1 is unknown + - Z80 WAIT pin is not fully emulated, affecting VBRC speech busy state Read the official manual(s) on how to play. @@ -354,7 +356,7 @@ A detailed description of the hardware can be found also in the patent 4,373,719 Voice Sensory Chess Challenger (VSC) ------------------------------------ -The display/button/LED/speech technology is identical to the above product. +The display/button/LED/speech technology is identical to Fidelity CSC. Only the CPU board was changed. As such, it works the same but is interfaced to different port chips this time. @@ -498,9 +500,9 @@ expect that the software reads these once on startup only. #include "includes/fidelz80.h" // internal artwork -#include "fidel_cc.lh" -#include "fidel_bcc.lh" -#include "fidel_vcc.lh" +#include "fidel_cc.lh" // clickable +#include "fidel_bcc.lh" // clickable +#include "fidel_vcc.lh" // clickable #include "fidel_vbrc.lh" #include "fidel_vsc.lh" // clickable @@ -1236,19 +1238,19 @@ static INPUT_PORTS_START( bcc ) PORT_START("IN.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("d4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) PORT_START("IN.1") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("g7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) PORT_START("IN.2") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("b2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) PORT_START("IN.3") @@ -1512,7 +1514,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( vsc, fidelz80_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) + MCFG_CPU_ADD("maincpu", Z80, 3900000) // 3.9MHz resonator MCFG_CPU_PROGRAM_MAP(vsc_map) MCFG_CPU_IO_MAP(vsc_io) MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80base_state, nmi_line_pulse, 600) // 555 timer, approx 600hz @@ -1734,18 +1736,18 @@ ROM_END ******************************************************************************/ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1978, cc10, 0, 0, cc10, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, cc7, 0, 0, bcc, bcc, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, cc10, 0, 0, cc10, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, cc7, 0, 0, bcc, bcc, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, vcc, 0, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, vccsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, vccg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, vccfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, vcc, 0, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, uvc, vcc, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, uvc, vcc, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, vscsp, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) @@ -1753,4 +1755,4 @@ CONS( 1980, vscg, vsc, 0, vsc, vscg, driver_device, 0, "Fideli CONS( 1980, vscfr, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/wildfire.cpp b/src/mame/drivers/hh_amis2k.cpp index fcb708de312..1cf99b74180 100644 --- a/src/mame/drivers/wildfire.cpp +++ b/src/mame/drivers/hh_amis2k.cpp @@ -13,6 +13,8 @@ TODO: + - driver needs a cleanup when another AMI S2000 handheld gets dumped/added + - sound emulation could still be improved - when the game strobes a led faster, it should appear brighter, for example when the ball hits one of the bumpers diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 80bc065cecc..6c85032dc74 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -7,8 +7,6 @@ part of a series is (or will be) in its own driver, see: - hh_tms1k: here - microvsn: Milton Bradley MicroVision - - mbdtower: Milton Bradley Dark Tower - - elecbowl: Marx Electronic Bowling - ticalc1x: TI TMS1K-based calculators - tispellb: TI Spelling B series gen. 1 - tispeak: TI Speak & Spell series gen. 1 @@ -21,14 +19,15 @@ @CP0904A TMS0970 1977, Milton Bradley Comp IV @MP0905B TMS0970 1977, Parker Brothers Codename Sector *MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?) - @MP0158 TMS1000 1979, Entex Soccer + @MP0158 TMS1000 1979, Entex Soccer (6003) @MP0163 TMS1000 1979, A-One LSI Match Number/LJN Electronic Concentration *MP0168 TMS1000 1979, Conic Basketball/Tandy Sports Arena @MP0170 TMS1000 1979, Conic Football - *MP0230 TMS1000? 1980, Entex Blast It + *MP0230 TMS1000? 1980, Entex Blast It (6015) @MP0914 TMS1000 1979, Entex Baseball 1 @MP0919 TMS1000 1979, Tiger Copy Cat (model 7-520) - @MP0923 TMS1000 1979, Entex Baseball 2 + *MP0920 TMS1000 1979, Entex Space Battle (6004) + @MP0923 TMS1000 1979, Entex Baseball 2 (6002) @MP1030 TMS1100 1980, APF Mathemagician @MP1133 TMS1470 1979, Kosmos Astro @MP1180 TMS1100 1980, Tomy Power House Pinball @@ -37,17 +36,17 @@ @MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150) @MP1204 TMS1100 1980, Entex Baseball 3 (6007) *MP1209 TMS1100 1980, U.S. Games Space Cruiser/Strategy Football - @MP1211 TMS1100 1980, Entex Space Invader + @MP1211 TMS1100 1980, Entex Space Invader (6012) @MP1218 TMS1100 1980, Entex Basketball 2 (6010) @MP1219 TMS1100 1980, U.S. Games Super Sports-4 - @MP1221 TMS1100 1980, Entex Raise The Devil + @MP1221 TMS1100 1980, Entex Raise The Devil (6011) *MP1296 TMS1100? 1982, Entex Black Knight @MP1312 TMS1100 1983, Gakken FX-Micom R-165/Tandy Radio Shack Science Fair Microcomputer Trainer *MP1359 TMS1100? 1985, Capsela CRC2000 @MP1525 TMS1170 1980, Coleco Head to Head Baseball *MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000 (? note: VFD-capable) @MP1801 TMS1700 1981, Tiger Ditto/Tandy Pocket Repeat (model 60-2152) - @MP2105 TMS1370 1979, Gakken/Entex Poker + @MP2105 TMS1370 1979, Gakken/Entex Poker (6005) *MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000 @MP2726 TMS1040 1979, Tomy Break Up *MP2788 TMS1040? 1980, Bandai Flight Time (? note: VFD-capable) @@ -61,7 +60,7 @@ *MP3320A TMS1000 1979, Coleco Head to Head Basketball *M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?) *M32018 TMS1000 1990, unknown device, decap/dump is available - MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.cpp + @MP3403 TMS1100 1978, Marx Electronic Bowling @MP3404 TMS1100 1978, Parker Brothers Merlin @MP3405 TMS1100 1979, Coleco Amaze-A-Tron @MP3415 TMS1100 1978, Coleco Electronic Quarterback @@ -94,11 +93,11 @@ @MP7313 TMS1400 1980, Parker Brothers Bank Shot @MP7314 TMS1400 1980, Parker Brothers Split Second MP7324 TMS1400 1985, Tiger K28/Coleco Talking Teacher -> tispeak.cpp - MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.cpp + @MP7332 TMS1400 1981, Milton Bradley Dark Tower @MP7334 TMS1400 1981, Coleco Total Control 4 @MP7351 TMS1400 1982, Parker Brothers Master Merlin @MP7551 TMS1670 1980, Entex Color Football 4 (6009) - @MPF553 TMS1670 1980, Gakken/Entex Jackpot: Gin Rummy & Black Jack (note: assume F to be a misprint) + @MPF553 TMS1670 1980, Gakken/Entex Jackpot: Gin Rummy & Black Jack (6008) (note: assume F to be a misprint) *MP7573 TMS1670? 1981, Entex Select-a-Game cartridge: Football 4 (? note: 40-pin, VFD-capable) inconsistent: @@ -121,6 +120,7 @@ - tbreakup: some of the leds flicker (rom and PLAs doublechecked) - bship discrete sound, netlist is documented - finish bshipb SN76477 sound + - improve elecbowl driver ***************************************************************************/ @@ -150,6 +150,7 @@ #include "ebaskb2.lh" #include "efootb4.lh" #include "einvader.lh" // test-layout(but still playable) +#include "elecbowl.lh" #include "elecdet.lh" #include "esoccer.lh" #include "fxmcr165.lh" // clickable @@ -161,6 +162,7 @@ #include "lostreas.lh" // clickable #include "matchnum.lh" // clickable #include "mathmagi.lh" +#include "mbdtower.lh" // clickable #include "mdndclab.lh" // clickable #include "merlin.lh" // clickable #include "mmerlin.lh" // clickable @@ -642,7 +644,6 @@ static INPUT_PORTS_START( mathmagi ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END - // output PLA is not decapped static const UINT16 mathmagi_output_pla[0x20] = { @@ -931,7 +932,6 @@ static INPUT_PORTS_START( zodiac ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END - // output PLA is not decapped static const UINT16 zodiac_output_pla[0x20] = { @@ -1849,7 +1849,6 @@ static INPUT_PORTS_START( cnfball2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END - // output PLA is not decapped static const UINT16 cnfball2_output_pla[0x20] = { @@ -3029,7 +3028,6 @@ static INPUT_PORTS_START( gpoker ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Bet") // BT INPUT_PORTS_END - void gpoker_state::machine_reset() { hh_tms1k_state::machine_reset(); @@ -3690,6 +3688,175 @@ MACHINE_CONFIG_END /*************************************************************************** + Marx Series 300 Electronic Bowling Game + * TMS1100NLL MP3403 DBS 7836 SINGAPORE (no decap) + * 4*SN75492 quad segment driver, 2*SN74259 8-line demultiplexer, + 2*CD4043 quad r/s input latch + * 5 7seg LEDs, 15 lamps(10 lamps projected to bowling pins reflection), + 1bit-sound with crude volume control + * edge connector to sensors(switches trigger when ball rolls over) + and other inputs + + lamp translation table: SN74259.u5(mux 1) goes to MAME output lamp5x, + SN74259.u6(mux 2) goes to MAME output lamp6x. u1-u3 are SN75492 ICs, + where other: u1 A2 is N/C, u3 A1 is from O2 and goes to digits seg C. + + u5 Q0 -> u1 A4 -> L2 (pin #2) u6 Q0 -> u3 A4 -> L1 (pin #1) + u5 Q1 -> u1 A5 -> L4 (pin #4) u6 Q1 -> u3 A5 -> L5 (pin #5) + u5 Q2 -> u1 A6 -> L7 (pin #7) u6 Q2 -> u2 A3 -> L11 (player 1) + u5 Q3 -> u1 A1 -> L8 (pin #8) u6 Q3 -> u2 A2 -> L12 (player 2) + u5 Q4 -> u3 A2 -> L3 (pin #3) u6 Q4 -> u2 A1 -> L15 (?) + u5 Q5 -> u2 A6 -> L6 (pin #6) u6 Q5 -> u3 A6 -> L14 (?) + u5 Q6 -> u2 A5 -> L10 (pin #10) u6 Q6 -> u1 A3 -> L13 (spare) + u5 Q7 -> u2 A4 -> L9 (pin #9) u6 Q7 -> u3 A3 -> digit 4 B+C + +***************************************************************************/ + +class elecbowl_state : public hh_tms1k_state +{ +public: + elecbowl_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_tms1k_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE16_MEMBER(write_r); + DECLARE_WRITE16_MEMBER(write_o); + DECLARE_READ8_MEMBER(read_k); +}; + +// handlers + +void elecbowl_state::prepare_display() +{ + // standard 7segs + for (int y = 0; y < 4; y++) + { + m_display_segmask[y] = 0x7f; + m_display_state[y] = (m_r >> (y + 4) & 1) ? m_o : 0; + } + + // lamp muxes + UINT8 mask = 1 << (m_o & 7); + UINT8 d = (m_r & 2) ? mask : 0; + if (~m_r & 1) + m_display_state[5] = (m_display_state[5] & ~mask) | d; + if (~m_r & 4) + m_display_state[6] = (m_display_state[6] & ~mask) | d; + + // digit 4 is from mux2 Q7 + m_display_segmask[4] = 6; + m_display_state[4] = (m_display_state[6] & 0x80) ? 6 : 0; + + set_display_size(8, 7); + display_update(); +} + +WRITE16_MEMBER(elecbowl_state::write_r) +{ + // R5-R7,R10: input mux + m_inp_mux = (data >> 5 & 7) | (data >> 7 & 8); + + // R9: speaker out + // R3,R8: speaker volume.. + m_speaker->level_w(data >> 9 & 1); + + // R4-R7: select digit + // R0,R2: lamp mux1,2 _enable + // R1: lamp muxes state + m_r = data; + prepare_display(); +} + +WRITE16_MEMBER(elecbowl_state::write_o) +{ + //if (data & 0x80) printf("%X ",data&0x7f); + + // O0-O2: lamp muxes select + // O0-O6: digit segments A-G + // O7: N/C + m_o = data & 0x7f; + prepare_display(); +} + +READ8_MEMBER(elecbowl_state::read_k) +{ + // K: multiplexed inputs + return read_inputs(4); +} + + +// config + +static INPUT_PORTS_START( elecbowl ) + PORT_START("IN.0") // R5 + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) + + PORT_START("IN.1") // R6 + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) // reset/test? + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) // reset/test? + + PORT_START("IN.2") // R7 + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) + + PORT_START("IN.3") // R10 + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) // 2 players sw? +INPUT_PORTS_END + +// output PLA is not decapped +static const UINT16 elecbowl_output_pla[0x20] = +{ + lA+lB+lC+lD+lE+lF, // 0 + lB+lC, // 1 + lA+lB+lG+lE+lD, // 2 + lA+lB+lG+lC+lD, // 3 + lF+lB+lG+lC, // 4 + lA+lF+lG+lC+lD, // 5 + lA+lF+lG+lC+lD+lE, // 6 + lA+lB+lC, // 7 + lA+lB+lC+lD+lE+lF+lG, // 8 + lA+lB+lG+lF+lC+lD, // 9 + + 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0,1,2,3,4,5,6,7, // lamp muxes select + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f +}; + +static MACHINE_CONFIG_START( elecbowl, elecbowl_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=33K, C=100pf + MCFG_TMS1XXX_OUTPUT_PLA(elecbowl_output_pla) + MCFG_TMS1XXX_READ_K_CB(READ8(elecbowl_state, read_k)) + MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecbowl_state, write_r)) + MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecbowl_state, write_o)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_elecbowl) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + Mattel Dungeons & Dragons - Computer Labyrinth Game * TMS1100 M34012-N2LL (die label M34012) * 72 buttons, no LEDs, 1-bit sound @@ -3739,52 +3906,52 @@ READ8_MEMBER(mdndclab_state::read_k) static INPUT_PORTS_START( mdndclab ) PORT_START("IN.0") // O0 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.1") // O1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.2") // O2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.3") // O3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.4") // O4 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.5") // O5 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.6") // O6 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.7") // O7 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h4") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h3") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h2") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.8") // R0 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Wall / Door") @@ -3793,52 +3960,52 @@ static INPUT_PORTS_START( mdndclab ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Warrior 2 / Treasure") PORT_START("IN.9") // R1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square a5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.10") // R2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square b5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.11") // R3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square c5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.12") // R4 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square d5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.13") // R5 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square e5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.14") // R6 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square f5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.15") // R7 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square g5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.16") // R8 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h8") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h7") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h6") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Square h5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Board Sensor") PORT_START("IN.17") // R9 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Switch Key") @@ -3847,7 +4014,6 @@ static INPUT_PORTS_START( mdndclab ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Dragon Attacks / Dragon Wakes") INPUT_PORTS_END - static MACHINE_CONFIG_START( mdndclab, mdndclab_state ) /* basic machine hardware */ @@ -4634,7 +4800,6 @@ static INPUT_PORTS_START( bigtrak ) PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END - void bigtrak_state::machine_start() { hh_tms1k_state::machine_start(); @@ -4671,6 +4836,238 @@ MACHINE_CONFIG_END /*************************************************************************** + Milton Bradley Dark Tower + * TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die label MP7332 + (assume same ROM contents between revisions) + * SN75494N MOS-to-LED digit driver + * motorized rotating reel + lightsensor, 1bit-sound + + This is a board game, it obviously requires game pieces and the board. + The emulated part is the centerpiece, a black tower with a rotating card + panel and LED digits for displaying health, amount of gold, etc. As far + as MAME is concerned, the game works fine. + + To start up the game, first press [MOVE], the machine now does a self-test. + Then select level and number of players and the game will start. Read the + official manual on how to play the game. + +***************************************************************************/ + +class mbdtower_state : public hh_tms1k_state +{ +public: + mbdtower_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_tms1k_state(mconfig, type, tag) + { } + + void prepare_display(); + bool sensor_led_on() { return m_display_decay[0][0] != 0; } + + int m_motor_pos; + int m_motor_pos_prev; + int m_motor_decay; + bool m_motor_on; + bool m_sensor_blind; + + TIMER_DEVICE_CALLBACK_MEMBER(motor_sim_tick); + + DECLARE_WRITE16_MEMBER(write_r); + DECLARE_WRITE16_MEMBER(write_o); + DECLARE_READ8_MEMBER(read_k); + +protected: + virtual void machine_start() override; +}; + +// handlers + +TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick) +{ + // it rotates counter-clockwise (when viewed from above) + if (m_motor_on) + { + m_motor_pos = (m_motor_pos - 1) & 0x7f; + + // give it some time to spin out when it's turned off + if (m_r & 0x200) + m_motor_decay += (m_motor_decay < 4); + else if (m_motor_decay > 0) + m_motor_decay--; + else + m_motor_on = false; + } + + // 8 evenly spaced holes in the rotation disc for the sensor to 'see' through. + // The first hole is much bigger, enabling the game to determine the position. + if ((m_motor_pos & 0xf) < 4 || m_motor_pos < 0xc) + m_sensor_blind = false; + else + m_sensor_blind = true; + + // on change, output info + if (m_motor_pos != m_motor_pos_prev) + output().set_value("motor_pos", 100 * (m_motor_pos / (float)0x80)); + + /* 3 display cards per hole, like this: + + (0) <---- display increments this way <---- (7) + + CURSED VICTORY WIZARD DRAGON GOLD KEY SCOUT WARRIOR (void) + LOST WARRIORS BAZAAR CLOSED SWORD SILVER KEY HEALER FOOD (void) + PLAGUE BRIGANDS KEY MISSING PEGASUS BRASS KEY GOLD BEAST (void) + */ + int card_pos = m_motor_pos >> 4 & 7; + if (card_pos != (m_motor_pos_prev >> 4 & 7)) + output().set_value("card_pos", card_pos); + + m_motor_pos_prev = m_motor_pos; +} + + +void mbdtower_state::prepare_display() +{ + // declare display matrix size and the 2 7segs + set_display_size(7, 3); + set_display_segmask(6, 0x7f); + + // update current state + if (~m_r & 0x10) + { + UINT8 o = BITSWAP8(m_o,7,0,4,3,2,1,6,5) & 0x7f; + m_display_state[2] = (m_o & 0x80) ? o : 0; + m_display_state[1] = (m_o & 0x80) ? 0 : o; + m_display_state[0] = (m_r >> 8 & 1) | (m_r >> 4 & 0xe); + + display_update(); + } + else + { + // display items turned off + display_matrix(7, 3, 0, 0); + } +} + +WRITE16_MEMBER(mbdtower_state::write_r) +{ + // R0-R2: input mux + m_inp_mux = data & 7; + + // R9: motor on + if ((m_r ^ data) & 0x200) + output().set_value("motor_on", data >> 9 & 1); + if (data & 0x200) + m_motor_on = true; + + // R3: N/C + // R4: 75494 /EN (speaker, lamps, digit select go through that IC) + // R5-R7: tower lamps + // R8: rotation sensor led + m_r = data; + prepare_display(); + + // R10: speaker out + m_speaker->level_w(~data >> 4 & data >> 10 & 1); +} + +WRITE16_MEMBER(mbdtower_state::write_o) +{ + // O0-O6: led segments A-G + // O7: digit select + m_o = data; + prepare_display(); +} + +READ8_MEMBER(mbdtower_state::read_k) +{ + // K: multiplexed inputs + // K8: rotation sensor + return read_inputs(3) | ((!m_sensor_blind && sensor_led_on()) ? 8 : 0); +} + + +// config + +/* physical button layout and labels is like this: + + (green) (l.blue) (red) + [YES/ [REPEAT] [NO/ + BUY] END] + + (yellow) (blue) (white) + [HAGGLE] [BAZAAR] [CLEAR] + + (blue) (blue) (blue) + [TOMB/ [MOVE] [SANCTUARY/ + RUIN] CITADEL] + + (orange) (blue) (d.yellow) + [DARK [FRONTIER] [INVENTORY] + TOWER] +*/ + +static INPUT_PORTS_START( mbdtower ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Inventory") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("No/End") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Clear") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Sanctuary/Citadel") + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Frontier") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Repeat") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("Bazaar") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Move") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Dark Tower") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Yes/Buy") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Haggle") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Tomb/Ruin") +INPUT_PORTS_END + +void mbdtower_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill + m_motor_pos = 0; + m_motor_pos_prev = -1; + m_motor_decay = 0; + m_motor_on = false; + m_sensor_blind = false; + + // register for savestates + save_item(NAME(m_motor_pos)); + /* save_item(NAME(m_motor_pos_prev)); */ // don't save! + save_item(NAME(m_motor_decay)); + save_item(NAME(m_motor_on)); + save_item(NAME(m_sensor_blind)); +} + +static MACHINE_CONFIG_START( mbdtower, mbdtower_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", TMS1400, 425000) // approximation - RC osc. R=43K, C=56pf + MCFG_TMS1XXX_READ_K_CB(READ8(mbdtower_state, read_k)) + MCFG_TMS1XXX_WRITE_R_CB(WRITE16(mbdtower_state, write_r)) + MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mbdtower_state, write_o)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("tower_motor", mbdtower_state, motor_sim_tick, attotime::from_msec(3500/0x80)) // ~3.5sec for a full rotation + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_mbdtower) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + Parker Brothers Code Name: Sector, by Bob Doyle * TMS0970 MCU, MP0905BNL ZA0379 (die label 0970F-05B) * 6-digit 7seg LED display + 4 LEDs for compass, no sound @@ -5564,7 +5961,6 @@ static INPUT_PORTS_START( tcfballa ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Display") INPUT_PORTS_END - // output PLA is not decapped, dumped electronically static const UINT16 tcfballa_output_pla[0x20] = { @@ -5600,12 +5996,17 @@ MACHINE_CONFIG_END * TMS1100 MCU, label CD7282SL * 12 lamps behind buttons, 1-bit sound - This handheld contains 12 minigames. It looks and plays like "Fabulous Fred" - by the Japanese company Mego Corp. in 1980, which in turn is a mix of Merlin - and Simon. Unlike Merlin and Simon, spin-offs like these were not successful. - There were releases with and without the prefix "Tandy-12", I don't know - which name was more common. Also not worth noting is that it needed five - batteries; 4 C-cells and a 9-volt. + known releases: + - World: Tandy-12: Computerized Arcade + - Mexico: Fabuloso Fred, distributed by Ensueno Toys (also released as + 9-button version, a clone of Mego Fabulous Fred) + + This handheld contains 12 minigames. It looks and plays like Game Robot 9 by + Gakken (aka Mego's Fabulous Fred) from 1980, which in turn is a mix of Merlin + and Simon. Unlike Merlin and Simon, spin-offs were not as successful in the USA. + There were releases with and without the prefix "Tandy-12", I don't know which + name was more common. Also not worth noting is that it needed five batteries; + four C-cells and a 9-volt. Some of the games require accessories included with the toy (eg. the Baseball game is played with a board representing the playing field). To start a game, @@ -5718,7 +6119,6 @@ static INPUT_PORTS_START( tandy12 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Button 5") INPUT_PORTS_END - // output PLA is not decapped static const UINT16 tandy12_output_pla[0x20] = { @@ -6588,7 +6988,6 @@ static INPUT_PORTS_START( ssports4 ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END - // output PLA is not decapped, dumped electronically static const UINT16 ssports4_output_pla[0x20] = { @@ -6913,6 +7312,17 @@ ROM_START( astro ) ROM_END +ROM_START( elecbowl ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp3403.u9", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, BAD_DUMP CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) ) // not verified + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_elecbowl_output.pla", 0, 365, NO_DUMP ) +ROM_END + + ROM_START( mdndclab ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) ) @@ -6993,6 +7403,17 @@ ROM_START( bigtrak ) ROM_END +ROM_START( mbdtower ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) + ROM_REGION( 557, "maincpu:opla", 0 ) + ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) ) +ROM_END + + ROM_START( cnsector ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) ) @@ -7240,6 +7661,8 @@ CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Ken COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // *** + CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) @@ -7248,6 +7671,7 @@ CONS( 1977, bshipb, bship, 0, bshipb, bship, driver_device, 0, "Mil CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // *** +CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, driver_device, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) // *** CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) // *** CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp index b1e46060f35..4aba54a2591 100644 --- a/src/mame/drivers/hh_ucom4.cpp +++ b/src/mame/drivers/hh_ucom4.cpp @@ -48,7 +48,7 @@ @258 uPD553C 1984, Tomy Alien Chase (TN-16) *296 uPD553C 1984, Epoch Computer Beam Gun Professional - *511 uPD557LC?1980, Gakken Game Robot 9/Mego Fabulous Fred + @511 uPD557LC 1980, Gakken Game Robot 9/Mego Fabulous Fred @512 uPD557LC 1980, Castle Toy Tactix @060 uPD650C 1979, Mattel Computer Gin @@ -70,6 +70,7 @@ TODO: // internal artwork #include "efball.lh" +#include "grobot9.lh" // clickable #include "mcompgin.lh" #include "mvbfree.lh" #include "tactix.lh" // clickable @@ -88,6 +89,7 @@ void hh_ucom4_state::machine_start() memset(m_display_segmask, 0, sizeof(m_display_segmask)); memset(m_port, 0, sizeof(m_port)); + m_int = 0; m_inp_mux = 0; m_grid = 0; m_plate = 0; @@ -103,6 +105,7 @@ void hh_ucom4_state::machine_start() save_item(NAME(m_display_segmask)); save_item(NAME(m_port)); + save_item(NAME(m_int)); save_item(NAME(m_inp_mux)); save_item(NAME(m_grid)); save_item(NAME(m_plate)); @@ -110,6 +113,7 @@ void hh_ucom4_state::machine_start() void hh_ucom4_state::machine_reset() { + refresh_interrupts(); } @@ -222,6 +226,31 @@ UINT8 hh_ucom4_state::read_inputs(int columns) } +// interrupt handling + +void hh_ucom4_state::refresh_interrupts() +{ + m_maincpu->set_input_line(0, m_int ? ASSERT_LINE : CLEAR_LINE); +} + +void hh_ucom4_state::set_interrupt(int state) +{ + state = state ? 1 : 0; + + if (state != m_int) + { + if (machine().phase() >= MACHINE_PHASE_RESET) + m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); + m_int = state; + } +} + +INPUT_CHANGED_MEMBER(hh_ucom4_state::single_interrupt_line) +{ + set_interrupt(newval); +} + + /*************************************************************************** @@ -1630,6 +1659,121 @@ MACHINE_CONFIG_END /*************************************************************************** + Gakken Game Robot 9 + * PCB label GAME ROBOT 7520 + * NEC uCOM-43 MCU, label TTGR-512 (die label NEC D557 511) + * 9 lamps behind buttons + + known releases: + - Japan: Game Robot 9 (Takatoku Toys?) + - USA: Fabulous Fred - The Ultimate Electronic Game, distributed by Mego + - Mexico: Fabuloso Fred, distributed by Ensueno Toys (also released as + 12-button version, a clone of Tandy-12) + + Accessories were included for some of the minigames. + +***************************************************************************/ + +class grobot9_state : public hh_ucom4_state +{ +public: + grobot9_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + DECLARE_WRITE8_MEMBER(lamps_w); + DECLARE_WRITE8_MEMBER(speaker_w); + DECLARE_WRITE8_MEMBER(input_w); + DECLARE_READ8_MEMBER(input_r); +}; + +// handlers + +WRITE8_MEMBER(grobot9_state::lamps_w) +{ + if (offset == NEC_UCOM4_PORTE) + { + // E1: speaker out + m_speaker->level_w(data >> 1 & 1); + + // E3: input mux high bit + m_inp_mux = (m_inp_mux & 7) | (data & 8); + } + + // D,F,E0: lamps + m_port[offset] = data; + display_matrix(9, 1, m_port[NEC_UCOM4_PORTD] | m_port[NEC_UCOM4_PORTF] << 4 | m_port[NEC_UCOM4_PORTE] << 8, 1); +} + +WRITE8_MEMBER(grobot9_state::input_w) +{ + // C012: input mux low + m_inp_mux = (m_inp_mux & 8) | (data & 7); +} + +READ8_MEMBER(grobot9_state::input_r) +{ + // A: multiplexed inputs + return read_inputs(5); +} + + +// config + +static INPUT_PORTS_START( grobot9 ) + PORT_START("IN.0") // C0 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_Q) PORT_NAME("Button 1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_W) PORT_NAME("Button 2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_E) PORT_NAME("Button 3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_D) PORT_NAME("Button 4") + + PORT_START("IN.1") // C1 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_C) PORT_NAME("Button 5") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_X) PORT_NAME("Button 6") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_Z) PORT_NAME("Button 7") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_A) PORT_NAME("Button 8") + + PORT_START("IN.2") // C2 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_S) PORT_NAME("Button 9") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Rest") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Eighth Note") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.3") // E3 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Select") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("Hit") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Repeat") + + PORT_START("IN.4") // INT + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_ucom4_state, single_interrupt_line, nullptr) PORT_NAME("Start-Pitch") +INPUT_PORTS_END + +static MACHINE_CONFIG_START( grobot9, grobot9_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D557L, 160000) // approximation + MCFG_UCOM4_READ_A_CB(READ8(grobot9_state, input_r)) + MCFG_UCOM4_WRITE_C_CB(WRITE8(grobot9_state, input_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(grobot9_state, lamps_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(grobot9_state, lamps_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(grobot9_state, lamps_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_grobot9) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + Mattel Computer Gin * NEC uCOM-43 MCU, label D650C 060 * Hughes HLCD0569 LCD driver @@ -2624,6 +2768,12 @@ ROM_START( edracula ) ROM_END +ROM_START( grobot9 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "ttgr-511", 0x0000, 0x0800, CRC(1f25b2bb) SHA1(55ae7e23f6dd46cc6e1a65839327726678410c3a) ) +ROM_END + + ROM_START( mcompgin ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "d650c-060", 0x0000, 0x0800, BAD_DUMP CRC(92a4d8be) SHA1(d67f14a2eb53b79a7d9eb08103325299bc643781) ) // d5 stuck: xx1x xxxx @@ -2709,6 +2859,8 @@ CONS( 1981, galaxy2b, galaxy2, 0, galaxy2b, galaxy2, driver_device, 0, "Epoch" CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE ) CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, grobot9, 0, 0, grobot9, grobot9, driver_device, 0, "Gakken", "Game Robot 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** + CONS( 1979, mcompgin, 0, 0, mcompgin, mcompgin, driver_device, 0, "Mattel", "Computer Gin", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", MACHINE_SUPPORTS_SAVE ) @@ -2719,3 +2871,6 @@ CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE ) CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, driver_device, 0, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE ) CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE ) + +// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction +// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc. diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp index 8a8083b456e..e87e97fd98c 100644 --- a/src/mame/drivers/homedata.cpp +++ b/src/mame/drivers/homedata.cpp @@ -163,6 +163,7 @@ Mahjong Vitamin C (c)1989 Home Data Board: X73-PWB-A(A) +Board: X83-PWB-AC(A) CPU: 68B09E uPD7807CW(?) Sound: SN76489AN DAC @@ -189,11 +190,12 @@ Mahjong Kinjirareta Asobi Board: X83-PWB-A(A) CPU: 68B09E uPD7807CW -Sound: SN76489AN - DAC +Sound: SN76489AN DAC OSC: 11.000MHz 16.000MHz Custom: GX61A01 +Note: seems likely above 11mhz crystal was a repair + ---------------------------------------------------------------------------- Mahjong Jogakuen (c)19?? Windom diff --git a/src/mame/drivers/mbdtower.cpp b/src/mame/drivers/mbdtower.cpp deleted file mode 100644 index 5d756cefe63..00000000000 --- a/src/mame/drivers/mbdtower.cpp +++ /dev/null @@ -1,282 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap, Sean Riddle -/*************************************************************************** - - ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) ** - - Milton Bradley Dark Tower - * TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die label MP7332 - (assume same ROM contents between revisions) - * SN75494N MOS-to-LED digit driver - * motorized rotating reel + lightsensor, 1bit-sound - - This is a board game, it obviously requires game pieces and the board. - The emulated part is the centerpiece, a black tower with a rotating card - panel and LED digits for displaying health, amount of gold, etc. As far - as MAME is concerned, the game works fine. - - To start up the game, first press [MOVE], the machine now does a self-test. - Then select level and number of players and the game will start. Read the - official manual on how to play the game. - -***************************************************************************/ - -#include "includes/hh_tms1k.h" -#include "mbdtower.lh" - - -class mbdtower_state : public hh_tms1k_state -{ -public: - mbdtower_state(const machine_config &mconfig, device_type type, const char *tag) - : hh_tms1k_state(mconfig, type, tag) - { } - - void prepare_display(); - bool sensor_led_on() { return m_display_decay[0][0] != 0; } - - int m_motor_pos; - int m_motor_pos_prev; - int m_motor_decay; - bool m_motor_on; - bool m_sensor_blind; - - TIMER_DEVICE_CALLBACK_MEMBER(motor_sim_tick); - - DECLARE_WRITE16_MEMBER(write_r); - DECLARE_WRITE16_MEMBER(write_o); - DECLARE_READ8_MEMBER(read_k); - -protected: - virtual void machine_start() override; -}; - - -/*************************************************************************** - - Display, Motor - -***************************************************************************/ - -void mbdtower_state::prepare_display() -{ - // declare display matrix size and the 2 7segs - set_display_size(7, 3); - set_display_segmask(6, 0x7f); - - // update current state - if (~m_r & 0x10) - { - UINT8 o = BITSWAP8(m_o,7,0,4,3,2,1,6,5) & 0x7f; - m_display_state[2] = (m_o & 0x80) ? o : 0; - m_display_state[1] = (m_o & 0x80) ? 0 : o; - m_display_state[0] = (m_r >> 8 & 1) | (m_r >> 4 & 0xe); - - display_update(); - } - else - { - // display items turned off - display_matrix(7, 3, 0, 0); - } -} - - -TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick) -{ - // it rotates counter-clockwise (when viewed from above) - if (m_motor_on) - { - m_motor_pos = (m_motor_pos - 1) & 0x7f; - - // give it some time to spin out when it's turned off - if (m_r & 0x200) - m_motor_decay += (m_motor_decay < 4); - else if (m_motor_decay > 0) - m_motor_decay--; - else - m_motor_on = false; - } - - // 8 evenly spaced holes in the rotation disc for the sensor to 'see' through. - // The first hole is much bigger, enabling the game to determine the position. - if ((m_motor_pos & 0xf) < 4 || m_motor_pos < 0xc) - m_sensor_blind = false; - else - m_sensor_blind = true; - - // on change, output info - if (m_motor_pos != m_motor_pos_prev) - output().set_value("motor_pos", 100 * (m_motor_pos / (float)0x80)); - - /* 3 display cards per hole, like this: - - (0) <---- display increments this way <---- (7) - - CURSED VICTORY WIZARD DRAGON GOLD KEY SCOUT WARRIOR (void) - LOST WARRIORS BAZAAR CLOSED SWORD SILVER KEY HEALER FOOD (void) - PLAGUE BRIGANDS KEY MISSING PEGASUS BRASS KEY GOLD BEAST (void) - */ - int card_pos = m_motor_pos >> 4 & 7; - if (card_pos != (m_motor_pos_prev >> 4 & 7)) - output().set_value("card_pos", card_pos); - - m_motor_pos_prev = m_motor_pos; -} - - - -/*************************************************************************** - - I/O - -***************************************************************************/ - -WRITE16_MEMBER(mbdtower_state::write_r) -{ - // R0-R2: input mux - m_inp_mux = data & 7; - - // R9: motor on - if ((m_r ^ data) & 0x200) - output().set_value("motor_on", data >> 9 & 1); - if (data & 0x200) - m_motor_on = true; - - // R3: N/C - // R4: 75494 /EN (speaker, lamps, digit select go through that IC) - // R5-R7: tower lamps - // R8: rotation sensor led - m_r = data; - prepare_display(); - - // R10: speaker out - m_speaker->level_w(~data >> 4 & data >> 10 & 1); -} - -WRITE16_MEMBER(mbdtower_state::write_o) -{ - // O0-O6: led segments A-G - // O7: digit select - m_o = data; - prepare_display(); -} - -READ8_MEMBER(mbdtower_state::read_k) -{ - // K: multiplexed inputs - // K8: rotation sensor - return read_inputs(3) | ((!m_sensor_blind && sensor_led_on()) ? 8 : 0); -} - - - -/*************************************************************************** - - Inputs - -***************************************************************************/ - -/* physical button layout and labels is like this: - - (green) (l.blue) (red) - [YES/ [REPEAT] [NO/ - BUY] END] - - (yellow) (blue) (white) - [HAGGLE] [BAZAAR] [CLEAR] - - (blue) (blue) (blue) - [TOMB/ [MOVE] [SANCTUARY/ - RUIN] CITADEL] - - (orange) (blue) (d.yellow) - [DARK [FRONTIER] [INVENTORY] - TOWER] -*/ - -static INPUT_PORTS_START( mbdtower ) - PORT_START("IN.0") // R0 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Inventory") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("No/End") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Clear") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Sanctuary/Citadel") - - PORT_START("IN.1") // R1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Frontier") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("Repeat") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("Bazaar") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Move") - - PORT_START("IN.2") // R2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("Dark Tower") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Yes/Buy") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Haggle") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Tomb/Ruin") -INPUT_PORTS_END - - - -/*************************************************************************** - - Machine Config - -***************************************************************************/ - -void mbdtower_state::machine_start() -{ - hh_tms1k_state::machine_start(); - - // zerofill - m_motor_pos = 0; - m_motor_pos_prev = -1; - m_motor_decay = 0; - m_motor_on = false; - m_sensor_blind = false; - - // register for savestates - save_item(NAME(m_motor_pos)); - /* save_item(NAME(m_motor_pos_prev)); */ // don't save! - save_item(NAME(m_motor_decay)); - save_item(NAME(m_motor_on)); - save_item(NAME(m_sensor_blind)); -} - -static MACHINE_CONFIG_START( mbdtower, mbdtower_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", TMS1400, 425000) // approximation - RC osc. R=43K, C=56pf - MCFG_TMS1XXX_READ_K_CB(READ8(mbdtower_state, read_k)) - MCFG_TMS1XXX_WRITE_R_CB(WRITE16(mbdtower_state, write_r)) - MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mbdtower_state, write_o)) - - MCFG_TIMER_DRIVER_ADD_PERIODIC("tower_motor", mbdtower_state, motor_sim_tick, attotime::from_msec(3500/0x80)) // ~3.5sec for a full rotation - MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) - MCFG_DEFAULT_LAYOUT(layout_mbdtower) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END - - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -ROM_START( mbdtower ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "mp7332", 0x0000, 0x1000, CRC(ebeab91a) SHA1(7edbff437da371390fa8f28b3d183f833eaa9be9) ) - - ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) - ROM_REGION( 557, "maincpu:opla", 0 ) - ROM_LOAD( "tms1400_mbdtower_output.pla", 0, 557, CRC(64c84697) SHA1(72ce6d24cedf9c606f1742cd5620f75907246e87) ) -ROM_END - - -CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, driver_device, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp index 1aa9d03af34..f4c585d0fcb 100644 --- a/src/mame/drivers/mjsenpu.cpp +++ b/src/mame/drivers/mjsenpu.cpp @@ -46,6 +46,7 @@ #include "cpu/e132xs/e132xs.h" #include "sound/okim6295.h" #include "machine/nvram.h" +#include "machine/ticket.h" class mjsenpu_state : public driver_device { @@ -54,6 +55,7 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_oki(*this, "oki"), + m_hopper(*this, "hopper"), m_mainram(*this, "mainram"), // m_vram(*this, "vram"), m_palette(*this, "palette") @@ -63,6 +65,7 @@ public: /* devices */ required_device<e132xt_device> m_maincpu; required_device<okim6295_device> m_oki; + required_device<ticket_dispenser_device> m_hopper; required_shared_ptr<UINT32> m_mainram; // required_shared_ptr<UINT32> m_vram; @@ -142,8 +145,7 @@ WRITE32_MEMBER(mjsenpu_state::vram_w) WRITE8_MEMBER(mjsenpu_state::control_w) { - m_control = data; - // bit 0x80 is always set? + // bit 0x80 is always set? (sometimes disabled during screen transitions briefly, could be display enable?) // bit 0x40 not used? // bit 0x20 not used? @@ -151,10 +153,16 @@ WRITE8_MEMBER(mjsenpu_state::control_w) // bit 0x10 is the M6295 bank, samples <26 are the same in both banks and so bank switch isn't written for them, not even in sound test. m_oki->set_rom_bank((data&0x10)>>4); - // bits 0x08 and 0x04 seem to be hopper/ticket related? different ones get used depending on the dips + // bits 0x08 is used in the alt payout / hopper mode (see dipswitches) + + // 0x04 seem to be hopper/ticket related? different ones get used depending on the dips + m_hopper->write(space, 0, data & 0x04); // bit 0x02 could be coin counter? + machine().bookkeeping().coin_counter_w(0, data & 0x02 ); + // bit 0x01 alternates frequently, using as video buffer, but that's a complete guess + m_control = data; // if (data &~0x9e) // printf("control_w %02x\n", data); @@ -286,26 +294,21 @@ static INPUT_PORTS_START( mjsenpu ) PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 ) // or maybe service? - PORT_DIPNAME( 0x00000002, 0x00000002, "IN1" ) - PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) - PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) - PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) - PORT_SERVICE_NO_TOGGLE( 0x00000010, IP_ACTIVE_LOW ) - PORT_DIPNAME( 0x00000020, 0x00000020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00000020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // might be coin out + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) + PORT_SERVICE_NO_TOGGLE( 0x00000010, IP_ACTIVE_LOW ) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // clears stats in bookkeeping PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_CONDITION("DSW3", 0x08,EQUALS,0x00) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) - PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) // unused?? PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + + PORT_START("DSW1") PORT_DIPNAME( 0x00000003, 0x00000003, DEF_STR( Coin_A ) ) @@ -313,7 +316,7 @@ static INPUT_PORTS_START( mjsenpu ) PORT_DIPSETTING( 0x00000003, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00000002, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x00000001, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x0000000c, 0x0000000c, "Value 1" ) + PORT_DIPNAME( 0x0000000c, 0x0000000c, "Note Value" ) // used if DSW3 bit 0x02 is changed PORT_DIPSETTING( 0x00000000, "100" ) PORT_DIPSETTING( 0x00000004, "50" ) PORT_DIPSETTING( 0x00000008, "10" ) @@ -357,15 +360,15 @@ static INPUT_PORTS_START( mjsenpu ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("DSW3") - PORT_DIPNAME( 0x00000001, 0x00000001, "Value 4" ) + PORT_DIPNAME( 0x00000001, 0x00000001, "Credit Limit" ) PORT_DIPSETTING( 0x00000001, "100" ) PORT_DIPSETTING( 0x00000000, "500" ) - PORT_DIPNAME( 0x00000002, 0x00000002, "Symbol 2" ) - PORT_DIPSETTING( 0x00000002, "0" ) - PORT_DIPSETTING( 0x00000000, "1" ) - PORT_DIPNAME( 0x00000004, 0x00000004, "Symbol 3" ) - PORT_DIPSETTING( 0x00000004, "0" ) - PORT_DIPSETTING( 0x00000000, "1" ) + PORT_DIPNAME( 0x00000002, 0x00000002, "Coin Type?" ) // uses different coinage + PORT_DIPSETTING( 0x00000002, "Coins?" ) + PORT_DIPSETTING( 0x00000000, "Notes?" ) + PORT_DIPNAME( 0x00000004, 0x00000004, "Hopper Type?" ) + PORT_DIPSETTING( 0x00000004, "Normal?" ) // pressing Pay Out button activates hopper on bit 0x04 and pays out + PORT_DIPSETTING( 0x00000000, "Other?" ) // pressing Pay Out activates something on bit 0x08, prints KEY OUT and quickly resets the game PORT_DIPNAME( 0x00000008, 0x00000008, "Control Type" ) PORT_DIPSETTING( 0x00000008, "Mahjong Panel" ) PORT_DIPSETTING( 0x00000000, "Joystick" ) @@ -459,6 +462,9 @@ static MACHINE_CONFIG_START( mjsenpu, mjsenpu_state ) MCFG_NVRAM_ADD_1FILL("nvram") + // more likely coins out? + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(50), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -526,6 +532,4 @@ DRIVER_INIT_MEMBER(mjsenpu_state,mjsenpu) } - - -GAME( 2002, mjsenpu, 0, mjsenpu, mjsenpu, mjsenpu_state, mjsenpu, ROT0, "Oriental Soft", "Mahjong Senpu", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 2002, mjsenpu, 0, mjsenpu, mjsenpu, mjsenpu_state, mjsenpu, ROT0, "Oriental Soft", "Mahjong Senpu", 0 ) diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp index ee2f1a0fe25..840a0bb524b 100644 --- a/src/mame/drivers/namcona1.cpp +++ b/src/mame/drivers/namcona1.cpp @@ -947,7 +947,7 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(38*8, 32*8) + MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8, 38*8-1-8, 4*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(namcona1_state, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -987,6 +987,13 @@ static MACHINE_CONFIG_DERIVED( namcona2, namcona1 ) MCFG_CPU_IO_MAP( namcona1_mcu_io_map) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( namcona2w, namcona2 ) + + /* video hardware */ + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_VISIBLE_AREA(0, 38*8-1-0, 4*8, 32*8-1) +MACHINE_CONFIG_END + DRIVER_INIT_MEMBER(namcona1_state,bkrtmaq) { m_gametype = NAMCO_BKRTMAQ; } DRIVER_INIT_MEMBER(namcona1_state,cgangpzl) { m_gametype = NAMCO_CGANGPZL; } @@ -1324,7 +1331,7 @@ GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinkl GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, emeralda, 0, namcona2, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, emeralda, 0, namcona2w, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state,quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp index 8781299ff14..0fd9269c1a6 100644 --- a/src/mame/drivers/nbmj8688.cpp +++ b/src/mame/drivers/nbmj8688.cpp @@ -381,7 +381,7 @@ CUSTOM_INPUT_MEMBER( nbmj8688_state::nb1413m3_busyflag_r ) static INPUT_PORTS_START( mjsikaku ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "1 (Easy)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -390,47 +390,25 @@ static INPUT_PORTS_START( mjsikaku ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Hard)" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) + PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "Game Sounds" ) + PORT_DIPNAME( 0x40, 0x00, "Game Sounds" ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 1-8" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + // does not exist on PCB PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -446,62 +424,8 @@ static INPUT_PORTS_START( mjsikaku ) INPUT_PORTS_END static INPUT_PORTS_START( mmsikaku ) -#if 1 PORT_START("DSWA") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 1-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 1-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 1-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 1-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 1-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -#else - - PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x00, "Game Out Rate" ) + PORT_DIPNAME( 0x07, 0x00, "Game Out Rate" ) PORT_DIPLOCATION("DSWA:1,2,3") // unconfirmed but extremely likely correct PORT_DIPSETTING( 0x07, "60%" ) PORT_DIPSETTING( 0x06, "65%" ) PORT_DIPSETTING( 0x05, "70%" ) @@ -510,36 +434,41 @@ static INPUT_PORTS_START( mmsikaku ) PORT_DIPSETTING( 0x02, "85%" ) PORT_DIPSETTING( 0x01, "90%" ) PORT_DIPSETTING( 0x00, "95%" ) - PORT_DIPNAME( 0x18, 0x18, "Rate Min" ) + PORT_DIPNAME( 0x18, 0x18, "Rate Min" ) PORT_DIPLOCATION("DSWA:4,5") PORT_DIPSETTING( 0x18, "1" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x60, 0x00, "Rate Max" ) + PORT_DIPNAME( 0x60, 0x00, "Rate Max" ) PORT_DIPLOCATION("DSWA:6,7") PORT_DIPSETTING( 0x60, "8" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPSETTING( 0x20, "12" ) PORT_DIPSETTING( 0x00, "20" ) - PORT_DIPNAME( 0x80, 0x00, "Score Pool" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") // score pool? PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x00, "Rate Up" ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:1") // rate up? PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, "Last Chance" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:2") // last chance? PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "Character Display Test" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED ) -#endif + PORT_DIPNAME( 0x08, 0x08, "Character Display Test" ) PORT_DIPLOCATION("DSWB:4") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST @@ -600,7 +529,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( mjcamera ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "1 (Easy)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -609,47 +538,31 @@ static INPUT_PORTS_START( mjcamera ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Hard)" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 1-6" ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Character Display Test" ) + PORT_DIPNAME( 0x80, 0x80, "Character Display Test" ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -665,125 +578,61 @@ static INPUT_PORTS_START( mjcamera ) INPUT_PORTS_END static INPUT_PORTS_START( kaguya ) - PORT_START("DSWA") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) - // NOTE:Coins counted by pressing service switch - PORT_DIPNAME( 0x04, 0x04, "NOTE" ) - PORT_DIPSETTING( 0x04, "Coin x5" ) - PORT_DIPSETTING( 0x00, "Coin x10" ) - PORT_DIPNAME( 0x18, 0x18, "Game Out Rate" ) - PORT_DIPSETTING( 0x00, "60%" ) - PORT_DIPSETTING( 0x08, "70%" ) - PORT_DIPSETTING( 0x10, "80%" ) - PORT_DIPSETTING( 0x18, "90%" ) - PORT_DIPNAME( 0x20, 0x20, "Bonus awarded on" ) - PORT_DIPSETTING( 0x20, "[over BAIMAN]" ) - PORT_DIPSETTING( 0x00, "[BAIMAN]" ) - PORT_DIPNAME( 0x40, 0x40, "Variability of payout rate" ) - PORT_DIPSETTING( 0x40, "[big]" ) - PORT_DIPSETTING( 0x00, "[small]" ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + // manual has DSWA and DSWB mixed up compared to PCB + // PCB is traditional Nichibutsu legacy, A/B match other PCBs + // so assumption is manual is incorrect - PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x00, "Nudity graphic on bet" ) + PORT_START("DSWA") + PORT_DIPNAME( 0x01, 0x00, "Nudity graphic on bet" ) PORT_DIPLOCATION("DSWA:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x06, 0x06, "Bet Min" ) + PORT_DIPNAME( 0x06, 0x06, "Bet Min" ) PORT_DIPLOCATION("DSWA:2,3") PORT_DIPSETTING( 0x06, "1" ) PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x00, "7" ) - PORT_DIPNAME( 0x18, 0x00, "Number of extend TSUMO" ) + PORT_DIPNAME( 0x18, 0x00, "Number of extend TSUMO" ) PORT_DIPLOCATION("DSWA:4,5") PORT_DIPSETTING( 0x18, "0" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x00, "4" ) - PORT_DIPNAME( 0x20, 0x20, "Extend TSUMO needs credit" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY -// PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER - PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 - - PORT_INCLUDE( nbmjcontrols ) -INPUT_PORTS_END - -static INPUT_PORTS_START( kaguya2 ) - PORT_START("DSWA") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 1-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 1-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 1-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 1-6" ) + PORT_DIPNAME( 0x20, 0x20, "Extend TSUMO needs credit" ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 1-8" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWB:1,2") + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) + // NOTE:Coins counted by pressing service switch + PORT_DIPNAME( 0x04, 0x04, "NOTE" ) PORT_DIPLOCATION("DSWB:3") + PORT_DIPSETTING( 0x04, "Coin x5" ) + PORT_DIPSETTING( 0x00, "Coin x10" ) + PORT_DIPNAME( 0x18, 0x18, "Game Out Rate" ) PORT_DIPLOCATION("DSWB:4,5") + PORT_DIPSETTING( 0x00, "60%" ) + PORT_DIPSETTING( 0x08, "70%" ) + PORT_DIPSETTING( 0x10, "80%" ) + PORT_DIPSETTING( 0x18, "90%" ) + PORT_DIPNAME( 0x20, 0x20, "Bonus awarded on" ) PORT_DIPLOCATION("DSWB:6") + PORT_DIPSETTING( 0x20, "[over BAIMAN]" ) + PORT_DIPSETTING( 0x00, "[BAIMAN]" ) + PORT_DIPNAME( 0x40, 0x40, "Variability of payout rate" ) PORT_DIPLOCATION("DSWB:7") + PORT_DIPSETTING( 0x40, "[big]" ) + PORT_DIPSETTING( 0x00, "[small]" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY -// PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER @@ -795,6 +644,7 @@ static INPUT_PORTS_START( kaguya2 ) PORT_INCLUDE( nbmjcontrols ) INPUT_PORTS_END + static INPUT_PORTS_START( kanatuen ) PORT_START("DSWA") PORT_DIPNAME( 0x07, 0x07, "Game Out Rate" ) PORT_DIPLOCATION("DSWA:1,2,3") @@ -990,7 +840,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( secolove ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "1 (Easy)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -999,44 +849,44 @@ static INPUT_PORTS_START( secolove ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Hard)" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "Nudity" ) + PORT_DIPNAME( 0x40, 0x00, "Nudity" ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) + PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) + PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) PORT_DIPLOCATION("DSWB:1,2") PORT_DIPSETTING( 0x03, "0" ) PORT_DIPSETTING( 0x02, "3" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "10" ) - PORT_DIPNAME( 0x04, 0x00, "Hanahai" ) + PORT_DIPNAME( 0x04, 0x00, "Hanahai" ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Open Reach of CPU" ) + PORT_DIPNAME( 0x08, 0x00, "Open Reach of CPU" ) PORT_DIPLOCATION("DSWB:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Cancel Hand" ) + PORT_DIPNAME( 0x10, 0x00, "Cancel Hand" ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Wareme" ) + PORT_DIPNAME( 0x20, 0x00, "Wareme" ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1055,7 +905,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( barline ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, "Game Rate" ) + PORT_DIPNAME( 0x07, 0x07, "Game Rate" ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x00, "58%" ) PORT_DIPSETTING( 0x01, "64%" ) PORT_DIPSETTING( 0x02, "70%" ) @@ -1064,44 +914,44 @@ static INPUT_PORTS_START( barline ) PORT_DIPSETTING( 0x05, "80%" ) PORT_DIPSETTING( 0x06, "88%" ) PORT_DIPSETTING( 0x07, "95%" ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 1-4" ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 1-5" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 1-6" ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 1-8" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) // auto stop reels? + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:4") // auto stop reels? PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x30, 0x30, "Music" ) + PORT_DIPNAME( 0x30, 0x00, "Music" ) PORT_DIPLOCATION("DSWB:5,6") PORT_DIPSETTING( 0x00, "Type 1" ) PORT_DIPSETTING( 0x10, "Type 2" ) PORT_DIPSETTING( 0x20, "Type 3" ) PORT_DIPSETTING( 0x30, DEF_STR( Off ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1162,7 +1012,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( citylove ) PORT_START("DSWA") - PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3,4") PORT_DIPSETTING( 0x0f, "1 (Easy)" ) PORT_DIPSETTING( 0x0e, "2" ) PORT_DIPSETTING( 0x0d, "3" ) @@ -1179,37 +1029,37 @@ static INPUT_PORTS_START( citylove ) PORT_DIPSETTING( 0x02, "14" ) PORT_DIPSETTING( 0x01, "15" ) PORT_DIPSETTING( 0x00, "16 (Hard)" ) - PORT_DIPNAME( 0x30, 0x30, "YAKUMAN cut" ) + PORT_DIPNAME( 0x30, 0x30, "YAKUMAN cut" ) PORT_DIPLOCATION("DSWA:5,6") PORT_DIPSETTING( 0x30, "10%" ) PORT_DIPSETTING( 0x20, "30%" ) PORT_DIPSETTING( 0x10, "50%" ) PORT_DIPSETTING( 0x00, "90%" ) - PORT_DIPNAME( 0x40, 0x00, "Nudity" ) + PORT_DIPNAME( 0x40, 0x00, "Nudity" ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) + PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) PORT_DIPLOCATION("DSWB:1,2") PORT_DIPSETTING( 0x03, "0" ) PORT_DIPSETTING( 0x02, "3" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "10" ) - PORT_DIPNAME( 0x04, 0x04, "Hanahai" ) + PORT_DIPNAME( 0x04, 0x04, "Hanahai" ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Chonbo" ) + PORT_DIPNAME( 0x08, 0x00, "Chonbo" ) PORT_DIPLOCATION("DSWB:4") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Open Reach of CPU" ) + PORT_DIPNAME( 0x10, 0x10, "Open Reach of CPU" ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Open Mode" ) + PORT_DIPNAME( 0x20, 0x20, "Open Mode" ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0xc0, 0x00, "Cansel Type" ) + PORT_DIPNAME( 0xc0, 0x00, "Cansel Type" ) PORT_DIPLOCATION("DSWB:7,8") PORT_DIPSETTING( 0xc0, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, "TSUMO 3" ) PORT_DIPSETTING( 0x40, "TSUMO 7" ) @@ -1292,7 +1142,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( seiha ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") // is this correct? PORT_DIPSETTING( 0x07, "1 (Hard)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -1301,47 +1151,31 @@ static INPUT_PORTS_START( seiha ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Easy)" ) - PORT_DIPNAME( 0x08, 0x00, "RENCHAN after TENPAIed RYUKYOKU" ) + PORT_DIPNAME( 0x08, 0x00, "RENCHAN after TENPAIed RYUKYOKU" ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Change Pai and Mat Color" ) + PORT_DIPNAME( 0x10, 0x00, "Change Pai and Mat Color" ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Character Display Test" ) + PORT_DIPNAME( 0x20, 0x20, "Character Display Test" ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -1422,7 +1256,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( iemoto ) PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "1 (Hard)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -1431,47 +1265,31 @@ static INPUT_PORTS_START( iemoto ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Easy)" ) - PORT_DIPNAME( 0x08, 0x00, "RENCHAN after TENPAIed RYUKYOKU" ) + PORT_DIPNAME( 0x08, 0x00, "RENCHAN after TENPAIed RYUKYOKU" ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) + PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -1947,30 +1765,14 @@ static INPUT_PORTS_START( orangec ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -2293,56 +2095,40 @@ INPUT_PORTS_END static INPUT_PORTS_START( korinai ) PORT_START("DSWA") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) + PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Select" ) + PORT_DIPNAME( 0x20, 0x20, "Select" ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00, "Girl" ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -2423,7 +2209,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( crystalg ) PORT_START("DSWA") - PORT_DIPNAME( 0x0f, 0x0d, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x0f, 0x0d, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3,4") PORT_DIPSETTING( 0x0d, "1 (Easy)" ) PORT_DIPSETTING( 0x0a, "2" ) PORT_DIPSETTING( 0x09, "3" ) @@ -2433,44 +2219,28 @@ static INPUT_PORTS_START( crystalg ) PORT_DIPSETTING( 0x05, "7" ) PORT_DIPSETTING( 0x04, "8" ) PORT_DIPSETTING( 0x00, "9 (Hard)" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -2487,7 +2257,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( crystal2 ) PORT_START("DSWA") - PORT_DIPNAME( 0x0f, 0x0d, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x0f, 0x0d, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3,4") PORT_DIPSETTING( 0x0d, "1 (Easy)" ) PORT_DIPSETTING( 0x0a, "2" ) PORT_DIPSETTING( 0x09, "3" ) @@ -2497,40 +2267,40 @@ static INPUT_PORTS_START( crystal2 ) PORT_DIPSETTING( 0x05, "7" ) PORT_DIPSETTING( 0x04, "8" ) PORT_DIPSETTING( 0x00, "9 (Hard)" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) + PORT_DIPNAME( 0x03, 0x00, "Number of last chance" ) PORT_DIPLOCATION("DSWB:1,2") PORT_DIPSETTING( 0x03, "0" ) PORT_DIPSETTING( 0x02, "1" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x00, "10" ) - PORT_DIPNAME( 0x0c, 0x00, "SANGEN Rush" ) + PORT_DIPNAME( 0x0c, 0x00, "SANGEN Rush" ) PORT_DIPLOCATION("DSWB:3,4") PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x04, "5" ) PORT_DIPSETTING( 0x00, DEF_STR( Infinite ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -2641,30 +2411,14 @@ static INPUT_PORTS_START( nightlov ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 2-7" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DIPSW 2-8" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSWB:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSWB:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSWB:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSWB:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSWB:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSWB:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSWB:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSWB:8" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -4058,8 +3812,8 @@ GAME( 1988, vipclub, orangec, vipclub, vipclub, driver_device, 0, /* pure 12-bit palette */ GAME( 1988, kaguya, 0, kaguya, kaguya, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Kaguyahime [BET] (Japan 880521)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, kaguya2, 0, kaguya2, kaguya2, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 [BET] (Japan 890829)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, kaguya2f, kaguya2, kaguya2, kaguya2, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 Fukkokuban [BET] (Japan 010808)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, kaguya2, 0, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 [BET] (Japan 890829)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, kaguya2f, kaguya2, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 Fukkokuban [BET] (Japan 010808)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, kanatuen, 0, kanatuen, kanatuen, nbmj8688_state, kanatuen, ROT0, "Panac", "Kanatsuen no Onna [BET] (Japan 880905)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, kyuhito, kanatuen, kyuhito, kyuhito, nbmj8688_state, kyuhito, ROT0, "Roller Tron", "Kyukyoku no Hito [BET] (Japan 880824)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, idhimitu, 0, idhimitu, idhimitu, nbmj8688_state, idhimitu, ROT0, "Digital Soft", "Idol no Himitsu [BET] (Japan 890304)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp index 9dce4a86cd6..13415b1ad8d 100644 --- a/src/mame/drivers/nbmj8891.cpp +++ b/src/mame/drivers/nbmj8891.cpp @@ -1242,8 +1242,9 @@ INPUT_PORTS_END static INPUT_PORTS_START( scandal ) + // do not have the manual PORT_START("DSWA") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") PORT_DIPSETTING( 0x07, "1 (Easy)" ) PORT_DIPSETTING( 0x06, "2" ) PORT_DIPSETTING( 0x05, "3" ) @@ -1252,45 +1253,45 @@ static INPUT_PORTS_START( scandal ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x01, "7" ) PORT_DIPSETTING( 0x00, "8 (Hard)" ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWA:4") PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, "Character Display Test" ) PORT_DIPLOCATION("DSWA:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "Character Display Test" ) + PORT_START("DSWB") // very likely not populated on PCB + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) diff --git a/src/mame/drivers/nbmj9195.cpp b/src/mame/drivers/nbmj9195.cpp index 2797a918661..b6e1371fda5 100644 --- a/src/mame/drivers/nbmj9195.cpp +++ b/src/mame/drivers/nbmj9195.cpp @@ -1161,54 +1161,53 @@ static INPUT_PORTS_START( gal10ren ) // I don't have manual for this game. PORT_START("DSWA") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 1-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 1-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 1-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") + PORT_DIPSETTING( 0x07, "1 (Easy)" ) + PORT_DIPSETTING( 0x06, "2" ) + PORT_DIPSETTING( 0x05, "3" ) + PORT_DIPSETTING( 0x04, "4" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPSETTING( 0x02, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x00, "8 (Hard)" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWA:4,5") + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) + PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) PORT_DIPLOCATION("DSWB:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) + PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) PORT_DIPLOCATION("DSWB:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) + PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) + PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) PORT_DIPLOCATION("DSWB:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) + PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) + PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Character Display Test" ) + PORT_DIPNAME( 0x40, 0x40, "Character Display Test" ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) + PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1230,54 +1229,53 @@ static INPUT_PORTS_START( renaiclb ) // I don't have manual for this game. PORT_START("DSWA") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 1-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 1-2" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 1-3" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 1-4" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 1-5" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSWA:1,2,3") + PORT_DIPSETTING( 0x07, "1 (Easy)" ) + PORT_DIPSETTING( 0x06, "2" ) + PORT_DIPSETTING( 0x05, "3" ) + PORT_DIPSETTING( 0x04, "4" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPSETTING( 0x02, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x00, "8 (Hard)" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSWA:4,5") + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSWA:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIPSW 1-7" ) + PORT_DIPNAME( 0x40, 0x00, "Voices" ) PORT_DIPLOCATION("DSWA:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSWA:8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) + PORT_DIPNAME( 0x01, 0x01, "DIPSW 2-1" ) PORT_DIPLOCATION("DSWB:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) + PORT_DIPNAME( 0x02, 0x02, "DIPSW 2-2" ) PORT_DIPLOCATION("DSWB:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) + PORT_DIPNAME( 0x04, 0x04, "DIPSW 2-3" ) PORT_DIPLOCATION("DSWB:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) + PORT_DIPNAME( 0x08, 0x08, "DIPSW 2-4" ) PORT_DIPLOCATION("DSWB:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) + PORT_DIPNAME( 0x10, 0x10, "DIPSW 2-5" ) PORT_DIPLOCATION("DSWB:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) + PORT_DIPNAME( 0x20, 0x20, "DIPSW 2-6" ) PORT_DIPLOCATION("DSWB:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Character Display Test" ) + PORT_DIPNAME( 0x40, 0x40, "Character Display Test" ) PORT_DIPLOCATION("DSWB:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) + PORT_DIPNAME( 0x80, 0x80, "Graphic ROM Test" ) PORT_DIPLOCATION("DSWB:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp index 26c29072d18..96bc17eca26 100644 --- a/src/mame/drivers/next.cpp +++ b/src/mame/drivers/next.cpp @@ -874,10 +874,6 @@ void next_state::machine_start() } timer_tm = timer_alloc(0); - - system_time systime; - machine().base_datetime(systime); - rtc->set_counter(systime.time); } void next_state::machine_reset() diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index d9832defd54..00554d1a95c 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -6686,6 +6686,33 @@ ROM_START( bjtwinp ) ROM_LOAD( "bottom.ic27", 0x0c0000, 0x80000, CRC(6ebeb9e4) SHA1(b547b2fbcc0a35d6183dd4f19684b04839690a2b) ) ROM_END + +ROM_START( bjtwinpa ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "ic76.bin", 0x00000, 0x20000, CRC(81106d1e) SHA1(81c195173cf859f6266c160ee94ac4734edef085) ) + ROM_LOAD16_BYTE( "ic75.bin", 0x00001, 0x20000, CRC(7c99b97f) SHA1(36e34b7a5bb876b7bbee46ace7acc03faeee211e) ) + + ROM_REGION( 0x010000, "fgtile", 0 ) + ROM_LOAD( "ic35.bin", 0x000000, 0x010000, CRC(aa13df7c) SHA1(162d4f12364c68028e86fe97ee75c262daa4c699) ) /* 8x8 tiles */ + + ROM_REGION( 0x200000, "bgtile", 0 ) + ROM_LOAD( "ic32_1.bin", 0x000000, 0x080000, CRC(e2d2b331) SHA1(d8fdbff497303a00fc866f0ef07ba74b369c0636) ) + ROM_LOAD( "ic32_2.bin", 0x080000, 0x080000, CRC(28a3a845) SHA1(4daf71dce5e598ee7ee7e09bb08ec1b2f06f2b01) ) + ROM_LOAD( "ic32_3.bin", 0x100000, 0x080000, CRC(ecce80c9) SHA1(ae7410f47e911988f654e78d585d78cf40e0ae5e) ) + + ROM_REGION( 0x100000, "sprites", 0 ) + ROM_LOAD16_BYTE( "ic100_1.bin", 0x000000, 0x080000, CRC(2ea7e460) SHA1(b8dc13994ae2433fc7c38412c9ea6f10f945bca5) ) + ROM_LOAD16_BYTE( "ic100_2.bin", 0x000001, 0x080000, CRC(ec85e1b7) SHA1(2f9a60ad2beb22d1b41dab7db3634b8e36cfce3e) ) + + ROM_REGION( 0x140000, "oki1", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "bottom.ic30", 0x040000, 0x80000, CRC(b5ef197f) SHA1(89d675f921dead585c2fef44105a7aea2f1f399c) ) /* all banked */ + ROM_LOAD( "top.ic30", 0x0c0000, 0x80000, CRC(ab50531d) SHA1(918987f01a8b1b007721d2b365e2b2fc536bd676) ) + + ROM_REGION( 0x140000, "oki2", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "top.ic27", 0x040000, 0x80000, CRC(adb2f256) SHA1(ab7bb6683799203d0f46705f2fd241c6de914e77) ) /* all banked */ + ROM_LOAD( "bottom.ic27", 0x0c0000, 0x80000, CRC(6ebeb9e4) SHA1(b547b2fbcc0a35d6183dd4f19684b04839690a2b) ) +ROM_END + ROM_START( atombjt ) // based off bjtwina set ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "22.u67", 0x00000, 0x20000, CRC(bead8c70) SHA1(2694bb0639f6b94119c21faf3810f00ef20b50da) ) @@ -7861,8 +7888,9 @@ GAME( 1992, cactus, sabotenb, bjtwin, sabotenb, nmk16_state, nmk, ROT0, GAME( 1993, bjtwin, 0, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 1)", MACHINE_NO_COCKTAIL ) GAME( 1993, bjtwina, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 2)", MACHINE_NO_COCKTAIL ) -GAME( 1993, bjtwinp, bjtwin, bjtwin, bjtwin, driver_device, 0, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures)", MACHINE_NO_COCKTAIL ) // Genuine NMK PCB but GFX aren't encrypted -GAME( 1993, atombjt, bjtwin, atombjt, bjtwin, driver_device, 0, ROT270, "bootleg", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw +GAME( 1993, bjtwinp, bjtwin, bjtwin, bjtwin, driver_device, 0, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 1)", MACHINE_NO_COCKTAIL ) // Cheap looking PCB, but Genuine NMK PCB, GFX aren't encrypted (maybe Korean version not proto?) +GAME( 1993, bjtwinpa, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 2)", MACHINE_NO_COCKTAIL ) // same PCB as above, different program revision, GFX are encrypted +GAME( 1993, atombjt, bjtwin, atombjt, bjtwin, driver_device, 0, ROT270, "bootleg", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw (playmark hardware?) GAME( 1995, nouryoku, 0, bjtwin, nouryoku, nmk16_state, nmk, ROT0, "Tecmo", "Nouryoku Koujou Iinkai", MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 0c625e9d948..9da37b7d252 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -3,8 +3,7 @@ //#define BOOST_DEBUG_PERFORMANCE -/* NEW COLOR EMULATION (state as of Oct. 1st 2016): - +/* GDC COLOR EMULATION //-------------------- Differences to VT240: --------------------------------------------------- // - Registers of graphics option not directly mapped (indirect access via mode register) // - write mask is 16 bits wide (not only 8) @@ -17,33 +16,30 @@ // Palette takes 2 byte per palette entry. CLUT ("color map") is 32 byte long. ------------------------------------------------------------------------------------------------ -SCREEN 1 vs. SCREEN 2 IN EMULATION -// All GDC 7220 output is displayed on the right. Be it color or monochrome, Option Graphics output is on screen 2. -// If you select MONO_MONITOR via DIP, output from GDC will appear on screen 2 in 16 shades of grey. -// The type of monochrome monitor (VR-210 A, B or C) is selectable via another DIP (coarsly simulates a phosphor color). - THE DEC 'R-M-B' COLOR CABLE VS. THE UNOFFICIAL 'R-G-B' MODE (A BIT OF HISTORY) -// VR-241 came with a standard DEC "color cable", where the green gun is wired to the mono output (DIP switch COLOR_MONITOR). -// Port $0A decides whether the mono out pin on the back of the Rainbow holds graphics signals or simple text. -// -// An unofficial DIY cable gave R-G-B graphics plus seperate text (emulated by DIP setting: DUAL MONITOR). -// Unfortunately, popular programs like AutoCAD and GWBASIC were initially written for 1 single VR201 or VT241 monitor. -// A 'R-M-B' cable is expected, and thus writes go to M(ono) instead of G(reen). An awful tint results on R-G-B. - -// DEC decided not to support this mode. Nevertheless, AutoCad 2.6 offers a true dual monitor mode. +// The standard DEC "color cable" connected the green gun of a VR241 to the mono output of the Rainbow +// (DIP setting COLOR_MONITOR). +// +// An unofficial DIY cable enabled R-G-B graphics + seperate text (emulated by DIP setting DUAL MONITOR). +// As DEC decided not to endorse R-G-B, many commercial programs show incorrect colors. // A patch from one of the archives corrects the GWBASIC palette problem when using 2 monitors [Bavarese]. EMULATION SPECIFIC -// A log message informs the user if text output is disabled. Means: software is not ready / patched for dual monitor use. -// In our emulation, DUAL MONITOR enables both screens, even if onboard graphics has been accidently shut off -// (helps debugging semi broken programs, try Doodle). +// If a program disables text output (via port $0A), a log message is given. -BUGS -- HIRES-MODE WRONG. MEDRES SEMI-CORRECT. -BROKEN SPRITES / NO BORDER GRAPHICS IN "PACMAN" (freeware clone; MEDRES; borders probably drawn in vector mode) +// DUAL MONITOR enables both screens, even if onboard graphics has been accidently shut off +// (helps debugging semi broken programs, for example Doodle). + +SCREEN 1 vs. SCREEN 2 IN EMULATION +// All GDC 7220 output is displayed on the right. Be it color or monochrome, Option Graphics output is on screen 2. +// If you select MONO_MONITOR via DIP, output from GDC will appear on screen 2 in 16 shades of grey. +// The type of monochrome monitor (VR-210 A, B or C) is selectable via another DIP (coarsly simulates a phosphor color). -- VECTOR MODE SEEMS TO DISPLAY NOTHING AT ALL (16 bit access botched?) -- CLEARING THE SCREEN DOES NOT WORK (bug in VRAM_W...?) +BUGS +- MEDRES LOOKS CORRECT +- HIRES-MODE UNTESTED. +- VECTOR MODE SEEMS TO DISPLAY NOTHING AT ALL (16 bit access botched?) Examples: MMIND (MasterMind, after BMP logo), SOLIT (Solitair). +- GDC diagnostic disk bails out on 11 of 13 low level tests. SCROLL CHECK crashes CPU. UNIMPLEMENTED: // - Video levels for color modes. @@ -2353,7 +2349,7 @@ WRITE_LINE_MEMBER(rainbow_state::GDC_vblank_irq) // VIDEO LEVELS: 0 is 100 % output; F is 0 % output // Levels for 100-B model, taken from page 46 of PDF, multiplied by 2.55 to obtain a range of 0...255 - const int v_levels[16] = { 255, 217, 201,186, 171, 156, 140, 125, 110, 97, 79, 66, 54, 31, 18, 0 }; + const UINT8 v_levels[16] = { 255, 217, 201,186, 171, 156, 140, 125, 110, 97, 79, 66, 54, 31, 18, 0 }; if(m_scroll_buffer_changed) { @@ -2715,6 +2711,7 @@ WRITE16_MEMBER(rainbow_state::vram_w) if(m_GDC_MODE_REGISTER & GDC_MODE_VECTOR) // VT240 : if(SELECT_VECTOR_PATTERN_REGISTER) { chr = BITSWAP8(m_vpat, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx, m_patidx); + chr |= (chr << 8); if(m_patcnt-- == 0) { m_patcnt = m_patmult; @@ -2735,7 +2732,7 @@ WRITE16_MEMBER(rainbow_state::vram_w) { // ALU_PS register: controls logic used in writing to the bitmap / inhibiting of writing to specified planes. // plane select and logic operations on write buffer... (and more) **** SEE PAGE 36 **** - int ps = ~m_GDC_ALU_PS_REGISTER & 0x0F; // PLANE SELECT 0..3 // VT 240 : ~m_GDC_ALU_PS_REGISTER & 3; + int ps = m_GDC_ALU_PS_REGISTER & 0x0F; // PLANE SELECT 0..3 // VT 240 : ~m_GDC_ALU_PS_REGISTER & 3; UINT8 fore = ( (m_GDC_FG_BG & 0xf0) ) >> 4; UINT8 back = (m_GDC_FG_BG & 0x0f); // background : 0..3 confirmed, see p.39 AA-AE36A (PDF) @@ -2795,9 +2792,6 @@ WRITE16_MEMBER(rainbow_state::vram_w) WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w) { static int last_message, last_mode, last_readback, last_scroll_index; -// rectangle curvisarea = m_screen2->visible_area(); -// int vert_pix_total = 256; // should be 240 -// int horiz_pix_total; if(offset > 0) // Port $50 reset done @ boot ROM 1EB4/8 regardless if option present. if (m_inp7->read() != 1) @@ -2878,7 +2872,7 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w) if(m_GDC_INDIRECT_REGISTER & GDC_SELECT_PATTERN) { - m_vpat = data; // VGl. "vpat_w" im Original! + m_vpat = data; m_patcnt = m_patmult; m_patidx = 7; // correct...? break; @@ -2892,7 +2886,7 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w) if(m_GDC_INDIRECT_REGISTER & GDC_SELECT_ALU_PS) { - m_GDC_ALU_PS_REGISTER = data; // Neither bitswap nor negated (and also not both)... + m_GDC_ALU_PS_REGISTER = ~data; // Negated... break; } @@ -2905,19 +2899,10 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w) last_message = 2; if(data & GDC_MODE_HIGHRES) - { -// horiz_pix_total = 800; printf(" * HIGH RESOLUTION * "); - } else - { -// horiz_pix_total = 384; printf(" MEDIUM RESOLUTION "); - } } - // DOES NOT WORK - at least for medres the screen is too far stretched : -// curvisarea.set(0, horiz_pix_total - 1, 0, vert_pix_total - 1); -// subdevice<screen_device>("screen2")->configure(horiz_pix_total, vert_pix_total, curvisarea, HZ_TO_ATTOSECONDS(60)); if(last_mode != (data & GDC_MODE_VECTOR)) { @@ -2990,12 +2975,12 @@ WRITE8_MEMBER(rainbow_state::GDC_EXTRA_REGISTER_w) // --------- WRITE MASK (2 x 8 = 16 bits) USED IN WORD MODE ONLY ! // NOTE: there is NO specific order for the WRITE_MASK (according to txt/code samples in PDF)! - // LOW... HI VERIFED + // !! NEW: LOW... HI JUXTAPOSITION...!! case 4: // 54h Write Mask LOW - m_GDC_WRITE_MASK = ( m_GDC_WRITE_MASK & 0xFF00 ) | BITSWAP8(~data, 0, 1, 2, 3, 4, 5, 6, 7); + m_GDC_WRITE_MASK = ( BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7) << 8 ) | ( m_GDC_WRITE_MASK & 0x00FF ); break; case 5: // 55h Write Mask HIGH - m_GDC_WRITE_MASK = ( BITSWAP8(~data, 0, 1, 2, 3, 4, 5, 6, 7) << 8 ) | ( m_GDC_WRITE_MASK & 0x00FF ); + m_GDC_WRITE_MASK = ( m_GDC_WRITE_MASK & 0xFF00 ) | BITSWAP8(data, 0, 1, 2, 3, 4, 5, 6, 7); break; } } diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp index 84092439b02..64d65fdd805 100644 --- a/src/mame/drivers/scobra.cpp +++ b/src/mame/drivers/scobra.cpp @@ -1524,6 +1524,29 @@ ROM_START( hustlerb4 ) ROM_LOAD( "top.c5", 0x0000, 0x0800, CRC(88226086) SHA1(fe2da172313063e5b056fc8c8d8b2a5c64db5179) ) ROM_END +// the following romset came from a blister, so no PCB infos. It's a mix between hustlerb4's main CPU and GFX ROMs and hustlerb's audio CPU ROMs. + +ROM_START( hustlerb5 ) + ROM_REGION( 0x10000, "maincpu", 0 ) // identical to hustlerb but in 6 roms instead of 3 + ROM_LOAD( "b1.bin", 0x0000, 0x0800, CRC(f87d75c7) SHA1(48f0f5289366a3c4dec86f5bb48d16a33745844d) ) + ROM_LOAD( "b2.bin", 0x0800, 0x0800, CRC(a639d4e1) SHA1(2130de635f41f915db26a5fcba9654ae140d0ecc) ) + ROM_LOAD( "b3.bin", 0x1000, 0x0800, CRC(1b75520e) SHA1(b4ebb69c0f17fde7a527d54ec8406b1b80798e0c) ) + ROM_LOAD( "b4.bin", 0x1800, 0x0800, CRC(fdea3165) SHA1(6120919445599ec9116d14d0baf4fb4e4720e473) ) + ROM_LOAD( "b5.bin", 0x2000, 0x0800, CRC(730100e1) SHA1(81e44d768ca4e654981c14660e12e355fe720636) ) + ROM_LOAD( "b6.bin", 0x2800, 0x0800, CRC(68dff552) SHA1(5dad38db45afbd79b5627a75b295fc920ad68856) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "bs1.bin", 0x0000, 0x0800, CRC(b559bfde) SHA1(f7733fbc5cabb441ba039b9d7202aaf0cebb9a85) ) + ROM_LOAD( "bs2.bin", 0x0800, 0x0800, CRC(6ef96cfb) SHA1(eba0bdc8bc1652ff2f62594371ded711dbfcce86) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "c1.bin", 0x0000, 0x0800, CRC(0bdfad0e) SHA1(8e6f1737604f3801c03fa2e9a5e6a2778b54bae8) ) + ROM_LOAD( "c2.bin", 0x0800, 0x0800, CRC(8e062177) SHA1(7e52a1669804b6c2f694cfc64b04abc8246bb0c2) ) + + ROM_REGION( 0x0020, "proms", 0 ) // not dumped for this set, but the same in all other original and bootleg sets + ROM_LOAD( "mni6331.e6", 0x0000, 0x0020, CRC(aa1f7f5e) SHA1(311dd17aa11490a1173c76223e4ccccf8ea29850) ) +ROM_END + ROM_START( mimonkey ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "mm1.2e", 0x0000, 0x1000, CRC(9019f1b1) SHA1(0c45f64e39b9a182f6162ab520ced6ef0686466c) ) @@ -1595,6 +1618,7 @@ GAME( 1981, billiard, hustler, hustler, hustler, scramble_state, billiard GAME( 1981, hustlerb, hustler, hustlerb, hustler, driver_device, 0, ROT90, "bootleg (Digimatic)", "Video Hustler (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, hustlerb2, hustler, hustler, hustler, scramble_state, hustlerd, ROT90, "bootleg", "Fatsy Gambler (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, hustlerb4, hustler, hustlerb4, hustler, driver_device, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb5, hustler, hustlerb, hustler, driver_device, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, mimonkey, 0, mimonkey, mimonkey, scramble_state, mimonkey, ROT90, "Universal Video Games", "Mighty Monkey", MACHINE_SUPPORTS_SAVE ) GAME( 1982, mimonsco, mimonkey, mimonkey, mimonsco, scramble_state, mimonsco, ROT90, "bootleg", "Mighty Monkey (bootleg on Super Cobra hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp index 2f12aedb724..529b3b38825 100644 --- a/src/mame/drivers/sms.cpp +++ b/src/mame/drivers/sms.cpp @@ -890,6 +890,8 @@ static MACHINE_CONFIG_DERIVED( smsj, sms1_kr ) MCFG_CPU_IO_MAP(smsj_io) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_10_738635MHz/3) + // if this output gain is changed, the gain set when unmute the output need + // to be changed too, probably along the gain set for the Mark III FM Unit. MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp index 2ca8ab298f2..e09dfd951fe 100644 --- a/src/mame/drivers/srmp6.cpp +++ b/src/mame/drivers/srmp6.cpp @@ -620,8 +620,8 @@ static INPUT_PORTS_START( srmp6 ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_BIT( 0x0180, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("DSW") /* 16-bit DSW1+DSW2 */ - PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) // DSW1 + PORT_START("DSW") /* 16-bit DSW1 (0x0000) +DSW2 (0x0700) */ + PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:1,2,3") PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) ) @@ -630,22 +630,22 @@ static INPUT_PORTS_START( srmp6 ) PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:4") PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:5") PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:6") PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0000, "Re-Clothe" ) + PORT_DIPNAME( 0x0040, 0x0000, "Re-Clothe" ) PORT_DIPLOCATION("DSW1:7") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0040, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, "Nudity" ) + PORT_DIPNAME( 0x0080, 0x0080, "Nudity" ) PORT_DIPLOCATION("DSW1:8") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0080, DEF_STR( On ) ) - PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Difficulty ) ) // DSW2 + PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:1,2,3") PORT_DIPSETTING( 0x0000, "8" ) PORT_DIPSETTING( 0x0100, "7" ) PORT_DIPSETTING( 0x0200, "6" ) @@ -654,19 +654,19 @@ static INPUT_PORTS_START( srmp6 ) PORT_DIPSETTING( 0x0500, "2" ) PORT_DIPSETTING( 0x0600, "1" ) PORT_DIPSETTING( 0x0700, "4" ) - PORT_DIPNAME( 0x0800, 0x0000, "Kuitan" ) + PORT_DIPNAME( 0x0800, 0x0000, "Kuitan" ) PORT_DIPLOCATION("DSW2:4") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0800, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Continues ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Continues ) ) PORT_DIPLOCATION("DSW2:5") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:6") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x2000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:7") PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_SERVICE( 0x8000, IP_ACTIVE_LOW ) + PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "DSW2:8" ) PORT_DIPLOCATION("DSW2:8") INPUT_PORTS_END /*************************************************************************** diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index 36ea7c5ec07..9a916bfee97 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -2427,8 +2427,39 @@ ROM_START( demonwld ) ROM_LOAD( "prom13.bpr", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */ ROM_END +// has the same sound rom and same attract order as the parent set, but still a 1989 copyright +// main 68k program ROMs had an additional 'N' stamped on them ROM_START( demonwld1 ) ROM_REGION( 0x040000, "maincpu", 0 ) /* Main 68K code */ + ROM_LOAD16_BYTE( "o16n-10.bin", 0x000000, 0x20000, CRC(fc38aeaa) SHA1(db338b3ade4ee90a9528b42a6128b854efdb289f) ) + ROM_LOAD16_BYTE( "o16n-09.bin", 0x000001, 0x20000, CRC(74f66643) SHA1(3a908f9e1cbd59d674ae719e3d9c87e729dd907f) ) + + ROM_REGION( 0x8000, "audiocpu", 0 ) /* Sound Z80 code */ + ROM_LOAD( "o16-11.bin", 0x0000, 0x8000, CRC(dbe08c85) SHA1(536a242bfe916d15744b079261507af6f12b5b50) ) + + ROM_REGION( 0x2000, "dsp", 0 ) /* Co-Processor TMS320C10 MCU code */ + ROM_LOAD16_BYTE( "dsp_21.bin", 0x0000, 0x0800, CRC(2d135376) SHA1(67a2cc774d272ee1cd6e6bc1c5fc33fc6968837e) ) + ROM_LOAD16_BYTE( "dsp_22.bin", 0x0001, 0x0800, CRC(79389a71) SHA1(14ec4c1c9b06702319e89a7a250d0038393437f4) ) + + ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_LOAD16_BYTE( "rom05", 0x00000, 0x20000, CRC(6506c982) SHA1(6d4c1ef91e5617724789ff196abb7abf23e4a7fb) ) + ROM_LOAD16_BYTE( "rom07", 0x00001, 0x20000, CRC(a3a0d993) SHA1(50311b9447eb04271b17b212ca31d083ab5b2414) ) + ROM_LOAD16_BYTE( "rom06", 0x40000, 0x20000, CRC(4fc5e5f3) SHA1(725d4b009d575ff8ffbe1c00df352ccf235465d7) ) + ROM_LOAD16_BYTE( "rom08", 0x40001, 0x20000, CRC(eb53ab09) SHA1(d98195cc1b65b76335b5b24adb31deae1b313f3a) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD16_BYTE( "rom01", 0x00000, 0x20000, CRC(1b3724e9) SHA1(3dbb0450ab1e40e6df2b7c7356352419cd3f113d) ) + ROM_LOAD16_BYTE( "rom02", 0x00001, 0x20000, CRC(7b20a44d) SHA1(4dc1a2fa2058077b112c73492808ee9381060ec7) ) + ROM_LOAD16_BYTE( "rom03", 0x40000, 0x20000, CRC(2cacdcd0) SHA1(92216d1c6859e05d39363c30e0beb45bc0ae4e1c) ) + ROM_LOAD16_BYTE( "rom04", 0x40001, 0x20000, CRC(76fd3201) SHA1(7a12737bf90bd9760074132edeb22f3fd3e16b4f) ) + + ROM_REGION( 0x40, "proms", 0 ) /* nibble bproms, lo/hi order to be determined */ + ROM_LOAD( "prom12.bpr", 0x00, 0x20, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */ + ROM_LOAD( "prom13.bpr", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */ +ROM_END + +ROM_START( demonwld2 ) + ROM_REGION( 0x040000, "maincpu", 0 ) /* Main 68K code */ ROM_LOAD16_BYTE( "o16-10.rom", 0x000000, 0x20000, CRC(036ee46c) SHA1(60868e5e08e0c9a538ae786de0de6b2531b30b11) ) ROM_LOAD16_BYTE( "o16-09.rom", 0x000001, 0x20000, CRC(bed746e3) SHA1(056668edb7df99bbd240e387af17cf252d1448f3) ) @@ -2456,7 +2487,7 @@ ROM_START( demonwld1 ) ROM_LOAD( "prom13.bpr", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */ ROM_END -ROM_START( demonwld2 ) +ROM_START( demonwld3 ) ROM_REGION( 0x040000, "maincpu", 0 ) /* Main 68K code */ ROM_LOAD16_BYTE( "o16-10-2.bin", 0x000000, 0x20000, CRC(84ee5218) SHA1(dc2b017ee630330163be320008d8a0d761cb0cfb) ) // aka o16_10ii ROM_LOAD16_BYTE( "o16-09-2.bin", 0x000001, 0x20000, CRC(cf474cb2) SHA1(5c049082b8d7118e0d2e50c6ae07f9d3d0110498) ) // aka o16_09ii @@ -2485,7 +2516,7 @@ ROM_START( demonwld2 ) ROM_LOAD( "prom13.bpr", 0x20, 0x20, CRC(a1e17492) SHA1(9ddec4c97f2d541f69f3c32c47aaa21fd9699ae2) ) /* ??? */ ROM_END -ROM_START( demonwld3 ) +ROM_START( demonwld4 ) ROM_REGION( 0x040000, "maincpu", 0 ) /* Main 68K code */ ROM_LOAD16_BYTE( "o16-10.bin", 0x000000, 0x20000, CRC(6f7468e0) SHA1(87ef7733fd0d00d0d375dbf30332cf0614480dc2) ) ROM_LOAD16_BYTE( "o16-09.bin", 0x000001, 0x20000, CRC(a572f5f7) SHA1(3d6a443cecd46734c7e1b761130909482c7a9914) ) @@ -2994,9 +3025,10 @@ GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, toaplan1, GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, toaplan1, ROT0, "Toaplan", "Zero Wing (1P set)", 0 ) GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, toaplan1, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 ) GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 ) -GAME( 1989, demonwld1, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) +GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 ) GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 ) +GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 ) GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark", MACHINE_NO_SOUND ) GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark (earlier)", MACHINE_NO_SOUND ) GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp index 966e008b9e4..f3aa72c312c 100644 --- a/src/mame/drivers/v1050.cpp +++ b/src/mame/drivers/v1050.cpp @@ -142,7 +142,6 @@ Notes: TODO: - - does not boot CP/M anymore - floppy 1 is broken - write to banked RAM at 0x0000-0x1fff when ROM is active - real keyboard w/i8049 @@ -156,7 +155,16 @@ Notes: void v1050_state::set_interrupt(int line, int state) { - m_pic->r_w(line, (m_int_mask & (1 << state)) ? 0 : 1); + if (state) + { + m_int_state |= (1 << line); + } + else + { + m_int_state &= ~(1 << line); + } + + m_pic->r_w(line, ((m_int_state & m_int_mask) & (1 << line)) ? 0 : 1); } void v1050_state::bankswitch() @@ -1137,4 +1145,4 @@ ROM_END // System Drivers // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, v1050, 0, 0, v1050, v1050, driver_device, 0, "Visual Technology Inc", "Visual 1050", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_KEYBOARD ) +COMP( 1983, v1050, 0, 0, v1050, v1050, driver_device, 0, "Visual Technology Inc", "Visual 1050", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_KEYBOARD ) diff --git a/src/mame/includes/hh_ucom4.h b/src/mame/includes/hh_ucom4.h index a50bc1087ff..9779570f090 100644 --- a/src/mame/includes/hh_ucom4.h +++ b/src/mame/includes/hh_ucom4.h @@ -36,9 +36,13 @@ public: // misc common UINT8 m_port[9]; // MCU port A-I write data (optional) + UINT8 m_int; // MCU INT pin state UINT16 m_inp_mux; // multiplexed inputs mask UINT8 read_inputs(int columns); + void refresh_interrupts(void); + void set_interrupt(int state); + DECLARE_INPUT_CHANGED_MEMBER(single_interrupt_line); // display common int m_display_wait; // led/lamp off-delay in microseconds (default 33ms) diff --git a/src/mame/includes/v1050.h b/src/mame/includes/v1050.h index ce79c1a7be9..bfb2f82ba82 100644 --- a/src/mame/includes/v1050.h +++ b/src/mame/includes/v1050.h @@ -90,6 +90,8 @@ public: m_rom(*this, Z80_TAG), m_video_ram(*this, "video_ram"), m_attr_ram(*this, "attr_ram"), + m_int_mask(0), + m_int_state(0), m_rtc_ppi_pa(0), m_rtc_ppi_pc(0) { @@ -192,6 +194,7 @@ public: // HACK for MC6845 // interrupt state UINT8 m_int_mask; // interrupt mask + UINT8 m_int_state; int m_f_int_enb; // floppy interrupt enable bool m_fdc_irq; bool m_fdc_drq; diff --git a/src/mame/layout/fidel_bcc.lay b/src/mame/layout/fidel_bcc.lay index d9bf4712953..0ff9ca4906a 100644 --- a/src/mame/layout/fidel_bcc.lay +++ b/src/mame/layout/fidel_bcc.lay @@ -3,6 +3,8 @@ <!-- define elements --> + <element name="static_gray"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element> + <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -12,58 +14,160 @@ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> </element> - <element name="txt_check"> - <text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text> - </element> - <element name="txt_lose"> - <text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="hl" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <rect state="1"> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> </element> - <element name="txt_from"> - <text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="text_check"><text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_lose"><text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_from"><text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_to"><text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text></element> + + <element name="text_b1"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="RE"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b2"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="CB"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b3"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="CL"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b4"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="EN"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b5"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="LV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b6"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="DM"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b7"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PB"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b8"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b9"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="A1"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b10"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="b2"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b11"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="C3"><color red="0.04" green="0.04" blue="0.04" /></text> </element> - <element name="txt_to"> - <text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="text_b12"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="d4"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b13"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="E5"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b14"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="F6"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b15"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="g7"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b16"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="H8"><color red="0.04" green="0.04" blue="0.04" /></text> </element> <!-- build screen --> <view name="Internal Layout"> - <bounds left="0" right="47" top="0" bottom="25" /> - - <bezel element="txt_check"> - <bounds x="1" y="1" width="20" height="3" /> - </bezel> - <bezel element="txt_lose"> - <bounds x="26" y="1" width="20" height="3" /> - </bezel> - <bezel name="4.a" element="led"> - <bounds x="2" y="1" width="3" height="3" /> - </bezel> - <bezel name="5.a" element="led"> - <bounds x="27" y="1" width="3" height="3" /> - </bezel> - - <bezel element="txt_from"> - <bounds x="1" y="21" width="20" height="3" /> - </bezel> - <bezel element="txt_to"> - <bounds x="26" y="21" width="20" height="3" /> - </bezel> - - <bezel name="digit0" element="digit"> - <bounds x="1" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit1" element="digit"> - <bounds x="11" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit2" element="digit"> - <bounds x="26" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit3" element="digit"> - <bounds x="36" y="5" width="10" height="15" /> - </bezel> + <bounds left="-0.5" right="18" top="7.7" bottom="36" /> + + <!-- 7segs/leds --> + + <bezel element="text_check"><bounds x="1" y="8.2" width="8" height="2" /></bezel> + <bezel element="text_lose"><bounds x="10.5" y="8.2" width="8" height="2" /></bezel> + <bezel name="4.a" element="led"><bounds x="0" y="8.5" width="1.5" height="1.5" /></bezel> + <bezel name="5.a" element="led"><bounds x="9.5" y="8.5" width="1.5" height="1.5" /></bezel> + + <bezel element="text_from"><bounds x="0" y="17.2" width="8" height="2" /></bezel> + <bezel element="text_to"><bounds x="9.5" y="17.2" width="8" height="2" /></bezel> + + <bezel name="digit0" element="digit"><bounds x="0" y="11" width="4" height="6" /></bezel> + <bezel name="digit1" element="digit"><bounds x="4" y="11" width="4" height="6" /></bezel> + <bezel name="digit2" element="digit"><bounds x="9.5" y="11" width="4" height="6" /></bezel> + <bezel name="digit3" element="digit"><bounds x="13.5" y="11" width="4" height="6" /></bezel> + + <!-- button panel --> + + <bezel element="static_gray"><bounds x="0" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="32" width="4" height="3" /></bezel> + + <bezel element="text_b1"><bounds x="0.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b2"><bounds x="4.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b3"><bounds x="9.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b4"><bounds x="13.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b5"><bounds x="0.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b6"><bounds x="4.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b7"><bounds x="9.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b8"><bounds x="13.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b9"><bounds x="0.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b10"><bounds x="4.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b11"><bounds x="9.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b12"><bounds x="13.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b13"><bounds x="0.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b14"><bounds x="4.6" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b15"><bounds x="9.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b16"><bounds x="13.6" y="32.5" width="3.8" height="2" /></bezel> + + <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="0" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="4.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="9" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="13.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="0" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="4.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="9" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="13.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="0" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="4.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="9" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="13.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="0" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="4.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="9" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="13.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> </view> </mamelayout> diff --git a/src/mame/layout/fidel_cc.lay b/src/mame/layout/fidel_cc.lay index 6c10abb5180..b887a90162c 100644 --- a/src/mame/layout/fidel_cc.lay +++ b/src/mame/layout/fidel_cc.lay @@ -3,6 +3,8 @@ <!-- define elements --> + <element name="static_gray"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element> + <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -12,58 +14,160 @@ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> </element> - <element name="txt_check"> - <text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text> - </element> - <element name="txt_lose"> - <text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="hl" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <rect state="1"> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> </element> - <element name="txt_from"> - <text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="text_check"><text string="CHECK"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_lose"><text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_from"><text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_to"><text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text></element> + + <element name="text_b1"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="RE"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b2"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="spk"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b3"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="CL"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b4"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="EN"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b5"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="LV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b6"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="DM"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b7"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PB"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b8"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b9"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="A1"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b10"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="b2"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b11"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="C3"><color red="0.04" green="0.04" blue="0.04" /></text> </element> - <element name="txt_to"> - <text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text> + <element name="text_b12"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="d4"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b13"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="E5"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b14"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="F6"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b15"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="g7"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b16"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="H8"><color red="0.04" green="0.04" blue="0.04" /></text> </element> <!-- build screen --> <view name="Internal Layout"> - <bounds left="0" right="47" top="0" bottom="25" /> - - <bezel element="txt_check"> - <bounds x="1" y="1" width="20" height="3" /> - </bezel> - <bezel element="txt_lose"> - <bounds x="26" y="1" width="20" height="3" /> - </bezel> - <bezel name="1.7" element="led"> - <bounds x="2" y="1" width="3" height="3" /> - </bezel> - <bezel name="0.7" element="led"> - <bounds x="27" y="1" width="3" height="3" /> - </bezel> - - <bezel element="txt_from"> - <bounds x="1" y="21" width="20" height="3" /> - </bezel> - <bezel element="txt_to"> - <bounds x="26" y="21" width="20" height="3" /> - </bezel> - - <bezel name="digit0" element="digit"> - <bounds x="1" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit1" element="digit"> - <bounds x="11" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit2" element="digit"> - <bounds x="26" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit3" element="digit"> - <bounds x="36" y="5" width="10" height="15" /> - </bezel> + <bounds left="-0.5" right="18" top="7.7" bottom="36" /> + + <!-- 7segs/leds --> + + <bezel element="text_check"><bounds x="1" y="8.2" width="8" height="2" /></bezel> + <bezel element="text_lose"><bounds x="10.5" y="8.2" width="8" height="2" /></bezel> + <bezel name="1.7" element="led"><bounds x="0" y="8.5" width="1.5" height="1.5" /></bezel> + <bezel name="0.7" element="led"><bounds x="9.5" y="8.5" width="1.5" height="1.5" /></bezel> + + <bezel element="text_from"><bounds x="0" y="17.2" width="8" height="2" /></bezel> + <bezel element="text_to"><bounds x="9.5" y="17.2" width="8" height="2" /></bezel> + + <bezel name="digit0" element="digit"><bounds x="0" y="11" width="4" height="6" /></bezel> + <bezel name="digit1" element="digit"><bounds x="4" y="11" width="4" height="6" /></bezel> + <bezel name="digit2" element="digit"><bounds x="9.5" y="11" width="4" height="6" /></bezel> + <bezel name="digit3" element="digit"><bounds x="13.5" y="11" width="4" height="6" /></bezel> + + <!-- button panel --> + + <bezel element="static_gray"><bounds x="0" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="32" width="4" height="3" /></bezel> + + <bezel element="text_b1"><bounds x="0.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b2"><bounds x="4.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b3"><bounds x="9.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b4"><bounds x="13.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b5"><bounds x="0.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b6"><bounds x="4.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b7"><bounds x="9.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b8"><bounds x="13.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b9"><bounds x="0.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b10"><bounds x="4.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b11"><bounds x="9.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b12"><bounds x="13.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b13"><bounds x="0.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b14"><bounds x="4.6" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b15"><bounds x="9.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b16"><bounds x="13.6" y="32.5" width="3.8" height="2" /></bezel> + + <bezel element="hl" inputtag="RESET" inputmask="0x01"><bounds x="0" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="4.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="9" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="13.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="0" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="4.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="9" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="13.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="0" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="4.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="9" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="13.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="0" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="4.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="9" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="13.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> </view> </mamelayout> diff --git a/src/mame/layout/fidel_chesster.lay b/src/mame/layout/fidel_chesster.lay index 28a5fab7f74..cd2044bf41e 100644 --- a/src/mame/layout/fidel_chesster.lay +++ b/src/mame/layout/fidel_chesster.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -209,9 +207,6 @@ <view name="Internal Layout"> <bounds left="-7" right="93" top="-2" bottom="103" /> - <bezel element="static_black"> - <bounds left="-7" right="93" top="-2" bottom="103" /> - </bezel> <bezel element="white"><bounds x="-7.5" y="-2.5" width="101" height="106" /></bezel> diff --git a/src/mame/layout/fidel_csc.lay b/src/mame/layout/fidel_csc.lay index 55b42c34969..c4b883c3982 100644 --- a/src/mame/layout/fidel_csc.lay +++ b/src/mame/layout/fidel_csc.lay @@ -1,9 +1,8 @@ <?xml version="1.0"?> <mamelayout version="2"> -<!-- other than panel button mappings, layout is identical to vsc --> +<!-- luascript --> -<!-- define elements --> <script> local layout = {} local board @@ -82,7 +81,10 @@ return layout, "fidel_csc" </script> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> + +<!-- other than panel button mappings, layout is identical to vsc --> + +<!-- define elements --> <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> @@ -274,9 +276,6 @@ <view name="Internal Layout"> <bounds left="-2" right="98" top="-18" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="98" top="-18" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="90.5" /></bezel> diff --git a/src/mame/layout/fidel_des2000.lay b/src/mame/layout/fidel_des2000.lay new file mode 100644 index 00000000000..238b0b5562d --- /dev/null +++ b/src/mame/layout/fidel_des2000.lay @@ -0,0 +1,456 @@ +<?xml version="1.0"?> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="led" defstate="0"> + <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> + <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> + </element> + + <element name="hl" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <disk state="1"> + <bounds x="0.12" y="0.12" width="0.76" height="0.76" /> + <color red="1.0" green="1.0" blue="1.0" /> + </disk> + </element> + <element name="hlb" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <disk state="1"> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="1.0" green="1.0" blue="1.0" /> + </disk> + </element> + + <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element> + <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element> + <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element> + <element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element> + + <element name="text_1"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="1" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_2"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="2" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_3"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="3" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_4"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="4" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_5"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="5" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_6"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="6" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_7"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="7" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_8"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="8" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + + <element name="text_9"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_10"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_11"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_12"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="12" align="2"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + + <element name="text_a"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_b"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_c"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_d"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_e"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_f"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_g"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_h"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + + <element name="text_lb"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_lc"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_ld"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="WHITE"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_le"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="BLACK"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_lf"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="STALEMATE"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_lg"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + <element name="text_lh"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text> + </element> + + <element name="text_t81"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="NEW"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t82"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="GAME"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t7"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="VERIFY"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t6"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="OPTIONS"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t5"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="LEVEL"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t41"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="TAKE"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t42"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="BACK"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t3"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="HINT"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t2"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="MOVE"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_t1"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="CLEAR"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + + <element name="text_tl7"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♚"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_tl6"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♛"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_tl5"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♜"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_tl4"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♝"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_tl3"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♞"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + <element name="text_tl2"> + <rect><color red="0.81" green="0.8" blue="0.79" /></rect> + <text string="♟"><color red="0.17" green="0.15" blue="0.15" /></text> + </element> + + +<!-- build screen --> + + <view name="Internal Layout"> + <bounds left="-7.5" right="96" top="-2.5" bottom="93.5" /> + + <bezel element="white"><bounds x="-11.5" y="-3.5" width="110" height="101" /></bezel> + + <!-- chessboard coords --> + + <bezel element="text_8"><bounds x="-0.8" y="7" width="2" height="2" /></bezel> + <bezel element="text_7"><bounds x="-0.8" y="17" width="2" height="2" /></bezel> + <bezel element="text_6"><bounds x="-0.8" y="27" width="2" height="2" /></bezel> + <bezel element="text_5"><bounds x="-0.8" y="37" width="2" height="2" /></bezel> + <bezel element="text_4"><bounds x="-0.8" y="47" width="2" height="2" /></bezel> + <bezel element="text_3"><bounds x="-0.8" y="57" width="2" height="2" /></bezel> + <bezel element="text_2"><bounds x="-0.8" y="67" width="2" height="2" /></bezel> + <bezel element="text_1"><bounds x="-0.8" y="77" width="2" height="2" /></bezel> + + <bezel element="text_a"><bounds x="7" y="85" width="2" height="2" /></bezel> + <bezel element="text_b"><bounds x="17" y="85" width="2" height="2" /></bezel> + <bezel element="text_c"><bounds x="27" y="85" width="2" height="2" /></bezel> + <bezel element="text_d"><bounds x="37" y="85" width="2" height="2" /></bezel> + <bezel element="text_e"><bounds x="47" y="85" width="2" height="2" /></bezel> + <bezel element="text_f"><bounds x="57" y="85" width="2" height="2" /></bezel> + <bezel element="text_g"><bounds x="67" y="85" width="2" height="2" /></bezel> + <bezel element="text_h"><bounds x="77" y="85" width="2" height="2" /></bezel> + + <!-- left side labels --> + + <bezel element="text_9"><bounds x="-9.3" y="12" width="5" height="2" /></bezel> + <bezel element="text_10"><bounds x="-9.3" y="22" width="5" height="2" /></bezel> + <bezel element="text_11"><bounds x="-9.3" y="32" width="5" height="2" /></bezel> + <bezel element="text_12"><bounds x="-9.3" y="42" width="5" height="2" /></bezel> + + <!-- bottom side labels --> + + <bezel element="text_lb"><bounds x="13" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_lc"><bounds x="23" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_ld"><bounds x="33" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_le"><bounds x="43" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_lf"><bounds x="53" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_lh"><bounds x="73" y="90.4" width="10" height="2" /></bezel> + <bezel element="text_lg"><bounds x="62" y="90.4" width="12" height="2" /></bezel> + + <!-- chessboard bezel --> + + <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel> + <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel> + + <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel> + <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel> + <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel> + <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel> + + <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel> + <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel> + + <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel> + + <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel> + <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel> + + <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel> + + <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel> + <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel> + + <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel> + <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel> + + <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel> + <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel> + <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel> + <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel> + + <!-- chessboard sensors --> + + <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel> + + <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel> + <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel> + + <!-- chessboard leds --> + + <bezel name="0.7" element="led"><bounds x="-2.8" y="7.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.6" element="led"><bounds x="-2.8" y="17.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.5" element="led"><bounds x="-2.8" y="27.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.4" element="led"><bounds x="-2.8" y="37.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.3" element="led"><bounds x="-2.8" y="47.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.2" element="led"><bounds x="-2.8" y="57.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.1" element="led"><bounds x="-2.8" y="67.25" width="1.5" height="1.5" /></bezel> + <bezel name="0.0" element="led"><bounds x="-2.8" y="77.25" width="1.5" height="1.5" /></bezel> + + <bezel name="1.0" element="led"><bounds x="7.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.1" element="led"><bounds x="17.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.2" element="led"><bounds x="27.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.3" element="led"><bounds x="37.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.4" element="led"><bounds x="47.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.5" element="led"><bounds x="57.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.6" element="led"><bounds x="67.25" y="88" width="1.5" height="1.5" /></bezel> + <bezel name="1.7" element="led"><bounds x="77.25" y="88" width="1.5" height="1.5" /></bezel> + + <!-- right side --> + + <bezel element="white"><bounds x="87.3" y="9.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="19.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="28.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="37.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="46.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="55.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="64.3" width="7.4" height="3.4" /></bezel> + <bezel element="white"><bounds x="87.3" y="73.3" width="7.4" height="3.4" /></bezel> + + <bezel element="text_tl7"><bounds x="87" y="11.6" width="6" height="3.5" /></bezel> + <bezel element="text_tl6"><bounds x="87" y="21.6" width="6" height="3.5" /></bezel> + <bezel element="text_tl5"><bounds x="87" y="31.6" width="6" height="3.5" /></bezel> + <bezel element="text_tl4"><bounds x="87" y="41.6" width="6" height="3.5" /></bezel> + <bezel element="text_tl3"><bounds x="87" y="51.6" width="6" height="3.5" /></bezel> + <bezel element="text_tl2"><bounds x="87" y="61.6" width="6" height="3.5" /></bezel> + + <bezel element="disk_black"><bounds x="87" y="5" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="15" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="25" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="35" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="45" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="55" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="65" width="6" height="6" /></bezel> + <bezel element="disk_black"><bounds x="87" y="75" width="6" height="6" /></bezel> + + <bezel element="disk_white"><bounds x="87.7" y="5.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="15.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="25.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="35.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="45.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="55.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="65.7" width="4.6" height="4.6" /></bezel> + <bezel element="disk_white"><bounds x="87.7" y="75.7" width="4.6" height="4.6" /></bezel> + + <bezel element="text_t81"><bounds x="88.1" y="6.7" width="3.8" height="1.25" /></bezel> + <bezel element="text_t82"><bounds x="88.1" y="7.95" width="3.8" height="1.25" /></bezel> + <bezel element="text_t7"><bounds x="87.8" y="17.325" width="4.4" height="1.25" /></bezel> + <bezel element="text_t6"><bounds x="87.8" y="27.325" width="4.4" height="1.25" /></bezel> + <bezel element="text_t5"><bounds x="87.8" y="37.325" width="4.4" height="1.25" /></bezel> + <bezel element="text_t41"><bounds x="88.1" y="46.7" width="3.8" height="1.25" /></bezel> + <bezel element="text_t42"><bounds x="88.1" y="47.95" width="3.8" height="1.25" /></bezel> + <bezel element="text_t3"><bounds x="87.8" y="57.325" width="4.4" height="1.25" /></bezel> + <bezel element="text_t2"><bounds x="87.8" y="67.325" width="4.4" height="1.25" /></bezel> + <bezel element="text_t1"><bounds x="87.8" y="77.325" width="4.4" height="1.25" /></bezel> + + <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="5" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="15" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="25" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="35" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="45" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="55" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="65" width="6" height="6" /><color alpha="0.3" /></bezel> + <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="75" width="6" height="6" /><color alpha="0.3" /></bezel> + + </view> +</mamelayout> diff --git a/src/mame/layout/fidel_eag.lay b/src/mame/layout/fidel_eag.lay index 7cb96e4c1b5..18c69c87fee 100644 --- a/src/mame/layout/fidel_eag.lay +++ b/src/mame/layout/fidel_eag.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -141,9 +139,6 @@ <view name="Internal Layout"> <bounds left="-2" right="102" top="-2" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="102" top="-2" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="90.5" height="91" /></bezel> diff --git a/src/mame/layout/fidel_eag_68k.lay b/src/mame/layout/fidel_eag_68k.lay index e0f0506b1df..938daaa40f4 100644 --- a/src/mame/layout/fidel_eag_68k.lay +++ b/src/mame/layout/fidel_eag_68k.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -141,9 +139,6 @@ <view name="Internal Layout"> <bounds left="-2" right="102" top="-2" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="102" top="-2" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="90.5" height="91" /></bezel> diff --git a/src/mame/layout/fidel_eas.lay b/src/mame/layout/fidel_eas.lay index 97ecd875f52..57bc6dc6f89 100644 --- a/src/mame/layout/fidel_eas.lay +++ b/src/mame/layout/fidel_eas.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -133,9 +131,6 @@ <view name="Internal Layout"> <bounds left="-2" right="88" top="-2" bottom="100.5" /> - <bezel element="static_black"> - <bounds left="-2" right="88" top="-2" bottom="100.5" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="91" height="90.5" /></bezel> diff --git a/src/mame/layout/fidel_ex.lay b/src/mame/layout/fidel_ex.lay index 1750fa9e138..db62eda88ba 100644 --- a/src/mame/layout/fidel_ex.lay +++ b/src/mame/layout/fidel_ex.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -222,9 +220,6 @@ <view name="Internal Layout"> <bounds left="-2" right="98" top="-2.5" bottom="89" /> - <bezel element="static_black"> - <bounds left="-2" right="98" top="-2.5" bottom="89" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="101" height="92" /></bezel> @@ -453,6 +448,5 @@ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="64" width="8" height="4" /><color alpha="0.4" /></bezel> <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="73" width="8" height="4" /><color alpha="0.4" /></bezel> - </view> </mamelayout> diff --git a/src/mame/layout/fidel_exd.lay b/src/mame/layout/fidel_exd.lay index 8c5eefe0598..e72cf5b9490 100644 --- a/src/mame/layout/fidel_exd.lay +++ b/src/mame/layout/fidel_exd.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -226,9 +224,6 @@ <view name="Internal Layout"> <bounds left="-2" right="98" top="-14.5" bottom="89" /> - <bezel element="static_black"> - <bounds left="-2" right="98" top="-14.5" bottom="89" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="91.5" /></bezel> @@ -479,6 +474,5 @@ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="64" width="8" height="4" /><color alpha="0.4" /></bezel> <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="73" width="8" height="4" /><color alpha="0.4" /></bezel> - </view> </mamelayout> diff --git a/src/mame/layout/fidel_playmatic.lay b/src/mame/layout/fidel_playmatic.lay index f14ec684b28..2f58c943b25 100644 --- a/src/mame/layout/fidel_playmatic.lay +++ b/src/mame/layout/fidel_playmatic.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -121,9 +119,6 @@ <view name="Internal Layout"> <bounds left="-2" right="98" top="-2" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="98" top="-2" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="90.5" height="90.5" /></bezel> diff --git a/src/mame/layout/fidel_rsc_v2.lay b/src/mame/layout/fidel_rsc_v2.lay index 51de25469e9..9e3ac0954e4 100644 --- a/src/mame/layout/fidel_rsc_v2.lay +++ b/src/mame/layout/fidel_rsc_v2.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -157,9 +155,6 @@ <view name="Internal Layout"> <bounds left="-2" right="97" top="-2" bottom="87" /> - <bezel element="static_black"> - <bounds left="-2" right="97" top="-2" bottom="87" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="100" height="89.5" /></bezel> diff --git a/src/mame/layout/fidel_sc12.lay b/src/mame/layout/fidel_sc12.lay index cbcccc733a3..e296533a269 100644 --- a/src/mame/layout/fidel_sc12.lay +++ b/src/mame/layout/fidel_sc12.lay @@ -3,9 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="blackl"><rect><color red="0.01" green="0.01" blue="0.01" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -32,6 +29,7 @@ </disk> </element> + <element name="blackl"><rect><color red="0.01" green="0.01" blue="0.01" /></rect></element> <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element> <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element> <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element> @@ -263,9 +261,6 @@ <view name="Internal Layout"> <bounds left="-7" right="98" top="-2" bottom="93" /> - <bezel element="static_black"> - <bounds left="-7" right="98" top="-2" bottom="93" /> - </bezel> <bezel element="white"><bounds x="-7.5" y="-2.5" width="106" height="96" /></bezel> diff --git a/src/mame/layout/fidel_sc9.lay b/src/mame/layout/fidel_sc9.lay index c8e64595920..ebf037f5565 100644 --- a/src/mame/layout/fidel_sc9.lay +++ b/src/mame/layout/fidel_sc9.lay @@ -5,8 +5,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="led" defstate="0"> <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk> <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> @@ -167,9 +165,6 @@ <view name="Internal Layout"> <bounds left="-2" right="100" top="-2" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="100" top="-2" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2.5" width="103" height="90.5" /></bezel> diff --git a/src/mame/layout/fidel_su9.lay b/src/mame/layout/fidel_su9.lay index c6010790c9b..61e26e8a759 100644 --- a/src/mame/layout/fidel_su9.lay +++ b/src/mame/layout/fidel_su9.lay @@ -5,8 +5,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -206,9 +204,6 @@ <view name="Internal Layout"> <bounds left="-2" right="100" top="-18" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="100" top="-18" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2" width="103" height="90.5" /></bezel> diff --git a/src/mame/layout/fidel_vcc.lay b/src/mame/layout/fidel_vcc.lay index bb58b17b2ae..4ae050027aa 100644 --- a/src/mame/layout/fidel_vcc.lay +++ b/src/mame/layout/fidel_vcc.lay @@ -3,8 +3,7 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="static_bg"><rect><color red="0.5" green="0.5" blue="0.5" /></rect></element> + <element name="static_gray"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element> <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> @@ -15,53 +14,156 @@ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk> </element> - <element name="txt_from"> - <rect><color red="0.5" green="0.5" blue="0.5" /></rect> - <text string="FROM"><color red="0.03" green="0.03" blue="0.03" /></text> + <element name="hl" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <rect state="1"> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> </element> - <element name="txt_to"> - <rect><color red="0.5" green="0.5" blue="0.5" /></rect> - <text string="TO"><color red="0.03" green="0.03" blue="0.03" /></text> + + <element name="text_from"><text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text></element> + <element name="text_to"><text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text></element> + + <element name="text_b1"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="RE"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b2"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="spk"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b3"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="CL"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b4"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="EN"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b5"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="LV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b6"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="DM"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b7"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PB"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b8"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="PV"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b9"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="A1"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b10"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="b2"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b11"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="C3"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b12"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="d4"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b13"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="E5"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b14"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="F6"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b15"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="g7"><color red="0.04" green="0.04" blue="0.04" /></text> + </element> + <element name="text_b16"> + <rect><color red="0.6" green="0.6" blue="0.6" /></rect> + <text string="H8"><color red="0.04" green="0.04" blue="0.04" /></text> </element> <!-- build screen --> <view name="Internal Layout"> - <bounds left="0" right="47" top="0" bottom="25" /> - <bezel element="static_bg"> - <bounds left="-1" right="48" top="-1" bottom="26" /> - </bezel> - - <bezel element="txt_from"> - <bounds x="1" y="21" width="20" height="3" /> - </bezel> - <bezel element="txt_to"> - <bounds x="26" y="21" width="20" height="3" /> - </bezel> - - <bezel element="static_black"> - <bounds left="-2" right="49" top="4" bottom="21" /> - </bezel> - <bezel name="digit0" element="digit"> - <bounds x="1" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit1" element="digit"> - <bounds x="11" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit2" element="digit"> - <bounds x="26" y="5" width="10" height="15" /> - </bezel> - <bezel name="digit3" element="digit"> - <bounds x="36" y="5" width="10" height="15" /> - </bezel> - - <bezel name="1.7" element="led"> - <bounds x="23.25" y="6.5" width="1.5" height="1.5" /> - </bezel> - <bezel name="0.7" element="led"> - <bounds x="22.25" y="17" width="1.5" height="1.5" /> - </bezel> + <bounds left="-0.5" right="18" top="10" bottom="36" /> + + <!-- 7segs/leds --> + + <bezel element="text_from"><bounds x="0" y="17.2" width="8" height="2" /></bezel> + <bezel element="text_to"><bounds x="9.5" y="17.2" width="8" height="2" /></bezel> + + <bezel name="digit0" element="digit"><bounds x="0" y="11" width="4" height="6" /></bezel> + <bezel name="digit1" element="digit"><bounds x="4" y="11" width="4" height="6" /></bezel> + <bezel name="digit2" element="digit"><bounds x="9.5" y="11" width="4" height="6" /></bezel> + <bezel name="digit3" element="digit"><bounds x="13.5" y="11" width="4" height="6" /></bezel> + + <bezel name="1.7" element="led"><bounds x="8.65" y="11.8" width="0.6" height="0.6" /></bezel> + <bezel name="0.7" element="led"><bounds x="8.35" y="15.7" width="0.6" height="0.6" /></bezel> + + <!-- button panel --> + + <bezel element="static_gray"><bounds x="0" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="20" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="24" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="28" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="0" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="4.5" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="9" y="32" width="4" height="3" /></bezel> + <bezel element="static_gray"><bounds x="13.5" y="32" width="4" height="3" /></bezel> + + <bezel element="text_b1"><bounds x="0.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b2"><bounds x="4.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b3"><bounds x="9.1" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b4"><bounds x="13.6" y="20.5" width="3.8" height="2" /></bezel> + <bezel element="text_b5"><bounds x="0.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b6"><bounds x="4.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b7"><bounds x="9.1" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b8"><bounds x="13.6" y="24.5" width="3.8" height="2" /></bezel> + <bezel element="text_b9"><bounds x="0.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b10"><bounds x="4.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b11"><bounds x="9.1" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b12"><bounds x="13.6" y="28.5" width="3.8" height="2" /></bezel> + <bezel element="text_b13"><bounds x="0.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b14"><bounds x="4.6" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b15"><bounds x="9.1" y="32.5" width="3.8" height="2" /></bezel> + <bezel element="text_b16"><bounds x="13.6" y="32.5" width="3.8" height="2" /></bezel> + + <bezel element="hl" inputtag="RESET" inputmask="0x01"><bounds x="0" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="4.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="9" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="13.5" y="20" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="0" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="4.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="9" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="13.5" y="24" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="0" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="4.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="9" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="13.5" y="28" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="0" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="4.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="9" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> + <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="13.5" y="32" width="4" height="3" /><color alpha="0.2" /></bezel> </view> </mamelayout> diff --git a/src/mame/layout/fidel_vsc.lay b/src/mame/layout/fidel_vsc.lay index 3ac26beae1c..fcd23761d06 100644 --- a/src/mame/layout/fidel_vsc.lay +++ b/src/mame/layout/fidel_vsc.lay @@ -3,8 +3,6 @@ <!-- define elements --> - <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> - <element name="digit" defstate="0"> <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> </element> @@ -179,9 +177,6 @@ <view name="Internal Layout"> <bounds left="-2" right="98" top="-18" bottom="88" /> - <bezel element="static_black"> - <bounds left="-2" right="98" top="-18" bottom="88" /> - </bezel> <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="90.5" /></bezel> diff --git a/src/mame/layout/grobot9.lay b/src/mame/layout/grobot9.lay new file mode 100644 index 00000000000..e9d2c61895c --- /dev/null +++ b/src/mame/layout/grobot9.lay @@ -0,0 +1,314 @@ +<?xml version="1.0"?> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="static_white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element> + <element name="static_yellow"><rect><color red="0.8" green="0.8" blue="0.35" /></rect></element> + + <element name="maskd" defstate="0"> + <text string=" "> + <bounds x="0.0" y="0.0" width="1.0" height="1.0" /> + <color red="0.0" green="0.0" blue="0.0" /> + </text> + <disk state="1"> + <bounds x="0.12" y="0.12" width="0.76" height="0.76" /> + <color red="0" green="0" blue="0" /> + </disk> + </element> + + <element name="mask1" defstate="0"> + <rect state="0"><color red="0" green="0" blue="0" /></rect> + <rect state="1"><color red="1.0" green="1.0" blue="1.0" /></rect> + </element> + + <element name="mask2" defstate="0"> + <rect state="0"> + <color red="0" green="0" blue="0" /> + <bounds x="0.94" y="0.0" width="0.06" height="1.0" /> + </rect> + <rect state="0"> + <color red="0" green="0" blue="0" /> + <bounds x="0.0" y="0.94" width="1.0" height="0.06" /> + </rect> + </element> + + <element name="mask3" defstate="0"> + <rect state="0"> + <color red="0" green="0" blue="0" /> + <bounds x="0.94" y="0.0" width="0.06" height="0.06" /> + </rect> + <rect state="0"> + <color red="0" green="0" blue="0" /> + <bounds x="0.0" y="0.94" width="0.06" height="0.06" /> + </rect> + </element> + + <element name="mask4" defstate="0"> + <rect state="1"> + <color red="0" green="0" blue="0" /> + <bounds x="0.0" y="0.0" width="0.06" height="1.0" /> + </rect> + <rect state="1"> + <color red="0" green="0" blue="0" /> + <bounds x="0.0" y="0.0" width="1.0" height="0.06" /> + </rect> + </element> + + <element name="button1"><rect state="0"><color red="1.0" green="0.23" blue="0.25" /></rect></element> + <element name="button2"><rect state="0"><color red="0.9" green="0.9" blue="0.2" /></rect></element> + <element name="button3"><rect state="0"><color red="1.0" green="0.42" blue="0.2" /></rect></element> + <element name="button4"><rect state="0"><color red="0.1" green="0.7" blue="0.1" /></rect></element> + <element name="button5"><rect state="0"><color red="0.25" green="0.25" blue="1.0" /></rect></element> + <element name="button6"><rect state="0"><color red="0.2" green="0.9" blue="1.0" /></rect></element> + <element name="button7"><rect state="0"><color red="0.5" green="0.1" blue="1.0" /></rect></element> + <element name="button8"><rect state="0"><color red="0.53" green="1.0" blue="0.5" /></rect></element> + <element name="button9"><rect state="0"><color red="1.0" green="0.2" blue="0.8" /></rect></element> + + <element name="text_1"><text string="1"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_2"><text string="2"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_3"><text string="3"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_4"><text string="4"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_5"><text string="5"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_6"><text string="6"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_7"><text string="7"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_8"><text string="8"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_9"><text string="9"><color red="0.94" green="0.94" blue="0.74" /></text></element> + + <element name="text_u1"><text string="[1] ELECTRONIC ORGAN [2] MUSIC MACHINE [2A] WHAT'S THAT"><color red="0.84" green="0.84" blue="0.64" /></text></element> + <element name="text_u2"><text string="SONG? [3] THE MEMORY GAME [4] MINDBENDER [5] SPACE ATTACK"><color red="0.84" green="0.84" blue="0.64" /></text></element> + <element name="text_u3"><text string="[6] SUBMARINE HUNT [7] CATCH THE COMET [8] BASEBALL [9] ROULETTE"><color red="0.84" green="0.84" blue="0.64" /></text></element> + + <element name="text_r1"><text string="REPEAT"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_r2"><text string="REST"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_r3"><text string="8TH NOTE"><color red="0.94" green="0.94" blue="0.74" /></text></element> + + <element name="text_d1"><text string="START"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_d2"><text string="SELECT"><color red="0.94" green="0.94" blue="0.74" /></text></element> + <element name="text_d3"><text string="HIT"><color red="0.94" green="0.94" blue="0.74" /></text></element> + + + +<!-- build screen --> + + <view name="Internal Layout"> + <bounds left="1" right="50" top="2.5" bottom="63.4" /> + + <bezel element="text_u1"><bounds x="0" y="3.5" width="52" height="1.5" /></bezel> + <bezel element="text_u2"><bounds x="0" y="5.0" width="52" height="1.5" /></bezel> + <bezel element="text_u3"><bounds x="0" y="6.5" width="52" height="1.5" /></bezel> + + <!-- misc buttons --> + + <bezel element="static_yellow"><bounds x="43" y="16" width="5" height="5" /></bezel> + <bezel element="static_yellow"><bounds x="43" y="31" width="5" height="5" /></bezel> + <bezel element="static_yellow"><bounds x="43" y="46" width="5" height="5" /></bezel> + + <bezel element="maskd" inputtag="IN.3" inputmask="0x08"><bounds x="43" y="16" width="5" height="5" /><color alpha="0.2" /></bezel> + <bezel element="maskd" inputtag="IN.2" inputmask="0x02"><bounds x="43" y="31" width="5" height="5" /><color alpha="0.2" /></bezel> + <bezel element="maskd" inputtag="IN.2" inputmask="0x04"><bounds x="43" y="46" width="5" height="5" /><color alpha="0.2" /></bezel> + + <bezel element="text_r1"><bounds x="39" y="21.4" width="13" height="2" /></bezel> + <bezel element="text_r2"><bounds x="39" y="36.4" width="13" height="2" /></bezel> + <bezel element="text_r3"><bounds x="39" y="51.4" width="13" height="2" /></bezel> + + + <bezel element="static_white"><bounds x="18" y="55" width="5" height="5" /></bezel> + <bezel element="static_white"><bounds x="26" y="55" width="5" height="5" /></bezel> + <bezel element="static_white"><bounds x="34" y="55" width="5" height="5" /></bezel> + + <bezel element="maskd" inputtag="IN.4" inputmask="0x01"><bounds x="18" y="55" width="5" height="5" /><color alpha="0.2" /></bezel> + <bezel element="maskd" inputtag="IN.3" inputmask="0x01"><bounds x="26" y="55" width="5" height="5" /><color alpha="0.2" /></bezel> + <bezel element="maskd" inputtag="IN.3" inputmask="0x04"><bounds x="34" y="55" width="5" height="5" /><color alpha="0.2" /></bezel> + + <bezel element="text_d1"><bounds x="16" y="60.4" width="9" height="2" /></bezel> + <bezel element="text_d2"><bounds x="24" y="60.4" width="9" height="2" /></bezel> + <bezel element="text_d3"><bounds x="32" y="60.4" width="9" height="2" /></bezel> + + + <!-- coloured lighted buttons --> + <!-- row 1 2 3 --> + + <bezel element="button1"> + <bounds x="3" y="9" width="10" height="12" /> + </bezel> + <bezel name="lamp0" element="mask1"> + <bounds x="3" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.0" inputmask="0x01"> + <bounds x="3" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.0" inputmask="0x01"> + <bounds x="3" y="9" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.0" inputmask="0x01"> + <bounds x="3" y="9" width="10" height="12" /> + </bezel> + + <bezel element="button2"> + <bounds x="16" y="9" width="10" height="12" /> + </bezel> + <bezel name="lamp1" element="mask1"> + <bounds x="16" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.0" inputmask="0x02"> + <bounds x="16" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.0" inputmask="0x02"> + <bounds x="16" y="9" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.0" inputmask="0x02"> + <bounds x="16" y="9" width="10" height="12" /> + </bezel> + + <bezel element="button3"> + <bounds x="29" y="9" width="10" height="12" /> + </bezel> + <bezel name="lamp2" element="mask1"> + <bounds x="29" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.0" inputmask="0x04"> + <bounds x="29" y="9" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.0" inputmask="0x04"> + <bounds x="29" y="9" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.0" inputmask="0x04"> + <bounds x="29" y="9" width="10" height="12" /> + </bezel> + + <!-- row 8 9 4 --> + + <bezel element="button8"> + <bounds x="3" y="24" width="10" height="12" /> + </bezel> + <bezel name="lamp7" element="mask1"> + <bounds x="3" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.1" inputmask="0x08"> + <bounds x="3" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.1" inputmask="0x08"> + <bounds x="3" y="24" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.1" inputmask="0x08"> + <bounds x="3" y="24" width="10" height="12" /> + </bezel> + + <bezel element="button9"> + <bounds x="16" y="24" width="10" height="12" /> + </bezel> + <bezel name="lamp8" element="mask1"> + <bounds x="16" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.2" inputmask="0x01"> + <bounds x="16" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.2" inputmask="0x01"> + <bounds x="16" y="24" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.2" inputmask="0x01"> + <bounds x="16" y="24" width="10" height="12" /> + </bezel> + + <bezel element="button4"> + <bounds x="29" y="24" width="10" height="12" /> + </bezel> + <bezel name="lamp3" element="mask1"> + <bounds x="29" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.0" inputmask="0x08"> + <bounds x="29" y="24" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.0" inputmask="0x08"> + <bounds x="29" y="24" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.0" inputmask="0x08"> + <bounds x="29" y="24" width="10" height="12" /> + </bezel> + + <!-- row 7 6 5 --> + + <bezel element="button7"> + <bounds x="3" y="39" width="10" height="12" /> + </bezel> + <bezel name="lamp6" element="mask1"> + <bounds x="3" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.1" inputmask="0x04"> + <bounds x="3" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.1" inputmask="0x04"> + <bounds x="3" y="39" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.1" inputmask="0x04"> + <bounds x="3" y="39" width="10" height="12" /> + </bezel> + + <bezel element="button6"> + <bounds x="16" y="39" width="10" height="12" /> + </bezel> + <bezel name="lamp5" element="mask1"> + <bounds x="16" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.1" inputmask="0x02"> + <bounds x="16" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.1" inputmask="0x02"> + <bounds x="16" y="39" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.1" inputmask="0x02"> + <bounds x="16" y="39" width="10" height="12" /> + </bezel> + + <bezel element="button5"> + <bounds x="29" y="39" width="10" height="12" /> + </bezel> + <bezel name="lamp4" element="mask1"> + <bounds x="29" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask2" inputtag="IN.1" inputmask="0x01"> + <bounds x="29" y="39" width="10" height="12" /> + <color alpha="0.4" /> + </bezel> + <bezel element="mask3" inputtag="IN.1" inputmask="0x01"> + <bounds x="29" y="39" width="10" height="12" /> + </bezel> + <bezel element="mask4" inputtag="IN.1" inputmask="0x01"> + <bounds x="29" y="39" width="10" height="12" /> + </bezel> + + <!-- number labels --> + + <bezel element="text_1"><bounds x="3" y="21.4" width="9" height="2" /></bezel> + <bezel element="text_2"><bounds x="16" y="21.4" width="9" height="2" /></bezel> + <bezel element="text_3"><bounds x="29" y="21.4" width="9" height="2" /></bezel> + + <bezel element="text_8"><bounds x="3" y="36.4" width="9" height="2" /></bezel> + <bezel element="text_9"><bounds x="16" y="36.4" width="9" height="2" /></bezel> + <bezel element="text_4"><bounds x="29" y="36.4" width="9" height="2" /></bezel> + + <bezel element="text_7"><bounds x="3" y="51.4" width="9" height="2" /></bezel> + <bezel element="text_6"><bounds x="16" y="51.4" width="9" height="2" /></bezel> + <bezel element="text_5"><bounds x="29" y="51.4" width="9" height="2" /></bezel> + + + </view> +</mamelayout> diff --git a/src/mame/machine/macrtc.cpp b/src/mame/machine/macrtc.cpp index dd047014c0f..1a20c08811d 100644 --- a/src/mame/machine/macrtc.cpp +++ b/src/mame/machine/macrtc.cpp @@ -62,8 +62,6 @@ void rtc3430042_device::device_start() void rtc3430042_device::device_reset() { - set_current_time(machine()); - m_rtc_rTCEnb = 0; m_rtc_rTCClk = 0; m_rtc_bit_count = 0; diff --git a/src/mame/machine/macrtc.h b/src/mame/machine/macrtc.h index ea8726a8fd2..dc969e93f82 100644 --- a/src/mame/machine/macrtc.h +++ b/src/mame/machine/macrtc.h @@ -12,7 +12,7 @@ #ifndef __RTC3430042_H__ #define __RTC3430042_H__ -#include "emu.h" +#include "dirtc.h" //************************************************************************** @@ -51,7 +51,7 @@ protected: // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; - virtual bool rtc_feature_leap_year() override { return true; } + virtual bool rtc_feature_leap_year() const override { return true; } // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/mame/machine/sms.cpp b/src/mame/machine/sms.cpp index a268aa4d936..6d27552641d 100644 --- a/src/mame/machine/sms.cpp +++ b/src/mame/machine/sms.cpp @@ -458,6 +458,22 @@ READ8_MEMBER(sms_state::sms_input_port_dd_r) WRITE8_MEMBER(sms_state::smsj_audio_control_w) { m_smsj_audio_control = data & 0x03; + + /* Mute settings: + 0,0 : PSG only (power-on default) + 0,1 : FM only + 1,0 : Both PSG and FM disabled + 1,1 : Both PSG and FM enabled + */ + if (m_smsj_audio_control == 0x00 || m_smsj_audio_control == 0x03) + m_psg_sms->set_output_gain(0, 1.0); + else + m_psg_sms->set_output_gain(0, 0.0); + + if (m_smsj_audio_control == 0x01 || m_smsj_audio_control == 0x03) + m_ym->set_output_gain(0, 1.0); + else + m_ym->set_output_gain(0, 0.0); } @@ -492,29 +508,19 @@ READ8_MEMBER(sms_state::smsj_audio_control_r) WRITE8_MEMBER(sms_state::smsj_ym2413_register_port_w) { - if (m_smsj_audio_control == 0x01 || m_smsj_audio_control == 0x03) - m_ym->write(space, 0, data & 0x3f); + m_ym->write(space, 0, data & 0x3f); } WRITE8_MEMBER(sms_state::smsj_ym2413_data_port_w) { - if (m_smsj_audio_control == 0x01 || m_smsj_audio_control == 0x03) - { - //logerror("data_port_w %x %x\n", offset, data); - m_ym->write(space, 1, data); - } + //logerror("data_port_w %x %x\n", offset, data); + m_ym->write(space, 1, data); } WRITE8_MEMBER(sms_state::sms_psg_w) { - if (m_is_smsj) - { - if (m_smsj_audio_control != 0x00 && m_smsj_audio_control != 0x03) - return; - } - m_psg_sms->write(space, offset, data, mem_mask); } diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b7e49b04e1b..1f094c90da2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11810,9 +11810,6 @@ einst256 // einstei2 // einstein // -@source:elecbowl.cpp -elecbowl // Marx - @source:electra.cpp avenger // (c) 1975 Electra @@ -12205,6 +12202,7 @@ csc // CSC: Champion Sensory Chess Challenger (Engli cscfr // * French cscg // * German cscsp // * Spanish +fdes2000 // feasbu // EAS: Elite A/S Challenger (Budapest program, English) feasbufr // * French feasbug // * German @@ -14110,6 +14108,9 @@ victor // hexion // GX122 (c) 1992 hexionb // bootleg +@source:hh_amis2k.cpp +wildfire // Parker Bros + @source:hh_cop400.cpp bship82 // Milton Bradley ctstein // Castle Toy @@ -14194,6 +14195,7 @@ ebball2 // Entex ebball3 // Entex efootb4 // Entex einvader // Entex +elecbowl // Marx elecdet // Ideal esoccer // Entex fxmcr165 // Gakken @@ -14205,6 +14207,7 @@ h2hfootb // Coleco lostreas // Parker Bros matchnum // A-One mathmagi // APF +mbdtower // Milton Bradley mdndclab // Mattel merlin // Parker Bros mmerlin // Parker Bros @@ -14236,6 +14239,7 @@ edracula // Epoch efball // Epoch galaxy2 // Epoch galaxy2b // Epoch +grobot9 // Gakken invspace // Epoch mcompgin // Mattel mvbfree // Mego @@ -19563,9 +19567,6 @@ mbc200 // @source:mbc55x.cpp mbc55x // Sanyo MBC-550, MBC-555 -@source:mbdtower.cpp -mbdtower // Milton Bradley - @source:mbee.cpp mbee // Microbee 16 Standard or Plus mbee128 // Microbee 128K standard (CP/M) @@ -28954,6 +28955,7 @@ bioship // UPL-90062 (c) 1990 UPL + American Sammy licen bjtwin // UPL-93087 (c) 1993 NMK bjtwina // UPL-93087 (c) 1993 NMK bjtwinp // UPL-93087 (c) 1993 NMK +bjtwinpa blkheart // UPL-91069 blkheartj // UPL-91069 bubl2000 // (c) 1998 Tuning @@ -32166,6 +32168,7 @@ hustler // GX343 (c) 1981 Konami hustlerb // bootleg hustlerb2 // bootleg hustlerb4 // bootleg +hustlerb5 // bootleg hustlerd // GX343 (c) 1981 Konami + Dynamo Games license mimonkey // (c) 1982 Universal Video Games (US Copyright Office info - http://cocatalog.loc.gov) mimonsco // (c) 1982 bootleg @@ -35626,6 +35629,7 @@ demonwld // TP-O16 (c) 1990 Toaplan (+ Taito license when demonwld1 // TP-O16 (c) 1989 Toaplan + Taito license demonwld2 // TP-O16 (c) 1989 Toaplan demonwld3 // TP-O16 (c) 1989 Toaplan +demonwld4 // TP-O16 (c) 1989 Toaplan fireshrk // TP-O17 (c) 1990 Toaplan fireshrka // TP-O17 (c) 1989 Toaplan fireshrkd // TP-O17 (c) 1990 Toaplan @@ -37009,9 +37013,6 @@ wicat // @source:wico.cpp aftor // -@source:wildfire.cpp -wildfire // Parker Bros - @source:wildpkr.cpp tabpkr // 199?, TAB Austira wildpkr // 199?, TAB Austria. diff --git a/src/mame/mess.flt b/src/mame/mess.flt index ab95c015542..1c83d18fcc4 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -163,7 +163,6 @@ eacc.cpp ec184x.cpp ec65.cpp einstein.cpp -elecbowl.cpp electron.cpp elekscmp.cpp elf.cpp @@ -224,6 +223,7 @@ h8.cpp h89.cpp harriet.cpp hec2hrp.cpp +hh_amis2k.cpp hh_cop400.cpp hh_hmcs40.cpp hh_melps4.cpp @@ -315,7 +315,6 @@ mac.cpp macpci.cpp mbc200.cpp mbc55x.cpp -mbdtower.cpp mbee.cpp mc10.cpp mc1000.cpp @@ -670,7 +669,6 @@ vtech1.cpp vtech2.cpp wangpc.cpp wicat.cpp -wildfire.cpp wswan.cpp x07.cpp x1.cpp diff --git a/src/osd/modules/input/input_dinput.h b/src/osd/modules/input/input_dinput.h index deda207b81a..594b46f6732 100644 --- a/src/osd/modules/input/input_dinput.h +++ b/src/osd/modules/input/input_dinput.h @@ -81,8 +81,8 @@ public: // convert instance name to utf8 std::string utf8_instance_name = osd::text::from_tstring(instance->tszInstanceName); - // set device id to name - std::string utf8_instance_id = utf8_instance_name; + // set device id to name + product unique identifier + instance unique identifier + std::string utf8_instance_id = utf8_instance_name + " product_" + guid_to_string(instance->guidProduct) + " instance_" + guid_to_string(instance->guidInstance); // allocate memory for the device object TDevice* devinfo = module.devicelist()->create_device<TDevice>(machine, utf8_instance_name.c_str(), utf8_instance_id.c_str(), module); @@ -133,6 +133,19 @@ public: } HRESULT enum_attached_devices(int devclass, device_enum_interface *enumerate_interface, void *state) const; + + const std::string guid_to_string(const GUID& guid) + { + char guid_string[37]; + sprintf_s( + guid_string, ARRAY_LENGTH(guid_string), + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + guid.Data1, guid.Data2, guid.Data3, + guid.Data4[0], guid.Data4[1], guid.Data4[2], + guid.Data4[3], guid.Data4[4], guid.Data4[5], + guid.Data4[6], guid.Data4[7]); + return guid_string; + } }; class dinput_device : public device_info diff --git a/src/tools/imgtool/imgtool.cpp b/src/tools/imgtool/imgtool.cpp index 25b116c86e3..04bc483c3ab 100644 --- a/src/tools/imgtool/imgtool.cpp +++ b/src/tools/imgtool/imgtool.cpp @@ -549,7 +549,7 @@ UINT64 imgtool::image::rand() imgtool::partition::partition(imgtool::image &image, imgtool_class &imgclass, int partition_index, UINT64 base_block, UINT64 block_count) : m_image(image) - , m_partition_index(partition_index) + //, m_partition_index(partition_index) , m_base_block(base_block) , m_block_count(block_count) , m_imgclass(imgclass) diff --git a/src/tools/imgtool/imgtool.h b/src/tools/imgtool/imgtool.h index 3d6e9a675eb..d03122c5819 100644 --- a/src/tools/imgtool/imgtool.h +++ b/src/tools/imgtool/imgtool.h @@ -187,12 +187,11 @@ namespace imgtool private: imgtool::image &m_image; - int m_partition_index; + //int m_partition_index; UINT64 m_base_block; UINT64 m_block_count; imgtool_class m_imgclass; - size_t m_partition_extra_bytes; size_t m_directory_extra_bytes; char m_path_separator; |