summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/mame/drivers/ampoker2.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/mame/drivers/ampoker2.c')
-rw-r--r--trunk/src/mame/drivers/ampoker2.c1488
1 files changed, 1488 insertions, 0 deletions
diff --git a/trunk/src/mame/drivers/ampoker2.c b/trunk/src/mame/drivers/ampoker2.c
new file mode 100644
index 00000000000..4ab6b9c5a1e
--- /dev/null
+++ b/trunk/src/mame/drivers/ampoker2.c
@@ -0,0 +1,1488 @@
+/********************************************************************************
+
+
+ AMERICAN POKER 2
+ ----------------
+
+ Company: Novomatic.
+ Year: 1990.
+
+ Driver by Roberto Fresca, with a lot of help of Grull Osgo.
+ Based on a preliminary work of Curt Coder.
+
+
+ --- Supported Sets ---
+
+ Set Name | Relation | Description
+ ---------+----------+------------------------------------
+ ampoker2 | parent | American Poker II.
+ ampkr2b1 | clone | American Poker II (bootleg, set 1).
+ ampkr2b2 | clone | American Poker II (bootleg, set 2).
+ ampkr2b3 | clone | American Poker II (bootleg, set 3).
+ ampkr2b4 | clone | American Poker II (bootleg, set 4).
+ ampkr228 | clone | American Poker II (iamp2 v28).
+ pkrdewin | clone | Poker De Win.
+ ampkr95 | clone | American Poker 95.
+ videomat | clone | Videomat (polish bootleg).
+ rabbitpk | clone | Rabbit Poker / Arizona Poker 1.1? (with PIC)
+ sigmapkr | parent | Sigma Poker.
+ sigma2k | parent | Sigma Poker 2000.
+ piccolop | parent | Piccolo Poker 100.
+
+
+*********************************************************************************
+
+
+ Game Notes...
+ -------------
+
+ American Poker II uses a standard deck of 52 cards plus 1 Joker card.
+ The Joker card substitutes for any card. The player places a bet for
+ the 1st hand deal and can then choose to buy a 2nd draw.
+
+ The win combination Jacks or Better is only paid if a 2nd draw is bought.
+
+
+ Operation...
+
+ To 'init' (boot) the machine:
+ 1) Turn ON the Operator Key (9).
+ 2) Keep pressed the DOOR key (W). You are entering the Operator Mode.
+ 3) Turn OFF the Operator Key (9).
+ 4) Reset the machine. (you must reset manually the machine due to watchdog issues).
+
+ The set ampkr2b3 has a special init code/key:
+
+ 1) Turn ON the Supervisor Key (0).
+ 2) Enter the following sequence: HOLD1, HOLD5, HOLD4, HOLD3, HOLD2 and HOLD3.
+ 3) Wait till the Supervisor Mode appear, and turn OFF the Supervisor Key (0).
+ 4) Reset the machine. (you must reset manually the machine due to watchdog issues).
+
+ ...The key is produced taking 6 bytes at offset 0x5d40 XORed with their respective pairs
+ at offset 0x5d50, resulting the sequence of HOLD keys to init the machine.
+
+
+ Operator Mode:
+ Press '9' once to turn ON the Operator Key. You can find the interim meters (Page 1).
+ Press HOLD3 to clear the meters. Press '9' again to turn OFF the Operator Key.
+ Reset the machine to enter the Game Mode.
+
+ Supervisor Mode:
+ Press '0' once to turn ON the Supervisor Key. You can find the permanent meters (Page 1 to 5).
+ HOLD1, HOLD3 and HOLD5 are the valid keys to navigate through the mode. Press '0' again to turn
+ OFF the Operator Key.
+ Reset the machine to enter the Game Mode.
+
+ To access both modes, no credits should be placed in the machine.
+
+
+ From Novomatic web site:
+
+ "1990 - American Poker II kommt auf den Markt und wird als
+ 'The Legend' in die Geschichte des Gl?cksspiels eingehen."
+
+ "1990 - American Poker II comes on the market and is known as
+ 'The Legend' in the history of gaming."
+
+
+ ----
+
+
+ Sigma Poker:
+
+ This poker game was also sold as "upgrade kit" for American Poker II taiwanese boards.
+ The game has a lot of improvements. New graphics, sounds, bonus, and a totally new
+ 'double-up' feature. Very addictive, in fact.
+
+ Sigma only released 2 games for this hardware: Sigma Poker and Sigma Poker 2000.
+ Both games need some modifications to the original board to be installed.
+ The rest of Sigma poker games (2001 onwards) were developed for B-52 mainboards.
+ (2x 6809; HD63484 video controller).
+
+
+ Sigma Poker 2000:
+
+ This game has better graphics and use 4 times more tiles than other games running
+ on this hardware. To manage this, the game use 2 extra bits from the color RAM.
+
+ To init the game:
+
+ 1) Turn ON the Supervisor Key (0).
+ 2) Press HOLD5 3 times to enter into page 4 (setup) of the supervisor menu.
+ 3) Press HOLD3 to navegate between options, and highlight "Clear All Informations"
+ 4) Keep pressed HOLD1 for more than 3 seconds.
+ 5) Turn OFF the Supervisor Key (0).
+
+
+ Piccolo Poker 100:
+
+ To 'init' (boot) the machine:
+ 1) Turn ON the Operator Key (9).
+ 2) Press the DOOR key (O). You are entering the Operator Mode.
+ 3) Turn OFF the Operator Key (9).
+ 4) Reset the machine. (sometimes you must reset manually the machine due to watchdog issues).
+
+ If you win some credits, you'll be on troubles due to unemulated hopper.
+ Just discharge the credits one by one pressing quickly the door switch (O)
+ If you want to play without the hopper issues, just leave the door open (O). In this mode,
+ the game is playable but doesn't contabilize in the meters.
+
+
+*********************************************************************************
+
+
+ *** Technical Notes (in progress) ***
+
+
+
+ DIP Switches
+ ------------
+
+ DIP1 Remote Credits
+ OFF x100
+ ON x50
+
+ DIP2 Auto Hold
+ OFF Off
+ ON On
+
+ DIP3 DIP4 Rate Tables (*)
+ OFF OFF RATE: 1 2 3 4 5 10 20 30 40 50
+ OFF ON RATE: 5 10 15 20 25 30 35 40 50 100
+ ON OFF RATE: 5 10 15 20 25 30 35 40 45 50
+ ON ON RATE: 10 20 30 40 50 60 70 80 90 100
+
+ DIP6 Take Winnings (On Double Up)
+ OFF Take Part (10 Credits steps)
+ ON Take All
+
+ DIP8 Jackpot
+ OFF Off
+ ON On
+
+
+ (*) Working only in ampkr95.
+
+
+
+ Hardware Notes:
+ --------------
+
+
+ - CPU: 1x Z80 @ 3 MHz.
+ - Video: TTL Logic Raster - 6 MHz Dot Clock.
+ - Osc: 6.000 MHz Xtal.
+ - RAM: 1x 6116 (4Kx8) Static RAM.
+ - VRAM 2x 2016 (4Kx8) Static RAM.
+ - I/O: 8x 74LS251; 8x 74LS259 (Multiplex 8 Ports > 1 Bit).
+ - PRG ROMs: 1x 27C512 (64Kx8) EPROM or similar.
+ - GFX ROMs: 1x 27C128 (16Kx8) EPROM or similar.
+ - Color PROM: 1x 82S147AN.
+ - Sound: 1x AY-3-8910.
+ - Backup Battery: 1x NI-CD 3.6 Volt.
+ - DIP Switches: 1x 8 switches.
+ - Watchdog: 1x TL7705 (Texas Instruments). Refresh: 200 Ms.
+
+
+ Taiwanese PCB Layout:
+ ________________________________________________________________________________
+ | |
+ | ______ _________ _________ ______________ _________ __________ |
+ | | XTAL | | 74LS04 | | 74LS138 | | | | 74LS163 | |PALCE16V8H| |
+ | | 6MHz | |_________| |_________| | UM6116-2 | |_________| |__________| |
+ | |______| _________ _________ |______________| _________ ________ __ |
+ | | 74LS74A | | DM7407N | _______________ | 74LS163 | | 74LS00 ||74||
+ | |_________| |_________| | | |_________| |________||LS||
+ | ____________________ _________ | 27C512 | _________ ________ |08||
+ || | | MC14020 | |_______________| | 74LS163 | | 74LS157||__||
+ || NI-CD 3.6V BATTERY | |_________| |_________| |________| |
+ ||____________________| __________ _____________ _________ ________ |
+ |____ | 74LS244 | | 74LS245 | | 74LS163 | | 74LS157| |
+ | |__________| |_____________| |_________| |________| |
+ ____| |
+ |_28_ ______________________ _________ ________ |
+ |____ | - Z80A - | | 74LS74 | | 74LS157| |
+ |____ | TMPZ84C00AP-6 | |_________| |________| |
+ |____ |______________________| __________ __________ |
+ |____ ___________ ____________ |PALCE16V8H||D4016CX-20| |
+ |____ | 74LS244N | | 74LS259N | |__________||__________| |
+ |____ |___________| |____________| ________ __________ |
+ |____ ___________ __________ | 74LS02 | |D4016CX-20| |
+ |____ | TD62003AP | | 74LS251P | |________| |__________| |
+ |____ |___________| |__________| ____________________ |
+ |____ ___________ __________ |AY-3-8910 / YM2149F | |
+ |____ | 74LS259N | | 74LS251P | | or KC89C72 | |
+ |____ |___________| |__________| |____________________| |
+ |____ ___________ __________ __________ _________ |
+ |____ | 74LS259N | | 74LS251P | | 82S147AN | | 74LS245 | |
+ |____ |___________| |__________| |__________| |_________| |
+ |____ ___________ __________ _________ |
+ |____ | 74LS259N | | 74LS251P | | 74LS377 | |
+ |____ |___________| |__________| |_________| |
+ |____ ___________ __________ _________ |
+ |____ ________ | TD62003AP | | 74LS251P | | 74LS377 | |
+ |____ |12345678| |___________| |__________| |_________| |
+ |____ |________| __________ _________ _________ |
+ |____ DSW1 | 74LS194 | | 74LS194 | | 74LS245 | |
+ |____ |__________| |_________| |_________| |
+ |____ |
+ |____ ______ ________________ _____________ _________ |
+ |_01_ |TL7705| |01 oooooooooo 10| | 27C128 | | 74LS377 | |
+ | |______| |________________| | D27128D | |_________| |
+ ____| CONNECTOR1 |_____________| |
+ | |
+ |________________________________________________________________________________|
+
+
+
+ The main clock (6 MHz.) is generated with a crystal and 74LS04 inverters. This frequency is
+ used as the pixel clock, then is divided by 2 in a flip-flop (7474) and again to the video
+ stage like DOT/2 (the video hardware uses a 3 MHz clock synchronous to the pixel clock).
+
+ Once again this 3 MHz clock signal is further divided by 2 through a flip-flop (7474) to get
+ the 1.5 MHz for the AY8910.
+
+ The 4020 is clocked at 1.5 MHz. The Q10 output (pin 14) is approximately 1464.84 Hz. Using
+ an oscilloscope, I measured a value of 60 uS = 1538 Hz. We used a NMI period of 1536 Hz due
+ to a better binary composition (1024+512).
+
+ Inputs/Ouputs are driven through 74LS251 and 74LS259 multiplexers. Each one handles 1 bit
+ from data bus, and there are many devices as addressed ports (8x 74LS251 and 8x 74LS259).
+
+ Input ports are mapped to offsets 0xC410 through 0xC417. Output ports are mapped to 0xC4000
+ to 0xC407 and are polled/updated during NMI.
+
+ These 1-bit controls are relative to buttons, keys, lights and counters. Other output ports
+ like watchdog or PSG (AY8910) are operated directly.
+
+
+
+ Resistor Network
+ ----------------
+
+ The following diagram is related to taiwanese and argentine PCBs.
+
+
+ 82S147AN
+ +---------+
+ | | 470
+ | O1-Pin06|---/\/\/\----+---> BLUE
+ | | 220 |
+ | O2-Pin07|---/\/\/\----+
+ | | 1K
+ | O3-Pin08|---/\/\/\----+---> GREEN
+ | | 470 |
+ | O4-Pin09|---/\/\/\----+
+ | | 220 |
+ | O5-Pin11|---/\/\/\----+
+ | | 1K
+ | O6-Pin12|---/\/\/\----+---> RED
+ | | 470 |
+ | O7-Pin13|---/\/\/\----+
+ | | 220 |
+ | O8-Pin14|---/\/\/\----+
+ | |
+ +---------+
+
+
+ All colors are directly routed to the edge connector.
+ There are not pull-up or pull-down resistors.
+
+
+*********************************************************************************
+
+
+ --- DRIVER UPDATES ---
+
+
+ [2010-09-28]
+
+ Piccolo Poker 100 from Admiral - Novomatic.
+ - Added a workaround to get the game booting.
+ - Created inputs from the scratch.
+ - Promoted to 'working'.
+ - Added technical and game notes.
+
+
+ [2009-08-17]
+
+ - Added Rabbit Poker / Arizona Poker? set (with GAL22V10 and PIC16F84A).
+ - Added proper decryption algorithms.
+ - Updated technical notes.
+
+
+ [2008-10-07]
+ - Improved the button-lamps layout to all games. Now are more realistic.
+
+
+ [2008-06-09]
+ - Added Videomat (polish bootleg).
+
+
+ [2008-06-02]
+
+ - Reworked the input system for Sigma Poker 2000.
+ - Promoted Sigma Poker 2000 to 'WORKING' state.
+ - Updated technical notes.
+
+
+ [2008-05-23]
+
+ - Reworked the color routines switching to resnet system.
+ - Added a resistor network diagram.
+ - Switch to pre-defined crystal value.
+ - Changed the WATCHDOG_TIME_INIT to be based on miliseconds instead of hertz.
+ - Other minor cleanup/fixes.
+ - Updated technical notes.
+
+
+ [2007-11-15]
+
+ ******** REWRITE ********
+
+ - Crystal documented via #define.
+ - CPU and sound clocks derived from #defined crystal value.
+ - Reworked TILE_GET_INFO to handle the proper tiles/color codes.
+ - Added the correct GFX dump to sigma2k.
+ - Added proper TILE_GET_INFO, VIDEO_START, GFX_LAYOUT, GFXDECODE and MACHINE to sigma2k.
+ - Fixed interrupts (NMI).
+ - Corrected AY8910 frequency to 1.5 MHz to match the real thing.
+ - Arranged the AY8910 volume in all games avoiding clips.
+ - Corrected the screen visible area.
+ - Added NVRAM support.
+ - Reworked the memory map, mapping all the hardware I/O ports.
+ - Reworked the Inputs for all sets.
+ - Added implementation of Operator and Supervisor Keys.
+ - Fixed some timing troubles.
+ - Mapped the input buttons in the same way I mapped them in other poker games.
+ - Added partial DIP switch support with diplocations to all sets.
+
+ - Removed the hack in DRIVER_INIT.
+ - Hooked write handlers for output ports.
+ - Added watchdog routines.
+ - Dumped, hooked, wired and decoded the color PROM in all sets. Colors are perfect.
+ - Modified the refresh rate to 60 fps according to hardware measurements.
+ - Cleaned up and renamed all sets, defining parent-clone relationship.
+ - Wired the lamps for all sets. Created their respective layouts.
+ - Updated flags in game drivers.
+ - Splitted the driver to driver/video.
+ - Other minor fixes.
+
+ - New set dumped/added: American Poker 95.
+ - New set dumped/added: American Poker 2 (bootleg, set 1).
+ - New set dumped/added: Sigma Poker.
+ - New set dumped/added: Sigma Poker 2000.
+
+ - Rewritten the technical notes from the scratch (still in progress).
+ - Added a PCB layout to the technical notes.
+
+
+
+ *** TO DO ***
+
+ - Find why the watchdog sometimes stop to work.
+ - Analyze the write to port 0x21 after reset.
+ - Proper lamps for Piccolo Poker.
+ - Hopper emulation.
+
+
+*********************************************************************************/
+
+
+#define MASTER_CLOCK XTAL_6MHz
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/ay8910.h"
+#include "machine/nvram.h"
+#include "ampoker2.lh"
+#include "sigmapkr.lh"
+#include "includes/ampoker2.h"
+
+/**********************
+* Read/Write Handlers *
+* - Output Ports - *
+***********************
+
+
+ There are only five bits wired for each Port
+
+ PORT ADDRESS BIT0 BIT1 BIT2 BIT3 BIT4
+ -------------------------------------------------------------------
+
+ 0x30 - 0xc000 ---- ---- ---- ---- ----
+ 0x31 - 0xc001 ---- L.Bet/Red L.Hold4 L.Hold2 Twr.Yell
+ 0x32 - 0xc002 ---- ---- ---- L.Hold3 ----
+ 0x33 - 0xc003 ---- ---- ---- ---- ----
+ 0x34 - 0xc004 ---- ---- ---- ---- L.Black
+ 0x35 - 0xc005 ---- ---- ---- ---- ----
+ 0x36 - 0xc006 Twr.Grn. L.Hold5 L.Deal L.Hold1 ----
+ 0x37 - 0xc007 ---- ---- ---- WatchDog ----
+
+
+ --- Lamps wiring (done) ---
+
+ L0 = DEAL / TAKE
+ L1 = RED / BET
+ L2 = BLACK
+ L3 = HOLD 1
+ L4 = HOLD 2
+ L5 = HOLD 3
+ L6 = HOLD 4
+ L7 = HOLD 5
+ L8 = TOWER YELLOW (not in lay)
+ L9 = TOWER GREEN (not in lay)
+
+
+ --- Counters wiring ---
+
+ C0 = METER 1 - REMOTE IN
+ C1 = METER 2 - TOTAL OUT
+ C2 = METER 3 - TOTAL IN
+ C3 = METER 4 - BILLS
+ C4 = METER 5 - JACKPOT
+ C5 = METER 6 - CASH BOX
+ C6 = METER 7 - GAMES
+ C7 = METER 8 - ?
+
+
+ --- Devices wiring ---
+
+ D0 = Enable Coin to Hopper / Diverter
+ D1 = Enable Coin 1 / Acceptor
+ D2 = Enable Coin 2
+ D3 = Enable Coin 3
+ D4 = Enable Coin 4 / Bill Reader
+ D5 = Hopper 1 Enable
+ D6 = Hopper 2 Enable (Optional)
+ D7 = Hopper 1 2 Enable
+
+
+ --- Unused wiring ---
+
+ U0 = Pin 15A (ULN2064)
+ U1 = Pin 17C (ULN2064)
+ U2 = Pin 19A (ULN2064)
+ U3 = Pin 6C (ULN2064)
+ U4 = Pin 13C
+ U5 = Pin 14A
+
+*/
+
+static WRITE8_HANDLER( ampoker2_port30_w )
+/*-------------------------------------------------
+ PORT_30 C000H ;OUTPUT PORT 30H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 =
+ BIT 2 =
+ BIT 3 =
+ BIT 4 =
+--------------------------------------------------*/
+{
+}
+
+
+static WRITE8_HANDLER( ampoker2_port31_w )
+/*-------------------------------------------------
+ PORT_31 C001H ;OUTPUT PORT 31H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 = LAMP_1 ;Lamp 1 (RED)
+ BIT 2 = LAMP_6 ;Lamp 6 (HOLD4)
+ BIT 3 = LAMP_4 ;Lamp 4 (HOLD2)
+ BIT 4 = TWL_YELL ;Tower Light YELLOW
+--------------------------------------------------*/
+{
+ output_set_lamp_value(1, ((data >> 1) & 1)); /* Lamp 1 - BET/RED */
+ output_set_lamp_value(6, ((data >> 2) & 1)); /* Lamp 6 - HOLD 4 */
+ output_set_lamp_value(4, ((data >> 3) & 1)); /* Lamp 4 - HOLD 2 */
+ output_set_lamp_value(8, ((data >> 4) & 1)); /* Lamp 8 - TWR.YELLOW */
+}
+
+
+static WRITE8_HANDLER( ampoker2_port32_w )
+/*-------------------------------------------------
+ PORT_32 C002H ;OUTPUT PORT 32H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 =
+ BIT 2 =
+ BIT 3 = LAMP_5 ;Lamp 5 (HOLD3)
+ BIT 4 =
+--------------------------------------------------*/
+{
+ output_set_lamp_value(5, ((data >> 3) & 1)); /* Lamp 5 - HOLD 3 */
+}
+
+
+static WRITE8_HANDLER( ampoker2_port33_w )
+/*-------------------------------------------------
+ PORT_33 C003H ;OUTPUT PORT 33H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 =
+ BIT 2 =
+ BIT 3 =
+ BIT 4 =
+--------------------------------------------------*/
+{
+}
+
+
+static WRITE8_HANDLER( ampoker2_port34_w )
+/*-------------------------------------------------
+ PORT_34 C004H ;OUTPUT PORT 34H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 =
+ BIT 2 =
+ BIT 3 =
+ BIT 4 = LAMP_2 ;Lamp 3 (BLACK)
+--------------------------------------------------*/
+{
+ output_set_lamp_value(2, ((data >> 4) & 1)); /* Lamp 2 - BLACK */
+}
+
+
+static WRITE8_HANDLER( ampoker2_port35_w )
+/*-------------------------------------------------
+ PORT_35 C005H ;OUTPUT PORT 35H
+---------------------------------------------------
+ BIT 0 =
+ BIT 1 =
+ BIT 2 =
+ BIT 3 =
+ BIT 4 =
+--------------------------------------------------*/
+{
+}
+
+
+static WRITE8_HANDLER( ampoker2_port36_w )
+/*-------------------------------------------------
+ PORT_36 C006H ;OUTPUT PORT 36H
+---------------------------------------------------
+ BIT 0 = TWL_GREEN ;Tower Light GREEN
+ BIT 1 =
+ BIT 2 = LAMP_9 ;Lamp 9 (HOLD5)
+ BIT 3 = LAMP_0 ;Lamp 0 (DEAL)
+ BIT 4 = LAMP_3 ;Lamp 3 (HOLD1)
+--------------------------------------------------*/
+{
+ output_set_lamp_value(9, (data & 1)); /* Lamp 9 - TWR.GREEN */
+ output_set_lamp_value(7, ((data >> 2) & 1)); /* Lamp 7 - HOLD 5 */
+ output_set_lamp_value(0, ((data >> 3) & 1)); /* Lamp 0 - DEAL */
+ output_set_lamp_value(3, ((data >> 4) & 1)); /* Lamp 3 - HOLD 1 */
+}
+
+
+static WRITE8_HANDLER( ampoker2_watchdog_reset_w )
+/*-------------------------------------------------
+ PORT_37 C007H ;OUTPUT PORT 37H
+---------------------------------------------------
+ BIT 3 = W_DOG ;WATCHDOG.
+--------------------------------------------------*/
+{
+ /* watchdog sometimes stop to work */
+
+ if (((data >> 3) & 0x01) == 0) /* check for refresh value (0x08) */
+ {
+ watchdog_reset(space->machine());
+// popmessage("%02x", data);
+ }
+ else
+ {
+// popmessage("%02x", data);
+ }
+}
+
+
+/*************************
+* Memory map information *
+*************************/
+
+static ADDRESS_MAP_START( ampoker2_map, AS_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0xbfff) AM_ROM
+ AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_BASE_MEMBER(ampoker2_state, m_videoram)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ampoker2_io_map, AS_IO, 8 )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x08, 0x0f) AM_WRITENOP /* inexistent in the real hardware */
+ AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
+ AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1")
+ AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2")
+ AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3")
+ AM_RANGE(0x14, 0x14) AM_READ_PORT("IN4")
+ AM_RANGE(0x15, 0x15) AM_READ_PORT("IN5")
+ AM_RANGE(0x16, 0x16) AM_READ_PORT("IN6")
+ AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7")
+// AM_RANGE(0x21, 0x21) AM_WRITENOP /* undocumented, write 0x1a after each reset */
+ AM_RANGE(0x30, 0x30) AM_WRITE (ampoker2_port30_w) /* see write handlers */
+ AM_RANGE(0x31, 0x31) AM_WRITE (ampoker2_port31_w) /* see write handlers */
+ AM_RANGE(0x32, 0x32) AM_WRITE (ampoker2_port32_w) /* see write handlers */
+ AM_RANGE(0x33, 0x33) AM_WRITE (ampoker2_port33_w) /* see write handlers */
+ AM_RANGE(0x34, 0x34) AM_WRITE (ampoker2_port34_w) /* see write handlers */
+ AM_RANGE(0x35, 0x35) AM_WRITE (ampoker2_port35_w) /* see write handlers */
+ AM_RANGE(0x36, 0x36) AM_WRITE (ampoker2_port36_w) /* see write handlers */
+ AM_RANGE(0x37, 0x37) AM_WRITE(ampoker2_watchdog_reset_w)
+ AM_RANGE(0x38, 0x39) AM_DEVWRITE("aysnd", ay8910_address_data_w)
+ AM_RANGE(0x3A, 0x3A) AM_DEVREAD("aysnd", ay8910_r)
+ADDRESS_MAP_END
+
+/*
+
+ Rabbit Poker writes...
+
+ 12dc W \ Writing to the PIC?... The program doesn't seems to poll it.
+ 12dd W /
+
+ Something is going wrong here. 12xx is ROM space. Put a BP on 12e5 and
+ you can see the NVRAM checking routine (NVRAM = c000-cfff)
+
+'maincpu' (000012E5): unmapped program memory byte write to 000012DC = E5
+'maincpu' (000012E5): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F0): unmapped program memory byte write to 000012DC = F0
+'maincpu' (000012F0): unmapped program memory byte write to 000012DD = 12
+'maincpu' (000012F2): unmapped program memory byte write to 000012DC = F2
+'maincpu' (000012F2): unmapped program memory byte write to 000012DD = 12
+
+*/
+
+/*************************
+* Input ports *
+*************************/
+
+static INPUT_PORTS_START( ampoker2 )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper 1") PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE
+ PORT_DIPNAME( 0x08, 0x08, "Remote Mode" )
+ PORT_DIPSETTING( 0x08, "Mode 1" )
+ PORT_DIPSETTING( 0x00, "Mode 2" )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("RTS") PORT_CODE(KEYCODE_U)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Switch")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
+
+ PORT_START("IN3")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */
+ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1", 0x08, PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1", 0x08, PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x08, "Cred x 20" ) PORT_CONDITION("IN1", 0x08, PORTCOND_EQUALS,0x00) /* x100 in ampkr95 */
+ PORT_DIPSETTING( 0x00, "Remote Off" ) PORT_CONDITION("IN1", 0x08, PORTCOND_EQUALS,0x00)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black Card")
+
+ PORT_START("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_DIPNAME( 0x08, 0x08, "Auto Hold" ) PORT_DIPLOCATION("SW1:2") /* DSW2 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Take")
+
+ PORT_START("IN5")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+
+ PORT_START("IN6")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Red Card / Bet")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+
+ PORT_START("IN7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Remote Credit") PORT_IMPULSE(12) PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, "Jackpot" ) PORT_DIPLOCATION("SW1:8") /* DSW8 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_4)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ampkr95 )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper 1") PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE
+ PORT_DIPNAME( 0x08, 0x08, "Remote Mode" )
+ PORT_DIPSETTING( 0x08, "Mode 1" )
+ PORT_DIPSETTING( 0x00, "Mode 2" )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("RTS") PORT_CODE(KEYCODE_U)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Switch")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q)
+
+ PORT_START("IN3")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */
+ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x00) /* x100 in ampkr95 */
+ PORT_DIPSETTING( 0x00, "Remote Off" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x00)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black Card")
+
+ PORT_START("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_DIPNAME( 0x08, 0x08, "Auto Hold" ) PORT_DIPLOCATION("SW1:2") /* DSW2 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Take")
+
+ PORT_START("IN5")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K)
+ PORT_DIPNAME( 0x08, 0x08, "Rate Table SW1" ) PORT_DIPLOCATION("SW1:3") /* DSW3 (should be arranged with DSW4) */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+
+ PORT_START("IN6")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Bet / Red")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_DIPNAME( 0x08, 0x08, "Rate Table SW2" ) PORT_DIPLOCATION("SW1:4") /* DSW4 (should be arranged with DSW3) */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+
+ PORT_START("IN7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Remote Credit") PORT_IMPULSE(12) PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, "Jackpot" ) PORT_DIPLOCATION("SW1:8") /* DSW8 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_4)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sigmapkr )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper 1") PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE
+ PORT_DIPNAME( 0x08, 0x08, "Remote Mode" )
+ PORT_DIPSETTING( 0x08, "Mode 1" )
+ PORT_DIPSETTING( 0x00, "Mode 2" )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("RTS") PORT_CODE(KEYCODE_U)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Switch")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q)
+
+ PORT_START("IN3")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */
+ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x08)
+ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x00) /* x100 in ampkr95 */
+ PORT_DIPSETTING( 0x00, "Remote Off" ) PORT_CONDITION("IN1",0x08,PORTCOND_EQUALS,0x00)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Double") PORT_CODE(KEYCODE_S)
+
+ PORT_START("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_DIPNAME( 0x08, 0x08, "Auto Hold" ) PORT_DIPLOCATION("SW1:2") /* DSW2 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Take")
+
+ PORT_START("IN5")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K)
+ PORT_DIPNAME( 0x08, 0x08, "Rate Table SW1" ) PORT_DIPLOCATION("SW1:3") /* DSW3 (should be arranged with DSW4) */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+
+ PORT_START("IN6")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_DIPNAME( 0x08, 0x08, "Rate Table SW2" ) PORT_DIPLOCATION("SW1:4") /* DSW4 (should be arranged with DSW3) */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+
+ PORT_START("IN7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not used */
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Remote Credit") PORT_IMPULSE(12) PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, "Jackpot" ) PORT_DIPLOCATION("SW1:8") /* DSW8 */
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_4)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sigma2k )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+ 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("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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("IN3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_HALF ) PORT_NAME("Half Gamble")
+ 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("IN4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Take")
+ 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("IN5")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+ 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("IN6")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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("IN7")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Credits In")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_4)
+ 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
+
+static INPUT_PORTS_START( piccolop )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN0-2") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2)
+
+ PORT_START("IN1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal/Take")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN1-5") PORT_CODE(KEYCODE_2_PAD)
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN2-2") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Switch")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+
+ PORT_START("IN3")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+
+ PORT_START("IN4")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Red")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+
+ PORT_START("IN5")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Black")
+
+ PORT_START("IN6")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN6-2") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN6-3") PORT_CODE(KEYCODE_5_PAD)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+
+ PORT_START("IN7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN) // lack of v-sync if low
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN7-2") PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN7-3") PORT_CODE(KEYCODE_7_PAD)
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Coin Refill") PORT_CODE(KEYCODE_R)
+INPUT_PORTS_END
+
+
+/*************************
+* Graphics Layouts *
+*************************/
+
+static const gfx_layout charlayout =
+{
+ 8, 8,
+ 1024,
+ 2,
+ { 0, 4 },
+ { 0, 1, 2, 3, 8, 9, 10, 11 },
+ { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
+ 16*8
+};
+
+static const gfx_layout s2k_charlayout =
+{
+ 8, 8,
+ 4096,
+ 2,
+ { 0, 4 },
+ { 0, 1, 2, 3, 8, 9, 10, 11 },
+ { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
+ 16*8
+};
+
+
+/******************************
+* Graphics Decode Information *
+******************************/
+
+static GFXDECODE_START( ampoker2 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 16 )
+GFXDECODE_END
+
+static GFXDECODE_START( sigma2k )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, s2k_charlayout, 0, 16 )
+GFXDECODE_END
+
+
+/*******************
+* AY8910 Interfase *
+*******************/
+
+static const ay8910_interface ay8910_config =
+{
+ AY8910_LEGACY_OUTPUT,
+ AY8910_DEFAULT_LOADS,
+ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL /* no ports used */
+};
+
+
+/*************************
+* Machine Driver *
+*************************/
+
+static MACHINE_CONFIG_START( ampoker2, ampoker2_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/2) /* 3 MHz */
+ MCFG_CPU_PROGRAM_MAP(ampoker2_map)
+ MCFG_CPU_IO_MAP(ampoker2_io_map)
+ MCFG_CPU_PERIODIC_INT(nmi_line_pulse, 1536)
+ MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(200)) /* 200 ms, measured */
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ /* if VBLANK is used, the watchdog timer stop to work.
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ */
+ MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(20*8, 56*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE(ampoker2)
+
+ MCFG_GFXDECODE(ampoker2)
+ MCFG_PALETTE_LENGTH(512)
+
+ MCFG_PALETTE_INIT(ampoker2)
+ MCFG_VIDEO_START(ampoker2)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("aysnd", AY8910,MASTER_CLOCK/4) /* 1.5 MHz, measured */
+ MCFG_SOUND_CONFIG(ay8910_config)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sigma2k, ampoker2 )
+
+ /* basic machine hardware */
+
+ /* video hardware */
+ MCFG_GFXDECODE(sigma2k)
+ MCFG_VIDEO_START(sigma2k)
+MACHINE_CONFIG_END
+
+
+/*************************
+* Rom Load *
+*************************/
+
+ROM_START( ampoker2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "poker9.003", 0x4000, 0x8000, CRC(a31221fc) SHA1(4a8bdd8ce8d5bff7e7cfc4ae91e27c1d366dc54d) )
+ ROM_COPY( "maincpu", 0x8000, 0x0000, 0x4000 ) /* poker9.003 contains the 16K halves swapped around */
+ ROM_LOAD( "poker9.002", 0x8000, 0x4000, CRC(bfde5bce) SHA1(c7c7ca2268694015e8ec673e8fa5c48043086d3f) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "poker9.028", 0x0000, 0x4000, CRC(65bccb40) SHA1(75f154a2aaf9f9be62e0e1dd8cbe630b9ea0145c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2b1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "airl-v00.512", 0x0000, 0x10000, CRC(e5953bf4) SHA1(291367431e3b21b57704228c63e4da853e6d25b7) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ampoker.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2b2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "rom9.u6", 0x0000, 0x10000, CRC(820a491d) SHA1(36654aacac010e7c086dd18d4e0ca5d959b9044f) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "rom0.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2b3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ampoker.u6", 0x0000, 0x10000, CRC(d7b055bd) SHA1(f5231d2ec80f740eabedaba07547ccbb977accc1) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ampoker.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2b4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "9.bin", 0x0000, 0x10000, CRC(657fa846) SHA1(1ef8fea81627b86aab6f682919d7432c57816e5f) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ampoker.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr95 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "amp95rus.u6", 0x0000, 0x10000, CRC(6ec74b2b) SHA1(2dca05bc111071f1407dd524b67b5a3dc5848c70) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ampoker.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+/*
+ iamp2 v28
+
+- Taiwanese board.
+- Original Novomatic program??
+- Gfx set seems from a bootleg...
+- No scroll in the attract.
+- Analysis page in operator/supervisor mode.
+- Min-Max bet, and a kind of 3-strings password given in supervisor mode.
+
+*/
+ROM_START( ampkr228 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "9.u6", 0x0000, 0x10000, CRC(747316cf) SHA1(7c2bb7a1a28e421a27f743eefe3c8878967ce4a9) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "0.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+
+ ROM_REGION( 0x400, "plds", 0 )
+ ROM_LOAD( "gal16v8a_bad.u41", 0x0000, 0x0117, CRC(a26ba7e6) SHA1(fd22ccb1ff3bf6956f300668ecd8cfe699182b39) )
+ ROM_LOAD( "gal16v8b.u8", 0x0200, 0x0117, CRC(7edb3276) SHA1(1302aec1d9703e6ce9da77fc7a0613e7eff1ccb5) )
+
+ROM_END
+
+ROM_START( pkrdewin )
+ ROM_REGION( 0x14000, "maincpu", 0 )
+ ROM_LOAD( "poker7.001", 0x4000, 0x10000, CRC(eca16b9e) SHA1(5063d733721457ab3b08caafbe8d33b2cbe4f88b) )
+ ROM_COPY( "maincpu", 0x8000, 0x0000, 0x4000 ) /* poker7.001 contains the 1st and 2nd 16K quarters swapped */
+ ROM_COPY( "maincpu", 0x10000, 0x8000, 0x4000 ) /* poker7.001 contains the 1st and 2nd 16K quarters swapped */
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "poker7.002", 0x0000, 0x4000, CRC(65bccb40) SHA1(75f154a2aaf9f9be62e0e1dd8cbe630b9ea0145c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( videomat ) /* polish bootleg */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "rom.bin", 0x0000, 0x10000, CRC(910cd941) SHA1(350ca70370c5082901343d0c0c1424729d77b006) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "rom0.u47", 0x0000, 0x4000, CRC(cefed6c7) SHA1(79591339eab2712b432dfe89929dbc97000a13d2) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( sigmapkr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sigmapkr.u6", 0x0000, 0x10000, CRC(aa3f429a) SHA1(8c82e86de7280590ba157860cbf9783f893f8554) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "sigmapkr.u47", 0x0000, 0x4000, CRC(49eb69a8) SHA1(22be5870d501d229aa56fb18146ec0d8f8eea72e) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an_spkr.u48", 0x0000, 0x0200, CRC(3d8683d0) SHA1(1d99cd89db1b3c8e14bdafab05d1f70ad5bc604d) )
+ROM_END
+
+ROM_START( sigma2k )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sigma2k.u6", 0x0000, 0x10000, CRC(608d1771) SHA1(0ec94d780565472c7e68da7e3ce19aea3f1ab4a5) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "sigma2k.u47", 0x0000, 0x10000, CRC(3ed7b9df) SHA1(788a90ffa6cb0bfebf607815a695a5afe930945c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an_s2k.u48", 0x0000, 0x0200, CRC(715361cc) SHA1(cac239399c9ec5d7498e49a906fb5b934ef7f4dc) )
+ROM_END
+
+/*
+
+Rabbit Poker, or Arizona Poker 1.1 ??
+
+American Poker 2 board
+program rom on small daughter board
+with GAL22V10 and PIC16F84A
+prom not dumped
+
+*/
+ROM_START( rabbitpk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "poldi_ren.u6", 0x0000, 0x10000, CRC(ef0d5b47) SHA1(5d209c803ab8ced08953d24202a364ce1aa677c2) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "poldi_graf.u47", 0x0000, 0x4000, CRC(f1807f39) SHA1(631645272c7508104749e0ff1357bd74098851d5) )
+
+ ROM_REGION( 0x200, "proms", 0 ) /* not dumped. using the ampoker2 one instead */
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+/*
+
+Piccolo Poker (Admiral, licenced by Novomatic).
+Seems a interesting American Poker II variant.
+
+Roms have swapped halves.
+Rechecked on PCB.
+
+*/
+ROM_START( piccolop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "v4.1.bin", 0x4000, 0x4000, CRC(ae092c43) SHA1(191e233310d59d3b4eb71c7081799835efcae069) )
+ ROM_CONTINUE( 0x0000, 0x4000)
+ ROM_LOAD( "v4.2.bin", 0xc000, 0x4000, CRC(69fb6fd5) SHA1(e95c2793aaa11b9501ca544dd0a045e8e7bc52bf) )
+ ROM_CONTINUE( 0x8000, 0x4000)
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "zei_8.11.bin", 0x4000, 0x4000, CRC(1b003672) SHA1(e58bd58023f332c30851204491b7e0bd7c5d9631) )
+ ROM_CONTINUE( 0x0000, 0x4000)
+
+ ROM_REGION( 0x200, "proms", 0 ) /* not dumped. using the ampoker2 one instead */
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+
+/*************************
+* Driver Init *
+*************************/
+
+static DRIVER_INIT( rabbitpk )
+{
+
+ UINT8 *rom = machine.region("maincpu")->base();
+ int size = machine.region("maincpu")->bytes();
+ int start = 0;
+ int i;
+
+ UINT8 dec_base[32] =
+ {
+ 0x00, 0x43, 0x45, 0x06, 0xc3, 0x80, 0x86, 0xc5,
+ 0x84, 0xc7, 0xc1, 0x82, 0x47, 0x04, 0x02, 0x41,
+ 0x86, 0xc5, 0xc3, 0x80, 0x45, 0x06, 0x00, 0x43,
+ 0x02, 0x41, 0x47, 0x04, 0xc1, 0x82, 0x84, 0xc7
+ };
+
+ for (i = start; i < size; i++)
+ {
+ rom[i] = BITSWAP8(rom[i], 1, 2, 5, 4, 3, 0, 7, 6) ^ dec_base[(i >> 2) & 0x1f];
+ }
+}
+
+static DRIVER_INIT( piccolop )
+{
+/*
+ The protection is based on a stuck bit at RAM offset $C416.
+
+ 1382: 41 ld b,c
+ 1383: 80 add a,b
+ 1384: 00 nop ------\
+ 1385: 00 nop | Obvious patch...
+ 1386: 00 nop | Dunno if was made originarily.
+ 1387: 00 nop ------/
+ 1388: 3E 08 ld a,$08
+ 138A: D3 37 out ($37),a ; Sets bit3 to keep happy the watchdog reset.
+ 138C: 32 01 C0 ld ($C001),a
+ 138F: 18 FE jr $138F ; INFINITE LOOP --- WTH???
+
+ 1541: 21 16 C4 ld hl,$C416 ; Load $C416 into HL...
+ 1544: CB 4E bit 1,(hl)
+ 1546: 7E ld a,(hl) ; Load the $C416 contents...
+ 1547: E6 E0 and $E0 ; AND $E0
+ 1549: FE 40 cp $40 ; Compare with $40
+ 154B: C2 88 13 jp nz,$1388 ; Jumps to stuck!
+
+ 154E: FD 21 AA C0 ld iy,$C0AA ; Else continue...
+ 1552: 11 16 C5 ld de,$C516
+ 1555: 21 88 57 ld hl,$5788
+ 1558: 06 08 ld b,$08
+ 155A: 1A ld a,(de)
+ 155B: BE cp (hl)
+ 155C: C2 13 2A jp nz,$2A13
+
+*/
+
+ UINT8 *rom = machine.region("maincpu")->base();
+
+ /* NOP'ing the mortal jump... */
+ rom[0x154b] = 0x00;
+ rom[0x154c] = 0x00;
+ rom[0x154d] = 0x00;
+
+}
+
+
+/*************************
+* Game Drivers *
+*************************/
+
+/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
+GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, 0, ROT0, "Novomatic", "American Poker II", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "American Poker II (bootleg, set 1)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "American Poker II (bootleg, set 2)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "American Poker II (bootleg, set 3)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "American Poker II (bootleg, set 4)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg?", "American Poker II (iamp2 v28)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, 0, ROT0, "bootleg", "American Poker 95", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "Poker De Win", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, 0, ROT0, "bootleg", "Videomat (Polish bootleg)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, 0, ROT0, "Sigma Inc.", "Sigma Poker", GAME_SUPPORTS_SAVE, layout_sigmapkr )
+GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, 0, ROT0, "Sigma Inc.", "Sigma Poker 2000", GAME_SUPPORTS_SAVE, layout_sigmapkr )
+GAME( 1990, piccolop, ampoker2, ampoker2, piccolop, piccolop, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", GAME_SUPPORTS_SAVE )