diff options
Diffstat (limited to 'src/mame/drivers/bfm_sc2.c')
-rw-r--r-- | src/mame/drivers/bfm_sc2.c | 3446 |
1 files changed, 3446 insertions, 0 deletions
diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c new file mode 100644 index 00000000000..19c9ac8f3f0 --- /dev/null +++ b/src/mame/drivers/bfm_sc2.c @@ -0,0 +1,3446 @@ +/**************************************************************************************** + + bfm_sc2.c + + Bellfruit scorpion2/3 driver, (under heavy construction !!!) + +***************************************************************************************** + + 30-12-2006: J Wallace: Fixed init routines. + 07-03-2006: El Condor: Recoded to more accurately represent the hardware setup. + 18-01-2006: Cleaned up for MAME inclusion + 19-08-2005: Re-Animator + +Standard scorpion2 memorymap + + + hex |r/w| D D D D D D D D | + location | | 7 6 5 4 3 2 1 0 | function +-----------+---+-----------------+----------------------------------------- +0000-1FFF |R/W| D D D D D D D D | RAM (8k) battery backed up +-----------+---+-----------------+----------------------------------------- +2000-20FF | W | D D D D D D D D | Reel 1 + 2 stepper latch +-----------+---+-----------------+----------------------------------------- +2000 | R | D D D D D D D D | vfd status +-----------+---+-----------------+----------------------------------------- +2100-21FF | W | D D D D D D D D | Reel 3 + 4 stepper latch +-----------+---+-----------------+----------------------------------------- +2200-22FF | W | D D D D D D D D | Reel 5 + 6 stepper latch +-----------+---+-----------------+----------------------------------------- +2300-231F | W | D D D D D D D D | output mux +-----------+---+-----------------+----------------------------------------- +2300-230B | R | D D D D D D D D | input mux +-----------+---+-----------------+----------------------------------------- +2320 |R/W| D D D D D D D D | dimas0 ? +-----------+---+-----------------+----------------------------------------- +2321 |R/W| D D D D D D D D | dimas1 ? +-----------+---+-----------------+----------------------------------------- +2322 |R/W| D D D D D D D D | dimas2 ? +-----------+---+-----------------+----------------------------------------- +2323 |R/W| D D D D D D D D | dimas3 ? +-----------+---+-----------------+----------------------------------------- +2324 |R/W| D D D D D D D D | expansion latch +-----------+---+-----------------+----------------------------------------- +2325 | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +2326 | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +2327 | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +2328 |R/W| D D D D D D D D | muxena +-----------+---+-----------------+----------------------------------------- +2329 | W | D D D D D D D D | Timer IRQ enable +-----------+---+-----------------+----------------------------------------- +232A |R/W| D D D D D D D D | blkdiv ? +-----------+---+-----------------+----------------------------------------- +232B | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +232C |R/W| D D D D D D D D | dimena ? +-----------+---+-----------------+----------------------------------------- +232D | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +232E | R | D D D D D D D D | chip status b0 = IRQ status +-----------+---+-----------------+----------------------------------------- +232F | W | D D D D D D D D | coin inhibits +-----------+---+-----------------+----------------------------------------- +2330 | W | D D D D D D D D | payout slide latch +-----------+---+-----------------+----------------------------------------- +2331 | W | D D D D D D D D | payout triac latch +-----------+---+-----------------+----------------------------------------- +2332 |R/W| D D D D D D D D | Watchdog timer +-----------+---+-----------------+----------------------------------------- +2333 | W | D D D D D D D D | electro mechanical meters +-----------+---+-----------------+----------------------------------------- +2334 | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +2335 | ? | D D D D D D D D | ??? +-----------+---+-----------------+----------------------------------------- +2336 |?/W| D D D D D D D D | dimcnt ? +-----------+---+-----------------+----------------------------------------- +2337 | W | D D D D D D D D | volume override +-----------+---+-----------------+----------------------------------------- +2338 | W | D D D D D D D D | payout chip select +-----------+---+-----------------+----------------------------------------- +2339 | W | D D D D D D D D | clkden ? +-----------+---+-----------------+----------------------------------------- +2400 |R/W| D D D D D D D D | uart1 (MC6850 compatible) control/status +-----------+---+-----------------+----------------------------------------- +2500 |R/W| D D D D D D D D | uart1 (MC6850 compatible) data +-----------+---+-----------------+----------------------------------------- +2600 |R/W| D D D D D D D D | uart2 (MC6850 compatible) control/status +-----------+---+-----------------+----------------------------------------- +2700 |R/W| D D D D D D D D | uart2 (MC6850 compatible) data +-----------+---+-----------------+----------------------------------------- +2800 |R/W| D D D D D D D D | vfd1 +-----------+---+-----------------+----------------------------------------- +2900 |R/W| D D D D D D D D | reset vfd1 + vfd2 +-----------+---+-----------------+----------------------------------------- +2D00 |R/W| D D D D D D D D | ym2413 control +-----------+---+-----------------+----------------------------------------- +2D01 |R/W| D D D D D D D D | ym2413 data +-----------+---+-----------------+----------------------------------------- +2E00 |R/W| D D D D D D D D | ROM page latch +-----------+---+-----------------+----------------------------------------- +2F00 |R/W| D D D D D D D D | vfd2 +-----------+---+-----------------+----------------------------------------- +3FFE | R | D D D D D D D D | direct input1 +-----------+---+-----------------+----------------------------------------- +3FFF | R | D D D D D D D D | direct input2 +-----------+---+-----------------+----------------------------------------- +2A00 | W | D D D D D D D D | NEC uPD7759 data +-----------+---+-----------------+----------------------------------------- +2B00 | W | D D D D D D D D | NEC uPD7759 reset +-----------+---+-----------------+----------------------------------------- +4000-5FFF | R | D D D D D D D D | ROM (8k) +-----------+---+-----------------+----------------------------------------- +6000-7FFF | R | D D D D D D D D | Paged ROM (8k) + | | | page 0 : rom area 0x0000 - 0x1FFF + | | | page 1 : rom area 0x2000 - 0x3FFF + | | | page 2 : rom area 0x4000 - 0x5FFF + | | | page 3 : rom area 0x6000 - 0x7FFF +-----------+---+-----------------+----------------------------------------- +8000-FFFF | R | D D D D D D D D | ROM (32k) +-----------+---+-----------------+----------------------------------------- + +Adder hardware: + Games supported: + * Quintoon (2 sets Dutch, 2 sets UK) + * Pokio (1 set) + * Paradice (1 set) + * Pyramid (1 set) + * Slots (1 set Dutch, 2 sets Belgian) + * Golden Crown (1 Set) + + Known issues: + * Need to find the 'missing' game numbers + * Fix RS232 protocol +***************************************************************************/ + +#include "driver.h" +#include "cpu/m6809/m6809.h" + +#include "video/bfm_adr2.h" + +#include "sound/2413intf.h" +#include "sound/upd7759.h" + +/* fruit machines only */ +//#include "video/bfm_dm01.h" +//#include "video/awpvid.h" +#include "machine/steppers.h" // stepper motor + +#include "machine/bfm_bd1.h" // vfd +#include "machine/meters.h" + +#include "bfm_sc2.lh" +#include "gldncrwn.lh" +#include "paradice.lh" +#include "pokio.lh" +#include "pyramid.lh" +#include "quintoon.lh" +#include "sltblgpo.lh" +#include "sltblgtk.lh" +#include "slots.lh" + +#ifdef MAME_DEBUG +#define LOG_SERIAL(x) logerror x // log serial communication between mainboard (scorpion2) and videoboard (adder2) +#define UART_LOG(x) logerror x //enable UART data logging +#define LOG(x) logerror x +#else +#define LOG_SERIAL(x) +#define UART_LOG(x) +#define LOG(x) +#endif + +// local prototypes /////////////////////////////////////////////////////// + +static int get_scorpion2_uart_status(void); // retrieve status of uart on scorpion2 board + +static int read_e2ram(void); +static void e2ram_reset(void); + +// global vars //////////////////////////////////////////////////////////// + +static int sc2gui_update_mmtr; // bit pattern which mechanical meter needs updating + +// local vars ///////////////////////////////////////////////////////////// + +static UINT8 *nvram; // pointer to NVRAM +static size_t nvram_size; // size of NVRAM +static UINT8 key[16]; // security device on gamecard (video games only) + +static UINT8 e2ram[1024]; // x24C08 e2ram + +static int mmtr_latch; // mechanical meter latch +static int triac_latch; // payslide triac latch +static int vfd1_latch; // vfd1 latch +static int vfd2_latch; // vfd2 latch +static int irq_status; // custom chip IRQ status +static int optic_pattern; // reel optics +static int uart1_data; +static int uart2_data; +static int data_to_uart1; +static int data_to_uart2; +static int locked; // hardware lock/unlock status (0=unlocked) +static int is_timer_enabled; +static int reel_changed; +static int coin_inhibits; +static int irq_timer_stat; +static int expansion_latch; +static int global_volume; // 0-31 +static int volume_override; // 0 / 1 + +static int sc2_show_door; // flag <>0, show door state +static int sc2_door_state; // door switch strobe/data + +static int reel12_latch; +static int reel34_latch; +static int reel56_latch; +static int pay_latch; + +static int slide_states[6]; +static int slide_pay_sensor[6]; + +static int has_hopper; // flag <>0, scorpion2 board has hopper connected + +static int triac_select; + +static int hopper_running; // flag <>0, hopper is running used in some scorpion2 videogames +static int hopper_coin_sense; +static int timercnt; // timer counts up every IRQ (=1000 times a second) + +static int watchdog_cnt; +static int watchdog_kicked; + +// user interface stuff /////////////////////////////////////////////////// + +static UINT8 Lamps[256]; +static UINT8 sc2_Inputs[64]; + +static UINT8 input_override[64];// bit pattern, bit set means this input is overriden and cannot be changed with switches + +/* INPUTS layout + + b7 b6 b5 b4 b3 b2 b1 b0 + + 82 81 80 04 03 02 01 00 0 + 92 91 90 14 13 12 11 10 1 + A2 A1 A0 24 23 22 21 20 2 + B2 B1 B0 34 33 32 31 30 3 + -- 84 83 44 43 42 41 40 4 + -- 94 93 54 53 52 51 50 5 + -- A4 A3 64 63 62 61 60 6 + -- B4 B3 74 73 72 71 70 7 + + B7 B6 B5 B4 B3 B2 B1 B0 + 0 1 1 0 0 0 + +*/ +/////////////////////////////////////////////////////////////////////////// + +static void send_to_adder(int data) +{ + adder2_data_from_sc2 = 1; + adder2_sc2data = data; + + adder2_acia_triggered = 1; + cpunum_set_input_line(1, M6809_IRQ_LINE, HOLD_LINE ); + + LOG_SERIAL(("sadder %02X (%c)\n",data, data )); +} + +/////////////////////////////////////////////////////////////////////////// + +static int receive_from_adder(void) +{ + int data = adder2_data; + adder2_data_to_sc2 = 0; + + LOG_SERIAL(("radder: %02X(%c)\n",data, data )); + + return data; +} + +/////////////////////////////////////////////////////////////////////////// + +static int get_scorpion2_uart_status(void) +{ + int status = 0; + + if ( adder2_data_to_sc2 ) status |= 0x01; // receive buffer full + if ( !adder2_data_from_sc2) status |= 0x02; // transmit buffer empty + + return status; +} + +/////////////////////////////////////////////////////////////////////////// +// called if board is reset /////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// + +static void on_scorpion2_reset(void) +{ + vfd1_latch = 0; + vfd2_latch = 0; + mmtr_latch = 0; + triac_latch = 0; + irq_status = 0; + is_timer_enabled = 1; + coin_inhibits = 0; + irq_timer_stat = 0; + expansion_latch = 0; + global_volume = 0; + volume_override = 0; + triac_select = 0; + pay_latch = 0; + + reel12_latch = 0; + reel34_latch = 0; + reel56_latch = 0; + + hopper_running = 0; // for video games + hopper_coin_sense = 0; + sc2gui_update_mmtr= 0xFF; + + slide_states[0] = 0; + slide_states[1] = 0; + slide_states[2] = 0; + slide_states[3] = 0; + slide_states[4] = 0; + slide_states[5] = 0; + + watchdog_cnt = 0; + watchdog_kicked = 0; + + + BFM_BD1_reset(0); // reset display1 + BFM_BD1_reset(1); // reset display2 + + e2ram_reset(); + + sndti_reset(SOUND_YM2413, 0); + + // reset stepper motors ///////////////////////////////////////////////// + { +/* Although the BFM video games don't use stepper motors to control reels, +the connections are still present on the board, and some of the programs still +send data to them, although obviously there's no response. */ + + int pattern =0, i; + + for ( i = 0; i < 6; i++) + { + Stepper_reset_position(i); + if ( Stepper_optic_state(i) ) pattern |= 1<<i; + } + + optic_pattern = pattern; + + } + + locked = 0; + + // make sure no inputs are overidden //////////////////////////////////// + memset(input_override, 0, sizeof(input_override)); + + // init rom bank //////////////////////////////////////////////////////// + + { + UINT8 *rom = memory_region(REGION_CPU1); + + memory_configure_bank(1, 0, 1, &rom[0x10000], 0); + memory_configure_bank(1, 1, 3, &rom[0x02000], 0x02000); + + memory_set_bank(1,3); + } +} + +/////////////////////////////////////////////////////////////////////////// + +static void Scorpion2_SetSwitchState(int strobe, int data, int state) +{ + if ( strobe < 11 && data < 8 ) + { + if ( strobe < 8 ) + { + input_override[strobe] |= (1<<data); + + if ( state ) sc2_Inputs[strobe] |= (1<<data); + else sc2_Inputs[strobe] &= ~(1<<data); + } + else + { + if ( data > 2 ) + { + input_override[strobe-8+4] |= (1<<(data+2)); + + if ( state ) sc2_Inputs[strobe-8+4] |= (1<<(data+2)); + else sc2_Inputs[strobe-8+4] &= ~(1<<(data+2)); + } + else + { + input_override[strobe-8] |= (1<<(data+5)); + + if ( state ) sc2_Inputs[strobe-8] |= (1 << (data+5)); + else sc2_Inputs[strobe-8] &= ~(1 << (data+5)); + } + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static int Scorpion2_GetSwitchState(int strobe, int data) +{ + int state = 0; + + if ( strobe < 11 && data < 8 ) + { + if ( strobe < 8 ) + { + state = (sc2_Inputs[strobe] & (1<<data) ) ? 1 : 0; + } + else + { + if ( data > 2 ) + { + state = (sc2_Inputs[strobe-8+4] & (1<<(data+2)) ) ? 1 : 0; + } + else + { + state = (sc2_Inputs[strobe-8] & (1 << (data+5)) ) ? 1 : 0; + } + } + } + return state; +} + +/////////////////////////////////////////////////////////////////////////// + +static NVRAM_HANDLER( bfm_sc2 ) +{ + static const UINT8 init_e2ram[10] = { 1, 4, 10, 20, 0, 1, 1, 4, 10, 20 }; + if ( read_or_write ) + { // writing + mame_fwrite(file,nvram,nvram_size); + mame_fwrite(file,e2ram,sizeof(e2ram)); + } + else + { // reading + if ( file ) + { + mame_fread(file,nvram,nvram_size); + mame_fread(file,e2ram,sizeof(e2ram)); + } + else + { + memset(nvram,0x00,nvram_size); + memset(e2ram,0x00,sizeof(e2ram)); + memcpy(e2ram,init_e2ram,sizeof(init_e2ram)); + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( ram_r ) +{ + return nvram[offset]; // read from RAM +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( ram_w ) +{ + nvram[offset] = data; // write to RAM +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( watchdog_w ) +{ + watchdog_kicked = 1; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( bankswitch_w ) +{ + memory_set_bank(1,data & 0x03); +} + +/////////////////////////////////////////////////////////////////////////// + +static INTERRUPT_GEN( timer_irq ) +{ + timercnt++; + + if ( watchdog_kicked ) + { + watchdog_cnt = 0; + watchdog_kicked = 0; + } + else + { + watchdog_cnt++; + if ( watchdog_cnt > 2 ) // this is a hack, i don't know what the watchdog timeout is, 3 IRQ's works fine + { // reset board + mame_schedule_soft_reset(Machine); // reset entire machine. CPU 0 should be enough, but that doesn't seem to work !! + on_scorpion2_reset(); + return; + } + } + + if ( is_timer_enabled ) + { + irq_timer_stat = 0x01; + irq_status = 0x02; + + cpunum_set_input_line(0, M6809_IRQ_LINE, HOLD_LINE ); + } +} + +/////////////////////////////////////////////////////////////////////////// + +#ifdef UNUSED_FUNCTION +static WRITE8_HANDLER( reel12_w ) +{ + reel12_latch = data; + + if ( Stepper_update(0, data ) ) reel_changed |= 0x01; + if ( Stepper_update(1, data>>4) ) reel_changed |= 0x02; + + if ( Stepper_optic_state(0) ) optic_pattern |= 0x01; + else optic_pattern &= ~0x01; + if ( Stepper_optic_state(1) ) optic_pattern |= 0x02; + else optic_pattern &= ~0x02; +} +#endif + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( reel12_vid_w ) // in a video cabinet this is used to drive a hopper +{ + reel12_latch = data; + + if ( has_hopper ) + { + int oldhop = hopper_running; + + if ( data & 0x01 ) + { // hopper power + if ( data & 0x02 ) + { + hopper_running = 1; + } + else + { + hopper_running = 0; + } + } + else + { + //hopper_coin_sense = 0; + hopper_running = 0; + } + + if ( oldhop != hopper_running ) + { + hopper_coin_sense = 0; + oldhop = hopper_running; + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( reel34_w ) +{ + reel34_latch = data; + + if ( Stepper_update(2, data ) ) reel_changed |= 0x04; + if ( Stepper_update(3, data>>4) ) reel_changed |= 0x08; + + if ( Stepper_optic_state(2) ) optic_pattern |= 0x04; + else optic_pattern &= ~0x04; + if ( Stepper_optic_state(3) ) optic_pattern |= 0x08; + else optic_pattern &= ~0x08; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( reel56_w ) +{ + reel56_latch = data; + + if ( Stepper_update(4, data ) ) reel_changed |= 0x10; + if ( Stepper_update(5, data>>4) ) reel_changed |= 0x20; + + if ( Stepper_optic_state(4) ) optic_pattern |= 0x10; + else optic_pattern &= ~0x10; + if ( Stepper_optic_state(5) ) optic_pattern |= 0x20; + else optic_pattern &= ~0x20; +} + +/////////////////////////////////////////////////////////////////////////// +// mechanical meters ////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( mmtr_w ) +{ + int changed = mmtr_latch ^ data; + long cycles = ATTOTIME_TO_CYCLES(0, timer_get_time() ); + + mmtr_latch = data; + + if ( changed & 0x01 ) + { + if ( Mechmtr_update(0, cycles, data & 0x01 ) ) + { + sc2gui_update_mmtr |= 0x01; + } + } + + if ( changed & 0x02 ) + { + if ( Mechmtr_update(1, cycles, data & 0x02 ) ) + { + sc2gui_update_mmtr |= 0x02; + } + } + + if ( changed & 0x04 ) + { + if ( Mechmtr_update(2, cycles, data & 0x04 ) ) + { + sc2gui_update_mmtr |= 0x04; + } + } + + if ( changed & 0x08 ) + { + if ( Mechmtr_update(3, cycles, data & 0x08 ) ) + { + sc2gui_update_mmtr |= 0x08; + } + } + + + if ( changed & 0x10 ) + { + if ( Mechmtr_update(4, cycles, data & 0x10 ) ) + { + sc2gui_update_mmtr |= 0x10; + } + } + + if ( changed & 0x20 ) + { + if ( Mechmtr_update(5, cycles, data & 0x20 ) ) + { + sc2gui_update_mmtr |= 0x20; + } + } + + if ( changed & 0x40 ) + { + if ( Mechmtr_update(6, cycles, data & 0x40 ) ) + { + sc2gui_update_mmtr |= 0x40; + } + } + + if ( changed & 0x80 ) + { + if ( Mechmtr_update(7, cycles, data & 0x80 ) ) + { + sc2gui_update_mmtr |= 0x80; + } + } + + if ( data & 0x1F ) cpunum_set_input_line(0, M6809_FIRQ_LINE, PULSE_LINE ); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( mux_output_w ) +{ + int i; + int off = offset<<3; + + for (i=0; i<8; i++) + { + Lamps[ off+i ] = (data & (1 << i)) != 0; + } + if (offset == 0) // update all lamps after strobe 0 has been updated (HACK) + { + for ( i = 0; i < 256; i++ ) + { + output_set_lamp_value(i, Lamps[i]); + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( mux_input_r ) +{ + int result = 0xFF,t1,t2; + + if (offset < 8) + { + int idx = (offset & 4) ? 4 : 8; + t1 = input_override[offset]; // strobe 0-7 data 0-4 + t2 = input_override[offset+idx]; // strobe 8-B data 0-4 + + t1 = (sc2_Inputs[offset] & t1) | ( ( readinputport(offset+1) & ~t1) & 0x1F); + if (idx == 8) + t2 = (sc2_Inputs[offset+8] & t2) | ( ( readinputport(offset+1+8) & ~t2) << 5); + else + t2 = (sc2_Inputs[offset+4] & t2) | ( ( ( readinputport(offset+1+4) & ~t2) << 2) & 0x60); + + sc2_Inputs[offset] = (sc2_Inputs[offset] & ~0x1F) | t1; + sc2_Inputs[offset+idx] = (sc2_Inputs[offset+idx] & ~0x60) | t2; + result = t1 | t2; + } + + return result; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( unlock_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( dimas_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( dimcnt_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( unknown_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( volume_override_w ) +{ + int old = volume_override; + + volume_override = data?1:0; + + if ( old != volume_override ) + { + float percent = volume_override?1.0:(32-global_volume)/32.0; + + sndti_set_output_gain(SOUND_YM2413, 0, 0, percent); + sndti_set_output_gain(SOUND_YM2413, 0, 1, percent); + sndti_set_output_gain(SOUND_UPD7759, 0, 0, percent); + } +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( nec_reset_w ) +{ + upd7759_start_w(0, 0); + upd7759_reset_w(0, data); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( nec_latch_w ) +{ + int bank = 0; + + if ( data & 0x80 ) bank |= 0x01; + if ( expansion_latch & 2 ) bank |= 0x02; + + upd7759_set_bank_base(0, bank*0x20000); + + upd7759_port_w(0, data&0x3F); // setup sample + upd7759_start_w(0, 0); + upd7759_start_w(0, 1); // start +} + +/////////////////////////////////////////////////////////////////////////// + +#ifdef UNUSED_FUNCTION +static READ8_HANDLER( vfd_status_r ) +{ + // b7 = NEC busy + // b6 = alpha busy (also matrix board) + // b5 - b0 = reel optics + + int result = optic_pattern; + + if ( !upd7759_busy_r(0) ) result |= 0x80; + + return result; +} +#endif + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( vfd_status_hop_r ) // on video games, hopper inputs are connected to this +{ + // b7 = NEC busy + // b6 = alpha busy (also matrix board) + // b5 - b0 = reel optics + + int result = 0; + + if ( has_hopper ) + { + result |= 0x04; // hopper high level + result |= 0x08; // hopper low level + + result |= 0x01|0x02; + + if ( hopper_running ) + { + result &= ~0x01; // set motor running input + + if ( timercnt & 0x04 ) hopper_coin_sense ^= 1; // toggle coin seen + + if ( hopper_coin_sense ) result &= ~0x02; // update coin seen input + } + } + + if ( !upd7759_busy_r(0) ) result |= 0x80; // update sound busy input + + return result; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( expansion_latch_w ) +{ + int changed = expansion_latch^data; + + expansion_latch = data; + + // bit0, 1 = lamp mux disabled, 0 = lamp mux enabled + // bit1, ? used in Del's millions + // bit2, digital volume pot meter, clock line + // bit3, digital volume pot meter, direction line + // bit4, ? + // bit5, ? + // bit6, ? used in Del's millions + // bit7 ? + + if ( changed & 0x04) + { // digital volume clock line changed + if ( !(data & 0x04) ) + { // changed from high to low, + if ( !(data & 0x08) ) + { + if ( global_volume < 31 ) global_volume++; //0-31 expressed as 1-32 + } + else + { + if ( global_volume > 0 ) global_volume--; + } + + { + float percent = volume_override?1.0:(32-global_volume)/32.0; + + sndti_set_output_gain(SOUND_YM2413, 0, 0, percent); + sndti_set_output_gain(SOUND_YM2413, 0, 1, percent); + sndti_set_output_gain(SOUND_UPD7759, 0, 0, percent); + } + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( expansion_latch_r ) +{ + return 0; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( muxena_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( timerirq_w ) +{ + is_timer_enabled = data & 1; +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( timerirqclr_r ) +{ + irq_timer_stat = 0; + irq_status = 0; + + return 0; +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( irqstatus_r ) +{ + int result = irq_status | irq_timer_stat | 0x80; // 0x80 = ~MUXERROR + + irq_timer_stat = 0; + + return result; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( coininhib_w ) +{ + int changed = coin_inhibits^data,i,p; + + coin_inhibits = data; + + p = 0x01; + i = 0; + + while ( i < 8 && changed ) + { + if ( changed & p ) + { // this inhibit line has changed + coin_lockout_w(i, (~data & p) ); // update lockouts + changed &= ~p; + } + + p <<= 1; + i++; + } +} + +/////////////////////////////////////////////////////////////////////////// + +#ifdef UNUSED_FUNCTION +static READ8_HANDLER( direct_input_r ) +{ + return 0; +} +#endif + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( coin_input_r ) +{ + return input_port_0_r(0); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( payout_latch_w ) +{ + pay_latch = data; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( payout_triac_w ) +{ + if ( triac_select == 0x57 ) + { + int slide = 0; + + switch ( pay_latch ) + { + case 0x01: slide = 1; + break; + + case 0x02: slide = 2; + break; + + case 0x04: slide = 3; + break; + + case 0x08: slide = 4; + break; + + case 0x10: slide = 5; + break; + + case 0x20: slide = 6; + break; + } + + if ( slide ) + { + if ( data == 0x4D ) + { + if ( !slide_states[slide] ) + { + if ( slide_pay_sensor[slide] ) + { + int strobe = slide_pay_sensor[slide]>>4, data = slide_pay_sensor[slide]&0x0F; + + Scorpion2_SetSwitchState(strobe, data, 0); + } + slide_states[slide] = 1; + } + } + else + { + if ( slide_states[slide] ) + { + if ( slide_pay_sensor[slide] ) + { + int strobe = slide_pay_sensor[slide]>>4, data = slide_pay_sensor[slide]&0x0F; + + Scorpion2_SetSwitchState(strobe, data, 1); + } + slide_states[slide] = 0; + } + } + } + } +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( payout_select_w ) +{ + triac_select = data; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( vfd1_data_w ) +{ + vfd1_latch = data; + BFM_BD1_newdata(0, data); + BFM_BD1_draw(0); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( vfd2_data_w ) +{ + vfd2_latch = data; + BFM_BD1_newdata(1, data); + BFM_BD1_draw(1); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( vfd_reset_w ) +{ + BFM_BD1_reset(0); // reset both VFD's + BFM_BD1_reset(1); + BFM_BD1_draw(0); + BFM_BD1_draw(1); +} + +/////////////////////////////////////////////////////////////////////////// +// serial port //////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( uart1stat_r ) +{ + int status = 0x06; + + if ( data_to_uart1 ) status |= 0x01; + if ( !data_to_uart2 ) status |= 0x02; + + return status; +} +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( uart1data_r ) +{ + return uart1_data; +} + +////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( uart1ctrl_w ) +{ + UART_LOG(("uart1ctrl:%x\n", data)); +} +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( uart1data_w ) +{ + data_to_uart2 = 1; + uart1_data = data; + UART_LOG(("uart1:%x\n", data)); +} +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( uart2stat_r ) +{ + int status = 0x06; + + if ( data_to_uart2 ) status |= 0x01; + if ( !data_to_uart1 ) status |= 0x02; + + return status; +} +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( uart2data_r ) +{ + return uart2_data; +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( uart2ctrl_w ) +{ + UART_LOG(("uart2ctrl:%x\n", data)); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( uart2data_w ) +{ + data_to_uart1 = 1; + uart2_data = data; + UART_LOG(("uart2:%x\n", data)); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( vid_uart_tx_w ) +{ + send_to_adder(data); +} + +/////////////////////////////////////////////////////////////////////////// + +static WRITE8_HANDLER( vid_uart_ctrl_w ) +{ +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( vid_uart_rx_r ) +{ + return receive_from_adder(); +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( vid_uart_ctrl_r ) +{ + return get_scorpion2_uart_status(); +} + +/////////////////////////////////////////////////////////////////////////// + +static READ8_HANDLER( key_r ) +{ + int result = key[ offset ]; + + if ( offset == 7 ) + { + result = (result & 0xFE) | read_e2ram(); + } + + return result; +} + +/////////////////////////////////////////////////////////////////////////// +/* + +The X24C08 is a CMOS 8,192 bit serial EEPROM, +internally organized 1024 x 8. The X24C08 features a +serial interface and software protocol allowing operation +on a simple two wire bus. + +*/ + + +static int e2reg; +static int e2state; +static int e2cnt; +static int e2data; +static int e2address; +static int e2rw; +static int e2data_pin; +static int e2dummywrite; + +static int e2data_to_read; + +#define SCL 0x01 //SCL pin (clock) +#define SDA 0x02 //SDA pin (data) + + +static void e2ram_reset(void) +{ + e2reg = 0; + e2state = 0; + e2address = 0; + e2rw = 0; + e2data_pin = 0; + e2data = (SDA|SCL); + e2dummywrite = 0; + e2data_to_read = 0; +} + +static int recdata(int changed, int data) +{ + int res = 1; + + if ( e2cnt < 8 ) + { + res = 0; + + if ( (changed & SCL) && (data & SCL) ) + { // clocked in new data + int pattern = 1 << (7-e2cnt); + + if ( data & SDA ) e2data |= pattern; + else e2data &= ~pattern; + + e2data_pin = e2data_to_read & 0x80 ? 1 : 0; + + e2data_to_read <<= 1; + + LOG(("e2d pin= %d\n", e2data_pin)); + + e2cnt++; + if ( e2cnt >= 8 ) + { + res++; + } + } + } + + return res; +} + +static int recAck(int changed, int data) +{ + int result = 0; + + if ( (changed & SCL) && (data & SCL) ) + { + if ( data & SDA ) + { + result = 1; + } + else + { + result = -1; + } + } + return result; +} + +// +static WRITE8_HANDLER( e2ram_w ) +{ // b0 = clock b1 = data + + int changed, ack; + + data ^= (SDA|SCL); // invert signals + + changed = (e2reg^data) & 0x03; + + e2reg = data; + + if ( changed ) + { + while ( 1 ) + { + if ( ( (changed & SDA) && !(data & SDA)) && // 1->0 on SDA AND + ( !(changed & SCL) && (data & SCL) ) // SCL=1 and not changed + ) + { // X24C08 Start condition (1->0 on SDA while SCL=1) + e2dummywrite = ( e2state == 5 ); + + LOG(("e2ram: c:%d d:%d Start condition dummywrite=%d\n", (data & SCL)?1:0, (data&SDA)?1:0, e2dummywrite )); + + e2state = 1; // ready for commands + e2cnt = 0; + e2data = 0; + break; + } + + if ( ( (changed & SDA) && (data & SDA)) && // 0->1 on SDA AND + ( !(changed & SCL) && (data & SCL) ) // SCL=1 and not changed + ) + { // X24C08 Stop condition (0->1 on SDA while SCL=1) + LOG(("e2ram: c:%d d:%d Stop condition\n", (data & SCL)?1:0, (data&SDA)?1:0 )); + e2state = 0; + e2data = 0; + break; + } + + switch ( e2state ) + { + case 1: // Receiving address + R/W bit + + if ( recdata(changed, data) ) + { + e2address = (e2address & 0x00FF) | ((e2data>>1) & 0x03) << 8; + e2cnt = 0; + e2rw = e2data & 1; + + LOG(("e2ram: Slave address received !! device id=%01X device adr=%01d high order adr %0X RW=%d) %02X\n", + e2data>>4, (e2data & 0x08)?1:0, (e2data>>1) & 0x03, e2rw , e2data )); + + e2state = 2; + } + break; + + case 2: // Receive Acknowledge + + ack = recAck(changed,data); + if ( ack ) + { + e2data_pin = 0; + + if ( ack < 0 ) + { + LOG(("ACK = 0\n")); + e2state = 0; + } + else + { + LOG(("ACK = 1\n")); + if ( e2dummywrite ) + { + e2dummywrite = 0; + + e2data_to_read = e2ram[e2address]; + + if ( e2rw & 1 ) e2state = 7; // read data + else e2state = 0; //?not sure + } + else + { + if ( e2rw & 1 ) e2state = 7; // reading + else e2state = 3; // writing + } + switch ( e2state ) + { + case 7: + LOG(("read address %04X\n",e2address)); + e2data_to_read = e2ram[e2address]; + break; + case 3: + LOG(("write, awaiting address\n")); + break; + default: + LOG(("?unknow action %04X\n",e2address)); + break; + } + } + e2data = 0; + } + break; + + case 3: // writing data, receiving address + + if ( recdata(changed, data) ) + { + e2data_pin = 0; + e2address = (e2address & 0xFF00) | e2data; + + LOG(("write address = %04X waiting for ACK\n", e2address)); + e2state = 4; + e2cnt = 0; + e2data = 0; + } + break; + + case 4: // wait ack, for write address + + ack = recAck(changed,data); + if ( ack ) + { + e2data_pin = 0; // pin=0, no error !! + + if ( ack < 0 ) + { + e2state = 0; + LOG(("ACK = 0, cancel write\n" )); + } + else + { + e2state = 5; + LOG(("ACK = 1, awaiting data to write\n" )); + } + } + break; + + case 5: // receive data to write + if ( recdata(changed, data) ) + { + LOG(("write data = %02X received, awaiting ACK\n", e2data)); + e2cnt = 0; + e2state = 6; // wait ack + } + break; + + case 6: // Receive Acknowlede after writing + + ack = recAck(changed,data); + if ( ack ) + { + if ( ack < 0 ) + { + e2state = 0; + LOG(("ACK=0, write canceled\n")); + } + else + { + LOG(("ACK=1, writing %02X to %04X\n", e2data, e2address)); + + e2ram[e2address] = e2data; + + e2address = (e2address & ~0x000F) | ((e2address+1)&0x0F); + + e2state = 5; // write next address + } + } + break; + + case 7: // receive address from read + + if ( recdata(changed, data) ) + { + //e2data_pin = 0; + + LOG(("address read, data = %02X waiting for ACK\n", e2data )); + + e2state = 8; + } + break; + + case 8: + + if ( recAck(changed, data) ) + { + e2state = 7; + + e2address = (e2address & ~0x0F) | ((e2address+1)&0x0F); // lower 4 bits wrap around + + e2data_to_read = e2ram[e2address]; + + LOG(("ready for next address %04X\n", e2address)); + + e2cnt = 0; + e2data = 0; + } + break; + + case 0: + + LOG(("e2ram: ? c:%d d:%d\n", (data & SCL)?1:0, (data&SDA)?1:0 )); + break; + } + break; + } + } +} + +static int read_e2ram(void) +{ + LOG(("e2ram: r %d (%02X) \n", e2data_pin, e2data_to_read )); + + return e2data_pin; +} + + +static const UINT16 AddressDecode[]= +{ + 0x0800,0x1000,0x0001,0x0004,0x0008,0x0020,0x0080,0x0200, + 0x0100,0x0040,0x0002,0x0010,0x0400,0x2000,0x4000,0x8000, + 0 +}; + +static const UINT8 DataDecode[]= +{ + 0x02,0x08,0x20,0x40,0x10,0x04,0x01,0x80, + 0 +}; + +static UINT8 codec_data[256]; + +/////////////////////////////////////////////////////////////////////////// +static void decode_mainrom(int rom_region) +{ + UINT8 *tmp, *rom; + + rom = memory_region(rom_region); + + tmp = malloc_or_die(0x10000); + { + int i; + long address; + + memcpy(tmp, rom, 0x10000); + + for ( i = 0; i < 256; i++ ) + { + UINT8 data,pattern,newdata,*tab; + data = i; + + tab = (UINT8*)DataDecode; + pattern = 0x01; + newdata = 0; + + do + { + newdata |= data & pattern ? *tab : 0; + pattern <<= 1; + } while ( *(++tab) ); + + codec_data[i] = newdata; + } + + for ( address = 0; address < 0x10000; address++) + { + int newaddress,pattern; + UINT16 *tab; + + tab = (UINT16*)AddressDecode; + pattern = 0x0001; + newaddress = 0; + do + { + newaddress |= address & pattern ? *tab : 0; + pattern <<= 1; + } while ( *(++tab) ); + + rom[newaddress] = codec_data[ tmp[address] ]; + } + free(tmp); + } +} + +// machine init (called only once) //////////////////////////////////////// + +static MACHINE_RESET( init ) +{ + // reset adder2 + machine_reset_adder2(machine); + + // reset the board ////////////////////////////////////////////////////// + + on_scorpion2_reset(); + BFM_BD1_init(0); + BFM_BD1_init(1); + //BFM_dm01_reset(); No known video based game has a Matrix board +} + +static VIDEO_UPDATE( addersc2 ) +{ + if ( sc2_show_door ) + { + output_set_value("door",( Scorpion2_GetSwitchState(sc2_door_state>>4, sc2_door_state & 0x0F) ) ); + } + + return video_update_adder2(machine,screen,bitmap,cliprect); +} + +// memory map for scorpion2 board video addon ///////////////////////////// + +static ADDRESS_MAP_START( memmap_vid, ADDRESS_SPACE_PROGRAM, 8 ) + + AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ram_r, ram_w) AM_BASE(&nvram) AM_SIZE(&nvram_size)// 8k RAM + AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_hop_r) // vfd status register + AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_vid_w) + AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w) + AM_RANGE(0x2200, 0x22FF) AM_WRITE(reel56_w) + + AM_RANGE(0x2300, 0x230B) AM_READ(mux_input_r) // mux inputs + AM_RANGE(0x2300, 0x231F) AM_WRITE(mux_output_w) // mux outputs + AM_RANGE(0x2320, 0x2323) AM_WRITE(dimas_w) // ?unknown dim related + + AM_RANGE(0x2324, 0x2324) AM_READWRITE(expansion_latch_r, expansion_latch_w) + AM_RANGE(0x2325, 0x2327) AM_WRITE(unknown_w) // ?unknown + AM_RANGE(0x2328, 0x2328) AM_WRITE(muxena_w) // mux enable + AM_RANGE(0x2329, 0x2329) AM_READWRITE(timerirqclr_r, timerirq_w) + AM_RANGE(0x232A, 0x232D) AM_WRITE(unknown_w) // ?unknown + AM_RANGE(0x232E, 0x232E) AM_READ(irqstatus_r) + AM_RANGE(0x232F, 0x232F) AM_WRITE(coininhib_w) // coin inhibits + AM_RANGE(0x2330, 0x2330) AM_WRITE(payout_latch_w) + AM_RANGE(0x2331, 0x2331) AM_WRITE(payout_triac_w) + AM_RANGE(0x2332, 0x2332) AM_WRITE(watchdog_w) // kick watchdog + AM_RANGE(0x2333, 0x2333) AM_WRITE(mmtr_w) // mechanical meters + AM_RANGE(0x2334, 0x2335) AM_WRITE(unknown_w) + AM_RANGE(0x2336, 0x2336) AM_WRITE(dimcnt_w) // ?unknown dim related + AM_RANGE(0x2337, 0x2337) AM_WRITE(volume_override_w) + AM_RANGE(0x2338, 0x2338) AM_WRITE(payout_select_w) + AM_RANGE(0x2339, 0x2339) AM_WRITE(unknown_w) // ?unknown + AM_RANGE(0x2400, 0x2400) AM_READWRITE(uart1stat_r, uart1ctrl_w) // mc6850 compatible uart + AM_RANGE(0x2500, 0x2500) AM_READWRITE(uart1data_r, uart1data_w) + AM_RANGE(0x2600, 0x2600) AM_READWRITE(uart2stat_r, uart2ctrl_w) // mc6850 compatible uart + AM_RANGE(0x2700, 0x2700) AM_READWRITE(uart2data_r, uart2data_w) + AM_RANGE(0x2800, 0x2800) AM_WRITE(vfd1_data_w) // vfd1 data + AM_RANGE(0x2900, 0x2900) AM_WRITE(vfd_reset_w) // vfd1+vfd2 reset line + + AM_RANGE(0x2A00, 0x2AFF) AM_WRITE(nec_latch_w) // this is where it reads? + AM_RANGE(0x2B00, 0x2BFF) AM_WRITE(nec_reset_w) // upd7759 reset line + AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w) // custom chip unlock + AM_RANGE(0x2D00, 0x2D00) AM_WRITE(YM2413_register_port_0_w) + AM_RANGE(0x2D01, 0x2D01) AM_WRITE(YM2413_data_port_0_w) + AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) // write bank (rom page select for 0x6000 - 0x7fff ) + AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) // vfd2 data + + AM_RANGE(0x3C00, 0x3C07) AM_READ( key_r ) + AM_RANGE(0x3C80, 0x3C80) AM_WRITE( e2ram_w ) + + AM_RANGE(0x3E00, 0x3E00) AM_READWRITE(vid_uart_ctrl_r, vid_uart_ctrl_w) // video uart control reg + AM_RANGE(0x3E01, 0x3E01) AM_READWRITE(vid_uart_rx_r, vid_uart_tx_w) // video uart data reg + AM_RANGE(0x3FFF, 0x3FFF) AM_READ(coin_input_r) + AM_RANGE(0x4000, 0x5fff) AM_ROM // 8k fixed ROM + AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w) // contains unknown I/O registers + AM_RANGE(0x6000, 0x7FFF) AM_READ(MRA8_BANK1) // 8k paged ROM (4 pages) + AM_RANGE(0x8000, 0xFFFF) AM_ROM // 32k ROM + +ADDRESS_MAP_END + +// input ports for pyramid //////////////////////////////////////// + +static INPUT_PORTS_START( pyramid ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.50") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Left") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Up") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Right") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Enter") PORT_CODE(KEYCODE_E) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Collect") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Coin 1 Inhibit?" ) PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Coin 2 Inhibit?" ) PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "Coin 3 Inhibit?" ) PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin 4 Inhibit?" ) PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "DIL06" ) PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, "Attract mode language" ) PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( English ) ) + PORT_DIPSETTING( 0x02, "Dutch" ) + PORT_DIPNAME( 0x0C, 0x00, "Skill Level" ) PORT_DIPLOCATION("DIL:08,10") + PORT_DIPSETTING( 0x00, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x04, "Medium-Low" ) + PORT_DIPSETTING( 0x08, "Medium-High") + PORT_DIPSETTING( 0x0C, DEF_STR( High ) ) + PORT_DIPNAME( 0x10, 0x00, "DIL11" ) PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x00, "DIL12" ) PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL13" ) PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, "Attract mode" ) PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x18, 0x00, "Stake" ) PORT_DIPLOCATION("DIL:15,16") + PORT_DIPSETTING( 0x00, "4 credits per game" ) + PORT_DIPSETTING( 0x08, "1 credit per round" ) + PORT_DIPSETTING( 0x10, "2 credit per round" ) + PORT_DIPSETTING( 0x18, "4 credits per round" ) + +INPUT_PORTS_END + +// input ports for golden crown /////////////////////////////////// + +static INPUT_PORTS_START( gldncrwn ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.25") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME( "Collect") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME( "Reel 1" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME( "Reel 2" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME( "Reel 3" ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME( "Reel 4" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME( "Reel 5" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME( "Reel 6" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME( "Hall Of Fame" ) PORT_CODE( KEYCODE_J ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Coin 1 Inhibit?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Coin 2 Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "Coin 3 Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin 4 Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "Attract mode language" )PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, "Dutch") + PORT_DIPSETTING( 0x01, DEF_STR( English ) ) + PORT_DIPNAME( 0x02, 0x00, "Max number of spins" )PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, "99") + PORT_DIPSETTING( 0x02, "50") + PORT_DIPNAME( 0x0C, 0x00, "Skill Level" )PORT_DIPLOCATION("DIL:08,10") + PORT_DIPSETTING( 0x00, DEF_STR( Low )) + PORT_DIPSETTING( 0x04, "Medium-Low" ) + PORT_DIPSETTING( 0x08, "Medium-High" ) + PORT_DIPSETTING( 0x0C, DEF_STR( High ) ) + PORT_DIPNAME( 0x10, 0x00, "Base Pricing on:" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, "Full Game") + PORT_DIPSETTING( 0x10, "Individual Rounds") + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x01, "Credits required:" )PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, "4 credits per game")PORT_CONDITION("STROBE10",0x10,PORTCOND_EQUALS,0x00) + PORT_DIPSETTING( 0x01, "2 credits per game")PORT_CONDITION("STROBE10",0x10,PORTCOND_EQUALS,0x00) + PORT_DIPSETTING( 0x00, "1 credit per round")PORT_CONDITION("STROBE10",0x10,PORTCOND_EQUALS,0x10) + PORT_DIPSETTING( 0x01, "4 credits per round")PORT_CONDITION("STROBE10",0x10,PORTCOND_EQUALS,0x10) + +/* + Type1 Type2 + 0 0 4 credits per game + 0 1 2 credits per game + 1 0 1 credit per round + 1 1 4 credits per round + */ + + PORT_DIPNAME( 0x02, 0x00, "Attract Mode" )PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, "Time bar" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x18, 0x00, "Time bar speed" )PORT_DIPLOCATION("DIL:15,16") + PORT_DIPSETTING( 0x00, "1 (fast)" ) + PORT_DIPSETTING( 0x08, "2" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x18, "4 (slow)" ) + +INPUT_PORTS_END + +// input ports for dutch quintoon ///////////////////////////////// + +static INPUT_PORTS_START( qntoond ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.25") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Collect") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Hand 1" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Hand 2" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Hand 3" ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Hand 4" ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Hand 5" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x02, "Fl 0.25 Inhibit?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x02, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x04, "Fl 1.00 Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x04, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x08, "Fl 2.50 Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x08, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x10, "Fl 5.00 Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x10, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "DIL06" ) PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL07" ) PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL08" ) PORT_DIPLOCATION("DIL:08") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL09" ) PORT_DIPLOCATION("DIL:10") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin Jam Alarm" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x00, "Time bar" )PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "Clear credits on reset" )PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Attract mode" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "Attract mode language" )PORT_DIPLOCATION("DIL:15") + PORT_DIPSETTING( 0x00, "Dutch" ) + PORT_DIPSETTING( 0x08, DEF_STR( English ) ) + PORT_DIPNAME( 0x10, 0x00, "DIL15" ) PORT_DIPLOCATION("DIL:16") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + +INPUT_PORTS_END + +// input ports for UK quintoon //////////////////////////////////////////// + +static INPUT_PORTS_START( quintoon ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("10p") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("20p") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("50p") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("GBP 1.00") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Collect") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Hand 1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Hand 2") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Hand 3") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Hand 4") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME("Hand 5") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("?1") PORT_CODE(KEYCODE_U) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("?2") PORT_CODE(KEYCODE_I) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_NAME("?3") PORT_CODE(KEYCODE_O) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE5")// + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL)//Payout opto + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Clear credits on reset?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL03" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL04" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "DIL05" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "Coin Lockout")PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) )//Will activate coin lockout when Credit >= 1 Play + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL07" )PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL08" )PORT_DIPLOCATION("DIL:08") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL10" )PORT_DIPLOCATION("DIL:10") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Stake per Game / Jackpot" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, "20p / 6 Pounds" ) + PORT_DIPSETTING( 0x10, "50p / 20 Pounds" ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x00, "DIL12" )PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL13" )PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x1C, 0x1C, "Target percentage" )PORT_DIPLOCATION("DIL:14,15,16") + PORT_DIPSETTING( 0x1C, "50%") + PORT_DIPSETTING( 0x0C, "55%") + PORT_DIPSETTING( 0x08, "60%") + PORT_DIPSETTING( 0x18, "65%") + PORT_DIPSETTING( 0x10, "70%") + PORT_DIPSETTING( 0x00, "75%") + PORT_DIPSETTING( 0x04, "80%") + PORT_DIPSETTING( 0x14, "85%") + +INPUT_PORTS_END + +// input ports for UK quintoon (older)///////////////////////////////////// + +static INPUT_PORTS_START( quintono ) + PORT_INCLUDE(quintoon) + PORT_MODIFY("STROBE10") + PORT_DIPNAME( 0x10, 0x00, "Stake per Game / Jackpot" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, "20p / 6 Pounds" ) + PORT_DIPSETTING( 0x10, "50p / 20 Pounds" ) +INPUT_PORTS_END + +// input ports for slotsnl /////////////////////////////////////////////// + +static INPUT_PORTS_START( slotsnl ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.25") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Slot 1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Slot 2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Slot 3") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Slot 4") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Enter") PORT_CODE( KEYCODE_E ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Fl 0.25 Inhibit?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Fl 1.00 Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "Fl 2.50 Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "Fl 5.00 Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "DIL06" ) PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL07" ) PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL08" ) PORT_DIPLOCATION("DIL:08") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL10" ) PORT_DIPLOCATION("DIL:10") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin Jam Alarm" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x00, "DIL12" ) PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL13" ) PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "Attract mode" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x18, 0x00, "Timebar speed" )PORT_DIPLOCATION("DIL:15,16") + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x08, "3" ) + PORT_DIPSETTING( 0x18, "4" ) + +INPUT_PORTS_END + +// input ports for sltblgtk ////////////////////////////////////////////// + +static INPUT_PORTS_START( sltblgtk ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Token") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("20 BFr") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("50 BFr") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Slot 1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Slot 2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Slot 3") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Slot 4") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Enter") PORT_CODE( KEYCODE_E ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL )//Tube 1 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )//Tube 2 + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "CashMeters in refill menu" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "Token Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "20 Bfr Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "50 Bfr Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + + PORT_DIPNAME( 0x0E, 0x0E, "Payout Percentage" )PORT_DIPLOCATION("DIL:07,08,10") + PORT_DIPSETTING( 0x00, "60%") + PORT_DIPSETTING( 0x08, "65%") + PORT_DIPSETTING( 0x04, "70%") + PORT_DIPSETTING( 0x0C, "75%") + PORT_DIPSETTING( 0x02, "80%") + PORT_DIPSETTING( 0x0A, "84%") + PORT_DIPSETTING( 0x06, "88%") + PORT_DIPSETTING( 0x0E, "90%") + PORT_DIPNAME( 0x10, 0x00, "Coin Jam Alarm" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x01, "Timebar" )PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "Clear credits" )PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "Attract mode" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, "Show hints" )PORT_DIPLOCATION("DIL:15") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Pay win to credits" )PORT_DIPLOCATION("DIL:16") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + +INPUT_PORTS_END + +// input ports for sltblgpo ////////////////////////////////////////////// + +static INPUT_PORTS_START( sltblgpo ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Bfr 20") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Bfr 50") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Hand 1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Hand 2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Hand 3") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Hand 4") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Stake") PORT_CODE( KEYCODE_O ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Collect") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Hopper Limit" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, "300" ) + PORT_DIPSETTING( 0x02, "500" ) + PORT_DIPNAME( 0x04, 0x00, "DIL03" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + + PORT_DIPNAME( 0x18, 0x00, "Attendant payout" )PORT_DIPLOCATION("DIL:04,05") + PORT_DIPSETTING( 0x00, "1000 Bfr" ) + PORT_DIPSETTING( 0x08, "1250 Bfr" ) + PORT_DIPSETTING( 0x10, "1500 Bfr" ) + PORT_DIPSETTING( 0x18, "1750 Bfr" ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "Bfr 20 Inhibit?" )PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL07" )PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL08" )PORT_DIPLOCATION("DIL:08") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL10" )PORT_DIPLOCATION("DIL:10") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin Jam Alarm" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x00, "Clear credits on reset?" )PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x02, 0x00, "Attract Mode" )PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x1C, 0x08, "Target Percentage" )PORT_DIPLOCATION("DIL:14,15,16") + PORT_DIPSETTING( 0x14, "80%") + PORT_DIPSETTING( 0x04, "82%") + PORT_DIPSETTING( 0x1C, "84%") + PORT_DIPSETTING( 0x0C, "86%") + PORT_DIPSETTING( 0x10, "90%") + PORT_DIPSETTING( 0x00, "92%") + PORT_DIPSETTING( 0x18, "94%") + PORT_DIPSETTING( 0x08, "96%") + +INPUT_PORTS_END + +// input ports for paradice /////////////////////////////////////////////// + +static INPUT_PORTS_START( paradice ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.25") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME( "1 Player Start (Left)" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME( "2 Player Start (Right)" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME( "A" ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME( "B" ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME( "C" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME( "Enter" ) PORT_CODE( KEYCODE_E ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Coin 1 Inhibit?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Coin 2 Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "Coin 3 Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin 4 Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x01, "Joker" )PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Language ) )PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( English ) ) + PORT_DIPSETTING( 0x02, "Dutch" ) + PORT_DIPNAME( 0x0C, 0x0C, "Payout level" )PORT_DIPLOCATION("DIL:08,10") + PORT_DIPSETTING( 0x00, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x08, "Medium-Low" ) + PORT_DIPSETTING( 0x04, "Medium-High" ) + PORT_DIPSETTING( 0x0C, DEF_STR( High ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Difficulty ) )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x03, 0x00, "Winlines to go" )PORT_DIPLOCATION("DIL:12,13") + PORT_DIPSETTING( 0x00, "6" ) + PORT_DIPSETTING( 0x02, "7" ) + PORT_DIPSETTING( 0x01, "8" ) + PORT_DIPSETTING( 0x03, "9" ) + PORT_DIPNAME( 0x04, 0x04, "Attract mode" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x18, 0x00, "Timebar speed" )PORT_DIPLOCATION("DIL:15,16") + PORT_DIPSETTING( 0x00, "0" ) + PORT_DIPSETTING( 0x08, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x18, "3" ) + +INPUT_PORTS_END + +// input ports for pokio ////////////////////////////////////////////////// + +static INPUT_PORTS_START( pokio ) + PORT_START_TAG("COINS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Fl 0.25") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(3) PORT_NAME("Fl 1.00") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(3) PORT_NAME("Fl 2.50") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_IMPULSE(3) PORT_NAME("Fl 5.00") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Hand 1 Left" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME( "Hand 2 Left" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME( "Hand 3 Left" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME( "1 Player Start (Left)" ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME( "Enter" ) PORT_CODE( KEYCODE_SPACE ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME( "2 Player Start (Right)" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON6 )PORT_NAME( "Hand 3 Right" ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 )PORT_NAME( "Hand 2 Right" ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 )PORT_NAME( "Hand 1 Right" ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_INTERLOCK) PORT_NAME("Front Door") PORT_CODE(KEYCODE_W) PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE7") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE8") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START_TAG("STROBE9") + PORT_SERVICE_NO_TOGGLE(0x01,IP_ACTIVE_HIGH) + PORT_DIPNAME( 0x02, 0x00, "Coin 1 Inhibit?" )PORT_DIPLOCATION("DIL:02") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x04, 0x00, "Coin 2 Inhibit?" )PORT_DIPLOCATION("DIL:03") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x08, 0x00, "Coin 3 Inhibit?" )PORT_DIPLOCATION("DIL:04") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin 4 Inhibit?" )PORT_DIPLOCATION("DIL:05") + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + + PORT_START_TAG("STROBE10") + PORT_DIPNAME( 0x01, 0x00, "DIL06" ) PORT_DIPLOCATION("DIL:06") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL07" ) PORT_DIPLOCATION("DIL:07") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, "DIL08" ) PORT_DIPLOCATION("DIL:08") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, "DIL10" ) PORT_DIPLOCATION("DIL:10") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Coin Jam Alarm" )PORT_DIPLOCATION("DIL:11") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START_TAG("STROBE11") + PORT_DIPNAME( 0x01, 0x01, "Time bar" ) PORT_DIPLOCATION("DIL:12") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, "DIL13" ) PORT_DIPLOCATION("DIL:13") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, "Attract mode" )PORT_DIPLOCATION("DIL:14") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x18, 0x00, "Timebar speed" )PORT_DIPLOCATION("DIL:15,16") + PORT_DIPSETTING( 0x00, "0" ) + PORT_DIPSETTING( 0x08, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x18, "3" ) + +INPUT_PORTS_END + + static struct upd7759_interface upd7759_interface = + { + REGION_SOUND1, /* memory region */ + 0 + }; + +/////////////////////////////////////////////////////////////////////////// +// machine driver for scorpion2 board + adder2 expansion ////////////////// +/////////////////////////////////////////////////////////////////////////// + +static MACHINE_DRIVER_START( scorpion2_vid ) + MDRV_MACHINE_RESET( init ) // main scorpion2 board initialisation + MDRV_INTERLEAVE(16) // needed for serial communication !! + MDRV_CPU_ADD_TAG("main", M6809, 2000000 ) // 6809 CPU at 2 Mhz + MDRV_CPU_PROGRAM_MAP(memmap_vid,0) // setup scorpion2 board memorymap + MDRV_CPU_PERIODIC_INT(timer_irq, 1000) // generate 1000 IRQ's per second + + MDRV_NVRAM_HANDLER(bfm_sc2) + MDRV_DEFAULT_LAYOUT(layout_bfm_sc2) + + MDRV_SCREEN_ADD("ADDER", 0x000) + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE( 400, 280) + MDRV_SCREEN_VISIBLE_AREA( 0, 400-1, 0, 280-1) + MDRV_SCREEN_REFRESH_RATE(50) + + MDRV_VIDEO_START( adder2) + MDRV_VIDEO_RESET( adder2) + MDRV_VIDEO_UPDATE(addersc2) + + MDRV_PALETTE_LENGTH(16) + MDRV_COLORTABLE_LENGTH(16) + MDRV_PALETTE_INIT(adder2) + MDRV_GFXDECODE(adder2) + + MDRV_CPU_ADD_TAG("adder2", M6809, 2000000 ) // adder2 board 6809 CPU at 2 Mhz + MDRV_CPU_PROGRAM_MAP(adder2_memmap,0) // setup adder2 board memorymap + MDRV_CPU_VBLANK_INT(adder2_vbl, 1) // board has a VBL IRQ + + MDRV_SPEAKER_STANDARD_MONO("mono") + MDRV_SOUND_ADD(UPD7759, UPD7759_STANDARD_CLOCK) + MDRV_SOUND_CONFIG(upd7759_interface) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MDRV_SOUND_ADD(YM2413, 3579545) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_DRIVER_END + +static void sc2_common_init(void) +{ + UINT8 *rom; + + decode_mainrom(REGION_CPU1); // decode main rom + + rom = memory_region(REGION_CPU1); + if ( rom ) + { + memcpy(&rom[0x10000], &rom[0x00000], 0x2000); + } + + memset(sc2_Inputs, 0, sizeof(sc2_Inputs)); // clear all inputs +} + +static void adder2_common_init(void) +{ + UINT8 *pal; + + pal = memory_region(REGION_PROMS); + if ( pal ) + { + memcpy(key, pal, 8); + } +} + +// UK quintoon initialisation //////////////////////////////////////////////// + +static DRIVER_INIT (quintoon) +{ + sc2_common_init(); + adder2_decode_char_roms(); + Mechmtr_init(8); // setup mech meters + + has_hopper = 0; + + Scorpion2_SetSwitchState(3,0,1); // tube1 level switch + Scorpion2_SetSwitchState(3,1,1); // tube2 level switch + Scorpion2_SetSwitchState(3,2,1); // tube3 level switch + + Scorpion2_SetSwitchState(5,2,1); + Scorpion2_SetSwitchState(6,4,1); + + sc2_show_door = 1; + sc2_door_state = 0x41; +} + +// dutch pyramid intialisation ////////////////////////////////////////////// + +static DRIVER_INIT( pyramid ) +{ + sc2_common_init(); + adder2_decode_char_roms(); // decode GFX roms + adder2_common_init(); + + has_hopper = 1; + + Scorpion2_SetSwitchState(3,0,1); // tube1 level switch + Scorpion2_SetSwitchState(3,1,1); // tube2 level switch + Scorpion2_SetSwitchState(3,2,1); // tube3 level switch + + sc2_show_door = 1; + sc2_door_state = 0x41; +} +// belgian slots initialisation ///////////////////////////////////////////// + +static DRIVER_INIT( sltsbelg ) +{ + sc2_common_init(); + adder2_decode_char_roms(); // decode GFX roms + adder2_common_init(); + + has_hopper = 1; + + sc2_show_door = 1; + sc2_door_state = 0x41; +} + +// other dutch adder games //////////////////////////////////////////////// + +static DRIVER_INIT( adder_dutch ) +{ + sc2_common_init(); + adder2_decode_char_roms(); // decode GFX roms + adder2_common_init(); + + has_hopper = 0; + + Scorpion2_SetSwitchState(3,0,1); // tube1 level switch + Scorpion2_SetSwitchState(3,1,1); // tube2 level switch + Scorpion2_SetSwitchState(3,2,1); // tube3 level switch + + sc2_show_door = 1; + sc2_door_state = 0x41; +} + +// golden crown ////////////////////////////////////////////////////////// + +static DRIVER_INIT( gldncrwn ) +{ + sc2_common_init(); + adder2_decode_char_roms(); // decode GFX roms + adder2_common_init(); + + has_hopper = 0; + + Scorpion2_SetSwitchState(3,0,1); // tube1 level switch + Scorpion2_SetSwitchState(3,1,1); // tube2 level switch + Scorpion2_SetSwitchState(3,2,1); // tube3 level switch + + sc2_show_door = 0; + sc2_door_state = 0x41; +} + +// ROM definition UK Quintoon //////////////////////////////////////////// + +ROM_START( quintoon ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750206.p1", 0x00000, 0x10000, CRC(05f4bfad) SHA1(22751573f3a51a9fd2d2a75a7d1b20d78112e0bb)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) // using Dutch samples, need to check a UK Quintoon PCB + ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) +ROM_END + +// ROM definition UK Quintoon (older) //////////////////////////////////// + +ROM_START( quintono ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750203.bin", 0x00000, 0x10000, CRC(037ef2d0) SHA1(6958624e29629a7639a80e8929b833a8b0201833)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) // using Dutch samples, need to check a UK Quintoon PCB + ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) +ROM_END + +// ROM definition UK Quintoon (data) ///////////////////////////////////// + +ROM_START( quintond ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95751206.bin", 0x00000, 0x10000, CRC(63def707) SHA1(d016df74f4f83cd72b16f9ccbe78cc382bf056c8)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("quinp132", 0x00000, 0x20000, CRC(63896a7f) SHA1(81aa56874a15faa3aabdfc0fc524b2e25b751f22)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) // using Dutch samples, need to check a UK Quintoon PCB + ROM_LOAD("95001016.snd", 0x00000, 0x20000, BAD_DUMP CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("quinp233", 0x00000, 0x20000, CRC(3d4ebecf) SHA1(b339cf16797ccf7a1ec20fcebf52b6edad9a1047)) +ROM_END + +// ROM definition Dutch Quintoon /////////////////////////////////////////// + +ROM_START( qntoond ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750243.bin", 0x00000, 0x10000, CRC(36a8dcd1) SHA1(ab21301312fbb6609f850e1cf6bcda5a2b7f66f5)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339)) +ROM_END + +// ROM definition Dutch Quintoon alternate set ///////////////////////////// + +ROM_START( qntoondo ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750136.bin", 0x00000, 0x10000, CRC(839ea01d) SHA1(d7f77dbaea4e87c3d782408eb50d10f44b6df5e2)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770024.vid", 0x00000, 0x20000, CRC(5bc7ac55) SHA1(b54e9684f750b73c357d41b88ca8c527258e2a10)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(cf097d41) SHA1(6712f93896483360256d8baffc05977c8e532ef1)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770025.chr", 0x00000, 0x20000, CRC(f59748ea) SHA1(f0f7f914fdf72db8eb60717b95e7d027c0081339)) +ROM_END + +// ROM definition dutch golden crown ////////////////////////////////////// + +ROM_START( gldncrwn ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95752011.bin", 0x00000, 0x10000, CRC(54f7cca0) SHA1(835727d88113700a38060f880b4dfba2ded41487)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770117.vid", 0x00000, 0x20000, CRC(598ba7cb) SHA1(ab518d7df24b0b453ec3fcddfc4db63e0391fde7)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001039.snd", 0x00000, 0x20000, CRC(6af26157) SHA1(9b3a85f5dd760c4430e38e2844928b74aadc7e75)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770118.ch1", 0x00000, 0x20000, CRC(9c9ac946) SHA1(9a571e7d00f6654242aface032c2fb186ef44aba)) + ROM_LOAD("95770119.ch2", 0x20000, 0x20000, CRC(9e0fdb2e) SHA1(05e8257285b0009df4fcc73e93490876358a8be8)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("gcrpal.bin", 0, 8 , CRC(4edd5a1d) SHA1(d6fe38377d5f2291d33ee8ed808548871e63c4d7)) +ROM_END + +// ROM definition Dutch Paradice ////////////////////////////////////////// + +ROM_START( paradice ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750615.bin", 0x00000, 0x10000, CRC(f51192e5) SHA1(a1290e32bba698006e83fd8d6075202586232929)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770084.vid", 0x00000, 0x20000, CRC(8f27bd34) SHA1(fccf7283b5c952b74258ee6e5138c1ca89384e24)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001037.snd", 0x00000, 0x20000, CRC(82f74276) SHA1(c51c3caeb7bf514ec7a1b452c8effc4c79186062)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770085.ch1", 0x00000, 0x20000, CRC(4d1fb82f) SHA1(054f683d1d7c884911bd2d0f85aab4c59ddf9930)) + ROM_LOAD("95770086.ch2", 0x20000, 0x20000, CRC(7b566e11) SHA1(f34c82ad75a0f88204ac4ae83a00801215c46ca9)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD( "pdcepal.bin", 0, 8 , CRC(64020c97) SHA1(9371841e2df950c1f2e5b5a4b52621beb6f60945)) +ROM_END + +// ROM definition Dutch Pokio ///////////////////////////////////////////// + +ROM_START( pokio ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750278.bin", 0x00000, 0x10000, CRC(5124b24d) SHA1(9bc63891a8e9283c2baa64c264a5d6d1625d44b2)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770044.vid", 0x00000, 0x20000, CRC(46d7a6d8) SHA1(01f58e735621661b57c61491b3769ae99e92476a)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001016.snd", 0x00000, 0x20000, CRC(98aaff76) SHA1(4a59cf83daf018d93f1ff7805e06309d2f3d7252)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770045.chr", 0x00000, 0x20000, CRC(dd30da90) SHA1(b4f5a229d88613c0c7d43adf3f325c619abe38a3)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("pokiopal.bin", 0, 8 , CRC(53535184) SHA1(c5c98085e39ca3671dca72c21a8466d7d70cd341)) +ROM_END + +// ROM definition pyramid prototype ////////////////////////////////////// + +ROM_START( pyramid ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750898.bin", 0x00000, 0x10000, CRC(3b0df16c) SHA1(9af599fe604f86c72986aa1610d74837852e023f)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770108.vid", 0x00000, 0x20000, CRC(216ff683) SHA1(227764771600ce88c5f36bed9878e6bb9988ae8f)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001038.snd", 0x00000, 0x20000, CRC(f885c42e) SHA1(4d79fc5ae4c58247740d78d81302bfbb43331c43)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770106.ch1", 0x00000, 0x20000, CRC(a83c27ae) SHA1(f61ca3cdf19a933bae18c1b32a5fb0a2204dde78)) + ROM_LOAD("95770107.ch2", 0x20000, 0x20000, CRC(52e59f64) SHA1(ea4828c2cfb72cd77c92c60560b4d5ee424f7dca)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("pyrmdpal.bin", 0, 8 , CRC(1c7c37bb) SHA1(fe0276603fee8f58e4318f91645260368212b78b)) +ROM_END + +// ROM definition Dutch slots ///////////////////////////////////////////// + +ROM_START( slotsnl ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750368.bin", 0x00000, 0x10000, CRC(3a43048c) SHA1(13728e05b334cba90ea9cc51ea00c4384baa8614)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("video.vid", 0x00000, 0x20000, CRC(cc760208) SHA1(cc01b1e31335b26f2d0f3470d8624476b153655f)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("95001029.snd", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("charset.chr", 0x00000, 0x20000, CRC(ef4300b6) SHA1(a1f765f38c2f146651fc685ea6195af72465f559)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD( "slotspal.bin", 0, 8 , CRC(ee5421f0) SHA1(21bdcbf11dda8b1a93c49ae1c706954bba53c917)) +ROM_END + +// ROM definition Belgian Slots (Token pay per round) Payslide //////////// + +ROM_START( sltblgtk ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95750943.bin", 0x00000, 0x10000, CRC(c9fb8153) SHA1(7c1d0660c15f05b1e0784d8322c62981fe8dc4c9)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("adder121.bin", 0x00000, 0x20000, CRC(cedbbf28) SHA1(559ae341b55462feea771127394a54fc65266818)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("sound029.bin", 0x00000, 0x20000, CRC(7749c724) SHA1(a87cce0c99e392f501bba44b3936a7059d682c9c)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("chr122.bin", 0x00000, 0x20000, CRC(a1e3bdf4) SHA1(f0cabe08dee028e2014cbf0fc3fe0806cdfa60c6)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("stsbtpal.bin", 0, 8 , CRC(20e13635) SHA1(5aa7e7cac8c00ebc193d63d0c6795904f42c70fa)) +ROM_END + +// ROM definition Belgian Slots (Cash Payout) ///////////////////////////// + +ROM_START( sltblgp1 ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95752008.bin", 0x00000, 0x10000, CRC(3167d3b9) SHA1(a28563f65d55c4d47f3e7fdb41e050d8a733b9bd)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("adder142.bin", 0x00000, 0x20000, CRC(a6f6356b) SHA1(b3d3063155ee3ea888273081f844279b6e33f7d9)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("chr143.bin", 0x00000, 0x20000, CRC(a40e91e2) SHA1(87dc76963ea961fcfbe4f3e25df9162348d39d79)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("stsbcpal.bin", 0, 8 , CRC(c63bcab6) SHA1(238841165d5b3241b0bcc5c1792e9c0be1fc0177)) +ROM_END + +// ROM definition Belgian Slots (Cash Payout) ///////////////////////////// + +ROM_START( sltblgpo ) + ROM_REGION( 0x12000, REGION_CPU1, 0 ) + ROM_LOAD("95770938.bin", 0x00000, 0x10000, CRC(7e802634) SHA1(fecf86e632546649d5e647c42a248b39fc2cf982)) + + ROM_REGION( 0x20000, REGION_CPU2, 0 ) + ROM_LOAD("95770120.chr", 0x00000, 0x20000, CRC(ad505138) SHA1(67ccd8dc30e76283247ab5a62b22337ebaff74cd)) + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) + ROM_LOAD("sound033.bin", 0x00000, 0x20000, CRC(bb1dfa55) SHA1(442454fccfe03e6f4c3353551cb7459e184a099d)) + + ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) + ROM_LOAD("95770110.add", 0x00000, 0x20000, CRC(64b03284) SHA1(4b1c17b75e449c9762bb949d7cde0694a3aaabeb)) + + ROM_REGION( 0x10, REGION_PROMS, ROMREGION_DISPOSE ) + ROM_LOAD("stsbcpal.bin", 0, 8 , CRC(c63bcab6) SHA1(238841165d5b3241b0bcc5c1792e9c0be1fc0177)) +ROM_END + +// year, name, parent, machine, input, init, monitor, company, fullname +GAMEL( 1993, qntoondo, qntoond, scorpion2_vid, qntoond, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-136)", GAME_SUPPORTS_SAVE,layout_quintoon ) +GAMEL( 1993, quintoon, 0, scorpion2_vid, quintoon, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-206)", GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification +GAMEL( 1993, quintond, quintoon, scorpion2_vid, quintoon, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-751-206, Datapak)",GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING,layout_quintoon ) //Current samples need verification +GAMEL( 1993, quintono, quintoon, scorpion2_vid, quintono, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-203)", GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification +GAMEL( 1993, qntoond, 0, scorpion2_vid, qntoond, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-243)", GAME_SUPPORTS_SAVE,layout_quintoon ) +GAMEL( 1994, pokio, 0, scorpion2_vid, pokio, adder_dutch,0, "BFM/ELAM", "Pokio (Dutch, Game Card 95-750-278)", GAME_SUPPORTS_SAVE,layout_pokio ) +GAMEL( 1995, slotsnl, 0, scorpion2_vid, slotsnl, adder_dutch,0, "BFM/ELAM", "Slots (Dutch, Game Card 95-750-368)", GAME_SUPPORTS_SAVE,layout_slots ) +GAMEL( 1995, paradice, 0, scorpion2_vid, paradice, adder_dutch,0, "BFM/ELAM", "Paradice (Dutch, Game Card 95-750-615)", GAME_SUPPORTS_SAVE,layout_paradice ) +GAMEL( 1996, pyramid, 0, scorpion2_vid, pyramid, pyramid, 0, "BFM/ELAM", "Pyramid (Dutch, Game Card 95-750-898)", GAME_SUPPORTS_SAVE,layout_pyramid ) + +GAMEL( 1996, sltblgtk, 0, scorpion2_vid, sltblgtk, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Token, Game Card 95-750-943)", GAME_SUPPORTS_SAVE,layout_sltblgtk ) +GAMEL( 1996, sltblgpo, 0, scorpion2_vid, sltblgpo, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-750-938)", GAME_SUPPORTS_SAVE,layout_sltblgpo ) +GAMEL( 1996, sltblgp1, sltblgpo, scorpion2_vid, sltblgpo, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-752-008)", GAME_SUPPORTS_SAVE,layout_sltblgpo ) +GAMEL( 1997, gldncrwn, 0, scorpion2_vid, gldncrwn, gldncrwn, 0, "BFM/ELAM", "Golden Crown (Dutch, Game Card 95-752-011)", GAME_SUPPORTS_SAVE,layout_gldncrwn ) |