Improvements to Treasure Island:

- Added proper inputs.
 - Added coin/keyin/keyout/payout counters.
 - Limited the bet and coin pulses to avoid repeats and coin jams.
 - Added complete coinage and keyin DIP switches.
 - Added main game and double-up rates DIP switches.
 - Added minimum bet DIP switches.
 - Added maximum bet DIP switches.
 - Added main game and double-up limit DIP switches.
 - Added payout mode and auto take DIP switches.
 - Added DIP locations as seen in the settings mode.
 - Added demo sounds DIP switch.
 - Created proper button-lamps layout.
 - Added technical notes.
 - Some clean-ups...

(promoted from not working status....)

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Treasure Island (Subsino) [Team Europe, Dumping Union, Angelo Salese, David Haywood, Roberto Fresca]
This commit is contained in:
Roberto Fresca 2010-02-03 07:25:49 +00:00
parent 69b4ade66a
commit 7b22bc982c
4 changed files with 435 additions and 90 deletions

1
.gitattributes vendored
View File

@ -2949,6 +2949,7 @@ src/mame/layout/superchs.lay svneol=native#text/plain
src/mame/layout/tceptor2.lay svneol=native#text/plain
src/mame/layout/tenpindx.lay svneol=native#text/plain
src/mame/layout/tinv2650.lay svneol=native#text/plain
src/mame/layout/tisub.lay svneol=native#text/plain
src/mame/layout/topspeed.lay svneol=native#text/plain
src/mame/layout/turbo.lay svneol=native#text/plain
src/mame/layout/turbotag.lay svneol=native#text/plain

View File

@ -25,6 +25,15 @@
Press START/DEAL (key 2) to exit.
* Treasure Island.
To enter test mode, keep STATS/TEST (key 9) pressed during boot.
HOLD3 (key C) to increase the tune/sound number, START (key 2) to decrease it.
To enter the bookkeeping mode press STATS/TEST (key 9).
Press START/TAKE (key 2) to exit.
* Poker Carnival (crsbingo)
To adjust the game rate, press SETTINGS (key 0) and then use HOLD4 (key V)
@ -41,7 +50,7 @@
HOLD5 (key B) to select between VOICE <-> MUSIC.
HOLD4 (key V) to increase the tune/sound number, START (key 2) to decrease it.
To enter the bookkeeping mode press STATS (key 9).
To enter the bookkeeping mode press STATS/TEST (key 9).
Press START/DEAL (key 2) to exit.
@ -116,6 +125,27 @@
- Added button-lamps layout.
2010-02-03
----------
Treasure Island:
- Added proper inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game and double-up rates DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added main game and double-up limit DIP switches.
- Added payout mode and auto take DIP switches.
- Added DIP locations as seen in the settings mode.
- Added demo sounds DIP switch.
- Created proper button-lamps layout.
- Added technical notes.
- Some clean-ups...
***************************************************************************/
#include "emu.h"
@ -129,6 +159,7 @@
#include "crsbingo.lh"
#include "sharkpy.lh"
#include "smoto.lh"
#include "tisub.lh"
/***************************************************************************
* Video Hardware *
@ -244,9 +275,9 @@ static VIDEO_START( subsino_reels )
{
VIDEO_START_CALL( subsino );
reel1_tilemap = tilemap_create(machine,get_subsino_reel1_tile_info,tilemap_scan_rows,8,32, 64, 8);
reel2_tilemap = tilemap_create(machine,get_subsino_reel2_tile_info,tilemap_scan_rows,8,32, 64, 8);
reel3_tilemap = tilemap_create(machine,get_subsino_reel3_tile_info,tilemap_scan_rows,8,32, 64, 8);
reel1_tilemap = tilemap_create(machine,get_subsino_reel1_tile_info,tilemap_scan_rows, 8, 32, 64, 8);
reel2_tilemap = tilemap_create(machine,get_subsino_reel2_tile_info,tilemap_scan_rows, 8, 32, 64, 8);
reel3_tilemap = tilemap_create(machine,get_subsino_reel3_tile_info,tilemap_scan_rows, 8, 32, 64, 8);
tilemap_set_scroll_cols(reel1_tilemap, 64);
tilemap_set_scroll_cols(reel2_tilemap, 64);
@ -358,6 +389,15 @@ static WRITE8_HANDLER( subsino_out_a_w )
--x- ---- Payout pulse.
* Treasure Island.
7654 3210
---- ---x Key In pulse.
---- --x- Coin pulse.
---x ---- Key Out pulse.
--x- ---- Payout pulse.
* Super Rider, Super Moto, Shark Party.
7654 3210
@ -374,8 +414,8 @@ static WRITE8_HANDLER( subsino_out_a_w )
output_set_lamp_value(14, (data >> 6) & 1); /* Lamp 14 */
output_set_lamp_value(15, (data >> 7) & 1); /* Lamp 15 */
coin_counter_w( space->machine, 0, data & 0x01 ); /* Coin1 */
coin_counter_w( space->machine, 1, data & 0x02 ); /* keyin */
coin_counter_w( space->machine, 0, data & 0x01 ); /* coin / keyin */
coin_counter_w( space->machine, 1, data & 0x02 ); /* keyin / coin */
coin_counter_w( space->machine, 2, data & 0x10 ); /* keyout */
coin_counter_w( space->machine, 3, data & 0x20 ); /* payout */
@ -413,6 +453,19 @@ static WRITE8_HANDLER( subsino_out_b_w )
x--- ---- GAME OVER?.
* Treasure Island.
7654 3210
---- ---x HOLD1.
---- --x- HOLD2 / BIG.
---- -x-- ???.
---- x--- BET.
---x ---- DOUBLE / INFO.
--x- ---- START / TAKE.
-x-- ---- HOLD3 / SMALL.
x--- ---- ???.
* Poker Carnival (crsbingo).
7654 3210
@ -475,11 +528,11 @@ static ADDRESS_MAP_START( srider_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM
AM_RANGE( 0x0d000, 0x0d000 ) AM_READ_PORT( "DSW1" )
AM_RANGE( 0x0d001, 0x0d001 ) AM_READ_PORT( "DSW2" )
AM_RANGE( 0x0d002, 0x0d002 ) AM_READ_PORT( "DSW3" )
AM_RANGE( 0x0d000, 0x0d000 ) AM_READ_PORT( "SW1" )
AM_RANGE( 0x0d001, 0x0d001 ) AM_READ_PORT( "SW2" )
AM_RANGE( 0x0d002, 0x0d002 ) AM_READ_PORT( "SW3" )
AM_RANGE( 0x0d004, 0x0d004 ) AM_READ_PORT( "DSW4" )
AM_RANGE( 0x0d004, 0x0d004 ) AM_READ_PORT( "SW4" )
AM_RANGE( 0x0d005, 0x0d005 ) AM_READ_PORT( "INA" )
AM_RANGE( 0x0d006, 0x0d006 ) AM_READ_PORT( "INB" )
@ -502,11 +555,11 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sharkpy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x09800, 0x09fff ) AM_RAM
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "DSW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "DSW2" )
AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "DSW3" )
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "SW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "SW2" )
AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "SW3" )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "DSW4" )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "SW4" )
AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INA" )
AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "INB" )
@ -543,9 +596,9 @@ static ADDRESS_MAP_START( victor21_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INA" )
AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INB" )
AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "DSW1" )
AM_RANGE( 0x09007, 0x09007 ) AM_READ_PORT( "DSW2" )
AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "DSW3" )
AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "SW1" )
AM_RANGE( 0x09007, 0x09007 ) AM_READ_PORT( "SW2" )
AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW3" )
AM_RANGE( 0x0900b, 0x0900b ) AM_RAM //protection
@ -632,15 +685,15 @@ static READ8_HANDLER( hwcheck_r )
static ADDRESS_MAP_START( crsbingo_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x09800, 0x09fff ) AM_RAM
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "DSW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "DSW2" )
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "SW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "SW2" )
AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "INA" )
AM_RANGE( 0x09003, 0x09003 ) AM_READ_PORT( "INB" )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INC" )
AM_RANGE( 0x09005, 0x09005 ) AM_WRITE( subsino_out_a_w )
AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "DSW4" )
AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "DSW3" ) // AM_WRITE( subsino_out_a_w )
AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW4" )
AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "SW3" ) // AM_WRITE( subsino_out_a_w )
AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE( hwcheck_r, subsino_out_b_w )
AM_RANGE( 0x09010, 0x09010 ) AM_READWRITE( flash_r, flash_w )
@ -665,15 +718,15 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tisub_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x09800, 0x09fff ) AM_RAM
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "DSW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "DSW2" )
AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "DSW3" )
AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "SW1" )
AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "SW2" )
AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "SW3" )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "DSW4" )
AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "SW4" )
AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INA" )
AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "INB" )
//0x09008: output C?
/* 0x09008: is marked as OUTPUT C in the test mode. */
AM_RANGE( 0x09009, 0x09009 ) AM_WRITE( subsino_out_b_w )
AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE( subsino_out_a_w )
@ -710,7 +763,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( victor21 )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_2C ) )
@ -736,7 +789,7 @@ static INPUT_PORTS_START( victor21 )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPNAME( 0x03, 0x03, "Main Game Rate" )
PORT_DIPSETTING( 0x00, "75%" )
PORT_DIPSETTING( 0x01, "80%" )
@ -753,15 +806,15 @@ static INPUT_PORTS_START( victor21 )
PORT_DIPNAME( 0x20, 0x20, "Attract Music" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "DSW2 - 40" )
PORT_DIPNAME( 0x40, 0x40, "SW2 - 40" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "DSW3" )
PORT_DIPNAME( 0x01, 0x01, "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x01, 0x01, "SW3" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@ -820,7 +873,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( victor5 )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_2C ) )
@ -845,7 +898,7 @@ static INPUT_PORTS_START( victor5 )
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x00, "80" )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPNAME( 0x03, 0x03, "Main Game Rate" )
PORT_DIPSETTING( 0x00, "68%" )
PORT_DIPSETTING( 0x01, "76%" )
@ -868,8 +921,8 @@ static INPUT_PORTS_START( victor5 )
PORT_DIPSETTING( 0xc0, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START( "DSW3" )
PORT_DIPNAME( 0x01, 0x01, "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x01, 0x01, "SW3" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@ -926,9 +979,145 @@ static INPUT_PORTS_START( victor5 )
INPUT_PORTS_END
static INPUT_PORTS_START( tisub )
PORT_START( "SW1" )
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3") // SW1-123
PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x07, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" )
PORT_DIPSETTING( 0x02, "1 Coin / 25 Credits" )
PORT_DIPSETTING( 0x01, "1 Coin / 50 Credits" )
PORT_DIPSETTING( 0x00, "1 Coin / 100 Credits" )
PORT_DIPNAME( 0x38, 0x38, "Key In" ) PORT_DIPLOCATION("SW1:4,5,6") // SW1-456
PORT_DIPSETTING( 0x30, "4 Points/Pulse" )
PORT_DIPSETTING( 0x28, "8 Points/Pulse" )
PORT_DIPSETTING( 0x20, "20 Points/Pulse" )
PORT_DIPSETTING( 0x38, "40 Points/Pulse" )
PORT_DIPSETTING( 0x18, "80 Points/Pulse" )
PORT_DIPSETTING( 0x10, "100 Points/Pulse" )
PORT_DIPSETTING( 0x08, "200 Points/Pulse" )
PORT_DIPSETTING( 0x00, "400 Points/Pulse" )
PORT_DIPNAME( 0x40, 0x40, "Payout Mode" ) PORT_DIPLOCATION("SW1:7") // SW1-7
PORT_DIPSETTING( 0x40, "Coin Value" )
PORT_DIPSETTING( 0x00, "Key In Value" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "SW2" )
PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2") // SW2-12
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "8" )
PORT_DIPSETTING( 0x01, "16" )
PORT_DIPSETTING( 0x00, "32" )
PORT_DIPNAME( 0x0c, 0x08, "Max Bet" ) PORT_DIPLOCATION("SW2:3,4") // SW2-34
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPSETTING( 0x04, "16" )
PORT_DIPSETTING( 0x08, "32" )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:5") // Not in test mode.
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Game Limit" ) PORT_DIPLOCATION("SW2:6") // SW2-6
PORT_DIPSETTING( 0x20, "20000" )
PORT_DIPSETTING( 0x00, "30000" )
PORT_DIPNAME( 0x40, 0x40, "Auto Take" ) PORT_DIPLOCATION("SW2:7") // SW2-7
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "SW3" )
PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" ) PORT_DIPLOCATION("SW3:1,2,3") // SW3-123
PORT_DIPSETTING( 0x00, "77%" )
PORT_DIPSETTING( 0x01, "80%" )
PORT_DIPSETTING( 0x02, "83%" )
PORT_DIPSETTING( 0x03, "86%" )
PORT_DIPSETTING( 0x04, "89%" )
PORT_DIPSETTING( 0x07, "92%" )
PORT_DIPSETTING( 0x05, "95%" )
PORT_DIPSETTING( 0x06, "98%" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "SW4" )
PORT_DIPNAME( 0x07, 0x07, "Double-Up Rate" ) PORT_DIPLOCATION("SW4:1,2,3") // SW4-123
PORT_DIPSETTING( 0x00, "70%" )
PORT_DIPSETTING( 0x01, "74%" )
PORT_DIPSETTING( 0x02, "78%" )
PORT_DIPSETTING( 0x03, "82%" )
PORT_DIPSETTING( 0x04, "86%" )
PORT_DIPSETTING( 0x07, "90%" )
PORT_DIPSETTING( 0x05, "94%" )
PORT_DIPSETTING( 0x06, "98%" )
PORT_DIPNAME( 0x08, 0x08, "Double-Up Limit" ) PORT_DIPLOCATION("SW4:4") // SW4-4
PORT_DIPSETTING( 0x08, "5000" )
PORT_DIPSETTING( 0x00, "10000" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW4:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW4:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW4:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW4:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "INA" )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double / Info")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Big")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3 / Small")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Start / Take")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_BET ) PORT_IMPULSE(3)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START( "INB" )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(3) // coin
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) // key in
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Stats / Test") // Bookkeeping.
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Settings") // Current settings.
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // payout
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // key out
PORT_START( "INC" )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") // hard reset
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( crsbingo )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x06, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_2C ) )
@ -954,7 +1143,7 @@ static INPUT_PORTS_START( crsbingo )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
PORT_DIPSETTING( 0x02, "1" )
PORT_DIPSETTING( 0x01, "5" )
@ -977,8 +1166,8 @@ static INPUT_PORTS_START( crsbingo )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "DSW3" )
PORT_DIPNAME( 0x01, 0x01, "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x01, 0x01, "SW3" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@ -1003,7 +1192,7 @@ static INPUT_PORTS_START( crsbingo )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START( "DSW4" )
PORT_START( "SW4" )
PORT_DIPNAME( 0x07, 0x07, "Double-Up Rate" )
PORT_DIPSETTING( 0x00, "70%" )
PORT_DIPSETTING( 0x01, "74%" )
@ -1044,7 +1233,7 @@ static INPUT_PORTS_START( crsbingo )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) // key in
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Stats") // Bookkeeping.
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Stats") // Bookkeeping.
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Settings") // Game Rate & others.
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // payout
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // key out
@ -1063,7 +1252,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( sharkpy )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x01, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
@ -1075,7 +1264,7 @@ static INPUT_PORTS_START( sharkpy )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1089,7 +1278,7 @@ static INPUT_PORTS_START( sharkpy )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START( "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
PORT_DIPSETTING( 0x00, "55%" )
PORT_DIPSETTING( 0x01, "60%" )
@ -1111,7 +1300,7 @@ static INPUT_PORTS_START( sharkpy )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" )
PORT_START( "SW4" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1155,7 +1344,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( smoto16 )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x01, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
@ -1167,7 +1356,7 @@ static INPUT_PORTS_START( smoto16 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1181,7 +1370,7 @@ static INPUT_PORTS_START( smoto16 )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START( "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
PORT_DIPSETTING( 0x00, "55%" )
PORT_DIPSETTING( 0x01, "60%" )
@ -1203,7 +1392,7 @@ static INPUT_PORTS_START( smoto16 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" )
PORT_START( "SW4" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1249,7 +1438,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( smoto20 )
PORT_START( "DSW1" )
PORT_START( "SW1" )
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x01, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
@ -1261,7 +1450,7 @@ static INPUT_PORTS_START( smoto20 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW2" )
PORT_START( "SW2" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1275,7 +1464,7 @@ static INPUT_PORTS_START( smoto20 )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START( "DSW3" )
PORT_START( "SW3" )
PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
PORT_DIPSETTING( 0x00, "25%" )
PORT_DIPSETTING( 0x01, "30%" )
@ -1297,7 +1486,7 @@ static INPUT_PORTS_START( smoto20 )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" )
PORT_START( "SW4" )
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@ -1652,6 +1841,36 @@ ROM_START( victor21 )
ROM_LOAD( "74s287.u36", 0x100, 0x100, CRC(9ca021c5) SHA1(6a1d8d4f958d36e4a676dc4f4aee83d637933bc3) )
ROM_END
/***************************************************************************
Treasure Island
-- this has an extra layer for the reels, exactly the same as goldstar.c
***************************************************************************/
ROM_START( tisub )
ROM_REGION( 0x14000, "maincpu", 0 )
ROM_LOAD( "rom_1.bin", 0x10000, 0x4000, CRC(ed3b4a69) SHA1(c57985e8d19b2b495fc768e52b83cbbd75f027ad) )
ROM_CONTINUE(0x0000,0xc000)
ROM_REGION( 0x40000, "tilemap", 0 )
ROM_LOAD( "rom_4.bin", 0x00000, 0x10000, CRC(37724fda) SHA1(084653662c9f77afef2a77c607e1fb093aaf3adf) )
ROM_LOAD( "rom_5.bin", 0x10000, 0x10000, CRC(3d18acd8) SHA1(179545c18ad880097366c07c8e2fa821701a2758) )
ROM_LOAD( "rom_6.bin", 0x20000, 0x10000, CRC(c2c226df) SHA1(39762b390d6b271c3252342e843a181dd152a0cc) )
ROM_LOAD( "rom_7.bin", 0x30000, 0x10000, CRC(9d7d99d8) SHA1(a3df5e023c2102028a5186101dc0b19d91e8965e) )
ROM_REGION( 0x8000, "reels", 0 )
ROM_LOAD( "rom_2.bin", 0x0000, 0x4000, CRC(836c756d) SHA1(fca1d5b600861eea30ed73ee13be735e7d167097) )
ROM_IGNORE(0x4000)
ROM_LOAD( "rom_3.bin", 0x4000, 0x4000, CRC(2ad82222) SHA1(68780b9528393b28eaa2f90501efb5a8c39bed63) )
ROM_IGNORE(0x4000)
ROM_REGION( 0x300, "proms", 0 )
ROM_LOAD( "n82s129n.u39", 0x000, 0x100, NO_DUMP )
ROM_LOAD( "n82s129n.u40", 0x100, 0x100, NO_DUMP )
ROM_LOAD( "n82s129n.u41", 0x200, 0x100, NO_DUMP )
ROM_END
/***************************************************************************
Cross Bingo
@ -1969,34 +2188,6 @@ ROM_START( smoto20 )
ROM_LOAD( "82s129.u13", 0x200, 0x100, CRC(9cb4a5c0) SHA1(0e0a368329c6d1cb685ed655d699a4894988fdb1) )
ROM_END
/************************
Treasure Island
-- this has an extra layer for the reels, exactly the same as goldstar.c
************************/
ROM_START( tisub )
ROM_REGION( 0x14000, "maincpu", 0 )
ROM_LOAD( "rom_1.bin", 0x10000, 0x4000, CRC(ed3b4a69) SHA1(c57985e8d19b2b495fc768e52b83cbbd75f027ad) )
ROM_CONTINUE(0x0000,0xc000)
ROM_REGION( 0x40000, "tilemap", 0 )
ROM_LOAD( "rom_4.bin", 0x00000, 0x10000, CRC(37724fda) SHA1(084653662c9f77afef2a77c607e1fb093aaf3adf) )
ROM_LOAD( "rom_5.bin", 0x10000, 0x10000, CRC(3d18acd8) SHA1(179545c18ad880097366c07c8e2fa821701a2758) )
ROM_LOAD( "rom_6.bin", 0x20000, 0x10000, CRC(c2c226df) SHA1(39762b390d6b271c3252342e843a181dd152a0cc) )
ROM_LOAD( "rom_7.bin", 0x30000, 0x10000, CRC(9d7d99d8) SHA1(a3df5e023c2102028a5186101dc0b19d91e8965e) )
ROM_REGION( 0x8000, "reels", 0 )
ROM_LOAD( "rom_2.bin", 0x0000, 0x4000, CRC(836c756d) SHA1(fca1d5b600861eea30ed73ee13be735e7d167097) )
ROM_IGNORE(0x4000)
ROM_LOAD( "rom_3.bin", 0x4000, 0x4000, CRC(2ad82222) SHA1(68780b9528393b28eaa2f90501efb5a8c39bed63) )
ROM_IGNORE(0x4000)
ROM_REGION( 0x300, "proms", 0 )
ROM_LOAD( "n82s129n.u39", 0x000, 0x100, NO_DUMP )
ROM_LOAD( "n82s129n.u40", 0x100, 0x100, NO_DUMP )
ROM_LOAD( "n82s129n.u41", 0x200, 0x100, NO_DUMP )
ROM_END
/***************************************************************************
* Driver Init / Decryption *
@ -2175,12 +2366,12 @@ static DRIVER_INIT( tisub )
* Game Drivers *
***************************************************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
GAMEL( 1990, victor21, 0, victor21, victor21, victor21, ROT0, "Subsino / Buffy", "Victor 21", 0, layout_victor21 )
GAMEL( 1991, victor5, 0, victor5, victor5, victor5, ROT0, "Subsino", "Victor 5", 0, layout_victor5 ) // board sticker says Victor 5, in-game says G.E.A with no manufacturer info?
GAME ( 1991, tisub, 0, tisub, crsbingo, tisub, ROT0, "Subsino", "Treasure Island (Subsino)", GAME_NOT_WORKING )
GAMEL( 1991, crsbingo, 0, crsbingo, crsbingo, crsbingo, ROT0, "Subsino", "Poker Carnival", 0, layout_crsbingo ) // alt version of Cross Bingo?
GAMEL( 1996, sharkpy, 0, sharkpy, sharkpy, sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.3)", 0, layout_sharkpy ) // missing POST messages?
GAMEL( 1996, sharkpya, sharkpy, sharkpy, sharkpy, sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.6)", 0, layout_sharkpy ) // missing POST messages?
GAMEL( 1996, smoto20, 0, srider, smoto20, smoto20, ROT0, "Subsino", "Super Rider (Italy, v2.0)", 0, layout_smoto )
GAMEL( 1996, smoto16, smoto20, srider, smoto16, smoto16, ROT0, "Subsino", "Super Moto (Italy, v1.6)", 0, layout_smoto )
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
GAMEL( 1990, victor21, 0, victor21, victor21, victor21, ROT0, "Subsino / Buffy", "Victor 21", 0, layout_victor21 )
GAMEL( 1991, victor5, 0, victor5, victor5, victor5, ROT0, "Subsino", "Victor 5", 0, layout_victor5 ) // board sticker says Victor 5, in-game says G.E.A with no manufacturer info?
GAMEL( 1991, tisub, 0, tisub, tisub, tisub, ROT0, "Subsino", "Treasure Island (Subsino)", GAME_WRONG_COLORS, layout_tisub )
GAMEL( 1991, crsbingo, 0, crsbingo, crsbingo, crsbingo, ROT0, "Subsino", "Poker Carnival", 0, layout_crsbingo ) // alt version of Cross Bingo?
GAMEL( 1996, sharkpy, 0, sharkpy, sharkpy, sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.3)", 0, layout_sharkpy ) // missing POST messages?
GAMEL( 1996, sharkpya, sharkpy, sharkpy, sharkpy, sharkpy, ROT0, "Subsino", "Shark Party (Italy, v1.6)", 0, layout_sharkpy ) // missing POST messages?
GAMEL( 1996, smoto20, 0, srider, smoto20, smoto20, ROT0, "Subsino", "Super Rider (Italy, v2.0)", 0, layout_smoto )
GAMEL( 1996, smoto16, smoto20, srider, smoto16, smoto16, ROT0, "Subsino", "Super Moto (Italy, v1.6)", 0, layout_smoto )

152
src/mame/layout/tisub.lay Normal file
View File

@ -0,0 +1,152 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="hold1" defstate="0">
<rect state="1">
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.0" blue="0.0" />
</rect>
<text string="HOLD 1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.2" width="1" height="0.6" />
</text>
</element>
<element name="hold2" defstate="0">
<rect state="1">
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.0" blue="0.0" />
</rect>
<text string="HOLD 2">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.4" />
</text>
<text string="BIG">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.5" width="1" height="0.4" />
</text>
</element>
<element name="hold3" defstate="0">
<rect state="1">
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.0" blue="0.0" />
</rect>
<text string="HOLD 3">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.4" />
</text>
<text string="SMALL">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.5" width="1" height="0.4" />
</text>
</element>
<element name="bet" defstate="0">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.3" blue="0.0" />
</rect>
<text string="BET">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.2" width="1" height="0.6" />
</text>
</element>
<element name="start" defstate="0">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.3" blue="0.0" />
</rect>
<text string="START">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.4" />
</text>
<text string="TAKE">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.5" width="1" height="0.4" />
</text>
</element>
<element name="double" defstate="0">
<rect state="1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.2" blue="0.0" />
</rect>
<text string="DOUBLE">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.4" />
</text>
<text string="INFO">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.5" width="1" height="0.4" />
</text>
</element>
<element name="start" defstate="0">
<rect state="1">
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.3" blue="0.0" />
</rect>
<text string="START">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.4" />
</text>
<text string="TAKE">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.5" width="1" height="0.4" />
</text>
</element>
<element name="unknown" defstate="0">
<rect state="1">
<color red="0.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<view name="Button Lamps">
<screen index="0">
<bounds left="0" top="0" right="4" bottom="3" />
</screen>
<bezel name="lamp0" element="hold1">
<bounds x="2.20" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp1" element="hold2">
<bounds x="2.80" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp2" element="unknown">
<bounds x="0" y="3.13" width="0.0" height="0.0" />
</bezel>
<bezel name="lamp3" element="bet">
<bounds x="0.10" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp4" element="double">
<bounds x="1.30" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp5" element="start">
<bounds x="0.70" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp6" element="hold3">
<bounds x="3.40" y="3.13" width="0.50" height="0.24" />
</bezel>
<bezel name="lamp7" element="unknown">
<bounds x="0" y="3.13" width="0.0" height="0.0" />
</bezel>
</view>
</mamelayout>

View File

@ -1811,6 +1811,7 @@ $(DRIVERS)/stepstag.o: $(LAYOUT)/stepstag.lh
$(DRIVERS)/subsino.o: $(LAYOUT)/victor5.lh \
$(LAYOUT)/victor21.lh \
$(LAYOUT)/tisub.lh \
$(LAYOUT)/crsbingo.lh \
$(LAYOUT)/sharkpy.lh \
$(LAYOUT)/smoto.lh