1 #include "../vidhrdw/hydra.c"
2
3 /***************************************************************************
4
5 Hydra/Pit Fighter
6
7 ****************************************************************************/
8
9
10 #include "driver.h"
11 #include "sound/adpcm.h"
12 #include "machine/atarigen.h"
13 #include "sndhrdw/atarijsa.h"
14 #include "vidhrdw/generic.h"
15
16
17 /* Note: if this is set to 1, it must also be set in the vidhrdw module */
18 #define HIGH_RES 0
19
20
21 extern struct rectangle hydra_mo_area;
22 extern UINT32 hydra_mo_priority_offset;
23 extern INT32 hydra_pf_xoffset;
24
25
26 static UINT8 which_input;
27
28
29 WRITE_HANDLER( hydra_playfieldram_w );
30
31 int hydra_vh_start(void);
32 void hydra_vh_stop(void);
33 void hydra_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
34
35 void hydra_scanline_update(int param);
36 WRITE_HANDLER( hydra_mo_control_w );
37
38
39
40 /*************************************
41 *
42 * Initialization
43 *
44 *************************************/
45
update_interrupts(void)46 static void update_interrupts(void)
47 {
48 int newstate = 0;
49
50 if (atarigen_video_int_state)
51 newstate = 1;
52 if (atarigen_sound_int_state)
53 newstate = 2;
54
55 if (newstate)
56 cpu_set_irq_line(0, newstate, ASSERT_LINE);
57 else
58 cpu_set_irq_line(0, 7, CLEAR_LINE);
59 }
60
61
init_machine(void)62 static void init_machine(void)
63 {
64 atarigen_eeprom_reset();
65 atarigen_slapstic_reset();
66 atarigen_interrupt_reset(update_interrupts);
67 atarigen_scanline_timer_reset(hydra_scanline_update, 8);
68 atarijsa_reset();
69 }
70
71
72
73 /*************************************
74 *
75 * I/O read dispatch.
76 *
77 *************************************/
78
READ_HANDLER(special_port0_r)79 static READ_HANDLER( special_port0_r )
80 {
81 int temp = input_port_0_r(offset);
82 if (atarigen_cpu_to_sound_ready) temp ^= 0x1000;
83 temp ^= 0x2000; /* A2DOK always high for now */
84 return temp;
85 }
86
87
WRITE_HANDLER(a2d_select_w)88 static WRITE_HANDLER( a2d_select_w )
89 {
90 (void)data;
91 which_input = (offset / 2);
92 }
93
94
READ_HANDLER(a2d_data_r)95 static READ_HANDLER( a2d_data_r )
96 {
97 /* Pit Fighter has no A2D, just another input port */
98 if (hydra_mo_area.min_x != 0)
99 return input_port_1_r(offset);
100
101 /* otherwise, assume it's hydra */
102 if (which_input < 3)
103 return readinputport(1 + which_input) << 8;
104
105 return 0;
106 }
107
108
109
110 /*************************************
111 *
112 * Main CPU memory handlers
113 *
114 *************************************/
115
116 static struct MemoryReadAddress main_readmem[] =
117 {
118 { 0x000000, 0x07ffff, MRA_ROM },
119 { 0xfc0000, 0xfc0001, special_port0_r },
120 { 0xfc8000, 0xfc8001, a2d_data_r },
121 { 0xfd0000, 0xfd0001, atarigen_sound_upper_r },
122 { 0xfd8000, 0xfdffff, atarigen_eeprom_r },
123 /* { 0xfe0000, 0xfe7fff, from_r },*/
124 { 0xfe8000, 0xfe89ff, MRA_BANK1 },
125 { 0xff0000, 0xff3fff, MRA_BANK2 },
126 { 0xff4000, 0xff5fff, MRA_BANK3 },
127 { 0xff6000, 0xff6fff, MRA_BANK4 },
128 { 0xff7000, 0xffffff, MRA_BANK5 },
129 { -1 } /* end of table */
130 };
131
132
133 static struct MemoryWriteAddress main_writemem[] =
134 {
135 { 0x000000, 0x07ffff, MWA_ROM },
136 { 0xf80000, 0xf80001, watchdog_reset_w },
137 { 0xf88000, 0xf8ffff, atarigen_eeprom_enable_w },
138 { 0xf90000, 0xf90001, atarigen_sound_upper_w },
139 { 0xf98000, 0xf98001, atarigen_sound_reset_w },
140 { 0xfa0000, 0xfa0001, hydra_mo_control_w },
141 { 0xfb0000, 0xfb0001, atarigen_video_int_ack_w },
142 { 0xfc8000, 0xfc8007, a2d_select_w },
143 { 0xfd8000, 0xfdffff, atarigen_eeprom_w, &atarigen_eeprom, &atarigen_eeprom_size },
144 { 0xfe8000, 0xfe89ff, atarigen_666_paletteram_w, &paletteram },
145 { 0xff0000, 0xff3fff, MWA_BANK2, &atarigen_spriteram, &atarigen_spriteram_size },
146 { 0xff4000, 0xff5fff, hydra_playfieldram_w, &atarigen_playfieldram, &atarigen_playfieldram_size },
147 { 0xff6000, 0xff6fff, MWA_BANK4, &atarigen_alpharam, &atarigen_alpharam_size },
148 { 0xff7000, 0xffffff, MWA_BANK5 },
149 { -1 } /* end of table */
150 };
151
152
153
154 /*************************************
155 *
156 * Port definitions
157 *
158 *************************************/
159
160 INPUT_PORTS_START( hydra )
161 PORT_START /* fc0000 */
162 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 )
163 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )
164 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 )
165 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 )
166 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 )
167 PORT_BIT( 0x0fe0, IP_ACTIVE_LOW, IPT_UNUSED )
168 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
169 PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
170 PORT_SERVICE( 0x4000, IP_ACTIVE_LOW )
171 PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_VBLANK )
172
173 PORT_START /* ADC 0 @ fc8000 */
174 PORT_ANALOG( 0x00ff, 0x0080, IPT_AD_STICK_X, 50, 10, 0, 255 )
175 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
176
177 PORT_START /* ADC 1 @ fc8000 */
178 PORT_ANALOG( 0x00ff, 0x0080, IPT_AD_STICK_Y, 70, 10, 0, 255 )
179 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
180
181 PORT_START /* ADC 2 @ fc8000 */
182 PORT_ANALOG( 0xff, 0x00, IPT_PEDAL, 100, 16, 0x00, 0xff )
183
184 JSA_II_PORT /* audio board port */
185 INPUT_PORTS_END
186
187
188 INPUT_PORTS_START( pitfight )
189 PORT_START /* fc0000 */
190 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
191 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
192 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
193 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
194 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
195 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
196 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
197 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1 )
198 PORT_BIT( 0x0f80, IP_ACTIVE_LOW, IPT_UNUSED )
199 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
200 PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
201 PORT_SERVICE( 0x4000, IP_ACTIVE_LOW )
202 PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_VBLANK )
203
204 PORT_START /* fc8000 */
205 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
206 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
207 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
208 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
209 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
210 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
211 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
212 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START2 )
213 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
214 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER3 )
215 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER3 )
216 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER3 )
217 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER3 )
218 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
219 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
220 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
221 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START3 )
222 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
223
224 PORT_START /* not used */
225 PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
226
227 PORT_START /* not used */
228 PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
229
230 JSA_II_PORT /* audio board port */
231 INPUT_PORTS_END
232
233
234
235 /*************************************
236 *
237 * Graphics definitions
238 *
239 *************************************/
240
241 static struct GfxLayout pflayout =
242 {
243 8 << HIGH_RES,8, /* 8*8 chars */
244 16384, /* 16384 chars */
245 5, /* 5 bits per pixel */
246 { 0, 0, 1, 2, 3 },
247 #if HIGH_RES
248 { 0x40000*8+0,0x40000*8+0, 0x40000*8+4,0x40000*8+4, 0,0, 4,4,
249 0x40000*8+8,0x40000*8+8, 0x40000*8+12,0x40000*8+12, 8,8, 12,12 },
250 #else
251 { 0x40000*8+0, 0x40000*8+4, 0, 4, 0x40000*8+8, 0x40000*8+12, 8, 12 },
252 #endif
253 { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
254 16*8 /* every char takes 16 consecutive bytes */
255 };
256
257 static struct GfxLayout anlayout =
258 {
259 8 << HIGH_RES,8, /* 8*8 chars */
260 4096, /* 4096 chars */
261 4, /* 4 bits per pixel */
262 { 0, 1, 2, 3 },
263 #if HIGH_RES
264 { 0,0, 4,4, 8,8, 12,12, 16,16, 20,20, 24,24, 28,28 },
265 #else
266 { 0, 4, 8, 12, 16, 20, 24, 28 },
267 #endif
268 { 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8 },
269 32*8 /* every char takes 32 consecutive bytes */
270 };
271
272
273 static struct GfxDecodeInfo gfxdecodeinfo[] =
274 {
275 { REGION_GFX1, 0, &pflayout, 0x300, 8 },
276 { REGION_GFX2, 0, &anlayout, 0x100, 16 },
277 { -1 } /* end of array */
278 };
279
280
281
282 /*************************************
283 *
284 * Machine driver
285 *
286 *************************************/
287
288 static struct MachineDriver machine_driver_hydra =
289 {
290 /* basic machine hardware */
291 {
292 {
293 CPU_M68000, /* verified */
294 ATARI_CLOCK_14MHz,
295 main_readmem,main_writemem,0,0,
296 atarigen_video_int_gen,1
297 },
298 JSA_II_CPU
299 },
300 60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
301 1,
302 init_machine,
303
304 /* video hardware */
305 42*(8 << HIGH_RES), 30*8, { 0*(8 << HIGH_RES), 42*(8 << HIGH_RES)-1, 0*8, 30*8-1 },
306 gfxdecodeinfo,
307 1024,1024,
308 0,
309
310 #if HIGH_RES
311 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_PIXEL_ASPECT_RATIO_1_2,
312 #else
313 VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
314 #endif
315 0,
316 hydra_vh_start,
317 hydra_vh_stop,
318 hydra_vh_screenrefresh,
319
320 /* sound hardware */
321 JSA_II_MONO(REGION_SOUND1),
322
323 atarigen_nvram_handler
324 };
325
326
327
328 /*************************************
329 *
330 * Driver initialization
331 *
332 *************************************/
333
init_hydra(void)334 static void init_hydra(void)
335 {
336 atarigen_eeprom_default = NULL;
337 atarigen_slapstic_init(0, 0x078000, 116);
338
339 hydra_mo_area.min_x = 0 << HIGH_RES;
340 hydra_mo_area.max_x = 255 << HIGH_RES;
341 hydra_mo_area.min_y = 0;
342 hydra_mo_area.max_y = 239;
343 hydra_mo_priority_offset = 10;
344 hydra_pf_xoffset = 0;
345
346 atarijsa_init(1, 4, 0, 0x8000);
347
348 /* speed up the 6502 */
349 atarigen_init_6502_speedup(1, 0x4159, 0x4171);
350
351 /* display messages */
352 atarigen_show_slapstic_message();
353 atarigen_show_sound_message();
354 }
355
356
init_hydrap(void)357 static void init_hydrap(void)
358 {
359 atarigen_eeprom_default = NULL;
360
361 hydra_mo_area.min_x = 0 << HIGH_RES;
362 hydra_mo_area.max_x = 255 << HIGH_RES;
363 hydra_mo_area.min_y = 0;
364 hydra_mo_area.max_y = 239;
365 hydra_mo_priority_offset = 10;
366 hydra_pf_xoffset = 0;
367
368 atarijsa_init(1, 4, 0, 0x8000);
369
370 /* speed up the 6502 */
371 atarigen_init_6502_speedup(1, 0x4159, 0x4171);
372
373 /* display messages */
374 atarigen_show_sound_message();
375 }
376
377
init_pitfight(void)378 static void init_pitfight(void)
379 {
380 atarigen_eeprom_default = NULL;
381 atarigen_slapstic_init(0, 0x038000, 111);
382
383 hydra_mo_area.min_x = 40 << HIGH_RES;
384 hydra_mo_area.max_x = (40 + 255) << HIGH_RES;
385 hydra_mo_area.min_y = 0;
386 hydra_mo_area.max_y = 239;
387 hydra_mo_priority_offset = 12;
388 hydra_pf_xoffset = 2;
389
390 atarijsa_init(1, 4, 0, 0x8000);
391
392 /* speed up the 6502 */
393 atarigen_init_6502_speedup(1, 0x4159, 0x4171);
394
395 /* display messages */
396 atarigen_show_slapstic_message();
397 atarigen_show_sound_message();
398 }
399
400
401
402 /*************************************
403 *
404 * ROM definition(s)
405 *
406 *************************************/
407
408 ROM_START( hydra )
409 ROM_REGION( 0x80000, REGION_CPU1 ) /* 8*64k for 68000 code */
410 ROM_LOAD_EVEN( "hydr3028.bin", 0x00000, 0x10000, 0x43475f73 )
411 ROM_LOAD_ODD ( "hydr3029.bin", 0x00000, 0x10000, 0x886e1de8 )
412 ROM_LOAD_EVEN( "hydr3034.bin", 0x20000, 0x10000, 0x5115aa36 )
413 ROM_LOAD_ODD ( "hydr3035.bin", 0x20000, 0x10000, 0xa28ba44b )
414 ROM_LOAD_EVEN( "hydr1032.bin", 0x40000, 0x10000, 0xecd1152a )
415 ROM_LOAD_ODD ( "hydr1033.bin", 0x40000, 0x10000, 0x2ebe1939 )
416 ROM_LOAD_EVEN( "hydr1030.bin", 0x60000, 0x10000, 0xb31fd41f )
417 ROM_LOAD_ODD ( "hydr1031.bin", 0x60000, 0x10000, 0x453d076f )
418
419 ROM_REGION( 0x14000, REGION_CPU2 ) /* 64k for 6502 code */
420 ROM_LOAD( "hydraa0.bin", 0x10000, 0x4000, 0x619d7319 )
421 ROM_CONTINUE( 0x04000, 0xc000 )
422
423 ROM_REGION( 0x0a0000, REGION_GFX1 | REGIONFLAG_DISPOSE )
424 ROM_LOAD( "hydr1017.bin", 0x000000, 0x10000, 0xbd77b747 ) /* playfield, planes 0-3 odd */
425 ROM_LOAD( "hydr1018.bin", 0x010000, 0x10000, 0x7c24e637 )
426 ROM_LOAD( "hydr1019.bin", 0x020000, 0x10000, 0xaa2fb07b )
427 ROM_LOAD( "hydr1020.bin", 0x030000, 0x10000, 0x906ccd98 )
428 ROM_LOAD( "hydr1021.bin", 0x040000, 0x10000, 0xf88cdac2 ) /* playfield, planes 0-3 even */
429 ROM_LOAD( "hydr1022.bin", 0x050000, 0x10000, 0xa9c612ff )
430 ROM_LOAD( "hydr1023.bin", 0x060000, 0x10000, 0xb706aa6e )
431 ROM_LOAD( "hydr1024.bin", 0x070000, 0x10000, 0xc49eac53 )
432 ROM_LOAD( "hydr1025.bin", 0x080000, 0x10000, 0x98b5b1a1 ) /* playfield plane 4 */
433 ROM_LOAD( "hydr1026.bin", 0x090000, 0x10000, 0xd68d44aa )
434
435 ROM_REGION( 0x020000, REGION_GFX2 | REGIONFLAG_DISPOSE )
436 ROM_LOAD( "hydr1027.bin", 0x000000, 0x20000, 0xf9135b9b ) /* alphanumerics */
437
438 ROM_REGION( 0x100000, REGION_GFX3 )
439 ROM_LOAD_ODD ( "hydr1001.bin", 0x00000, 0x10000, 0x3f757a53 )
440 ROM_LOAD_EVEN( "hydr1002.bin", 0x00000, 0x10000, 0xa1169469 )
441 ROM_LOAD_ODD ( "hydr1003.bin", 0x20000, 0x10000, 0xaa21ec33 )
442 ROM_LOAD_EVEN( "hydr1004.bin", 0x20000, 0x10000, 0xc0a2be66 )
443 ROM_LOAD_ODD ( "hydr1005.bin", 0x40000, 0x10000, 0x80c285b3 )
444 ROM_LOAD_EVEN( "hydr1006.bin", 0x40000, 0x10000, 0xad831c59 )
445 ROM_LOAD_ODD ( "hydr1007.bin", 0x60000, 0x10000, 0xe0688cc0 )
446 ROM_LOAD_EVEN( "hydr1008.bin", 0x60000, 0x10000, 0xe6827f6b )
447 ROM_LOAD_ODD ( "hydr1009.bin", 0x80000, 0x10000, 0x33624d07 )
448 ROM_LOAD_EVEN( "hydr1010.bin", 0x80000, 0x10000, 0x9de4c689 )
449 ROM_LOAD_ODD ( "hydr1011.bin", 0xa0000, 0x10000, 0xd55c6e49 )
450 ROM_LOAD_EVEN( "hydr1012.bin", 0xa0000, 0x10000, 0x43af45d0 )
451 ROM_LOAD_ODD ( "hydr1013.bin", 0xc0000, 0x10000, 0x2647a82b )
452 ROM_LOAD_EVEN( "hydr1014.bin", 0xc0000, 0x10000, 0x8897d5e9 )
453 ROM_LOAD_ODD ( "hydr1015.bin", 0xe0000, 0x10000, 0xcf7f69fd )
454 ROM_LOAD_EVEN( "hydr1016.bin", 0xe0000, 0x10000, 0x61aaf14f )
455
456 ROM_REGION( 0x30000, REGION_SOUND1 ) /* 192k for ADPCM samples */
457 ROM_LOAD( "hydr1037.bin", 0x00000, 0x10000, 0xb974d3d0 )
458 ROM_LOAD( "hydr1038.bin", 0x10000, 0x10000, 0xa2eda15b )
459 ROM_LOAD( "hydr1039.bin", 0x20000, 0x10000, 0xeb9eaeb7 )
460 ROM_END
461
462 ROM_START( hydrap )
463 ROM_REGION( 0x80000, REGION_CPU1 ) /* 8*64k for 68000 code */
464 ROM_LOAD_EVEN( "hydhi0.bin", 0x00000, 0x10000, 0xdab2e8a2 )
465 ROM_LOAD_ODD ( "hydlo0.bin", 0x00000, 0x10000, 0xc18d4f16 )
466 ROM_LOAD_EVEN( "hydhi1.bin", 0x20000, 0x10000, 0x50c12bb9 )
467 ROM_LOAD_ODD ( "hydlo1.bin", 0x20000, 0x10000, 0x5ee0a846 )
468 ROM_LOAD_EVEN( "hydhi2.bin", 0x40000, 0x10000, 0x436a6d81 )
469 ROM_LOAD_ODD ( "hydlo2.bin", 0x40000, 0x10000, 0x182bfd6a )
470 ROM_LOAD_EVEN( "hydhi3.bin", 0x60000, 0x10000, 0x29e9e03e )
471 ROM_LOAD_ODD ( "hydlo3.bin", 0x60000, 0x10000, 0x7b5047f0 )
472
473 ROM_REGION( 0x14000, REGION_CPU2 ) /* 64k for 6502 code */
474 ROM_LOAD( "hydraa0.bin", 0x10000, 0x4000, BADCRC(0x619d7319) )
475 ROM_CONTINUE( 0x04000, 0xc000 )
476
477 ROM_REGION( 0x0a0000, REGION_GFX1 | REGIONFLAG_DISPOSE )
478 ROM_LOAD( "hydr1017.bin", 0x000000, 0x10000, 0xbd77b747 ) /* playfield, planes 0-3 odd */
479 ROM_LOAD( "hydr1018.bin", 0x010000, 0x10000, 0x7c24e637 )
480 ROM_LOAD( "hydr1019.bin", 0x020000, 0x10000, 0xaa2fb07b )
481 ROM_LOAD( "hydpl03.bin", 0x030000, 0x10000, 0x1f0dfe60 )
482 ROM_LOAD( "hydr1021.bin", 0x040000, 0x10000, 0xf88cdac2 ) /* playfield, planes 0-3 even */
483 ROM_LOAD( "hydr1022.bin", 0x050000, 0x10000, 0xa9c612ff )
484 ROM_LOAD( "hydr1023.bin", 0x060000, 0x10000, 0xb706aa6e )
485 ROM_LOAD( "hydphi3.bin", 0x070000, 0x10000, 0x917e250c )
486 ROM_LOAD( "hydr1025.bin", 0x080000, 0x10000, 0x98b5b1a1 ) /* playfield plane 4 */
487 ROM_LOAD( "hydpl41.bin", 0x090000, 0x10000, 0x85f9afa6 )
488
489 ROM_REGION( 0x020000, REGION_GFX2 | REGIONFLAG_DISPOSE )
490 ROM_LOAD( "hydalph.bin", 0x000000, 0x20000, 0x7dd2b062 ) /* alphanumerics */
491
492 ROM_REGION( 0x100000, REGION_GFX3 )
493 ROM_LOAD_ODD ( "hydmhi0.bin", 0x00000, 0x10000, 0x3c83b42d )
494 ROM_LOAD_EVEN( "hydmlo0.bin", 0x00000, 0x10000, 0x6d49650c )
495 ROM_LOAD_ODD ( "hydmhi1.bin", 0x20000, 0x10000, 0x689b3376 )
496 ROM_LOAD_EVEN( "hydmlo1.bin", 0x20000, 0x10000, 0xc81a4e88 )
497 ROM_LOAD_ODD ( "hydmhi2.bin", 0x40000, 0x10000, 0x77098e14 )
498 ROM_LOAD_EVEN( "hydmlo2.bin", 0x40000, 0x10000, 0x40015d9d )
499 ROM_LOAD_ODD ( "hydmhi3.bin", 0x60000, 0x10000, 0xdfebdcbd )
500 ROM_LOAD_EVEN( "hydmlo3.bin", 0x60000, 0x10000, 0x213c407c )
501 ROM_LOAD_ODD ( "hydmhi4.bin", 0x80000, 0x10000, 0x2897765f )
502 ROM_LOAD_EVEN( "hydmlo4.bin", 0x80000, 0x10000, 0x730157f3 )
503 ROM_LOAD_ODD ( "hydmhi5.bin", 0xa0000, 0x10000, 0xecd061ae )
504 ROM_LOAD_EVEN( "hydmlo5.bin", 0xa0000, 0x10000, 0xa5a08c53 )
505 ROM_LOAD_ODD ( "hydmhi6.bin", 0xc0000, 0x10000, 0xaa3f2903 )
506 ROM_LOAD_EVEN( "hydmlo6.bin", 0xc0000, 0x10000, 0xdb8ea56f )
507 ROM_LOAD_ODD ( "hydmhi7.bin", 0xe0000, 0x10000, 0x71fc3e43 )
508 ROM_LOAD_EVEN( "hydmlo7.bin", 0xe0000, 0x10000, 0x7960b0c2 )
509
510 ROM_REGION( 0x30000, REGION_SOUND1 ) /* 192k for ADPCM samples */
511 ROM_LOAD( "hydr1037.bin", 0x00000, 0x10000, BADCRC(0xb974d3d0) )
512 ROM_LOAD( "hydr1038.bin", 0x10000, 0x10000, BADCRC(0xa2eda15b) )
513 ROM_LOAD( "hydr1039.bin", 0x20000, 0x10000, BADCRC(0xeb9eaeb7) )
514 ROM_END
515
516 ROM_START( pitfight )
517 ROM_REGION( 0x80000, REGION_CPU1 ) /* 8*64k for 68000 code */
518 ROM_LOAD_EVEN( "4028", 0x00000, 0x10000, 0xf7cb1a4b )
519 ROM_LOAD_ODD ( "4029", 0x00000, 0x10000, 0x13ae0d4f )
520 ROM_LOAD_EVEN( "3030", 0x20000, 0x10000, 0xb053e779 )
521 ROM_LOAD_ODD ( "3031", 0x20000, 0x10000, 0x2b8c4d13 )
522
523 ROM_REGION( 0x14000, REGION_CPU2 ) /* 64k for 6502 code */
524 ROM_LOAD( "1060", 0x10000, 0x4000, 0x231d71d7 )
525 ROM_CONTINUE( 0x04000, 0xc000 )
526
527 ROM_REGION( 0x0a0000, REGION_GFX1 | REGIONFLAG_DISPOSE )
528 ROM_LOAD( "1017", 0x000000, 0x10000, 0xad3cfea5 ) /* playfield, planes 0-3 odd */
529 ROM_LOAD( "1018", 0x010000, 0x10000, 0x1a0f8bcf )
530 ROM_LOAD( "1021", 0x040000, 0x10000, 0x777efee3 ) /* playfield, planes 0-3 even */
531 ROM_LOAD( "1022", 0x050000, 0x10000, 0x524319d0 )
532 ROM_LOAD( "1025", 0x080000, 0x10000, 0xfc41691a ) /* playfield plane 4 */
533
534 ROM_REGION( 0x020000, REGION_GFX2 | REGIONFLAG_DISPOSE )
535 ROM_LOAD( "1027", 0x000000, 0x10000, 0xa59f381d ) /* alphanumerics */
536
537 ROM_REGION( 0x200000, REGION_GFX3 )
538 ROM_LOAD_ODD ( "1001", 0x000000, 0x20000, 0x3af31444 )
539 ROM_LOAD_EVEN( "1002", 0x000000, 0x20000, 0xf1d76a4c )
540 ROM_LOAD_ODD ( "1003", 0x040000, 0x20000, 0x28c41c2a )
541 ROM_LOAD_EVEN( "1004", 0x040000, 0x20000, 0x977744da )
542 ROM_LOAD_ODD ( "1005", 0x080000, 0x20000, 0xae59aef2 )
543 ROM_LOAD_EVEN( "1006", 0x080000, 0x20000, 0xb6ccd77e )
544 ROM_LOAD_ODD ( "1007", 0x0c0000, 0x20000, 0xba33b0c0 )
545 ROM_LOAD_EVEN( "1008", 0x0c0000, 0x20000, 0x09bd047c )
546 ROM_LOAD_ODD ( "1009", 0x100000, 0x20000, 0xab85b00b )
547 ROM_LOAD_EVEN( "1010", 0x100000, 0x20000, 0xeca94bdc )
548 ROM_LOAD_ODD ( "1011", 0x140000, 0x20000, 0xa86582fd )
549 ROM_LOAD_EVEN( "1012", 0x140000, 0x20000, 0xefd1152d )
550 ROM_LOAD_ODD ( "1013", 0x180000, 0x20000, 0xa141379e )
551 ROM_LOAD_EVEN( "1014", 0x180000, 0x20000, 0x93bfcc15 )
552 ROM_LOAD_ODD ( "1015", 0x1c0000, 0x20000, 0x9378ad0b )
553 ROM_LOAD_EVEN( "1016", 0x1c0000, 0x20000, 0x19c3fbe0 )
554
555 ROM_REGION( 0x40000, REGION_SOUND1 ) /* 256k for ADPCM samples */
556 ROM_LOAD( "1061", 0x00000, 0x10000, 0x5b0468c6 )
557 ROM_LOAD( "1062", 0x10000, 0x10000, 0xf73fe3cb )
558 ROM_LOAD( "1063", 0x20000, 0x10000, 0xaa93421d )
559 ROM_LOAD( "1064", 0x30000, 0x10000, 0x33f045d5 )
560 ROM_END
561
562 ROM_START( pitfigh3 )
563 ROM_REGION( 0x80000, REGION_CPU1 ) /* 8*64k for 68000 code */
564 ROM_LOAD_EVEN( "3028", 0x00000, 0x10000, 0x99530da4 )
565 ROM_LOAD_ODD ( "3029", 0x00000, 0x10000, 0x78c7afbf )
566 ROM_LOAD_EVEN( "3030", 0x20000, 0x10000, 0xb053e779 )
567 ROM_LOAD_ODD ( "3031", 0x20000, 0x10000, 0x2b8c4d13 )
568
569 ROM_REGION( 0x14000, REGION_CPU2 ) /* 64k for 6502 code */
570 ROM_LOAD( "1060", 0x10000, 0x4000, 0x231d71d7 )
571 ROM_CONTINUE( 0x04000, 0xc000 )
572
573 ROM_REGION( 0x0a0000, REGION_GFX1 | REGIONFLAG_DISPOSE )
574 ROM_LOAD( "1017", 0x000000, 0x10000, 0xad3cfea5 ) /* playfield, planes 0-3 odd */
575 ROM_LOAD( "1018", 0x010000, 0x10000, 0x1a0f8bcf )
576 ROM_LOAD( "1021", 0x040000, 0x10000, 0x777efee3 ) /* playfield, planes 0-3 even */
577 ROM_LOAD( "1022", 0x050000, 0x10000, 0x524319d0 )
578 ROM_LOAD( "1025", 0x080000, 0x10000, 0xfc41691a ) /* playfield plane 4 */
579
580 ROM_REGION( 0x020000, REGION_GFX2 | REGIONFLAG_DISPOSE )
581 ROM_LOAD( "1027", 0x000000, 0x10000, 0xa59f381d ) /* alphanumerics */
582
583 ROM_REGION( 0x200000, REGION_GFX3 )
584 ROM_LOAD_ODD ( "1001", 0x000000, 0x20000, 0x3af31444 )
585 ROM_LOAD_EVEN( "1002", 0x000000, 0x20000, 0xf1d76a4c )
586 ROM_LOAD_ODD ( "1003", 0x040000, 0x20000, 0x28c41c2a )
587 ROM_LOAD_EVEN( "1004", 0x040000, 0x20000, 0x977744da )
588 ROM_LOAD_ODD ( "1005", 0x080000, 0x20000, 0xae59aef2 )
589 ROM_LOAD_EVEN( "1006", 0x080000, 0x20000, 0xb6ccd77e )
590 ROM_LOAD_ODD ( "1007", 0x0c0000, 0x20000, 0xba33b0c0 )
591 ROM_LOAD_EVEN( "1008", 0x0c0000, 0x20000, 0x09bd047c )
592 ROM_LOAD_ODD ( "1009", 0x100000, 0x20000, 0xab85b00b )
593 ROM_LOAD_EVEN( "1010", 0x100000, 0x20000, 0xeca94bdc )
594 ROM_LOAD_ODD ( "1011", 0x140000, 0x20000, 0xa86582fd )
595 ROM_LOAD_EVEN( "1012", 0x140000, 0x20000, 0xefd1152d )
596 ROM_LOAD_ODD ( "1013", 0x180000, 0x20000, 0xa141379e )
597 ROM_LOAD_EVEN( "1014", 0x180000, 0x20000, 0x93bfcc15 )
598 ROM_LOAD_ODD ( "1015", 0x1c0000, 0x20000, 0x9378ad0b )
599 ROM_LOAD_EVEN( "1016", 0x1c0000, 0x20000, 0x19c3fbe0 )
600
601 ROM_REGION( 0x40000, REGION_SOUND1 ) /* 256k for ADPCM samples */
602 ROM_LOAD( "1061", 0x00000, 0x10000, 0x5b0468c6 )
603 ROM_LOAD( "1062", 0x10000, 0x10000, 0xf73fe3cb )
604 ROM_LOAD( "1063", 0x20000, 0x10000, 0xaa93421d )
605 ROM_LOAD( "1064", 0x30000, 0x10000, 0x33f045d5 )
606 ROM_END
607
608
609
610 /*************************************
611 *
612 * Game driver(s)
613 *
614 *************************************/
615
616 GAME( 1990, hydra, 0, hydra, hydra, hydra, ROT0, "Atari Games", "Hydra" )
617 GAME( 1990, hydrap, hydra, hydra, hydra, hydrap, ROT0, "Atari Games", "Hydra (prototype)" )
618 GAME( 1990, pitfight, 0, hydra, pitfight, pitfight, ROT0, "Atari Games", "Pit Fighter (version 4)" )
619 GAME( 1990, pitfigh3, pitfight, hydra, pitfight, pitfight, ROT0, "Atari Games", "Pit Fighter (version 3)" )
620