diff options
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 |
commit | 9b3d9ea3cd5eee0a7d93dc0ac4572913e5348c03 (patch) | |
tree | 9de6c31ea0db9a8a615e36992f1f4856461000bd | |
parent | b59bf0ccfb13c172228ba03e42fce8f239013dbb (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-- | .gitattributes | 1 | ||||
-rw-r--r-- | src/mame/drivers/gatron.c | 436 | ||||
-rw-r--r-- | src/mame/mame.mak | 1 | ||||
-rw-r--r-- | src/mame/mamedriv.c | 10 |
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 */ |