1 /***************************************************************************
2 
3 Time Pilot memory map (preliminary)
4 
5 driver by Nicola Salmoria
6 
7 Main processor memory map.
8 0000-5fff ROM
9 a000-a3ff Color RAM
10 a400-a7ff Video RAM
11 a800-afff RAM
12 b000-b7ff sprite RAM (only areas 0xb010 and 0xb410 are used).
13 
14 memory mapped ports:
15 
16 read:
17 c000      video scan line. This is used by the program to multiplex the cloud
18           sprites, drawing them twice offset by 128 pixels.
19 c200      DSW2
20 c300      IN0
21 c320      IN1
22 c340      IN2
23 c360      DSW1
24 
25 write:
26 c000      command for the audio CPU
27 c200      watchdog reset
28 c300      interrupt enable
29 c302      flip screen
30 c304      trigger interrupt on audio CPU
31 c308	  Protection ???  Stuffs in some values computed from ROM content
32 c30a	  coin counter 1
33 c30c	  coin counter 2
34 
35 interrupts:
36 standard NMI at 0x66
37 
38 SOUND BOARD:
39 same as Pooyan
40 
41 ***************************************************************************/
42 
43 #include "driver.h"
44 #include "vidhrdw/generic.h"
45 #include "sndhrdw/timeplt.h"
46 
47 
48 extern unsigned char *timeplt_videoram,*timeplt_colorram;
49 
50 READ_HANDLER( timeplt_scanline_r );
51 WRITE_HANDLER( timeplt_videoram_w );
52 WRITE_HANDLER( timeplt_colorram_w );
53 WRITE_HANDLER( timeplt_flipscreen_w );
54 VIDEO_START( timeplt );
55 PALETTE_INIT( timeplt );
56 VIDEO_UPDATE( timeplt );
57 INTERRUPT_GEN( timeplt_interrupt );
58 
59 
60 
WRITE_HANDLER(timeplt_coin_counter_w)61 static WRITE_HANDLER( timeplt_coin_counter_w )
62 {
63 	coin_counter_w(offset >> 1, data);
64 }
65 
READ_HANDLER(psurge_protection_r)66 static READ_HANDLER( psurge_protection_r )
67 {
68 	return 0x80;
69 }
70 
71 
72 
MEMORY_READ_START(readmem)73 static MEMORY_READ_START( readmem )
74 	{ 0x0000, 0x5fff, MRA_ROM },
75 	{ 0x6004, 0x6004, psurge_protection_r },	/* psurge only */
76 	{ 0xa000, 0xbfff, MRA_RAM },
77 	{ 0xc000, 0xc000, timeplt_scanline_r },
78 	{ 0xc200, 0xc200, input_port_4_r },	/* DSW2 */
79 	{ 0xc300, 0xc300, input_port_0_r },	/* IN0 */
80 	{ 0xc320, 0xc320, input_port_1_r },	/* IN1 */
81 	{ 0xc340, 0xc340, input_port_2_r },	/* IN2 */
82 	{ 0xc360, 0xc360, input_port_3_r },	/* DSW1 */
83 MEMORY_END
84 
85 static MEMORY_WRITE_START( writemem )
86 	{ 0x0000, 0x5fff, MWA_ROM },
87 	{ 0xa000, 0xa3ff, timeplt_colorram_w, &timeplt_colorram },
88 	{ 0xa400, 0xa7ff, timeplt_videoram_w, &timeplt_videoram },
89 	{ 0xa800, 0xafff, MWA_RAM },
90 	{ 0xb010, 0xb03f, MWA_RAM, &spriteram, &spriteram_size },
91 	{ 0xb410, 0xb43f, MWA_RAM, &spriteram_2 },
92 	{ 0xc000, 0xc000, soundlatch_w },
93 	{ 0xc200, 0xc200, watchdog_reset_w },
94 	{ 0xc300, 0xc300, interrupt_enable_w },
95 	{ 0xc302, 0xc302, timeplt_flipscreen_w },
96 	{ 0xc304, 0xc304, timeplt_sh_irqtrigger_w },
97 	{ 0xc30a, 0xc30c, timeplt_coin_counter_w },  /* c30b is not used */
98 MEMORY_END
99 
100 
101 INPUT_PORTS_START( timeplt )
102 	PORT_START	/* IN0 */
103 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
104 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
105 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
106 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
107 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
108 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
109 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
110 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
111 
112 	PORT_START	/* IN1 */
113 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
114 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
115 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
116 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
117 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
118 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
119 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
120 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
121 
122 	PORT_START	/* IN2 */
123 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
124 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
125 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
126 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
127 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
128 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
129 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
130 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
131 
132 	PORT_START	/* DSW0 */
133 	PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
134 	PORT_DIPSETTING(    0x02, DEF_STR( 4C_1C ) )
135 	PORT_DIPSETTING(    0x05, DEF_STR( 3C_1C ) )
136 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
137 	PORT_DIPSETTING(    0x04, DEF_STR( 3C_2C ) )
138 	PORT_DIPSETTING(    0x01, DEF_STR( 4C_3C ) )
139 	PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
140 	PORT_DIPSETTING(    0x03, DEF_STR( 3C_4C ) )
141 	PORT_DIPSETTING(    0x07, DEF_STR( 2C_3C ) )
142 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
143 	PORT_DIPSETTING(    0x06, DEF_STR( 2C_5C ) )
144 	PORT_DIPSETTING(    0x0d, DEF_STR( 1C_3C ) )
145 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
146 	PORT_DIPSETTING(    0x0b, DEF_STR( 1C_5C ) )
147 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_6C ) )
148 	PORT_DIPSETTING(    0x09, DEF_STR( 1C_7C ) )
149 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
150 	PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
151 	PORT_DIPSETTING(    0x20, DEF_STR( 4C_1C ) )
152 	PORT_DIPSETTING(    0x50, DEF_STR( 3C_1C ) )
153 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
154 	PORT_DIPSETTING(    0x40, DEF_STR( 3C_2C ) )
155 	PORT_DIPSETTING(    0x10, DEF_STR( 4C_3C ) )
156 	PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
157 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_4C ) )
158 	PORT_DIPSETTING(    0x70, DEF_STR( 2C_3C ) )
159 	PORT_DIPSETTING(    0xe0, DEF_STR( 1C_2C ) )
160 	PORT_DIPSETTING(    0x60, DEF_STR( 2C_5C ) )
161 	PORT_DIPSETTING(    0xd0, DEF_STR( 1C_3C ) )
162 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
163 	PORT_DIPSETTING(    0xb0, DEF_STR( 1C_5C ) )
164 	PORT_DIPSETTING(    0xa0, DEF_STR( 1C_6C ) )
165 	PORT_DIPSETTING(    0x90, DEF_STR( 1C_7C ) )
166 	PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
167 	PORT_START	/* DSW1 */
168 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
169 	PORT_DIPSETTING(    0x03, "3" )
170 	PORT_DIPSETTING(    0x02, "4" )
171 	PORT_DIPSETTING(    0x01, "5" )
172 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "255", IP_KEY_NONE, IP_JOY_NONE )
173 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
174 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
175 	PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
176 	PORT_DIPNAME( 0x08, 0x08, "Bonus" )
177 	PORT_DIPSETTING(    0x08, "10000 50000" )
178 	PORT_DIPSETTING(    0x00, "20000 60000" )
179 	PORT_DIPNAME( 0x70, 0x70, DEF_STR( Difficulty ) )
180 	PORT_DIPSETTING(    0x70, "1 (Easiest)" )
181 	PORT_DIPSETTING(    0x60, "2" )
182 	PORT_DIPSETTING(    0x50, "3" )
183 	PORT_DIPSETTING(    0x40, "4" )
184 	PORT_DIPSETTING(    0x30, "5 (Average)" )
185 	PORT_DIPSETTING(    0x20, "6" )
186 	PORT_DIPSETTING(    0x10, "7" )
187 	PORT_DIPSETTING(    0x00, "8 (Hardest)" )
188 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
189 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
190 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
191 INPUT_PORTS_END
192 
193 INPUT_PORTS_START( psurge )
194 	PORT_START	/* IN0 */
195 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
196 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
197 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
198 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
199 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
200 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
201 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
202 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
203 
204 	PORT_START	/* IN1 */
205 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
206 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
207 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
208 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
209 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
210 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
211 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
212 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
213 
214 	PORT_START	/* IN2 */
215 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
216 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
217 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
218 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
219 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
220 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
221 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
222 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
223 
224 	PORT_START /* DSW0 */
225 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
226 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
227 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
228 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
229 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
230 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
231 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
232 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
233 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
234 	PORT_DIPNAME( 0x08, 0x08, "Initial Energy" )
235 	PORT_DIPSETTING(    0x00, "4" )
236 	PORT_DIPSETTING(    0x08, "6" )
237 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
238 	PORT_DIPSETTING(    0x30, "3" )
239 	PORT_DIPSETTING(    0x20, "4" )
240 	PORT_DIPSETTING(    0x10, "5" )
241 	PORT_DIPSETTING(    0x00, "6" )
242 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
243 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
244 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
245 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
246 	PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
247 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
248 
249 	PORT_START /* DSW1 */
250 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
251 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
252 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
253 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
254 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
255 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
256 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
257 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) )
258 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
259 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
260 	PORT_BITX(0x10,     0x10, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Shots", IP_KEY_NONE, IP_JOY_NONE )
261 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
262 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
263 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
264 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
265 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
266 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
267 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
268 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
269 	PORT_DIPNAME( 0x80, 0x00, "Stop at Junctions" )
270 	PORT_DIPSETTING(    0x80, DEF_STR( No ) )
271 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
272 INPUT_PORTS_END
273 
274 
275 
276 static struct GfxLayout charlayout =
277 {
278 	8,8,	/* 8*8 characters */
279 	512,	/* 512 characters */
280 	2,	/* 2 bits per pixel */
281 	{ 4, 0 },
282 	{ 0, 1, 2, 3, 8*8+0,8*8+1,8*8+2,8*8+3 },
283 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
284 	16*8	/* every char takes 16 consecutive bytes */
285 };
286 static struct GfxLayout spritelayout =
287 {
288 	16,16,	/* 16*16 sprites */
289 	256,	/* 256 sprites */
290 	2,	/* 2 bits per pixel */
291 	{ 4, 0 },
292 	{ 0, 1, 2, 3,  8*8, 8*8+1, 8*8+2, 8*8+3,
293 			16*8+0, 16*8+1, 16*8+2, 16*8+3,  24*8+0, 24*8+1, 24*8+2, 24*8+3 },
294 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
295 			32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
296 	64*8	/* every sprite takes 64 consecutive bytes */
297 };
298 
299 
300 static struct GfxDecodeInfo gfxdecodeinfo[] =
301 {
302 	{ REGION_GFX1, 0, &charlayout,        0, 32 },
303 	{ REGION_GFX2, 0, &spritelayout,   32*4, 64 },
304 	{ -1 } /* end of array */
305 };
306 
307 
308 
309 static MACHINE_DRIVER_START( timeplt )
310 
311 	/* basic machine hardware */
312 	MDRV_CPU_ADD(Z80, 3072000)	/* 3.072 MHz (?) */
313 	MDRV_CPU_MEMORY(readmem,writemem)
314 	MDRV_CPU_VBLANK_INT(timeplt_interrupt,256)
315 
316 	MDRV_CPU_ADD(Z80,14318180/8)
317 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 1.789772727 MHz */						\
318 	MDRV_CPU_MEMORY(timeplt_sound_readmem,timeplt_sound_writemem)
319 
320 	MDRV_FRAMES_PER_SECOND(60)
321 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
322 
323 	/* video hardware */
324 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
325 	MDRV_SCREEN_SIZE(32*8, 32*8)
326 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
327 	MDRV_GFXDECODE(gfxdecodeinfo)
328 	MDRV_PALETTE_LENGTH(32)
329 	MDRV_COLORTABLE_LENGTH(32*4+64*4)
330 
331 	MDRV_PALETTE_INIT(timeplt)
332 	MDRV_VIDEO_START(timeplt)
333 	MDRV_VIDEO_UPDATE(timeplt)
334 
335 	/* sound hardware */
336 	MDRV_SOUND_ADD(AY8910, timeplt_ay8910_interface)
337 MACHINE_DRIVER_END
338 
339 
340 
341 /***************************************************************************
342 
343   Game driver(s)
344 
345 ***************************************************************************/
346 
347 ROM_START( timeplt )
348 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
349 	ROM_LOAD( "tm1",          0x0000, 0x2000, CRC(1551f1b9) SHA1(c72f30988ac00cbe6549b71c3bcb414511e8b997) )
350 	ROM_LOAD( "tm2",          0x2000, 0x2000, CRC(58636cb5) SHA1(ab517efa93ae7be780af55faea82a6e83edd828c) )
351 	ROM_LOAD( "tm3",          0x4000, 0x2000, CRC(ff4e0d83) SHA1(ef98a1abb45b22d7498a0aca520f43bbee248b22) )
352 
353 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
354 	ROM_LOAD( "tm7",          0x0000, 0x1000, CRC(d66da813) SHA1(408fca4515e8af84211df3e204c8776b2f8adb23) )
355 
356 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
357 	ROM_LOAD( "tm6",          0x0000, 0x2000, CRC(c2507f40) SHA1(07221875e3f81d9def67c57a7ccd82d52ce65e01) )
358 
359 	ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE )
360 	ROM_LOAD( "tm4",          0x0000, 0x2000, CRC(7e437c3e) SHA1(cbe2ccd2cd503af62f009cd5aab73aa7366230b1) )
361 	ROM_LOAD( "tm5",          0x2000, 0x2000, CRC(e8ca87b9) SHA1(5dd30d3fb9fd8cf9e6a8e37e7ea858c7fd038a7e) )
362 
363 	ROM_REGION( 0x0240, REGION_PROMS, 0 )
364 	ROM_LOAD( "timeplt.b4",   0x0000, 0x0020, CRC(34c91839) SHA1(f62e279e21fce171231d3139be7adabe1f4b8c2e) ) /* palette */
365 	ROM_LOAD( "timeplt.b5",   0x0020, 0x0020, CRC(463b2b07) SHA1(9ad275365eba4869f94749f39ff8705d92056a10) ) /* palette */
366 	ROM_LOAD( "timeplt.e9",   0x0040, 0x0100, CRC(4bbb2150) SHA1(678433b21aae1daa938e32d3293eeed529a42ef9) ) /* sprite lookup table */
367 	ROM_LOAD( "timeplt.e12",  0x0140, 0x0100, CRC(f7b7663e) SHA1(151bd2dff4e4ef76d6438c1ab2cae71f987b9dad) ) /* char lookup table */
368 ROM_END
369 
370 ROM_START( timepltc )
371 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
372 	ROM_LOAD( "cd1y",         0x0000, 0x2000, CRC(83ec72c2) SHA1(f3dbc8362f6bdad1baa65cf5d95611e79de381a4) )
373 	ROM_LOAD( "cd2y",         0x2000, 0x2000, CRC(0dcf5287) SHA1(c36628367e81ac07f5ace72b45ebb7140b6aa116) )
374 	ROM_LOAD( "cd3y",         0x4000, 0x2000, CRC(c789b912) SHA1(dead7b20a40769e48738fccc3a17e2266aac445d) )
375 
376 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
377 	ROM_LOAD( "tm7",          0x0000, 0x1000, CRC(d66da813) SHA1(408fca4515e8af84211df3e204c8776b2f8adb23) )
378 
379 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
380 	ROM_LOAD( "tm6",          0x0000, 0x2000, CRC(c2507f40) SHA1(07221875e3f81d9def67c57a7ccd82d52ce65e01) )
381 
382 	ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE )
383 	ROM_LOAD( "tm4",          0x0000, 0x2000, CRC(7e437c3e) SHA1(cbe2ccd2cd503af62f009cd5aab73aa7366230b1) )
384 	ROM_LOAD( "tm5",          0x2000, 0x2000, CRC(e8ca87b9) SHA1(5dd30d3fb9fd8cf9e6a8e37e7ea858c7fd038a7e) )
385 
386 	ROM_REGION( 0x0240, REGION_PROMS, 0 )
387 	ROM_LOAD( "timeplt.b4",   0x0000, 0x0020, CRC(34c91839) SHA1(f62e279e21fce171231d3139be7adabe1f4b8c2e) ) /* palette */
388 	ROM_LOAD( "timeplt.b5",   0x0020, 0x0020, CRC(463b2b07) SHA1(9ad275365eba4869f94749f39ff8705d92056a10) ) /* palette */
389 	ROM_LOAD( "timeplt.e9",   0x0040, 0x0100, CRC(4bbb2150) SHA1(678433b21aae1daa938e32d3293eeed529a42ef9) ) /* sprite lookup table */
390 	ROM_LOAD( "timeplt.e12",  0x0140, 0x0100, CRC(f7b7663e) SHA1(151bd2dff4e4ef76d6438c1ab2cae71f987b9dad) ) /* char lookup table */
391 ROM_END
392 
393 ROM_START( spaceplt )
394 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
395 	ROM_LOAD( "sp1",          0x0000, 0x2000, CRC(ac8ca3ae) SHA1(9781138becd17aa70e877138e126ebb1fbff6192) )
396 	ROM_LOAD( "sp2",          0x2000, 0x2000, CRC(1f0308ef) SHA1(dd88378fc4cefe473f310d4730268c98354a4a44) )
397 	ROM_LOAD( "sp3",          0x4000, 0x2000, CRC(90aeca50) SHA1(9c6fddfeafa84f5284ec8f7c9d46216b110badc1) )
398 
399 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
400 	ROM_LOAD( "tm7",          0x0000, 0x1000, CRC(d66da813) SHA1(408fca4515e8af84211df3e204c8776b2f8adb23) )
401 
402 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
403 	ROM_LOAD( "sp6",          0x0000, 0x2000, CRC(76caa8af) SHA1(f81bb73877d415a6587a32bddaad6db8a8fd4941) )
404 
405 	ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE )
406 	ROM_LOAD( "sp4",          0x0000, 0x2000, CRC(3781ce7a) SHA1(68bb73f67494c3b24f7fd0d79153c9793f4b3a5b) )
407 	ROM_LOAD( "tm5",          0x2000, 0x2000, CRC(e8ca87b9) SHA1(5dd30d3fb9fd8cf9e6a8e37e7ea858c7fd038a7e) )
408 
409 	ROM_REGION( 0x0240, REGION_PROMS, 0 )
410 	ROM_LOAD( "timeplt.b4",   0x0000, 0x0020, CRC(34c91839) SHA1(f62e279e21fce171231d3139be7adabe1f4b8c2e) ) /* palette */
411 	ROM_LOAD( "timeplt.b5",   0x0020, 0x0020, CRC(463b2b07) SHA1(9ad275365eba4869f94749f39ff8705d92056a10) ) /* palette */
412 	ROM_LOAD( "timeplt.e9",   0x0040, 0x0100, CRC(4bbb2150) SHA1(678433b21aae1daa938e32d3293eeed529a42ef9) ) /* sprite lookup table */
413 	ROM_LOAD( "timeplt.e12",  0x0140, 0x0100, CRC(f7b7663e) SHA1(151bd2dff4e4ef76d6438c1ab2cae71f987b9dad) ) /* char lookup table */
414 ROM_END
415 
416 ROM_START( psurge )
417 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
418 	ROM_LOAD( "p1",           0x0000, 0x2000, CRC(05f9ba12) SHA1(ad88838d1a0c64830281e425d4ad2498ba959098) )
419 	ROM_LOAD( "p2",           0x2000, 0x2000, CRC(3ff41576) SHA1(9bdbad31c65dff76942967b5a334407b0326f752) )
420 	ROM_LOAD( "p3",           0x4000, 0x2000, CRC(e8fe120a) SHA1(b6320c9cb1a67097692aa0de7d88b0dfb63dedd7) )
421 
422 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
423 	ROM_LOAD( "p6",           0x0000, 0x1000, CRC(b52d01fa) SHA1(9b6cf9ea51d3a87c174f34d42a4b1b5f38b48723) )
424 	ROM_LOAD( "p7",           0x1000, 0x1000, CRC(9db5c0ce) SHA1(b5bc1d89a7f7d7a0baae64390c37ee11f69a0e76) )
425 
426 	ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
427 	ROM_LOAD( "p4",           0x0000, 0x2000, CRC(26fd7f81) SHA1(eb282313a37d7d611bf90f9b0b527adee9ae283f) )
428 
429 	ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE )
430 	ROM_LOAD( "p5",           0x0000, 0x2000, CRC(6066ec8e) SHA1(7f1155cf8a2d63c0740a4b56f1e09e7dfc749302) )
431 	ROM_LOAD( "tm5",          0x2000, 0x2000, CRC(e8ca87b9) SHA1(5dd30d3fb9fd8cf9e6a8e37e7ea858c7fd038a7e) )
432 
433 	ROM_REGION( 0x0240, REGION_PROMS, 0 )
434 	ROM_LOAD( "timeplt.b4",   0x0000, 0x0020, BAD_DUMP CRC(34c91839) SHA1(f62e279e21fce171231d3139be7adabe1f4b8c2e)  ) /* palette */
435 	ROM_LOAD( "timeplt.b5",   0x0020, 0x0020, BAD_DUMP CRC(463b2b07) SHA1(9ad275365eba4869f94749f39ff8705d92056a10)  ) /* palette */
436 	ROM_LOAD( "timeplt.e9",   0x0040, 0x0100, BAD_DUMP CRC(4bbb2150) SHA1(678433b21aae1daa938e32d3293eeed529a42ef9)  ) /* sprite lookup table */
437 	ROM_LOAD( "timeplt.e12",  0x0140, 0x0100, BAD_DUMP CRC(f7b7663e) SHA1(151bd2dff4e4ef76d6438c1ab2cae71f987b9dad)  ) /* char lookup table */
438 ROM_END
439 
440 
441 
442 GAME( 1982, timeplt,  0,       timeplt, timeplt, 0, ROT90,  "Konami", "Time Pilot" )
443 GAME( 1982, timepltc, timeplt, timeplt, timeplt, 0, ROT90,  "Konami (Centuri license)", "Time Pilot (Centuri)" )
444 GAME( 1982, spaceplt, timeplt, timeplt, timeplt, 0, ROT90,  "bootleg", "Space Pilot" )
445 GAME( 1988, psurge,   0,       timeplt, psurge,  0, ROT270, "<unknown>", "Power Surge" )
446