// license:BSD-3-Clause
// copyright-holders:Manuel Abadia
/*******************************************************************************
Input port macros used by many games in multiple KONAMI drivers
*******************************************************************************/
/***************************** 8bit Players Inputs ****************************/
/*********************** Prototypes 8bit ***********************/
#define KONAMI8_MONO_4WAY( direction1, direction2, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction1 ) PORT_4WAY \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction2 ) PORT_4WAY \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY \
PORT_BIT( 0x10, IP_ACTIVE_LOW, button1 ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button2 ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button3 )
#define KONAMI8_COCKTAIL_4WAY( direction1, direction2, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction1 ) PORT_4WAY PORT_COCKTAIL \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction2 ) PORT_4WAY PORT_COCKTAIL \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL \
PORT_BIT( 0x10, IP_ACTIVE_LOW, button1 ) PORT_COCKTAIL \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button2 ) PORT_COCKTAIL \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button3 ) PORT_COCKTAIL
#define KONAMI8_MONO_8WAY( direction1, direction2, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction1 ) PORT_8WAY \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction2 ) PORT_8WAY \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \
PORT_BIT( 0x10, IP_ACTIVE_LOW, button1 ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button2 ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button3 )
#define KONAMI8_COCKTAIL_8WAY( direction1, direction2, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction1 ) PORT_8WAY PORT_COCKTAIL \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction2 ) PORT_8WAY PORT_COCKTAIL \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL \
PORT_BIT( 0x10, IP_ACTIVE_LOW, button1 ) PORT_COCKTAIL \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button2 ) PORT_COCKTAIL \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button3 ) PORT_COCKTAIL
#define KONAMI8_MULTI_8WAY( player, direction1, direction2, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction1 ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_##direction2 ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, button1 ) PORT_PLAYER(player) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button2 ) PORT_PLAYER(player) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI8_LR_40( player, button1, button2, button3 ) \
KONAMI8_MULTI_8WAY( player, LEFT, RIGHT, button1, button2, button3 )
#define KONAMI8_RL_40( player, button1, button2, button3 ) \
KONAMI8_MULTI_8WAY( player, RIGHT, LEFT, button1, button2, button3 )
/*********************** Actual Inputs 8bit ***********************/
/* Cocktail Cabinet 4Way Inputs */
#define KONAMI8_MONO_4WAY_B12_UNK \
KONAMI8_MONO_4WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_4WAY_B12_UNK \
KONAMI8_COCKTAIL_4WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_MONO_4WAY_B123_UNK \
KONAMI8_MONO_4WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_4WAY_B123_UNK \
KONAMI8_COCKTAIL_4WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Cocktail Cabinet 8Way Inputs */
/* 1 Button */
#define KONAMI8_MONO_B1_UNK \
KONAMI8_MONO_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_UNKNOWN, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_B1_UNK \
KONAMI8_COCKTAIL_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_UNKNOWN, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* 2 Buttons */
#define KONAMI8_MONO_B12_UNK \
KONAMI8_MONO_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_B12_UNK \
KONAMI8_COCKTAIL_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* 3 Buttons */
#define KONAMI8_MONO_B123_UNK \
KONAMI8_MONO_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_B123_UNK \
KONAMI8_COCKTAIL_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_MONO_B213_UNK \
KONAMI8_MONO_8WAY( LEFT, RIGHT, IPT_BUTTON2, IPT_BUTTON1, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_COCKTAIL_B213_UNK \
KONAMI8_COCKTAIL_8WAY( LEFT, RIGHT, IPT_BUTTON2, IPT_BUTTON1, IPT_BUTTON3 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* 2 Buttons + Start */
#define KONAMI8_MONO_B12_START \
KONAMI8_MONO_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
#define KONAMI8_COCKTAIL_B12_START \
KONAMI8_COCKTAIL_8WAY( LEFT, RIGHT, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
/* Upright Multiplayer Cabinet Inputs */
/* 1 Button */
#define KONAMI8_B1( player ) \
KONAMI8_LR_40( player, IPT_BUTTON1, IPT_UNKNOWN, IPT_UNKNOWN )
#define KONAMI8_B1_UNK( player ) \
KONAMI8_B1( player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* 2 Buttons */
#define KONAMI8_B12( player ) \
KONAMI8_LR_40( player, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN )
#define KONAMI8_B12_UNK( player ) \
KONAMI8_B12( player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
#define KONAMI8_B12_START( player ) \
KONAMI8_B12( player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##player )
#define KONAMI8_B12_COIN_START( player ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN##player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##player )
#define KONAMI8_B21_UNK( player ) \
KONAMI8_LR_40( player, IPT_BUTTON2, IPT_BUTTON1, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* 3 Buttons */
#define KONAMI8_B123( player ) \
KONAMI8_LR_40( player, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 )
#define KONAMI8_B123_UNK( player ) \
KONAMI8_B123( player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
#define KONAMI8_B123_START( player ) \
KONAMI8_B123( player ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##player )
#define KONAMI8_B132( player ) \
KONAMI8_LR_40( player, IPT_BUTTON1, IPT_BUTTON3, IPT_BUTTON2 )
#define KONAMI8_B321( player ) \
KONAMI8_LR_40( player, IPT_BUTTON3, IPT_BUTTON2, IPT_BUTTON1 )
/* vendetta.c uses inputs with switched Left/Right directions. We add these inputs here as well
because they just need a few lines of code */
#define KONAMI8_RL_B12_COIN( player ) \
KONAMI8_RL_40( player, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN##player )
/* A few drivers uses bit0 for Start and shuffled joystick inputs */
#define KONAMI8_ALT( player, button1, button2, button3 ) \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START##player ) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(player) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, button1 ) PORT_PLAYER(player) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, button2 ) PORT_PLAYER(player) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI8_ALT_B12( player ) \
KONAMI8_ALT( player, IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN )
#define KONAMI8_ALT_B21( player ) \
KONAMI8_ALT( player, IPT_BUTTON2, IPT_BUTTON1, IPT_UNKNOWN )
#define KONAMI8_ALT_B123( player ) \
KONAMI8_ALT( player, IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3 )
/**************************** 16bit Players Inputs ****************************/
#define KONAMI16_LSB_40( player, button3 ) \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
PORT_BIT( 0x0040, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI16_MSB_40( player, button3 ) \
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
PORT_BIT( 0x4000, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI16_LSB_40_UDLR( player, button3 ) \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
PORT_BIT( 0x0040, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI16_MSB_40_UDLR( player, button3 ) \
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
PORT_BIT( 0x4000, IP_ACTIVE_LOW, button3 ) PORT_PLAYER(player)
#define KONAMI16_LSB( player, button3, start ) \
KONAMI16_LSB_40( player, button3 ) \
PORT_BIT( 0x0080, IP_ACTIVE_LOW, start )
#define KONAMI16_MSB( player, button3, start ) \
KONAMI16_MSB_40( player, button3 ) \
PORT_BIT( 0x8000, IP_ACTIVE_LOW, start )
#define KONAMI16_LSB_UDLR( player, button3, start ) \
KONAMI16_LSB_40_UDLR( player, button3 ) \
PORT_BIT( 0x0080, IP_ACTIVE_LOW, start )
#define KONAMI16_MSB_UDLR( player, button3, start ) \
KONAMI16_MSB_40_UDLR( player, button3 ) \
PORT_BIT( 0x8000, IP_ACTIVE_LOW, start )
/******************** System Inputs (Coin, Start & Service) *******************/
#define KONAMI8_SYSTEM_10 \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
#define KONAMI8_SYSTEM_UNK \
KONAMI8_SYSTEM_10 \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/**************************** Coinage Dip Swicthes ****************************/
/* Konami games from 80s-90s basically use only two kind of coinage dips. The only
difference is in the settings corresponding to 0x00, which could be either 4C_5C
or a "Free_Play"-related option. Actually, in the latter case the behavior may change
depending on the game code:
Coin A - 0x00 could produce the following effects
Free_Play = nomen omen (for both players)
Invalid = both coin slots disabled
Coin B - 0x00 could produce the following effects
Free_Play = nomen omen (for both players)
No Coin B = coin slot B open (coins produce sound), but no effect on coin counter
None = coin slot B disabled
No Credits = both coin slots open, but no effect on coin counters
Invalid = both coin slots disabled
Accordingly, we pass below different strings for different games */
#define KONAMI_COINAGE_LOC( STRING_A, STRING_B, DIPBANK ) \
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":1,2,3,4") \
PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) \
PORT_DIPSETTING( 0x00, STRING_A ) \
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x10, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) ) \
PORT_DIPSETTING( 0x00, STRING_B )
#define KONAMI_COINAGE( STRING_A, STRING_B ) \
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) \
PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) \
PORT_DIPSETTING( 0x00, STRING_A ) \
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) \
PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x10, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) ) \
PORT_DIPSETTING( 0x00, STRING_B )
#define KONAMI_COINAGE_ALT_LOC( DIPBANK ) \
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":1,2,3,4") \
PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x00, DEF_STR( 4C_5C ) ) \
PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) \
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x10, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x00, DEF_STR( 4C_5C ) ) \
PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) )
#define KONAMI_COINAGE_ALT \
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) \
PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x00, DEF_STR( 4C_5C ) ) \
PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) \
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) \
PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) \
PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) \
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) \
PORT_DIPSETTING( 0x10, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x00, DEF_STR( 4C_5C ) ) \
PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) \
PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) )