mirror of
https://github.com/holub/mame
synced 2025-05-25 15:25:33 +03:00
Improvements to re900.c driver [Roberto Fresca, Grull Osgo]
- Reworked inputs to allow 6 players through a selector. - Hooked all lamps (even the ball simulator array). - Added a internal layout and support for external artwork. - Extended the hardware to support Buena Suerte '94. - Cleaned up the driver. New games added or promoted from NOT_WORKING status --------------------------------------------------- Buena Suerte '94 [Grull Osgo, Roberto Fresca]
This commit is contained in:
parent
ce7f16d0ef
commit
aaa8405a51
@ -1,26 +1,74 @@
|
|||||||
/*************************************************************************
|
/***********************************************************************************
|
||||||
|
|
||||||
re900.c
|
re900.c
|
||||||
|
|
||||||
Ruleta RE-900 - Entretenimientos GEMINI (1990)
|
Ruleta RE-900 - Entretenimientos GEMINIS & GENATRON (C) 1993
|
||||||
|
|
||||||
Driver by Grull Osgo.
|
Driver by Grull Osgo.
|
||||||
|
Additional work by Roberto Fresca.
|
||||||
|
|
||||||
Games running on this hardware:
|
Games running on this hardware:
|
||||||
|
|
||||||
* Ruleta RE-900, 1990, Entretenimientos GEMINI.
|
* Ruleta RE-900, 1993, Entretenimientos GEMINIS.
|
||||||
* Buena Suerte '94 1990, Entretenimientos GEMINI.
|
* Buena Suerte '94 1994, Entretenimientos GEMINIS.
|
||||||
|
|
||||||
|
|
||||||
Preliminary Version:
|
************************************************************************************
|
||||||
|
|
||||||
Video: OK.
|
Hardware Info
|
||||||
Sound: OK.
|
=============
|
||||||
Inputs: Incomplete.
|
|
||||||
Outputs: Incomplete.
|
* Main board:
|
||||||
Layout: Incomplete.
|
|
||||||
|
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 allow up to 6 players. To start the machine, turn the Operator Key
|
||||||
|
(the the Operator Key light will turn green). Whilest 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 MASTER_CLOCK 11059200
|
#define MASTER_CLOCK 11059200
|
||||||
#define VDP_CLOCK 10730000
|
#define VDP_CLOCK 10730000
|
||||||
@ -30,88 +78,89 @@
|
|||||||
#include "cpu/mcs51/mcs51.h"
|
#include "cpu/mcs51/mcs51.h"
|
||||||
#include "video/tms9928a.h"
|
#include "video/tms9928a.h"
|
||||||
#include "sound/ay8910.h"
|
#include "sound/ay8910.h"
|
||||||
//#include "re900.lh"
|
#include "re900.lh"
|
||||||
|
|
||||||
static UINT8 *re900_rom;
|
static UINT8 *re900_rom;
|
||||||
|
static UINT8 psg_pa, psg_pb = 0, mux_data = 0, ledant = 0, player = 1, stat_a= 1;
|
||||||
|
|
||||||
|
|
||||||
/**********************
|
/****************
|
||||||
* Read/Write Handlers *
|
* Read Handlers *
|
||||||
**********************/
|
****************/
|
||||||
|
|
||||||
static READ8_HANDLER (in_port_0_r)
|
static READ8_HANDLER (re_psg_portA_r)
|
||||||
{
|
{
|
||||||
if ((input_port_read(machine, "IN0") & 0x01) == 0) output_set_lamp_value(1,1); else output_set_lamp_value(1,0);
|
if ((input_port_read(machine, "IN0") & 0x01) == 0)
|
||||||
if ((input_port_read(machine, "IN0") & 0x02) == 0) output_set_lamp_value(2,1); else output_set_lamp_value(2,0);
|
{
|
||||||
|
output_set_lamp_value(0,1); // Operator Key ON
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output_set_lamp_value(0,0); // Operator Key OFF
|
||||||
|
}
|
||||||
|
|
||||||
return input_port_read(machine, "IN0");
|
return input_port_read(machine, "IN0");
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER (in_port_1_r)
|
static READ8_HANDLER (re_psg_portB_r)
|
||||||
{
|
|
||||||
if ((input_port_read(machine, "IN1") & 0x01) == 0) output_set_lamp_value(3,1); else output_set_lamp_value(3,0);
|
|
||||||
if ((input_port_read(machine, "IN1") & 0x02) == 0) output_set_lamp_value(4,1); else output_set_lamp_value(4,0);
|
|
||||||
if ((input_port_read(machine, "IN1") & 0x04) == 0) output_set_lamp_value(5,1); else output_set_lamp_value(5,0);
|
|
||||||
if ((input_port_read(machine, "IN1") & 0x08) == 0) output_set_lamp_value(6,1); else output_set_lamp_value(6,0);
|
|
||||||
if ((input_port_read(machine, "IN1") & 0x10) == 0) output_set_lamp_value(7,1); else output_set_lamp_value(7,0);
|
|
||||||
return input_port_read(machine, "IN1") | 0x80;
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE8_HANDLER (output_port_3_w)
|
|
||||||
{
|
|
||||||
|
|
||||||
output_set_lamp_value(1,1 ^ ( (data >> 4) & 1)); /* Cont. Sal */
|
|
||||||
output_set_lamp_value(2,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */
|
|
||||||
//output_set_lamp_value(20,1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static UINT8 mux_data = 0, ledant = 0;
|
|
||||||
static UINT8 psg_pb = 0;
|
|
||||||
static UINT8 psg_pa;
|
|
||||||
|
|
||||||
|
|
||||||
static WRITE8_HANDLER (mux_port_A_w)
|
|
||||||
{
|
|
||||||
psg_pa = data;
|
|
||||||
mux_data = ((data >> 2) & 0x3f) ^ 0x3f;
|
|
||||||
}
|
|
||||||
|
|
||||||
static READ8_HANDLER (mux_port_B_r)
|
|
||||||
{
|
{
|
||||||
UINT8 retval = 0xff;
|
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(player,1);
|
||||||
|
|
||||||
|
if (input_port_read(machine, "IN_S"))
|
||||||
|
{
|
||||||
|
if (!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);
|
||||||
|
player++;
|
||||||
|
|
||||||
|
if (player == 7)
|
||||||
|
{
|
||||||
|
player = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
output_set_lamp_value(player, 1); /* It shows active player via layout buttons */
|
||||||
|
stat_a = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
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( mux_data )
|
switch( mux_data )
|
||||||
{
|
{
|
||||||
case 0x20: retval = in_port_1_r(machine, 1); break; // Player 1
|
case 0x01: retval = (input_port_read(machine, "IN6") | 0x80 ) - (( player == 6 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 6 */
|
||||||
case 0x10: retval = input_port_read(machine, "IN2"); break; // Player 2
|
case 0x02: retval = (input_port_read(machine, "IN5") | 0x80 ) - (( player == 5 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 5 */
|
||||||
case 0x01: retval = input_port_read(machine, "IN3"); break; // Player 6
|
case 0x04: retval = (input_port_read(machine, "IN4") | 0x80 ) - (( player == 4 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 4 */
|
||||||
|
case 0x08: retval = (input_port_read(machine, "IN3") | 0x80 ) - (( player == 3 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 3 */
|
||||||
|
case 0x10: retval = (input_port_read(machine, "IN2") | 0x80 ) - (( player == 2 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 2 */
|
||||||
|
case 0x20: retval = (input_port_read(machine, "IN1") | 0x80 ) - (( player == 1 ) ? (input_port_read(machine, "INA") | 0x80 ) ^ 0xff: 0x00 ); break; /* Player 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER (mux_port_B_w)
|
static READ8_HANDLER (bs94_portA_r)
|
||||||
{
|
{
|
||||||
UINT8 led;
|
return input_port_read(machine, "IN0");
|
||||||
psg_pb = data;
|
|
||||||
//stb = (data >> 7) & 1;
|
|
||||||
led = (psg_pa >> 2) & 0x3f;
|
|
||||||
|
|
||||||
if (data == 0x7f)
|
|
||||||
{
|
|
||||||
logerror("LED Ruleta %x \n", led);
|
|
||||||
output_set_lamp_value(20 + led,1);
|
|
||||||
|
|
||||||
if (led != ledant)
|
|
||||||
{
|
|
||||||
output_set_lamp_value(20 + ledant,0);
|
|
||||||
ledant = led;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
static READ8_HANDLER (bs94_portB_r)
|
||||||
|
{
|
||||||
//popmessage("PSG_B=%x", psg_pb);
|
return input_port_read(machine, "IN1");
|
||||||
//output_set_lamp_value(0, 1 ^ ((data >> 7) & 1)); /* Strobe Led's Ruleta */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER (rom_r)
|
static READ8_HANDLER (rom_r)
|
||||||
@ -119,19 +168,40 @@ static READ8_HANDLER (rom_r)
|
|||||||
return re900_rom[offset];
|
return re900_rom[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
External RAM Callback for I8052
|
/***********************
|
||||||
READ32_HANDLER(re900_external_ram_iaddr)
|
* Write Handlers *
|
||||||
|
***********************/
|
||||||
|
|
||||||
|
static WRITE8_HANDLER (re_mux_port_A_w)
|
||||||
{
|
{
|
||||||
UINT8 p2 = i8051_get_intram(P2);
|
psg_pa = data;
|
||||||
if (offset < 0x100)
|
mux_data = ((data >> 2) & 0x3f) ^ 0x3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
static WRITE8_HANDLER (re_mux_port_B_w)
|
||||||
{
|
{
|
||||||
return ((p2 << 8) | offset);
|
UINT8 led;
|
||||||
|
psg_pb = data;
|
||||||
|
led = (psg_pa >> 2) & 0x3f;
|
||||||
|
|
||||||
|
if (data == 0x7f)
|
||||||
|
{
|
||||||
|
output_set_lamp_value(20 + led, 1);
|
||||||
|
|
||||||
|
if (led != ledant)
|
||||||
|
{
|
||||||
|
output_set_lamp_value(20 + ledant, 0);
|
||||||
|
ledant = led;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return offset;
|
|
||||||
}
|
}
|
||||||
*/
|
}
|
||||||
|
|
||||||
|
static WRITE8_HANDLER (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 */
|
||||||
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER(re900_watchdog_reset_w)
|
static WRITE8_HANDLER(re900_watchdog_reset_w)
|
||||||
{
|
{
|
||||||
@ -139,9 +209,9 @@ static WRITE8_HANDLER(re900_watchdog_reset_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************
|
/*******************************
|
||||||
* Memory Map Information *
|
* Memory Map Information *
|
||||||
*****************************/
|
*******************************/
|
||||||
|
|
||||||
static ADDRESS_MAP_START( mem_prg, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( mem_prg, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
AM_RANGE(0x0000, 0xffff) AM_ROM AM_BASE(&re900_rom)
|
AM_RANGE(0x0000, 0xffff) AM_ROM AM_BASE(&re900_rom)
|
||||||
@ -156,15 +226,11 @@ static ADDRESS_MAP_START( mem_io, ADDRESS_SPACE_IO, 8 )
|
|||||||
AM_RANGE(0xe801, 0xe801) AM_WRITE(ay8910_write_port_0_w)
|
AM_RANGE(0xe801, 0xe801) AM_WRITE(ay8910_write_port_0_w)
|
||||||
AM_RANGE(0xe802, 0xe802) AM_READ(ay8910_read_port_0_r)
|
AM_RANGE(0xe802, 0xe802) AM_READ(ay8910_read_port_0_r)
|
||||||
AM_RANGE(0xe000, 0xefff) AM_WRITE(re900_watchdog_reset_w)
|
AM_RANGE(0xe000, 0xefff) AM_WRITE(re900_watchdog_reset_w)
|
||||||
AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(output_port_3_w)
|
AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(cpu_port_0_w)
|
||||||
AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_RAM
|
AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_NOP
|
||||||
|
AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_NOP
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
/*
|
|
||||||
static ADDRESS_MAP_START( mem_io, ADDRESS_SPACE_IO, 8 )
|
|
||||||
AM_RANGE(0x00, 0x00) AM_WRITE(output_port_3_w)
|
|
||||||
AM_RANGE(0x02, 0x02) AM_RAM
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
*/
|
|
||||||
|
|
||||||
static INTERRUPT_GEN( re900_video_interrupt )
|
static INTERRUPT_GEN( re900_video_interrupt )
|
||||||
{
|
{
|
||||||
@ -182,45 +248,118 @@ static void vdp_interrupt (running_machine *machine, int state)
|
|||||||
************************/
|
************************/
|
||||||
|
|
||||||
INPUT_PORTS_START( re900 )
|
INPUT_PORTS_START( re900 )
|
||||||
|
|
||||||
PORT_START("IN0")
|
PORT_START("IN0")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
|
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_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_START("IN1")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1-Apuesta") PORT_CODE(KEYCODE_Q)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1-Izquierda") PORT_CODE(KEYCODE_W)
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1-Derecha") PORT_CODE(KEYCODE_E)
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1-Arriba") PORT_CODE(KEYCODE_R)
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1-Abajo") PORT_CODE(KEYCODE_T)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1-Carga") PORT_CODE(KEYCODE_Y)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Key-In") PORT_CODE(KEYCODE_1)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("P1-Descarga") PORT_CODE(KEYCODE_U)
|
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_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2-Apuesta") PORT_CODE(KEYCODE_A)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2-Izquierda") PORT_CODE(KEYCODE_S)
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2-Derecha") PORT_CODE(KEYCODE_D)
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2-Arriba") PORT_CODE(KEYCODE_F)
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2-Abajo") PORT_CODE(KEYCODE_G)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2-Carga") PORT_CODE(KEYCODE_H)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P2 Key-In") PORT_CODE(KEYCODE_2)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("P2-Descarga") PORT_CODE(KEYCODE_J)
|
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_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
PORT_START("IN3")
|
PORT_START("IN3")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P3-Apuesta") PORT_CODE(KEYCODE_Z)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P3-Izquierda") PORT_CODE(KEYCODE_X)
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P3-Derecha") PORT_CODE(KEYCODE_C)
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P3-Arriba") PORT_CODE(KEYCODE_V)
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P3-Abajo") PORT_CODE(KEYCODE_B)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P3-Carga") PORT_CODE(KEYCODE_N)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P3 Key-In") PORT_CODE(KEYCODE_3)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("P3-Descarga") PORT_CODE(KEYCODE_M)
|
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_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
|
||||||
|
|
||||||
|
INPUT_PORTS_START( bs94 )
|
||||||
|
PORT_START("IN0")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet") PORT_CODE(KEYCODE_2)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Double") PORT_CODE(KEYCODE_3)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Deal/Draw") PORT_CODE(KEYCODE_1)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Hold 5") PORT_CODE(KEYCODE_B)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Take") PORT_CODE(KEYCODE_4)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Hold 4") PORT_CODE(KEYCODE_V)
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Cancel") PORT_CODE(KEYCODE_N)
|
||||||
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Hold 3") PORT_CODE(KEYCODE_C)
|
||||||
|
|
||||||
|
PORT_START("IN1")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Operator") PORT_TOGGLE PORT_CODE(KEYCODE_0)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Hold 2") PORT_CODE(KEYCODE_X)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Card High") PORT_CODE(KEYCODE_A)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Hold 1") PORT_CODE(KEYCODE_Z)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Card Low") PORT_CODE(KEYCODE_S)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Key In") PORT_CODE(KEYCODE_5)
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Key Out") PORT_CODE(KEYCODE_8)
|
||||||
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Auditor") PORT_CODE(KEYCODE_9)
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
/**********************
|
/***************************
|
||||||
* TMS9928a Interfase *
|
* TMS9928a Interfase *
|
||||||
**********************/
|
***************************/
|
||||||
|
|
||||||
static const TMS9928a_interface tms9928a_interface =
|
static const TMS9928a_interface tms9928a_interface =
|
||||||
{
|
{
|
||||||
@ -231,28 +370,39 @@ static const TMS9928a_interface tms9928a_interface =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*********************
|
/*************************
|
||||||
* AY8910 Interfase *
|
* AY8910 Interfase *
|
||||||
*********************/
|
*************************/
|
||||||
|
|
||||||
static const ay8910_interface ay8910_config =
|
static const ay8910_interface ay8910_re900 =
|
||||||
{
|
{
|
||||||
AY8910_LEGACY_OUTPUT,
|
AY8910_LEGACY_OUTPUT,
|
||||||
AY8910_DEFAULT_LOADS,
|
AY8910_DEFAULT_LOADS,
|
||||||
in_port_0_r, mux_port_B_r, mux_port_A_w, mux_port_B_w
|
re_psg_portA_r,
|
||||||
|
re_psg_portB_r,
|
||||||
|
re_mux_port_A_w,
|
||||||
|
re_mux_port_B_w
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const ay8910_interface ay8910_bs94 =
|
||||||
|
{
|
||||||
|
AY8910_LEGACY_OUTPUT,
|
||||||
|
AY8910_DEFAULT_LOADS,
|
||||||
|
bs94_portA_r,
|
||||||
|
bs94_portB_r,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
/*********************
|
/***************************
|
||||||
* Machine driver *
|
* Machine Driver *
|
||||||
*********************/
|
***************************/
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( re900 )
|
static MACHINE_DRIVER_START( re900 )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MDRV_CPU_ADD("main", I8051, MASTER_CLOCK)
|
MDRV_CPU_ADD("main", I8051, MASTER_CLOCK)
|
||||||
MDRV_CPU_PROGRAM_MAP(mem_prg, 0)
|
MDRV_CPU_PROGRAM_MAP(mem_prg, 0)
|
||||||
//MDRV_CPU_DATA_MAP(mem_data, 0)
|
|
||||||
MDRV_CPU_IO_MAP(mem_io, 0)
|
MDRV_CPU_IO_MAP(mem_io, 0)
|
||||||
MDRV_CPU_VBLANK_INT("main", re900_video_interrupt)
|
MDRV_CPU_VBLANK_INT("main", re900_video_interrupt)
|
||||||
|
|
||||||
@ -265,10 +415,19 @@ static MACHINE_DRIVER_START( re900 )
|
|||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
MDRV_SOUND_ADD("ay", AY8910, TMS_CLOCK) /* From TMS9128NL - Pin 37 (GROMCLK) */
|
MDRV_SOUND_ADD("ay_re900", AY8910, TMS_CLOCK) /* From TMS9128NL - Pin 37 (GROMCLK) */
|
||||||
MDRV_SOUND_CONFIG(ay8910_config)
|
MDRV_SOUND_CONFIG(ay8910_re900)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
|
||||||
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
static MACHINE_DRIVER_START( bs94 )
|
||||||
|
|
||||||
|
MDRV_IMPORT_FROM(re900)
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
MDRV_SOUND_MODIFY("ay_re900")
|
||||||
|
MDRV_SOUND_CONFIG(ay8910_bs94)
|
||||||
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
|
||||||
@ -281,6 +440,11 @@ ROM_START( re900 )
|
|||||||
ROM_LOAD( "re900.bin", 0x0000, 0x10000, CRC(967ae944) SHA1(104bab79fd50a8e38ae15058dbe47a59f1ec4b05) )
|
ROM_LOAD( "re900.bin", 0x0000, 0x10000, CRC(967ae944) SHA1(104bab79fd50a8e38ae15058dbe47a59f1ec4b05) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( bs94 )
|
||||||
|
ROM_REGION( 0x10000, "main", 0 )
|
||||||
|
ROM_LOAD( "bs94.bin", 0x0000, 0x10000, CRC(bbd484ce) SHA1(4128e488ca806842c3639e05c4c9cf4c0da2990d) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
/************************
|
/************************
|
||||||
* Driver Init *
|
* Driver Init *
|
||||||
@ -288,15 +452,16 @@ ROM_END
|
|||||||
|
|
||||||
static DRIVER_INIT( re900 )
|
static DRIVER_INIT( re900 )
|
||||||
{
|
{
|
||||||
/* External RAM callback */
|
|
||||||
//i8051_set_eram_iaddr_callback(re900_external_ram_iaddr);
|
|
||||||
TMS9928A_configure(&tms9928a_interface);
|
TMS9928A_configure(&tms9928a_interface);
|
||||||
|
player = 1;
|
||||||
|
stat_a = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
* Game Drivers *
|
* Game Drivers *
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
|
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
|
||||||
GAME( 1990, re900, 0, re900, re900, re900, ROT90, "Entretenimientos GEMINI", "Ruleta RE-900", 0 )
|
GAMEL( 1993, re900, 0, re900, re900, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", 0, layout_re900)
|
||||||
//GAMEL( 1990, re900, 0, re900, re900, re900, ROT90, "GEMINI", "Ruleta RE-900", 0, layout_re900 )
|
GAME ( 1994, bs94 , 0, bs94, bs94 , re900, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", 0)
|
||||||
|
@ -1769,6 +1769,8 @@ $(DRIVERS)/pmpoker.o: $(LAYOUT)/pmpoker.lh \
|
|||||||
|
|
||||||
$(DRIVERS)/qix.o: $(LAYOUT)/elecyoyo.lh
|
$(DRIVERS)/qix.o: $(LAYOUT)/elecyoyo.lh
|
||||||
|
|
||||||
|
$(DRIVERS)/re900.o: $(LAYOUT)/re900.lh
|
||||||
|
|
||||||
$(DRIVERS)/sbrkout.o: $(LAYOUT)/sbrkout.lh
|
$(DRIVERS)/sbrkout.o: $(LAYOUT)/sbrkout.lh
|
||||||
|
|
||||||
$(DRIVERS)/sderby.o: $(LAYOUT)/sderby.lh \
|
$(DRIVERS)/sderby.o: $(LAYOUT)/sderby.lh \
|
||||||
|
@ -8281,7 +8281,8 @@ Other Sun games
|
|||||||
DRIVER( lucky74a ) /* (c) 1988 Wing Co., Ltd */
|
DRIVER( lucky74a ) /* (c) 1988 Wing Co., Ltd */
|
||||||
DRIVER( magictg ) /* (c) 199? Acclaim */
|
DRIVER( magictg ) /* (c) 199? Acclaim */
|
||||||
DRIVER( magictga ) /* (c) 199? Acclaim */
|
DRIVER( magictga ) /* (c) 199? Acclaim */
|
||||||
DRIVER( re900 ) /* (c) 1990 Entretenimientos GEMINI */
|
DRIVER( re900 ) /* (c) 1993 Entretenimientos GEMINIS */
|
||||||
|
DRIVER( bs94 ) /* (c) 1994 Entretenimientos GEMINIS */
|
||||||
DRIVER( jokrwild ) /* (c) 1988 Sigma */
|
DRIVER( jokrwild ) /* (c) 1988 Sigma */
|
||||||
|
|
||||||
/* InterFlip / Recreativos Franco */
|
/* InterFlip / Recreativos Franco */
|
||||||
|
Loading…
Reference in New Issue
Block a user