1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail, Nicola Salmoria
3 /*******************************************************************************
4 
5     Input port macros used by many games in multiple IREM drivers
6 
7 *******************************************************************************/
8 
9 
10 /**************************** Inputs ****************************/
11 
12 
13 #define IREM_INPUT_JOY_LOW(PL, STATE, WAY, B01, B02, B04, B08) \
14 	PORT_BIT( 0x0001, STATE, IPT_JOYSTICK_##B01 ) WAY PORT_PLAYER(PL) \
15 	PORT_BIT( 0x0002, STATE, IPT_JOYSTICK_##B02 ) WAY PORT_PLAYER(PL) \
16 	PORT_BIT( 0x0004, STATE, IPT_JOYSTICK_##B04 ) WAY PORT_PLAYER(PL) \
17 	PORT_BIT( 0x0008, STATE, IPT_JOYSTICK_##B08 ) WAY PORT_PLAYER(PL)
18 
19 #define IREM_INPUT_JOY_HIGH(PL, STATE, WAY, B100, B200, B400, B800) \
20 	PORT_BIT( 0x0100, STATE, IPT_JOYSTICK_##B100 ) WAY PORT_PLAYER(PL) \
21 	PORT_BIT( 0x0200, STATE, IPT_JOYSTICK_##B200 ) WAY PORT_PLAYER(PL) \
22 	PORT_BIT( 0x0400, STATE, IPT_JOYSTICK_##B400 ) WAY PORT_PLAYER(PL) \
23 	PORT_BIT( 0x0800, STATE, IPT_JOYSTICK_##B800 ) WAY PORT_PLAYER(PL)
24 
25 #define IREM_INPUT_BUTTONS_LOW(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C, BUTTON_D) \
26 	PORT_BIT( 0x0010, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \
27 	PORT_BIT( 0x0020, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \
28 	PORT_BIT( 0x0040, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL) \
29 	PORT_BIT( 0x0080, STATE, IPT_##BUTTON_D ) PORT_PLAYER(PL)
30 
31 #define IREM_INPUT_BUTTONS_HIGH(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C, BUTTON_D) \
32 	PORT_BIT( 0x1000, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \
33 	PORT_BIT( 0x2000, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \
34 	PORT_BIT( 0x4000, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL) \
35 	PORT_BIT( 0x8000, STATE, IPT_##BUTTON_D ) PORT_PLAYER(PL)
36 
37 
38 #define IREM_GENERIC_JOYSTICKS_2_BUTTONS(PL_L, PL_H) \
39 	IREM_INPUT_JOY_LOW(PL_L, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
40 	IREM_INPUT_BUTTONS_LOW(PL_L, IP_ACTIVE_LOW, UNUSED, UNUSED, BUTTON2, BUTTON1) \
41 	IREM_INPUT_JOY_HIGH(PL_H, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
42 	IREM_INPUT_BUTTONS_HIGH(PL_H, IP_ACTIVE_LOW, UNUSED, UNUSED, BUTTON2, BUTTON1)
43 
44 #define IREM_GENERIC_JOYSTICKS_2_BUTTONS_4WAY(PL_L, PL_H) \
45 	IREM_INPUT_JOY_LOW(PL_L, IP_ACTIVE_LOW, PORT_4WAY, RIGHT, LEFT, DOWN, UP) \
46 	IREM_INPUT_BUTTONS_LOW(PL_L, IP_ACTIVE_LOW, UNUSED, UNUSED, BUTTON2, BUTTON1) \
47 	IREM_INPUT_JOY_HIGH(PL_H, IP_ACTIVE_LOW, PORT_4WAY, RIGHT, LEFT, DOWN, UP) \
48 	IREM_INPUT_BUTTONS_HIGH(PL_H, IP_ACTIVE_LOW, UNUSED, UNUSED, BUTTON2, BUTTON1)
49 
50 #define IREM_GENERIC_JOYSTICKS_3_BUTTONS(PL_L, PL_H) \
51 	IREM_INPUT_JOY_LOW(PL_L, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
52 	IREM_INPUT_BUTTONS_LOW(PL_L, IP_ACTIVE_LOW, UNUSED, BUTTON3, BUTTON2, BUTTON1) \
53 	IREM_INPUT_JOY_HIGH(PL_H, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
54 	IREM_INPUT_BUTTONS_HIGH(PL_H, IP_ACTIVE_LOW, UNUSED, BUTTON3, BUTTON2, BUTTON1)
55 
56 #define IREM_GENERIC_JOYSTICKS_4_BUTTONS(PL_L, PL_H) \
57 	IREM_INPUT_JOY_LOW(PL_L, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
58 	IREM_INPUT_BUTTONS_LOW(PL_L, IP_ACTIVE_LOW, BUTTON4, BUTTON3, BUTTON2, BUTTON1) \
59 	IREM_INPUT_JOY_HIGH(PL_H, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
60 	IREM_INPUT_BUTTONS_HIGH(PL_H, IP_ACTIVE_LOW, BUTTON4, BUTTON3, BUTTON2, BUTTON1)
61 
62 #define IREM_GENERIC_JOYSTICKS_2_BUTTONS_START_COIN(PL_L, PL_H, LOW_START, HIGH_START, LOW_COIN, HIGH_COIN) \
63 	IREM_INPUT_JOY_LOW(PL_L, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
64 	IREM_INPUT_BUTTONS_LOW(PL_L, IP_ACTIVE_LOW, LOW_START, LOW_COIN, BUTTON2, BUTTON1) \
65 	IREM_INPUT_JOY_HIGH(PL_H, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP) \
66 	IREM_INPUT_BUTTONS_HIGH(PL_H, IP_ACTIVE_LOW, HIGH_START, HIGH_COIN, BUTTON2, BUTTON1)
67 
68 #define IREM_INPUT_PLAYER_3 \
69 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) \
70 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) \
71 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) \
72 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) \
73 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START3 ) /* If common slots, Coin3 if separate */ \
74 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_COIN3 ) \
75 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) \
76 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
77 #define IREM_INPUT_PLAYER_3_4WAY \
78 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(3) \
79 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(3) \
80 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3) \
81 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(3) \
82 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START3 ) /* If common slots, Coin3 if separate */ \
83 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_COIN3 ) \
84 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) \
85 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
86 #define IREM_INPUT_PLAYER_4 \
87 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) \
88 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) \
89 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) \
90 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) \
91 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START4 ) /* If common slots, Coin3 if separate */ \
92 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN4 ) \
93 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) \
94 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
95 #define IREM_INPUT_PLAYER_4_4WAY \
96 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(4) \
97 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4) \
98 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4) \
99 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(4) \
100 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START4 ) /* If common slots, Coin3 if separate */ \
101 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN4 ) \
102 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) \
103 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
104 
105 
106 #define IREM_COINS \
107 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) \
108 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) \
109 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) \
110 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) \
111 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
112 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE )  \
113 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )  \
114 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* Actually vblank, handled above */
115 
116 /**************************** Coinage Dip Switches ****************************/
117 
118 /* Mode 2 Coinage */
119 
120 #define IREM_COIN_MODE_2_OLD_LOC(DIPBANK) \
121 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6") \
122 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
123 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
124 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
125 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
126 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":7,8") \
127 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) ) \
128 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
129 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
130 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
131 
132 #define IREM_COIN_MODE_2_DSW1_LOC(DIPBANK) \
133 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6") \
134 	PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) ) \
135 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
136 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
137 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
138 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":7,8") \
139 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) ) \
140 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
141 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
142 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
143 
144 /* on newer boards, coinage settings moved to DSW2 and coin mode dip was put on   */
145 /* DSW1. We may add the tag in the condition and the location as parameters here, */
146 /* to make the definitions a bit more general. However, these are enough to cover */
147 /* all the currently emulated games */
148 #define IREM_COIN_MODE_2 \
149 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x00) PORT_DIPLOCATION("SW2:5,6") \
150 	PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) ) \
151 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
152 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
153 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
154 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x00) PORT_DIPLOCATION("SW2:7,8") \
155 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) ) \
156 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
157 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
158 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
159 
160 #define IREM_COIN_MODE_2_HIGH \
161 	PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Coin_A ) ) PORT_CONDITION("DSW", 0x0800, EQUALS, 0x0000) PORT_DIPLOCATION("SW2:5,6") \
162 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) ) \
163 	PORT_DIPSETTING(      0x1000, DEF_STR( 3C_1C ) ) \
164 	PORT_DIPSETTING(      0x2000, DEF_STR( 2C_1C ) ) \
165 	PORT_DIPSETTING(      0x3000, DEF_STR( 1C_1C ) ) \
166 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Coin_B ) ) PORT_CONDITION("DSW", 0x0800, EQUALS, 0x0000) PORT_DIPLOCATION("SW2:7,8") \
167 	PORT_DIPSETTING(      0xc000, DEF_STR( 1C_2C ) ) \
168 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) ) \
169 	PORT_DIPSETTING(      0x4000, DEF_STR( 1C_5C ) ) \
170 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
171 
172 
173 /* Mode 1 Coinage */
174 
175 #define IREM_Z80_COINAGE_TYPE_1_LOC(DIPBANK) \
176 	/* Coin Mode 1 */ \
177 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2", 0x04, NOTEQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
178 /*  PORT_DIPSETTING(    0x80, DEF_STR( 1C_1C ) ) */ \
179 	PORT_DIPSETTING(    0x90, DEF_STR( 7C_1C ) ) \
180 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
181 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
182 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
183 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
184 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
185 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
186 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) ) \
187 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_3C ) ) \
188 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_4C ) ) \
189 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
190 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_6C ) ) \
191 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_7C ) ) \
192 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ) ) \
193 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
194 	/* Coin Mode 2 */ \
195 	IREM_COIN_MODE_2_OLD_LOC(DIPBANK)
196 
197 #define IREM_Z80_COINAGE_TYPE_2_LOC(DIPBANK) \
198 	/* Coin Mode 1 */ \
199 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2", 0x04, NOTEQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
200 /*  PORT_DIPSETTING(    0x80, DEF_STR( Free_Play ) ) */ \
201 /*  PORT_DIPSETTING(    0x90, DEF_STR( Free_Play ) ) */ \
202 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
203 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
204 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
205 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
206 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
207 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
208 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) ) \
209 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_3C ) ) \
210 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_4C ) ) \
211 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
212 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_6C ) ) \
213 /*  PORT_DIPSETTING(    0x20, DEF_STR( Free_Play ) ) */ \
214 /*  PORT_DIPSETTING(    0x10, DEF_STR( Free_Play ) ) */ \
215 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
216 	/* Coin Mode 2 */ \
217 	IREM_COIN_MODE_2_OLD_LOC(DIPBANK)
218 
219 #define IREM_Z80_COINAGE_TYPE_3_LOC(DIPBANK) \
220 	/* Coin Mode 1 */ \
221 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2", 0x04, NOTEQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
222 	PORT_DIPSETTING(    0x90, DEF_STR( 7C_1C ) ) \
223 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
224 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
225 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
226 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
227 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
228 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
229 /*  PORT_DIPSETTING(    0x80, DEF_STR( 1C_1C ) ) */ \
230 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) ) \
231 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_3C ) ) \
232 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_4C ) ) \
233 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) ) \
234 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_6C ) ) \
235 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_7C ) ) \
236 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ) ) \
237 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
238 	/* Coin Mode 2 */ \
239 	IREM_COIN_MODE_2_OLD_LOC(DIPBANK)
240 
241 #define IREM_Z80_COINAGE_TYPE_4_LOC(DIPBANK) \
242 	/* Coin Mode 1 */ \
243 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2", 0x04, NOTEQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
244 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
245 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
246 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
247 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
248 	PORT_DIPSETTING(    0x10, DEF_STR( 8C_3C ) ) \
249 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
250 	PORT_DIPSETTING(    0x20, DEF_STR( 5C_3C ) ) \
251 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_2C ) ) \
252 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
253 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_3C ) ) \
254 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_2C ) ) \
255 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
256 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_4C ) ) \
257 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) ) \
258 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) ) \
259 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
260 	/* Coin Mode 2 */ \
261 	IREM_COIN_MODE_2_DSW1_LOC(DIPBANK)
262 
263 #define IREM_Z80_COINAGE_TYPE_5_LOC(DIPBANK) \
264 	/* Coin Mode 1 */ \
265 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW2", 0x04, NOTEQUALS, 0x00) PORT_DIPLOCATION(#DIPBANK":5,6,7,8") \
266 	PORT_DIPSETTING(    0x00, DEF_STR( 8C_1C ) ) \
267 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
268 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
269 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
270 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
271 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
272 	PORT_DIPSETTING(    0x10, DEF_STR( 5C_3C ) ) \
273 	PORT_DIPSETTING(    0x20, "3 Coins/5 Credits" ) \
274 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_2C ) ) \
275 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
276 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_3C ) ) \
277 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_2C ) ) \
278 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
279 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_4C ) ) \
280 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) ) \
281 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) ) \
282 	/* Coin Mode 2 */ \
283 	IREM_COIN_MODE_2_DSW1_LOC(DIPBANK)
284 
285 
286 /* New Coin Mode 1, introduced in later m72 games (m72 early games have different Coinage) */
287 
288 #define IREM_COIN_MODE_1_NEW \
289 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:5,6,7,8") \
290 	PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) ) \
291 	PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) ) \
292 	PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) ) \
293 	PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) ) \
294 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) ) \
295 	PORT_DIPSETTING(    0x10, "2 Coins to Start/1 to Continue") \
296 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_2C ) ) \
297 	PORT_DIPSETTING(    0x20, DEF_STR( 4C_3C ) ) \
298 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) ) \
299 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_3C ) ) \
300 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_2C ) ) \
301 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
302 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_4C ) ) \
303 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) ) \
304 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) ) \
305 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
306 
307 #define IREM_COIN_MODE_1_NEW_HIGH \
308 	PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0800, NOTEQUALS, 0x0000)  PORT_DIPLOCATION("SW2:5,6,7,8") \
309 	PORT_DIPSETTING(      0xa000, DEF_STR( 6C_1C ) ) \
310 	PORT_DIPSETTING(      0xb000, DEF_STR( 5C_1C ) ) \
311 	PORT_DIPSETTING(      0xc000, DEF_STR( 4C_1C ) ) \
312 	PORT_DIPSETTING(      0xd000, DEF_STR( 3C_1C ) ) \
313 	PORT_DIPSETTING(      0xe000, DEF_STR( 2C_1C ) ) \
314 	PORT_DIPSETTING(      0x1000, "2 Coins to Start/1 to Continue") \
315 	PORT_DIPSETTING(      0x3000, DEF_STR( 3C_2C ) ) \
316 	PORT_DIPSETTING(      0x2000, DEF_STR( 4C_3C ) ) \
317 	PORT_DIPSETTING(      0xf000, DEF_STR( 1C_1C ) ) \
318 	PORT_DIPSETTING(      0x4000, DEF_STR( 2C_3C ) ) \
319 	PORT_DIPSETTING(      0x9000, DEF_STR( 1C_2C ) ) \
320 	PORT_DIPSETTING(      0x8000, DEF_STR( 1C_3C ) ) \
321 	PORT_DIPSETTING(      0x7000, DEF_STR( 1C_4C ) ) \
322 	PORT_DIPSETTING(      0x6000, DEF_STR( 1C_5C ) ) \
323 	PORT_DIPSETTING(      0x5000, DEF_STR( 1C_6C ) ) \
324 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
325