1 // license:BSD-3-Clause
2 // copyright-holders:Lee Taylor
3 // thanks-to:John Clegg,Tomasz Slanina
4 /****************************************************************************
5
6 Traverse USA / Zippy Race (c) 1983 Irem
7 Shot Rider (c) 1984 Seibu Kaihatsu / Sigma
8
9 driver by
10 Lee Taylor
11 John Clegg
12 Tomasz Slanina
13
14 Notes:
15 - I haven't understood how char/sprite priority works. This is used for
16 tunnels. I hacked it just by making the two needed colors opaque. They
17 don't seem to be used anywhere else. Even if it looks like a hack, it might
18 really be how the hardware works - see also notes regarding Kung Fu Master
19 at the beginning of m62.c.
20 - shtrider has some weird colors (pink cars, green "Seibu" truck, 'no'
21 on hiscore table) but there's no reason to think there's something wrong
22 with the driver.
23
24 TODO:
25 - shtrider dip switches and figure out flip screen (not same as travrusa)
26
27 ****************************************************************************
28
29 Shot Rider
30 PCB layout:
31
32 --------------------CCCCCCCCCCC------------------
33
34 P P OKI 2764
35 * 2764 2764 2764 AY AY x 2764 2764 2764
36
37 E D D P P
38
39 2764 2764 2764
40 --------------------------------------------------
41 C - connector
42 P - proms
43 E - connector for big black epoxy block
44 D - dips
45 * - empty rom socket
46 x - 40 pin chip, surface scratched (6803)
47
48 Epoxy block contains main cpu (Z80)
49 and 2764 eprom (swapped D3/D4 and D5/D6 data lines)
50
51 ****************************************************************************/
52
53 #include "emu.h"
54 #include "includes/travrusa.h"
55 #include "audio/irem.h"
56
57 #include "cpu/z80/z80.h"
58 #include "screen.h"
59
60
main_map(address_map & map)61 void travrusa_state::main_map(address_map &map)
62 {
63 map(0x0000, 0x7fff).rom();
64 map(0x8000, 0x8fff).ram().w(FUNC(travrusa_state::travrusa_videoram_w)).share("videoram");
65 map(0x9000, 0x9000).w(FUNC(travrusa_state::travrusa_scroll_x_low_w));
66 map(0xa000, 0xa000).w(FUNC(travrusa_state::travrusa_scroll_x_high_w));
67 map(0xc800, 0xc9ff).writeonly().share("spriteram");
68 map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w));
69 map(0xd001, 0xd001).w(FUNC(travrusa_state::travrusa_flipscreen_w)); /* + coin counters - not written by shtrider */
70 map(0xd000, 0xd000).portr("SYSTEM"); /* IN0 */
71 map(0xd001, 0xd001).portr("P1"); /* IN1 */
72 map(0xd002, 0xd002).portr("P2"); /* IN2 */
73 map(0xd003, 0xd003).portr("DSW1"); /* DSW1 */
74 map(0xd004, 0xd004).portr("DSW2"); /* DSW2 */
75 map(0xe000, 0xefff).ram();
76 }
77
78 static INPUT_PORTS_START( travrusa )
79 PORT_START("SYSTEM")
80 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
81 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
82 /* coin input must be active for 19 frames to be consistently recognized */
83 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(19)
84 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
85 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
86 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
87 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
88 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
89
90 PORT_START("P1")
91 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
92 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
93 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
94 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
95 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
96 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
97 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
98 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
99
100 PORT_START("P2")
101 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
102 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
103 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
104 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
105 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
106 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
107 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
108 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
109
110 PORT_START("DSW1")
111 PORT_DIPNAME( 0x03, 0x03, "Fuel Reduced on Collision" ) PORT_DIPLOCATION("DSW1:1,2")
112 PORT_DIPSETTING( 0x03, DEF_STR( Low ) )
113 PORT_DIPSETTING( 0x02, "Med" )
114 PORT_DIPSETTING( 0x01, "Hi" )
115 PORT_DIPSETTING( 0x00, "Max" )
116 PORT_DIPNAME( 0x04, 0x04, "Fuel Consumption" ) PORT_DIPLOCATION("DSW1:3")
117 PORT_DIPSETTING( 0x04, DEF_STR( Low ) )
118 PORT_DIPSETTING( 0x00, "Hi" )
119 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("DSW1:4")
120 PORT_DIPSETTING( 0x08, DEF_STR( No ) )
121 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
122 PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:5,6,7,8")
123 PORT_DIPSETTING( 0x80, "Not Used" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
124 PORT_DIPSETTING( 0x90, "Not Used" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
125 PORT_DIPSETTING( 0xa0, DEF_STR( 6C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
126 PORT_DIPSETTING( 0xb0, DEF_STR( 5C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
127 PORT_DIPSETTING( 0xc0, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
128 PORT_DIPSETTING( 0xd0, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
129 PORT_DIPSETTING( 0xe0, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
130 PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
131 PORT_DIPSETTING( 0x70, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
132 PORT_DIPSETTING( 0x60, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
133 PORT_DIPSETTING( 0x50, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
134 PORT_DIPSETTING( 0x40, DEF_STR( 1C_5C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
135 PORT_DIPSETTING( 0x30, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
136 PORT_DIPSETTING( 0x20, DEF_STR( 1C_7C ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
137 PORT_DIPSETTING( 0x10, "Not Used" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
138 PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
139
140 PORT_DIPSETTING( 0x80, DEF_STR( Free_Play ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
141 PORT_DIPSETTING( 0x90, "A 3C_1C / B 1C_3C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
142 PORT_DIPSETTING( 0xa0, "A 2C_1C / B 1C_3C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
143 PORT_DIPSETTING( 0xb0, "A 1C_1C / B 1C_3C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
144 PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
145 PORT_DIPSETTING( 0xd0, "A 3C_1C / B 1C_2C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
146 PORT_DIPSETTING( 0xe0, "A 2C_1C / B 1C_2C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
147 PORT_DIPSETTING( 0xf0, "A 1C_1C / B 1C_2C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
148 PORT_DIPSETTING( 0x70, "A 1C_1C / B 1C_5C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
149 PORT_DIPSETTING( 0x60, "A 2C_1C / B 1C_5C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
150 PORT_DIPSETTING( 0x50, "A 3C_1C / B 1C_5C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
151 PORT_DIPSETTING( 0x40, DEF_STR( Free_Play ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
152 PORT_DIPSETTING( 0x30, "A 1C_1C / B 1C_6C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
153 PORT_DIPSETTING( 0x20, "A 2C_1C / B 1C_6C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
154 PORT_DIPSETTING( 0x10, "A 3C_1C / B 1C_6C" ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
155 PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x00)
156
157 PORT_START("DSW2")
158 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:1")
159 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
160 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
161 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW2:2")
162 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
163 PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) )
164 PORT_DIPNAME( 0x04, 0x04, "Coin Mode" ) PORT_DIPLOCATION("DSW2:3")
165 PORT_DIPSETTING( 0x04, "Mode 1" )
166 PORT_DIPSETTING( 0x00, "Mode 2" )
167 PORT_DIPNAME( 0x08, 0x08, "Speed Type" ) PORT_DIPLOCATION("DSW2:4")
168 PORT_DIPSETTING( 0x08, "M/H" ) //mph ?
169 PORT_DIPSETTING( 0x00, "Km/H" )
170 /* In stop mode, press 2 to stop and 1 to restart */
171 PORT_DIPNAME( 0x10, 0x10, "Stop Mode (Cheat)") PORT_DIPLOCATION("DSW2:5")
172 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
173 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
174 PORT_DIPNAME( 0x20, 0x20, "Title" ) PORT_DIPLOCATION("DSW2:6")
175 PORT_DIPSETTING( 0x20, "Traverse USA" )
176 PORT_DIPSETTING( 0x00, "Zippy Race" )
177 PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") PORT_DIPLOCATION("DSW2:7")
178 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
179 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
180 PORT_SERVICE_DIPLOC( 0x80, 0x80, "DSW2:8")
181 INPUT_PORTS_END
182
183 /* same as travrusa, no "Title" switch */
184 static INPUT_PORTS_START( motorace )
185 PORT_INCLUDE( travrusa )
186
187 PORT_MODIFY("DSW2")
188 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "DSW2:6")
189 INPUT_PORTS_END
190
191 static INPUT_PORTS_START( shtrider )
192 PORT_START("SYSTEM")
193 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
194 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
195 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
196 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
197 PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
198 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
199
200 PORT_START("P1")
201 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
202 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
203 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
204 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
205 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
206 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
207 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
208 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
209
210 PORT_START("P2")
211 PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNUSED )
212 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
213 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
214 PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
215
216 PORT_START("DSW1")
217 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW1:1,2,3")
218 PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
219 PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C ) )
220 PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
221 PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C ) )
222 PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
223 PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) )
224 PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
225 PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
226 PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW1:4,5")
227 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
228 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
229 PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) )
230 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
231 PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSW1:6" )
232 PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSW1:7" )
233 PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSW1:8" )
234
235 PORT_START("DSW2")
236 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:1")
237 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
238 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
239 PORT_DIPNAME( 0x02, 0x02, "Speed Display" ) PORT_DIPLOCATION("DSW2:2")
240 PORT_DIPSETTING( 0x02, "km/h" )
241 PORT_DIPSETTING( 0x00, "mph" )
242 PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSW2:3" )
243 PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW2:4")
244 PORT_DIPSETTING( 0x08, DEF_STR( Upright ) )
245 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
246 PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSW2:5" )
247 PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSW2:6" )
248 PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSW2:7" )
249 PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSW2:8" )
250 INPUT_PORTS_END
251
252
253
254 static const gfx_layout charlayout =
255 {
256 8,8,
257 RGN_FRAC(1,3),
258 3,
259 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
260 { 0, 1, 2, 3, 4, 5, 6, 7 },
261 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
262 8*8
263 };
264
265 static const gfx_layout spritelayout =
266 {
267 16,16,
268 RGN_FRAC(1,3),
269 3,
270 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
271 { 0, 1, 2, 3, 4, 5, 6, 7,
272 16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
273 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
274 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
275 32*8
276 };
277
278 static const gfx_layout shtrider_spritelayout =
279 {
280 16,16,
281 RGN_FRAC(1,3),
282 3,
283 { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
284 { 0, 1, 2, 3, 4, 5, 6, 7,
285 8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
286 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
287 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
288 32*8
289 };
290
291 static GFXDECODE_START( gfx_travrusa )
292 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
293 GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*8, 16 )
294 GFXDECODE_END
295
GFXDECODE_START(gfx_shtrider)296 static GFXDECODE_START( gfx_shtrider )
297 GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
298 GFXDECODE_ENTRY( "gfx2", 0, shtrider_spritelayout, 16*8, 16 )
299 GFXDECODE_END
300
301 void travrusa_state::machine_reset()
302 {
303 m_scrollx[0] = 0;
304 m_scrollx[1] = 0;
305 }
306
travrusa(machine_config & config)307 void travrusa_state::travrusa(machine_config &config)
308 {
309 /* basic machine hardware */
310 Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */
311 m_maincpu->set_addrmap(AS_PROGRAM, &travrusa_state::main_map);
312 m_maincpu->set_vblank_int("screen", FUNC(travrusa_state::irq0_line_hold));
313
314 /* video hardware */
315 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
316 screen.set_refresh_hz(56.75);
317 screen.set_vblank_time(ATTOSECONDS_IN_USEC(1790) /* accurate frequency, measured on a Moon Patrol board, is 56.75Hz. */);
318 /* the Lode Runner manual (similar but different hardware) */
319 /* talks about 55Hz and 1790ms vblank duration. */
320 screen.set_size(32*8, 32*8);
321 screen.set_visarea(1*8, 31*8-1, 0*8, 32*8-1);
322 screen.set_screen_update(FUNC(travrusa_state::screen_update_travrusa));
323 screen.set_palette(m_palette);
324
325 GFXDECODE(config, m_gfxdecode, m_palette, gfx_travrusa);
326 PALETTE(config, m_palette, FUNC(travrusa_state::travrusa_palette), 16*8+16*8, 128+16);
327
328 /* sound hardware */
329 //m52_sound_c_audio(config);
330 IREM_M52_SOUNDC_AUDIO(config, "irem_audio", 0);
331 }
332
shtrider(machine_config & config)333 void travrusa_state::shtrider(machine_config &config)
334 {
335 travrusa(config);
336
337 /* video hardware */
338 m_gfxdecode->set_info(gfx_shtrider);
339 m_palette->set_init(FUNC(travrusa_state::shtrider_palette));
340 }
341
shtriderb(machine_config & config)342 void travrusa_state::shtriderb(machine_config &config)
343 {
344 travrusa(config);
345
346 /* video hardware */
347 m_gfxdecode->set_info(gfx_shtrider);
348 }
349
350 /***************************************************************************
351
352 Game driver(s)
353
354 ***************************************************************************/
355
356
357 ROM_START( travrusa )
358 ROM_REGION( 0x10000, "maincpu", 0 )
CRC(be066c0a)359 ROM_LOAD( "zr1-0.m3", 0x0000, 0x2000, CRC(be066c0a) SHA1(fed0ef114b08519b99d77485b73768a838d2f06e) )
360 ROM_LOAD( "zr1-5.l3", 0x2000, 0x2000, CRC(145d6b34) SHA1(c9e2bd1d3e62c496e4c5057c4012b069dfcf592d) )
361 ROM_LOAD( "zr1-6a.k3", 0x4000, 0x2000, CRC(e1b51383) SHA1(34f4476c1bcc28c53c8ffa7b614f443a329aae13) )
362 ROM_LOAD( "zr1-7.j3", 0x6000, 0x2000, CRC(85cd1a51) SHA1(7eb046514845cb9d2507ee24d1b2f7cc5402ac02) )
363
364 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
365 ROM_LOAD( "mr10.1a", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) )
366
367 ROM_REGION( 0x06000, "gfx1", 0 )
368 ROM_LOAD( "zippyrac.001", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) )
369 ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) )
370 ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) )
371
372 ROM_REGION( 0x06000, "gfx2", 0 )
373 ROM_LOAD( "zr1-8.n3", 0x0000, 0x2000, CRC(3e2c7a6b) SHA1(abc9eeb656ab6ed5f14e10fc988f75f21ccf037a) )
374 ROM_LOAD( "zr1-9.l3", 0x2000, 0x2000, CRC(13be6a14) SHA1(47861910fe4c46cd72634cf7d834be2da2a0a4f9) )
375 ROM_LOAD( "zr1-10.k3", 0x4000, 0x2000, CRC(6fcc9fdb) SHA1(88f878b9ebf07c5a16f8cb742016cac971ed3f10) )
376
377 ROM_REGION( 0x0320, "proms", 0 )
378 ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */
379 ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */
380 ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */
381 ROM_END
382
383 /* Bootleg - "American Top" printed on title - (c) 1983 I.P. - Zippy Race graphic logo is blanked out - Main ROM0-ROM3 test NG */
384 ROM_START( travrusab )
385 ROM_REGION( 0x10000, "maincpu", 0 )
386 ROM_LOAD( "at4.m3", 0x0000, 0x2000, CRC(704ce6e4) SHA1(77385d853e3d5085c6ab155417e2b42212aff6fc) )
387 ROM_LOAD( "at5.l3", 0x2000, 0x2000, CRC(686cb0e6) SHA1(64c7e682a181bae159cca60ffa617c532b1e16d3) )
388 ROM_LOAD( "at6.k3", 0x4000, 0x2000, CRC(baf87d80) SHA1(761d687ef3f3dde80a47f547d3c822704a2ac821) )
389 ROM_LOAD( "at7.h3", 0x6000, 0x2000, CRC(48091ebe) SHA1(6146af6f08053a5955d9b388d25bfbab7ad6b0e5) )
390
391 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
392 ROM_LOAD( "11.a1", 0x7000, 0x1000, CRC(d2c0bc33) SHA1(3a52ae514daf985d297416301dac0ac6cbe671d7) )
393
394 ROM_REGION( 0x06000, "gfx1", 0 )
395 ROM_LOAD( "zippyrac.001", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) /* at1.e3 */
396 ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) /* at2.c3 */
397 ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) /* at3.a3 */
398
399 ROM_REGION( 0x06000, "gfx2", 0 )
400 ROM_LOAD( "8.n3", 0x0000, 0x2000, CRC(00c0f46b) SHA1(5fccc188af653785f3fc0f9d36dbbbab472f6fdc) )
401 ROM_LOAD( "9.m3", 0x2000, 0x2000, CRC(73ade73b) SHA1(4da012d71e7c1f46407343cc8d4fbe0397b7db71) )
402 ROM_LOAD( "10.k3", 0x4000, 0x2000, CRC(fcfeaa69) SHA1(a958caf70d2dc4a80298a395cb48db210e6ca16b) )
403
404 ROM_REGION( 0x0320, "proms", 0 )
405 ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */
406 ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */
407 ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */
408 ROM_END
409
410 ROM_START( travrusab2 ) // all ROMs match travrusa but the ones where differently stated
411 ROM_REGION( 0x10000, "maincpu", 0 )
412 ROM_LOAD( "0.2m3", 0x0000, 0x2000, CRC(c96e81ac) SHA1(5b01269ce05604239b14ba7eaab8250c8ff17591) ) // unique
413 ROM_LOAD( "5.2l3", 0x2000, 0x2000, CRC(145d6b34) SHA1(c9e2bd1d3e62c496e4c5057c4012b069dfcf592d) )
414 ROM_LOAD( "6.2k3", 0x4000, 0x2000, CRC(e1b51383) SHA1(34f4476c1bcc28c53c8ffa7b614f443a329aae13) )
415 ROM_LOAD( "7.2j3", 0x6000, 0x2000, CRC(ab8a3a33) SHA1(e332b6e727083cf508ccec721ce42ccc3aa54e91) ) // same as mototour
416
417 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
418 ROM_LOAD( "4.1a1", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) )
419
420 ROM_REGION( 0x06000, "gfx1", 0 )
421 ROM_LOAD( "1.1e3", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) )
422 ROM_LOAD( "2.1c3", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) )
423 ROM_LOAD( "3.1a3", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) )
424
425 ROM_REGION( 0x06000, "gfx2", 0 )
426 ROM_LOAD( "8.3n3", 0x0000, 0x2000, CRC(3e2c7a6b) SHA1(abc9eeb656ab6ed5f14e10fc988f75f21ccf037a) )
427 ROM_LOAD( "9.3m3", 0x2000, 0x2000, CRC(13be6a14) SHA1(47861910fe4c46cd72634cf7d834be2da2a0a4f9) )
428 ROM_LOAD( "10.3k3", 0x4000, 0x2000, CRC(6fcc9fdb) SHA1(88f878b9ebf07c5a16f8cb742016cac971ed3f10) )
429
430 ROM_REGION( 0x0320, "proms", 0 )
431 ROM_LOAD( "6349-2.1k2", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) // character palette - last $100 are unused
432 ROM_LOAD( "tbp18s030.3f1", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) // sprite palette
433 ROM_LOAD( "mb7052.3h2", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) // sprite lookup table
434 ROM_END
435
436 ROM_START( motorace )
437 ROM_REGION( 0x12000, "maincpu", 0 )
438 ROM_LOAD( "mr.cpu", 0x0000, 0x2000, CRC(89030b0c) SHA1(dec4209385bbccff4a3c0d93d6507110ef841331) ) /* encrypted */
439 ROM_LOAD( "mr1.3l", 0x2000, 0x2000, CRC(0904ed58) SHA1(2776e031cb58f99103bc35299bffd7612d954608) )
440 ROM_LOAD( "mr2.3k", 0x4000, 0x2000, CRC(8a2374ec) SHA1(7159731f5ef2485e3c822e3e8e51e9583dd1c6bc) )
441 ROM_LOAD( "mr3.3j", 0x6000, 0x2000, CRC(2f04c341) SHA1(ae990d9d4abdd7d6ef9d21aa62125fe2e0067623) )
442
443 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
444 ROM_LOAD( "mr10.1a", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) )
445
446 ROM_REGION( 0x06000, "gfx1", 0 )
447 ROM_LOAD( "mr7.3e", 0x0000, 0x2000, CRC(492a60be) SHA1(9a3d6407b834eb7c3e3c8bb292ff124550a2787c) )
448 ROM_LOAD( "mr8.3c", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) )
449 ROM_LOAD( "mr9.3a", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) )
450
451 ROM_REGION( 0x06000, "gfx2", 0 )
452 ROM_LOAD( "mr4.3n", 0x0000, 0x2000, CRC(5cf1a0d6) SHA1(ef0883e71ee1e9c38cf3f444d9d8e79a08076b78) )
453 ROM_LOAD( "mr5.3m", 0x2000, 0x2000, CRC(f75f2aad) SHA1(e4a8a3da56cbc04f0c9041afac182d1bfceb1d0d) )
454 ROM_LOAD( "mr6.3k", 0x4000, 0x2000, CRC(518889a0) SHA1(70b417104ce86132cb5542813c1e0509b2260756) )
455
456 ROM_REGION( 0x0320, "proms", 0 )
457 ROM_LOAD( "mmi6349.ij", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */
458 ROM_LOAD( "tbp18s.2", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */
459 ROM_LOAD( "tbp24s10.3", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */
460 ROM_END
461
462 /*
463
464 Moto Tour is a Tecfri licensed version of Traverse USA/Zippy Race from Irem
465
466 This version doesn't have the MSM5202 but still has the sounds produced by the 5202 with a lower quality, I guess it converts the sound data to analog in some way, also this version is unprotected, doesn't have the epoxy block.
467
468 Unfortunately the eprom's labels have disappeared, so I name it similar to Traverse USA but with the letters mt (Moto Tour)
469
470 Rom Info
471
472 snd.a1 ------ sound code, 100% identical to Traverse Usa/Zippy race
473
474 mt1-1.e3 \
475 mt1-2.c3 -- Backgrounds?, 100% identical to Traverse Usa/Zippy race
476 mt1-3.a3 /
477
478 mt1-4.m3 \
479 mt1-5.l3 ==
480 mt1-6.k3 == Main cpu. Different from the other sets
481 mt1-7.j3 /
482
483
484 mt1-8.n3 \
485 mt1-9.m3 -- Sprites. Apparently all different from the other sets
486 mt1-10.k3 /
487
488 mm6349.k2 \
489 prom1.f1 -- color proms, identical to other versions
490 prom2.h2 /
491
492 Ricky2001
493
494 */
495
496 ROM_START( mototour )
497 ROM_REGION( 0x10000, "maincpu", 0 )
498 ROM_LOAD( "mt1-4.m3", 0x0000, 0x2000, CRC(fe643567) SHA1(2e47b6de43ff7fc1f070d34376fde697fc719b80) )
499 ROM_LOAD( "mt1-5.l3", 0x2000, 0x2000, CRC(38d9d0f5) SHA1(8b4531a28ff69df04a5eef687383dab57e0aa685) )
500 ROM_LOAD( "mt1-6.k3", 0x4000, 0x2000, CRC(efd325f2) SHA1(0862c0ec87f601b6c1cba2bd25e3186b6ad0c68e) )
501 ROM_LOAD( "mt1-7.j3", 0x6000, 0x2000, CRC(ab8a3a33) SHA1(e332b6e727083cf508ccec721ce42ccc3aa54e91) )
502
503 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
504 ROM_LOAD( "snd.a1", 0x7000, 0x1000, CRC(a02ad8a0) SHA1(aff80b506dbecabed2a36eb743693940f6a22d16) ) // == mr10.1a
505
506 ROM_REGION( 0x06000, "gfx1", 0 )
507 ROM_LOAD( "mt1-1.e3", 0x0000, 0x2000, CRC(aa8994dd) SHA1(9b326ce52a03d723e5c3c1b5fd4aa8fa7f70f904) ) // == zippyrac.001
508 ROM_LOAD( "mt1-2.c3", 0x2000, 0x2000, CRC(3a046dd1) SHA1(65c1dd1c0b5fb72ac5c04e11a577308245e4b312) ) // == mr8.3c
509 ROM_LOAD( "mt1-3.a3", 0x4000, 0x2000, CRC(1cc3d3f4) SHA1(e7ee365d43d783cb6b7df37c6edeadbed35318d9) ) // == mr9.3a
510
511 ROM_REGION( 0x06000, "gfx2", 0 )
512 ROM_LOAD( "mt1-8..n3", 0x0000, 0x2000, CRC(600a57f5) SHA1(86c2b2efb9392b7eca44510587d2459388c40435) )
513 ROM_LOAD( "mt1-9..m3", 0x2000, 0x2000, CRC(6f9f2a4e) SHA1(8ebdd69895a4dd5de7fe84505359cccaa0aca6f8) )
514 ROM_LOAD( "mt1-10..k3", 0x4000, 0x2000, CRC(d958def5) SHA1(198adf7e87804bd018b8cfa8bbc68623255698a2) )
515
516 ROM_REGION( 0x0320, "proms", 0 )
517 ROM_LOAD( "mmi6349.k2", 0x0000, 0x0200, CRC(c9724350) SHA1(1fac20cdc0a53d94e8f67b49d7dd71d1b9f1f7ef) ) /* character palette - last $100 are unused */ // == mmi6349.ij
518 ROM_LOAD( "prom1.f1", 0x0200, 0x0020, CRC(a1130007) SHA1(9deb0eed75dd06e86f83c819a3393158be7c9dce) ) /* sprite palette */ // == tbp18s.2
519 ROM_LOAD( "prom2.h2", 0x0220, 0x0100, CRC(76062638) SHA1(7378a26cf455d9d3df90929dc665870514c34b54) ) /* sprite lookup table */ // == tbp24s10.3
520 ROM_END
521
522
523 /* it's probably a bootleg of the original Seibu version with the roms decrypted (no epoxy block) */
524 ROM_START( shtrider )
525 ROM_REGION( 0x10000, "maincpu", 0 )
526 ROM_LOAD( "sr01a.bin", 0x0000, 0x2000, CRC(de76d537) SHA1(5ad90571c451b0d7b7a569556cfe075ead00fa2b) )
527 ROM_LOAD( "sr02a.bin", 0x2000, 0x2000, CRC(cd1e1bfc) SHA1(fb156b5e5a5e7a24575264b391e0f3756ef3e021) )
528 ROM_LOAD( "sr03a.bin", 0x4000, 0x2000, CRC(3ade11b9) SHA1(70b9dbd510cf6192194acf6876856d4c19bdf279) )
529 ROM_LOAD( "sr04a.bin", 0x6000, 0x2000, CRC(02b96eaa) SHA1(ba4d61cf57142192684c45dd22720234d3521241) )
530
531 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
532 ROM_LOAD( "sr11a.bin", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) )
533
534 ROM_REGION( 0x06000, "gfx1", 0 )
535 ROM_LOAD( "sr05a.bin", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) )
536 ROM_LOAD( "sr06a.bin", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) )
537 ROM_LOAD( "sr07a.bin", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) )
538
539 ROM_REGION( 0x06000, "gfx2", 0 )
540 ROM_LOAD( "sr08a.bin", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) )
541 ROM_LOAD( "sr09a.bin", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b) )
542 ROM_LOAD( "sr10b.bin", 0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) )
543
544 ROM_REGION( 0x0420, "proms", 0 )
545 ROM_LOAD( "1.bpr", 0x0000, 0x0100, CRC(e9e258e5) SHA1(b98df686e8e2afa9ed05a56e1d3acb0d7cee3888) )
546 ROM_LOAD( "2.bpr", 0x0100, 0x0100, CRC(6cf4591c) SHA1(3a5795758811f4fe3518216491ac13c0d17e842f) )
547 ROM_LOAD( "4.bpr", 0x0200, 0x0020, CRC(ee97c581) SHA1(a5d0ba5e03f3bcbdd72f89f0495a98cef2821e59) )
548 ROM_LOAD( "3.bpr", 0x0220, 0x0100, CRC(5db47092) SHA1(8e234ee88143755a4fd5ec86a03b55be5f9c5db8) )
549 ROM_END
550
551 ROM_START( shtridera )
552 ROM_REGION( 0x10000, "maincpu", 0 )
553 ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(eb51315c) SHA1(0101c008b6731cd8ec796fee645113e2be79bd08) ) /* was inside epoxy block with cpu, encrypted */
554 ROM_LOAD( "2.bin", 0x2000, 0x2000, CRC(97675d19) SHA1(774ce4d370fcbbd8a4109df023bf21db92d2e839) )
555 ROM_LOAD( "3.bin", 0x4000, 0x2000, CRC(78d051cd) SHA1(e1dc2dcfc4af35bdd5245d23977e8640d81a43f1) )
556 ROM_LOAD( "4.bin", 0x6000, 0x2000, CRC(02b96eaa) SHA1(ba4d61cf57142192684c45dd22720234d3521241) )
557
558 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
559 ROM_LOAD( "11.bin", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) )
560
561 ROM_REGION( 0x06000, "gfx1", 0 )
562 ROM_LOAD( "5.bin", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) )
563 ROM_LOAD( "6.bin", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) )
564 ROM_LOAD( "7.bin", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) )
565
566 ROM_REGION( 0x06000, "gfx2", 0 )
567 ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) )
568 ROM_LOAD( "9.bin", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b) )
569 ROM_LOAD( "10.bin", 0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) )
570
571 ROM_REGION( 0x0420, "proms", 0 )
572 ROM_LOAD( "1.bpr", 0x0000, 0x0100, CRC(e9e258e5) SHA1(b98df686e8e2afa9ed05a56e1d3acb0d7cee3888) )
573 ROM_LOAD( "2.bpr", 0x0100, 0x0100, CRC(6cf4591c) SHA1(3a5795758811f4fe3518216491ac13c0d17e842f) )
574 ROM_LOAD( "4.bpr", 0x0200, 0x0020, CRC(ee97c581) SHA1(a5d0ba5e03f3bcbdd72f89f0495a98cef2821e59) )
575 ROM_LOAD( "3.bpr", 0x0220, 0x0100, CRC(5db47092) SHA1(8e234ee88143755a4fd5ec86a03b55be5f9c5db8) )
576 ROM_END
577
578 ROM_START( shtriderb )
579 ROM_REGION( 0x10000, "maincpu", 0 )
580 ROM_LOAD( "sr1.20.m3", 0x0000, 0x2000, CRC(8bca38d7) SHA1(97482ea1b6e5415df7149184dd5662d96a3e155a) )
581 ROM_LOAD( "sr2.21.l3", 0x2000, 0x2000, CRC(56d4a66a) SHA1(e51a409ecc9f4d808678467ca7ce9bc0a35a7863) )
582 ROM_LOAD( "sr3.22.k3", 0x4000, 0x2000, CRC(44cab4cc) SHA1(9e87d88353c858c25fb4ff9528c3f369505ffd88) )
583 ROM_LOAD( "sr4.23.h3", 0x6000, 0x2000, CRC(02b96eaa) SHA1(ba4d61cf57142192684c45dd22720234d3521241) )
584
585 ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
586 ROM_LOAD( "sr11.7.a1", 0x6000, 0x2000, CRC(a8396b76) SHA1(614151fb1d25930e9fee4ab290a63f8fe97adbe6) )
587
588 ROM_REGION( 0x06000, "gfx1", 0 )
589 ROM_LOAD( "sr5.f3", 0x0000, 0x2000, CRC(34449f79) SHA1(30aa9da07bf32282d213f63e50c564a336fd0102) )
590 ROM_LOAD( "sr6.c3", 0x2000, 0x2000, CRC(de43653d) SHA1(a9fae236ee8e32d576123a4871ba3c46ca78ec3b) )
591 ROM_LOAD( "sr7.a3", 0x4000, 0x2000, CRC(3445b81c) SHA1(6768d411f8c3a347b10908e757a701d5b71ca2bc) )
592
593 ROM_REGION( 0x06000, "gfx2", 0 )
594 ROM_LOAD( "sr8.17.n3", 0x0000, 0x2000, CRC(4072b096) SHA1(e43482ac916a0fa259f74f99dc6ef72e86c23d9d) )
595 ROM_LOAD( "sr9.18.m3", 0x2000, 0x2000, CRC(fd4cc7e6) SHA1(3852883d32354e8c90c6cf701581ebc57d830c8b))
596 ROM_LOAD( "sr10.19.k3",0x4000, 0x2000, CRC(0a117925) SHA1(e061254428874b6153c2e9e514122373395f4da1) )
597
598 ROM_REGION( 0x0420, "proms", 0 )
599 ROM_LOAD( "6349-2.k2", 0x0000, 0x0200, CRC(854487a7) SHA1(5f3a2a7f7ba89f945fda97debb5436af8a2c6885) )
600 ROM_LOAD( "prom1.6.f1", 0x0200, 0x0020, CRC(ee97c581) SHA1(a5d0ba5e03f3bcbdd72f89f0495a98cef2821e59))
601 ROM_LOAD( "prom2.12.h2", 0x0220, 0x0100, CRC(5db47092) SHA1(8e234ee88143755a4fd5ec86a03b55be5f9c5db8) )
602 ROM_END
603
604 void travrusa_state::init_motorace()
605 {
606 uint8_t *rom = memregion("maincpu")->base();
607 uint8_t buffer[0x2000];
608 memcpy(&buffer[0], rom, 0x2000);
609
610 /* The first CPU ROM has the address and data lines scrambled */
611 for (int A = 0; A < 0x2000; A++)
612 {
613 int j = bitswap<16>(A,15,14,13,9,7,5,3,1,12,10,8,6,4,2,0,11);
614 rom[j] = bitswap<8>(buffer[A],2,7,4,1,6,3,0,5);
615 }
616 }
617
init_shtridra()618 void travrusa_state::init_shtridra()
619 {
620 uint8_t *rom = memregion("maincpu")->base();
621
622 /* D3/D4 and D5/D6 swapped */
623 for (int A = 0; A < 0x2000; A++)
624 rom[A] = bitswap<8>(rom[A],7,5,6,3,4,2,1,0);
625 }
626
shtridrb_port11_r()627 uint8_t travrusa_state::shtridrb_port11_r()
628 {
629 printf("shtridrb_port11_r %04x\n", m_maincpu->pc());
630 // reads, masks with 0xa8, checks for 0x88, resets game if not happy with value?
631 return 0x88;
632 }
633
634
init_shtridrb()635 void travrusa_state::init_shtridrb()
636 {
637 m_maincpu->space(AS_IO).install_read_handler(0x11, 0x11, 0, 0xff00, 0, read8smo_delegate(*this, FUNC(travrusa_state::shtridrb_port11_r)));
638 }
639
640
641 GAME( 1983, travrusa, 0, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem", "Traverse USA / Zippy Race", MACHINE_SUPPORTS_SAVE )
642 GAME( 1983, travrusab, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg (I.P.)", "Traverse USA (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
643 GAME( 1983, travrusab2, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "bootleg", "Traverse USA (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // still shows both Irem and Tecfri
644 GAME( 1983, mototour, travrusa, travrusa, travrusa, travrusa_state, empty_init, ROT270, "Irem (Tecfri license)", "MotoTour / Zippy Race (Tecfri license)", MACHINE_SUPPORTS_SAVE )
645 GAME( 1983, motorace, travrusa, travrusa, motorace, travrusa_state, init_motorace, ROT270, "Irem (Williams license)", "MotoRace USA", MACHINE_SUPPORTS_SAVE )
646
647 GAME( 1985, shtrider, 0, shtrider, shtrider, travrusa_state, empty_init, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", MACHINE_SUPPORTS_SAVE ) // possible bootleg
648 GAME( 1984, shtridera, shtrider, shtrider, shtrider, travrusa_state, init_shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", MACHINE_SUPPORTS_SAVE )
649 GAME( 1985, shtriderb, shtrider, shtriderb,shtrider, travrusa_state, init_shtridrb, ROT270|ORIENTATION_FLIP_X, "bootleg", "Shot Rider (bootleg)", MACHINE_SUPPORTS_SAVE ) // resets when you attempt to start a game?
650