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