From f854bf08a5a0485a8091fd79821f707aba66a9ab Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 21 Jan 2022 01:09:39 +1100 Subject: [PATCH] Split off Williams Shuffle games to their own driver. --- scripts/target/mame/arcade.lua | 1 + src/mame/drivers/s11.cpp | 95 +--- src/mame/drivers/s4.cpp | 135 +---- src/mame/drivers/s9.cpp | 28 -- src/mame/drivers/wms_shuffle.cpp | 819 +++++++++++++++++++++++++++++++ src/mame/layout/shuffle.lay | 107 ++++ src/mame/layout/shuffle11.lay | 107 ++++ 7 files changed, 1041 insertions(+), 251 deletions(-) create mode 100644 src/mame/drivers/wms_shuffle.cpp create mode 100644 src/mame/layout/shuffle.lay create mode 100644 src/mame/layout/shuffle11.lay diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 069a150e499..00f0e7814d5 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -4724,6 +4724,7 @@ files { MAME_DIR .. "src/mame/drivers/whitestar.cpp", MAME_DIR .. "src/mame/drivers/white_mod.cpp", MAME_DIR .. "src/mame/drivers/wico.cpp", + MAME_DIR .. "src/mame/drivers/wms_shuffle.cpp", MAME_DIR .. "src/mame/drivers/wpc_95.cpp", MAME_DIR .. "src/mame/drivers/wpc_an.cpp", MAME_DIR .. "src/mame/drivers/wpc_dcs.cpp", diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index 905ab72866e..ad320720555 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -2,18 +2,13 @@ // copyright-holders:Miodrag Milanovic, Robbbert /**************************************************************************************** - Pinball - Williams System 11 +PINBALL +Williams System 11 - Status of games: +Status: ToDo: -- tic-tac-strike belongs in s11a.cpp -- gold mine belongs in s11b.cpp -- top dawg belongs in s11b.cpp -- shuffle inn belongs in s11b.cpp - Known keys necessary to get games to start (so the proper number of balls are detected): - Grand Lizard: Press S, D, F, and press "1" after inserting 1 or more credits. - Road Kings: press 'Up' (the direction key) and 'Delete', and press "1" after inserting 1 or more credits. @@ -653,82 +648,6 @@ ROM_START(rdkng_l4) ROM_LOAD("road_u4.l1", 0x0000, 0x8000, CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774)) 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", ROMREGION_ERASEFF) - ROM_LOAD("u27_l2.128", 0x8000, 0x4000, CRC(edbcab92) SHA1(0f6b2dc01874984f9a17ee873f2fa0b6c9bba5be)) - ROM_RELOAD( 0xc000, 0x4000) - - ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("tts_u21.256", 0x18000, 0x8000, NO_DUMP) - ROM_LOAD("tts_u22.256", 0x10000, 0x8000, NO_DUMP) -ROM_END - -ROM_START(tts_l1) - ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("tts_u27.128", 0x8000, 0x4000, CRC(f540c53c) SHA1(1c7a318278ad1afdcbe6aaf81f9b774882b069d6)) - ROM_RELOAD( 0xc000, 0x4000) - - ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("tts_u21.256", 0x18000, 0x8000, NO_DUMP) - ROM_LOAD("tts_u22.256", 0x10000, 0x8000, NO_DUMP) -ROM_END - -/*------------------------------- -/ Gold Mine (Shuffle) (#920) s11b -/--------------------------------*/ -ROM_START(gmine_l2) - ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("u27.128", 0x8000, 0x4000, CRC(99c6e049) SHA1(356faec0598a54892050a28857e9eb5cdbf35833)) - ROM_RELOAD( 0xc000, 0x4000) - - ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("u21.256", 0x18000, 0x8000, CRC(3b801570) SHA1(50b50ff826dcb031a30940fa3099bd3a8d773831)) - ROM_LOAD("u22.256", 0x10000, 0x8000, CRC(08352101) SHA1(a7437847a71cf037a80686292f9616b1e08922df)) -ROM_END - -/*------------------------- -/ Top Dawg (Shuffle) (#921) -/--------------------------*/ -ROM_START(tdawg_l1) - ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("tdu27r1.128", 0x8000, 0x4000, CRC(0b4bb586) SHA1(a927ebf7167609cc84b38c22aa35d0c4d259dd8b)) - ROM_RELOAD( 0xc000, 0x4000) - - ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("tdsu21r1.256", 0x18000, 0x8000, CRC(6a323227) SHA1(7c7263754e5672c654a2ee9582f0b278e637a909)) - ROM_LOAD("tdsu22r1.256", 0x10000, 0x8000, CRC(58407eb4) SHA1(6bd9b304c88d9470eae5afb6621187f4a8313573)) -ROM_END - -/*---------------------------- -/ Shuffle Inn (Shuffle) (#922) -/-----------------------------*/ -ROM_START(shfin_l1) - ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("u27rom-1.rv1", 0x8000, 0x4000, CRC(40cfb74a) SHA1(8cee4212ea8bb6b360060391df3208e1e129d7e5)) - ROM_RELOAD( 0xc000, 0x4000) - - ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("u21snd-2.rv1", 0x18000, 0x8000, CRC(80ddce05) SHA1(9498260e5ccd2fe0eb03ff321dd34eb945b0213a)) - ROM_LOAD("u22snd-2.rv1", 0x10000, 0x8000, CRC(6894abaf) SHA1(2d661765fbfce33a73a20778c41233c0bd9933e9)) -ROM_END // Pinball GAME( 1986, grand_l4, 0, s11_bgs, s11, s11_state, init_s11, ROT0, "Williams", "Grand Lizard (L-4)", MACHINE_IS_SKELETON_MECHANICAL ) @@ -739,11 +658,3 @@ GAME( 1986, rdkng_l4, 0, s11_bgm, s11, s11_state, init_s11, ROT0, "Willi 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/s4.cpp b/src/mame/drivers/s4.cpp index e5ef5a76faf..0b5715d1feb 100644 --- a/src/mame/drivers/s4.cpp +++ b/src/mame/drivers/s4.cpp @@ -15,35 +15,20 @@ Games: - 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. +The first time run, the machine will display will show the model number. + 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 - bowling pins. You must push the puck as if it was a bowling ball, and score - 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. - Pressing NUM-8 will select a different set of sounds. Status: -- Pinballs are playable. +- All machines are playable. ToDo: -- Shuffle games: need a layout, and no manuals found. Press 6 to insert coin, - press 9 to start. Some keys make noises. / key steps to next frame. - +- Nothing ************************************************************************************/ @@ -714,108 +699,6 @@ ROM_START(stlwr_l2) ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c)) ROM_END - - -/* From here, are NOT pinball machines */ - -/*---------------------------- -/ Pompeii (Shuffle) -/----------------------------*/ -ROM_START(pomp_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(0f069ac2) SHA1(d651d49cdb50cf444e420241a1f9ed48c878feee)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) -ROM_END - -/*---------------------------- -/ Aristocrat (Shuffle) same roms as Pompeii -/----------------------------*/ -ROM_START(arist_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(0f069ac2) SHA1(d651d49cdb50cf444e420241a1f9ed48c878feee)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) -ROM_END - -/*---------------------------- -/ Topaz (Shuffle) -/----------------------------*/ -ROM_START(topaz_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(cb287b10) SHA1(7fb6b6a26237cf85d5e02cf35271231267f90fc1)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c)) -ROM_END - -/*---------------------------- -/ Taurus (Shuffle) -/----------------------------*/ -ROM_START(taurs_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(3246e285) SHA1(4f76784ecb5063a49c24795ae61db043a51e2c89)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) -ROM_END - -/*---------------------------- -/ King Tut -/----------------------------*/ -ROM_START(kingt_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(54d3280a) SHA1(ca74636e35d2c3e0b3133f89b1ff1233d5d72a5c)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) -ROM_END - -/*---------------------------- -/ Omni (Shuffle) -/----------------------------*/ -ROM_START(omni_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("omni-1a.u21", 0x0000, 0x0800, CRC(443bd170) SHA1(cc1ebd72d77ec2014cbd84534380e5ea1f12c022)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) - - ROM_REGION(0x0800, "audiocpu", 0) - ROM_LOAD("sound.716", 0x0000, 0x0800, CRC(db085cbb) SHA1(9a57abbad183ba16b3dba16d16923c3bfc46a0c3)) -ROM_END - -/*---------------------------- -/ Big Strike (Shuffle) -/----------------------------*/ -ROM_START(bstrk_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(323dbcde) SHA1(a75cbb5de97cb9afc1d36e9b6ff593bb482fcf8b)) - ROM_LOAD("b_ic20.716", 0x1000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) -ROM_END - -/*---------------------------- -/ Triple Strike (Shuffle) -/----------------------------*/ -ROM_START(tstrk_l1) - ROM_REGION(0x2000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("gamerom.716", 0x0000, 0x0800, CRC(b034c059) SHA1(76b3926b87b3c137fcaf33021a586827e3c030af)) - ROM_LOAD("ic20.716", 0x1000, 0x0800, CRC(f163fc88) SHA1(988b60626f3d4dc8f4a1dbd0c99282418bc53aae)) - ROM_LOAD("b_ic17.716", 0x1800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) -ROM_END - } // Anonymous namespace // Pinball @@ -828,13 +711,3 @@ GAME( 1979, tmwrp_l3, 0, s4a, tmwrp, s4a_state, empty_init, ROT0, "Willia GAME( 1979, tmwrp_l2, tmwrp_l3, s4a, tmwrp, s4a_state, empty_init, ROT0, "Williams", "Time Warp (Williams, L-2)", MACHINE_IS_SKELETON_MECHANICAL ) 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 ) -GAME( 1979, taurs_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1979, kingt_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "King Tut (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1980, omni_l1, 0, s4a, s4a, s4a_state, empty_init, ROT0, "Williams", "Omni (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1983, bstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1983, tstrk_l1, 0, s4, s4, s4_state, empty_init, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp index 9ed47de3599..fc468c99543 100644 --- a/src/mame/drivers/s9.cpp +++ b/src/mame/drivers/s9.cpp @@ -16,7 +16,6 @@ Games: - 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. @@ -41,8 +40,6 @@ Status: 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 *****************************************************************************************/ @@ -568,27 +565,6 @@ ROM_START(comet_l5) ROM_LOAD("cpu_u49.128", 0x4000, 0x4000, CRC(f1db0cbe) SHA1(59b7f36fb2003b90b288abeff56df62ce50f10c6)) ROM_END -/*-------------------------------- -/ Strike Zone (Shuffle) (#916) -/---------------------------------*/ -ROM_START(szone_l5) - 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, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274)) -ROM_END - -ROM_START(szone_l2) - 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, "audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274)) -ROM_END - } // Anonymous namespace // Novelty @@ -601,7 +577,3 @@ GAME( 1984, sshtl_l7, 0, s9, sshtl, s9_state, empty_init, ROT0, "Williams 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 ) - -// 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 ) diff --git a/src/mame/drivers/wms_shuffle.cpp b/src/mame/drivers/wms_shuffle.cpp new file mode 100644 index 00000000000..6ced679de76 --- /dev/null +++ b/src/mame/drivers/wms_shuffle.cpp @@ -0,0 +1,819 @@ +// license:BSD-3-Clause +// copyright-holders:Robbbert +/*********************************************************************************** + +PINBALL +Williams/United Shuffle-Alley games + +Games: +- Topaz (s4) +- Pompei (s4) +- Aristocrat (s4) +- Taurus (s4) +- King Tut (s4)(#912) +- Omni (s4) +- Big Strike (s4) +- Triple Strike (s4) +- Strike Zone (s9)(#916) +- Alley Cats (s11)(#918) +- Tic-Tac-Strike (s11a)(#919) +- Gold Mine (s11b)(#920) +- Top Dawg (s11b)(#921) +- Shuffle Inn (s11b)(#922) + +The first time run, the machine will show some numbers. Press F3 to clear this. + +Each game consists of a flat board with an air-driven puck and 10 bowling pins. + You must push the puck as if it was a bowling ball, and score strikes and spares. + The displays have 4 digits and 6 can play. The board has contactors to detect + the passage of the puck, and the machine will lift the bowling pins out of the + way, so in fact the puck never touches the pins at all. + +Status: +- All games (except s11a/b) seem to be playable, but no sound, and the inputs + aren't known. +- s4 games: 6 to insert coin, 9 to start, various keys on bottom 2 rows act as puck + detectors, period key to signal end of ball. Press it twice to end a frame. +- Strike Zone, Alley Cats: 5 to insert coin, 1 to start, then same as above. +- s11a/b games: stuck in the boot-up sequence. + +ToDo: +- Only 2 manuals found, and only one schematic, so it's largely guesswork. +- Layout (s11/a/b) +- Inputs +- Outputs +- Displays (s11/a/b) +- Sound +- Roms missing +- Remove all mechanical sounds (no chimes or knocker in these games) + +************************************************************************************/ + +#include "emu.h" +#include "machine/genpin.h" + +#include "cpu/m6800/m6800.h" +#include "machine/6821pia.h" +#include "machine/clock.h" +#include "machine/input_merger.h" +#include "machine/ripple_counter.h" +#include "sound/dac.h" +#include "speaker.h" + +#include "shuffle.lh" +#include "shuffle11.lh" + + +namespace { + +class shuffle_state : public genpin_class +{ +public: + shuffle_state(const machine_config &mconfig, device_type type, const char *tag) + : genpin_class(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_mainirq(*this, "mainirq") + , m_pia21(*this, "pia21") + , m_pia22(*this, "pia22") + , m_pia24(*this, "pia24") + , m_pia28(*this, "pia28") + , m_pia2c(*this, "pia2c") + , m_pia30(*this, "pia30") + , m_pia34(*this, "pia34") + , m_4020(*this, "4020") + , m_io_keyboard(*this, "X%d", 0U) + , m_dips(*this, "DS%d", 1U) + , m_digits(*this, "digit%d", 0U) + , m_leds(*this, "led%d", 0U) + , m_io_outputs(*this, "out%d", 0U) + { } + + void s4(machine_config &config); + void s9(machine_config &config); + void s11(machine_config &config); + + DECLARE_INPUT_CHANGED_MEMBER(main_nmi); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + + void dig0_w(u8 data); + void dig1_w(u8 data); + void lamp0_w(u8 data); + void lamp1_w(u8 data); + void sol0_w(u8 data); + void sol1_w(u8 data); + void sol2_w(u8 data) { }; + void sol3_w(u8 data) { }; + void sound_w(u8); + void pia2c_pa_w(u8); + void pia2c_pb_w(u8); + void pia34_pa_w(u8); + void pia34_pb_w(u8); + u8 dips_r(); + u8 sound_r(); + u8 switch_r(); + void switch_w(u8 data); + void clockcnt_w(u16 data); + u8 m_strobe = 0; + u8 m_row = 0; + bool m_data_ok = 0; + u8 m_lamp_data = 0; + bool m_irq_in_progress = 0; + u32 m_segment1 = 0U; + u32 m_segment2 = 0U; + u8 m_sound_data = 0U; + DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5 + DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable + DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2 + DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { } //ST1 + DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { } //diag leds enable + DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { } //ST6 + DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { } //ST4 + DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3 + DECLARE_WRITE_LINE_MEMBER(irq_w); + void s4_map(address_map &map); + void s9_map(address_map &map); + void s11_map(address_map &map); + + required_device m_maincpu; + required_device m_mainirq; + optional_device m_pia21; + optional_device m_pia22; + required_device m_pia24; + required_device m_pia28; + optional_device m_pia2c; + required_device m_pia30; + optional_device m_pia34; + required_device m_4020; + required_ioport_array<8> m_io_keyboard; + required_ioport_array<2> m_dips; + output_finder<32> m_digits; + output_finder<2> m_leds; + output_finder<80> m_io_outputs; // 16 solenoids + 64 lamps +}; + + +void shuffle_state::s4_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + 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("maincpu", 0); +} + +void shuffle_state::s9_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(FUNC(shuffle_state::sol3_w)); // solenoids + 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("maincpu", 0); +} + +void shuffle_state::s11_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(FUNC(shuffle_state::sol3_w)); // solenoids + 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(0x2c00, 0x2c03).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x3400, 0x3403).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget + map(0x4000, 0x7fff).rom().region("maincpu", 0); +} + +static INPUT_PORTS_START( shuffle ) + 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_X) PORT_NAME("INP32") + + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP33") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP34") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP35") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP36") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP37") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP38") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP39") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP40") + + PORT_START("X5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP41") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP42") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP43") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP44") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP45") + 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") // not used? + PORT_START("X7") // not used? + + PORT_START("DIAGS") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, shuffle_state, main_nmi, 1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_1_PAD) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Manual/Auto") PORT_CODE(KEYCODE_6_PAD) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER_PAD) + + PORT_START("DS1") + PORT_DIPNAME( 0xf0, 0xf0, "Data units" ) + PORT_DIPSETTING( 0xf0, "0" ) + PORT_DIPSETTING( 0x70, "1" ) + PORT_DIPSETTING( 0xb0, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0xd0, "4" ) + PORT_DIPSETTING( 0x50, "5" ) + PORT_DIPSETTING( 0x90, "6" ) + PORT_DIPSETTING( 0x10, "7" ) + PORT_DIPSETTING( 0xe0, "8" ) + PORT_DIPSETTING( 0x60, "9" ) + PORT_DIPNAME( 0x0f, 0x0f, "Data tens" ) + PORT_DIPSETTING( 0x0f, "0" ) + PORT_DIPSETTING( 0x07, "1" ) + PORT_DIPSETTING( 0x0b, "2" ) + PORT_DIPSETTING( 0x03, "3" ) + PORT_DIPSETTING( 0x0d, "4" ) + PORT_DIPSETTING( 0x05, "5" ) + PORT_DIPSETTING( 0x09, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x0e, "8" ) + PORT_DIPSETTING( 0x06, "9" ) + + PORT_START("DS2") + PORT_DIPNAME( 0xff, 0xff, "Function" ) + PORT_DIPSETTING( 0xff, "0" ) + PORT_DIPSETTING( 0x7f, "1" ) + PORT_DIPSETTING( 0xbf, "2" ) + PORT_DIPSETTING( 0x3f, "3" ) + PORT_DIPSETTING( 0xdf, "4" ) + PORT_DIPSETTING( 0x5f, "5" ) + PORT_DIPSETTING( 0x9f, "6" ) + PORT_DIPSETTING( 0x1f, "7" ) + PORT_DIPSETTING( 0xef, "8" ) + PORT_DIPSETTING( 0x6f, "9" ) + PORT_DIPSETTING( 0xaf, "10" ) + PORT_DIPSETTING( 0x2f, "11" ) + PORT_DIPSETTING( 0xcf, "12" ) + PORT_DIPSETTING( 0x4f, "13" ) + PORT_DIPSETTING( 0x8f, "14" ) + PORT_DIPSETTING( 0x0f, "15" ) + PORT_DIPSETTING( 0xf7, "16" ) + PORT_DIPSETTING( 0x77, "17" ) + PORT_DIPSETTING( 0xb7, "18" ) + PORT_DIPSETTING( 0x37, "19" ) + PORT_DIPSETTING( 0xd7, "20" ) + PORT_DIPSETTING( 0x57, "21" ) + PORT_DIPSETTING( 0x97, "22" ) + PORT_DIPSETTING( 0x17, "23" ) + PORT_DIPSETTING( 0xe7, "24" ) + PORT_DIPSETTING( 0x67, "25" ) + PORT_DIPSETTING( 0xa7, "26" ) + PORT_DIPSETTING( 0x27, "27" ) + PORT_DIPSETTING( 0xc7, "28" ) + PORT_DIPSETTING( 0x47, "29" ) + PORT_DIPSETTING( 0x87, "30" ) + PORT_DIPSETTING( 0x07, "31" ) +INPUT_PORTS_END + +void shuffle_state::clockcnt_w(u16 data) +{ +// if (data >= 1536) +// m_mainirq->in_set<0>(); + m_mainirq->in_w<0>(BIT(data, 7, 3)==7); + if (BIT(data, 5) && m_irq_in_progress) + m_4020->reset_w(1); + else + m_4020->reset_w(0); +} + +INPUT_CHANGED_MEMBER( shuffle_state::main_nmi ) +{ + // Diagnostic button sends a pulse to NMI pin + if (newval==CLEAR_LINE) + m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); +} + +void shuffle_state::sol0_w(u8 data) +{ + for (u8 i = 0; i < 8; i++) + m_io_outputs[i] = BIT(data, i); +} + +void shuffle_state::sol1_w(u8 data) +{ + if (BIT(data, 0)) + m_samples->start(4, 4); // 10 chime + + if (BIT(data, 1)) + m_samples->start(1, 1); // 100 chime + + if (BIT(data, 2)) + m_samples->start(2, 2); // 1000 chime + + if (BIT(data, 3)) + m_samples->start(3, 3); // 10k chime + + if (BIT(data, 5)) + m_samples->start(0, 6); // knocker + + for (u8 i = 0; i < 8; i++) + m_io_outputs[8U+i] = BIT(data, i); +} + +void shuffle_state::lamp0_w(u8 data) +{ + m_mainirq->in_clear<0>(); + m_lamp_data = data ^ 0xff; +} + +void shuffle_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); +} + +u8 shuffle_state::dips_r() +{ + if (BIT(ioport("DIAGS")->read(), 4)) + return m_dips[BIT(~m_strobe, 1)]->read() << (BIT(m_strobe, 0) ? 4 : 0); + + return 0xff; +} + +void shuffle_state::dig0_w(u8 data) +{ + m_strobe = data & 15; + m_data_ok = true; + m_leds[0] = !BIT(data, 4); + m_leds[1] = !BIT(data, 5); +} + +void shuffle_state::dig1_w(u8 data) +{ + 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]; + m_digits[m_strobe] = patterns[data>>4]; + } + m_data_ok = false; +} + +void shuffle_state::pia2c_pa_w(u8 data) +{ + m_segment1 |= (data<<8); + m_segment1 |= 0x10000; + if ((m_segment1 & 0x70000) == 0x30000) + { + m_digits[m_strobe] = bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); + m_segment1 |= 0x40000; + } +} + +void shuffle_state::pia2c_pb_w(u8 data) +{ + m_segment1 |= data; + m_segment1 |= 0x20000; + if ((m_segment1 & 0x70000) == 0x30000) + { + m_digits[m_strobe] = bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); + m_segment1 |= 0x40000; + } +} + +void shuffle_state::pia34_pa_w(u8 data) +{ + m_segment2 |= (data<<8); + m_segment2 |= 0x10000; + if ((m_segment2 & 0x70000) == 0x30000) + { + m_digits[m_strobe+16] = bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0); + m_segment2 |= 0x40000; + } +} + +void shuffle_state::pia34_pb_w(u8 data) +{ +} + +u8 shuffle_state::sound_r() +{ + return m_sound_data; +} + +void shuffle_state::sound_w(u8 data) +{ + m_sound_data = data; +} + +u8 shuffle_state::switch_r() +{ + u8 data = 0; + for (u8 i = 0; i < 8; i++) + if (BIT(m_row, i)) + data |= m_io_keyboard[i]->read(); + + return data; +} + +void shuffle_state::switch_w(u8 data) +{ + m_row = data; +} + +WRITE_LINE_MEMBER( shuffle_state::irq_w ) +{ + m_irq_in_progress = state; + m_maincpu->set_input_line(M6802_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); +} + +void shuffle_state::machine_start() +{ + genpin_class::machine_start(); + m_io_outputs.resolve(); + m_digits.resolve(); + m_leds.resolve(); + + save_item(NAME(m_irq_in_progress)); + 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_segment1)); + save_item(NAME(m_segment2)); + save_item(NAME(m_sound_data)); +} + +void shuffle_state::machine_reset() +{ + genpin_class::machine_reset(); + for (u8 i = 0; i < m_io_outputs.size(); i++) + m_io_outputs[i] = 0; + + m_irq_in_progress = 0; +} + +void shuffle_state::s4(machine_config &config) +{ + // basic machine hardware + M6802(config, m_maincpu, 3580000); // Divided by 4 internally + m_maincpu->set_addrmap(AS_PROGRAM, &shuffle_state::s4_map); + + // Video + config.set_default_layout(layout_shuffle); + + // Sound + genpin_audio(config); + + // Devices + PIA6821(config, m_pia22, 0); + m_pia22->writepa_handler().set(FUNC(shuffle_state::sol0_w)); + m_pia22->writepb_handler().set(FUNC(shuffle_state::sol1_w)); + m_pia22->ca2_handler().set(FUNC(shuffle_state::pia22_ca2_w)); + m_pia22->cb2_handler().set(FUNC(shuffle_state::pia22_cb2_w)); + m_pia22->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<1>)); + m_pia22->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<2>)); + + PIA6821(config, m_pia24, 0); + m_pia24->writepa_handler().set(FUNC(shuffle_state::lamp0_w)); + m_pia24->writepb_handler().set(FUNC(shuffle_state::lamp1_w)); + m_pia24->ca2_handler().set(FUNC(shuffle_state::pia24_ca2_w)); + m_pia24->cb2_handler().set(FUNC(shuffle_state::pia24_cb2_w)); + m_pia24->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<3>)); + m_pia24->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<4>)); + + PIA6821(config, m_pia28, 0); + m_pia28->readpa_handler().set(FUNC(shuffle_state::dips_r)); + m_pia28->set_port_a_input_overrides_output_mask(0xff); + m_pia28->readca1_handler().set_ioport("DIAGS").bit(2); // advance button + m_pia28->readcb1_handler().set_ioport("DIAGS").bit(3); // auto/manual switch + m_pia28->writepa_handler().set(FUNC(shuffle_state::dig0_w)); + m_pia28->writepb_handler().set(FUNC(shuffle_state::dig1_w)); + m_pia28->ca2_handler().set(FUNC(shuffle_state::pia28_ca2_w)); + m_pia28->cb2_handler().set(FUNC(shuffle_state::pia28_cb2_w)); + m_pia28->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<5>)); + m_pia28->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<6>)); + + PIA6821(config, m_pia30, 0); + m_pia30->readpa_handler().set(FUNC(shuffle_state::switch_r)); + m_pia30->set_port_a_input_overrides_output_mask(0xff); + m_pia30->writepb_handler().set(FUNC(shuffle_state::switch_w)); + m_pia30->ca2_handler().set(FUNC(shuffle_state::pia30_ca2_w)); + m_pia30->cb2_handler().set(FUNC(shuffle_state::pia30_cb2_w)); + m_pia30->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<7>)); + m_pia30->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<8>)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + INPUT_MERGER_ANY_HIGH(config, m_mainirq).output_handler().set(FUNC(shuffle_state::irq_w)); + + RIPPLE_COUNTER(config, m_4020); + m_4020->set_stages(14); // Using Q5,Q8,Q9 + m_4020->count_out_cb().set(FUNC(shuffle_state::clockcnt_w)); + + CLOCK(config, "rclock", 3580000/4).signal_handler().set(m_4020, FUNC(ripple_counter_device::clock_w)); +} + +void shuffle_state::s9(machine_config &config) +{ + s4(config); + config.device_remove("pia22"); + m_maincpu->set_addrmap(AS_PROGRAM, &shuffle_state::s9_map); + + PIA6821(config, m_pia21, 0); + m_pia21->readpa_handler().set(FUNC(shuffle_state::sound_r)); + m_pia21->set_port_a_input_overrides_output_mask(0xff); + m_pia21->writepa_handler().set(FUNC(shuffle_state::sound_w)); + m_pia21->writepb_handler().set(FUNC(shuffle_state::sol2_w)); + //m_pia21->ca2_handler().set(FUNC(shuffle_state::pia21_ca2_w)); + //m_pia21->cb2_handler().set(FUNC(shuffle_state::pia21_cb2_w)); + m_pia21->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<9>)); + m_pia21->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<10>)); +} + +void shuffle_state::s11(machine_config &config) +{ + s9(config); + m_maincpu->set_addrmap(AS_PROGRAM, &shuffle_state::s11_map); + + config.set_default_layout(layout_shuffle11); + + PIA6821(config, m_pia2c, 0); + m_pia2c->writepa_handler().set(FUNC(shuffle_state::pia2c_pa_w)); + m_pia2c->writepb_handler().set(FUNC(shuffle_state::pia2c_pb_w)); + m_pia2c->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<11>)); + m_pia2c->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<12>)); + + PIA6821(config, m_pia34, 0); + m_pia34->writepa_handler().set(FUNC(shuffle_state::pia34_pa_w)); + m_pia34->writepb_handler().set(FUNC(shuffle_state::pia34_pb_w)); + //m_pia34->cb2_handler().set(FUNC(shuffle_state::pia34_cb2_w)); + m_pia34->irqa_handler().set(m_mainirq, FUNC(input_merger_device::in_w<13>)); + m_pia34->irqb_handler().set(m_mainirq, FUNC(input_merger_device::in_w<14>)); +} + + +/*---------------------------- +/ Topaz +/----------------------------*/ +ROM_START(topaz_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(cb287b10) SHA1(7fb6b6a26237cf85d5e02cf35271231267f90fc1)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c)) +ROM_END + +/*---------------------------- +/ Pompeii +/----------------------------*/ +ROM_START(pomp_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(0f069ac2) SHA1(d651d49cdb50cf444e420241a1f9ed48c878feee)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) +ROM_END + +/*---------------------------- +/ Aristocrat same roms as Pompeii +/----------------------------*/ +ROM_START(arist_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(0f069ac2) SHA1(d651d49cdb50cf444e420241a1f9ed48c878feee)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) +ROM_END + +/*---------------------------- +/ Taurus +/----------------------------*/ +ROM_START(taurs_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(3246e285) SHA1(4f76784ecb5063a49c24795ae61db043a51e2c89)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) +ROM_END + +/*---------------------------- +/ King Tut (#912) +/----------------------------*/ +ROM_START(kingt_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(54d3280a) SHA1(ca74636e35d2c3e0b3133f89b1ff1233d5d72a5c)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8)) +ROM_END + +/*---------------------------- +/ Omni +/----------------------------*/ +ROM_START(omni_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("omni-1a.u21", 0x2000, 0x0800, CRC(443bd170) SHA1(cc1ebd72d77ec2014cbd84534380e5ea1f12c022)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", 0) + ROM_LOAD("sound.716", 0x0000, 0x0800, CRC(db085cbb) SHA1(9a57abbad183ba16b3dba16d16923c3bfc46a0c3)) +ROM_END + +/*---------------------------- +/ Big Strike +/----------------------------*/ +ROM_START(bstrk_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(323dbcde) SHA1(a75cbb5de97cb9afc1d36e9b6ff593bb482fcf8b)) + ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("sound.716", 0x0000, 0x0800, NO_DUMP) +ROM_END + +/*---------------------------- +/ Triple Strike +/----------------------------*/ +ROM_START(tstrk_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(b034c059) SHA1(76b3926b87b3c137fcaf33021a586827e3c030af)) + ROM_LOAD("ic20.716", 0x3000, 0x0800, CRC(f163fc88) SHA1(988b60626f3d4dc8f4a1dbd0c99282418bc53aae)) + ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa)) + + ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("sound.716", 0x0000, 0x0800, NO_DUMP) +ROM_END + +/*-------------------------------- +/ Strike Zone (#916) +/---------------------------------*/ +ROM_START(szone_l5) + 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, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274)) +ROM_END + +ROM_START(szone_l2) + 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, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("szs_u49.128", 0x4000, 0x4000, CRC(144c3c07) SHA1(57be6f336f200079cd698b13f8fa4755cf694274)) +ROM_END + +/*------------------------------ +/ Alley Cats (#918) +/-------------------------------*/ +ROM_START(alcat_l7) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + 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", 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(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("u27_l2.128", 0x0000, 0x4000, CRC(edbcab92) SHA1(0f6b2dc01874984f9a17ee873f2fa0b6c9bba5be)) + + ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("tts_u21.256", 0x18000, 0x8000, NO_DUMP) + ROM_LOAD("tts_u22.256", 0x10000, 0x8000, NO_DUMP) +ROM_END + +ROM_START(tts_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("tts_u27.128", 0x0000, 0x4000, CRC(f540c53c) SHA1(1c7a318278ad1afdcbe6aaf81f9b774882b069d6)) + + ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("tts_u21.256", 0x18000, 0x8000, NO_DUMP) + ROM_LOAD("tts_u22.256", 0x10000, 0x8000, NO_DUMP) +ROM_END + +/*------------------------------- +/ Gold Mine (#920) +/--------------------------------*/ +ROM_START(gmine_l2) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("u27.128", 0x0000, 0x4000, CRC(99c6e049) SHA1(356faec0598a54892050a28857e9eb5cdbf35833)) + + ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("u21.256", 0x18000, 0x8000, CRC(3b801570) SHA1(50b50ff826dcb031a30940fa3099bd3a8d773831)) + ROM_LOAD("u22.256", 0x10000, 0x8000, CRC(08352101) SHA1(a7437847a71cf037a80686292f9616b1e08922df)) +ROM_END + +/*------------------------- +/ Top Dawg (#921) +/--------------------------*/ +ROM_START(tdawg_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("tdu27r1.128", 0x0000, 0x4000, CRC(0b4bb586) SHA1(a927ebf7167609cc84b38c22aa35d0c4d259dd8b)) + + ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("tdsu21r1.256", 0x18000, 0x8000, CRC(6a323227) SHA1(7c7263754e5672c654a2ee9582f0b278e637a909)) + ROM_LOAD("tdsu22r1.256", 0x10000, 0x8000, CRC(58407eb4) SHA1(6bd9b304c88d9470eae5afb6621187f4a8313573)) +ROM_END + +/*---------------------------- +/ Shuffle Inn (#922) +/-----------------------------*/ +ROM_START(shfin_l1) + ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("u27rom-1.rv1", 0x0000, 0x4000, CRC(40cfb74a) SHA1(8cee4212ea8bb6b360060391df3208e1e129d7e5)) + + ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) + ROM_LOAD("u21snd-2.rv1", 0x18000, 0x8000, CRC(80ddce05) SHA1(9498260e5ccd2fe0eb03ff321dd34eb945b0213a)) + ROM_LOAD("u22snd-2.rv1", 0x10000, 0x8000, CRC(6894abaf) SHA1(2d661765fbfce33a73a20778c41233c0bd9933e9)) +ROM_END + +} // Anonymous namespace + +GAME( 1978, topaz_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1978, pomp_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Pompeii (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1978, arist_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Aristocrat (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1979, taurs_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1979, kingt_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "King Tut (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1980, omni_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Omni (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1983, bstrk_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Big Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1983, tstrk_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Triple Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1984, szone_l5, 0, s9, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1984, szone_l2, szone_l5, s9, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, alcat_l7, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, tts_l2, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, tts_l1, tts_l2, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, gmine_l2, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, tdawg_l1, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, shfin_l1, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/layout/shuffle.lay b/src/mame/layout/shuffle.lay new file mode 100644 index 00000000000..7c63416cc1f --- /dev/null +++ b/src/mame/layout/shuffle.lay @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/shuffle11.lay b/src/mame/layout/shuffle11.lay new file mode 100644 index 00000000000..7c63416cc1f --- /dev/null +++ b/src/mame/layout/shuffle11.lay @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +