Split off Williams Shuffle games to their own driver.

This commit is contained in:
Robbbert 2022-01-21 01:09:39 +11:00
parent 70295eff16
commit f854bf08a5
7 changed files with 1041 additions and 251 deletions

View File

@ -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",

View File

@ -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 )

View File

@ -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 )

View File

@ -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 )

View File

@ -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<cpu_device> m_maincpu;
required_device<input_merger_device> m_mainirq;
optional_device<pia6821_device> m_pia21;
optional_device<pia6821_device> m_pia22;
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
optional_device<pia6821_device> m_pia2c;
required_device<pia6821_device> m_pia30;
optional_device<pia6821_device> m_pia34;
required_device<ripple_counter_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 )

107
src/mame/layout/shuffle.lay Normal file
View File

@ -0,0 +1,107 @@
<?xml version="1.0"?>
<!--
license:CC0
copyright-holders:Robbbert
-->
<mamelayout version="2">
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.25" blue="0.0" />
</led7seg>
</element>
<element name="red_led">
<disk state="0">
<color red="1.0" green="0.0" blue="0.0" />
</disk>
</element>
<element name="P0"><text string="Frame / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P7"><text string="Player 5"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P8"><text string="Player 6"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<group name="score">
<repeat count="4">
<param name="n" start="~s~" increment="1" />
<param name="x" start="0" increment="44" />
<element name="digit~n~" ref="digit">
<bounds x="~x~" y="0" width="34" height="39" />
</element>
</repeat>
</group>
<view name="Default Layout">
<bounds left="0" top="20" right="374" bottom="334" />
<!-- LEDs -->
<!-- Player 1 Score -->
<param name="s" value="0" />
<group ref="score">
<bounds left="10" top="45" right="164" bottom="84" />
</group>
<!-- Player 2 Score -->
<param name="s" value="4" />
<group ref="score">
<bounds left="210" top="45" right="364" bottom="84" />
</group>
<!-- Player 3 Score -->
<param name="s" value="8" />
<group ref="score">
<bounds left="10" top="125" right="164" bottom="164" />
</group>
<!-- Player 4 Score -->
<param name="s" value="16" />
<group ref="score">
<bounds left="210" top="125" right="364" bottom="164" />
</group>
<!-- Player 5 Score -->
<param name="s" value="20" />
<group ref="score">
<bounds left="10" top="205" right="164" bottom="244" />
</group>
<!-- Player 6 Score -->
<param name="s" value="24" />
<group ref="score">
<bounds left="210" top="205" right="364" bottom="244" />
</group>
<!-- Credits and Balls -->
<element name="digit13" ref="digit">
<bounds left="10" top="285" right="44" bottom="324" />
</element>
<element name="digit12" ref="digit">
<bounds left="54" top="285" right="88" bottom="324" />
</element>
<element name="digit14" ref="digit">
<bounds left="186" top="285" right="220" bottom="324" />
</element>
<element name="digit15" ref="digit">
<bounds left="230" top="285" right="264" bottom="324" />
</element>
<element ref="P0"><bounds left="200" right="258" top="270" bottom="282" /></element>
<element ref="P1"><bounds left="30" right="88" top="270" bottom="282" /></element>
<element ref="P3"><bounds left="60" right="140" top="30" bottom="42" /></element>
<element ref="P4"><bounds left="260" right="340" top="30" bottom="42" /></element>
<element ref="P5"><bounds left="60" right="140" top="110" bottom="122" /></element>
<element ref="P6"><bounds left="260" right="340" top="110" bottom="122" /></element>
<element ref="P7"><bounds left="60" right="140" top="190" bottom="202" /></element>
<element ref="P8"><bounds left="260" right="340" top="190" bottom="202" /></element>
<element name="led0" ref="red_led">
<bounds left="310" right="325" top="300" bottom="315" />
</element>
<element name="led1" ref="red_led">
<bounds left="344" right="359" top="300" bottom="315" />
</element>
</view>
</mamelayout>

View File

@ -0,0 +1,107 @@
<?xml version="1.0"?>
<!--
license:CC0
copyright-holders:Robbbert
-->
<mamelayout version="2">
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.25" blue="0.0" />
</led7seg>
</element>
<element name="red_led">
<disk state="0">
<color red="1.0" green="0.0" blue="0.0" />
</disk>
</element>
<element name="P0"><text string="Frame / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P7"><text string="Player 5"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P8"><text string="Player 6"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<group name="score">
<repeat count="4">
<param name="n" start="~s~" increment="1" />
<param name="x" start="0" increment="44" />
<element name="digit~n~" ref="digit">
<bounds x="~x~" y="0" width="34" height="39" />
</element>
</repeat>
</group>
<view name="Default Layout">
<bounds left="0" top="20" right="374" bottom="334" />
<!-- LEDs -->
<!-- Player 1 Score -->
<param name="s" value="0" />
<group ref="score">
<bounds left="10" top="45" right="164" bottom="84" />
</group>
<!-- Player 2 Score -->
<param name="s" value="4" />
<group ref="score">
<bounds left="210" top="45" right="364" bottom="84" />
</group>
<!-- Player 3 Score -->
<param name="s" value="8" />
<group ref="score">
<bounds left="10" top="125" right="164" bottom="164" />
</group>
<!-- Player 4 Score -->
<param name="s" value="16" />
<group ref="score">
<bounds left="210" top="125" right="364" bottom="164" />
</group>
<!-- Player 5 Score -->
<param name="s" value="20" />
<group ref="score">
<bounds left="10" top="205" right="164" bottom="244" />
</group>
<!-- Player 6 Score -->
<param name="s" value="24" />
<group ref="score">
<bounds left="210" top="205" right="364" bottom="244" />
</group>
<!-- Credits and Balls -->
<element name="digit13" ref="digit">
<bounds left="10" top="285" right="44" bottom="324" />
</element>
<element name="digit12" ref="digit">
<bounds left="54" top="285" right="88" bottom="324" />
</element>
<element name="digit14" ref="digit">
<bounds left="186" top="285" right="220" bottom="324" />
</element>
<element name="digit15" ref="digit">
<bounds left="230" top="285" right="264" bottom="324" />
</element>
<element ref="P0"><bounds left="200" right="258" top="270" bottom="282" /></element>
<element ref="P1"><bounds left="30" right="88" top="270" bottom="282" /></element>
<element ref="P3"><bounds left="60" right="140" top="30" bottom="42" /></element>
<element ref="P4"><bounds left="260" right="340" top="30" bottom="42" /></element>
<element ref="P5"><bounds left="60" right="140" top="110" bottom="122" /></element>
<element ref="P6"><bounds left="260" right="340" top="110" bottom="122" /></element>
<element ref="P7"><bounds left="60" right="140" top="190" bottom="202" /></element>
<element ref="P8"><bounds left="260" right="340" top="190" bottom="202" /></element>
<element name="led0" ref="red_led">
<bounds left="310" right="325" top="300" bottom="315" />
</element>
<element name="led1" ref="red_led">
<bounds left="344" right="359" top="300" bottom="315" />
</element>
</view>
</mamelayout>