1 // license:BSD-3-Clause 2 // copyright-holders:David Graves, Bryan McPhail, Brad Oliver, Andrew Prime, Brian Troha, Nicola Salmoria,Stephane Humbert 3 /******************************************************************************* 4 5 Input port macros used by many games in multiple Taito drivers 6 7 *******************************************************************************/ 8 9 10 /**************************** Machine Dip Switches ****************************/ 11 12 /* with location */ 13 #define TAITO_DSWA_BITS_2_TO_3_LOC(DIPBANK) \ 14 PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, #DIPBANK":3" ) \ 15 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION(#DIPBANK":4") \ 16 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \ 17 PORT_DIPSETTING( 0x08, DEF_STR( On ) ) 18 19 #define TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK) \ 20 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION(#DIPBANK":2") \ 21 PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) \ 22 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) \ 23 TAITO_DSWA_BITS_2_TO_3_LOC(DIPBANK) 24 25 #define TAITO_MACHINE_COCKTAIL_LOC(DIPBANK) \ 26 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION(#DIPBANK":1") \ 27 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) \ 28 PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) \ 29 TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK) 30 31 #define TAITO_MACHINE_NO_COCKTAIL_LOC(DIPBANK) \ 32 PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, #DIPBANK":1" ) \ 33 TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK) 34 35 36 /* without location */ 37 #define TAITO_DSWA_BITS_2_TO_3 \ 38 PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) \ 39 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) \ 40 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \ 41 PORT_DIPSETTING( 0x08, DEF_STR( On ) ) 42 43 #define TAITO_DSWA_BITS_1_TO_3 \ 44 PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) \ 45 PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) \ 46 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) \ 47 TAITO_DSWA_BITS_2_TO_3 48 49 #define TAITO_MACHINE_COCKTAIL \ 50 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) \ 51 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) \ 52 PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) \ 53 TAITO_DSWA_BITS_1_TO_3 54 55 #define TAITO_MACHINE_NO_COCKTAIL \ 56 PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW ) \ 57 TAITO_DSWA_BITS_1_TO_3 58 59 60 /**************************** Coinage Dip Switches ****************************/ 61 62 /* with location */ 63 #define TAITO_COINAGE_JAPAN_OLD_COIN_A_LOC(DIPBANK) \ 64 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \ 65 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ 66 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ 67 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ 68 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) 69 70 #define TAITO_COINAGE_JAPAN_OLD_COIN_B_LOC(DIPBANK) \ 71 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \ 72 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 73 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ 74 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ 75 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) 76 77 #define TAITO_COINAGE_JAPAN_NEW_COIN_A_LOC(DIPBANK) \ 78 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \ 79 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 80 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ 81 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ 82 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) 83 84 #define TAITO_COINAGE_JAPAN_NEW_COIN_B_LOC(DIPBANK) \ 85 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \ 86 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 87 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 88 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ 89 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) 90 91 #define TAITO_COINAGE_WORLD_COIN_A_LOC(DIPBANK) \ 92 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \ 93 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ 94 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ 95 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ 96 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) 97 98 #define TAITO_COINAGE_WORLD_COIN_B_LOC(DIPBANK) \ 99 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \ 100 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \ 101 PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \ 102 PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \ 103 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) 104 105 #define TAITO_COINAGE_US_COIN_START_LOC(DIPBANK) \ 106 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \ 107 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ 108 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ 109 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ 110 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) 111 112 #define TAITO_COINAGE_US_COIN_CONT_LOC(DIPBANK) \ 113 PORT_DIPNAME( 0xc0, 0xc0, "Price to Continue" ) PORT_DIPLOCATION(#DIPBANK":7,8") \ 114 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 115 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 116 PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \ 117 PORT_DIPSETTING( 0xc0, "Same as Start" ) 118 119 #define TAITO_COINAGE_JAPAN_OLD_LOC(DIPBANK) \ 120 TAITO_COINAGE_JAPAN_OLD_COIN_A_LOC(DIPBANK) \ 121 TAITO_COINAGE_JAPAN_OLD_COIN_B_LOC(DIPBANK) 122 123 #define TAITO_COINAGE_JAPAN_NEW_LOC(DIPBANK) \ 124 TAITO_COINAGE_JAPAN_NEW_COIN_A_LOC(DIPBANK) \ 125 TAITO_COINAGE_JAPAN_NEW_COIN_B_LOC(DIPBANK) 126 127 #define TAITO_COINAGE_WORLD_LOC(DIPBANK) \ 128 TAITO_COINAGE_WORLD_COIN_A_LOC(DIPBANK) \ 129 TAITO_COINAGE_WORLD_COIN_B_LOC(DIPBANK) 130 131 #define TAITO_COINAGE_US_LOC(DIPBANK) \ 132 TAITO_COINAGE_US_COIN_START_LOC(DIPBANK) \ 133 TAITO_COINAGE_US_COIN_CONT_LOC(DIPBANK) 134 135 136 /* without location */ 137 #define TAITO_COINAGE_JAPAN_OLD_COIN_A \ 138 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ 139 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ 140 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ 141 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ 142 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) 143 144 #define TAITO_COINAGE_JAPAN_OLD_COIN_B \ 145 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ 146 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 147 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ 148 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ 149 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) 150 151 #define TAITO_COINAGE_JAPAN_NEW_COIN_A \ 152 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ 153 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 154 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ 155 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ 156 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) 157 158 #define TAITO_COINAGE_JAPAN_NEW_COIN_B \ 159 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ 160 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 161 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 162 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ 163 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) 164 165 #define TAITO_COINAGE_WORLD_COIN_A \ 166 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ 167 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ 168 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ 169 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ 170 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) 171 172 #define TAITO_COINAGE_WORLD_COIN_B \ 173 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ 174 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \ 175 PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \ 176 PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \ 177 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) 178 179 #define TAITO_COINAGE_US_COIN_START \ 180 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) \ 181 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ 182 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ 183 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ 184 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) 185 186 #define TAITO_COINAGE_US_COIN_CONT \ 187 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Continue_Price ) ) \ 188 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ 189 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ 190 PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \ 191 PORT_DIPSETTING( 0xc0, "Same as Start" ) 192 193 #define TAITO_COINAGE_JAPAN_OLD \ 194 TAITO_COINAGE_JAPAN_OLD_COIN_A \ 195 TAITO_COINAGE_JAPAN_OLD_COIN_B 196 197 #define TAITO_COINAGE_JAPAN_NEW \ 198 TAITO_COINAGE_JAPAN_NEW_COIN_A \ 199 TAITO_COINAGE_JAPAN_NEW_COIN_B 200 201 #define TAITO_COINAGE_WORLD \ 202 TAITO_COINAGE_WORLD_COIN_A \ 203 TAITO_COINAGE_WORLD_COIN_B 204 205 #define TAITO_COINAGE_US \ 206 TAITO_COINAGE_US_COIN_START \ 207 TAITO_COINAGE_US_COIN_CONT 208 209 210 /************************** Difficulty Dip Switches ***************************/ 211 212 /* with location */ 213 #define TAITO_DIFFICULTY_LOC(DIPBANK) \ 214 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(#DIPBANK":1,2") \ 215 PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \ 216 PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) \ 217 PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \ 218 PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) 219 220 /* without location */ 221 #define TAITO_DIFFICULTY \ 222 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \ 223 PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \ 224 PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) \ 225 PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \ 226 PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) 227 228 229 /************************** Joysticks and buttons *****************************/ 230 231 /* generic (might be moved elsewhere) */ 232 #define INPUT_GENERIC_JOY_LOW_NIBBLE(PL, STATE, WAY, B01, B02, B04, B08) \ 233 PORT_BIT( 0x01, STATE, IPT_JOYSTICK_##B01 ) WAY PORT_PLAYER(PL) \ 234 PORT_BIT( 0x02, STATE, IPT_JOYSTICK_##B02 ) WAY PORT_PLAYER(PL) \ 235 PORT_BIT( 0x04, STATE, IPT_JOYSTICK_##B04 ) WAY PORT_PLAYER(PL) \ 236 PORT_BIT( 0x08, STATE, IPT_JOYSTICK_##B08 ) WAY PORT_PLAYER(PL) 237 238 #define INPUT_GENERIC_JOY_HIGH_NIBBLE(PL, STATE, WAY, B10, B20, B40, B80) \ 239 PORT_BIT( 0x10, STATE, IPT_JOYSTICK_##B10 ) WAY PORT_PLAYER(PL) \ 240 PORT_BIT( 0x20, STATE, IPT_JOYSTICK_##B20 ) WAY PORT_PLAYER(PL) \ 241 PORT_BIT( 0x40, STATE, IPT_JOYSTICK_##B40 ) WAY PORT_PLAYER(PL) \ 242 PORT_BIT( 0x80, STATE, IPT_JOYSTICK_##B80 ) WAY PORT_PLAYER(PL) 243 244 245 /* Taito generic (more might be needed) */ 246 #define TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 247 INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT) 248 249 #define TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 250 INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT) 251 252 #define TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 253 INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, LEFT, RIGHT, UP, DOWN) 254 255 #define TAITO_GENERIC_JOY_DUAL_UDLR(PL_L, PL_H) \ 256 INPUT_GENERIC_JOY_LOW_NIBBLE(PL_L, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT) \ 257 INPUT_GENERIC_JOY_HIGH_NIBBLE(PL_H, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT) 258 259 #define TAITO_GENERIC_JOY_DUAL_UDRL(PL_L, PL_H) \ 260 INPUT_GENERIC_JOY_LOW_NIBBLE(PL_L, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT) \ 261 INPUT_GENERIC_JOY_HIGH_NIBBLE(PL_H, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT) 262 263 264 #define TAITO_GENERIC_BUTTONS_LOW_NIBBLE(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C) \ 265 PORT_BIT( 0x01, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \ 266 PORT_BIT( 0x02, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \ 267 PORT_BIT( 0x04, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL) 268 /* DO NOT fill bit 3 as it may be defined as START button ! */ 269 270 #define TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C) \ 271 PORT_BIT( 0x10, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \ 272 PORT_BIT( 0x20, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \ 273 PORT_BIT( 0x40, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL) 274 /* DO NOT fill bit 7 as it may be defined as START button ! */ 275 276 #define TAITO_GENERIC_1_BUTTON(PL) \ 277 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, UNKNOWN, UNKNOWN) \ 278 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) 279 280 #define TAITO_GENERIC_2_BUTTONS(PL) \ 281 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, UNKNOWN) \ 282 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) 283 284 #define TAITO_GENERIC_3_BUTTONS(PL) \ 285 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, BUTTON3) \ 286 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) 287 288 #define TAITO_GENERIC_1_BUTTON_START(PL) \ 289 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, UNKNOWN, UNKNOWN) \ 290 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL ) 291 292 #define TAITO_GENERIC_2_BUTTONS_START(PL) \ 293 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, UNKNOWN) \ 294 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL ) 295 296 #define TAITO_GENERIC_3_BUTTONS_START(PL) \ 297 TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, BUTTON3) \ 298 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL ) 299 300 301 /* Taito games (more might be needed) */ 302 #define TAITO_JOY_UDLR_1_BUTTON(PL) \ 303 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 304 TAITO_GENERIC_1_BUTTON(PL) 305 306 #define TAITO_JOY_UDLR_2_BUTTONS(PL) \ 307 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 308 TAITO_GENERIC_2_BUTTONS(PL) 309 310 #define TAITO_JOY_UDLR_3_BUTTONS(PL) \ 311 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 312 TAITO_GENERIC_3_BUTTONS(PL) 313 314 #define TAITO_JOY_UDRL_1_BUTTON(PL) \ 315 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 316 TAITO_GENERIC_1_BUTTON(PL) 317 318 #define TAITO_JOY_UDRL_2_BUTTONS(PL) \ 319 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 320 TAITO_GENERIC_2_BUTTONS(PL) 321 322 #define TAITO_JOY_UDRL_3_BUTTONS(PL) \ 323 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 324 TAITO_GENERIC_3_BUTTONS(PL) 325 326 #define TAITO_JOY_LRUD_1_BUTTON(PL) \ 327 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 328 TAITO_GENERIC_1_BUTTON(PL) 329 330 #define TAITO_JOY_LRUD_2_BUTTONS(PL) \ 331 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 332 TAITO_GENERIC_2_BUTTONS(PL) 333 334 #define TAITO_JOY_LRUD_3_BUTTONS(PL) \ 335 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 336 TAITO_GENERIC_3_BUTTONS(PL) 337 338 339 #define TAITO_JOY_UDLR_1_BUTTON_START(PL) \ 340 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 341 TAITO_GENERIC_1_BUTTON_START(PL) 342 343 #define TAITO_JOY_UDLR_2_BUTTONS_START(PL) \ 344 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 345 TAITO_GENERIC_2_BUTTONS_START(PL) 346 347 #define TAITO_JOY_UDLR_3_BUTTONS_START(PL) \ 348 TAITO_GENERIC_JOY_MONO_UDLR(PL) \ 349 TAITO_GENERIC_3_BUTTONS_START(PL) 350 351 #define TAITO_JOY_UDRL_1_BUTTON_START(PL) \ 352 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 353 TAITO_GENERIC_1_BUTTONS_START(PL) 354 355 #define TAITO_JOY_UDRL_2_BUTTONS_START(PL) \ 356 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 357 TAITO_GENERIC_2_BUTTONS_START(PL) 358 359 #define TAITO_JOY_UDRL_3_BUTTONS_START(PL) \ 360 TAITO_GENERIC_JOY_MONO_UDRL(PL) \ 361 TAITO_GENERIC_3_BUTTONS_START(PL) 362 363 #define TAITO_JOY_LRUD_1_BUTTON_START(PL) \ 364 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 365 TAITO_GENERIC_1_BUTTON_START(PL) 366 367 #define TAITO_JOY_LRUD_2_BUTTONS_START(PL) \ 368 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 369 TAITO_GENERIC_2_BUTTONS_START(PL) 370 371 #define TAITO_JOY_LRUD_3_BUTTONS_START(PL) \ 372 TAITO_GENERIC_JOY_MONO_LRUD(PL) \ 373 TAITO_GENERIC_3_BUTTONS_START(PL) 374 375 376 #define TAITO_JOY_DUAL_UDLR(PL_L, PL_H) \ 377 TAITO_GENERIC_JOY_DUAL_UDLR(PL_L, PL_H) 378 379 #define TAITO_JOY_DUAL_UDRL(PL_L, PL_H) \ 380 TAITO_GENERIC_JOY_DUAL_UDRL(PL_L, PL_H) 381