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