Bells and whistles to Game-A-Tron gambling hardware.

After an exhaustive analysis to the unknown writes, finally figured out the missing sound device.

 - Added sound support to "Poker 4-1" and "Pull Tabs".
 - Figured out the output ports. Documented each bit accessed.
 - Added button lamps support. Created layouts for both games.
 - Switched the 8255 port C to be used as output port.
 - Adjusted the coin pulse timing.
 - Updated technical notes.
 - Splitted the driver to driver + video.
 - Final clean-up.
This commit is contained in:
Roberto Fresca 2008-08-21 09:42:50 +00:00
parent c783bad331
commit a211e37694
6 changed files with 407 additions and 107 deletions

3
.gitattributes vendored
View File

@ -2474,8 +2474,10 @@ src/mame/layout/pe_schip.lay svneol=native#text/plain
src/mame/layout/pe_slots.lay svneol=native#text/plain src/mame/layout/pe_slots.lay svneol=native#text/plain
src/mame/layout/peplus.lay svneol=native#text/plain src/mame/layout/peplus.lay svneol=native#text/plain
src/mame/layout/pmpoker.lay svneol=native#text/plain src/mame/layout/pmpoker.lay svneol=native#text/plain
src/mame/layout/poker41.lay svneol=native#text/plain
src/mame/layout/pokio.lay svneol=native#text/plain src/mame/layout/pokio.lay svneol=native#text/plain
src/mame/layout/pottnpkr.lay svneol=native#text/plain src/mame/layout/pottnpkr.lay svneol=native#text/plain
src/mame/layout/pulltabs.lay svneol=native#text/plain
src/mame/layout/pyramid.lay svneol=native#text/plain src/mame/layout/pyramid.lay svneol=native#text/plain
src/mame/layout/quintoon.lay svneol=native#text/plain src/mame/layout/quintoon.lay svneol=native#text/plain
src/mame/layout/rocknms.lay svneol=native#text/plain src/mame/layout/rocknms.lay svneol=native#text/plain
@ -2909,6 +2911,7 @@ src/mame/video/galpanic.c svneol=native#text/plain
src/mame/video/galspnbl.c svneol=native#text/plain src/mame/video/galspnbl.c svneol=native#text/plain
src/mame/video/gameplan.c svneol=native#text/plain src/mame/video/gameplan.c svneol=native#text/plain
src/mame/video/gaplus.c svneol=native#text/plain src/mame/video/gaplus.c svneol=native#text/plain
src/mame/video/gatron.c svneol=native#text/plain
src/mame/video/gauntlet.c svneol=native#text/plain src/mame/video/gauntlet.c svneol=native#text/plain
src/mame/video/gberet.c svneol=native#text/plain src/mame/video/gberet.c svneol=native#text/plain
src/mame/video/gbusters.c svneol=native#text/plain src/mame/video/gbusters.c svneol=native#text/plain

View File

@ -1,7 +1,7 @@
/****************************************************************************** /******************************************************************************
GAME-A-TRON gaming hardware GAME-A-TRON gambling hardware
--------------------------- -----------------------------
Driver by Roberto Fresca. Driver by Roberto Fresca.
@ -12,10 +12,6 @@
* Pull Tabs, 1983, Game-A-Tron. * Pull Tabs, 1983, Game-A-Tron.
The names of both games are not confirmed. We are calling them "Poker 4-1"
and "Pull Tabs" till we can find some evidence of the real names.
******************************************************************************* *******************************************************************************
@ -73,10 +69,13 @@
U30 VRAM HM6116LP-3 (2Kx8) U30 VRAM HM6116LP-3 (2Kx8)
1x 16MHz Crystal 1x 16MHz Crystal
1x Duracell PX-2 I, 4.5V battery. 1x Duracell PX-2 I, 4.5V battery.
Identified the unknown writes as a init sequence for 1x PSG sound device.
The type/class is unknown due to almost all devices are plastic covered.
******************************************************************************* *******************************************************************************
@ -88,6 +87,9 @@
The first time the machine is turned on, will show the legend "DATA ERROR". The first time the machine is turned on, will show the legend "DATA ERROR".
You must to RESET (F3) the machine to initialize the NVRAM properly. You must to RESET (F3) the machine to initialize the NVRAM properly.
NOTE: These games are intended to be for amusement only.
There is not such a payout system, so...Dont ask about it!
* Poker 4-1: * Poker 4-1:
@ -143,6 +145,7 @@
******************************************************************************* *******************************************************************************
-------------------- --------------------
*** Memory Map *** *** Memory Map ***
-------------------- --------------------
@ -150,8 +153,20 @@
0x0000 - 0x5FFF ; ROM space. 0x0000 - 0x5FFF ; ROM space.
0x6000 - 0x67FF ; Video RAM (only the first 0x300 bytes are used). 0x6000 - 0x67FF ; Video RAM (only the first 0x300 bytes are used).
0x8000 - 0x87FF ; Main RAM. 0x8000 - 0x87FF ; Main RAM.
0xA000 - 0xA000 ; Unknown Writes. 0xA000 - 0xA000 ; Sound (PSG).
0xE000 - 0xE000 ; Unknown Writes (watchdog?). 0xE000 - 0xE000 ; Output Port 0 (lamps).
* Z80 I/O ports *
0x00 - 0x03 ; PPI 8255 (ports A & B as input, port C as output).
* 8255 I/O ports *
Port A (input) ; Input Port 0 (player buttons).
Port B (input) ; Input Port 1 (player & service buttons).
Port C (output) ; Output Port 1 (lamps & counters).
******************************************************************************* *******************************************************************************
@ -160,9 +175,23 @@
DRIVER UPDATES: DRIVER UPDATES:
[2008-08-21]
After an exhaustive analysis to the unknown writes, finally figured out the missing sound device.
- Added sound support to "Poker 4-1" and "Pull Tabs".
- Figured out the output ports. Documented each bit accessed.
- Added button lamps support. Created layouts for both games.
- Switched the 8255 port C to be used as output port.
- Adjusted the coin pulse timing.
- Updated technical notes.
- Splitted the driver to driver + video.
- Final clean-up.
[2008-05-31] [2008-05-31]
- Renamed the games to "Poker 4-1" and "Pull Tabs" - Renamed the games to "Poker 4-1" and "Pull Tabs".
as shown in the ROMs stickers. as shown in the ROMs stickers.
- Renamed the ROMs in each set according to their own stickers. - Renamed the ROMs in each set according to their own stickers.
- Moved the driver into gametron.a group. - Moved the driver into gametron.a group.
@ -170,6 +199,7 @@
Poker41 and pulltabs don't make use of it, but is present in the Test/Setting Mode. Poker41 and pulltabs don't make use of it, but is present in the Test/Setting Mode.
- Updated technical notes. - Updated technical notes.
[2008-05-10] [2008-05-10]
- Initial release. - Initial release.
@ -183,8 +213,7 @@
TODO: TODO:
- Outputs. - Nothing... :)
- Sound.
*******************************************************************************/ *******************************************************************************/
@ -193,54 +222,98 @@
#define MASTER_CLOCK XTAL_16MHz #define MASTER_CLOCK XTAL_16MHz
#include "driver.h" #include "driver.h"
#include "sound/sn76496.h"
#include "machine/8255ppi.h" #include "machine/8255ppi.h"
#include "poker41.lh"
#include "pulltabs.lh"
/************************* /* from video */
* Video Hardware * WRITE8_HANDLER( gat_videoram_w );
*************************/ PALETTE_INIT( gat );
VIDEO_START( gat );
static tilemap *bg_tilemap; VIDEO_UPDATE( gat );
static WRITE8_HANDLER( gat_videoram_w ) /****************************
* Read/Write Handlers *
****************************/
static WRITE8_HANDLER( output_port_0_w )
{ {
videoram[offset] = data; /* ---------------
tilemap_mark_tile_dirty(bg_tilemap, offset); Pull Tabs lamps
} ---------------
0x00 - Default State.
0x01 - Hold3.
0x04 - Hold5.
0x08 - Ante/Bet.
static TILE_GET_INFO( get_bg_tile_info ) - bits -
{
/* - bits -
7654 3210 7654 3210
xxxx xxxx tiles code. ---------
.... ...x ---> Hold3.
.... .x.. ---> Hold5.
.... x... ---> Ante/Bet.
Tab1 = Hold1
Tab2 = Hold3
Tab3 = Hold5
---------------
Poker 4-1 lamps
---------------
0x00 - Default State.
0x01 - Hold3.
0x02 - Hold4.
0x04 - Hold5/DDown.
0x08 - Ante/Bet.
0x10 - Start.
0x20 - Deal/Hit.
0x40 - Stand/FreeBonusDraw.
- bits -
7654 3210
---------
.... ...x --> Hold3.
.... ..x. --> Hold4.
.... .x.. --> Hold5/DDown.
.... x... --> Ante/Bet.
...x .... --> Start.
..x. .... --> Deal/Hit.
.x.. .... --> Stand/FreeBonusDraw.
only one color code
*/ */
output_set_lamp_value(0, (data) & 1); /* hold3 lamp */
int code = videoram[tile_index]; output_set_lamp_value(1, (data >> 1) & 1); /* hold4 lamp */
output_set_lamp_value(2, (data >> 2) & 1); /* hold5 lamp */
SET_TILE_INFO(0, code, 0, 0); output_set_lamp_value(3, (data >> 3) & 1); /* ante/bet lamp */
output_set_lamp_value(4, (data >> 4) & 1); /* start lamp */
output_set_lamp_value(5, (data >> 5) & 1); /* deal/hit lamp */
output_set_lamp_value(6, (data >> 6) & 1); /* stand/fbdraw lamp */
} }
static VIDEO_START( gat ) static WRITE8_HANDLER( output_port_1_w )
{ {
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_cols, 8, 16, 48, 16); /* ----------------
} Lamps & Counters
----------------
- bits -
7654 3210
---------
.... ...x --> Hold2 lamp.
.... ..x. --> Hold1 lamp.
.x.. .... --> Coin counter (inverted).
x... .... --> Inverted pulse. Related to counters.
static VIDEO_UPDATE( gat ) */
{ output_set_lamp_value(7, (data) & 1); /* hold2 lamp */
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); output_set_lamp_value(8, (data >> 1) & 1); /* hold1 lamp */
return 0;
}
static PALETTE_INIT( gat )
{
} }
@ -252,10 +325,10 @@ static const ppi8255_interface ppi8255_intf =
{ {
input_port_0_r, /* Port A read */ input_port_0_r, /* Port A read */
input_port_1_r, /* Port B read */ input_port_1_r, /* Port B read */
input_port_2_r, /* Port C read */ NULL, /* Port C read */
NULL, /* Port A write */ NULL, /* Port A write */
NULL, /* Port B write */ NULL, /* Port B write */
NULL, /* Port C write */ output_port_1_w, /* Port C write */
}; };
@ -267,8 +340,8 @@ static ADDRESS_MAP_START( gat_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE(&videoram) AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* battery backed RAM */ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* battery backed RAM */
AM_RANGE(0xa000, 0xa000) AM_NOP /* unknown writes */ AM_RANGE(0xa000, 0xa000) AM_WRITE(sn76496_0_w) /* PSG */
AM_RANGE(0xe000, 0xe000) AM_NOP /* watchdog? */ AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( gat_portmap, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( gat_portmap, ADDRESS_SPACE_IO, 8 )
@ -276,27 +349,6 @@ static ADDRESS_MAP_START( gat_portmap, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(PPI8255, "ppi8255", ppi8255_r, ppi8255_w) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(PPI8255, "ppi8255", ppi8255_r, ppi8255_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/* I/O byte R/W
0x0200 ;R ???!
0x9200 ;R
0x9201 ;R
0x9203 ;W (0x92)
0xC002 ;W (0xC0)
0xC202 ;W (0xC2)
0xFF01 ;R
-----------------
unknown writes:
0xA000 ;W (3 consecutive writes: 8x - Cx - 93)
0xE000 ;W (0x04)
*/
/************************* /*************************
* Input Ports * * Input Ports *
@ -307,10 +359,10 @@ static INPUT_PORTS_START( poker41 )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Discard 4") PORT_CODE(KEYCODE_V) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Discard 4") PORT_CODE(KEYCODE_V)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet / Ante") PORT_CODE(KEYCODE_N) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet / Ante") PORT_CODE(KEYCODE_N)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Deal / Hit") PORT_CODE(KEYCODE_2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Deal / Hit") PORT_CODE(KEYCODE_2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) /* Coin A */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Stand") PORT_CODE(KEYCODE_A) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Free Bonus Draw / Stand") PORT_CODE(KEYCODE_3)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Start") PORT_CODE(KEYCODE_1) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Start") PORT_CODE(KEYCODE_1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Discard 5") PORT_CODE(KEYCODE_B) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Discard 5 / High / Double Down") PORT_CODE(KEYCODE_B)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Discard 3") PORT_CODE(KEYCODE_C) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Discard 3") PORT_CODE(KEYCODE_C)
PORT_START("IN1") PORT_START("IN1")
@ -321,17 +373,7 @@ static INPUT_PORTS_START( poker41 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service 1 (Test/Settings)") PORT_CODE(KEYCODE_9) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service 1 (Test/Settings)") PORT_CODE(KEYCODE_9)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Discard 1") PORT_CODE(KEYCODE_Z) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Discard 1 / Low") PORT_CODE(KEYCODE_Z)
PORT_START("IN2") /* disabled */
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_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( pulltabs ) static INPUT_PORTS_START( pulltabs )
@ -339,7 +381,7 @@ static INPUT_PORTS_START( pulltabs )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Ante") PORT_CODE(KEYCODE_1) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Ante") PORT_CODE(KEYCODE_1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) /* Coin A */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Big Bar Ticket") PORT_CODE(KEYCODE_C) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Big Bar Ticket") PORT_CODE(KEYCODE_C)
@ -349,21 +391,11 @@ static INPUT_PORTS_START( pulltabs )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service 2 (Test Mode Out / Coin Stuck)") PORT_CODE(KEYCODE_0) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service 2 (Test Mode Out / Coin Stuck)") PORT_CODE(KEYCODE_0)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Payout? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service 1 (Test/Settings)") PORT_CODE(KEYCODE_9) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service 1 (Test/Settings)") PORT_CODE(KEYCODE_9)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Super Star Ticket") PORT_CODE(KEYCODE_Z) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Super Star Ticket") PORT_CODE(KEYCODE_Z)
PORT_START("IN2") /* disabled */
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_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
@ -402,7 +434,7 @@ GFXDECODE_END
static MACHINE_DRIVER_START( gat ) static MACHINE_DRIVER_START( gat )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD("main", Z80, MASTER_CLOCK/24) /* guess */ MDRV_CPU_ADD("main", Z80, MASTER_CLOCK/24) /* 666.66 kHz, guess */
MDRV_CPU_PROGRAM_MAP(gat_map, 0) MDRV_CPU_PROGRAM_MAP(gat_map, 0)
MDRV_CPU_IO_MAP(gat_portmap,0) MDRV_CPU_IO_MAP(gat_portmap,0)
MDRV_CPU_VBLANK_INT("main", nmi_line_pulse) MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
@ -421,13 +453,15 @@ static MACHINE_DRIVER_START( gat )
MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1) MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1)
MDRV_GFXDECODE(gat) MDRV_GFXDECODE(gat)
MDRV_PALETTE_INIT(gat) MDRV_PALETTE_INIT(gat)
MDRV_PALETTE_LENGTH(8) MDRV_PALETTE_LENGTH(8)
MDRV_VIDEO_START(gat) MDRV_VIDEO_START(gat)
MDRV_VIDEO_UPDATE(gat) MDRV_VIDEO_UPDATE(gat)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("sn1", SN76496, MASTER_CLOCK/8 ) /* 2 MHz, guess */
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)
MACHINE_DRIVER_END MACHINE_DRIVER_END
@ -461,6 +495,6 @@ ROM_END
* 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( 1983, poker41, 0, gat, poker41, 0, ROT0, "Game-A-Tron", "Poker 4-1", GAME_NO_SOUND ) GAMEL( 1983, poker41, 0, gat, poker41, 0, ROT0, "Game-A-Tron", "Poker 4-1", 0, layout_poker41 )
GAME( 1983, pulltabs, 0, gat, pulltabs, 0, ROT0, "Game-A-Tron", "Pull Tabs", GAME_NO_SOUND ) GAMEL( 1983, pulltabs, 0, gat, pulltabs, 0, ROT0, "Game-A-Tron", "Pull Tabs", 0, layout_pulltabs )

135
src/mame/layout/poker41.lay Normal file
View File

@ -0,0 +1,135 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="hold1" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="DISCARD 1" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="hold2" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="DISCARD 2" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="hold3" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="DISCARD 3" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="hold4" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="DISCARD 4" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="hold5" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="DISCARD 5" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="stand" defstate="1">
<rect>
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<text string="FB-DRAW / STAND" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="hit" defstate="1">
<rect>
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<text string="DEAL / HIT" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="bet" defstate="1">
<rect>
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<text string="ANTE / BET" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="start" defstate="1">
<rect>
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<text string="START" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<view name="Button Lamps">
<screen index="0">
<bounds left="0" top="0" right="4" bottom="3" />
</screen>
<bezel name="lamp8" element="hold1">
<bounds x="0" y="3.02" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp7" element="hold2">
<bounds x="0.82" y="3.02" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp6" element="stand">
<bounds x="0.82" y="3.28" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp0" element="hold3">
<bounds x="1.64" y="3.02" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp5" element="hit">
<bounds x="1.64" y="3.28" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp1" element="hold4">
<bounds x="2.46" y="3.02" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp3" element="bet">
<bounds x="2.46" y="3.28" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp2" element="hold5">
<bounds x="3.28" y="3.02" width="0.72" height="0.24" />
</bezel>
<bezel name="lamp4" element="start">
<bounds x="3.28" y="3.28" width="0.72" height="0.24" />
</bezel>
</view>
</mamelayout>

View File

@ -0,0 +1,66 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="tab1" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="SUPER STAR" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="tab2" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="LADY LUCK" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="tab3" defstate="1">
<rect>
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="BIG BAR" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<element name="bet" defstate="1">
<rect>
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<text string="ANTE/BET" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.1" width="1" height="0.8" />
</text>
</element>
<view name="Button Lamps">
<screen index="0">
<bounds left="0" top="0" right="4" bottom="3" />
</screen>
<bezel name="lamp8" element="tab1">
<bounds x="0.30" y="3.02" width="1.00" height="0.24" />
</bezel>
<bezel name="lamp0" element="tab2">
<bounds x="1.50" y="3.02" width="1.00" height="0.24" />
</bezel>
<bezel name="lamp3" element="bet">
<bounds x="1.50" y="3.28" width="1.00" height="0.24" />
</bezel>
<bezel name="lamp2" element="tab3">
<bounds x="2.70" y="3.02" width="1.00" height="0.24" />
</bezel>
</view>
</mamelayout>

View File

@ -742,7 +742,7 @@ $(MAMEOBJ)/gameplan.a: \
$(MAMEOBJ)/gametron.a: \ $(MAMEOBJ)/gametron.a: \
$(DRIVERS)/gotya.o $(AUDIO)/gotya.o $(VIDEO)/gotya.o \ $(DRIVERS)/gotya.o $(AUDIO)/gotya.o $(VIDEO)/gotya.o \
$(DRIVERS)/sbugger.o $(VIDEO)/sbugger.o \ $(DRIVERS)/sbugger.o $(VIDEO)/sbugger.o \
$(DRIVERS)/gatron.o \ $(DRIVERS)/gatron.o $(VIDEO)/gatron.o \
$(MAMEOBJ)/gottlieb.a: \ $(MAMEOBJ)/gottlieb.a: \
$(DRIVERS)/exterm.o $(VIDEO)/exterm.o \ $(DRIVERS)/exterm.o $(VIDEO)/exterm.o \
@ -1711,6 +1711,9 @@ $(DRIVERS)/firebeat.o: $(LAYOUT)/firebeat.lh
$(DRIVERS)/funworld.o: $(LAYOUT)/funworld.lh $(DRIVERS)/funworld.o: $(LAYOUT)/funworld.lh
$(DRIVERS)/gatron.o: $(LAYOUT)/poker41.lh \
$(LAYOUT)/pulltabs.lh
$(DRIVERS)/lazercmd.o: $(LAYOUT)/lazercmd.lh $(DRIVERS)/lazercmd.o: $(LAYOUT)/lazercmd.lh
$(DRIVERS)/lucky74.o: $(LAYOUT)/lucky74.lh $(DRIVERS)/lucky74.o: $(LAYOUT)/lucky74.lh

59
src/mame/video/gatron.c Normal file
View File

@ -0,0 +1,59 @@
/******************************************************************************
GAME-A-TRON gambling hardware
-----------------------------
*** Video Hardware ***
Written by Roberto Fresca.
Games running on this hardware:
* Poker 4-1, 1983, Game-A-Tron.
* Pull Tabs, 1983, Game-A-Tron.
*******************************************************************************/
#include "driver.h"
static tilemap *bg_tilemap;
WRITE8_HANDLER( gat_videoram_w )
{
videoram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap, offset);
}
static TILE_GET_INFO( get_bg_tile_info )
{
/* - bits -
7654 3210
xxxx xxxx tiles code.
only one color code
*/
int code = videoram[tile_index];
SET_TILE_INFO(0, code, 0, 0);
}
VIDEO_START( gat )
{
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_cols, 8, 16, 48, 16);
}
VIDEO_UPDATE( gat )
{
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
return 0;
}
PALETTE_INIT( gat )
{
}