summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2021-12-22 17:17:00 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2021-12-22 17:17:00 +1100
commita1984ce7108bddd64a3fe1744c54d8f85bf4208f (patch)
tree912fef7df8b14f5f07327aeeb8a994e80a2cf03e
parentbd00adb24f6236e49ce3de6b92e7a52fee4f1989 (diff)
s9.cpp: Added outputs, savestates, notes.
Moved alcat_l7 to s11. Made wldtexas a clone of fpwr2_l2.
-rw-r--r--src/mame/drivers/s11.cpp70
-rw-r--r--src/mame/drivers/s3.cpp9
-rw-r--r--src/mame/drivers/s4.cpp26
-rw-r--r--src/mame/drivers/s6.cpp19
-rw-r--r--src/mame/drivers/s6a.cpp6
-rw-r--r--src/mame/drivers/s7.cpp40
-rw-r--r--src/mame/drivers/s8a.cpp4
-rw-r--r--src/mame/drivers/s9.cpp417
8 files changed, 359 insertions, 232 deletions
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 14c61f5c2b8..905ab72866e 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -531,7 +531,7 @@ void s11_state::s11_only(machine_config &config)
/ Grand Lizard 04/86 (#523)
/-----------------------------*/
ROM_START(grand_l4)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("lzrd_u26.l3", 0x4000, 0x2000, CRC(5fe50db6) SHA1(7e2adfefce5c33ad605606574dbdfb2642aa0e85))
ROM_RELOAD( 0x6000, 0x2000)
ROM_LOAD("lzrd_u27.l4", 0x8000, 0x8000, CRC(6462ca55) SHA1(0ebfa998d3cefc213ada9ed815d44977120e5d6d))
@@ -549,7 +549,7 @@ ROM_START(grand_l4)
ROM_END
ROM_START(grand_l3)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("lzrd_u26.l3", 0x4000, 0x2000, CRC(5fe50db6) SHA1(7e2adfefce5c33ad605606574dbdfb2642aa0e85))
ROM_RELOAD( 0x6000, 0x2000)
ROM_LOAD("lzrd_u27.l3", 0x8000, 0x8000, CRC(9061dfdc) SHA1(06e0add721afa0a89ad4961cddbc5409f95362df))
@@ -570,7 +570,7 @@ ROM_END
/ High Speed 01/86 (#541)
/--------------------------*/
ROM_START(hs_l4)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("hs_u26.l4", 0x4000, 0x2000, CRC(38b73830) SHA1(df89670f3df2b657dcf1f8ee08e506e54e016028))
ROM_RELOAD( 0x6000, 0x2000)
ROM_LOAD("hs_u27.l4", 0x8000, 0x8000, CRC(24c6f7f0) SHA1(bb0058650ec0908f88b6a202df79e971b46f8594))
@@ -584,7 +584,7 @@ ROM_START(hs_l4)
ROM_END
ROM_START(hs_l3)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("u26-l3.rom", 0x4000, 0x2000, CRC(fd587959) SHA1(20fe6d7bd617b1fa886362ce520393a25be9a632))
ROM_RELOAD( 0x6000, 0x2000)
ROM_LOAD("hs_u27.l4", 0x8000, 0x8000, CRC(24c6f7f0) SHA1(bb0058650ec0908f88b6a202df79e971b46f8594))
@@ -602,7 +602,7 @@ ROM_END
/--------------------------*/
ROM_START(rdkng_l1)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u26.l1", 0x4000, 0x4000, CRC(19abe96b) SHA1(d6c3b6dab328f23cc4506e4f56cd0beeb06fb3cb))
ROM_LOAD("road_u27.l1", 0x8000, 0x8000, CRC(3dcad794) SHA1(0cf06f8e16d738f0bc0111e2e12351a26e2f02c6))
@@ -615,7 +615,7 @@ ROM_START(rdkng_l1)
ROM_END
ROM_START(rdkng_l2)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u26.l1", 0x4000, 0x4000, CRC(19abe96b) SHA1(d6c3b6dab328f23cc4506e4f56cd0beeb06fb3cb))
ROM_LOAD("road_u27.l2", 0x8000, 0x8000, CRC(aff45e2b) SHA1(c52aca20639f519a940951ef04c2bd179a596b30))
@@ -628,7 +628,7 @@ ROM_START(rdkng_l2)
ROM_END
ROM_START(rdkng_l3)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u26.l3", 0x4000, 0x4000, CRC(9bade45d) SHA1(c1791724761cdd1d863e12b02655c5fed8936162))
ROM_LOAD("road_u27.l3", 0x8000, 0x8000, CRC(97b599dc) SHA1(18524d22a75b0569bb480d847cef8047ee51f91e))
@@ -641,7 +641,7 @@ ROM_START(rdkng_l3)
ROM_END
ROM_START(rdkng_l4)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u26.l4", 0x4000, 0x4000, CRC(4ea27d67) SHA1(cf46e8c5e417999150403d6d40adf8c36b1c0347))
ROM_LOAD("road_u27.l4", 0x8000, 0x8000, CRC(5b88e755) SHA1(6438505bb335f670e0892126764819a48eec9b88))
@@ -655,11 +655,24 @@ ROM_END
/************************ From here, not pinball machines **************************************/
+/*------------------------------
+/ Alley Cats (Shuffle) (#918)
+/-------------------------------*/
+ROM_START(alcat_l7)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u26_rev7.rom", 0xd000, 0x1000, CRC(4d274dd3) SHA1(80d72bd0f85ce2cac04f6d9f59dc1fcccc86d402))
+ ROM_LOAD("u27_rev7.rom", 0xe000, 0x2000, CRC(9c7faf8a) SHA1(dc1a561948b9a303f7924d7bebcd972db766827b))
+
+ ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
+ ROM_LOAD("acs_u21.bin", 0x18000, 0x8000, CRC(c54cd329) SHA1(4b86b10e60a30c4de5d97129074f5657447be676))
+ ROM_LOAD("acs_u22.bin", 0x10000, 0x8000, CRC(56c1011a) SHA1(c817a3410c643617f3643897b8f529ae78546b0d))
+ROM_END
+
/*--------------------
/ Tic-Tac-Strike (#919)
/--------------------*/
ROM_START(tts_l2)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("u27_l2.128", 0x8000, 0x4000, CRC(edbcab92) SHA1(0f6b2dc01874984f9a17ee873f2fa0b6c9bba5be))
ROM_RELOAD( 0xc000, 0x4000)
@@ -669,7 +682,7 @@ ROM_START(tts_l2)
ROM_END
ROM_START(tts_l1)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("tts_u27.128", 0x8000, 0x4000, CRC(f540c53c) SHA1(1c7a318278ad1afdcbe6aaf81f9b774882b069d6))
ROM_RELOAD( 0xc000, 0x4000)
@@ -682,7 +695,7 @@ ROM_END
/ Gold Mine (Shuffle) (#920) s11b
/--------------------------------*/
ROM_START(gmine_l2)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("u27.128", 0x8000, 0x4000, CRC(99c6e049) SHA1(356faec0598a54892050a28857e9eb5cdbf35833))
ROM_RELOAD( 0xc000, 0x4000)
@@ -695,7 +708,7 @@ ROM_END
/ Top Dawg (Shuffle) (#921)
/--------------------------*/
ROM_START(tdawg_l1)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("tdu27r1.128", 0x8000, 0x4000, CRC(0b4bb586) SHA1(a927ebf7167609cc84b38c22aa35d0c4d259dd8b))
ROM_RELOAD( 0xc000, 0x4000)
@@ -708,7 +721,7 @@ ROM_END
/ Shuffle Inn (Shuffle) (#922)
/-----------------------------*/
ROM_START(shfin_l1)
- ROM_REGION(0x10000, "maincpu", 0)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("u27rom-1.rv1", 0x8000, 0x4000, CRC(40cfb74a) SHA1(8cee4212ea8bb6b360060391df3208e1e129d7e5))
ROM_RELOAD( 0xc000, 0x4000)
@@ -717,17 +730,20 @@ ROM_START(shfin_l1)
ROM_LOAD("u22snd-2.rv1", 0x10000, 0x8000, CRC(6894abaf) SHA1(2d661765fbfce33a73a20778c41233c0bd9933e9))
ROM_END
-GAME( 1986, grand_l4, 0, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "Grand Lizard (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, grand_l3, grand_l4, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "Grand Lizard (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, hs_l4, 0, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "High Speed (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, hs_l3, hs_l4, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "High Speed (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, rdkng_l4, 0, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, rdkng_l1, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, rdkng_l2, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1986, rdkng_l3, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-
-GAME( 1986, tts_l2, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 1986, tts_l1, tts_l2, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 1987, gmine_l2, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1987, tdawg_l1, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1987, shfin_l1, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
+// Pinball
+GAME( 1986, grand_l4, 0, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "Grand Lizard (L-4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, grand_l3, grand_l4, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "Grand Lizard (L-3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, hs_l4, 0, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "High Speed (L-4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, hs_l3, hs_l4, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "High Speed (L-3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, rdkng_l4, 0, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, rdkng_l1, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, rdkng_l2, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, rdkng_l3, rdkng_l4, s11_bgm, s11, s11_state, init_s11, ROT0, "Williams", "Road Kings (L-3)", MACHINE_IS_SKELETON_MECHANICAL )
+
+// Shuffle
+GAME( 1985, alcat_l7, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, tts_l2, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1986, tts_l1, tts_l2, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1987, gmine_l2, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1987, tdawg_l1, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1987, shfin_l1, 0, s11_only, s11, s11_state, init_s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp
index 156658db52d..1d0645be838 100644
--- a/src/mame/drivers/s3.cpp
+++ b/src/mame/drivers/s3.cpp
@@ -11,6 +11,15 @@ Schematic and PinMAME used as references.
Written during October 2012 [Robbbert]
+Games:
+- Hot Tip (#477)
+- Lucky Seven (#480)
+- World Cup Soccer (#481)
+- Contact (#482)
+- Disco Fevel (#483)
+- Phoenix (#485)
+- Pokerino (#488)
+
When first used, it appears frozen (the score should alternate). Press F3 to fix.
For those games with a sound card, pressing NUM-8 will select a different set of
diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp
index a6dbb538832..e5ef5a76faf 100644
--- a/src/mame/drivers/s4.cpp
+++ b/src/mame/drivers/s4.cpp
@@ -10,7 +10,24 @@ Differences to system 3:
- Use 6802 instead of 6800+6875.
- Soundcard does more sounds, and uses 6808.
-Phoenix and Pokerino are listed as System 4 systems, but use System 3 ROMs.
+Games:
+- Flash (#486)
+- Trizone (#487)
+- Time Warp (#489)
+- Stellar Wars (#490)
+- Pompei
+- Aristocrat
+- Topaz
+- Taurus
+- King Tut
+- Omni
+- Big Strike
+- Triple Strike
+
+The first time run, the pinballs will display will show the model number, while
+ the shuffle games show 0200 and 419. Press F3 to clear this.
+
+Phoenix and Pokerino are listed as System 4, but use System 3 ROMs.
They have been moved to s3.cpp, and are working there.
The "Shuffle" games consist of a flat board with an air-driven puck and 10
@@ -18,12 +35,10 @@ The "Shuffle" games consist of a flat board with an air-driven puck and 10
strikes and spares. Since the maximum score is 300, the displays have 4 digits
and 6 can play. They will most likely be split off to a separate driver.
-When first used, game appears frozen (the score should alternate). Press F3 to fix.
-
Pressing NUM-8 will select a different set of sounds.
Status:
-- flash, trizn, trmwp, stlwr are playable.
+- Pinballs are playable.
ToDo:
- Shuffle games: need a layout, and no manuals found. Press 6 to insert coin,
@@ -803,7 +818,7 @@ ROM_END
} // Anonymous namespace
-
+// Pinball
GAME( 1979, flash_l2, 0, s4a, flash, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, L-2)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1979, flash_l1, flash_l2, s4a, flash, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, L-1)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1979, flash_t1, flash_l2, s4a, flash, s4a_state, empty_init, ROT0, "Williams", "Flash (Williams, T-1) Ted Estes", MACHINE_IS_SKELETON_MECHANICAL )
@@ -814,6 +829,7 @@ GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, tmwrp, s4a_state, empty_init, ROT0, "Willia
GAME( 1979, tmwrp_t2, tmwrp_l3, s4a, tmwrp, s4a_state, empty_init, ROT0, "Williams", "Time Warp (Williams, T-2)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1979, stlwr_l2, 0, s4a, stlwr, s4a_state, empty_init, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
+// Shuffle
GAME( 1978, pomp_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1978, arist_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1978, topaz_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp
index ba1afb79f8d..6b5868a6f86 100644
--- a/src/mame/drivers/s6.cpp
+++ b/src/mame/drivers/s6.cpp
@@ -10,6 +10,15 @@ Differences to system 4:
- Some machines have multiball (scrpn, frpwr).
- New soundcard.
+Games:
+- Laserball (#493)
+- Scorpion (#494)
+- Blackout (#495)
+- Gorgar (#496)
+- Firepower (#497)
+
+The first time run, the display will show the model number. Press F3 to clear this.
+
Diagnostic actions:
- You must be in game over mode. All buttons are in the number-pad. When you are
finished, you must reboot.
@@ -26,12 +35,16 @@ Diagnostic actions:
- Other: Set Dips to SW7 or SW8. Press NUM-0. Press NUM-ENTER.
+Here are the key codes to enable play:
+
+Game NUM Start game End ball
+-----------------------------------------------------------------------------------------------
+Scorpion 494 AX hit 1 AX
+Firepower 497 ASD hit 1 Hit X, hold D, hit X, hold S, hit X, hit A
+Others --- 1 X
Status:
- All games are playable.
-- scrpn: Multiball - hold AX hit 1 to start; hold AX to end ball
-- frpwr: Multiball - hold ASD hit 1 to start; to end ball is quite tricky:
- Hit X (wait for sound), hold D, hit X hold S, hit X hold A.
ToDo:
- Nothing
diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp
index 915a7120706..eb9a9b5329e 100644
--- a/src/mame/drivers/s6a.cpp
+++ b/src/mame/drivers/s6a.cpp
@@ -8,6 +8,12 @@ Williams System 6a
Differences to system 6:
- Player score is 7 digits instead of 6.
+Games:
+- Algar (#499)
+- Alien Poker (#501)
+
+The first time run, the display will show the model number. Press F3 to clear this.
+
Diagnostic actions:
- You must be in game over mode. All buttons are in the number-pad. When you are
finished, you must reboot.
diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp
index 60d7da91c93..498fedf5393 100644
--- a/src/mame/drivers/s7.cpp
+++ b/src/mame/drivers/s7.cpp
@@ -32,25 +32,27 @@ and start playing.
Most games are multiball - here are the key codes:
-Game Start game End ball
+Game NUM Start game End ball
-----------------------------------------------------------------------------------------------
-Black Knight ASD hit 1 Hit X, hold A, hit X, hold S, hit X, hit D
-Cosmic Gunfight AS hit 1 AS
-Jungle Lord AS hit 1 Hit X, hold A, hit X, hit S
-Pharaoh AS hit 1 AS
-Solar Fire ASD hit 1 ASD
-Thunderball 1 unknown
-HyperBall 1 unknown
-Barracora ASD hit 1 ASD
-Varkon AX hit 1 AX
-Time Fantasy 1 X
-Warlok 1 X
-Defender hold up,left,right,hit 1 Hit X, hold Left, hit X, hold Up, Hit X, hit Right.
-Joust ABCD hit 1 unknown
-Laser Cue 1 X
-Firepower II AS hit 1 AS
-Wild Texas AS hit 1 AS
-Starlight AS hit 1 AS
+Black Knight 500 ASD hit 1 Hit X, hold A, hit X, hold S, hit X, hit D
+Cosmic Gunfight 502 AS hit 1 AS
+Jungle Lord 503 AS hit 1 Hit X, hold A, hit X, hit S
+Pharaoh 504 AS hit 1 AS
+Solar Fire 507 ASD hit 1 ASD
+Thunderball 508 1 unknown
+HyperBall 509 1 unknown
+Barracora 510 ASD hit 1 ASD
+Varkon 512 AX hit 1 AX
+Time Fantasy 515 1 X
+Warlok 516 1 X
+Defender 517 hold up,left,right,hit 1 Hit X, hold Left, hit X, hold Up, Hit X, hit Right.
+Joust 519 ABCD hit 1 unknown
+Laser Cue 520 1 X
+Firepower II 521 AS hit 1 AS
+Wild Texas *(521) AS hit 1 AS
+Starlight 530 AS hit 1 AS
+
+*Wild Texas is a clone/bootleg of Firepower II, and shows the same game number.
Status:
- All machines are playable
@@ -1171,4 +1173,4 @@ GAME( 1983, lsrcu_l2, 0, s7, lsrcu, s7_state, empty_init, ROT0, "Williams
GAME( 1983, fpwr2_l2, 0, s7, fpwr2, s7_state, empty_init, ROT0, "Williams", "Firepower II (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1984, strlt_l1, 0, s7, strlt, s7_state, empty_init, ROT0, "Williams", "Star Light (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
// same hardware, unknown manufacturer, clone of fpwr2
-GAME( 1983, wldtexas, 0, s7, fpwr2, s7_state, empty_init, ROT0, "<unknown>", "Wild Texas", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1983, wldtexas, fpwr2_l2, s7, fpwr2, s7_state, empty_init, ROT0, "<unknown>", "Wild Texas", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp
index 21d67bc933c..eae4547388e 100644
--- a/src/mame/drivers/s8a.cpp
+++ b/src/mame/drivers/s8a.cpp
@@ -2,8 +2,8 @@
// copyright-holders:Robbbert
/***********************************************************************************
- PINBALL
- Williams System 8: Still Crazy
+PINBALL
+Williams System 8: Still Crazy
The first time run, the display will show the model number (543).
Press F3 to clear this.
diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp
index 1b0d8644b8a..9ed47de3599 100644
--- a/src/mame/drivers/s9.cpp
+++ b/src/mame/drivers/s9.cpp
@@ -2,10 +2,23 @@
// copyright-holders:Robbbert
/****************************************************************************************
- PINBALL
- Williams System 9
+PINBALL
+Williams System 9
-When first started, it shows the game number and stops. Press F3 to reboot, then it works.
+Differences to system 7:
+- PIA at 0x2200 removed
+- Dip switches removed
+- Crystals changed from 3.58 to 4MHz
+
+Games:
+- Sorcerer (#532)
+- Space Shuttle (#535)
+- Comet (#540)
+- Rat Race (#527)
+- Rat Race II (#533)
+- Strike Zone (#916)
+
+The first time run, the display will show the model number. Press F3 to clear this.
Rat Race is played in a one-player cocktail cabinet, the player uses a joystick
to tilt the board, to coax the ball into following lit arrows in a maze. After
@@ -13,20 +26,23 @@ a successful navigation, the maze changes to something else faster and harder.
It's almost an arcade game done mechanically. Obviously there is no way to emulate it
in its intended form. Probably would have been a nice game, but it never passed the
prototype stage. Currently it runs but the player display flashes randoms ones while
-a sound is produced every couple of seconds.
+a sound is produced every couple of seconds. Bad byte at "maincpu" D7FF.
-Each game has its own switches, you need to know the outhole and slam-tilt ones.
-Note that T is also a tilt, but it may take 3 hits to activate it.
+Here are the key codes to enable play:
+Game NUM Start game End ball
+-----------------------------------------------------------------------------------------------
+Sorcerer 532 AD hit 1 AD
+Space Huttle 535 ASD hit 1 ASD
+Comet 540 1 X
-Game Outhole Tilt Notes
-----------------------------------------------------------------------------------------
-Sorcerer X - Y To start, hold down X and minus, then press 1.
-Space Shuttle S D F Right-shift To start, hold down SDF, then press 1.
-Comet Y Right-shift
-Rat Race Not working
+Status:
+- Pinballs (Sorcerer, Space Shuttle, Comet) are playable.
ToDo:
+- Rat Race: need a manual, playboard contacts are unknown/don't respond.
+- Strike Zone (Shuffle): need a manual, need a layout. Press 5 to insert coin,
+ press 1 to start. Some keys make noises.
- Mechanical sounds
*****************************************************************************************/
@@ -56,32 +72,32 @@ public:
, m_pia24(*this, "pia24")
, m_pia28(*this, "pia28")
, m_pia30(*this, "pia30")
- , m_digits(*this, "digit%u", 0U)
- , m_swarray(*this, "SW.%u", 0U)
+ , m_io_keyboard(*this, "X%d", 0U)
+ , m_digits(*this, "digit%d", 0U)
+ , m_io_outputs(*this, "out%d", 0U)
{ }
void s9(machine_config &config);
- void init_s9();
-
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
protected:
- virtual void machine_start() override { m_digits.resolve(); }
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- uint8_t sound_r();
- void dig0_w(uint8_t data);
- void dig1_w(uint8_t data);
- void lamp0_w(uint8_t data) { };
- void lamp1_w(uint8_t data) { };
- void sol2_w(uint8_t data) { }; // solenoids 8-15
- void sol3_w(uint8_t data) { }; // solenoids 0-7
- void sound_w(uint8_t data);
- uint8_t switch_r();
- void switch_w(uint8_t data);
+ u8 sound_r();
+ void dig0_w(u8 data);
+ void dig1_w(u8 data);
+ void lamp0_w(u8 data);
+ void lamp1_w(u8 data);
+ void sol2_w(u8 data) { for (u8 i = 0; i < 8; i++) m_io_outputs[8U+i] = BIT(data, i); }; // solenoids 8-15
+ void sol3_w(u8 data) { for (u8 i = 0; i < 8; i++) m_io_outputs[i] = BIT(data, i); }; // solenoids 0-7
+ void sound_w(u8 data);
+ u8 switch_r();
+ void switch_w(u8 data);
DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
@@ -90,13 +106,14 @@ private:
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2
DECLARE_WRITE_LINE_MEMBER(pia_irq);
- void s9_audio_map(address_map &map);
- void s9_main_map(address_map &map);
+ void audio_map(address_map &map);
+ void main_map(address_map &map);
- uint8_t m_sound_data;
- uint8_t m_strobe;
- uint8_t m_switch_col;
- bool m_data_ok;
+ u8 m_sound_data = 0;
+ u8 m_strobe = 0;
+ u8 m_row = 0;
+ bool m_data_ok = 0;
+ u8 m_lamp_data = 0;
emu_timer* m_irq_timer;
static const device_timer_id TIMER_IRQ = 0;
required_device<cpu_device> m_maincpu;
@@ -107,11 +124,12 @@ private:
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia30;
+ required_ioport_array<8> m_io_keyboard;
output_finder<61> m_digits;
- required_ioport_array<8> m_swarray;
+ output_finder<80> m_io_outputs; // 16 solenoids + 64 lamps
};
-void s9_state::s9_main_map(address_map &map)
+void s9_state::main_map(address_map &map)
{
map.global_mask(0x7fff);
map(0x0000, 0x07ff).ram().share("nvram");
@@ -120,94 +138,120 @@ void s9_state::s9_main_map(address_map &map)
map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps
map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display
map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs
- map(0x4000, 0x7fff).rom().region("roms", 0);
+ map(0x4000, 0x7fff).rom().region("maincpu", 0 );
}
-void s9_state::s9_audio_map(address_map &map)
+void s9_state::audio_map(address_map &map)
{
map(0x0000, 0x07ff).ram();
map(0x2000, 0x2003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x8000, 0xffff).rom().region("audioroms", 0);
+ map(0x8000, 0xffff).rom().region("audiocpu", 0 );
}
static INPUT_PORTS_START( s9 )
- PORT_START("SW.0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
-
- PORT_START("SW.1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
-
- PORT_START("SW.2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
-
- PORT_START("SW.3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
-
- PORT_START("SW.4")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
-
- PORT_START("SW.5")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
-
- PORT_START("SW.6")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RSHIFT)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SPACE)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LSHIFT)
- PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("SW.7")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_START("X0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("Plumb Tilt") // 3 touches before it tilts
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("High Score Reset")
+
+ PORT_START("X1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP09")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP10")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP11")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP12")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP13")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP14")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP15")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP16")
+
+ PORT_START("X2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP17")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP18")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP19")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP20")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP21")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP22")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP23")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP24")
+
+ PORT_START("X3")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP25")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP26")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP27")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP28")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP29")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP30")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP31")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP32")
+
+ PORT_START("X4")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP33")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP34")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP35")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP36")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP37")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP38")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP39")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP40")
+
+ PORT_START("X5")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP41")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP42")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP43")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP44")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("INP46")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("INP47")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("INP48")
+
+ PORT_START("X6")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_NAME("INP50")
+
+ PORT_START("X7")
PORT_START("DIAGS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s9_state, audio_nmi, 1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s9_state, main_nmi, 1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_7_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s9_state, audio_nmi, 1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s9_state, main_nmi, 1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_6_PAD) PORT_TOGGLE
INPUT_PORTS_END
+static INPUT_PORTS_START( sorcr )
+ PORT_INCLUDE(s9)
+ PORT_MODIFY("X1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP09")
+ PORT_MODIFY("X3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP27")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP29")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP30")
+ PORT_MODIFY("X5")
+ PORT_BIT( 0xe1, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP45")
+ PORT_MODIFY("X6")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sshtl )
+ PORT_INCLUDE(s9)
+ PORT_MODIFY("X1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP10")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP11")
+ PORT_MODIFY("X3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP27")
+ PORT_MODIFY("X5")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP45")
+ PORT_MODIFY("X6")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
INPUT_CHANGED_MEMBER( s9_state::main_nmi )
{
// Diagnostic button sends a pulse to NMI pin
@@ -222,7 +266,7 @@ INPUT_CHANGED_MEMBER( s9_state::audio_nmi )
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-void s9_state::sound_w(uint8_t data)
+void s9_state::sound_w(u8 data)
{
m_sound_data = data;
}
@@ -239,18 +283,32 @@ WRITE_LINE_MEMBER( s9_state::pia21_ca2_w )
m_pias->ca1_w(state);
}
-void s9_state::dig0_w(uint8_t data)
+void s9_state::lamp0_w(u8 data)
{
- static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
+ m_lamp_data = data ^ 0xff;
+}
+
+void s9_state::lamp1_w(u8 data)
+{
+ // find out which row is active
+ for (u8 i = 0; i < 8; i++)
+ if (BIT(data, i))
+ for (u8 j = 0; j < 8; j++)
+ m_io_outputs[16U+i*8U+j] = BIT(m_lamp_data, j);
+}
+
+void s9_state::dig0_w(u8 data)
+{
+ static const u8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
data &= 0x7f;
m_strobe = data & 15;
m_data_ok = true;
m_digits[60] = patterns[data>>4]; // diag digit
}
-void s9_state::dig1_w(uint8_t data)
+void s9_state::dig1_w(u8 data)
{
- static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
+ static const u8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
if (m_data_ok)
{
m_digits[m_strobe+16] = patterns[data&15];
@@ -259,27 +317,23 @@ void s9_state::dig1_w(uint8_t data)
m_data_ok = false;
}
-uint8_t s9_state::switch_r()
+u8 s9_state::switch_r()
{
- uint8_t retval = 0xff;
- // scan all 8 input columns, since multiple can be selected at once
- for (int i = 0; i < 7; i++)
- {
- if (m_switch_col & (1<<i))
- retval &= m_swarray[i]->read();
- }
- //retval &= ioport("OPTOS")->read(); // optos should be read here as well, and are always active even if no column is selected
- return ~retval;
+ u8 data = 0;
+ // there's hardware for 8 rows, but machine uses 7 max
+ for (u8 i = 0; i < 7; i++)
+ if (BIT(m_row, i))
+ data |= m_io_keyboard[i]->read();
+
+ return data;
}
-void s9_state::switch_w(uint8_t data)
+void s9_state::switch_w(u8 data)
{
- // this drives the pulldown 2N3904 NPN transistors Q7-Q14, each of which drives one column of the switch matrix low
- // it is possible for multiple columns to be enabled at once, this is handled in switch_r above.
- m_switch_col = data;
+ m_row = data;
}
-uint8_t s9_state::sound_r()
+u8 s9_state::sound_r()
{
return m_sound_data;
}
@@ -322,17 +376,34 @@ void s9_state::device_timer(emu_timer &timer, device_timer_id id, int param, voi
}
}
-void s9_state::init_s9()
+void s9_state::machine_start()
{
+ genpin_class::machine_start();
+ m_io_outputs.resolve();
+ m_digits.resolve();
+
+ save_item(NAME(m_strobe));
+ save_item(NAME(m_row));
+ save_item(NAME(m_data_ok));
+ save_item(NAME(m_lamp_data));
+ save_item(NAME(m_sound_data));
+
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(980,1e6),1);
}
+void s9_state::machine_reset()
+{
+ genpin_class::machine_reset();
+ for (u8 i = 0; i < m_io_outputs.size(); i++)
+ m_io_outputs[i] = 0;
+}
+
void s9_state::s9(machine_config &config)
{
/* basic machine hardware */
M6808(config, m_maincpu, XTAL(4'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &s9_state::s9_main_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &s9_state::main_map);
/* Video */
config.set_default_layout(layout_s9);
@@ -378,7 +449,7 @@ void s9_state::s9(machine_config &config)
/* Add the soundcard */
M6808(config, m_audiocpu, XTAL(4'000'000));
- m_audiocpu->set_addrmap(AS_PROGRAM, &s9_state::s9_audio_map);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &s9_state::audio_map);
SPEAKER(config, "speaker").front_center();
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
@@ -398,14 +469,15 @@ void s9_state::s9(machine_config &config)
/*-----------------------------
/ Rat Race - Sys.9 (Game #527)- Prototype (displays as #500)
+/ IMPD shows this as System 7, however the writes to 0x2200 indicate System 9.
/-----------------------------*/
ROM_START(ratrc_l1)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("ic20.532", 0x1000, 0x1000, CRC(0c5c7c09) SHA1(c93b39ba1460feee5850fcd3ca7cacb72c4c8ff3))
ROM_LOAD("ic14.532", 0x2000, 0x1000, CRC(c6f4bcf4) SHA1(d71c86299139abe3dd376a324315a039be82875c))
ROM_LOAD("ic17.532", 0x3000, 0x1000, CRC(0800c214) SHA1(3343c07fd550bb0759032628e01bb750135dab15))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("b486.bin", 0x6000, 0x2000, CRC(c54b9402) SHA1(c56fc5f105fc2c1166e3b22bb09b72af79e0aec1))
ROM_END
@@ -413,11 +485,11 @@ ROM_END
/ Sorcerer (S9) 03/85 (#532)
/------------------------------*/
ROM_START(sorcr_l1)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u19.732", 0x1000, 0x1000, CRC(88b6837d) SHA1(d26b06342741443406a72ba48a70e82df62bb26e))
ROM_LOAD("cpu_u20.764", 0x2000, 0x2000, CRC(c235b692) SHA1(d3b97fad2d501c894570601b387933c7644f64e6))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u7.732", 0x0000, 0x1000, CRC(bba9ed18) SHA1(8e37ba8cb6bbc1e0afeef230088beda4513adddb))
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(d48c68ad) SHA1(b1391b87519ad47be3dcce7f8581f871e6a3669f))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(a5c54d47) SHA1(4e1206412ecf52ae61c9df2055e0715749a6325d))
@@ -426,11 +498,11 @@ ROM_START(sorcr_l1)
ROM_END
ROM_START(sorcr_l2)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u19.l2", 0x1000, 0x1000, CRC(faf738db) SHA1(a3b3f4160dc837ddf5379e1edb0eafeefcc11e3d))
ROM_LOAD("cpu_u20.l2", 0x2000, 0x2000, CRC(74fc8117) SHA1(c228c76ade670603f77bb324e6794ec6dd358285))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u7.732", 0x0000, 0x1000, CRC(bba9ed18) SHA1(8e37ba8cb6bbc1e0afeef230088beda4513adddb))
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(d48c68ad) SHA1(b1391b87519ad47be3dcce7f8581f871e6a3669f))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(a5c54d47) SHA1(4e1206412ecf52ae61c9df2055e0715749a6325d))
@@ -438,15 +510,20 @@ ROM_START(sorcr_l2)
ROM_LOAD("cpu_u49.128", 0x4000, 0x4000, CRC(a0bae1e4) SHA1(dc5172aa1d59191d4119da20757cb2c2469f8fe3))
ROM_END
+/*-----------------------------
+/ Rat Race II (Game #533)
+/ - never produced
+/-----------------------------*/
+
/*---------------------------------
/ Space Shuttle (S9) 12/84 (#535)
/----------------------------------*/
ROM_START(sshtl_l7)
// Spanish licensed version by Stargame is identical to this set
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u20.128", 0x0000, 0x4000, CRC(848ad54c) SHA1(4e4ce5fb970da37706472f94a27fd912e1ecb1a0))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(13edd4e5) SHA1(46c4052c31ddc20bb87445636f8fe3b6f7bff856))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(cf48b2e7) SHA1(fe55419a5d40b3a4e8c02a92746b25a075b8efd3))
ROM_LOAD("spch_u4.732", 0x3000, 0x1000, CRC(b0d03c5e) SHA1(46b952f71a7ecc03e22e427875f6e16a9d124067))
@@ -454,10 +531,10 @@ ROM_START(sshtl_l7)
ROM_END
ROM_START(sshtl_l3)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u20.l3", 0x0000, 0x4000, CRC(dc5f08e0) SHA1(67869c1db4e1f49f38588978d4ed32fe7d62e2d6))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(13edd4e5) SHA1(46c4052c31ddc20bb87445636f8fe3b6f7bff856))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(cf48b2e7) SHA1(fe55419a5d40b3a4e8c02a92746b25a075b8efd3))
ROM_LOAD("spch_u4.732", 0x3000, 0x1000, CRC(b0d03c5e) SHA1(46b952f71a7ecc03e22e427875f6e16a9d124067))
@@ -468,10 +545,10 @@ ROM_END
/ Comet (S9) 06/85 (#540)
/--------------------------*/
ROM_START(comet_l4)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u20.128", 0x0000, 0x4000, CRC(36193600) SHA1(efdc44ef26c2def8f860a0296e27b2c3dac55ec8))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u7.732", 0x0000, 0x1000, CRC(36545b22) SHA1(f4a026f3fa58dce81b439d76120a6769f4632955))
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(89f7ede5) SHA1(bbfbd991c9e005c2fa36d8458803b121f4933618))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(6ba2aba6) SHA1(783b4e9b38db8677d91f86cb4805f0fa1ae8f856))
@@ -480,10 +557,10 @@ ROM_START(comet_l4)
ROM_END
ROM_START(comet_l5)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("cpu_u20.l5", 0x0000, 0x4000, CRC(d153d9ab) SHA1(0b97591b8ba35207b1427900486d69078ae122bc))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("spch_u7.732", 0x0000, 0x1000, CRC(36545b22) SHA1(f4a026f3fa58dce81b439d76120a6769f4632955))
ROM_LOAD("spch_u5.732", 0x1000, 0x1000, CRC(89f7ede5) SHA1(bbfbd991c9e005c2fa36d8458803b121f4933618))
ROM_LOAD("spch_u6.732", 0x2000, 0x1000, CRC(6ba2aba6) SHA1(783b4e9b38db8677d91f86cb4805f0fa1ae8f856))
@@ -495,48 +572,36 @@ ROM_END
/ Strike Zone (Shuffle) (#916)
/---------------------------------*/
ROM_START(szone_l5)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("sz_u19r5.732", 0x1000, 0x1000, CRC(c79c46cb) SHA1(422ba74ae67bebbe02f85a9a8df0e3072f3cebc0))
ROM_LOAD("sz_u20r5.764", 0x2000, 0x2000, CRC(9b5b3be2) SHA1(fce051a60b6eecd9bc07273892b14046b251b372))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274))
ROM_END
ROM_START(szone_l2)
- ROM_REGION(0x4000, "roms", 0)
+ ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD("sz_u19r2.732", 0x1000, 0x1000, CRC(c0e4238b) SHA1(eae60ccd5b5001671cd6d2685fd588494d052d1e))
ROM_LOAD("sz_u20r2.764", 0x2000, 0x2000, CRC(91c08137) SHA1(86da08f346f85810fceceaa7b9824ab76a68da54))
- ROM_REGION(0x8000, "audioroms", 0)
+ ROM_REGION(0x8000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274))
ROM_END
-/*------------------------------
-/ Alley Cats (Shuffle) (#918)
-/-------------------------------*/
-ROM_START(alcat_l7)
- ROM_REGION(0x4000, "roms", 0) // system 9 mainboard
- ROM_LOAD("u26_rev7.rom", 0x1000, 0x1000, CRC(4d274dd3) SHA1(80d72bd0f85ce2cac04f6d9f59dc1fcccc86d402))
- ROM_LOAD("u27_rev7.rom", 0x2000, 0x2000, CRC(9c7faf8a) SHA1(dc1a561948b9a303f7924d7bebcd972db766827b))
-
- ROM_REGION(0x20000, "audiocpu", 0) // System 11 soundboard
- ROM_LOAD("acs_u21.bin", 0x18000, 0x8000, CRC(c54cd329) SHA1(4b86b10e60a30c4de5d97129074f5657447be676))
- ROM_LOAD("acs_u22.bin", 0x10000, 0x8000, CRC(56c1011a) SHA1(c817a3410c643617f3643897b8f529ae78546b0d))
-
- ROM_REGION(0x8000, "audioroms", ROMREGION_ERASEFF)
-ROM_END
-
} // Anonymous namespace
+// Novelty
+GAME( 1983, ratrc_l1, 0, s9, s9, s9_state, empty_init, ROT0, "Williams", "Rat Race (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
+
+// Pinball
+GAME( 1985, sorcr_l1, sorcr_l2, s9, sorcr, s9_state, empty_init, ROT0, "Williams", "Sorcerer (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1985, sorcr_l2, 0, s9, sorcr, s9_state, empty_init, ROT0, "Williams", "Sorcerer (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1984, sshtl_l7, 0, s9, sshtl, s9_state, empty_init, ROT0, "Williams", "Space Shuttle (L-7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1984, sshtl_l3, sshtl_l7, s9, sshtl, s9_state, empty_init, ROT0, "Williams", "Space Shuttle (L-3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1985, comet_l4, comet_l5, s9, s9, s9_state, empty_init, ROT0, "Williams", "Comet (L-4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1985, comet_l5, 0, s9, s9, s9_state, empty_init, ROT0, "Williams", "Comet (L-5)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME( 1983, ratrc_l1, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Rat Race (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1985, sorcr_l1, sorcr_l2, s9, s9, s9_state, init_s9, ROT0, "Williams", "Sorcerer (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1985, sorcr_l2, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Sorcerer (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1984, sshtl_l7, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Space Shuttle (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1984, sshtl_l3, sshtl_l7, s9, s9, s9_state, init_s9, ROT0, "Williams", "Space Shuttle (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1985, comet_l4, comet_l5, s9, s9, s9_state, init_s9, ROT0, "Williams", "Comet (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1985, comet_l5, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Comet (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
-GAME( 1984, szone_l5, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Strike Zone (Shuffle) (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1984, szone_l2, szone_l5, s9, s9, s9_state, init_s9, ROT0, "Williams", "Strike Zone (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING)
-GAME( 1985, alcat_l7, 0, s9, s9, s9_state, init_s9, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+// Shuffle
+GAME( 1984, szone_l5, 0, s9, s9, s9_state, empty_init, ROT0, "Williams", "Strike Zone (Shuffle) (L-5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1984, szone_l2, szone_l5, s9, s9, s9_state, empty_init, ROT0, "Williams", "Strike Zone (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )