1 /* Driver Info
2
3 Action Hollywood (c)1995 TCH
4 Kick Goal (c)1995 TCH
5
6 prelim driver by David Haywood
7
8
9 todo:
10
11 Sound - Not possible without PIC dump?
12
13 */
14
15 /* Notes
16
17 68k interrupts
18 lev 1 : 0x64 : 0000 0000 - x
19 lev 2 : 0x68 : 0000 0000 - x
20 lev 3 : 0x6c : 0000 0000 - x
21 lev 4 : 0x70 : 0000 0000 - x
22 lev 5 : 0x74 : 0000 0000 - x
23 lev 6 : 0x78 : 0000 0510 - vblank?
24 lev 7 : 0x7c : 0000 0000 - x
25
26 */
27
28 #include "driver.h"
29 #include "vidhrdw/generic.h"
30 #include "machine/eeprom.h"
31 #include "sound/adpcm.h"
32
33
34
35 data16_t *kickgoal_fgram, *kickgoal_bgram, *kickgoal_bg2ram, *kickgoal_scrram;
36
37 WRITE16_HANDLER( kickgoal_fgram_w );
38 WRITE16_HANDLER( kickgoal_bgram_w );
39 WRITE16_HANDLER( kickgoal_bg2ram_w );
40
41 VIDEO_START( actionhw );
42 VIDEO_UPDATE( actionhw );
43 VIDEO_START( kickgoal );
44 VIDEO_UPDATE( kickgoal );
45
46 #define oki_time_base 0x08
47 static int snd_new, snd_sam[4];
48
49
50 static struct EEPROM_interface eeprom_interface =
51 {
52 6, /* address bits */
53 16, /* data bits */
54 "*110", /* read command */
55 "*101", /* write command */
56 0, /* erase command */
57 "*10000xxxx", /* lock command */
58 "*10011xxxx" /* unlock command */
59 };
60
NVRAM_HANDLER(kickgoal)61 static NVRAM_HANDLER( kickgoal )
62 {
63 if (read_or_write) EEPROM_save(file);
64 else
65 {
66 EEPROM_init(&eeprom_interface);
67 if (file) EEPROM_load(file);
68 }
69 }
70
71
READ16_HANDLER(kickgoal_eeprom_r)72 static READ16_HANDLER( kickgoal_eeprom_r )
73 {
74 return EEPROM_read_bit();
75 }
76
77
WRITE16_HANDLER(kickgoal_eeprom_w)78 static WRITE16_HANDLER( kickgoal_eeprom_w )
79 {
80 if (ACCESSING_LSB)
81 {
82 switch (offset)
83 {
84 case 0:
85 EEPROM_set_cs_line((data & 0x0001) ? CLEAR_LINE : ASSERT_LINE);
86 break;
87 case 1:
88 EEPROM_set_clock_line((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE);
89 break;
90 case 2:
91 EEPROM_write_bit(data & 0x0001);
92 break;
93 }
94 }
95 }
96
WRITE16_HANDLER(actionhw_snd_w)97 WRITE16_HANDLER( actionhw_snd_w )
98 {
99 log_cb(RETRO_LOG_DEBUG, LOGPRE "PC:%06x Writing %04x to Sound CPU - mask %04x\n",activecpu_get_previouspc(),data,mem_mask);
100
101 if (!ACCESSING_LSB) data >>= 8;
102
103 switch (data)
104 {
105 case 0xfc: OKIM6295_set_bank_base(0, (0 * 0x40000)); break;
106 case 0xfd: OKIM6295_set_bank_base(0, (2 * 0x40000)); break;
107 case 0xfe: OKIM6295_set_bank_base(0, (1 * 0x40000)); break;
108 case 0xff: OKIM6295_set_bank_base(0, (3 * 0x40000)); break;
109 case 0x78: OKIM6295_data_0_w(0,data);
110 snd_sam[0]=00; snd_sam[1]=00; snd_sam[2]=00; snd_sam[3]=00;
111 break;
112 default: if (snd_new) /* Play new sample */
113 {
114 if ((data & 0x80) && (snd_sam[3] != snd_new))
115 {
116 log_cb(RETRO_LOG_DEBUG, LOGPRE "About to play sample %02x at vol %02x\n",snd_new,data);
117 if ((OKIM6295_status_0_r(0) & 0x08) != 0x08)
118 {
119 log_cb(RETRO_LOG_DEBUG, LOGPRE "Playing sample %02x at vol %02x\n",snd_new,data);
120 OKIM6295_data_0_w(0,snd_new);
121 OKIM6295_data_0_w(0,data);
122 }
123 snd_new = 00;
124 }
125 if ((data & 0x40) && (snd_sam[2] != snd_new))
126 {
127 log_cb(RETRO_LOG_DEBUG, LOGPRE "About to play sample %02x at vol %02x\n",snd_new,data);
128 if ((OKIM6295_status_0_r(0) & 0x04) != 0x04)
129 {
130 log_cb(RETRO_LOG_DEBUG, LOGPRE "Playing sample %02x at vol %02x\n",snd_new,data);
131 OKIM6295_data_0_w(0,snd_new);
132 OKIM6295_data_0_w(0,data);
133 }
134 snd_new = 00;
135 }
136 if ((data & 0x20) && (snd_sam[1] != snd_new))
137 {
138 log_cb(RETRO_LOG_DEBUG, LOGPRE "About to play sample %02x at vol %02x\n",snd_new,data);
139 if ((OKIM6295_status_0_r(0) & 0x02) != 0x02)
140 {
141 log_cb(RETRO_LOG_DEBUG, LOGPRE "Playing sample %02x at vol %02x\n",snd_new,data);
142 OKIM6295_data_0_w(0,snd_new);
143 OKIM6295_data_0_w(0,data);
144 }
145 snd_new = 00;
146 }
147 if ((data & 0x10) && (snd_sam[0] != snd_new))
148 {
149 log_cb(RETRO_LOG_DEBUG, LOGPRE "About to play sample %02x at vol %02x\n",snd_new,data);
150 if ((OKIM6295_status_0_r(0) & 0x01) != 0x01)
151 {
152 log_cb(RETRO_LOG_DEBUG, LOGPRE "Playing sample %02x at vol %02x\n",snd_new,data);
153 OKIM6295_data_0_w(0,snd_new);
154 OKIM6295_data_0_w(0,data);
155 }
156 snd_new = 00;
157 }
158 break;
159 }
160 else if (data > 0x80) /* New sample command */
161 {
162 log_cb(RETRO_LOG_DEBUG, LOGPRE "Next sample %02x\n",data);
163 snd_new = data;
164 break;
165 }
166 else /* Turn a channel off */
167 {
168 log_cb(RETRO_LOG_DEBUG, LOGPRE "Turning channel %02x off\n",data);
169 OKIM6295_data_0_w(0,data);
170 if (data & 0x40) snd_sam[3] = 00;
171 if (data & 0x20) snd_sam[2] = 00;
172 if (data & 0x10) snd_sam[1] = 00;
173 if (data & 0x08) snd_sam[0] = 00;
174 snd_new = 00;
175 break;
176 }
177 }
178 }
179
180 /* Memory Maps ****************************************************************
181
182 it doesn't seem able to read from fg/bg/spr/pal ram
183
184 */
185
MEMORY_READ16_START(kickgoal_readmem)186 static MEMORY_READ16_START( kickgoal_readmem )
187 { 0x000000, 0x0fffff, MRA16_ROM },
188 { 0x800000, 0x800001, input_port_0_word_r },
189 { 0x800002, 0x800003, input_port_1_word_r },
190 { 0x900006, 0x900007, kickgoal_eeprom_r },
191 { 0xa00000, 0xa03fff, MRA16_RAM }, /* FG Layer */
192 { 0xa04000, 0xa07fff, MRA16_RAM }, /* Higher BG Layer */
193 { 0xa08000, 0xa0bfff, MRA16_RAM }, /* Lower BG Layer */
194 { 0xa0c000, 0xa0ffff, MRA16_RAM }, /* more tilemap? */
195 { 0xc00000, 0xc007ff, MRA16_RAM }, /* Palette */
196 { 0xff0000, 0xffffff, MRA16_RAM },
197 MEMORY_END
198
199 static MEMORY_WRITE16_START( kickgoal_writemem )
200 { 0x000000, 0x0fffff, MWA16_ROM },
201 /* { 0x800004, 0x800005, soundlatch_word_w }, */
202 { 0x800004, 0x800005, actionhw_snd_w },
203 { 0x900000, 0x900005, kickgoal_eeprom_w },
204 { 0xa00000, 0xa03fff, kickgoal_fgram_w, &kickgoal_fgram }, /* FG Layer */
205 { 0xa04000, 0xa07fff, kickgoal_bgram_w, &kickgoal_bgram }, /* Higher BG Layer */
206 { 0xa08000, 0xa0bfff, kickgoal_bg2ram_w, &kickgoal_bg2ram }, /* Lower BG Layer */
207 { 0xa0c000, 0xa0ffff, MWA16_RAM }, /* more tilemap? */
208 { 0xa10000, 0xa1000f, MWA16_RAM, &kickgoal_scrram }, /* Scroll Registers */
209 { 0xb00000, 0xb007ff, MWA16_RAM, &spriteram16, &spriteram_size }, /* Sprites */
210 { 0xc00000, 0xc007ff, paletteram16_xxxxBBBBGGGGRRRR_word_w, &paletteram16 }, /* Palette */
211 { 0xff0000, 0xffffff, MWA16_RAM },
212 MEMORY_END
213
214 /* INPUT ports ***************************************************************/
215
216 INPUT_PORTS_START( kickgoal )
217 PORT_START
218 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
219 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
220 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
221 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
222 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
223 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
224 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
225 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
226
227 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
228 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
229 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
230 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
231 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
232 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
233 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
234 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
235
236 PORT_START
237 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
238 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
239 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
240 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
241 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
242 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
243 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
244 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
245
246 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
247 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
248 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
249 PORT_BITX(0x0800, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
250 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START1 )
251 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START2 )
252 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
253 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
254 INPUT_PORTS_END
255
256 /* GFX Decodes ***************************************************************/
257
258 static struct GfxLayout fg816_charlayout =
259 {
260 8,16,
261 RGN_FRAC(1,4),
262 4,
263 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
264 { 0, 1, 2, 3, 4, 5, 6, 7 },
265 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
266 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
267 16*8
268 };
269
270 static struct GfxLayout bg1632_charlayout =
271 {
272 16,32,
273 RGN_FRAC(1,4),
274 4,
275 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
276 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
277 { 0*16, 0*16, 1*16, 1*16, 2*16, 2*16, 3*16, 3*16, 4*16, 4*16, 5*16, 5*16, 6*16, 6*16, 7*16, 7*16,
278 8*16, 8*16, 9*16, 9*16, 10*16, 10*16, 11*16, 11*16, 12*16, 12*16, 13*16, 13*16, 14*16, 14*16, 15*16, 15*16 },
279 16*16
280 };
281
282 static struct GfxLayout bg3264_charlayout =
283 {
284 32,64,
285 RGN_FRAC(1,4),
286 4,
287 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
288 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
289 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
290 { 0*32, 0*32, 1*32, 1*32, 2*32, 2*32, 3*32, 3*32, 4*32, 4*32, 5*32, 5*32, 6*32, 6*32, 7*32, 7*32,
291 8*32, 8*32, 9*32, 9*32, 10*32, 10*32, 11*32, 11*32, 12*32, 12*32, 13*32, 13*32, 14*32, 14*32, 15*32, 15*32,
292 16*32, 16*32, 17*32, 17*32, 18*32, 18*32, 19*32, 19*32, 20*32, 20*32, 21*32, 21*32, 22*32, 22*32, 23*32, 23*32,
293 24*32, 24*32, 25*32, 25*32, 26*32, 26*32, 27*32, 27*32, 28*32, 28*32, 29*32, 29*32, 30*32, 30*32, 31*32, 31*32 },
294 32*32
295 };
296
297
298 static struct GfxDecodeInfo gfxdecodeinfo[] =
299 {
300 { REGION_GFX1, 0, &fg816_charlayout, 0x000, 0x40 },
301 { REGION_GFX1, 0, &bg1632_charlayout, 0x000, 0x40 },
302 { REGION_GFX1, 0, &bg3264_charlayout, 0x000, 0x40 },
303 { -1 } /* end of array */
304 };
305
306 static struct GfxLayout actionhw_fg88_alt_charlayout =
307 {
308 8,8,
309 RGN_FRAC(1,4),
310 4,
311 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
312 { 0, 1, 2, 3, 4, 5, 6, 7 },
313 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
314 8*8
315 };
316
317
318 static struct GfxLayout actionhw_bg1616_charlayout =
319 {
320 16,16,
321 RGN_FRAC(1,4),
322 4,
323 { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
324 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
325 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
326 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
327 16*16
328 };
329
330
331
332 static struct GfxDecodeInfo actionhw_gfxdecodeinfo[] =
333 {
334 { REGION_GFX1, 0, &actionhw_fg88_alt_charlayout, 0x000, 0x40 },
335 { REGION_GFX1, 0, &actionhw_bg1616_charlayout, 0x000, 0x40 },
336 { -1 } /* end of array */
337 };
338
339 static struct OKIM6295interface okim6295_interface =
340 {
341 1, /* 1 chip */
342 { 12000000/8/165 },/* Frequency */
343 { REGION_SOUND1 },
344 { 80 }
345 };
346
347 /* MACHINE drivers ***********************************************************/
348
349 static MACHINE_DRIVER_START( kickgoal )
350
351 /* basic machine hardware */
352 MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz */
MDRV_CPU_MEMORY(kickgoal_readmem,kickgoal_writemem)353 MDRV_CPU_MEMORY(kickgoal_readmem,kickgoal_writemem)
354 MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
355
356 /* pic16c57? */
357
358 MDRV_FRAMES_PER_SECOND(60)
359 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
360
361 MDRV_NVRAM_HANDLER(kickgoal)
362
363 /* video hardware */
364 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
365 MDRV_SCREEN_SIZE(64*8, 64*8)
366 MDRV_VISIBLE_AREA(9*8, 55*8-1, 4*8, 60*8-1)
367 MDRV_GFXDECODE(gfxdecodeinfo)
368 MDRV_PALETTE_LENGTH(1024)
369
370 MDRV_VIDEO_START(kickgoal)
371 MDRV_VIDEO_UPDATE(kickgoal)
372
373 /* sound hardware */
374 /* MDRV_SOUND_ADD(OKIM6295, okim6295_interface) */
375 MACHINE_DRIVER_END
376
377 static MACHINE_DRIVER_START( actionhw )
378
379 /* basic machine hardware */
380 MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz */
381 MDRV_CPU_MEMORY(kickgoal_readmem,kickgoal_writemem)
382 MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
383
384 MDRV_FRAMES_PER_SECOND(60)
385 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
386
387 MDRV_NVRAM_HANDLER(kickgoal) /* 93C46 really */
388
389 /* video hardware */
390 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
391 MDRV_SCREEN_SIZE(64*8, 64*8)
392 MDRV_VISIBLE_AREA(10*8+2, 54*8-1+2, 0*8, 30*8-1)
393 MDRV_GFXDECODE(actionhw_gfxdecodeinfo)
394 MDRV_PALETTE_LENGTH(1024)
395
396 MDRV_VIDEO_START(actionhw)
397 MDRV_VIDEO_UPDATE(actionhw)
398
399 /* sound hardware */
400 MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
401 MACHINE_DRIVER_END
402
403 /* Rom Loading ***************************************************************/
404
405 ROM_START( kickgoal )
406 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 code */
407 ROM_LOAD16_BYTE( "ic6", 0x000000, 0x40000, CRC(498ca792) SHA1(c638c3a1755870010c5961b58bcb02458ff4e238) )
408 ROM_LOAD16_BYTE( "ic5", 0x000001, 0x40000, CRC(d528740a) SHA1(d56a71004aabc839b0833a6bf383e5ef9d4948fa) )
409
410 ROM_REGION( 0x0800, REGION_CPU2, 0 ) /* sound? (missing) */
411 ROM_LOAD( "pic16c57", 0x0000, 0x0800, NO_DUMP )
412
413 ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
414 ROM_LOAD( "ic33", 0x000000, 0x80000, CRC(5038f52a) SHA1(22ed0e2c8a99056e73cff912731626689996a276) )
415 ROM_LOAD( "ic34", 0x080000, 0x80000, CRC(06e7094f) SHA1(e41b893ef91d541d2623d76ce6c69ecf4218c16d) )
416 ROM_LOAD( "ic35", 0x100000, 0x80000, CRC(ea010563) SHA1(5e474db372550e9d33f933ab00881a9b29a712d1) )
417 ROM_LOAD( "ic36", 0x180000, 0x80000, CRC(b6a86860) SHA1(73ab43830d5e62154bc8953615cdb397c7a742aa) )
418
419 ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* OKIM6295 samples */
420 ROM_LOAD( "ic13", 0x00000, 0x080000, CRC(c6cb56e9) SHA1(835773b3f0647d3c553180bcf10e57ad44d68353) ) /* BAD ADDRESS LINES (mask=010000) */
421 ROM_END
422
423 ROM_START( actionhw )
424 ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
425 ROM_LOAD16_BYTE( "2.ic6", 0x000000, 0x80000, CRC(2b71d58c) SHA1(3e58531fa56d41a3c7944e3beab4850907564a89) )
426 ROM_LOAD16_BYTE( "1.ic5", 0x000001, 0x80000, CRC(136b9711) SHA1(553f9fdd99bb9ce2e1492d0755633075e59ba587) )
427
428 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound? (missing) */
429 ROM_LOAD( "pic16c57", 0x0000, 0x0800, NO_DUMP )
430
431 ROM_REGION( 0x400000, REGION_GFX1, ROMREGION_DISPOSE )
432 ROM_LOAD( "4.ic29", 0x000000, 0x80000, CRC(df076744) SHA1(4b2c8e21a201e1491e4ba3cda8d71b51e0943431) )
433 ROM_LOAD( "5.ic33", 0x080000, 0x80000, CRC(8551fdd4) SHA1(f29bdfb75af7607534de171d7b3927419c00377c) )
434 ROM_LOAD( "6.ic30", 0x100000, 0x80000, CRC(5cb005a5) SHA1(d3a5ab8f9a520bfaa53fdf6145142ccba416fbb8) )
435 ROM_LOAD( "7.ic34", 0x180000, 0x80000, CRC(c2f7d284) SHA1(b3c3d6aa932c813affd667344ea5ddefa55f219b) )
436 ROM_LOAD( "8.ic31", 0x200000, 0x80000, CRC(50dffa47) SHA1(33da3b2cabb7b0e480158d343e876563bd0f0930) )
437 ROM_LOAD( "9.ic35", 0x280000, 0x80000, CRC(c1ea0370) SHA1(c836611e478d2bf9ae2a5d7e7665982c2b731189) )
438 ROM_LOAD( "10.ic32", 0x300000, 0x80000, CRC(5ee5db3e) SHA1(c79f84548ce5311acac478c5180330bf56485863) )
439 ROM_LOAD( "11.ic36", 0x380000, 0x80000, CRC(8d376b1e) SHA1(37f16b3237d9813a8d153ab5640252e7643f3b99) )
440
441 /* $00000-$20000 stays the same in all sound banks, */
442 /* the second half of the bank is the area that gets switched */
443 ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* OKIM6295 samples */
444 ROM_LOAD( "3.ic13", 0x00000, 0x40000, CRC(b8f6705d) SHA1(55116e14aba6dac7334e26f704b3e6b0b9f856c2) )
445 ROM_CONTINUE( 0x60000, 0x20000 )
446 ROM_CONTINUE( 0xa0000, 0x20000 )
447 ROM_COPY( REGION_SOUND1, 0x00000, 0x40000, 0x20000)
448 ROM_COPY( REGION_SOUND1, 0x00000, 0x80000, 0x20000)
449 ROM_COPY( REGION_SOUND1, 0x00000, 0xc0000, 0x20000) /* Last bank used in Test Mode */
450 ROM_END
451
452 /* GAME drivers **************************************************************/
453
454
455 DRIVER_INIT( kickgoal )
456 {
457 data16_t *rom = (data16_t *)memory_region(REGION_CPU1);
458
459 /* fix "bug" that prevents game from writing to EEPROM */
460 rom[0x12b0/2] = 0x0001;
461 }
462
463
464 GAMEX( 1995, actionhw,0, actionhw, kickgoal, 0, ROT0, "TCH", "Action Hollywood", GAME_IMPERFECT_SOUND )
465 GAMEX( 1995, kickgoal,0, kickgoal, kickgoal, kickgoal, ROT0, "TCH", "Kick Goal", GAME_NO_SOUND )
466