summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/4enraya.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/4enraya.cpp')
-rw-r--r--src/mame/drivers/4enraya.cpp138
1 files changed, 125 insertions, 13 deletions
diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp
index eb293270d83..e3ea8574ee5 100644
--- a/src/mame/drivers/4enraya.cpp
+++ b/src/mame/drivers/4enraya.cpp
@@ -12,6 +12,7 @@
4 En Raya (set 1), 1990, IDSA.
4 En Raya (set 2), 1990, IDSA.
+ unknown bowling themed 'gum' poker machine 1992?,Paradise Automatique / TourVision
unknown 'Pac-Man' gambling game, 1990, Unknown.
unknown 'Space Invaders' gambling game (set 1), 1990, Unknown (made in France).
unknown 'Space Invaders' gambling game (set 2), 199?, Unknown.
@@ -282,6 +283,13 @@ void unk_gambl_state::unkpacga_main_map(address_map &map)
map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
}
+void unk_gambl_state::tourpgum_main_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x67ff).ram().share("nvram");
+ map(0x7000, 0x7fff).w(FUNC(_4enraya_state::fenraya_videoram_w));
+}
+
void unk_gambl_state::unkpacg_main_portmap(address_map &map)
{
map.global_mask(0xff);
@@ -437,6 +445,57 @@ static INPUT_PORTS_START( unkfr )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
+
+static INPUT_PORTS_START( tourpgum )
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // 1 credit (5 needed to start)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) // 5 credits?
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) // 5 credits?
+ 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 )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Exchange")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Lot 2")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Lot 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Lot 3")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Lot 5")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Lot 1")
+
+ PORT_START("DSW1") // only one bank of DSW on this PCB, presumably the 2nd one as service input is there? needs checking in code
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x00, "DSW1-1")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, "DSW1-2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, "DSW1-3")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, "DSW1-4")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, "DSW1-5")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "DSW1-6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_SERVICE( 0x40, IP_ACTIVE_HIGH )
+ PORT_DIPNAME( 0x80, 0x00, "DSW1-8")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
/***********************************
* GFX Layouts & GFX decode *
***********************************/
@@ -478,14 +537,8 @@ void _4enraya_state::machine_reset()
* Machine Drivers *
***********************************/
-void _4enraya_state::_4enraya(machine_config &config)
+void _4enraya_state::_4enraya_video(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, MAIN_CLOCK/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &_4enraya_state::main_map);
- m_maincpu->set_addrmap(AS_IO, &_4enraya_state::main_portmap);
- m_maincpu->set_periodic_int(FUNC(_4enraya_state::irq0_line_hold), attotime::from_hz(4*60)); // unknown timing
-
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
@@ -498,6 +551,18 @@ void _4enraya_state::_4enraya(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_4enraya);
PALETTE(config, m_palette, palette_device::RGB_3BIT);
+}
+
+
+void _4enraya_state::_4enraya(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, MAIN_CLOCK/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &_4enraya_state::main_map);
+ m_maincpu->set_addrmap(AS_IO, &_4enraya_state::main_portmap);
+ m_maincpu->set_periodic_int(FUNC(_4enraya_state::irq0_line_hold), attotime::from_hz(4*60)); // unknown timing
+
+ _4enraya_video(config);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -528,6 +593,25 @@ void unk_gambl_state::unkpacga(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &unk_gambl_state::unkpacga_main_map);
}
+void unk_gambl_state::tourpgum(machine_config &config)
+{
+ /* basic machine hardware */
+ Z80(config, m_maincpu, XTAL(18'000'000)/4); // can only see an 18Mhz XTAL on this PCB?
+ m_maincpu->set_addrmap(AS_PROGRAM, &unk_gambl_state::tourpgum_main_map);
+ m_maincpu->set_addrmap(AS_IO, &unk_gambl_state::unkpacg_main_portmap);
+ m_maincpu->set_periodic_int(FUNC(_4enraya_state::irq0_line_hold), attotime::from_hz(4*60)); // unknown timing
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ _4enraya_video(config);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ AY8910(config, m_ay, XTAL(18'000'000)/4/4).add_route(ALL_OUTPUTS, "mono", 1.0); /* guess */
+ m_ay->port_a_read_callback().set_ioport("DSW2");
+ m_ay->add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
/***********************************
* Rom Load *
***********************************/
@@ -560,6 +644,30 @@ ROM_START( 4enrayaa )
ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) ) /* system control: used for memory mapping */
ROM_END
+/*
+ The PCB here was marked as a 'Gum' machine and is from a gambling machine that instead of paying out money would dispense chewing gum as prizes
+ Other games with 'Gum' in the title also exist, see 'Chewing Gum' and 'Royal Gum' in other drivers for example, these were likely used with similar
+ chewing gum dispensers.
+
+ TourVision was a Spanish developer, PCB had TourVision stickers, but this kind of machine was illegal in Spain, so made for the French market instead
+
+ Ariège Amusements was the exclusive distributor of TourVision products until 1991, Paradise Automatique was a spin-off of this distributor
+ and was legally created in 1992 to import/export food vending machines, video games and audiovisual appliances and continued to work with
+ TourVision.
+
+ A version of this exists (on newer hardware?) with the title 'Lucky Gum' or 'Luck Gum' however the supported game shows no title screen so the title
+ is unknown.
+*/
+
+ROM_START( tourpgum )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "4.ic52", 0x0000, 0x8000, CRC(58d68a5a) SHA1(e1eb9113d6ebb1cedf5c6724c15b96934e357504) )
+
+ ROM_REGION( 0x18000, "gfx1", 0 )
+ ROM_LOAD( "1_tourvision.ic19", 0x00000, 0x8000, CRC(dbfb5b72) SHA1(efdc66f2288cd66f0b91211d3d1e7e6b20079ab1) )
+ ROM_LOAD( "2_tourvision.ic18", 0x08000, 0x8000, CRC(af25ed99) SHA1(9605b36151791b84c2d0648070b0f97e31300dbb) )
+ ROM_LOAD( "3_tourvision.ic17", 0x10000, 0x8000, CRC(0b081663) SHA1(86dbf69e819ced12ac7cb7a4839fe0ba677580ae) )
+ROM_END
/*
Unknown 'Pac-Man' gambling game.
@@ -683,7 +791,7 @@ ROM_END
* Driver Init *
***********************************/
-void unk_gambl_state::driver_init()
+void unk_gambl_enc_state::driver_init()
{
_4enraya_state::driver_init();
@@ -701,8 +809,12 @@ void unk_gambl_state::driver_init()
/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS */
GAME( 1990, 4enraya, 0, _4enraya, 4enraya, _4enraya_state, empty_init, ROT0, "IDSA", "4 En Raya (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1990, 4enrayaa, 4enraya, _4enraya, 4enraya, _4enraya_state, empty_init, ROT0, "IDSA", "4 En Raya (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, unkpacg, 0, unkpacg, unkpacg, unk_gambl_state, empty_init, ROT0, "<unknown>", "unknown 'Pac-Man' gambling game (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, unkpacgb, unkpacg, unkpacg, unkpacg, unk_gambl_state, empty_init, ROT0, "<unknown>", "unknown 'Pac-Man' gambling game (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, unkpacga, unkpacg, unkpacga, unkpacg, unk_gambl_state, empty_init, ROT0, "IDI SRL", "Pucman", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, unksig, 0, unkpacg, unkfr, unk_gambl_state, empty_init, ROT0, "<unknown>", "unknown 'Space Invaders' gambling game (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, unksiga, unksig, unkpacg, unkfr, unk_gambl_state, empty_init, ROT0, "<unknown>", "unknown 'Space Invaders' gambling game (set 2)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992?, tourpgum, 0, tourpgum, tourpgum, unk_gambl_state, empty_init, ROT0, u8"Paradise Automatique / TourVisión", u8"unknown Paradise Automatique / TourVisión bowling themed poker game with gum prizes (France)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 199?, unkpacg, 0, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "<unknown>", "unknown 'Pac-Man' gambling game (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, unkpacgb, unkpacg, unkpacg, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "<unknown>", "unknown 'Pac-Man' gambling game (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, unkpacga, unkpacg, unkpacga, unkpacg, unk_gambl_enc_state, empty_init, ROT0, "IDI SRL", "Pucman", MACHINE_SUPPORTS_SAVE )
+
+GAME( 199?, unksig, 0, unkpacg, unkfr, unk_gambl_enc_state, empty_init, ROT0, "<unknown>", "unknown 'Space Invaders' gambling game (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, unksiga, unksig, unkpacg, unkfr, unk_gambl_enc_state, empty_init, ROT0, "<unknown>", "unknown 'Space Invaders' gambling game (set 2)", MACHINE_SUPPORTS_SAVE )