summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/re900.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/re900.cpp')
-rw-r--r--src/mame/drivers/re900.cpp453
1 files changed, 453 insertions, 0 deletions
diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp
new file mode 100644
index 00000000000..d959a351444
--- /dev/null
+++ b/src/mame/drivers/re900.cpp
@@ -0,0 +1,453 @@
+// license:BSD-3-Clause
+// copyright-holders:Grull Osgo, Roberto Fresca
+/***********************************************************************************
+
+ re900.c
+
+ Ruleta RE-900 - Entretenimientos GEMINIS & GENATRON (C) 1993
+
+ Driver by Grull Osgo.
+ Additional work by Roberto Fresca.
+
+ Games running on this hardware:
+
+ * Ruleta RE-900, 1993, Entretenimientos GEMINIS.
+ * Buena Suerte '94 1994, Entretenimientos GEMINIS.
+
+
+************************************************************************************
+
+ Hardware Info
+ =============
+
+ * Main board:
+
+ 1x AMD P80C31BH Main CPU.
+ 1x AY-3-8910 Sound & I/O System.
+ 1x TMS-9129-NL Video System.
+
+ 1x 27C512 EPROM Program ROM.
+ 1x MS6264L-10PC (8Kx8) SRAM Data Memory (Battery Backed RAM).
+ 2x TMS4416-15NL (64Kx4) DRAM Video Memory.
+
+ 1x 11.0592 MHz Crystal CPU clock.
+ 1x 10.738635 MHz. Crystal Video System clock.
+ 1x MAX691CPE Power supervisor system, Data RAM Protect and Watchdog.
+
+ 1x 3.6 Ni-Cd Battery Data Memory.
+ 1x LM380N-8 1 Channel Audio Amplifier.
+
+
+************************************************************************************
+
+ Game Info
+ =========
+
+ * RE-900 Electronic Roulette.- 6 Players - W/ Random Bonus Multiplier (up to 10x)
+
+ How to play...
+
+ This Roulette allows up to 6 players. To start the machine, turn the Operator Key
+ (the Operator Key light will turn green). Whilst this key is turned ON, you
+ can insert credits, play, and payout. Once the key is turned OFF (red light), you
+ can play, but credits can't be entered/taken.
+
+ You can select the player number through key "L" (the respective player light will
+ lite on). Key-In for all 6 players are keys 1-2-3-4-5-6 and Key-Out are Q-W-E-R-T-Y
+ respectively. Up-Down-Left-Right to place cursor, and left CTRL to place a bet.
+ After a short time without activity, the roulette start to play, simulating the ball
+ with an array of leds...
+
+ We made a full artwork that allow you to play this game with bells and whistles.
+
+
+ * Buena Suerte ?94 Video Poker Game w/ Double Up feature - 1 Player.
+
+ This game is a reprogrammed version of the Buena Suerte! poker game, to run on this
+ GEMINIS RE900 hardware.
+
+ Graphics are worse than original BS, but sounds are improved through the AY-8910.
+
+
+***********************************************************************************/
+
+
+#define MAIN_CLOCK XTAL_11_0592MHz
+#define VDP_CLOCK XTAL_10_730MHz
+#define TMS_CLOCK VDP_CLOCK / 24
+
+#include "emu.h"
+#include "cpu/mcs51/mcs51.h"
+#include "video/tms9928a.h"
+#include "sound/ay8910.h"
+#include "machine/nvram.h"
+#include "re900.lh"
+
+
+class re900_state : public driver_device
+{
+public:
+ re900_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_rom(*this, "rom") { }
+
+ required_device<cpu_device> m_maincpu;
+
+ required_shared_ptr<UINT8> m_rom;
+
+ // re900 specific
+ UINT8 m_psg_pa;
+ UINT8 m_psg_pb;
+ UINT8 m_mux_data;
+ UINT8 m_ledant;
+ UINT8 m_player;
+ UINT8 m_stat_a;
+
+ // common
+ DECLARE_READ8_MEMBER(rom_r);
+ DECLARE_WRITE8_MEMBER(cpu_port_0_w);
+ DECLARE_WRITE8_MEMBER(watchdog_reset_w);
+
+ // re900 specific
+ DECLARE_READ8_MEMBER(re_psg_portA_r);
+ DECLARE_READ8_MEMBER(re_psg_portB_r);
+ DECLARE_WRITE8_MEMBER(re_mux_port_A_w);
+ DECLARE_WRITE8_MEMBER(re_mux_port_B_w);
+
+ DECLARE_DRIVER_INIT(re900);
+};
+
+
+/****************
+* Read Handlers *
+****************/
+
+READ8_MEMBER(re900_state::re_psg_portA_r)
+{
+ if ((ioport("IN0")->read() & 0x01) == 0)
+ {
+ output_set_lamp_value(0,1); // Operator Key ON
+ }
+
+ else
+ {
+ output_set_lamp_value(0,0); // Operator Key OFF
+ }
+
+ return ioport("IN0")->read();
+}
+
+READ8_MEMBER(re900_state::re_psg_portB_r)
+{
+ UINT8 retval = 0xff;
+ logerror("llamada a re_psg_portB_r\n");
+ /* This is a hack to select the active player due to Keyboard size restrictions */
+
+ output_set_lamp_value(m_player,1);
+
+ if (ioport("IN_S")->read())
+ {
+ if (!m_stat_a)
+ {
+ output_set_lamp_value(1, 0);
+ output_set_lamp_value(2, 0);
+ output_set_lamp_value(3, 0);
+ output_set_lamp_value(4, 0);
+ output_set_lamp_value(5, 0);
+ output_set_lamp_value(6, 0);
+ m_player++;
+
+ if (m_player == 7)
+ {
+ m_player = 1;
+ }
+
+ output_set_lamp_value(m_player, 1); /* It shows active player via layout buttons */
+ m_stat_a = 1;
+ }
+ }
+
+ else
+ {
+ m_stat_a = 0;
+ }
+ /* End of Select Player Hack */
+
+ /* "INA": Unified port to share the player Keys among all players - Key In & Key Out have their own buttons on keyboard. */
+ switch( m_mux_data )
+ {
+ case 0x01: retval = (ioport("IN6")->read() | 0x80 ) - (( m_player == 6 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 6 */
+ case 0x02: retval = (ioport("IN5")->read() | 0x80 ) - (( m_player == 5 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 5 */
+ case 0x04: retval = (ioport("IN4")->read() | 0x80 ) - (( m_player == 4 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 4 */
+ case 0x08: retval = (ioport("IN3")->read() | 0x80 ) - (( m_player == 3 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 3 */
+ case 0x10: retval = (ioport("IN2")->read() | 0x80 ) - (( m_player == 2 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 2 */
+ case 0x20: retval = (ioport("IN1")->read() | 0x80 ) - (( m_player == 1 ) ? (ioport("INA")->read() | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 1 */
+ }
+
+ return retval;
+}
+
+READ8_MEMBER(re900_state::rom_r)
+{
+ return m_rom[offset];
+}
+
+
+/***********************
+* Write Handlers *
+***********************/
+
+WRITE8_MEMBER(re900_state::re_mux_port_A_w)
+{
+ m_psg_pa = data;
+ m_mux_data = ((data >> 2) & 0x3f) ^ 0x3f;
+}
+
+WRITE8_MEMBER(re900_state::re_mux_port_B_w)
+{
+ UINT8 led;
+ m_psg_pb = data;
+ led = (m_psg_pa >> 2) & 0x3f;
+
+ if (data == 0x7f)
+ {
+ output_set_lamp_value(20 + led, 1);
+
+ if (led != m_ledant)
+ {
+ output_set_lamp_value(20 + m_ledant, 0);
+ m_ledant = led;
+ }
+ }
+}
+
+WRITE8_MEMBER(re900_state::cpu_port_0_w)
+{
+// output_set_lamp_value(7,1 ^ ( (data >> 4) & 1)); /* Cont. Sal */
+// output_set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */
+}
+
+WRITE8_MEMBER(re900_state::watchdog_reset_w)
+{
+ //watchdog_reset_w(space,0,0); /* To do! */
+}
+
+
+/*******************************
+* Memory Map Information *
+*******************************/
+
+static ADDRESS_MAP_START( mem_prg, AS_PROGRAM, 8, re900_state )
+ AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("rom")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mem_io, AS_IO, 8, re900_state )
+ AM_RANGE(0x0000, 0xbfff) AM_READ(rom_r)
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("tms9128", tms9928a_device, vram_write)
+ AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write)
+ AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_device, address_data_w)
+ AM_RANGE(0xe802, 0xe802) AM_DEVREAD("ay_re900", ay8910_device, data_r)
+ AM_RANGE(0xe000, 0xefff) AM_WRITE(watchdog_reset_w)
+ AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(cpu_port_0_w)
+ AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_NOP
+ AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_NOP
+ADDRESS_MAP_END
+
+
+/************************
+* Input ports *
+************************/
+
+static INPUT_PORTS_START( re900 )
+
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Auditor Key") PORT_TOGGLE PORT_CODE(KEYCODE_9)
+
+ PORT_START("INA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Key-In") PORT_CODE(KEYCODE_1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Key-Out") PORT_CODE(KEYCODE_Q)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P2 Key-In") PORT_CODE(KEYCODE_2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P2 Key-Out") PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P3 Key-In") PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P3 Key-Out") PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P4 Key-In") PORT_CODE(KEYCODE_4)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P4 Key-Out") PORT_CODE(KEYCODE_R)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN5")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P5 Key-In") PORT_CODE(KEYCODE_5)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P5 Key-Out") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN6")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P6 Key-In") PORT_CODE(KEYCODE_6)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P6 Key-Out") PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN_S")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Player Select") PORT_CODE(KEYCODE_L)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( bs94 )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Draw")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_CANCEL )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Operator") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Card High")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Card Low")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Auditor") PORT_CODE(KEYCODE_9)
+INPUT_PORTS_END
+
+/***************************
+* Machine Driver *
+***************************/
+
+static MACHINE_CONFIG_START( re900, re900_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", I8051, MAIN_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(mem_prg)
+ MCFG_CPU_IO_MAP(mem_io)
+
+ /* video hardware */
+ MCFG_DEVICE_ADD( "tms9128", TMS9128, XTAL_10_738635MHz / 2 ) /* TMS9128NL on the board */
+ MCFG_TMS9928A_VRAM_SIZE(0x4000)
+ MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
+ MCFG_SCREEN_UPDATE_DEVICE( "tms9128", tms9128_device, screen_update )
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("ay_re900", AY8910, TMS_CLOCK) /* From TMS9128NL - Pin 37 (GROMCLK) */
+ MCFG_AY8910_PORT_A_READ_CB(READ8(re900_state, re_psg_portA_r))
+ MCFG_AY8910_PORT_B_READ_CB(READ8(re900_state, re_psg_portB_r))
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(re900_state, re_mux_port_A_w))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(re900_state, re_mux_port_B_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( bs94, re900 )
+
+ /* sound hardware */
+ MCFG_SOUND_MODIFY("ay_re900")
+ MCFG_AY8910_PORT_A_READ_CB(IOPORT("IN0"))
+ MCFG_AY8910_PORT_B_READ_CB(IOPORT("IN1"))
+ MCFG_AY8910_PORT_A_WRITE_CB(NULL)
+ MCFG_AY8910_PORT_B_WRITE_CB(NULL)
+MACHINE_CONFIG_END
+
+
+/*************************
+* Rom Load *
+*************************/
+
+ROM_START( re900 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "re900.bin", 0x0000, 0x10000, CRC(967ae944) SHA1(104bab79fd50a8e38ae15058dbe47a59f1ec4b05) )
+ROM_END
+
+ROM_START( bs94 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "bs94.bin", 0x0000, 0x10000, CRC(bbd484ce) SHA1(4128e488ca806842c3639e05c4c9cf4c0da2990d) )
+ROM_END
+
+
+/************************
+* Driver Init *
+************************/
+
+DRIVER_INIT_MEMBER(re900_state,re900)
+{
+ m_player = 1;
+ m_stat_a = 1;
+ m_psg_pa = m_psg_pb = m_mux_data = m_ledant = 0;
+
+ save_item(NAME(m_psg_pa));
+ save_item(NAME(m_psg_pb));
+ save_item(NAME(m_mux_data));
+ save_item(NAME(m_ledant));
+ save_item(NAME(m_player));
+ save_item(NAME(m_stat_a));
+}
+
+
+/*************************
+* Game Drivers *
+*************************/
+
+/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
+GAMEL( 1993, re900, 0, re900, re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", MACHINE_SUPPORTS_SAVE, layout_re900)
+GAME ( 1994, bs94 , 0, bs94, bs94 , driver_device, 0, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", MACHINE_SUPPORTS_SAVE )