1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 /***************************************************************************
4 
5 Rally X      (c) 1980 Namco
6 New Rally X  (c) 1981 Namco
7 
8 and also
9 
10 Jungler      (c) 1981 Konami
11 Tactician    (c) 1981 Konami
12 Loco-Motion  (c) 1982 Konami
13 Commando     (c) 1983 Sega
14 
15 driver by Nicola Salmoria
16 
17 There doesn't seem to be much doubt that Konami copied the video hardware of
18 Rally X.
19 The boards are surely very different; Rally X has video and sound split on the
20 two boards, while the Konami version has all video in one board and all sound
21 in the other.
22 Rally X uses a single Z80 and Namco sound hardware, while the others use the
23 standard Konami sound hardware of that era (slave Z80 + 2xAY-3-8910).
24 Also, the Konami design includes an optional starfield generator, only used
25 by Tactician.
26 
27 Rally X has two Namco customs. They are nothing more than simple logic and can
28 be replaced by daughter boards with TTL parts.
29 NVC285 (DIP28): Z-80 Sync buss controller. Can be replaced by plug-in board
30 A082-91383-B000
31 NVC293 (DIP18): Video shifter. Can be replaced by plug-in board A082-91388-A000.
32 
33 
34 Rally X Memory map:
35 ------------------
36 Note: the memory map for the RAM 6x chips derived from the schematics doesn't
37 seem to be entirely correct. Here it's modified to match program behaviour.
38 The names might be assigned incorrectly.
39 
40 Address          Dir Data     Name      Description
41 ---------------- --- -------- --------- -----------------------
42 0-000xxxxxxxxxxx R   xxxxxxxx ROM 1B    program ROM \[1]
43 0-001xxxxxxxxxxx R   xxxxxxxx ROM 1C    program ROM /
44 0-010xxxxxxxxxxx R   xxxxxxxx ROM 1D    program ROM \[1]
45 0-011xxxxxxxxxxx R   xxxxxxxx ROM 1E    program ROM /
46 0-100xxxxxxxxxxx R   xxxxxxxx ROM 1H    program ROM \[1]
47 0-101xxxxxxxxxxx R   xxxxxxxx ROM 1J    program ROM /
48 0-110xxxxxxxxxxx R   xxxxxxxx ROM 1K    program ROM \[1]
49 0-111xxxxxxxxxxx R   xxxxxxxx ROM 1L    program ROM /
50 1-0000xxxxxxxxxx R/W xxxxxxxx RAM 6A/6C radar tilemap RAM + sprites
51 1-0001xxxxxxxxxx R/W xxxxxxxx RAM 6B/6D playfield tilemap RAM
52 1-0010xxxxxxxxxx R/W xxxxxxxx RAM 6J/6K radar tilemap RAM + sprites
53 1-0011xxxxxxxxxx R/W xxxxxxxx RAM 6H/6L playfield tilemap RAM
54 1-0110xxxxxxxxxx R/W xxxxxxxx RAM 6F/6M work RAM
55 1-0111xxxxxxxxxx R/W xxxxxxxx RAM 6E/6N work RAM
56 1-1----00---xxxx   W ----xxxx SODWR     bullets shape and X pos msb [2]
57 1-1----01-------   W --------           watchdog reset
58 1-1----10000xxxx   W ----xxxx RAM 2N    \ sound control registers
59 1-1----10001xxxx   W ----xxxx RAM 2P    /
60 1-1----10010----   W          n.c.
61 1-1----10011----   W xxxxxxxx POSIX     playfield X scroll
62 1-1----10100----   W xxxxxxxx POSIY     playfield Y scroll
63 1-1----10101----   W          n.c.
64 1-1----10110       W          WR2       ?
65 1-1----10111       W          WR3       ? this is written to A LOT of times every frame
66 1-1----11----000   W -------x BANG      explosion sound trigger
67 1-1----11----001   W -------x INT ON    interrupt enable
68 1-1----11----010   W -------x SOUND ON  sound enable [3]
69 1-1----11----011   W -------x FLIP      flip screen
70 1-1----11----100   W -------x           1 player start lamp
71 1-1----11----101   W -------x           2 players start lamp
72 1-1----11----110   W -------x           coin lockout
73 1-1----11----111   W -------x           coin counter
74 1-1----00------- R   xxxxxxxx           switch inputs
75 1-1----01------- R   xxxxxxxx           switch inputs
76 1-1----10------- R   xxxxxxxx           dip switches
77 1-1----11        R            RDSTB     ?
78 
79 [1] either 2x2716 or 1x2732
80 [2] SO = Small Objects? Only locations 4-F are used.
81 [3] doesn't seem to work in New Rally X.
82 
83 I/O ports:
84 OUT on port $0 sets the interrupt vector/instruction (the game uses both
85 IM 2 and IM 0)
86 
87 
88 Loco-Motion Memory map:
89 ----------------------
90 Main CPU:
91 
92 Address          Dir Data     Name      Description
93 ---------------- --- -------- --------- -----------------------
94 0000xxxxxxxxxxxx R   xxxxxxxx ROM 3D    program ROM
95 0001xxxxxxxxxxxx R   xxxxxxxx ROM 3E    program ROM
96 0010xxxxxxxxxxxx R   xxxxxxxx ROM 3F    program ROM
97 0011xxxxxxxxxxxx R   xxxxxxxx ROM 3G    program ROM
98 0100xxxxxxxxxxxx R   xxxxxxxx ROM 3J    program ROM
99 0101xxxxxxxxxxxx R   xxxxxxxx ROM 3K    program ROM
100 0110xxxxxxxxxxxx R   xxxxxxxx ROM 3L    program ROM
101 0111xxxxxxxxxxxx R   xxxxxxxx ROM 3M    program ROM
102 1-000xxxxxxxxxxx R/W xxxxxxxx RAM 3C    tilemap RAM (tile code) [1]
103 1-001xxxxxxxxxxx R/W xxxxxxxx RAM 3B    tilemap RAM (tile attr) [1]
104 1-011xxxxxxxxxxx R/W xxxxxxxx RAM 3A    work RAM
105 1-1----00------- R   xxxxxxxx IN1       switch inputs
106 1-1----01------- R   xxxxxxxx IN2       switch inputs
107 1-1----10------- R   xxxxxxxx IN3       switch inputs / dip switches
108 1-1----11------- R   xxxxxxxx IN4       dip switches
109 1-1----00---xxxx   W ----xxxx SCARW     bullets shape and X pos msb
110 1-1----01-------   W --------           watchdog reset
111 1-1----10-------   W xxxxxxxx SOUNDDATA command for sound CPU
112 1-1----11----000   W -------x SOUNDON   trigger irq on sound CPU
113 1-1----11----001   W -------x INTST     irq enable/acknowledge
114 1-1----11----010   W -------x MUT       sound disable
115 1-1----11----011   W -------x FLIP      flip screen
116 1-1----11----100   W -------x OUT1      coin counter #1
117 1-1----11----101   W -------x OUT2      ?
118 1-1----11----110   W -------x OUT3      coin counter #2
119 1-1----11----111   W -------x STARSON   stars enable (optional)
120 
121 [1] 1st half is "radar" + sprite registers, 2nd half is scrolling playfield
122 
123 
124 Sound CPU (standard Konami sound board):
125 
126 Address          Dir Data     Name      Description
127 ---------------- --- -------- --------- -----------------------
128 0000xxxxxxxxxxxx R   xxxxxxxx ROM 1B    program ROM
129 0001xxxxxxxxxxxx R   xxxxxxxx ROM 1C    program ROM
130 0010--xxxxxxxxxx R/W xxxxxxxx RAM 2B/2C work RAM
131 0011xxxxxx------   W -------- CKB       RC filters enable for 8910 #1 (data is in A6-A11)
132 0011------xxxxxx   W -------- CKB       RC filters enable for 8910 #2 (data is in A0-A5)
133 0100------------ R/W xxxxxxxx SEN1      AY-3-8910 #1 r/w [1]
134 0101------------   W xxxxxxxx SEN2      AY-3-8910 #1 ctrl
135 0110------------ R/W xxxxxxxx SEN3      AY-3-8910 #2 r/w
136 0111------------   W xxxxxxxx SEN4      AY-3-8910 #2 ctrl
137 
138 [1] port A: command from main CPU; port B: timer
139 
140 
141 Notes:
142 - Easter egg (both Rally X and New Rally X):
143   - enter service mode
144   - keep B1 pressed and enter the following sequence:
145     2xU 7xD 1xR 6xL
146   (c) NAMCO LTD. 1980 will be added at the bottom of the screen.
147 
148 - The Test Mode "dip switch" actually comes from the edge connector, but is mapped
149   in memory in place of dip switch #8. Dip switch #8 is supposed to freeze the
150   game and is entirely handled by hardware.
151 
152 - PROM 7a controls the video shape. This is used to hide the rightmost 4 char
153   columns in Locomotion and Commando, while showing them in Jungler and
154   Tactician.
155 
156 - The playfield scroll registers used in Rally X are present, but not useful
157   (always 0) in Jungler and Tactician. They were removed in Locomotn and Commando.
158 
159 - commsega has more sprites and more "bullets" than the other games.
160 
161 - it seems that Jungler doesn't support high priority tiles. Maybe they
162   disabled that feature because they needed more color combinations.
163 
164 - there are also 1-pixel sprite and bullet placement differences from game to game.
165 
166 - cottong is a bootleg of a very different version of locomotn, possibly a
167   prototype.
168 
169 - commsega:
170   Due to a bug at 0x1259, bit 3 of DSW1 also affects the "Bonus Life" value:
171      - when bit 3 is OFF, you get an extra life at 30000 points
172      - when bit 3 is ON , you get an extra life at 50000 points
173    At 0x0050 there is code to give infinite lives for player 1 when bit 3 of DSW0
174    is ON. I can't tell however when it is supposed to be called.
175 
176 - tactician has the score area at the bottom of the screen. While highly unusual,
177   this is the correct behaviour and has been verified with screenshots.
178 
179 TODO:
180 - commsega: the first time you kill a soldier, the music stops. When you die,
181   the music restarts and won't stop a second time.
182 
183 - rallyx: is the playing field area 221 pixels wide like with bosco? Currently
184   kludged with set_scrolldx(3, 3);
185 
186 - rallyx: Three things in the schematics that I haven't been able to trace:
187   WR2, WR3 and RDSTB. Only WR3 is actually used by the game.
188 
189 - rallyx: emulate the explosion with discrete sound components. The schematics
190   are available so it should be possible eventually.
191 
192 - tactician: the bouncing bomb seems to show incorrect graphics when it's hit.
193 
194 ***************************************************************************/
195 
196 #include "emu.h"
197 #include "includes/rallyx.h"
198 
199 #include "cpu/z80/z80.h"
200 #include "machine/74259.h"
201 #include "machine/gen_latch.h"
202 #include "machine/watchdog.h"
203 #include "sound/samples.h"
204 #include "speaker.h"
205 
206 #define MASTER_CLOCK    XTAL(18'432'000)
207 
208 
209 /*************************************
210  *
211  *  Memory handlers
212  *
213  *************************************/
214 
rallyx_interrupt_vector_w(uint8_t data)215 void rallyx_state::rallyx_interrupt_vector_w(uint8_t data)
216 {
217 	m_maincpu->set_input_line_vector(0, data); // Z80
218 	m_maincpu->set_input_line(0, CLEAR_LINE);
219 }
220 
221 
bang_w(int state)222 void rallyx_state::bang_w(int state)
223 {
224 	if (state == 0 && m_last_bang != 0)
225 		m_samples->start(0, 0);
226 
227 	m_last_bang = state;
228 }
229 
230 
irq_mask_w(int state)231 void rallyx_state::irq_mask_w(int state)
232 {
233 	m_main_irq_mask = state;
234 	if (!state)
235 		m_maincpu->set_input_line(0, CLEAR_LINE);
236 }
237 
nmi_mask_w(int state)238 void rallyx_state::nmi_mask_w(int state)
239 {
240 	m_main_irq_mask = state;
241 	if (!state)
242 		m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
243 }
244 
245 
sound_on_w(int state)246 void rallyx_state::sound_on_w(int state)
247 {
248 	// this doesn't work in New Rally X so I'm not supporting it
249 	//m_namco_sound->pacman_sound_enable_w(state);
250 }
251 
252 
flip_screen_w(int state)253 void rallyx_state::flip_screen_w(int state)
254 {
255 	flip_screen_set(state);
256 }
257 
258 
coin_lockout_w(int state)259 void rallyx_state::coin_lockout_w(int state)
260 {
261 	machine().bookkeeping().coin_lockout_w(0, !state);
262 }
263 
264 
coin_counter_1_w(int state)265 void rallyx_state::coin_counter_1_w(int state)
266 {
267 	machine().bookkeeping().coin_counter_w(0, state);
268 }
269 
270 
coin_counter_2_w(int state)271 void rallyx_state::coin_counter_2_w(int state)
272 {
273 	machine().bookkeeping().coin_counter_w(1, state);
274 }
275 
276 
277 /*************************************
278  *
279  *  Address maps
280  *
281  *************************************/
282 
rallyx_map(address_map & map)283 void rallyx_state::rallyx_map(address_map &map)
284 {
285 	map(0x0000, 0x3fff).rom();
286 	map(0x8000, 0x8fff).ram().w(FUNC(rallyx_state::videoram_w)).share(m_videoram);
287 	map(0x9800, 0x9fff).ram();
288 	map(0xa000, 0xa000).portr("P1");
289 	map(0xa080, 0xa080).portr("P2");
290 	map(0xa100, 0xa100).portr("DSW");
291 	map(0xa000, 0xa00f).writeonly().share(m_radarattr);
292 	map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w));
293 	map(0xa100, 0xa11f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w));
294 	map(0xa130, 0xa130).w(FUNC(rallyx_state::scrollx_w));
295 	map(0xa140, 0xa140).w(FUNC(rallyx_state::scrolly_w));
296 	map(0xa170, 0xa170).nopw();            // ?
297 	map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0));
298 }
299 
io_map(address_map & map)300 void rallyx_state::io_map(address_map &map)
301 {
302 	map.global_mask(0xff);
303 	map(0, 0).w(FUNC(rallyx_state::rallyx_interrupt_vector_w));
304 }
305 
306 
jungler_map(address_map & map)307 void rallyx_state::jungler_map(address_map &map)
308 {
309 	map(0x0000, 0x7fff).rom();
310 	map(0x8000, 0x8fff).ram().w(FUNC(rallyx_state::videoram_w)).share(m_videoram);
311 	map(0x9800, 0x9fff).ram();
312 	map(0xa000, 0xa000).portr("P1");
313 	map(0xa080, 0xa080).portr("P2");
314 	map(0xa100, 0xa100).portr("DSW1");
315 	map(0xa180, 0xa180).portr("DSW2");
316 	map(0xa000, 0xa00f).mirror(0x00f0).writeonly().share(m_radarattr);   // jungler writes to a03x
317 	map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w));
318 	map(0xa100, 0xa100).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w));
319 	map(0xa130, 0xa130).w(FUNC(rallyx_state::scrollx_w)); // only jungler and tactcian
320 	map(0xa140, 0xa140).w(FUNC(rallyx_state::scrolly_w)); // only jungler and tactcian
321 	map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0));
322 }
323 
324 
325 /*************************************
326  *
327  *  Input ports
328  *
329  *************************************/
330 
331 static INPUT_PORTS_START( rallyx )
332 	PORT_START("P1")
333 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
334 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
335 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
336 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
337 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
338 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
339 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
340 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
341 
342 	PORT_START("P2")
343 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("P2:1")
344 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
345 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
346 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
347 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
348 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
349 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
350 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
351 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
352 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
353 
354 	PORT_START("DSW")
355 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coinage ) )      PORT_DIPLOCATION("DSW:7,8")
356 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
357 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
358 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
359 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
360 	PORT_DIPNAME( 0x38, 0x08, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("DSW:4,5,6")
361 	PORT_DIPSETTING(    0x10, "1 Car, Medium" )
362 	PORT_DIPSETTING(    0x28, "1 Car, Hard" )
363 	PORT_DIPSETTING(    0x00, "2 Cars, Easy" )
364 	PORT_DIPSETTING(    0x18, "2 Cars, Medium" )
365 	PORT_DIPSETTING(    0x30, "2 Cars, Hard" )
366 	PORT_DIPSETTING(    0x08, "3 Cars, Easy" )
367 	PORT_DIPSETTING(    0x20, "3 Cars, Medium" )
368 	PORT_DIPSETTING(    0x38, "3 Cars, Hard" )
369 	PORT_DIPNAME( 0x06, 0x02, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("DSW:2,3")
370 	PORT_DIPSETTING(    0x02, "15000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
371 	PORT_DIPSETTING(    0x04, "30000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
372 	PORT_DIPSETTING(    0x06, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
373 
374 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
375 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
376 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
377 
378 	PORT_DIPSETTING(    0x02, "10000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
379 	PORT_DIPSETTING(    0x04, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
380 	PORT_DIPSETTING(    0x06, "30000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
381 
382 	PORT_DIPSETTING(    0x02, "15000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
383 	PORT_DIPSETTING(    0x04, "30000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
384 	PORT_DIPSETTING(    0x06, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
385 
386 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
387 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
388 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
389 
390 	PORT_DIPSETTING(    0x02, "10000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
391 	PORT_DIPSETTING(    0x04, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
392 	PORT_DIPSETTING(    0x06, "30000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
393 
394 	PORT_DIPSETTING(    0x02, "15000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
395 	PORT_DIPSETTING(    0x04, "30000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
396 	PORT_DIPSETTING(    0x06, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
397 
398 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
399 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
400 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
401 	PORT_DIPSETTING(    0x00, DEF_STR( None ) )
402 	PORT_SERVICE_DIPLOC( 0x01, 0x01, "DSW:1")
403 INPUT_PORTS_END
404 
405 static INPUT_PORTS_START( dngrtrck )
406 	PORT_INCLUDE( rallyx )
407 
408 	PORT_MODIFY("DSW")
409 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )      PORT_DIPLOCATION("DSW:7,8")
410 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
411 	PORT_DIPSETTING(    0x40, "1stC/1C 2ndC/2C" )
412 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
413 	PORT_DIPSETTING(    0xc0, "1stC/2C 2ndC/3C" )
414 INPUT_PORTS_END
415 
416 static INPUT_PORTS_START( nrallyx )
417 	PORT_INCLUDE( rallyx )
418 
419 	PORT_MODIFY("DSW")
420 	PORT_DIPNAME( 0x38, 0x00, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("DSW:4,5,6")
421 	PORT_DIPSETTING(    0x10, "1 Car, Medium" )
422 	PORT_DIPSETTING(    0x28, "1 Car, Hard" )
423 	PORT_DIPSETTING(    0x18, "2 Cars, Medium" )
424 	PORT_DIPSETTING(    0x30, "2 Cars, Hard" )
425 	PORT_DIPSETTING(    0x00, "3 Cars, Easy" )
426 	PORT_DIPSETTING(    0x20, "3 Cars, Medium" )
427 	PORT_DIPSETTING(    0x38, "3 Cars, Hard" )
428 	PORT_DIPSETTING(    0x08, "4 Cars, Easy" )
429 
430 	PORT_DIPNAME( 0x06, 0x02, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("DSW:2,3")
431 	PORT_DIPSETTING(    0x02, "20000/80000" )   PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
432 	PORT_DIPSETTING(    0x04, "20000/100000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
433 	PORT_DIPSETTING(    0x06, "20000/120000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x00)
434 
435 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
436 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
437 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x08)
438 
439 	PORT_DIPSETTING(    0x02, "20000/80000" )   PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
440 	PORT_DIPSETTING(    0x04, "20000/100000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
441 	PORT_DIPSETTING(    0x06, "20000/120000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x10)
442 
443 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
444 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
445 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x18)
446 
447 	PORT_DIPSETTING(    0x02, "20000/80000" )   PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
448 	PORT_DIPSETTING(    0x04, "20000/100000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
449 	PORT_DIPSETTING(    0x06, "20000/120000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x20)
450 
451 	PORT_DIPSETTING(    0x02, "20000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
452 	PORT_DIPSETTING(    0x04, "40000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
453 	PORT_DIPSETTING(    0x06, "60000" )     PORT_CONDITION("DSW", 0x38, EQUALS, 0x28)
454 
455 	PORT_DIPSETTING(    0x02, "20000/80000" )   PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
456 	PORT_DIPSETTING(    0x04, "20000/100000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
457 	PORT_DIPSETTING(    0x06, "20000/120000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x30)
458 
459 	PORT_DIPSETTING(    0x02, "20000/80000" )   PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
460 	PORT_DIPSETTING(    0x04, "20000/100000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
461 	PORT_DIPSETTING(    0x06, "20000/120000" )  PORT_CONDITION("DSW", 0x38, EQUALS, 0x38)
462 INPUT_PORTS_END
463 
464 
465 static INPUT_PORTS_START( jungler )
466 	PORT_START("P1")
467 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
468 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
469 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
470 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
471 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
472 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
473 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
474 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
475 
476 	PORT_START("P2")
477 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
478 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
479 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
480 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
481 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
482 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
483 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
484 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
485 
486 	PORT_START("DSW1")      // Sound board
487 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
488 	PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
489 
490 	PORT_START("DSW2")      // CPU board
491 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("DSW2:1,2,3")
492 	PORT_DIPSETTING(    0x01, DEF_STR( 4C_1C ) )
493 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
494 	PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
495 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_3C ) )
496 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
497 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
498 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
499 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
500 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("DSW2:4,5,6")
501 	PORT_DIPSETTING(    0x08, DEF_STR( 4C_1C ) )
502 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
503 	PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) )
504 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_3C ) )
505 	PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) )
506 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) )
507 	PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
508 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) )
509 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("DSW2:7")
510 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
511 	PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
512 	PORT_DIPNAME( 0x80, 0x80, "Test (255 lives)" )      PORT_DIPLOCATION("DSW2:8")
513 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
514 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
515 INPUT_PORTS_END
516 
517 
518 static INPUT_PORTS_START( locomotn )
519 	PORT_START("P1")
520 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
521 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
522 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
523 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
524 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
525 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
526 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
527 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
528 
529 	PORT_START("P2")
530 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
531 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
532 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
533 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
534 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
535 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
536 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
537 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
538 
539 	PORT_START("DSW1")      // Sound board
540 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
541 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
542 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )        PORT_DIPLOCATION("DSW1:5,6")
543 	PORT_DIPSETTING(    0x30, "3" )
544 	PORT_DIPSETTING(    0x20, "4" )
545 	PORT_DIPSETTING(    0x10, "5" )
546 	PORT_DIPSETTING(    0x00, "255" )
547 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("DSW1:4")
548 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
549 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
550 	PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "DSW1:3")
551 	PORT_DIPNAME( 0x02, 0x02, "Intermissions" )     PORT_DIPLOCATION("DSW1:2")
552 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
553 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
554 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("DSW1:1")
555 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
556 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
557 
558 	PORT_START("DSW2")      // CPU board
559 	PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("DSW2:1,2,3,4")
560 	PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
561 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_1C ) )
562 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
563 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_2C ) )
564 	PORT_DIPSETTING(    0x08, DEF_STR( 4C_3C ) )
565 	PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
566 	PORT_DIPSETTING(    0x0c, DEF_STR( 3C_4C ) )
567 	PORT_DIPSETTING(    0x0e, DEF_STR( 2C_3C ) )
568 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_2C ) )
569 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
570 	PORT_DIPSETTING(    0x0b, DEF_STR( 1C_3C ) )
571 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
572 	PORT_DIPSETTING(    0x0d, DEF_STR( 1C_5C ) )
573 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
574 	PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
575 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
576 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("DSW2:5,6,7,8")
577 	PORT_DIPSETTING(    0x40, DEF_STR( 4C_1C ) )
578 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_1C ) )
579 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
580 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_2C ) )
581 	PORT_DIPSETTING(    0x80, DEF_STR( 4C_3C ) )
582 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
583 	PORT_DIPSETTING(    0xc0, DEF_STR( 3C_4C ) )
584 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_3C ) )
585 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_2C ) )
586 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
587 	PORT_DIPSETTING(    0xb0, DEF_STR( 1C_3C ) )
588 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
589 	PORT_DIPSETTING(    0xd0, DEF_STR( 1C_5C ) )
590 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
591 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
592 	PORT_DIPSETTING(    0x00, "No Coin B" )
593 	// "No Coin B" = coins produce sound, but no effect on coin counter
594 INPUT_PORTS_END
595 
596 
597 static INPUT_PORTS_START( tactcian )
598 	PORT_INCLUDE( locomotn )
599 
600 		PORT_MODIFY("P1")
601 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
602 
603 	PORT_MODIFY("P2")
604 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
605 
606 	PORT_MODIFY("DSW1")      // Sound board
607 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )        PORT_DIPLOCATION("DSW1:5,6")
608 	PORT_DIPSETTING(    0x30, "255" )
609 	PORT_DIPSETTING(    0x20, "5" )
610 	PORT_DIPSETTING(    0x10, "4" )
611 	PORT_DIPSETTING(    0x00, "3" )
612 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )      PORT_DIPLOCATION("DSW1:2,3")
613 	PORT_DIPSETTING(    0x06, DEF_STR( 4C_1C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x00)
614 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x00)
615 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x00)
616 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x00)
617 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x01)
618 	PORT_DIPSETTING(    0x04, "A 2C/1C  B 1C/3C" )      PORT_CONDITION("DSW2", 0x01, EQUALS, 0x01)
619 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )        PORT_CONDITION("DSW2", 0x01, EQUALS, 0x01)
620 	PORT_DIPSETTING(    0x06, "A 1C/1C  B 1C/6C" )      PORT_CONDITION("DSW2", 0x01, EQUALS, 0x01)
621 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("DSW1:1")
622 	PORT_DIPSETTING(    0x00, "10k, 80k then every 100k" )
623 	PORT_DIPSETTING(    0x01, "20k, 80k then every 100k" )
624 
625 	PORT_MODIFY("DSW2")      // CPU board
626 	PORT_DIPNAME( 0x01, 0x00, "Coin Mode" )         PORT_DIPLOCATION("DSW2:1")
627 	PORT_DIPSETTING(    0x00, "Mode 1" )
628 	PORT_DIPSETTING(    0x01, "Mode 2" )
629 	PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "DSW2:2")
630 	PORT_DIPUNUSED_DIPLOC( 0x04, 0x00, "DSW2:3")
631 	PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "DSW2:4")
632 	PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "DSW2:5")
633 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "DSW2:6")
634 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "DSW2:7")
635 	PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "DSW2:8")
636 INPUT_PORTS_END
637 
638 
639 static INPUT_PORTS_START( commsega )
640 	PORT_START("P1")
641 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
642 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
643 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
644 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
645 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
646 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
647 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
648 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
649 
650 	PORT_START("P2")
651 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
652 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
653 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
654 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
655 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
656 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
657 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
658 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
659 
660 	PORT_START("DSW1")      // (sound board)
661 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
662 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )        PORT_DIPLOCATION("DSW1:7")
663 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "DSW1:6")
664 	PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "DSW1:5")
665 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("DSW1:4") // "Infinite Lives" - See notes
666 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
667 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
668 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("DSW1:1,2,3")
669 	PORT_DIPSETTING(    0x04, DEF_STR( 4C_1C ) )
670 	PORT_DIPSETTING(    0x05, DEF_STR( 3C_1C ) )
671 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_1C ) )
672 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
673 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_3C ) )
674 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
675 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
676 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
677 
678 	PORT_START("DSW2")      // (CPU board)
679 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )        PORT_DIPLOCATION("DSW2:1,2")
680 	PORT_DIPSETTING(    0x03, "3" )
681 	PORT_DIPSETTING(    0x02, "4" )
682 	PORT_DIPSETTING(    0x01, "5" )
683 	PORT_DIPSETTING(    0x00, "6" )
684 	PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("DSW2:3,4,5")
685 	PORT_DIPSETTING(    0x10, DEF_STR( 4C_1C ) )            // Bonus Life : 50000 points
686 	PORT_DIPSETTING(    0x14, DEF_STR( 3C_1C ) )            // Bonus Life : 50000 points
687 	PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) )            // Bonus Life : 30000 points
688 	PORT_DIPSETTING(    0x1c, DEF_STR( 1C_1C ) )            // Bonus Life : 30000 points
689 	PORT_DIPSETTING(    0x04, DEF_STR( 2C_3C ) )            // Bonus Life : 50000 points
690 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_2C ) )            // Bonus Life : 30000 points
691 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )            // Bonus Life : 30000 points
692 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )        // Bonus Life : 50000 points
693 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "DSW2:6")
694 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("DSW2:7") // Check code at 0x1fc5
695 	PORT_DIPSETTING(    0x40, DEF_STR( Easy ) )             // 16 flying enemies to kill
696 	PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )             // 24 flying enemies to kill
697 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )      PORT_DIPLOCATION("DSW2:8")
698 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
699 	PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
700 INPUT_PORTS_END
701 
702 
703 /*************************************
704  *
705  *  Graphics definitions
706  *
707  *************************************/
708 
709 static const gfx_layout rallyx_charlayout =
710 {
711 	8,8,
712 	RGN_FRAC(1,1),
713 	2,
714 	{ 0, 4 },
715 	{ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
716 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
717 	16*8
718 };
719 
720 static const gfx_layout jungler_charlayout =
721 {
722 	8,8,
723 	RGN_FRAC(1,1),
724 	2,
725 	{ 4, 0 },
726 	{ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
727 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
728 	16*8
729 };
730 
731 static const gfx_layout rallyx_spritelayout =
732 {
733 	16,16,
734 	RGN_FRAC(1,1),
735 	2,
736 	{ 0, 4 },
737 	{ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
738 				24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3 },
739 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
740 			32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
741 	64*8
742 };
743 
744 static const gfx_layout jungler_spritelayout =
745 {
746 	16,16,
747 	RGN_FRAC(1,1),
748 	2,
749 	{ 4, 0 },
750 	{ 8*8, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3,
751 			24*8+0, 24*8+1, 24*8+2, 24*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3 },
752 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
753 			32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
754 	64*8
755 };
756 
757 static const gfx_layout dotlayout =
758 {
759 	4,4,
760 	8,
761 	2,
762 	{ 6, 7 },
763 	{ 0*8, 1*8, 2*8, 3*8 },
764 	{ 0*32, 1*32, 2*32, 3*32 },
765 	16*8
766 };
767 
768 static GFXDECODE_START( gfx_rallyx )
769 	GFXDECODE_ENTRY( "gfx1", 0, rallyx_charlayout,     0, 64 )
770 	GFXDECODE_ENTRY( "gfx1", 0, rallyx_spritelayout,   0, 64 )
771 	GFXDECODE_ENTRY( "gfx2", 0, dotlayout,         64*4,  1 )
772 GFXDECODE_END
773 
774 static GFXDECODE_START( gfx_jungler )
775 	GFXDECODE_ENTRY( "gfx1", 0, jungler_charlayout,    0, 64 )
776 	GFXDECODE_ENTRY( "gfx1", 0, jungler_spritelayout,  0, 64 )
777 	GFXDECODE_ENTRY( "gfx2", 0, dotlayout,          64*4,  1 )
778 GFXDECODE_END
779 
780 
781 /*************************************
782  *
783  *  Sound interfaces
784  *
785  *************************************/
786 
787 static const char *const rallyx_sample_names[] =
788 {
789 	"*rallyx",
790 	"bang",
791 	nullptr   // end of array
792 };
793 
794 /*************************************
795  *
796  *  Machine driver
797  *
798  *************************************/
799 
MACHINE_START_MEMBER(rallyx_state,rallyx)800 MACHINE_START_MEMBER(rallyx_state,rallyx)
801 {
802 	save_item(NAME(m_last_bang));
803 	save_item(NAME(m_stars_enable));
804 	save_item(NAME(m_main_irq_mask));
805 }
806 
rallyx_vblank_irq(int state)807 void rallyx_state::rallyx_vblank_irq(int state)
808 {
809 	if (state && m_main_irq_mask)
810 		m_maincpu->set_input_line(0, ASSERT_LINE);
811 }
812 
jungler_vblank_irq(int state)813 void rallyx_state::jungler_vblank_irq(int state)
814 {
815 	if (state && m_main_irq_mask)
816 		m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
817 }
818 
rallyx(machine_config & config)819 void rallyx_state::rallyx(machine_config &config)
820 {
821 	// basic machine hardware
822 	Z80(config, m_maincpu, MASTER_CLOCK/6);    // 3.072 MHz
823 	m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::rallyx_map);
824 	m_maincpu->set_addrmap(AS_IO, &rallyx_state::io_map);
825 
826 	ls259_device &mainlatch(LS259(config, "mainlatch")); // 259 at 12M or 4099 at 11M on Logic Board I
827 	mainlatch.q_out_cb<0>().set(FUNC(rallyx_state::bang_w)); // BANG
828 	mainlatch.q_out_cb<1>().set(FUNC(rallyx_state::irq_mask_w)); // INT ON
829 	mainlatch.q_out_cb<2>().set(FUNC(rallyx_state::sound_on_w)); // SOUND ON
830 	mainlatch.q_out_cb<3>().set(FUNC(rallyx_state::flip_screen_w)); // FLIP
831 	mainlatch.q_out_cb<4>().set_output("led0");
832 	mainlatch.q_out_cb<5>().set_output("led1");
833 	mainlatch.q_out_cb<6>().set(FUNC(rallyx_state::coin_lockout_w));
834 	mainlatch.q_out_cb<7>().set(FUNC(rallyx_state::coin_counter_1_w));
835 
836 	WATCHDOG_TIMER(config, "watchdog");
837 
838 	MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx)
839 
840 	// video hardware
841 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
842 	m_screen->set_refresh_hz(60.606060);
843 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
844 	m_screen->set_size(36*8, 32*8);
845 	m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
846 	m_screen->set_screen_update(FUNC(rallyx_state::screen_update_rallyx));
847 	m_screen->set_palette(m_palette);
848 	m_screen->screen_vblank().set(FUNC(rallyx_state::rallyx_vblank_irq));
849 
850 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_rallyx);
851 
852 	PALETTE(config, m_palette, FUNC(rallyx_state::rallyx_palette), 64*4 + 4, 32);
853 	m_palette->enable_shadows();
854 
855 	MCFG_VIDEO_START_OVERRIDE(rallyx_state,rallyx)
856 
857 	// sound hardware
858 	SPEAKER(config, "mono").front_center();
859 
860 	NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); // 96 KHz
861 	m_namco_sound->set_voices(3);
862 	m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
863 
864 	SAMPLES(config, m_samples);
865 	m_samples->set_channels(1);
866 	m_samples->set_samples_names(rallyx_sample_names);
867 	m_samples->add_route(ALL_OUTPUTS, "mono", 0.80);
868 }
869 
jungler(machine_config & config)870 void rallyx_state::jungler(machine_config &config)
871 {
872 	// basic machine hardware
873 	Z80(config, m_maincpu, MASTER_CLOCK/6);    // 3.072 MHz
874 	m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::jungler_map);
875 
876 	ls259_device &mainlatch(LS259(config, "mainlatch")); // 1C on Loco-Motion
877 	mainlatch.q_out_cb<0>().set("timeplt_audio", FUNC(timeplt_audio_device::sh_irqtrigger_w)); // SOUNDON
878 	mainlatch.q_out_cb<1>().set(FUNC(rallyx_state::nmi_mask_w)); // INTST
879 	mainlatch.q_out_cb<2>().set("timeplt_audio", FUNC(timeplt_audio_device::mute_w)); // MUT
880 	mainlatch.q_out_cb<3>().set(FUNC(rallyx_state::flip_screen_w)); // FLIP
881 	mainlatch.q_out_cb<4>().set(FUNC(rallyx_state::coin_counter_1_w)); // OUT1
882 	mainlatch.q_out_cb<5>().set_nop(); // OUT2
883 	mainlatch.q_out_cb<6>().set(FUNC(rallyx_state::coin_counter_2_w)); // OUT3
884 	mainlatch.q_out_cb<7>().set(FUNC(rallyx_state::stars_enable_w)); // STARSON
885 
886 	WATCHDOG_TIMER(config, "watchdog");
887 
888 	MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx)
889 
890 	// video hardware
891 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
892 	m_screen->set_refresh_hz(60);
893 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));  // frames per second, vblank duration
894 	m_screen->set_size(36*8, 32*8);
895 	m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
896 	m_screen->set_screen_update(FUNC(rallyx_state::screen_update_jungler));
897 	m_screen->set_palette(m_palette);
898 	m_screen->screen_vblank().set(FUNC(rallyx_state::jungler_vblank_irq));
899 
900 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_jungler);
901 
902 	PALETTE(config, m_palette, FUNC(rallyx_state::jungler_palette), 64*4 + 4 + 64, 32 + 64);
903 	m_palette->enable_shadows();
904 
905 	MCFG_VIDEO_START_OVERRIDE(rallyx_state,jungler)
906 
907 	// sound hardware
908 	LOCOMOTN_AUDIO(config, "timeplt_audio");
909 }
910 
tactcian(machine_config & config)911 void rallyx_state::tactcian(machine_config &config)
912 {
913 	jungler(config);
914 
915 	m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
916 
917 	MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
918 }
919 
locomotn(machine_config & config)920 void rallyx_state::locomotn(machine_config &config)
921 {
922 	jungler(config);
923 
924 	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
925 	m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
926 
927 	MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
928 }
929 
commsega(machine_config & config)930 void rallyx_state::commsega(machine_config &config)
931 {
932 	jungler(config);
933 
934 	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
935 	m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
936 
937 	MCFG_VIDEO_START_OVERRIDE(rallyx_state,commsega)
938 }
939 
940 
941 /*************************************
942  *
943  *  ROM definition(s)
944  *
945  *************************************/
946 
947 ROM_START( rallyx )
948 	ROM_REGION( 0x10000, "maincpu", 0 )
949 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(5882700d) SHA1(b6029e9730f1694894fe8b729ac0ba8d6712dea9) )
950 	ROM_LOAD( "rallyxn.1e",   0x1000, 0x1000, CRC(ed1eba2b) SHA1(82d3a4b34b0ff5cfdb8ca7c18ad5c63d943b8484) )
951 	ROM_LOAD( "rallyxn.1h",   0x2000, 0x1000, CRC(4f98dd1c) SHA1(8a20fadcea76802d1c412ba62086abb846ad54a8) )
952 	ROM_LOAD( "rallyxn.1k",   0x3000, 0x1000, CRC(9aacccf0) SHA1(9b22079972c0f9970d62d62751db4783a87796d5) )
953 
954 	ROM_REGION( 0x1000, "gfx1", 0 )
955 	ROM_LOAD( "8e",           0x0000, 0x1000, CRC(277c1de5) SHA1(30bc57263e8dad870c501c76bce6f42d69ab9e00) )
956 
957 	ROM_REGION( 0x0100, "gfx2", 0 )
958 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
959 
960 	ROM_REGION( 0x0160, "proms", 0 )
961 	ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  // Prom type: M3-7603-5 - palette
962 	ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  // Prom type: IM5623    - lookup table
963 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
964 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
965 
966 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
967 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
968 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
969 ROM_END
970 
971 ROM_START( rallyxa )
972 	ROM_REGION( 0x10000, "maincpu", 0 )
973 	ROM_LOAD( "rx1_prg_1.1b", 0x0000, 0x0800, CRC(ef9238db) SHA1(44313381652916a59a8d9959fb170184578472af) )
974 	ROM_LOAD( "rx1_prg_2.1c", 0x0800, 0x0800, CRC(7cbeb656) SHA1(ff6e669f7d3e91c1cc835106cccefcd81aa28bb8) )
975 	ROM_LOAD( "rx1_prg_3.1d", 0x1000, 0x0800, CRC(334b1042) SHA1(348a303eb8f03f19e5060d81f733d3145113abd5) )
976 	ROM_LOAD( "rx1_prg_4.1e", 0x1800, 0x0800, CRC(d6618add) SHA1(4c66160996f3195a83628f486789721935d2cf5b) )
977 	ROM_LOAD( "rx1_prg_5.bin",0x2000, 0x0800, CRC(3d69f24e) SHA1(fe5a43b7144f62d28aaf0dd92e1d02ef9199b132) )
978 	ROM_LOAD( "rx1_prg_6.bin",0x2800, 0x0800, CRC(e9740f16) SHA1(02a134ccd3d6557d46492747b04da02e933aa6b4) )
979 	ROM_LOAD( "rx1_prg_7.1k", 0x3000, 0x0800, CRC(843109f2) SHA1(7241d1025f249d23a0d15b5e31fdb2f5297ffbf4) )
980 	ROM_LOAD( "rx1_prg_8.1l", 0x3800, 0x0800, CRC(9b846ec9) SHA1(1fd8cce517f31a15e06cf250bc50b5a663424877) )
981 
982 	ROM_REGION( 0x1000, "gfx1", 0 )
983 	ROM_LOAD( "rx1_chg_1.8e", 0x0000, 0x0800, CRC(1fff38a4) SHA1(5f6ccce2e0daad5915d017e8d067f187eb2ed41d) )
984 	ROM_LOAD( "rx1_chg_2.8d", 0x0800, 0x0800, CRC(68dff552) SHA1(5dad38db45afbd79b5627a75b295fc920ad68856) )
985 
986 	ROM_REGION( 0x0100, "gfx2", 0 )
987 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
988 
989 	ROM_REGION( 0x0160, "proms", 0 )
990 	ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  // Prom type: M3-7603-5 - palette
991 	ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  // Prom type: IM5623    - lookup table
992 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
993 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
994 
995 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
996 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
997 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
998 ROM_END
999 
1000 ROM_START( rallyxm )
1001 	ROM_REGION( 0x10000, "maincpu", 0 )
1002 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(5882700d) SHA1(b6029e9730f1694894fe8b729ac0ba8d6712dea9) )
1003 	ROM_LOAD( "1e",           0x1000, 0x1000, CRC(786585ec) SHA1(8aa75f10d695f4b3483c4bf7030b733318fd3bf3) )
1004 	ROM_LOAD( "1h",           0x2000, 0x1000, CRC(110d7dcd) SHA1(23e0855c2c9300f2068711d160fcdfaedd07832f) )
1005 	ROM_LOAD( "1k",           0x3000, 0x1000, CRC(473ab447) SHA1(f0a37ccc48c97c53672f754ca2ac37dc0dc91a9f) )
1006 
1007 	ROM_REGION( 0x1000, "gfx1", 0 )
1008 	ROM_LOAD( "8e",           0x0000, 0x1000, CRC(277c1de5) SHA1(30bc57263e8dad870c501c76bce6f42d69ab9e00) )
1009 
1010 	ROM_REGION( 0x0100, "gfx2", 0 )
1011 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
1012 
1013 	ROM_REGION( 0x0160, "proms", 0 )
1014 	ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  // Prom type: M3-7603-5 - palette
1015 	ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  // Prom type: IM5623    - lookup table
1016 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
1017 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
1018 
1019 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
1020 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
1021 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
1022 ROM_END
1023 
1024 ROM_START( rallyxmr )
1025 	ROM_REGION( 0x10000, "maincpu", 0 )
1026 	ROM_LOAD( "166.bin",      0x0000, 0x0800, CRC(ef9238db) SHA1(44313381652916a59a8d9959fb170184578472af) )
1027 	ROM_LOAD( "167.bin",      0x0800, 0x0800, CRC(7cbeb656) SHA1(ff6e669f7d3e91c1cc835106cccefcd81aa28bb8) )
1028 	ROM_LOAD( "168.bin",      0x1000, 0x0800, CRC(334b1042) SHA1(348a303eb8f03f19e5060d81f733d3145113abd5) )
1029 	ROM_LOAD( "169.bin",      0x1800, 0x0800, CRC(b4852b52) SHA1(bf82ab1db49811114d16cf2cb5a318b98c07603c) )
1030 	ROM_LOAD( "170.bin",      0x2000, 0x0800, CRC(3d69f24e) SHA1(fe5a43b7144f62d28aaf0dd92e1d02ef9199b132) )
1031 	ROM_LOAD( "171.bin",      0x2800, 0x0800, CRC(e9740f16) SHA1(02a134ccd3d6557d46492747b04da02e933aa6b4) )
1032 	ROM_LOAD( "172.bin",      0x3000, 0x0800, CRC(843109f2) SHA1(7241d1025f249d23a0d15b5e31fdb2f5297ffbf4) )
1033 	ROM_LOAD( "173.bin",      0x3800, 0x0800, CRC(3b5b1a81) SHA1(5aa4dd850283062113181674849d531a2908340c) )
1034 
1035 	ROM_REGION( 0x1000, "gfx1", 0 )
1036 	ROM_LOAD( "175.bin",      0x0000, 0x0800, CRC(50a224e2) SHA1(33da1bdc33f085d19ae2c482747c509cf9441674) )
1037 	ROM_LOAD( "174.bin",      0x0800, 0x0800, CRC(68dff552) SHA1(5dad38db45afbd79b5627a75b295fc920ad68856) )
1038 
1039 	ROM_REGION( 0x0100, "gfx2", 0 )
1040 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
1041 
1042 	ROM_REGION( 0x0160, "proms", 0 )
1043 	ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  // Prom type: M3-7603-5 - palette
1044 	ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  // Prom type: IM5623    - lookup table
1045 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
1046 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
1047 
1048 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms */
1049 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
1050 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
1051 ROM_END
1052 
1053 ROM_START( dngrtrck ) // PROMs weren't dumped for this PCB, supposed to match
1054 	ROM_REGION( 0x10000, "maincpu", 0 )
1055 	ROM_LOAD( "1b-2716.bin",      0x0000, 0x0800, CRC(b6180a12) SHA1(f442fe81f7fac6e915944640c763d7016a6577f6) )
1056 	ROM_LOAD( "1c-2716.bin",      0x0800, 0x0800, CRC(7cbeb656) SHA1(ff6e669f7d3e91c1cc835106cccefcd81aa28bb8) )
1057 	ROM_LOAD( "1d-2716.bin",      0x1000, 0x0800, CRC(594207b1) SHA1(addea746e2378c44c06d6d18d466138946a339cf) )
1058 	ROM_LOAD( "1e-2716.bin",      0x1800, 0x0800, CRC(ae447251) SHA1(7c86193c9418929662b35143c66a5dff44663dd7) )
1059 	ROM_LOAD( "1h-2716.bin",      0x2000, 0x0800, CRC(e0d4b534) SHA1(fb64b21c418a2633d592f4476aed909ea6678fb2) )
1060 	ROM_LOAD( "1j-2716.bin",      0x2800, 0x0800, CRC(e9740f16) SHA1(02a134ccd3d6557d46492747b04da02e933aa6b4) )
1061 	ROM_LOAD( "1k-2716.bin",      0x3000, 0x0800, CRC(843109f2) SHA1(7241d1025f249d23a0d15b5e31fdb2f5297ffbf4) )
1062 	ROM_LOAD( "1l-2716.bin",      0x3800, 0x0800, CRC(17759749) SHA1(8169eebcb02615b99f786f6c5294eb31a8d1911b) )
1063 
1064 	ROM_REGION( 0x1000, "gfx1", 0 )
1065 	ROM_LOAD( "8e-2716.bin",      0x0000, 0x0800, CRC(50a224e2) SHA1(33da1bdc33f085d19ae2c482747c509cf9441674) )
1066 	ROM_LOAD( "8d-2716.bin",      0x0800, 0x0800, CRC(68dff552) SHA1(5dad38db45afbd79b5627a75b295fc920ad68856) )
1067 
1068 	ROM_REGION( 0x0100, "gfx2", 0 )
1069 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
1070 
1071 	ROM_REGION( 0x0160, "proms", 0 )
1072 	ROM_LOAD( "rx1-1.11n",    0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )  // Prom type: M3-7603-5 - palette
1073 	ROM_LOAD( "rx1-7.8p",     0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )  // Prom type: IM5623    - lookup table
1074 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
1075 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
1076 
1077 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
1078 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
1079 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
1080 ROM_END
1081 
1082 ROM_START( nrallyx )
1083 	ROM_REGION( 0x10000, "maincpu", 0 )
1084 	ROM_LOAD( "nrx_prg1.1d",  0x0000, 0x0800, CRC(ba7de9fc) SHA1(2133ca327589600bcbd796c213f034daa0457f72) )
1085 	ROM_CONTINUE(             0x1000, 0x0800 )
1086 	ROM_LOAD( "nrx_prg2.1e",  0x0800, 0x0800, CRC(eedfccae) SHA1(9fca8500f724864a2b73e38bd40cbaeef41617d7) )
1087 	ROM_CONTINUE(             0x1800, 0x0800 )
1088 	ROM_LOAD( "nrx_prg3.1k",  0x2000, 0x0800, CRC(b4d5d34a) SHA1(c533470aac040b3471d79fd6d35beb4fd4b5bb19) )
1089 	ROM_CONTINUE(             0x3000, 0x0800 )
1090 	ROM_LOAD( "nrx_prg4.1l",  0x2800, 0x0800, CRC(7da5496d) SHA1(ffac2c07dda57285673073266712fa2987e3b34f) )
1091 	ROM_CONTINUE(             0x3800, 0x0800 )
1092 
1093 	ROM_REGION( 0x1000, "gfx1", 0 )
1094 	ROM_LOAD( "nrx_chg1.8e",  0x0000, 0x0800, CRC(1fff38a4) SHA1(5f6ccce2e0daad5915d017e8d067f187eb2ed41d) )
1095 	ROM_LOAD( "nrx_chg2.8d",  0x0800, 0x0800, CRC(85d9fffd) SHA1(12dff66d98a808b9dc952b2d87a56308b46a973e) )
1096 
1097 	ROM_REGION( 0x0100, "gfx2", 0 )
1098 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
1099 
1100 	ROM_REGION( 0x0160, "proms", 0 )
1101 	ROM_LOAD( "nrx1-1.11n",   0x0000, 0x0020, CRC(a0a49017) SHA1(494c920a157e9f876d533c1b0146275a366c4989) )  // Prom type: M3-7603-5 - palette
1102 	ROM_LOAD( "nrx1-7.8p",    0x0020, 0x0100, CRC(4e46f485) SHA1(3f013aafba96a76d410f2db16d1d24d2fb257aaf) )  // Prom type: IM5623    - lookup table
1103 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
1104 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
1105 
1106 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
1107 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
1108 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
1109 ROM_END
1110 
1111 ROM_START( nrallyxb )
1112 	ROM_REGION( 0x10000, "maincpu", 0 )
1113 	ROM_LOAD( "nrallyx.1b",   0x0000, 0x1000, CRC(9404c8d6) SHA1(ee7e45c22a2fbf72d3ac5ac26ab1111a22623fc5) )
1114 	ROM_LOAD( "nrallyx.1e",   0x1000, 0x1000, CRC(ac01bf3f) SHA1(8e1a7cce92ef709d18727db6ee7f89936f4b8df8) )
1115 	ROM_LOAD( "nrallyx.1h",   0x2000, 0x1000, CRC(aeba29b5) SHA1(2a6e4568729b83c430bf70e43c4146ad6a556b1b) )
1116 	ROM_LOAD( "nrallyx.1k",   0x3000, 0x1000, CRC(78f17da7) SHA1(1e035746a10f91e898166a58093d45bdb158ae47) )
1117 
1118 	ROM_REGION( 0x1000, "gfx1", 0 )
1119 	ROM_LOAD( "nrallyx.8e",   0x0000, 0x1000, CRC(ca7a174a) SHA1(dc553df18c45ba399661122be75b71d6cb54d6a2) )
1120 
1121 	ROM_REGION( 0x0100, "gfx2", 0 )
1122 	ROM_LOAD( "rx1-6.8m",     0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )  // Prom type: IM5623    - dots
1123 
1124 	ROM_REGION( 0x0160, "proms", 0 )
1125 	ROM_LOAD( "nrx1-1.11n",   0x0000, 0x0020, CRC(a0a49017) SHA1(494c920a157e9f876d533c1b0146275a366c4989) )  // Prom type: M3-7603-5 - palette
1126 	ROM_LOAD( "nrx1-7.8p",    0x0020, 0x0100, CRC(4e46f485) SHA1(3f013aafba96a76d410f2db16d1d24d2fb257aaf) )  // Prom type: IM5623    - lookup table
1127 	ROM_LOAD( "rx1-2.4n",     0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) )  // Prom type: N82S123N  - video layout (not used)
1128 	ROM_LOAD( "rx1-3.7k",     0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) )  // Prom type: M3-7603-5 - video timing (not used)
1129 
1130 	ROM_REGION( 0x0200, "namco", 0 ) // sound proms
1131 	ROM_LOAD( "rx1-5.3p",     0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )  // Prom type: IM5623
1132 	ROM_LOAD( "rx1-4.2m",     0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )  // Prom type: IM5623 - not used
1133 ROM_END
1134 
1135 ROM_START( jungler )
1136 	ROM_REGION( 0x10000, "maincpu", 0 )
1137 	ROM_LOAD( "jungr1",       0x0000, 0x1000, CRC(5bd6ad15) SHA1(608de86e19c6726bb7d21e7dc0e936f00121a3f4) )
1138 	ROM_LOAD( "jungr2",       0x1000, 0x1000, CRC(dc99f1e3) SHA1(942405f6c7d816139e36289126fe883a6a9a0a08) )
1139 	ROM_LOAD( "jungr3",       0x2000, 0x1000, CRC(3dcc03da) SHA1(2c328a46511c4c9eec6515b9316a586de6503152) )
1140 	ROM_LOAD( "jungr4",       0x3000, 0x1000, CRC(f92e9940) SHA1(d72a4d0a0ab7c9a1dcbb7925eb8530052640a234) )
1141 
1142 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1143 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(f86999c3) SHA1(4660bd7826219b1bad7d9178918823196d4fd8d6) )
1144 
1145 	ROM_REGION( 0x1000, "gfx1", 0 )
1146 	ROM_LOAD( "5k",           0x0000, 0x0800, CRC(924262bf) SHA1(593f59630b3bd369aef0819992106b4e6e6a241f) )
1147 	ROM_LOAD( "5m",           0x0800, 0x0800, CRC(131a08ac) SHA1(167a0710a2a153f7f7c6839d2340e5aa725ef039) )
1148 
1149 	ROM_REGION( 0x0100, "gfx2", 0 )
1150 	ROM_LOAD( "82s129.10g",   0x0000, 0x0100, CRC(c59c51b7) SHA1(e8ac60fed9ba16c61a4c3c09e27f8c3f4e254014) ) // dots
1151 
1152 	ROM_REGION( 0x0160, "proms", 0 )
1153 	ROM_LOAD( "18s030.8b",    0x0000, 0x0020, CRC(55a7e6d1) SHA1(f9e4ff3b165235db2fd8dab94c43bc686c3ad29b) ) // palette
1154 	ROM_LOAD( "tbp24s10.9d",  0x0020, 0x0100, CRC(d223f7b8) SHA1(87b62f09d4eda09c16d99d1554017d18e52b5886) ) // lookup table
1155 	ROM_LOAD( "18s030.7a",    0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1156 	ROM_LOAD( "6331-1.10a",   0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1157 ROM_END
1158 
1159 ROM_START( junglers )
1160 	ROM_REGION( 0x10000, "maincpu", 0 )
1161 	ROM_LOAD( "5c",           0x0000, 0x1000, CRC(edd71b28) SHA1(6bdd85bc1c24ca57573252fd636e05759164de8a) )
1162 	ROM_LOAD( "5a",           0x1000, 0x1000, CRC(61ea4d46) SHA1(575ffe9fc7d5777c8f2d2b449623c353f42a4249) )
1163 	ROM_LOAD( "4d",           0x2000, 0x1000, CRC(557c7925) SHA1(84d8eb2fdb7ee9098805be9f457a37f51e4bc3b8) )
1164 	ROM_LOAD( "4c",           0x3000, 0x1000, CRC(51aac9a5) SHA1(2c8a24b4ce8cec96c6e09332f3f63bd7d25ae4c6) )
1165 
1166 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1167 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(f86999c3) SHA1(4660bd7826219b1bad7d9178918823196d4fd8d6) )
1168 
1169 	ROM_REGION( 0x1000, "gfx1", 0 )
1170 	ROM_LOAD( "5k",           0x0000, 0x0800, CRC(924262bf) SHA1(593f59630b3bd369aef0819992106b4e6e6a241f) )
1171 	ROM_LOAD( "5m",           0x0800, 0x0800, CRC(131a08ac) SHA1(167a0710a2a153f7f7c6839d2340e5aa725ef039) )
1172 
1173 	ROM_REGION( 0x0100, "gfx2", 0 )
1174 	ROM_LOAD( "82s129.10g",   0x0000, 0x0100, CRC(c59c51b7) SHA1(e8ac60fed9ba16c61a4c3c09e27f8c3f4e254014) ) // dots
1175 
1176 	ROM_REGION( 0x0160, "proms", 0 )
1177 	ROM_LOAD( "18s030.8b",    0x0000, 0x0020, CRC(55a7e6d1) SHA1(f9e4ff3b165235db2fd8dab94c43bc686c3ad29b) ) // palette
1178 	ROM_LOAD( "tbp24s10.9d",  0x0020, 0x0100, CRC(d223f7b8) SHA1(87b62f09d4eda09c16d99d1554017d18e52b5886) ) // lookup table
1179 	ROM_LOAD( "18s030.7a",    0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1180 	ROM_LOAD( "6331-1.10a",   0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1181 ROM_END
1182 
1183 // main PCB is marked: "OLYMPIA", "[C] 13-53", "Konami LICENSED", "CE" and "22 A" on solder side
1184 // sound PCB is marked: "OLYMPIA", "[C] 15-82", "Konami LICENSED", "CE" and "22 B" on component side
1185 ROM_START( junglero )
1186 	ROM_REGION( 0x10000, "maincpu", 0 )
1187 	ROM_LOAD( "j1.bin", 0x0000, 0x1000, CRC(5bd6ad15) SHA1(608de86e19c6726bb7d21e7dc0e936f00121a3f4) )
1188 	ROM_LOAD( "j2.bin", 0x1000, 0x1000, CRC(dc99f1e3) SHA1(942405f6c7d816139e36289126fe883a6a9a0a08) )
1189 	ROM_LOAD( "j3.bin", 0x2000, 0x1000, CRC(3dcc03da) SHA1(2c328a46511c4c9eec6515b9316a586de6503152) )
1190 	ROM_LOAD( "j4.bin", 0x3000, 0x1000, CRC(f92e9940) SHA1(d72a4d0a0ab7c9a1dcbb7925eb8530052640a234) )
1191 
1192 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1193 	ROM_LOAD( "js1.bin", 0x0000, 0x1000, CRC(f86999c3) SHA1(4660bd7826219b1bad7d9178918823196d4fd8d6) )
1194 
1195 	ROM_REGION( 0x1000, "gfx1", 0 )
1196 	ROM_LOAD( "j5.bin", 0x0000, 0x800, CRC(4190c6c0) SHA1(ebd3b5b0e6660045f1ee84006536fa31cb3d5f8e) )
1197 	ROM_IGNORE(0x800)
1198 	ROM_LOAD( "j6.bin", 0x0800, 0x800, CRC(5c001c66) SHA1(aab8342131f831cb9bab4258488a0f666c35ee4d) )
1199 	ROM_IGNORE(0x800)
1200 
1201 	ROM_REGION( 0x0100, "gfx2", 0 )
1202 	ROM_LOAD( "am27s21dc.jn4", 0x0000, 0x0100, CRC(c59c51b7) SHA1(e8ac60fed9ba16c61a4c3c09e27f8c3f4e254014) ) // dots
1203 
1204 	ROM_REGION( 0x0160, "proms", 0 )
1205 	ROM_LOAD( "dm74s288n.jn2", 0x0000, 0x0020, CRC(55a7e6d1) SHA1(f9e4ff3b165235db2fd8dab94c43bc686c3ad29b) ) // palette
1206 	ROM_LOAD( "tbp24s10.jn5",  0x0020, 0x0100, CRC(d223f7b8) SHA1(87b62f09d4eda09c16d99d1554017d18e52b5886) ) // lookup table
1207 	ROM_LOAD( "dm74s288n.jn1", 0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1208 	ROM_LOAD( "mb7051.jn3",    0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1209 ROM_END
1210 
1211 ROM_START( jackler ) // Board ID SL-HA-2061-21-B
1212 	ROM_REGION( 0x10000, "maincpu", 0 )
1213 	ROM_LOAD( "jackler_j1.r1",0x0000, 0x1000, CRC(3fc0d149) SHA1(d2d8273d57e26ebc97158549d5c7dada78bf2ae4) )
1214 	ROM_LOAD( "jackler_j2.r2",0x1000, 0x1000, CRC(5f482c7d) SHA1(5111f114c8427271d4641a55c88e54853e82aa50) )
1215 	ROM_LOAD( "jungr3",       0x2000, 0x1000, CRC(3dcc03da) SHA1(2c328a46511c4c9eec6515b9316a586de6503152) ) // jackler_j2.r2
1216 	ROM_LOAD( "jungr4",       0x3000, 0x1000, CRC(f92e9940) SHA1(d72a4d0a0ab7c9a1dcbb7925eb8530052640a234) ) // jackler_j3.r3
1217 
1218 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1219 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(f86999c3) SHA1(4660bd7826219b1bad7d9178918823196d4fd8d6) ) // jackler_j7_sound.1b
1220 
1221 	ROM_REGION( 0x1800, "gfx1", 0 )
1222 	ROM_LOAD( "jackler_j5.r9",0x0000, 0x1000, CRC(4190c6c0) SHA1(ebd3b5b0e6660045f1ee84006536fa31cb3d5f8e) ) // Both are 2x original
1223 	ROM_LOAD( "jackler_j6.r10",0x0800, 0x1000, CRC(5c001c66) SHA1(aab8342131f831cb9bab4258488a0f666c35ee4d) ) // so mapped to overlap
1224 
1225 	ROM_REGION( 0x0100, "gfx2", 0 )
1226 	ROM_LOAD( "82s129.10g",   0x0000, 0x0100, CRC(c59c51b7) SHA1(e8ac60fed9ba16c61a4c3c09e27f8c3f4e254014) ) // dots
1227 
1228 	ROM_REGION( 0x0160, "proms", 0 )
1229 	ROM_LOAD( "18s030.8b",    0x0000, 0x0020, CRC(55a7e6d1) SHA1(f9e4ff3b165235db2fd8dab94c43bc686c3ad29b) ) // palette
1230 	ROM_LOAD( "tbp24s10.9d",  0x0020, 0x0100, CRC(d223f7b8) SHA1(87b62f09d4eda09c16d99d1554017d18e52b5886) ) // lookup table
1231 	ROM_LOAD( "18s030.7a",    0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1232 	ROM_LOAD( "6331-1.10a",   0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1233 ROM_END
1234 
1235 ROM_START( savanna )
1236 	ROM_REGION( 0x10000, "maincpu", 0 )
1237 	ROM_LOAD( "sav1.bin",     0x0000, 0x1000, CRC(958c57eb) SHA1(b804ef99bb2f5658de508d3f9f83ca491012a51f) )
1238 	ROM_LOAD( "sav2.bin",     0x1000, 0x1000, CRC(61ea4d46) SHA1(575ffe9fc7d5777c8f2d2b449623c353f42a4249) )
1239 	ROM_LOAD( "sav3.bin",     0x2000, 0x1000, CRC(557c7925) SHA1(84d8eb2fdb7ee9098805be9f457a37f51e4bc3b8) )
1240 	ROM_LOAD( "sav4.bin",     0x3000, 0x1000, CRC(b38b6cbd) SHA1(76ab41097bceb3d73c95ab8a89df702e554ba403) )
1241 
1242 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1243 	ROM_LOAD( "1b",           0x0000, 0x1000, CRC(f86999c3) SHA1(4660bd7826219b1bad7d9178918823196d4fd8d6) )
1244 
1245 	ROM_REGION( 0x1000, "gfx1", 0 )
1246 	ROM_LOAD( "5k",           0x0000, 0x0800, CRC(924262bf) SHA1(593f59630b3bd369aef0819992106b4e6e6a241f) )
1247 	ROM_LOAD( "5m",           0x0800, 0x0800, CRC(131a08ac) SHA1(167a0710a2a153f7f7c6839d2340e5aa725ef039) )
1248 
1249 	ROM_REGION( 0x0100, "gfx2", 0 )
1250 	ROM_LOAD( "82s129.10g",   0x0000, 0x0100, CRC(c59c51b7) SHA1(e8ac60fed9ba16c61a4c3c09e27f8c3f4e254014) ) // dots
1251 
1252 	ROM_REGION( 0x0160, "proms", 0 )
1253 	ROM_LOAD( "18s030.8b",    0x0000, 0x0020, CRC(55a7e6d1) SHA1(f9e4ff3b165235db2fd8dab94c43bc686c3ad29b) ) // palette
1254 	ROM_LOAD( "tbp24s10.9d",  0x0020, 0x0100, CRC(d223f7b8) SHA1(87b62f09d4eda09c16d99d1554017d18e52b5886) ) // lookup table
1255 	ROM_LOAD( "18s030.7a",    0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1256 	ROM_LOAD( "6331-1.10a",   0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1257 ROM_END
1258 
1259 ROM_START( tactcian )
1260 	ROM_REGION( 0x10000, "maincpu", 0 )
1261 	ROM_LOAD( "tacticia.001", 0x0000, 0x1000, CRC(99163e39) SHA1(0a863f358a0bb065a9e2c41fcf4c20d370001dfe) )
1262 	ROM_LOAD( "tacticia.002", 0x1000, 0x1000, CRC(6d3e8a69) SHA1(2b4b3f2b7401064540f59070ef6742d1f44ca839) )
1263 	ROM_LOAD( "tacticia.003", 0x2000, 0x1000, CRC(0f71d0fa) SHA1(cb55243853b8b33034af7a6438f9a7c85a774d71) )
1264 	ROM_LOAD( "tacticia.004", 0x3000, 0x1000, CRC(5e15f3b3) SHA1(01979f64b281a958f0a4effe2be21bf0e0a812bf) )
1265 	ROM_LOAD( "tacticia.005", 0x4000, 0x1000, CRC(76456106) SHA1(580428f3c8cf442ee5c0f56db973644229aa8093) )
1266 	ROM_LOAD( "tacticia.006", 0x5000, 0x1000, CRC(b33ca9ea) SHA1(0299c1cb9a3c6368bbbacb60c6f5c6854035a7bf) )
1267 
1268 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1269 	ROM_LOAD( "tacticia.s2",  0x0000, 0x1000, CRC(97d145a7) SHA1(7aee9004287590a25e153d45b95dfaac89fbe996) )
1270 	ROM_LOAD( "tacticia.s1",  0x1000, 0x1000, CRC(067f781b) SHA1(640bc7813c239e497644e53a080d81366fcd04df) )
1271 
1272 	ROM_REGION( 0x2000, "gfx1", 0 )
1273 	ROM_LOAD( "tacticia.c1",  0x0000, 0x1000, CRC(5d3ee965) SHA1(654c033291f3d139fb94f7aacbc2d1917856deb6) )
1274 	ROM_LOAD( "tacticia.c2",  0x1000, 0x1000, CRC(e8c59c4f) SHA1(e4881f2e2e08bb8af37cc679c4e2367528ac4804) )
1275 
1276 	ROM_REGION( 0x0100, "gfx2", 0 )
1277 	ROM_LOAD( "tact6301.004", 0x0000, 0x0100, CRC(88b0b511) SHA1(785eded1ba761cdb59db579eb8a786516ff58152) ) // dots - tac.a7
1278 
1279 	ROM_REGION( 0x0160, "proms", 0 )
1280 	ROM_LOAD( "tact6331.002", 0x0000, 0x0020, CRC(b7ef83b7) SHA1(5ffab25c2dc5be0856a43a93711d39c4aec6660b) ) // palette
1281 	ROM_LOAD( "tact6301.003", 0x0020, 0x0100, CRC(a92796f2) SHA1(0faab2dc0f868f4023a34ecfcf972d1c86a224a0) ) // lookup table - tac.b4
1282 	ROM_LOAD( "tact6331.001", 0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1283 //  ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1284 ROM_END
1285 
1286 ROM_START( tactcian2 )
1287 	ROM_REGION( 0x10000, "maincpu", 0 )
1288 	ROM_LOAD( "tan1",         0x0000, 0x1000, CRC(ddf38b75) SHA1(bad66fd6ae0ab3b91989fca14a8696ed855dc852) )
1289 	ROM_LOAD( "tan2",         0x1000, 0x1000, CRC(f065ee2e) SHA1(f2362c471981af3348465f3c8a5ffb38058432a5) )
1290 	ROM_LOAD( "tan3",         0x2000, 0x1000, CRC(2dba64fe) SHA1(8d312a6db99d2248fef2bbc590ceba333b0fde8b) )
1291 	ROM_LOAD( "tan4",         0x3000, 0x1000, CRC(2ba07847) SHA1(3cd7cd0621ed930cb5955fc2ffe3239f6e176321) )
1292 	ROM_LOAD( "tan5",         0x4000, 0x1000, CRC(1dae4c61) SHA1(70283b8412b0725f1c2acc281625c582a4fae39d) )
1293 	ROM_LOAD( "tan6",         0x5000, 0x1000, CRC(2b36a18d) SHA1(bea8f36ec98975438ab267509bd9d1d1eb605945) )
1294 
1295 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1296 	// sound ROMs were missing - using the ones from the other set
1297 	ROM_LOAD( "tacticia.s2",  0x0000, 0x1000, CRC(97d145a7) SHA1(7aee9004287590a25e153d45b95dfaac89fbe996) )
1298 	ROM_LOAD( "tacticia.s1",  0x1000, 0x1000, CRC(067f781b) SHA1(640bc7813c239e497644e53a080d81366fcd04df) )
1299 
1300 	ROM_REGION( 0x2000, "gfx1", 0 )
1301 	ROM_LOAD( "c1",           0x0000, 0x1000, CRC(5399471f) SHA1(66aea0df982ccbd6caaa24c258b2ba364bc1ecfd) )
1302 	ROM_LOAD( "c2",           0x1000, 0x1000, CRC(8e8861e8) SHA1(38728418b09df06356c1e45a26cf438b93517ce5) )
1303 
1304 	ROM_REGION( 0x0100, "gfx2", 0 )
1305 	ROM_LOAD( "tact6301.004", 0x0000, 0x0100, CRC(88b0b511) SHA1(785eded1ba761cdb59db579eb8a786516ff58152) ) // dots - tac.a7
1306 
1307 	ROM_REGION( 0x0160, "proms", 0 )
1308 	ROM_LOAD( "tact6331.002", 0x0000, 0x0020, CRC(b7ef83b7) SHA1(5ffab25c2dc5be0856a43a93711d39c4aec6660b) ) // palette
1309 	ROM_LOAD( "tact6301.003", 0x0020, 0x0100, CRC(a92796f2) SHA1(0faab2dc0f868f4023a34ecfcf972d1c86a224a0) ) // lookup table - tac.b4
1310 	ROM_LOAD( "tact6331.001", 0x0120, 0x0020, CRC(8f574815) SHA1(4f84162db9d58b64742c67dc689eb665b9862fb3) ) // video layout (not used)
1311 //  ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1312 ROM_END
1313 
1314 ROM_START( locomotn )
1315 	ROM_REGION( 0x10000, "maincpu", 0 )
1316 	ROM_LOAD( "1a.cpu",       0x0000, 0x1000, CRC(b43e689a) SHA1(7f1a0fa1ea9ff95a9d51b23ea00792ba22024282) )
1317 	ROM_LOAD( "2a.cpu",       0x1000, 0x1000, CRC(529c823d) SHA1(714ae0af254646eb6ebc5f47422246832e89ccfb) )
1318 	ROM_LOAD( "3.cpu",        0x2000, 0x1000, CRC(c9dbfbd1) SHA1(10ec7403053ef52d0ce4aa6eab3e82a3ea5e57ff) )
1319 	ROM_LOAD( "4.cpu",        0x3000, 0x1000, CRC(caf6431c) SHA1(f013d8846fad9f64367b69febeb7512029a639c0) )
1320 	ROM_LOAD( "5.cpu",        0x4000, 0x1000, CRC(64cf8dd6) SHA1(8fa1b5c4a7f136cb74833425a565fa558eeee083) )
1321 
1322 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1323 	ROM_LOAD( "1b_s1.bin",    0x0000, 0x1000, CRC(a1105714) SHA1(6e2e264748ab90bc5e8e8167f17ff91677ef6ae7) )
1324 
1325 	ROM_REGION( 0x2000, "gfx1", 0 )
1326 	ROM_LOAD( "5l_c1.bin",    0x0000, 0x1000, CRC(5732eda9) SHA1(451de30946a9c8198c5ec83cc5c50e3ac2f9f56b) )
1327 	ROM_LOAD( "c2.cpu",       0x1000, 0x1000, CRC(c3035300) SHA1(ddb1d658a28b973b60e2ce72fd7662537e147860) )
1328 
1329 	ROM_REGION( 0x0100, "gfx2", 0 )
1330 	ROM_LOAD( "10g.bpr",      0x0000, 0x0100, CRC(2ef89356) SHA1(5ed33386bab5d583358709c92f21ad9ad1a1bce9) ) // dots
1331 
1332 	ROM_REGION( 0x0160, "proms", 0 )
1333 	ROM_LOAD( "8b.bpr",       0x0000, 0x0020, CRC(75b05da0) SHA1(aee98f5389e42332f30a6882ee22ff23f37e0573) ) // palette
1334 	ROM_LOAD( "9d.bpr",       0x0020, 0x0100, CRC(aa6cf063) SHA1(08c1c9ab03eb168954b0170d40e95eed81022acd) ) // lookup table
1335 	ROM_LOAD( "7a.bpr",       0x0120, 0x0020, CRC(48c8f094) SHA1(61592209720fddc8991751edf08b6950388af42e) ) // video layout (not used)
1336 	ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1337 ROM_END
1338 
1339 ROM_START( gutangtn )
1340 	ROM_REGION( 0x10000, "maincpu", 0 )
1341 	ROM_LOAD( "3d_1.bin",     0x0000, 0x1000, CRC(e9757395) SHA1(78e2f8988ed39d2ecfe1f874be370f603d5eecc1) )
1342 	ROM_LOAD( "3e_2.bin",     0x1000, 0x1000, CRC(11d21d2e) SHA1(fd17dd481bb7bb39234fa7e9946b1cb4fa18109e) )
1343 	ROM_LOAD( "3f_3.bin",     0x2000, 0x1000, CRC(4d80f895) SHA1(7d83f4ee34226636012a84f46af01991a28b96f6) )
1344 	ROM_LOAD( "3h_4.bin",     0x3000, 0x1000, CRC(aa258ddf) SHA1(0f01ac0d72d8bb5a55c91a6fba3e55ed1c038b86) )
1345 	ROM_LOAD( "3j_5.bin",     0x4000, 0x1000, CRC(52aec87e) SHA1(6516724c4e570972f070f6dab5b066ea92f56be0) )
1346 
1347 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1348 	ROM_LOAD( "1b_s1.bin",    0x0000, 0x1000, CRC(a1105714) SHA1(6e2e264748ab90bc5e8e8167f17ff91677ef6ae7) )
1349 
1350 	ROM_REGION( 0x2000, "gfx1", 0 )
1351 	ROM_LOAD( "5l_c1.bin",    0x0000, 0x1000, CRC(5732eda9) SHA1(451de30946a9c8198c5ec83cc5c50e3ac2f9f56b) )
1352 	ROM_LOAD( "5m_c2.bin",    0x1000, 0x1000, CRC(51c542fd) SHA1(1437f8cba15811361b2c5b46085587ea3598fc88) )
1353 
1354 	ROM_REGION( 0x0100, "gfx2", 0 )
1355 	ROM_LOAD( "10g.bpr",      0x0000, 0x0100, CRC(2ef89356) SHA1(5ed33386bab5d583358709c92f21ad9ad1a1bce9) ) // dots
1356 
1357 	ROM_REGION( 0x0160, "proms", 0 )
1358 	ROM_LOAD( "8b.bpr",       0x0000, 0x0020, CRC(75b05da0) SHA1(aee98f5389e42332f30a6882ee22ff23f37e0573) ) // palette
1359 	ROM_LOAD( "9d.bpr",       0x0020, 0x0100, CRC(aa6cf063) SHA1(08c1c9ab03eb168954b0170d40e95eed81022acd) ) // lookup table
1360 	ROM_LOAD( "7a.bpr",       0x0120, 0x0020, CRC(48c8f094) SHA1(61592209720fddc8991751edf08b6950388af42e) ) // video layout (not used)
1361 	ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1362 ROM_END
1363 
1364 ROM_START( cottong )
1365 	ROM_REGION( 0x10000, "maincpu", 0 )
1366 	ROM_LOAD( "c1",           0x0000, 0x1000, CRC(2c256fe6) SHA1(115594c616497eec998e4e3255ec6ab6299346fa) )
1367 	ROM_LOAD( "c2",           0x1000, 0x1000, CRC(1de5e6a0) SHA1(8bb3408a510662ff3b9b7201d2d06fe70685bf7f) )
1368 	ROM_LOAD( "c3",           0x2000, 0x1000, CRC(01f909fe) SHA1(c80295e9f91ce25bfd28e72823b20ee6f6524a5c) )
1369 	ROM_LOAD( "c4",           0x3000, 0x1000, CRC(a89eb3e3) SHA1(058928ade909faba06f177750f914cf1dabaefc3) )
1370 
1371 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1372 	ROM_LOAD( "c7",           0x0000, 0x1000, CRC(3d83f6d3) SHA1(e10ed6b6ce7280697c1bc9dbe6c6e6018e1d8be4) )
1373 	ROM_LOAD( "c8",           0x1000, 0x1000, CRC(323e1937) SHA1(75499d6c8a9032fac090a13cd4f36bd350f52dab) )
1374 
1375 	ROM_REGION( 0x2000, "gfx1", 0 )
1376 	ROM_LOAD( "c5",           0x0000, 0x1000, CRC(992d079c) SHA1(b5acd30f2e8700cc4cd852b190bd1f4163b137e8) )
1377 	ROM_LOAD( "c6",           0x1000, 0x1000, CRC(0149ef46) SHA1(58f684a9b7b9410236b3c54ea6c0fa9853a078c5) )
1378 
1379 	ROM_REGION( 0x0100, "gfx2", 0 )
1380 	ROM_LOAD( "5.bpr",        0x0000, 0x0100, CRC(21fb583f) SHA1(b8c65fbdd5d8b70bf51341cd60fc2efeaab8bb82) ) // dots
1381 
1382 	ROM_REGION( 0x0160, "proms", 0 )
1383 	ROM_LOAD( "2.bpr",        0x0000, 0x0020, CRC(26f42e6f) SHA1(f51578216a5d588c4d0143ce7a23d695a15a3914) ) // palette
1384 	ROM_LOAD( "3.bpr",        0x0020, 0x0100, CRC(4aecc0c8) SHA1(3c1086a598d84b4bcb277556b716fd18c76c4364) ) // lookup table
1385 	ROM_LOAD( "7a.bpr",       0x0120, 0x0020, CRC(48c8f094) SHA1(61592209720fddc8991751edf08b6950388af42e) ) // video layout (not used)
1386 	ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1387 ROM_END
1388 
1389 ROM_START( locoboot )
1390 	ROM_REGION( 0x10000, "maincpu", 0 )
1391 	ROM_LOAD( "g.116",        0x0000, 0x1000, CRC(1248799c) SHA1(b0e513bb7ca6266f9182a91c2a30adc4b414a7ad) )
1392 	ROM_LOAD( "g.117",        0x1000, 0x1000, CRC(5b5b5753) SHA1(22f7fa0968843b52aa6eac743e5447502c86b10f) )
1393 	ROM_LOAD( "g.118",        0x2000, 0x1000, CRC(6bc269e1) SHA1(22d2c97e597fb7e6ae9074c8f921c902b879efe8) )
1394 	ROM_LOAD( "g.119",        0x3000, 0x1000, CRC(3feb762e) SHA1(94ee68549752fac3c67582d968d3f5e3f1380eef) )
1395 
1396 	/* no other roms were present in this set,
1397 	   but it appears to work best with the cottong roms,
1398 	   and the program roms appear to be a hack of that
1399 	*/
1400 
1401 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1402 	ROM_LOAD( "c7",           0x0000, 0x1000, CRC(3d83f6d3) SHA1(e10ed6b6ce7280697c1bc9dbe6c6e6018e1d8be4) )
1403 	ROM_LOAD( "c8",           0x1000, 0x1000, CRC(323e1937) SHA1(75499d6c8a9032fac090a13cd4f36bd350f52dab) )
1404 
1405 	ROM_REGION( 0x2000, "gfx1", 0 )
1406 	ROM_LOAD( "c5",           0x0000, 0x1000, CRC(992d079c) SHA1(b5acd30f2e8700cc4cd852b190bd1f4163b137e8) )
1407 	ROM_LOAD( "c6",           0x1000, 0x1000, CRC(0149ef46) SHA1(58f684a9b7b9410236b3c54ea6c0fa9853a078c5) )
1408 
1409 	ROM_REGION( 0x0100, "gfx2", 0 )
1410 	ROM_LOAD( "5.bpr",        0x0000, 0x0100, CRC(21fb583f) SHA1(b8c65fbdd5d8b70bf51341cd60fc2efeaab8bb82) ) // dots
1411 
1412 	ROM_REGION( 0x0160, "proms", 0 )
1413 	ROM_LOAD( "2.bpr",        0x0000, 0x0020, CRC(26f42e6f) SHA1(f51578216a5d588c4d0143ce7a23d695a15a3914) ) // palette
1414 	ROM_LOAD( "3.bpr",        0x0020, 0x0100, CRC(4aecc0c8) SHA1(3c1086a598d84b4bcb277556b716fd18c76c4364) ) // lookup table
1415 	ROM_LOAD( "7a.bpr",       0x0120, 0x0020, CRC(48c8f094) SHA1(61592209720fddc8991751edf08b6950388af42e) ) // video layout (not used)
1416 	ROM_LOAD( "10a.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1417 ROM_END
1418 
1419 ROM_START( commsega )
1420 	ROM_REGION( 0x10000, "maincpu", 0 )
1421 	ROM_LOAD( "csega1",       0x0000, 0x1000, CRC(92de3405) SHA1(81ef4274b13f92d6274a0a037d7dc77ba0f67a1b) )
1422 	ROM_LOAD( "csega2",       0x1000, 0x1000, CRC(f14e2f9a) SHA1(c1a7ec1c306e07bac0bbf19b60f756650f63ae29) )
1423 	ROM_LOAD( "csega3",       0x2000, 0x1000, CRC(941dbf48) SHA1(01d2d64fb662af423aa04507ba97997772130c54) )
1424 	ROM_LOAD( "csega4",       0x3000, 0x1000, CRC(e0ac69b4) SHA1(3a52b2a6204b7310cfe321c582352b437de16660) )
1425 	ROM_LOAD( "csega5",       0x4000, 0x1000, CRC(bc56ebd0) SHA1(a178cd5ba381b107e720e18f3549247477037998) )
1426 
1427 	ROM_REGION( 0x10000, "timeplt_audio:tpsound", 0 )
1428 	ROM_LOAD( "csega8",       0x0000, 0x1000, CRC(588b4210) SHA1(43bac1bdac721567e4b5d56e9e4488165872bd6a) )
1429 
1430 	ROM_REGION( 0x2000, "gfx1", 0 )
1431 	ROM_LOAD( "csega7",       0x0000, 0x1000, CRC(e8e374f9) SHA1(442cc6b7e7d5b9472a5c16d6f78db0c03e651e98) )
1432 	ROM_LOAD( "csega6",       0x1000, 0x1000, CRC(cf07fd5e) SHA1(4fe351c3d093f8f5fcf95e3e921a06e44d14d2a7) )
1433 
1434 	ROM_REGION( 0x0100, "gfx2", 0 )
1435 	ROM_LOAD( "gg3.bpr",      0x0000, 0x0100, CRC(ae7fd962) SHA1(118359cffb2ad3fdf09456a484aa730cb1b85a5d) ) // dots
1436 
1437 	ROM_REGION( 0x0160, "proms", 0 )
1438 	ROM_LOAD( "gg1.bpr",      0x0000, 0x0020, CRC(f69e585a) SHA1(248740b154732b6bc6f772d4bb19d654798c3739) ) // palette
1439 	ROM_LOAD( "gg2.bpr",      0x0020, 0x0100, CRC(0b756e30) SHA1(8890e305547df8df108af0f89074fb1c8bed8e6c) ) // lookup table
1440 	ROM_LOAD( "gg0.bpr",      0x0120, 0x0020, CRC(48c8f094) SHA1(61592209720fddc8991751edf08b6950388af42e) ) // video layout (not used)
1441 	ROM_LOAD( "tt3.bpr",      0x0140, 0x0020, CRC(b8861096) SHA1(26fad384ed7a1a1e0ba719b5578e2dbb09334a25) ) // video timing (not used)
1442 ROM_END
1443 
1444 
1445 /*************************************
1446  *
1447  *  Game driver(s)
1448  *
1449  *************************************/
1450 
1451 GAME( 1980, rallyx,   0,        rallyx,   rallyx,   rallyx_state, empty_init, ROT0,  "Namco", "Rally X (32k Ver.?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1452 GAME( 1980, rallyxa,  rallyx,   rallyx,   rallyx,   rallyx_state, empty_init, ROT0,  "Namco", "Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1453 GAME( 1980, rallyxm,  rallyx,   rallyx,   rallyx,   rallyx_state, empty_init, ROT0,  "Namco (Midway license)", "Rally X (Midway)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1454 GAME( 1980, rallyxmr, rallyx,   rallyx,   rallyx,   rallyx_state, empty_init, ROT0,  "bootleg (Model Racing)", "Rally X (Model Racing bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1455 GAME( 1980, dngrtrck, rallyx,   rallyx,   dngrtrck, rallyx_state, empty_init, ROT0,  "bootleg (Petaco)", "Danger Track (Rally X bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1456 GAME( 1981, nrallyx,  0,        rallyx,   nrallyx,  rallyx_state, empty_init, ROT0,  "Namco", "New Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1457 GAME( 1981, nrallyxb, nrallyx,  rallyx,   nrallyx,  rallyx_state, empty_init, ROT0,  "Namco", "New Rally X (bootleg?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1458 GAME( 1981, jungler,  0,        jungler,  jungler,  rallyx_state, empty_init, ROT90, "Konami", "Jungler", MACHINE_SUPPORTS_SAVE )
1459 GAME( 1981, junglers, jungler,  jungler,  jungler,  rallyx_state, empty_init, ROT90, "Konami (Stern Electronics license)", "Jungler (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
1460 GAME( 1981, junglero, jungler,  jungler,  jungler,  rallyx_state, empty_init, ROT90, "Konami (Olympia license)", "Jungler (Olympia)", MACHINE_SUPPORTS_SAVE )
1461 GAME( 1982, jackler,  jungler,  jungler,  jungler,  rallyx_state, empty_init, ROT90, "bootleg", "Jackler (Jungler bootleg)", MACHINE_SUPPORTS_SAVE )
1462 GAME( 1982, savanna,  jungler,  jungler,  jungler,  rallyx_state, empty_init, ROT90, "bootleg (Olympia)", "Savanna (Jungler bootleg)", MACHINE_SUPPORTS_SAVE ) // or licensed from Konami?
1463 GAME( 1982, tactcian, 0,        tactcian, tactcian, rallyx_state, empty_init, ROT90, "Konami (Sega license)", "Tactician (set 1)", MACHINE_SUPPORTS_SAVE )
1464 GAME( 1981, tactcian2,tactcian, tactcian, tactcian, rallyx_state, empty_init, ROT90, "Konami (Sega license)", "Tactician (set 2)", MACHINE_SUPPORTS_SAVE )
1465 GAME( 1982, locomotn, 0,        locomotn, locomotn, rallyx_state, empty_init, ROT90, "Konami (Centuri license)", "Loco-Motion", MACHINE_SUPPORTS_SAVE )
1466 GAME( 1982, gutangtn, locomotn, locomotn, locomotn, rallyx_state, empty_init, ROT90, "Konami (Sega license)", "Guttang Gottong", MACHINE_SUPPORTS_SAVE )
1467 GAME( 1982, cottong,  locomotn, locomotn, locomotn, rallyx_state, empty_init, ROT90, "bootleg", "Cotocoto Cottong", MACHINE_SUPPORTS_SAVE )
1468 GAME( 1982, locoboot, locomotn, locomotn, locomotn, rallyx_state, empty_init, ROT90, "bootleg", "Loco-Motion (bootleg)", MACHINE_SUPPORTS_SAVE )
1469 GAME( 1983, commsega, 0,        commsega, commsega, rallyx_state, empty_init, ROT90, "Sega", "Commando (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
1470