1 /***************************************************************************
2
3 Atari GX2 hardware
4
5 driver by Aaron Giles
6
7 Games supported:
8 * Space Lords (1992) [2 sets]
9 * Moto Frenzy (1992)
10 * Road Riot's Revenge Rally (1993)
11
12 Known bugs:
13 * protection devices unknown
14
15 ****************************************************************************
16
17 Memory map (TBA)
18
19 ***************************************************************************/
20
21
22 #include "driver.h"
23 #include "machine/atarigen.h"
24 #include "sndhrdw/atarijsa.h"
25 #include "vidhrdw/atarirle.h"
26 #include "atarigx2.h"
27
28
29
30 /*************************************
31 *
32 * Statics
33 *
34 *************************************/
35
36 #if 0
37 static UINT8 which_input;
38 #endif
39 static data32_t * mo_command;
40 static data32_t * protection_base;
41
42
43
44 /*************************************
45 *
46 * Initialization
47 *
48 *************************************/
49
update_interrupts(void)50 static void update_interrupts(void)
51 {
52 int newstate = 0;
53
54 if (atarigen_video_int_state)
55 newstate = 4;
56 if (atarigen_sound_int_state)
57 newstate = 5;
58
59 if (newstate)
60 cpu_set_irq_line(0, newstate, ASSERT_LINE);
61 else
62 cpu_set_irq_line(0, 7, CLEAR_LINE);
63 }
64
65
MACHINE_INIT(atarigx2)66 static MACHINE_INIT( atarigx2 )
67 {
68 atarigen_eeprom_reset();
69 atarigen_interrupt_reset(update_interrupts);
70 atarigen_scanline_timer_reset(atarigx2_scanline_update, 8);
71 atarijsa_reset();
72 }
73
74
75
76 /*************************************
77 *
78 * I/O read dispatch.
79 *
80 *************************************/
81
READ32_HANDLER(special_port2_r)82 static READ32_HANDLER( special_port2_r )
83 {
84 int temp = readinputport(2);
85 if (atarigen_cpu_to_sound_ready) temp ^= 0x0020;
86 if (atarigen_sound_to_cpu_ready) temp ^= 0x0010;
87 temp ^= 0x0008; /* A2D.EOC always high for now */
88 return (temp << 16) | temp;
89 }
90
91
READ32_HANDLER(special_port3_r)92 static READ32_HANDLER( special_port3_r )
93 {
94 int temp = readinputport(3);
95 return (temp << 16) | temp;
96 }
97
98 #if 0
99 static WRITE32_HANDLER( a2d_select_w )
100 {
101 if (ACCESSING_MSW32)
102 which_input = offset * 2;
103 if (ACCESSING_LSW32)
104 which_input = offset * 2 + 1;
105 }
106 #endif
107
READ32_HANDLER(a2d_data_r)108 static READ32_HANDLER( a2d_data_r )
109 {
110 /* otherwise, assume it's hydra */
111 switch (offset)
112 {
113 case 0:
114 return (readinputport(5) << 24) | (readinputport(6) << 8);
115 case 1:
116 return (readinputport(7) << 24) | (readinputport(8) << 8);
117 }
118
119 return 0;
120 }
121
122
WRITE32_HANDLER(latch_w)123 static WRITE32_HANDLER( latch_w )
124 {
125 /*
126 D13 = 68.DISA
127 D12 = ERASE
128 D11 = /MOGO
129 D8 = VCR
130 D5 = /XRESET
131 D4 = /SNDRES
132 D3 = CC.L
133 D0 = CC.R
134 */
135
136 log_cb(RETRO_LOG_DEBUG, LOGPRE "latch_w(%08X) & %08X\n", data, ~mem_mask);
137
138 /* upper byte */
139 if (!(mem_mask & 0xff000000))
140 {
141 /* bits 13-11 are the MO control bits */
142 atarirle_control_w(0, (data >> 27) & 7);
143 }
144
145 /* lower byte */
146 if (!(mem_mask & 0x00ff0000))
147 cpu_set_reset_line(1, (data & 0x100000) ? CLEAR_LINE : ASSERT_LINE);
148 }
149
150
WRITE32_HANDLER(mo_command_w)151 static WRITE32_HANDLER( mo_command_w )
152 {
153 COMBINE_DATA(mo_command);
154 if (ACCESSING_LSW32)
155 atarirle_command_w(0, ((data & 0xffff) == 2) ? ATARIRLE_COMMAND_CHECKSUM : ATARIRLE_COMMAND_DRAW);
156 }
157
158
159
160 /*************************************
161 *
162 * Protection?
163 *
164 *************************************/
165
166 static data16_t last_write;
167 static data16_t last_write_offset;
168
WRITE32_HANDLER(atarigx2_protection_w)169 static WRITE32_HANDLER( atarigx2_protection_w )
170 {
171 {
172 int pc = activecpu_get_previouspc();
173 /* if (pc == 0x11cbe || pc == 0x11c30)*/
174 /* log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Protection W@%04X = %04X (result to %06X)\n", pc, offset, data, activecpu_get_reg(M68K_A2));*/
175 /* else*/
176 if (ACCESSING_MSW32)
177 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Protection W@%04X = %04X\n", pc, offset * 4, data >> 16);
178 else
179 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Protection W@%04X = %04X\n", pc, offset * 4 + 2, data);
180 }
181
182 COMBINE_DATA(&protection_base[offset]);
183
184 if (ACCESSING_MSW32)
185 {
186 last_write = protection_base[offset] >> 16;
187 last_write_offset = offset*2;
188 }
189 if (ACCESSING_LSW32)
190 {
191 last_write = protection_base[offset] & 0xffff;
192 last_write_offset = offset*2+1;
193 }
194 }
195
READ32_HANDLER(atarigx2_protection_r)196 static READ32_HANDLER( atarigx2_protection_r )
197 {
198 static const UINT32 lookup_table[][2] =
199 {
200 /* sprite flipping*/
201 { 0x0000e54f, 0<<11 },
202 { 0x00024602, 5<<11 },
203 { 0x0004ec02, 7<<11 },
204 { 0x00064ddb, 7<<11 },
205 { 0x00086016, 0<<11 },
206 { 0x000ad909, 1<<11 },
207 { 0x000cf3cd, 3<<11 },
208 { 0x000e0a0f, 3<<11 },
209
210 { 0x00001b23, 0<<11 },
211 { 0x0002948b, 5<<11 },
212 { 0x0004a826, 7<<11 },
213 { 0x0006f6eb, 7<<11 },
214 { 0x00085031, 0<<11 },
215 { 0x000a798f, 1<<11 },
216 { 0x000c708e, 3<<11 },
217 { 0x000e1bf8, 3<<11 },
218
219 { 0x00000241, 0<<11 },
220 { 0x00020892, 5<<11 },
221 { 0x0004e0dc, 7<<11 },
222 { 0x00066288, 7<<11 },
223 { 0x0008294a, 0<<11 },
224 { 0x000a31dc, 1<<11 },
225 { 0x000c4413, 3<<11 },
226 { 0x000e31b6, 3<<11 },
227
228 { 0x000097c1, 0<<11 },
229 { 0x00020e6b, 5<<11 },
230 { 0x00042f77, 7<<11 },
231 { 0x00068256, 7<<11 },
232 { 0x0008317f, 0<<11 },
233 { 0x000af594, 1<<11 },
234 { 0x000c0a72, 3<<11 },
235 { 0x000ea856, 3<<11 },
236
237 { 0x0000ebd6, 0<<11 },
238 { 0x0002e22c, 5<<11 },
239 { 0x0004bca8, 7<<11 },
240 { 0x000688dd, 7<<11 },
241 { 0x00088556, 0<<11 },
242 { 0x000ad37f, 1<<11 },
243 { 0x000ca6d4, 3<<11 },
244 { 0x000e88c3, 3<<11 },
245
246 { 0x00007d37, 0<<11 },
247 { 0x00027b45, 5<<11 },
248 { 0x00045981, 7<<11 },
249 { 0x0006d53c, 7<<11 },
250 { 0x0008223e, 0<<11 },
251 { 0x000aaee3, 1<<11 },
252 { 0x000cf4c8, 3<<11 },
253 { 0x000e1064, 3<<11 },
254
255
256 /* initialization*/
257
258 { 0x00000241, 0x0000 },
259 { 0x0002F1CC, 0x0000 },
260 { 0x00043996, 0x7707 },
261 { 0x0006451F, 0x3096 },
262 { 0x0008BA02, 0xee0e },
263 { 0x000A78F4, 0x612c },
264 { 0x000CB890, 0x9909 },
265 { 0x000EF8A2, 0x51ba },
266 { 0x00105C79, 0x076d },
267 { 0x00121D13, 0xc419 },
268 { 0x00148CB8, 0x706a },
269 { 0x00162C65, 0xf48f },
270 { 0x0018FABB, 0xe963 },
271 { 0x001A2A33, 0xa535 },
272 { 0x001CF0DD, 0x9e64 },
273 { 0x001E8C14, 0x95a3 },
274 { 0x0020F239, 0x0edb },
275 { 0x00228E87, 0x8832 },
276 { 0x0024B022, 0x79dc },
277 { 0x00261D55, 0xb8a4 },
278 { 0x002889AB, 0xe0d5 },
279 { 0x002A935B, 0xe91e },
280 { 0x002C7BAE, 0x97d2 },
281 { 0x002E39D1, 0xd988 },
282 { 0x0030E44E, 0x09b6 },
283 { 0x00321765, 0x4c2b },
284 { 0x003487FF, 0x7eb1 },
285 { 0x003658C2, 0x7cbd },
286 { 0x00381E83, 0xe7b8 },
287 { 0x003A77CD, 0x2d07 },
288 { 0x003CCAE4, 0x90bf },
289 { 0x003EC0CB, 0x1d91 },
290 { 0x00409494, 0x1db7 },
291 { 0x004289EA, 0x1064 },
292 { 0x004458F1, 0x6ab0 },
293 { 0x00468029, 0x20f2 },
294 { 0x0048491E, 0xf3b9 },
295 { 0x004AB99D, 0x7148 },
296 { 0x004C1C9F, 0x84be },
297 { 0x004E2764, 0x41de },
298 { 0x00507ED9, 0x1ada },
299 { 0x005215B4, 0xd47d },
300 { 0x00547C85, 0x6ddd },
301 { 0x0056B74A, 0xe4eb },
302 { 0x005852C4, 0xf4d4 },
303 { 0x005AC949, 0xb551 },
304 { 0x005CD796, 0x83d3 },
305 { 0x005E9A08, 0x85c7 },
306 { 0x0060F0A5, 0x136c },
307 { 0x00629CD1, 0x9856 },
308 { 0x0064D3BB, 0x646b },
309 { 0x0066DF91, 0xa8c0 },
310 { 0x0068E892, 0xfd62 },
311 { 0x006AA1A7, 0xf97a },
312 { 0x006C2D39, 0x8a65 },
313 { 0x006E5928, 0xc9ec },
314 { 0x0070E2F1, 0x1401 },
315 { 0x00720C3A, 0x5c4f },
316 { 0x0074EBF3, 0x6306 },
317 { 0x00763113, 0x6cd9 },
318 { 0x00788C2A, 0xfa0f },
319 { 0x007A9E4B, 0x3d63 },
320 { 0x007C021D, 0x8d08 },
321 { 0x007E5B2C, 0x0df5 },
322 { 0x008016C3, 0x3b6e },
323 { 0x008211C5, 0x20c8 },
324 { 0x0084BED3, 0x4c69 },
325 { 0x00867F09, 0x105e },
326 { 0x00888CA5, 0xd560 },
327 { 0x008A7AA6, 0x41e4 },
328 { 0x008CE2C3, 0xa267 },
329 { 0x008EBA54, 0x7172 },
330 { 0x0090F0D1, 0x3c03 },
331 { 0x0092635E, 0xe4d1 },
332 { 0x0094AE35, 0x4b04 },
333 { 0x00969B70, 0xd447 },
334 { 0x00989794, 0xd20d },
335 { 0x009AC1CD, 0x85fd },
336 { 0x009CA4AA, 0xa50a },
337 { 0x009E265A, 0xb56b },
338 { 0x00A0D6FC, 0x35b5 },
339 { 0x00A24182, 0xa8fa },
340 { 0x00A405F7, 0x42b2 },
341 { 0x00A6C9BE, 0x986c },
342 { 0x00A8E888, 0xdbbb },
343 { 0x00AAA365, 0xc9d6 },
344 { 0x00AC9993, 0xacbc },
345 { 0x00AE3F72, 0xf940 },
346 { 0x00B03288, 0x32d8 },
347 { 0x00B2F67D, 0x6ce3 },
348 { 0x00B440B2, 0x45df },
349 { 0x00B67DA8, 0x5c75 },
350 { 0x00B89694, 0xdcd6 },
351 { 0x00BA29D0, 0x0dcf },
352 { 0x00BCED90, 0xabd1 },
353 { 0x00BE9524, 0x3d59 },
354 { 0x00C0F2B3, 0x26d9 },
355 { 0x00C240C2, 0x30ac },
356 { 0x00C4BF06, 0x51de },
357 { 0x00C68352, 0x003a },
358 { 0x00C868F8, 0xc8d7 },
359 { 0x00CAA9AF, 0x5180 },
360 { 0x00CC25DE, 0xbfd0 },
361 { 0x00CE8F3F, 0x6116 },
362 { 0x00D00D11, 0x21b4 },
363 { 0x00D216C8, 0xf4b5 },
364 { 0x00D4EF51, 0x56b3 },
365 { 0x00D61327, 0xc423 },
366 { 0x00D802EB, 0xcfba },
367 { 0x00DA2BD6, 0x9599 },
368 { 0x00DCFDB5, 0xb8bd },
369 { 0x00DECE09, 0xa50f },
370 { 0x00E037C5, 0x2802 },
371 { 0x00E2ECA7, 0xb89e },
372 { 0x00E40330, 0x5f05 },
373 { 0x00E6ACE5, 0x8808 },
374 { 0x00E8390C, 0xc60c },
375 { 0x00EAB30C, 0xd9b2 },
376 { 0x00ECB932, 0xb10b },
377 { 0x00EEEBB1, 0xe924 },
378 { 0x00F0B8CF, 0x2f6f },
379 { 0x00F23F66, 0x7c87 },
380 { 0x00F440E4, 0x5868 },
381 { 0x00F63401, 0x4c11 },
382 { 0x00F86F6F, 0xc161 },
383 { 0x00FAAD62, 0x1dab },
384 { 0x00FC0C91, 0xb666 },
385 { 0x00FE8189, 0x2d3d },
386 { 0x01000712, 0x76dc },
387 { 0x010208E2, 0x4190 },
388 { 0x01044C60, 0x01db },
389 { 0x0106254D, 0x7106 },
390 { 0x01081649, 0x98d2 },
391 { 0x010AB069, 0x20bc },
392 { 0x010C2BE2, 0xefd5 },
393 { 0x010E1B1E, 0x102a },
394 { 0x0110C888, 0x71b1 },
395 { 0x0112506A, 0x8589 },
396 { 0x0114E064, 0x06b6 },
397 { 0x01161632, 0xb51f },
398 { 0x0118A299, 0x9fbf },
399 { 0x011A94DB, 0xe4a5 },
400 { 0x011C0E71, 0xe8b8 },
401 { 0x011E9EF3, 0xd433 },
402 { 0x012041FA, 0x7807 },
403 { 0x0122D26A, 0xc9a2 },
404 { 0x01246AE1, 0x0f00 },
405 { 0x0126B6A8, 0xf934 },
406 { 0x012836BC, 0x9609 },
407 { 0x012AEDE2, 0xa88e },
408 { 0x012CF8F2, 0xe10e },
409 { 0x012E7530, 0x9818 },
410 { 0x0130CE06, 0x7f6a },
411 { 0x0132490B, 0x0dbb },
412 { 0x0134DCBE, 0x086d },
413 { 0x01363A41, 0x3d2d },
414 { 0x0138835D, 0x9164 },
415 { 0x013A1970, 0x6c97 },
416 { 0x013CCB58, 0xe663 },
417 { 0x013E514E, 0x5c01 },
418 { 0x01401717, 0x6b6b },
419 { 0x01428305, 0x51f4 },
420 { 0x0144A4CC, 0x1c6c },
421 { 0x014675E6, 0x6162 },
422 { 0x0148EBBC, 0x8565 },
423 { 0x014AED25, 0x30d8 },
424 { 0x014C860E, 0xf262 },
425 { 0x014EE316, 0x004e },
426 { 0x01509004, 0x6c06 },
427 { 0x0152C1C0, 0x95ed },
428 { 0x0154F096, 0x1b01 },
429 { 0x0156ED9B, 0xa57b },
430 { 0x01587C24, 0x8208 },
431 { 0x015A5DA7, 0xf4c1 },
432 { 0x015CFF4E, 0xf50f },
433 { 0x015E69E6, 0xc457 },
434 { 0x0160A24B, 0x65b0 },
435 { 0x0162CDF1, 0xd9c6 },
436 { 0x0164AD72, 0x12b7 },
437 { 0x01660309, 0xe950 },
438 { 0x0168E65E, 0x8bbe },
439 { 0x016A31D4, 0xb8ea },
440 { 0x016C3361, 0xfcb9 },
441 { 0x016E8E02, 0x887c },
442 { 0x01703638, 0x62dd },
443 { 0x0172EF1D, 0x1ddf },
444 { 0x0174E345, 0x15da },
445 { 0x0176029F, 0x2d49 },
446 { 0x01782EF0, 0x8cd3 },
447 { 0x017A7D43, 0x7cf3 },
448 { 0x017CA201, 0xfbd4 },
449 { 0x017E0360, 0x4c65 },
450 { 0x0180E8D8, 0x4db2 },
451 { 0x01820C2E, 0x6158 },
452 { 0x0184D83C, 0x3ab5 },
453 { 0x01867A8F, 0x51ce },
454 { 0x0188B382, 0xa3bc },
455 { 0x018AD630, 0x0074 },
456 { 0x018C7A47, 0xd4bb },
457 { 0x018EE93A, 0x30e2 },
458 { 0x019039FF, 0x4adf },
459 { 0x01925D77, 0xa541 },
460 { 0x0194C33D, 0x3dd8 },
461 { 0x019624B0, 0x95d7 },
462 { 0x01984FAA, 0xa4d1 },
463 { 0x019AF889, 0xc46d },
464 { 0x019C6DE5, 0xd3d6 },
465 { 0x019E06D4, 0xf4fb },
466 { 0x01A04BB4, 0x4369 },
467 { 0x01A2827B, 0xe96a },
468 { 0x01A4490A, 0x346e },
469 { 0x01A68ADA, 0xd9fc },
470 { 0x01A8D44B, 0xad67 },
471 { 0x01AAEB4A, 0x8846 },
472 { 0x01AC9BE5, 0xda60 },
473 { 0x01AE44F3, 0xb8d0 },
474 { 0x01B04E07, 0x4404 },
475 { 0x01B27E24, 0x2d73 },
476 { 0x01B47297, 0x3303 },
477 { 0x01B6E409, 0x1de5 },
478 { 0x01B8FFBC, 0xaa0a },
479 { 0x01BA5CD2, 0x4c5f },
480 { 0x01BCDF00, 0xdd0d },
481 { 0x01BEF748, 0x7cc9 },
482 { 0x01C0A6B1, 0x5005 },
483 { 0x01C2030E, 0x713c },
484 { 0x01C46FE5, 0x2702 },
485 { 0x01C65493, 0x41aa },
486 { 0x01C840BC, 0xbe0b },
487 { 0x01CA8B3E, 0x1010 },
488 { 0x01CCD7C4, 0xc90c },
489 { 0x01CE1A9C, 0x2086 },
490 { 0x01D015E6, 0x5768 },
491 { 0x01D272E4, 0xb525 },
492 { 0x01D4B256, 0x206f },
493 { 0x01D6CB39, 0x8583 },
494 { 0x01D867DA, 0xb966 },
495 { 0x01DA73ED, 0xd409 },
496 { 0x01DC6735, 0xce61 },
497 { 0x01DEAA0E, 0xe49f },
498 { 0x01E01B49, 0x5ede },
499 { 0x01E20CFD, 0xf90e },
500 { 0x01E415C3, 0x29d9 },
501 { 0x01E60EA5, 0xc998 },
502 { 0x01E87809, 0xb0d0 },
503 { 0x01EA455D, 0x9822 },
504 { 0x01EC5A0B, 0xc7d7 },
505 { 0x01EEAFDE, 0xa8b4 },
506 { 0x01F0A050, 0x59b3 },
507 { 0x01F2A751, 0x3d17 },
508 { 0x01F4EEF5, 0x2eb4 },
509 { 0x01F643FC, 0x0d81 },
510 { 0x01F8B9A0, 0xb7bd },
511 { 0x01FAA071, 0x5c3b },
512 { 0x01FC0340, 0xc0ba },
513 { 0x01FECF88, 0x6cad },
514 { 0x0200ED43, 0xedb8 },
515 { 0x02028222, 0x8320 },
516 { 0x020412A4, 0x9abf },
517 { 0x0206FC35, 0xb3b6 },
518 { 0x020870E9, 0x03b6 },
519 { 0x020AA719, 0xe20c },
520 { 0x020CBEAE, 0x74b1 },
521 { 0x020E50D4, 0xd29a },
522 { 0x0210BCA5, 0xead5 },
523 { 0x02127B20, 0x4739 },
524 { 0x02149187, 0x9dd2 },
525 { 0x021609C1, 0x77af },
526 { 0x02180B25, 0x04db },
527 { 0x021A24CA, 0x2615 },
528 { 0x021C1E83, 0x73dc },
529 { 0x021EEEF9, 0x1683 },
530 { 0x022042DD, 0xe363 },
531 { 0x02226C65, 0x0b12 },
532 { 0x0224347F, 0x9464 },
533 { 0x02266615, 0x3b84 },
534 { 0x02280966, 0x0d6d },
535 { 0x022A1FEB, 0x6a3e },
536 { 0x022CCA04, 0x7a6a },
537 { 0x022E9490, 0x5aa8 },
538 { 0x0230185F, 0xe40e },
539 { 0x023297E3, 0xcf0b },
540 { 0x02345336, 0x9309 },
541 { 0x02364610, 0xff9d },
542 { 0x0238C709, 0x0a00 },
543 { 0x023A559B, 0xae27 },
544 { 0x023CC2C8, 0x7d07 },
545 { 0x023E23E3, 0x9eb1 },
546 { 0x0240EEA8, 0xf00f },
547 { 0x0242C980, 0x9344 },
548 { 0x02448D9B, 0x8708 },
549 { 0x02464411, 0xa3d2 },
550 { 0x0248A96F, 0x1e01 },
551 { 0x024A6EB8, 0xf268 },
552 { 0x024C025A, 0x6906 },
553 { 0x024E7D2A, 0xc2fe },
554 { 0x0250DCBA, 0xf762 },
555 { 0x02526DCA, 0x575d },
556 { 0x0254063E, 0x8065 },
557 { 0x0256CEDB, 0x67cb },
558 { 0x0258106A, 0x196c },
559 { 0x025A39AC, 0x3671 },
560 { 0x025CB664, 0x6e6b },
561 { 0x025E5CEB, 0x06e7 },
562 { 0x02609C06, 0xfed4 },
563 { 0x0262E82F, 0x1b76 },
564 { 0x0264702B, 0x89d3 },
565 { 0x026638E8, 0x2be0 },
566 { 0x02680576, 0x10da },
567 { 0x026A06A9, 0x7a5a },
568 { 0x026CDF6E, 0x67dd },
569 { 0x026EEF02, 0x4acc },
570 { 0x0270E35B, 0xf9b9 },
571 { 0x02729A9A, 0xdf6f },
572 { 0x0274E451, 0x8ebe },
573 { 0x0276D343, 0xeff9 },
574 { 0x027819F8, 0x17b7 },
575 { 0x027A0956, 0xbe43 },
576 { 0x027C0DB0, 0x60b0 },
577 { 0x027E5D80, 0x8ed5 },
578 { 0x02806C72, 0xd6d6 },
579 { 0x0282A80F, 0xa3e8 },
580 { 0x0284E5EC, 0xa1d1 },
581 { 0x02867DCD, 0x937e },
582 { 0x02882667, 0x38d8 },
583 { 0x028AEBCD, 0xc2c4 },
584 { 0x028C668D, 0x4fdf },
585 { 0x028E5840, 0xf252 },
586 { 0x0290CB93, 0xd1bb },
587 { 0x02921C8F, 0x67f1 },
588 { 0x02944E2B, 0xa6bc },
589 { 0x02961785, 0x5767 },
590 { 0x0298E2C3, 0x3fb5 },
591 { 0x029ABF47, 0x06dd },
592 { 0x029CED9E, 0x48b2 },
593 { 0x029E5173, 0x364b },
594 { 0x02A0004A, 0xd80d },
595 { 0x02A25437, 0x2bda },
596 { 0x02A49B8D, 0xaf0a },
597 { 0x02A664A0, 0x1b4c },
598 { 0x02A8AE40, 0x3603 },
599 { 0x02AAE51F, 0x4af6 },
600 { 0x02AC80FA, 0x4104 },
601 { 0x02AE9687, 0x7a60 },
602 { 0x02B0CD25, 0xdf60 },
603 { 0x02B2BCB3, 0xefc3 },
604 { 0x02B4CD8D, 0xa967 },
605 { 0x02B6FFFC, 0xdf55 },
606 { 0x02B81F78, 0x316e },
607 { 0x02BA0E8B, 0x8eef },
608 { 0x02BC1A89, 0x4669 },
609 { 0x02BEBA0D, 0xbe79 },
610 { 0x02C0587B, 0xcb61 },
611 { 0x02C2901E, 0xb38c },
612 { 0x02C4F808, 0xbc66 },
613 { 0x02C65F98, 0x931a },
614 { 0x02C89C62, 0x256f },
615 { 0x02CA03F9, 0xd2a0 },
616 { 0x02CCA4C0, 0x5268 },
617 { 0x02CEF1DD, 0xe236 },
618 { 0x02D0707E, 0xcc0c },
619 { 0x02D222FE, 0x7795 },
620 { 0x02D4F00E, 0xbb0b },
621 { 0x02D679FC, 0x4703 },
622 { 0x02D89581, 0x2202 },
623 { 0x02DADF2F, 0x16b9 },
624 { 0x02DCFBCE, 0x5505 },
625 { 0x02DE2E69, 0x262f },
626 { 0x02E069E7, 0xc5ba },
627 { 0x02E20F8F, 0x3bbe },
628 { 0x02E42E77, 0xb2bd },
629 { 0x02E6969F, 0x0b28 },
630 { 0x02E82D59, 0x2bb4 },
631 { 0x02EA14FC, 0x5a92 },
632 { 0x02EC879C, 0x5cb3 },
633 { 0x02EEDEB1, 0x6a04 },
634 { 0x02F0A9CB, 0xc2d7 },
635 { 0x02F226F7, 0xffa7 },
636 { 0x02F40DF5, 0xb5d0 },
637 { 0x02F608E7, 0xcf31 },
638 { 0x02F87608, 0x2cd9 },
639 { 0x02FA507C, 0x9e8b },
640 { 0x02FC2A3F, 0x58de },
641 { 0x02FEC003, 0xae1d },
642 { 0x03007959, 0x9b64 },
643 { 0x0302181A, 0xc2b0 },
644 { 0x03045C87, 0xec63 },
645 { 0x0306F6E4, 0xf226 },
646 { 0x0308E603, 0x756a },
647 { 0x030A1562, 0xa39c },
648 { 0x030CF677, 0x026d },
649 { 0x030E56FD, 0x930a },
650 { 0x0310731C, 0x9c09 },
651 { 0x0312CA4E, 0x06a9 },
652 { 0x03148639, 0xeb0e },
653 { 0x0316140E, 0x363f },
654 { 0x0318EB2F, 0x7207 },
655 { 0x031A13D3, 0x6785 },
656 { 0x031C8940, 0x0500 },
657 { 0x031E5AF7, 0x5713 },
658 { 0x0320557E, 0x95bf },
659 { 0x0322982F, 0x4a82 },
660 { 0x0324B60C, 0xe2b8 },
661 { 0x0326A26C, 0x7a14 },
662 { 0x0328D0F4, 0x7bb1 },
663 { 0x032A9258, 0x2bae },
664 { 0x032CEAAE, 0x0cb6 },
665 { 0x032EF0B3, 0x1b38 },
666 { 0x0330E489, 0x92d2 },
667 { 0x03322BC0, 0x8e9b },
668 { 0x0334E8E2, 0xe5d5 },
669 { 0x0336CB76, 0xbe0d },
670 { 0x03380957, 0x7cdc },
671 { 0x033AEEA9, 0xefb7 },
672 { 0x033C0D68, 0x0bdb },
673 { 0x033E26ED, 0xdf21 },
674 { 0x0340E5BA, 0x86d3 },
675 { 0x0342445C, 0xd2d4 },
676 { 0x03444287, 0xf1d4 },
677 { 0x03463A60, 0xe242 },
678 { 0x0348B680, 0x68dd },
679 { 0x034A68AD, 0xb3f8 },
680 { 0x034C283D, 0x1fda },
681 { 0x034EF68D, 0x836e },
682 { 0x03509056, 0x81be },
683 { 0x03524E05, 0x16cd },
684 { 0x0354B3B5, 0xf6b9 },
685 { 0x0356A11D, 0x265b },
686 { 0x0358049C, 0x6fb0 },
687 { 0x035AD934, 0x77e1 },
688 { 0x035C07CD, 0x18b7 },
689 { 0x035E9F07, 0x4777 },
690 { 0x0360959C, 0x8808 },
691 { 0x0362957A, 0x5ae6 },
692 { 0x036400C5, 0xff0f },
693 { 0x0366E520, 0x6a70 },
694 { 0x0368E728, 0x6606 },
695 { 0x036A321D, 0x3bca },
696 { 0x036C0BF2, 0x1101 },
697 { 0x036EC1A9, 0x0b5c },
698 { 0x037034E7, 0x8f65 },
699 { 0x0372D30B, 0x9eff },
700 { 0x0374056C, 0xf862 },
701 { 0x0376AB8C, 0xae69 },
702 { 0x03786234, 0x616b },
703 { 0x037AF5F5, 0xffd3 },
704 { 0x037CDD2B, 0x166c },
705 { 0x037EE8D2, 0xcf45 },
706 { 0x03805144, 0xa00a },
707 { 0x03826A5C, 0xe278 },
708 { 0x03840DE5, 0xd70d },
709 { 0x03869747, 0xd2ee },
710 { 0x03888E63, 0x4e04 },
711 { 0x038A12F2, 0x8354 },
712 { 0x038C597B, 0x3903 },
713 { 0x038EB704, 0xb3c2 },
714 { 0x03902359, 0xa767 },
715 { 0x0392FB74, 0x2661 },
716 { 0x0394521A, 0xd060 },
717 { 0x03962F46, 0x16f7 },
718 { 0x0398F591, 0x4969 },
719 { 0x039A6F1A, 0x474d },
720 { 0x039CA694, 0x3e6e },
721 { 0x039E823F, 0x77db },
722 { 0x03A02FF5, 0xaed1 },
723 { 0x03A253D2, 0x6a4a },
724 { 0x03A4BE72, 0xd9d6 },
725 { 0x03A65896, 0x5adc },
726 { 0x03A8BBAD, 0x40df },
727 { 0x03AA21D8, 0x0b66 },
728 { 0x03AC77E9, 0x37d8 },
729 { 0x03AEF0FB, 0x3bf0 },
730 { 0x03B0DB09, 0xa9bc },
731 { 0x03B211E7, 0xae53 },
732 { 0x03B4DF01, 0xdebb },
733 { 0x03B667F3, 0x9ec5 },
734 { 0x03B827ED, 0x47b2 },
735 { 0x03BA1787, 0xcf7f },
736 { 0x03BCE3A9, 0x30b5 },
737 { 0x03BE34A1, 0xffe9 },
738 { 0x03C02323, 0xbdbd },
739 { 0x03C2370F, 0xf21c },
740 { 0x03C4EBDC, 0xcaba },
741 { 0x03C62A95, 0xc28a },
742 { 0x03C8301E, 0x53b3 },
743 { 0x03CA4EB5, 0x9330 },
744 { 0x03CCE18C, 0x24b4 },
745 { 0x03CE1646, 0xa3a6 },
746 { 0x03D07157, 0xbad0 },
747 { 0x03D2B0B7, 0x3605 },
748 { 0x03D42FFF, 0xcdd7 },
749 { 0x03D6269B, 0x0693 },
750 { 0x03D88BB0, 0x54de },
751 { 0x03DAE167, 0x5729 },
752 { 0x03DCA760, 0x23d9 },
753 { 0x03DECF00, 0x67bf },
754 { 0x03E02963, 0xb366 },
755 { 0x03E28258, 0x7a2e },
756 { 0x03E4FCA3, 0xc461 },
757 { 0x03E6263F, 0x4ab8 },
758 { 0x03E8EB02, 0x5d68 },
759 { 0x03EA0B78, 0x1b02 },
760 { 0x03EC5550, 0x2a6f },
761 { 0x03EEBE0C, 0x2b94 },
762 { 0x03F0806F, 0xb40b },
763 { 0x03F2A949, 0xbe37 },
764 { 0x03F41B2F, 0xc30c },
765 { 0x03F67713, 0x8ea1 },
766 { 0x03F89F8E, 0x5a05 },
767 { 0x03FA5016, 0xdf1b },
768 { 0x03FCDDE6, 0x2d02 },
769 { 0x03FE5B4D, 0xef8d },
770
771 { 0x02003AC0, 0x00d0 },
772 { 0x0202D4BC, 0x7fb1 },
773 { 0x02042B3E, 0x7f6f },
774 { 0x0206D2C0, 0x7f2c },
775 { 0x0208EB82, 0x7ee9 },
776 { 0x020A0B9A, 0x76c9 },
777 { 0x020C4137, 0x6e88 },
778 { 0x020EFA40, 0x6647 },
779 { 0x02101507, 0x5e07 },
780 { 0x0212020F, 0x55e6 },
781 { 0x0214C3DE, 0x4da5 },
782 { 0x02163152, 0x4164 },
783 { 0x02187A11, 0x3944 },
784 { 0x021A314B, 0x3103 },
785 { 0x021C0C30, 0x28c2 },
786 { 0x021E757D, 0x20a2 },
787
788 { 0x01C0F05D, 0x0000 },
789 { 0x01C24084, 0x562c },
790 { 0x01C4B60C, 0xb5d2 },
791 { 0x01C6C25D, 0xc98e },
792 { 0x01C874E5, 0xcd87 },
793 { 0x01CAB35C, 0x31a7 },
794 { 0x01CCABF7, 0xc8e7 },
795 { 0x01CE60F5, 0xad4e },
796 { 0x01D06E82, 0x34e8 },
797 { 0x01D20210, 0x190c },
798 { 0x01D44FFD, 0x4461 },
799 { 0x01D6FCCC, 0x9cc3 },
800 { 0x01D8CD46, 0xa842 },
801 { 0x01DAA446, 0x886b },
802 { 0x01DC764D, 0x0000 },
803 { 0x01DE667F, 0x5235 },
804 { 0x0180CF8D, 0x0000 },
805 { 0x01820D53, 0x7fff },
806 { 0x0184E62A, 0x7ffa },
807 { 0x018693FD, 0x7ff5 },
808 { 0x0188D142, 0x7ff0 },
809 { 0x018AF821, 0x7feb },
810 { 0x018CDE00, 0x7fc9 },
811 { 0x018ED3E3, 0x7f87 },
812 { 0x01904654, 0x7f65 },
813 { 0x01921444, 0x7f22 },
814 { 0x0194851C, 0x7ee0 },
815 { 0x019615A2, 0x7a60 },
816 { 0x019815A4, 0x69c0 },
817 { 0x019AF59F, 0x64e0 },
818 { 0x019C7C68, 0x4c00 },
819 { 0x019E3D7A, 0x3c00 },
820 { 0x01A0D5A9, 0x03e0 },
821 { 0x01A22C96, 0x0080 },
822 { 0x01A4F15D, 0x1c0b },
823 { 0x01A6A9DD, 0x45ae },
824 { 0x01A85152, 0x6f7f },
825 { 0x01AA1429, 0x673d },
826 { 0x01AC153D, 0x5ada },
827 { 0x01AED816, 0x5298 },
828 { 0x01B037B8, 0x4635 },
829 { 0x01B2626F, 0x3df3 },
830 { 0x01B4EFE1, 0x3190 },
831 { 0x01B66047, 0x294e },
832 { 0x01B8A17F, 0x1ceb },
833 { 0x01BAE8F8, 0x14a9 },
834 { 0x01BC381B, 0x0846 },
835 { 0x01BEB317, 0x0003 },
836
837 { 0x07A0D7BD, 0x0000 },
838 { 0x07A2FDF7, 0x7c00 },
839 { 0x07A414B0, 0x0360 },
840 { 0x07A6A375, 0x001f },
841 { 0x07A85770, 0x7fe0 },
842 { 0x07AA2F6E, 0x7fff },
843 { 0x07AC384C, 0x541d },
844 { 0x07AEDFF1, 0x037f },
845 { 0x07B0F8D9, 0x0000 },
846 { 0x07B2EAAF, 0x7fe7 },
847 { 0x07B4750F, 0x7f48 },
848 { 0x07B6346C, 0x7ea9 },
849 { 0x07B8DAC0, 0x7dea },
850 { 0x07BC6350, 0x03e0 },
851
852 { 0x014064E7, 0x0000 },
853 { 0x014251E1, 0x7ffa },
854 { 0x01443AA9, 0x7f8d },
855 { 0x0146488B, 0x7fff },
856 { 0x014829A2, 0x7ff0 },
857 { 0x014AA74B, 0x7fd9 },
858 { 0x014C2EFA, 0x7ffc },
859 { 0x014E1287, 0x7f4f },
860 { 0x0150E842, 0x7f68 },
861 { 0x0152158D, 0x7ee3 },
862 { 0x0154B670, 0x7e41 },
863 { 0x0156D95E, 0x7e48 },
864 { 0x01584FF1, 0x7da0 },
865 { 0x015A6F2A, 0x7f99 },
866 { 0x015CA37A, 0x76cc },
867 { 0x015ECB80, 0x6f17 },
868 { 0x01602196, 0x6ad3 },
869 { 0x0162D660, 0x5e92 },
870 { 0x0164A29B, 0x624e },
871 { 0x0166DD13, 0x6208 },
872 { 0x01684D54, 0x71a1 },
873 { 0x016A2FF4, 0x6108 },
874 { 0x016CFDFD, 0x64e0 },
875 { 0x016E05A0, 0x4586 },
876 { 0x0170B432, 0x4e2e },
877 { 0x0172E5C7, 0x41ac },
878 { 0x0174CDBB, 0x3107 },
879 { 0x01769E44, 0x3880 },
880 { 0x0178FAD3, 0x3567 },
881 { 0x017A602C, 0x20c3 },
882 { 0x017C096A, 0x0800 },
883 { 0x017E1488, 0x7fff },
884
885 { 0x0BE0F70E, 0x4cb3 },
886 { 0x0BE2E350, 0x7fff },
887 { 0x0BE4F722, 0x7ffe },
888 { 0x0BE68643, 0x7ffb },
889 { 0x0BE8CB3E, 0x7ff9 },
890 { 0x0BEAABDC, 0x7ff6 },
891 { 0x0BEC000F, 0x7ff4 },
892 { 0x0BEEC3C1, 0x7bd1 },
893 { 0x0BF0C04A, 0x7bcf },
894 { 0x0BF2EB06, 0x77ae },
895 { 0x0BF45561, 0x77ad },
896 { 0x0BF66384, 0x738d },
897 { 0x0BF80566, 0x6f6c },
898 { 0x0BFA6EB1, 0x6f6b },
899 { 0x0BFCF260, 0x6b4a },
900 { 0x0BFE60B7, 0x6b4a },
901 { 0x0C000F4B, 0x6729 },
902 { 0x0C02E81E, 0x6308 },
903 { 0x0C04CF07, 0x6307 },
904 { 0x0C060E25, 0x5ee6 },
905 { 0x0C0839B6, 0x5ac6 },
906 { 0x0C0ABF8D, 0x5ac5 },
907 { 0x0C0C35A0, 0x56a4 },
908 { 0x0C0ECA49, 0x56a0 },
909 { 0x0C10B601, 0x56a0 },
910 { 0x0C12175F, 0x56a0 },
911 { 0x0C14C4BE, 0x5280 },
912 { 0x0C161897, 0x5280 },
913 { 0x0C18651C, 0x4e60 },
914 { 0x0C1AD23F, 0x4e60 },
915 { 0x0C1CB033, 0x4a40 },
916 { 0x0C1EDA23, 0x4a40 },
917 { 0x0C20A71B, 0x4a40 },
918 { 0x0C22DAF3, 0x4620 },
919 { 0x0C24EE1E, 0x4620 },
920 { 0x0C26D154, 0x4201 },
921 { 0x0C280468, 0x4201 },
922 { 0x0C2A34A7, 0x3de1 },
923 { 0x0C2CA338, 0x3de1 },
924 { 0x0C2E71F4, 0x3de1 },
925 { 0x0C30E165, 0x39c1 },
926 { 0x0C32BB85, 0x39c1 },
927 { 0x0C340203, 0x35a1 },
928 { 0x0C363F4A, 0x35a1 },
929 { 0x0C382D53, 0x3181 },
930 { 0x0C3AAA4B, 0x3181 },
931 { 0x0C3C4602, 0x2d61 },
932 { 0x0C3E888C, 0x2d61 },
933 { 0x0C4082BF, 0x2d61 },
934 { 0x0C42D415, 0x2d61 },
935 { 0x0C445792, 0x2941 },
936 { 0x0C46D209, 0x2941 },
937 { 0x0C485FF6, 0x2941 },
938 { 0x0C4AF2EC, 0x2521 },
939 { 0x0C4CDEFD, 0x2521 },
940 { 0x0C4E5AB9, 0x2521 },
941 { 0x0C50B991, 0x2521 },
942 { 0x0C52B6EF, 0x2101 },
943 { 0x0C5435E9, 0x2101 },
944 { 0x0C56A383, 0x1ce1 },
945 { 0x0C58C376, 0x18c1 },
946 { 0x0C5AF004, 0x1080 },
947 { 0x0C5CD659, 0x0c60 },
948 { 0x0C5E7C17, 0x0000 },
949
950 /* in-game demo*/
951
952 { 0x0740E366, 0x0000 },
953 { 0x07426EEA, 0x03e0 },
954 { 0x07485D97, 0x0000 },
955 { 0x074A20B4, 0x3863 },
956 { 0x074CFCFA, 0x5c21 },
957 { 0x074E37F7, 0x7c00 },
958 { 0x07509EC6, 0x7e2b },
959 { 0x0752736A, 0x14a6 },
960 { 0x07540D3B, 0x318c },
961 { 0x07567A70, 0x4a53 },
962 { 0x075861B3, 0x6739 },
963 { 0x075A48D6, 0x7fff },
964 { 0x075C4AD8, 0x03e0 },
965 { 0x075E7452, 0x294a },
966
967 { 0x07BA4193, 0x0045 },
968 { 0x07BECBD7, 0x0000 },
969
970 { 0x03005940, 0x00d0 },
971 { 0x0302E2B3, 0x7f75 },
972 { 0x03047625, 0x7b33 },
973 { 0x030665F4, 0x72b3 },
974 { 0x0308310F, 0x6eaf },
975 { 0x030A0FBE, 0x666d },
976 { 0x030CE5BD, 0x5e2b },
977 { 0x030E624D, 0x5a0a },
978 { 0x03104644, 0x55a9 },
979 { 0x03124604, 0x49a8 },
980 { 0x031420BD, 0x4d67 },
981 { 0x0316579A, 0x3d46 },
982 { 0x03187A4E, 0x3105 },
983 { 0x031AF2C9, 0x24c5 },
984 { 0x031CA091, 0x20a5 },
985 { 0x031E5980, 0x1881 },
986
987 { 0x0400C0C3, 0x00d0 },
988 { 0x040261D4, 0x7ef5 },
989 { 0x0404D01A, 0x7ad3 },
990 { 0x04065D42, 0x72b1 },
991 { 0x0408E974, 0x6e8f },
992 { 0x040AE9DF, 0x662e },
993 { 0x040CA223, 0x61ec },
994 { 0x040E0187, 0x5dcb },
995 { 0x04102BA8, 0x55a9 },
996 { 0x0412A48D, 0x4d88 },
997 { 0x04142A16, 0x4568 },
998 { 0x041629A5, 0x3d27 },
999 { 0x0418D2E6, 0x3105 },
1000 { 0x041A091D, 0x24c6 },
1001 { 0x041C0EAF, 0x1ca6 },
1002 { 0x041E314B, 0x1881 },
1003
1004 { 0x04201D60, 0x0045 },
1005 { 0x04229C56, 0x7f75 },
1006 { 0x042477E4, 0x7b33 },
1007 { 0x04263191, 0x72b3 },
1008 { 0x0428AF11, 0x6eae },
1009 { 0x042ACCBF, 0x666d },
1010 { 0x042C0E5B, 0x5e2b },
1011 { 0x042E0363, 0x5e0e },
1012 { 0x0430D171, 0x59ed },
1013 { 0x04322692, 0x51ac },
1014 { 0x0434A314, 0x4d67 },
1015 { 0x04366B22, 0x3d46 },
1016 { 0x04383EFE, 0x3105 },
1017 { 0x043A0272, 0x20a7 },
1018 { 0x043C0D9F, 0x1487 },
1019 { 0x043E2D92, 0x1881 },
1020
1021 { 0x0702BB8D, 0x2c28 },
1022 { 0x0704470B, 0x3048 },
1023 { 0x07067B2D, 0x3048 },
1024 { 0x070840B7, 0x3048 },
1025 { 0x070A58B4, 0x3469 },
1026 { 0x070C99D1, 0x3469 },
1027 { 0x070EDEF2, 0x386a },
1028 { 0x071044AF, 0x3c8a },
1029 { 0x0712EB75, 0x3c8a },
1030 { 0x0714DB75, 0x3449 },
1031 { 0x0716C8A4, 0x2c27 },
1032 { 0x0718346B, 0x2406 },
1033 { 0x071AFE61, 0x2406 },
1034 { 0x071C771A, 0x2807 },
1035 { 0x071E50A7, 0x2827 },
1036
1037
1038 /* troid screen*/
1039
1040 { 0x07C0B2D7, 0x0019 },
1041 { 0x07C222F6, 0x7fff },
1042 { 0x07C43550, 0x7b5f },
1043 { 0x07C6221A, 0x7fff },
1044 { 0x07C8CEF1, 0x6ede },
1045 { 0x07CA4B46, 0x7fdd },
1046 { 0x07CC3A84, 0x7f7d },
1047 { 0x07CEFD3D, 0x5e9a },
1048 { 0x07D09D44, 0x7ffa },
1049 { 0x07D20DDC, 0x7b5a },
1050 { 0x07D46F47, 0x7f79 },
1051 { 0x07D6E3E5, 0x72f9 },
1052 { 0x07D8666A, 0x7f18 },
1053 { 0x07DAF254, 0x4e17 },
1054 { 0x07DC2DD1, 0x5e75 },
1055 { 0x07DE0A51, 0x7ff5 },
1056 { 0x07E0ADE9, 0x62d5 },
1057 { 0x07E2206B, 0x7f55 },
1058 { 0x07E4C323, 0x7b35 },
1059 { 0x07E681E9, 0x7ef4 },
1060 { 0x07E8AFE1, 0x5614 },
1061 { 0x07EADE06, 0x76d4 },
1062 { 0x07EC7D8D, 0x49f4 },
1063 { 0x07EE3EA8, 0x7274 },
1064 { 0x07F06F90, 0x7f71 },
1065 { 0x07F234C6, 0x41b0 },
1066 { 0x07F4320A, 0x5a10 },
1067 { 0x07F6F668, 0x7ed0 },
1068 { 0x07F869F3, 0x7ab0 },
1069 { 0x07FA1140, 0x7f50 },
1070 { 0x07FCC28A, 0x6a6f },
1071 { 0x07FE3235, 0x5e6f },
1072 { 0x08003FD7, 0x720f },
1073 { 0x0802DE06, 0x418d },
1074 { 0x0804C73E, 0x5a0c },
1075 { 0x0806F643, 0x6e0c },
1076 { 0x0808188C, 0x55ac },
1077 { 0x080A636C, 0x7ecb },
1078 { 0x080C4160, 0x310b },
1079 { 0x080E39BD, 0x7a6b },
1080 { 0x0810AD3A, 0x6a6b },
1081 { 0x0812C4F2, 0x20ab },
1082 { 0x0814DE48, 0x3d2b },
1083 { 0x08163D93, 0x632a },
1084 { 0x08181879, 0x458a },
1085 { 0x081A8813, 0x5689 },
1086 { 0x081C9B42, 0x59e9 },
1087 { 0x081E708E, 0x5589 },
1088 { 0x08202692, 0x6dc8 },
1089 { 0x082280AF, 0x1ca8 },
1090 { 0x0824397F, 0x5127 },
1091 { 0x08267601, 0x3d27 },
1092 { 0x0828F05D, 0x4167 },
1093 { 0x082A0A0B, 0x3e47 },
1094 { 0x082C881E, 0x2ce7 },
1095 { 0x082E1ACC, 0x25a5 },
1096 { 0x08304151, 0x5105 },
1097 { 0x0832C78D, 0x28a5 },
1098 { 0x08346959, 0x1c85 },
1099 { 0x08362656, 0x6504 },
1100 { 0x083856FE, 0x14e4 },
1101 { 0x083A4A7E, 0x3ca4 },
1102 { 0x083CCC66, 0x1843 },
1103 { 0x083E9C6C, 0x0001 },
1104
1105 /* atari screen*/
1106
1107 { 0x0BC0C176, 0x0000 },
1108 { 0x0BC2894F, 0x7774 },
1109 { 0x0BC45928, 0x66d2 },
1110 { 0x0BC6C3C0, 0x5e8d },
1111 { 0x0BC8C31C, 0x7bdd },
1112 { 0x0BCA6F93, 0x62b9 },
1113 { 0x0BCC2CA7, 0x5a92 },
1114 { 0x0BCE9F86, 0x522c },
1115 { 0x0BD0644B, 0x3dab },
1116 { 0x0BD2A1BC, 0x41f2 },
1117 { 0x0BD47C0F, 0x41f8 },
1118 { 0x0BD6C568, 0x20e6 },
1119 { 0x0BD8368A, 0x2951 },
1120 { 0x0BDAF5DE, 0x2da4 },
1121 { 0x0BDC37CE, 0x1cc9 },
1122 { 0x0BDE6895, 0x14a5 },
1123
1124 { 0xffffffff, 0xffff }
1125 };
1126
1127 data32_t result = protection_base[offset];
1128
1129 if (offset == 0x300)
1130 result |= 0x80000000;
1131 if (offset == 0x3f0)
1132 {
1133 UINT32 tag = (last_write_offset << 17) | last_write;
1134 int i = 0;
1135
1136 while (lookup_table[i][0] != 0xffffffff)
1137 {
1138 if (tag == lookup_table[i][0])
1139 {
1140 result = lookup_table[i][1] << 16;
1141 break;
1142 }
1143 i++;
1144 }
1145
1146 if (lookup_table[i][0] == 0xffffffff)
1147 {
1148 if (last_write_offset*2 >= 0x700 && last_write_offset*2 < 0x720)
1149 result = rand() << 16;
1150 else
1151 result = 0xffff << 16;
1152 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Unhandled protection R@%04X = %04X\n", activecpu_get_previouspc(), offset, result);
1153 }
1154 }
1155
1156 if (ACCESSING_MSW32)
1157 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Protection R@%04X = %04X\n", activecpu_get_previouspc(), offset * 4, result >> 16);
1158 else
1159 log_cb(RETRO_LOG_DEBUG, LOGPRE "%06X:Protection R@%04X = %04X\n", activecpu_get_previouspc(), offset * 4 + 2, result);
1160 return result;
1161 }
1162
1163
1164 /*************************************
1165 *
1166 * 32-bit stub handlers
1167 *
1168 *************************************/
1169
READ32_HANDLER(inputs_01_r)1170 static READ32_HANDLER( inputs_01_r )
1171 {
1172 return (readinputport(0) << 16) | readinputport(1);
1173 }
1174
1175
1176
1177 /*************************************
1178 *
1179 * Main CPU memory handlers
1180 *
1181 *************************************/
1182
MEMORY_READ32_START(main_readmem)1183 static MEMORY_READ32_START( main_readmem )
1184 { 0x000000, 0x07ffff, MRA32_ROM },
1185 { 0xc80000, 0xc80fff, MRA32_RAM },
1186 { 0xca0000, 0xca0fff, atarigx2_protection_r },
1187 { 0xd00000, 0xd1ffff, a2d_data_r },
1188 { 0xd20000, 0xd20fff, atarigen_eeprom_upper32_r },
1189 { 0xd40000, 0xd40fff, MRA32_RAM },
1190 { 0xd70000, 0xd7ffff, MRA32_RAM },
1191 { 0xe80000, 0xe80003, inputs_01_r },
1192 { 0xe82000, 0xe82003, special_port2_r },
1193 { 0xe82004, 0xe82007, special_port3_r },
1194 { 0xe86000, 0xe86003, atarigen_sound_upper32_r },
1195 { 0xff8000, 0xffffff, MRA32_RAM },
1196 MEMORY_END
1197
1198
1199 static MEMORY_WRITE32_START( main_writemem )
1200 { 0x000000, 0x07ffff, MWA32_ROM },
1201 { 0xc80000, 0xc80fff, MWA32_RAM },
1202 { 0xca0000, 0xca0fff, atarigx2_protection_w, &protection_base },
1203 { 0xd20000, 0xd20fff, atarigen_eeprom32_w, (data32_t **)&atarigen_eeprom, &atarigen_eeprom_size },
1204 { 0xd40000, 0xd40fff, atarigen_666_paletteram32_w, &paletteram32 },
1205 { 0xd70000, 0xd71fff, MWA32_RAM },
1206 { 0xd72000, 0xd75fff, atarigen_playfield32_w, &atarigen_playfield32 },
1207 { 0xd76000, 0xd76fff, atarigen_alpha32_w, &atarigen_alpha32 },
1208 { 0xd77000, 0xd77fff, MWA32_RAM },
1209 { 0xd78000, 0xd78fff, atarirle_0_spriteram32_w, &atarirle_0_spriteram32 },
1210 { 0xd79000, 0xd7a1ff, MWA32_RAM },
1211 { 0xd7a200, 0xd7a203, mo_command_w, &mo_command },
1212 { 0xd7a204, 0xd7ffff, MWA32_RAM },
1213 { 0xd80000, 0xd9ffff, atarigen_eeprom_enable32_w },
1214 { 0xe06000, 0xe06003, atarigen_sound_upper32_w },
1215 { 0xe08000, 0xe08003, latch_w },
1216 { 0xe0c000, 0xe0c003, atarigen_video_int_ack32_w },
1217 { 0xe0e000, 0xe0e003, MWA32_NOP },/*watchdog_reset_w },*/
1218 { 0xff8000, 0xffffff, MWA32_RAM },
1219 MEMORY_END
1220
1221
1222
1223
1224 /*************************************
1225 *
1226 * Port definitions
1227 *
1228 *************************************/
1229
1230 INPUT_PORTS_START( spclords )
1231 PORT_START /* 68.SW (A1=0) */
1232 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
1233 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) /* BLUE button */
1234 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* Left thumb */
1235 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) /* Left trigger */
1236 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* Throttle forward */
1237 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
1238 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
1239 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* Throttle button */
1240 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
1241
1242 PORT_START /* 68.SW (A1=1) */
1243 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
1244 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START2 ) /* RED button */
1245 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* Right thumb */
1246 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 ) /* Right trigger */
1247 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* Throttle reverse */
1248 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
1249 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
1250 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
1251 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
1252
1253 PORT_START /* 68.STATUS (A2=0) */
1254 PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1255 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* A2D.EOC */
1256 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDIRQ */
1257 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDFULL */
1258 PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
1259 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_VBLANK )
1260 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1261
1262 PORT_START /* 68.STATUS (A2=1) */
1263 PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1264 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XIRQ */
1265 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XFULL */
1266 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SERVICER */
1267 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SER.L */
1268 PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1269 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1270
1271 JSA_III_PORT /* audio board port */
1272
1273 PORT_START /* A2D @ 0xD00000 */
1274 PORT_ANALOG ( 0x00ff, 0x0080, IPT_AD_STICK_X | IPF_PLAYER1, 100, 10, 0x10, 0xf0 )
1275 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1276
1277 PORT_START /* A2D @ 0xD00002 */
1278 PORT_ANALOG ( 0x00ff, 0x0080, IPT_AD_STICK_Y | IPF_PLAYER1, 100, 10, 0x10, 0xf0 )
1279 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1280
1281 PORT_START /* A2D @ 0xD00004 */
1282 PORT_ANALOG ( 0x00ff, 0x0080, IPT_AD_STICK_X | IPF_PLAYER2, 100, 10, 0x10, 0xf0 )
1283 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1284
1285 PORT_START /* A2D @ 0xD00006 */
1286 PORT_ANALOG ( 0x00ff, 0x0080, IPT_AD_STICK_Y | IPF_PLAYER2, 100, 10, 0x10, 0xf0 )
1287 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1288 INPUT_PORTS_END
1289
1290
1291 INPUT_PORTS_START( motofren )
1292 PORT_START /* 68.SW (A1=0) */
1293 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
1294 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) /* Start/fire */
1295 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* AUX3 */
1296 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) /* AUX2 */
1297 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* AUX1 */
1298 PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
1299
1300 PORT_START /* 68.SW (A1=1) */
1301 PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
1302
1303 PORT_START /* 68.STATUS (A2=0) */
1304 PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_UNUSED ) /* +5V */
1305 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* A2D.EOC */
1306 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDIRQ */
1307 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDFULL */
1308 PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
1309 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_VBLANK )
1310 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1311
1312 PORT_START /* 68.STATUS (A2=1) */
1313 PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1314 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XIRQ */
1315 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XFULL */
1316 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SERVICER */
1317 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SER.L */
1318 PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1319 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1320
1321 JSA_III_PORT /* audio board port */
1322
1323 PORT_START /* A2D @ 0xD00000 */
1324 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL, 100, 16, 0x00, 0xff )
1325
1326 PORT_START /* A2D @ 0xD00002 */
1327 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1328
1329 PORT_START /* A2D @ 0xD00004 */
1330 PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X, 50, 10, 0, 255 )
1331
1332 PORT_START /* A2D @ 0xD00006 */
1333 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1334 INPUT_PORTS_END
1335
1336
1337 INPUT_PORTS_START( rrreveng )
1338 PORT_START /* 68.SW (A1=0) */
1339 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
1340 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
1341 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
1342 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
1343 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
1344 PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNUSED )
1345 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
1346 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1347
1348 PORT_START /* 68.SW (A1=1) */
1349 PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
1350 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START2 )
1351 PORT_BIT( 0xfe00, IP_ACTIVE_LOW, IPT_UNUSED )
1352
1353 PORT_START /* 68.STATUS (A2=0) */
1354 PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1355 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* A2D.EOC */
1356 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDIRQ */
1357 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /AUDFULL */
1358 PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
1359 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_VBLANK )
1360 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1361
1362 PORT_START /* 68.STATUS (A2=1) */
1363 PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1364 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XIRQ */
1365 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /XFULL */
1366 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SERVICER */
1367 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* /SER.L */
1368 PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_SPECIAL ) /* +5V */
1369 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1370
1371 JSA_III_PORT /* audio board port */
1372
1373 PORT_START /* A2D @ 0xD00000 */
1374 PORT_ANALOG ( 0x00ff, 0x0010, IPT_PEDAL, 100, 10, 0x10, 0xf0 )
1375 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1376
1377 PORT_START /* A2D @ 0xD00002 */
1378 PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
1379
1380 PORT_START /* A2D @ 0xD00004 */
1381 PORT_ANALOG ( 0x00ff, 0x0080, IPT_PADDLE, 100, 10, 0x10, 0xf0 )
1382 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
1383
1384 PORT_START /* A2D @ 0xD00006 */
1385 PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
1386 INPUT_PORTS_END
1387
1388
1389
1390 /*************************************
1391 *
1392 * Graphics definitions
1393 *
1394 *************************************/
1395
1396 static struct GfxLayout pflayout =
1397 {
1398 8,8,
1399 RGN_FRAC(1,3),
1400 5,
1401 { 0, 0, 1, 2, 3 },
1402 { RGN_FRAC(1,3)+0, RGN_FRAC(1,3)+4, 0, 4, RGN_FRAC(1,3)+8, RGN_FRAC(1,3)+12, 8, 12 },
1403 { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
1404 16*8
1405 };
1406
1407 static struct GfxLayout pftoplayout =
1408 {
1409 8,8,
1410 RGN_FRAC(1,3),
1411 6,
1412 { RGN_FRAC(2,3)+0, RGN_FRAC(2,3)+4, 0, 0, 0, 0 },
1413 { 3, 2, 1, 0, 11, 10, 9, 8 },
1414 { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
1415 16*8
1416 };
1417
1418 static struct GfxLayout anlayout =
1419 {
1420 8,8,
1421 RGN_FRAC(1,1),
1422 4,
1423 { 0, 1, 2, 3 },
1424 { 0, 4, 8, 12, 16, 20, 24, 28 },
1425 { 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8 },
1426 32*8
1427 };
1428
1429 static struct GfxDecodeInfo gfxdecodeinfo[] =
1430 {
1431 { REGION_GFX1, 0, &pflayout, 0x000, 64 },
1432 { REGION_GFX2, 0, &anlayout, 0x000, 16 },
1433 { REGION_GFX1, 0, &pftoplayout, 0x000, 64 },
1434 { -1 } /* end of array */
1435 };
1436
1437
1438
1439 /*************************************
1440 *
1441 * Machine driver
1442 *
1443 *************************************/
1444
1445 static MACHINE_DRIVER_START( atarigx2 )
1446
1447 /* basic machine hardware */
MDRV_CPU_ADD(M68EC020,ATARI_CLOCK_14MHz)1448 MDRV_CPU_ADD(M68EC020, ATARI_CLOCK_14MHz)
1449 MDRV_CPU_MEMORY(main_readmem,main_writemem)
1450 MDRV_CPU_VBLANK_INT(atarigen_video_int_gen,1)
1451
1452 MDRV_FRAMES_PER_SECOND(60)
1453 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
1454
1455 MDRV_MACHINE_INIT(atarigx2)
1456 MDRV_NVRAM_HANDLER(atarigen)
1457
1458 /* video hardware */
1459 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_UPDATE_BEFORE_VBLANK)
1460 MDRV_SCREEN_SIZE(42*8, 30*8)
1461 MDRV_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
1462 MDRV_GFXDECODE(gfxdecodeinfo)
1463 MDRV_PALETTE_LENGTH(2048)
1464
1465 MDRV_VIDEO_START(atarigx2)
1466 MDRV_VIDEO_EOF(atarirle)
1467 MDRV_VIDEO_UPDATE(atarigx2)
1468
1469 /* sound hardware */
1470 MDRV_IMPORT_FROM(jsa_iiis_stereo)
1471 MACHINE_DRIVER_END
1472
1473
1474
1475 /*************************************
1476 *
1477 * ROM definition(s)
1478 *
1479 *************************************/
1480
1481 ROM_START( spclords )
1482 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 8*64k for 68000 code */
1483 ROM_LOAD32_BYTE( "136095.21b", 0x00000, 0x20000, CRC(2ba99ce2) SHA1(5d8d138698c29838a85da1721c3400c666a14e18) )
1484 ROM_LOAD32_BYTE( "136095.22b", 0x00001, 0x20000, CRC(631c5009) SHA1(6b2ea907087e411579f55dff60724ba33afa8a06) )
1485 ROM_LOAD32_BYTE( "136095.23b", 0x00002, 0x20000, CRC(bc64ab63) SHA1(999851a39123f6a01cb83d97ea744e12590b6e7e) )
1486 ROM_LOAD32_BYTE( "136095.24b", 0x00003, 0x20000, CRC(7284a01a) SHA1(afa866c97b4c3df7fda3c196072231096beaa0db) )
1487
1488 ROM_REGION( 0x14000, REGION_CPU2, 0 ) /* 64k for 6502 code */
1489 ROM_LOAD( "136095.80a", 0x10000, 0x4000, CRC(33bc0ede) SHA1(2ee30d9125057cdfbdb83e4dbf28306c35a9c233) )
1490 ROM_CONTINUE( 0x04000, 0xc000 )
1491
1492 ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE )
1493 ROM_LOAD( "136095.30a", 0x00000, 0x20000, CRC(27e0cfec) SHA1(03df57757d091f9a0b8c8d98d091dd759f570788) ) /* playfield, planes 0-1 */
1494 ROM_LOAD( "136095.31a", 0x20000, 0x20000, CRC(5529cdc7) SHA1(8aff8a42fb2a86b7e4666940da4c1ee19dab6281) ) /* playfield, planes 2-3 */
1495 ROM_FILL( 0x40000, 0x20000, 0 ) /* playfield, planes 4-5 */
1496
1497 ROM_REGION( 0x020000, REGION_GFX2, ROMREGION_DISPOSE )
1498 ROM_LOAD( "136095.25a", 0x000000, 0x20000, CRC(1669496e) SHA1(005deaafd6156505e3a27966123e58928837ad9f) ) /* alphanumerics */
1499
1500 ROM_REGION16_BE( 0x600000, REGION_GFX3, 0 )
1501 ROM_LOAD16_BYTE( "136095.41b", 0x000000, 0x80000, CRC(02ce7e07) SHA1(a48a6930c8ca4e2d0e4bc77a558730fa790be3b5) )
1502 ROM_LOAD16_BYTE( "136095.40b", 0x000001, 0x80000, CRC(abb80720) SHA1(0e02688454f59b90d38d548808f794294f5c9e7e) )
1503 ROM_LOAD16_BYTE( "136095.43b", 0x100000, 0x80000, CRC(26526345) SHA1(30ef83f63aca3a846dfc2828e3147208e3e350ca) )
1504 ROM_LOAD16_BYTE( "136095.42b", 0x100001, 0x80000, CRC(c7a163df) SHA1(deb2c1fe57b6673d98ea9880a16e26751cc6e3a5) )
1505 ROM_LOAD16_BYTE( "136095.45b", 0x200000, 0x80000, CRC(53d01714) SHA1(6ef584eb6c723d4843dad9e00da132e65be5ce25) )
1506 ROM_LOAD16_BYTE( "136095.44b", 0x200001, 0x80000, CRC(60a16e4d) SHA1(13629b7039e77a654e22d7efb3bc01413b7ec187) )
1507 ROM_LOAD16_BYTE( "136095.47b", 0x300000, 0x80000, CRC(41c873a3) SHA1(87c4e35a198ba5f73a545ccd176e9c5d454d194a) )
1508 ROM_LOAD16_BYTE( "136095.46b", 0x300001, 0x80000, CRC(e885aece) SHA1(f02d2028b74ad26447e4d4c9d4d2d8136e0be8f5) )
1509 ROM_LOAD16_BYTE( "136095.49b", 0x400000, 0x80000, CRC(7af90faf) SHA1(14629961f70ed969525d9aba49b9637115d26f44) )
1510 ROM_LOAD16_BYTE( "136095.48b", 0x400001, 0x80000, CRC(6c553406) SHA1(b5a596dc69620d935eab9d9afc45377ad98ba77e) )
1511 ROM_LOAD16_BYTE( "136095.51b", 0x500000, 0x80000, CRC(97541074) SHA1(f9f75bfc4af9587f4a9630ad93d9cd0efd89e4f4) )
1512 ROM_LOAD16_BYTE( "136095.50b", 0x500001, 0x80000, CRC(a1c11ae8) SHA1(53fb2f376aae0aa346f9f911d6d8a73753c67d6e) )
1513
1514 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* 1MB for ADPCM samples */
1515 ROM_LOAD( "136095.81a", 0x80000, 0x80000, CRC(212560dd) SHA1(9d90bca5b478050d640b2393c9d3d59a4bd493dd) )
1516 ROM_END
1517
1518
1519 ROM_START( spclorda )
1520 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 8*64k for 68000 code */
1521 ROM_LOAD32_BYTE( "136095.21a", 0x00000, 0x20000, CRC(fe8edb0b) SHA1(ae50a637df476c62f8194577cdca2677f9b5cbd0) )
1522 ROM_LOAD32_BYTE( "136095.22a", 0x00001, 0x20000, CRC(c2d2867b) SHA1(481fe54d6cd8698bfd2776e2af6f51332304b7ba) )
1523 ROM_LOAD32_BYTE( "136095.23a", 0x00002, 0x20000, CRC(20a0e443) SHA1(54597342901d6b38dddbe754f41ceeddcc4e5289) )
1524 ROM_LOAD32_BYTE( "136095.24a", 0x00003, 0x20000, CRC(d3f0439c) SHA1(f9245f448b77187b4cd5d9436b5caebd2800be5d))
1525
1526 ROM_REGION( 0x14000, REGION_CPU2, 0 ) /* 64k for 6502 code */
1527 ROM_LOAD( "136095.80a", 0x10000, 0x4000, CRC(33bc0ede) SHA1(2ee30d9125057cdfbdb83e4dbf28306c35a9c233) )
1528 ROM_CONTINUE( 0x04000, 0xc000 )
1529
1530 ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE )
1531 ROM_LOAD( "136095.30a", 0x00000, 0x20000, CRC(27e0cfec) SHA1(03df57757d091f9a0b8c8d98d091dd759f570788) ) /* playfield, planes 0-1 */
1532 ROM_LOAD( "136095.31a", 0x20000, 0x20000, CRC(5529cdc7) SHA1(8aff8a42fb2a86b7e4666940da4c1ee19dab6281) ) /* playfield, planes 2-3 */
1533 ROM_FILL( 0x40000, 0x20000, 0 ) /* playfield, planes 4-5 */
1534
1535 ROM_REGION( 0x020000, REGION_GFX2, ROMREGION_DISPOSE )
1536 ROM_LOAD( "136095.25a", 0x000000, 0x20000, CRC(1669496e) SHA1(005deaafd6156505e3a27966123e58928837ad9f) ) /* alphanumerics */
1537
1538 ROM_REGION16_BE( 0x600000, REGION_GFX3, 0 )
1539 ROM_LOAD16_BYTE( "136095.41a", 0x000000, 0x80000, CRC(5f9743ee) SHA1(fa521572f8dd2eda566f90d1345adba3d0b8c48f) )
1540 ROM_LOAD16_BYTE( "136095.40a", 0x000001, 0x80000, CRC(99b26863) SHA1(21682771d310c73d4431dde5e72398a69a6f3d53) )
1541 ROM_LOAD16_BYTE( "136095.43a", 0x100000, 0x80000, CRC(9c0e09a5) SHA1(039dc52318935f686230f57a7b39b9c62280cbf9) )
1542 ROM_LOAD16_BYTE( "136095.42a", 0x100001, 0x80000, CRC(523bbb39) SHA1(635e859e634f6ef0ba26775653bd38a5ca9ddbbc) )
1543 ROM_LOAD16_BYTE( "136095.45a", 0x200000, 0x80000, CRC(ac9bf600) SHA1(7da51103c419c7e09992bea67b5413bd2c9a0bb6) )
1544 ROM_LOAD16_BYTE( "136095.44a", 0x200001, 0x80000, CRC(58949b04) SHA1(c05cc0b691e110532a04e5de43564ddef6c65769) )
1545 ROM_LOAD16_BYTE( "136095.47a", 0x300000, 0x80000, CRC(675fee50) SHA1(2acbebce99d84ba6029baba48aa0271acb465c1c) )
1546 ROM_LOAD16_BYTE( "136095.46a", 0x300001, 0x80000, CRC(c948c7b6) SHA1(c5fc684bc8b38370221fe126e6d1461533908cfd) )
1547 ROM_LOAD16_BYTE( "136095.49a", 0x400000, 0x80000, CRC(04af9a77) SHA1(a985ef7617480e3606068369a1ddb7d90739aeb2) )
1548 ROM_LOAD16_BYTE( "136095.48a", 0x400001, 0x80000, CRC(5ad113aa) SHA1(71bb40520578447bef1eb78bb60f97a12720ecd9) )
1549 ROM_LOAD16_BYTE( "136095.51a", 0x500000, 0x80000, CRC(4635c534) SHA1(7261508052e3b17a552b43bc3d4ad7cd2d1f6af9) )
1550 ROM_LOAD16_BYTE( "136095.50a", 0x500001, 0x80000, CRC(94bde47d) SHA1(dde8f0184a2d7e9f7eb961af2d9d016399ec18fc) )
1551
1552 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* 1MB for ADPCM samples */
1553 ROM_LOAD( "136095.81a", 0x80000, 0x80000, CRC(212560dd) SHA1(9d90bca5b478050d640b2393c9d3d59a4bd493dd) )
1554
1555 ROM_REGION( 0x0600, REGION_PROMS, ROMREGION_DISPOSE ) /* microcode for growth renderer */
1556 ROM_LOAD( "094-001a.bin", 0x0000, 0x0200, NO_DUMP CRC(a70ade3f) )
1557 ROM_LOAD( "094-002a.bin", 0x0200, 0x0200, NO_DUMP CRC(f4768b4d) )
1558 ROM_LOAD( "094-003a.bin", 0x0400, 0x0200, NO_DUMP CRC(22a76ad4) )
1559 ROM_END
1560
1561
1562 ROM_START( motofren )
1563 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 8*64k for 68000 code */
1564 ROM_LOAD32_BYTE( "94-0221a.23e", 0x00000, 0x20000, CRC(134e9ff0) SHA1(801b817bf49b4317a7518192025a878b9cd13f7f) )
1565 ROM_LOAD32_BYTE( "94-0222a.23j", 0x00001, 0x20000, CRC(f6df65c7) SHA1(0a2092a509ae8c61e3f55c30c47bf39c71e2aa6e) )
1566 ROM_LOAD32_BYTE( "94-0223a.37e", 0x00002, 0x20000, CRC(cdb04a4a) SHA1(ee342bdb5654e8b841b1f60e46d1bcae7c4e5cd2) )
1567 ROM_LOAD32_BYTE( "94-0224a.37j", 0x00003, 0x20000, CRC(f3a9949f) SHA1(d3fa68fc63c505dd4c9d0e0c7f0625cc24ac9571) )
1568
1569 ROM_REGION( 0x14000, REGION_CPU2, 0 ) /* 64k for 6502 code */
1570 ROM_LOAD( "mfs6502.bin", 0x10000, 0x4000, CRC(0b1e565c) SHA1(03bdeafd8cf680f76bbd1f9aba6efac27f19a93c) )
1571 ROM_CONTINUE( 0x04000, 0xc000 )
1572
1573 ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE )
1574 ROM_LOAD( "motof2d.bin", 0x000000, 0x80000, CRC(1b63b493) SHA1(980141fec011fa2b5cb020eeecb4784d31679dba) ) /* playfield, planes 0-1 */
1575 ROM_LOAD( "motof5d.bin", 0x080000, 0x80000, CRC(6d290056) SHA1(fa32dbe5ac5e735d700d086353461eaa2c1dee55) ) /* playfield, planes 2-3 */
1576 ROM_LOAD( "motof8d.bin", 0x100000, 0x80000, CRC(38197c88) SHA1(dc5d4d878759503b8500e8e3a032f499bfeedcb1) ) /* playfield, planes 4-5 */
1577
1578 ROM_REGION( 0x020000, REGION_GFX2, ROMREGION_DISPOSE )
1579 ROM_LOAD( "motof13n.bin", 0x000000, 0x20000, CRC(6ab762ad) SHA1(c52dd207ff5adaffa458e020e7d452a1d1e65194) ) /* alphanumerics */
1580
1581 ROM_REGION16_BE( 0x700000, REGION_GFX3, 0 )
1582 ROM_LOAD16_BYTE( "motof31n.bin", 0x000000, 0x80000, CRC(474770e9) SHA1(507dac654d1c350ab530892e3ec19793629d3a07) )
1583 ROM_LOAD16_BYTE( "motof31l.bin", 0x000001, 0x80000, CRC(cb777468) SHA1(aa199bc02ab966b9f270057857aec50add8d684c) )
1584 ROM_LOAD16_BYTE( "motof33n.bin", 0x100000, 0x80000, CRC(353d2dc3) SHA1(82c2c862404ea4c94c9baee1d0ac32696fcf78bd) )
1585 ROM_LOAD16_BYTE( "motof33l.bin", 0x100001, 0x80000, CRC(17d49f77) SHA1(7ed85035128f3c9dc2bc3d9f387dba01a882e3f4) )
1586 ROM_LOAD16_BYTE( "motof35n.bin", 0x200000, 0x80000, CRC(13d89355) SHA1(becd43a51c643732025386d7781dcf784b20d031) )
1587 ROM_LOAD16_BYTE( "motof35l.bin", 0x200001, 0x80000, CRC(924c817e) SHA1(2c23fd8a85833875cfb2d60e1072bd59cea57e0c) )
1588 ROM_LOAD16_BYTE( "motof37n.bin", 0x300000, 0x80000, CRC(43ee7453) SHA1(3549f62e6b2f50d663fbb4068cb8907b5073ef5e) )
1589 ROM_LOAD16_BYTE( "motof37l.bin", 0x300001, 0x80000, CRC(980b9b92) SHA1(6a5cfb77b65c0a28dba705d4738c883be983cd4d) )
1590 ROM_LOAD16_BYTE( "motof31t.bin", 0x400000, 0x80000, CRC(25ac33af) SHA1(e76af04d2e2cbf5769c1f53e2eac4f85e57003ba) )
1591 ROM_LOAD16_BYTE( "motof31r.bin", 0x400001, 0x80000, CRC(d725a27d) SHA1(9d8d332a6c1d773888c2d9ef1d7ea1e865f6dd02) )
1592 ROM_LOAD16_BYTE( "motof33t.bin", 0x500000, 0x80000, CRC(a0fc90b2) SHA1(08ac2510287e8c3e8e52995d8f741b2a58e5b37b) )
1593 ROM_LOAD16_BYTE( "motof33r.bin", 0x500001, 0x80000, CRC(dcc206cf) SHA1(f0b7d5d289f4c0de99b536dd2874ffdabf648cb2) )
1594 ROM_LOAD16_BYTE( "motof35t.bin", 0x600000, 0x80000, CRC(74320763) SHA1(9cbf61c51dd96dc3e4a4227f3080766b9482a16a) )
1595 ROM_LOAD16_BYTE( "motof35r.bin", 0x600001, 0x80000, CRC(a7f9df2e) SHA1(c3e0c67081cf8f7b24350abf5a9adbb544ab44a7) )
1596
1597 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* 1MB for ADPCM samples */
1598 ROM_LOAD( "mfadpcm.bin", 0x80000, 0x80000, CRC(fde543c4) SHA1(7d36d7f2f30d0ac40da77a36a47488d75474caaf) )
1599
1600 ROM_REGION( 0x0600, REGION_PROMS, ROMREGION_DISPOSE ) /* microcode for growth renderer */
1601 ROM_LOAD( "094-001a.bin", 0x0000, 0x0200, CRC(a70ade3f) SHA1(f4a558b17767eed2683c768d1b441e75edcff967) )
1602 ROM_LOAD( "094-002a.bin", 0x0200, 0x0200, CRC(f4768b4d) SHA1(a506fa5386ab0ea2851ff1f8474d4bfc66deaa70) )
1603 ROM_LOAD( "094-003a.bin", 0x0400, 0x0200, CRC(22a76ad4) SHA1(ce840c283bbd3a5f19dc8d91b19d1571eff51ff4) )
1604 ROM_END
1605
1606
1607 ROM_START( rrreveng )
1608 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 8*64k for 68000 code */
1609 ROM_LOAD32_BYTE( "rrprghh.bin", 0x00000, 0x20000, CRC(d2903e9d) SHA1(8782cd6ee39e2159b9ebc68ecdc3ecefcdeb8623) )
1610 ROM_LOAD32_BYTE( "rrprghl.bin", 0x00001, 0x20000, CRC(1afd500c) SHA1(6d24087a839e5e7d9c764026a9f3089e52785cdb) )
1611 ROM_LOAD32_BYTE( "rrprglh.bin", 0x00002, 0x20000, CRC(2b03a6fc) SHA1(7c95a0307b854bd37fd327ff1af1b69aa60fb2fd) )
1612 ROM_LOAD32_BYTE( "rrprgll.bin", 0x00003, 0x20000, CRC(acf078da) SHA1(3506e105d3b208864ce12ab20e6250cb3a0005d6) )
1613
1614 ROM_REGION( 0x14000, REGION_CPU2, 0 ) /* 64k for 6502 code */
1615 ROM_LOAD( "rr65snd.bin", 0x10000, 0x4000, CRC(d78429da) SHA1(a4d36d74986f08c793f15f2e67cb97a8c91c5e90) )
1616 ROM_CONTINUE( 0x04000, 0xc000 )
1617
1618 ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE )
1619 ROM_LOAD( "rralpl.bin", 0x000000, 0x80000, CRC(00488dad) SHA1(604f08a219db0438dcbf21337ebd497f353bd812) ) /* playfield, planes 0-1 */
1620 ROM_LOAD( "rralpm.bin", 0x080000, 0x80000, CRC(ade27447) SHA1(641fdca97a4b08251e111425d8467e4640433df7) ) /* playfield, planes 2-3 */
1621 ROM_LOAD( "rralph.bin", 0x100000, 0x80000, CRC(ef04f04e) SHA1(e518133096978c4a0152253231625c385a84530f) ) /* playfield, planes 4-5 */
1622
1623 ROM_REGION( 0x020000, REGION_GFX2, ROMREGION_DISPOSE )
1624 ROM_LOAD( "rralalph.bin", 0x000000, 0x20000, CRC(7ca93790) SHA1(5e2f069be4b15d63f418c8693e8550eb0ae22381) ) /* alphanumerics */
1625
1626 ROM_REGION16_BE( 0x500000, REGION_GFX3, 0 )
1627 ROM_LOAD16_BYTE( "rrmo0h.bin", 0x000000, 0x80000, CRC(9b7e0315) SHA1(856804e89f586a4e777da5f47dc29c4e34175f44) )
1628 ROM_LOAD16_BYTE( "rrmo0l.bin", 0x000001, 0x80000, CRC(10478697) SHA1(9682e82cfbdc20f63d5c49303265c598a334c15b) )
1629 ROM_LOAD16_BYTE( "rrmo1h.bin", 0x100000, 0x80000, CRC(c7a48389) SHA1(a263aa4829cb243440ebe0496dd4f0158d97e2cc) )
1630 ROM_LOAD16_BYTE( "rrmo1l.bin", 0x100001, 0x80000, CRC(085a67c1) SHA1(0449abb5fec9014bd0ad14ce4802f726a90bc48c) )
1631 ROM_LOAD16_BYTE( "rrmo2h.bin", 0x200000, 0x80000, CRC(aea35aff) SHA1(2e02d2e877d356f9fb07e8b55ce252a148192d59) )
1632 ROM_LOAD16_BYTE( "rrmo2l.bin", 0x200001, 0x80000, CRC(b256d6d6) SHA1(0f0a05e3e58a00662f99988a050f2f5a11592d29) )
1633 ROM_LOAD16_BYTE( "rrmo3h.bin", 0x300000, 0x80000, CRC(e02549d7) SHA1(8b373d4969c77a14b15588f8a7e2977277fc9752) )
1634 ROM_LOAD16_BYTE( "rrmo3l.bin", 0x300001, 0x80000, CRC(8c81b537) SHA1(16cf8804687590aedf9020f9619bd14240f3b628) )
1635 ROM_LOAD16_BYTE( "rrmo4h.bin", 0x400000, 0x80000, CRC(12bf3e11) SHA1(37b1a7fe0b50202030f5c1938b95a449bbd51add) )
1636 ROM_LOAD16_BYTE( "rrmo4l.bin", 0x400001, 0x80000, CRC(a80175f6) SHA1(db621902fdfa99ec532713f4314c6cbb8353a773) )
1637
1638 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* 1MB for ADPCM samples */
1639 ROM_LOAD( "rralpc0.bin", 0x80000, 0x80000, CRC(1f7b6ecf) SHA1(1787a2e89618e1338d70a54684dbc7d44c5f5559) )
1640 ROM_LOAD( "rralpc1.bin", 0x80000, 0x80000, CRC(7ccd26d7) SHA1(1a74bdc66482896f5b9795d27383aa993e5fbaa4) )
1641
1642 ROM_REGION( 0x0600, REGION_PROMS, ROMREGION_DISPOSE ) /* microcode for growth renderer */
1643 ROM_LOAD( "rrmoprg1.bin", 0x0000, 0x0200, NO_DUMP )
1644 ROM_LOAD( "rrmoprg2.bin", 0x0200, 0x0200, NO_DUMP )
1645 ROM_LOAD( "rrmoprg3.bin", 0x0400, 0x0200, NO_DUMP )
1646 ROM_END
1647
1648
1649 ROM_START( rrrevenp )
1650 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 8*64k for 68000 code */
1651 ROM_LOAD32_BYTE( "rrprghh.bin", 0x00000, 0x20000, CRC(d2903e9d) SHA1(8782cd6ee39e2159b9ebc68ecdc3ecefcdeb8623) )
1652 ROM_LOAD32_BYTE( "rrprghl.bin", 0x00001, 0x20000, CRC(1afd500c) SHA1(6d24087a839e5e7d9c764026a9f3089e52785cdb) )
1653 ROM_LOAD32_BYTE( "rrprglh.bin", 0x00002, 0x20000, CRC(2b03a6fc) SHA1(7c95a0307b854bd37fd327ff1af1b69aa60fb2fd) )
1654 ROM_LOAD32_BYTE( "rrprgll.bin", 0x00003, 0x20000, CRC(acf078da) SHA1(3506e105d3b208864ce12ab20e6250cb3a0005d6) )
1655
1656 ROM_REGION( 0x14000, REGION_CPU2, 0 ) /* 64k for 6502 code */
1657 ROM_LOAD( "rr65snd.bin", 0x10000, 0x4000, CRC(d78429da) SHA1(a4d36d74986f08c793f15f2e67cb97a8c91c5e90) )
1658 ROM_CONTINUE( 0x04000, 0xc000 )
1659
1660 ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE )
1661 ROM_LOAD( "rralpl.bin", 0x000000, 0x80000, CRC(00488dad) SHA1(604f08a219db0438dcbf21337ebd497f353bd812) ) /* playfield, planes 0-1 */
1662 ROM_LOAD( "rralpm.bin", 0x080000, 0x80000, CRC(ade27447) SHA1(641fdca97a4b08251e111425d8467e4640433df7) ) /* playfield, planes 2-3 */
1663 ROM_LOAD( "rralph.bin", 0x100000, 0x80000, CRC(ef04f04e) SHA1(e518133096978c4a0152253231625c385a84530f) ) /* playfield, planes 4-5 */
1664
1665 ROM_REGION( 0x020000, REGION_GFX2, ROMREGION_DISPOSE )
1666 ROM_LOAD( "alpha.13n", 0x000000, 0x20000, CRC(f2efbd66) SHA1(d5339f0b3de7a102d659f7459b5f4800cab31829) ) /* alphanumerics */
1667
1668 ROM_REGION16_BE( 0x500000, REGION_GFX3, 0 )
1669 ROM_LOAD16_BYTE( "mo0h.31n", 0x000000, 0x80000, CRC(fc2755d5) SHA1(e24319161307efbb3828b21a6250869051f1ccc1) )
1670 ROM_LOAD16_BYTE( "mo0l.31l", 0x000001, 0x80000, CRC(f9f6bfe3) SHA1(c7e1479bb86646691d5ca7ee9127553cfd86571e) )
1671 ROM_LOAD16_BYTE( "rrmo1h.bin", 0x100000, 0x80000, CRC(c7a48389) SHA1(a263aa4829cb243440ebe0496dd4f0158d97e2cc) )
1672 ROM_LOAD16_BYTE( "rrmo1l.bin", 0x100001, 0x80000, CRC(085a67c1) SHA1(0449abb5fec9014bd0ad14ce4802f726a90bc48c) )
1673 ROM_LOAD16_BYTE( "rrmo2h.bin", 0x200000, 0x80000, CRC(aea35aff) SHA1(2e02d2e877d356f9fb07e8b55ce252a148192d59) )
1674 ROM_LOAD16_BYTE( "rrmo2l.bin", 0x200001, 0x80000, CRC(b256d6d6) SHA1(0f0a05e3e58a00662f99988a050f2f5a11592d29) )
1675 ROM_LOAD16_BYTE( "mo3h.37n", 0x300000, 0x80000, CRC(563baaeb) SHA1(e356aa2048c6addefa62d10a17fe5736afa54b16) )
1676 ROM_LOAD16_BYTE( "mo3l.37l", 0x300001, 0x80000, CRC(e0cf3396) SHA1(544863e5c18cce002ced8f96d5dfaedffdcfff1e) )
1677 ROM_LOAD16_BYTE( "mo4h.31t", 0x400000, 0x80000, CRC(af6a027e) SHA1(08038bddb6aa7e97f013f9d3e508f5501821e460) )
1678 ROM_LOAD16_BYTE( "mo4l.31r", 0x400001, 0x80000, CRC(9ebc5369) SHA1(ffd8418b328d99aa44fb1aed1db1aa6ac715c644) )
1679
1680 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* 1MB for ADPCM samples */
1681 ROM_LOAD( "rralpc0.bin", 0x80000, 0x80000, CRC(1f7b6ecf) SHA1(1787a2e89618e1338d70a54684dbc7d44c5f5559) )
1682 ROM_LOAD( "rralpc1.bin", 0x80000, 0x80000, CRC(7ccd26d7) SHA1(1a74bdc66482896f5b9795d27383aa993e5fbaa4) )
1683
1684 ROM_REGION( 0x0600, REGION_PROMS, ROMREGION_DISPOSE ) /* microcode for growth renderer */
1685 ROM_LOAD( "rrmoprg1.bin", 0x0000, 0x0200, NO_DUMP )
1686 ROM_LOAD( "rrmoprg2.bin", 0x0200, 0x0200, NO_DUMP )
1687 ROM_LOAD( "rrmoprg3.bin", 0x0400, 0x0200, NO_DUMP )
1688 ROM_END
1689
1690
1691
1692
1693 /*************************************
1694 *
1695 * Driver initialization
1696 *
1697 *************************************/
1698
1699 static DRIVER_INIT( spclords )
1700 {
1701 atarigen_eeprom_default = NULL;
1702 atarijsa_init(1, 4, 2, 0x0040);
1703 atarijsa3_init_adpcm(REGION_SOUND1);
1704
1705 atarigx2_playfield_base = 0x000;
1706 atarigx2_motion_object_base = 0x400;
1707 atarigx2_motion_object_mask = 0x3ff;
1708
1709 memory_set_unmap_value(~0);
1710 }
1711
1712
DRIVER_INIT(motofren)1713 static DRIVER_INIT( motofren )
1714 {
1715 atarigen_eeprom_default = NULL;
1716 atarijsa_init(1, 4, 2, 0x0040);
1717 atarijsa3_init_adpcm(REGION_SOUND1);
1718
1719 atarigx2_playfield_base = 0x400;
1720 atarigx2_motion_object_base = 0x200;
1721 atarigx2_motion_object_mask = 0x1ff;
1722
1723 memory_set_unmap_value(~0);
1724 /*
1725 L/W=!68.A23*!E.A22*!E.A21 = 000x xxxx = 000000-1fffff
1726 +68.A23*E.A22*E.A21*68.A20*68.A19*68.A18*68.A17 = 1111 111x = fe0000-ffffff
1727
1728 68.XIO=68.A23*E.A22*E.A21*!68.A20*!68.A18*!68.A17*!68.A16 = 1110 x000 = e00000-e0ffff, e80000-e8ffff
1729 +68.A23*E.A22*E.A21*!68.A20*!68.A19 = 1110 0xxx = e00000-e7ffff
1730
1731 68.ROM=!68.A23*68.AS*!E.A22*!E.A21 = 000x xxxx = 000000-1fffff
1732
1733 68.EXT=68.A23*68.AS*E.A22*!E.A21*!68.A20 = 1100 xxxx = c00000-cfffff
1734
1735 68.WRAM=68.A23*68.AS*E.A22*E.A21*68.A20*68.A19*68.A18*68.A17 = 1111 111x = fe0000-ffffff
1736
1737 XMEM=68.A23*E.A22*!E.A21*68.A20 = 1101 xxxx = d00000-dfffff
1738
1739 68.W1=68.A23*E.A22*!E.A21*68.A20*!68.A18 = 1101 x0xx = d00000-d3ffff, d80000-dbffff
1740
1741 68.W0=68.A23*E.A22*!E.A21*68.A20*!68.A18 = 1101 x0xx = d00000-d3ffff, d80000-dbffff
1742 +68.A23*E.A22*!E.A21*68.A20*!68.A19 = 1101 0xxx = d00000-d7ffff
1743 +68.A23*E.A22*!E.A21*!68.A20*68.A19 = 1100 1xxx = c80000-cfffff
1744 +!68.A23*!E.A22*!E.A21 = 000x xxxx = 000000-1fffff
1745 */
1746 }
1747
READ32_HANDLER(rrreveng_prot_r)1748 static READ32_HANDLER( rrreveng_prot_r )
1749 {
1750 return 0;
1751 }
1752
DRIVER_INIT(rrreveng)1753 static DRIVER_INIT( rrreveng )
1754 {
1755 atarigen_eeprom_default = NULL;
1756 atarijsa_init(1, 4, 2, 0x0040);
1757 atarijsa3_init_adpcm(REGION_SOUND1);
1758
1759 atarigx2_playfield_base = 0x000;
1760 atarigx2_motion_object_base = 0x400;
1761 atarigx2_motion_object_mask = 0x3ff;
1762
1763 install_mem_read32_handler(0, 0xca0fc0, 0xca0fc3, rrreveng_prot_r);
1764 }
1765
1766
1767
1768 /*************************************
1769 *
1770 * Game driver(s)
1771 *
1772 *************************************/
1773
1774 GAMEX( 1992, spclords, 0, atarigx2, spclords, spclords, ROT0, "Atari Games", "Space Lords", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
1775 GAMEX( 1992, spclorda, spclords, atarigx2, spclords, spclords, ROT0, "Atari Games", "Space Lords (alternate)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
1776 GAMEX( 1992, motofren, 0, atarigx2, motofren, motofren, ROT0, "Atari Games", "Moto Frenzy", GAME_UNEMULATED_PROTECTION )
1777 GAMEX( 1994, rrreveng, 0, atarigx2, rrreveng, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype)", GAME_UNEMULATED_PROTECTION )
1778 GAMEX( 1994, rrrevenp, rrreveng, atarigx2, rrreveng, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype alt)", GAME_UNEMULATED_PROTECTION )
1779