summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Roberto Fresca <robertof@mamedev.org>2008-05-11 21:21:07 +0000
committer Roberto Fresca <robertof@mamedev.org>2008-05-11 21:21:07 +0000
commit9b3d9ea3cd5eee0a7d93dc0ac4572913e5348c03 (patch)
tree9de6c31ea0db9a8a615e36992f1f4856461000bd
parentb59bf0ccfb13c172228ba03e42fce8f239013dbb (diff)
New driver for old Game-A-Tron gambling games hardware.
- Properly decoded graphics. - Proper memory map. - Added NVRAM support. - Proper Inputs through 8255 PPI I/O chip. - Both games are working. - Added technical & game notes. New games added or promoted from NOT_WORKING status --------------------------------------------------- Card Games? [Roberto Fresca] Slots Game? [Roberto Fresca]
-rw-r--r--.gitattributes1
-rw-r--r--src/mame/drivers/gatron.c436
-rw-r--r--src/mame/mame.mak1
-rw-r--r--src/mame/mamedriv.c10
4 files changed, 445 insertions, 3 deletions
diff --git a/.gitattributes b/.gitattributes
index a6dfce2255b..e2e00f22e37 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1458,6 +1458,7 @@ src/mame/drivers/galspnbl.c svneol=native#text/plain
src/mame/drivers/gamecstl.c svneol=native#text/plain
src/mame/drivers/gameplan.c svneol=native#text/plain
src/mame/drivers/gaplus.c svneol=native#text/plain
+src/mame/drivers/gatron.c svneol=native#text/plain
src/mame/drivers/gauntlet.c svneol=native#text/plain
src/mame/drivers/gberet.c svneol=native#text/plain
src/mame/drivers/gbusters.c svneol=native#text/plain
diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c
new file mode 100644
index 00000000000..ddf105269a7
--- /dev/null
+++ b/src/mame/drivers/gatron.c
@@ -0,0 +1,436 @@
+/******************************************************************************
+
+ GAME-A-TRON gaming hardware
+ ---------------------------
+
+ Driver by Roberto Fresca.
+
+
+ Games running on this hardware:
+
+ * Card Games??, 1983, Game-A-Tron.
+ * Slots Game??, 1983, Game-A-Tron.
+
+
+ The names of both games are unknown. Only were arbitrary called "Card Games"
+ and "Slot Game" till we can find some evidence of the real names.
+
+
+*******************************************************************************
+
+
+ Hardware Notes:
+ ---------------
+
+
+ * PCB1: SLOTS GAME?.
+
+ Board silkscreend:
+
+ GAME-A-TRON CORP.
+ (c)1983 PAT.PENDING
+
+ ROMS: - U31 - 2732 (PT-1R-V)
+ - U32 - 2732 (PT-2G-V)
+ - U33 - 2732 (PT-3B-V)
+
+ - U00 - 2764 (PULL-TABS-1-90)
+
+ Most chips, except for the EPROMS, were covered in a hard black plastic so that
+ their numbers could not be read.
+
+ U30 was silkscreend VRAM, 24 pin.
+ U11 was silkscreend scp RAM, 24 pin.
+ U13 was silkscreend CPU, 40 pin.
+ U12 was silkscreend DECODE, 16 pin.
+
+ 1x 16MHz Crystal
+
+ 1x Duracell PX-2 I, 4.5V battery.
+
+
+
+ * PCB2: CARD GAMES?.
+
+ Board silkscreend:
+
+ GAME-A-TRON CORP.
+ (c)1983 PAT.PENDING
+
+ ROMS: - U31 - 2732 (POKER-R)
+ - U32 - 2732 (POKER-G)
+ - U33 - 2732 (BLACK)
+
+ - U00 - 2764 (2764-POKER)
+ - U08 - 2732 (2732-POKER-4-1)
+
+ Most chips, except for the EPROMS, were covered in a hard black plastic so that
+ their numbers could not be read.
+
+ CPU at u13 still covered in black plastic.
+ U05 M5L8255AP-5
+ U11 SCP RAM TC5516APL (2Kx8)
+ U30 VRAM HM6116LP-3 (2Kx8)
+
+ 1x 16MHz Crystal
+
+ 1x Duracell PX-2 I, 4.5V battery.
+
+
+*******************************************************************************
+
+
+ *** Game Notes ***
+
+
+ All games:
+
+ 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.
+
+
+ * Card Games:
+
+ Pressing SERVICE 1 (key 9) you enter the Test/Setting Mode. You can test
+ inputs there, and change all the game settings. Press "DISCARD 1" (key Z)
+ to choose an option, and "DISCARD 5" (key B) to change the settings.
+ Press "SERVICE 2" (key 0) to exit.
+
+ The setting options are:
+
+ HIGHEST-ANTE-IS: 1-5-10-15-20-25-30-35-40-45-50.
+ JOKERS: 0-1-2.
+ BONUS DRAWS: 0-1.
+ DOUBLE-UPS: 0-1-2-3-4-5-6-7-8-9.
+ WIN-ON: JACKS AND UP - PAIR OF ACES.
+ SKILL LEVEL: 50-55-60-65-70-75-80-85-90-95-100.
+ CREDITS-PER-COIN: 1-5-10-15-20-25-30-35-40-45-50-55-60-65-70-75-80-85-90-95-100.
+
+ The game allow to choose one of the following card games:
+
+ - DRAW POKER.
+ - STUD POKER.
+ - ACEY-DEUCY.
+ - BLACKJACK.
+ - HIGH-LOW.
+
+ Press "DISCARD 1" (key Z) to switch between games.
+ Press "BET/ANTE" (key N) to bet credits and then start the game.
+
+ The rest of buttons are self-explanatory.
+
+
+ * Slots Game:
+
+ Pressing SERVICE 1 (key 9) you enter the Test/Setting Mode. You can test
+ inputs there, and change all the game settings. Press "SUPER STAR TICKET"
+ (key Z) to choose an option, and "BIG BAR TICKET" (key C) to change the
+ settings. Press "SERVICE 2" (key 0) to exit.
+
+ The setting options are:
+
+ HIGHEST-ANTE-IS: 1-5-10-15-20-25.
+ SKILL LEVEL: 50-55-60-65-70-75-80-85-90-95-100.
+ CREDITS-PER-COIN: 1-5-10-15-20-25-30-35-40-45-50-55-60-65-70-75-80-85-90-95-100.
+ MUSIC: PLAYS - OFF
+
+ You must bet through "ANTE" (key 1), and then choose a ticket to play.
+
+ Press "SUPER STAR TICKET" (key Z) to play with Super Star (left) Ticket.
+ Press "LADY LUCK TICKET" (key X) to play with Lady Luck (center) Ticket.
+ Press "BIG BAR TICKET" (key C) to play with Big Bar (right) Ticket.
+
+
+*******************************************************************************
+
+ --------------------
+ *** Memory Map ***
+ --------------------
+
+ 0x0000 - 0x5FFF ; ROM space.
+ 0x6000 - 0x67FF ; Video RAM (only the first 0x300 bytes are used).
+ 0x8000 - 0x87FF ; Main RAM.
+ 0xA000 - 0xA000 ; Unknown Writes.
+ 0xE000 - 0xE000 ; Unknown Writes (watchdog?).
+
+
+*******************************************************************************
+
+
+ DRIVER UPDATES:
+
+
+ [2008-05-10]
+
+ - Initial release.
+ - Properly decoded graphics.
+ - Proper memory map.
+ - Added NVRAM support.
+ - Proper Inputs through 8255 PPI I/O chip.
+ - Both games are working.
+ - Added technical & game notes.
+
+
+ TODO:
+
+ - Outputs.
+ - Sound.
+
+
+*******************************************************************************/
+
+
+#define MASTER_CLOCK XTAL_16MHz
+
+#include "driver.h"
+#include "machine/8255ppi.h"
+
+
+/*************************
+* Video Hardware *
+*************************/
+
+static tilemap *bg_tilemap;
+
+
+static 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);
+}
+
+
+static VIDEO_START( gat )
+{
+ bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_cols, 8, 16, 48, 16);
+}
+
+
+static VIDEO_UPDATE( gat )
+{
+ tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
+ return 0;
+}
+
+
+static PALETTE_INIT( gat )
+{
+
+}
+
+
+/*************************
+* Machine Init *
+*************************/
+
+static const ppi8255_interface ppi8255_intf =
+{
+ input_port_0_r, /* Port A read */
+ input_port_1_r, /* Port B read */
+ NULL, /* Port C read */
+ NULL, /* Port A write */
+ NULL, /* Port B write */
+ NULL, /* Port C write */
+};
+
+
+/*************************
+* Memory Map Information *
+*************************/
+
+static ADDRESS_MAP_START( gat_map, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0x63ff) AM_RAM AM_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(0xa000, 0xa000) AM_NOP /* unknown writes */
+ AM_RANGE(0xe000, 0xe000) AM_NOP /* watchdog? */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( gat_portmap, ADDRESS_SPACE_IO, 8 )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(PPI8255, "ppi8255", ppi8255_r, ppi8255_w)
+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 *
+*************************/
+
+static INPUT_PORTS_START( gatcards )
+ PORT_START_TAG("IN0")
+ 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( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Deal/Hit") PORT_CODE(KEYCODE_2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Stand") PORT_CODE(KEYCODE_A)
+ 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( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Discard 3") PORT_CODE(KEYCODE_C)
+
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Discard 2") PORT_CODE(KEYCODE_X)
+ 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( 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( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Discard 1") PORT_CODE(KEYCODE_Z)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( gatslots )
+ PORT_START_TAG("IN0")
+ 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( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x10, 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( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Lady Luck Ticket") PORT_CODE(KEYCODE_X)
+
+ PORT_START_TAG("IN1")
+ PORT_BIT( 0x01, 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( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Payout? */
+ 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( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Super Star Ticket") PORT_CODE(KEYCODE_Z)
+INPUT_PORTS_END
+
+
+/*************************
+* Graphics Layouts *
+*************************/
+
+static const gfx_layout charlayout =
+{
+
+ 8, 16,
+ RGN_FRAC(1,3), /* 256 tiles */
+ 3,
+ { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) }, /* bitplanes are separated */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
+ 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
+ 16*8 /* every char takes 16 consecutive bytes */
+
+};
+
+
+/******************************
+* Graphics Decode Information *
+******************************/
+
+static GFXDECODE_START( gat )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 16 )
+GFXDECODE_END
+
+
+/*************************
+* Machine Drivers *
+*************************/
+
+static MACHINE_DRIVER_START( gat )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD_TAG("main", Z80, MASTER_CLOCK/24) /* guess */
+ MDRV_CPU_PROGRAM_MAP(gat_map, 0)
+ MDRV_CPU_IO_MAP(gat_portmap,0)
+ MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
+
+ MDRV_NVRAM_HANDLER(generic_0fill)
+
+ MDRV_DEVICE_ADD( "ppi8255", PPI8255 )
+ MDRV_DEVICE_CONFIG( ppi8255_intf )
+
+ /* video hardware */
+ MDRV_SCREEN_ADD("main", RASTER)
+ MDRV_SCREEN_REFRESH_RATE(60)
+ MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MDRV_SCREEN_SIZE(48*8, 16*16)
+ MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 16*16-1)
+
+ MDRV_GFXDECODE(gat)
+
+ MDRV_PALETTE_INIT(gat)
+ MDRV_PALETTE_LENGTH(8)
+
+ MDRV_VIDEO_START(gat)
+ MDRV_VIDEO_UPDATE(gat)
+
+MACHINE_DRIVER_END
+
+
+/*************************
+* Rom Load *
+*************************/
+
+ROM_START( gatcards )
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "gat1.0", 0x0000, 0x2000, CRC(8361fccd) SHA1(4faae6bb3104c1f4a0939d613966085d7e34c1df))
+ ROM_LOAD( "gat1.8", 0x2000, 0x1000, CRC(61e71f31) SHA1(b8d162a47752cff7412b3920ec9dd7a469e81e62) )
+
+ ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "gat1.33", 0x0000, 0x1000, CRC(3f8a2d59) SHA1(d61dce33aa8637105905830e2f37c1052c441194) )
+ ROM_LOAD( "gat1.32", 0x1000, 0x1000, CRC(3e7772b2) SHA1(c7499ff148e5a9cbf0958820c41ea09a843ab355) )
+ ROM_LOAD( "gat1.31", 0x2000, 0x1000, CRC(18d090ec) SHA1(3504f18b3984d16545dbe61a03fbf6b8e2027150) )
+ROM_END
+
+ROM_START( gatslots )
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "gat.0", 0x0000, 0x2000, CRC(7cfd490d) SHA1(8eb360f8f4806a4281dae12236d30aa86d00993d) )
+
+ ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "gat.33", 0x0000, 0x1000, CRC(3505cec1) SHA1(98ab0383c4be382aea81ab93433f2f29a075f65d) )
+ ROM_LOAD( "gat.32", 0x1000, 0x1000, CRC(4a3f4f36) SHA1(3dc29f78b7df1a433d0b39bfeaa227615e70ceed) )
+ ROM_LOAD( "gat.31", 0x2000, 0x1000, CRC(6d1b80f4) SHA1(f2da4b4ae1eb05f9ea02e7495ee8110698cc5d1b) )
+ROM_END
+
+
+/*************************
+* Game Drivers *
+*************************/
+
+/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
+GAME( 1983, gatcards, 0, gat, gatcards, 0, ROT0, "Game-A-Tron", "Card Games?", GAME_NO_SOUND )
+GAME( 1983, gatslots, 0, gat, gatslots, 0, ROT0, "Game-A-Tron", "Slots Game?", GAME_NO_SOUND )
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 2f5b86b9107..978a0a3ca8f 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -1542,6 +1542,7 @@ $(MAMEOBJ)/misc.a: \
$(DRIVERS)/freekick.o $(VIDEO)/freekick.o \
$(DRIVERS)/funworld.o $(VIDEO)/funworld.o \
$(DRIVERS)/gamecstl.o \
+ $(DRIVERS)/gatron.o \
$(DRIVERS)/gtipoker.o \
$(DRIVERS)/go2000.o \
$(DRIVERS)/good.o \
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index 2b63fe6110d..7e26072f269 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -7582,7 +7582,6 @@ Other Sun games
DRIVER( aztarac ) /* (c) 1983 Centuri (vector game) */
DRIVER( mole ) /* (c) 1982 Yachiyo Electronics, Ltd. */
DRIVER( thehand ) /* (c) 1981 T.I.C. */
- DRIVER( gotya ) /* (c) 1981 Game-A-Tron */
DRIVER( mrjong ) /* (c) 1983 Kiwako */
DRIVER( crazyblk ) /* (c) 1983 Kiwako + ECI license */
DRIVER( blkbustr ) /* (c) 1983 Kiwako + ECI license */
@@ -7716,8 +7715,6 @@ Other Sun games
DRIVER( cfarm ) /* (c) 1999 LAI Games */
DRIVER( cclownz ) /* (c) 1999 LAI Games */
DRIVER( rotaryf )
- DRIVER( sbugger ) /* (c) 1981 Game-A-Tron */
- DRIVER( sbuggera ) /* (c) 1981 Game-A-Tron */
DRIVER( portrait ) /* (c) 1983 Olympia */
DRIVER( portrata ) /* (c) 1983 Olympia */
DRIVER( enigma2 ) /* (c) 1981 Game Plan (Zilec Electronics license) */
@@ -7892,6 +7889,13 @@ Other Sun games
DRIVER( apple10 ) /* (c) 1998 Sandii' */
DRIVER( tenballs ) /* 1997 unknown */
+ /* Game-A-Tron */
+ DRIVER( gotya ) /* (c) 1981 Game-A-Tron */
+ DRIVER( sbugger ) /* (c) 1981 Game-A-Tron */
+ DRIVER( sbuggera ) /* (c) 1981 Game-A-Tron */
+ DRIVER( gatcards ) /* (c) 1983 Game-A-Tron */
+ DRIVER( gatslots ) /* (c) 1983 Game-A-Tron */
+
DRIVER( vroulet ) /* (c) 1989 World Game */
DRIVER( rcasino ) /* (c) 1984 Dyna Electronics */
DRIVER( cmv801 ) /* (c) 198? Corsica */