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