1 /*
2 * Signetics 2650 CPU Games
3 *
4 * Zaccaria - The Invaders
5 * Zaccaria - Super Invader Attack
6 * Zaccaria - Dodgem
7 *
8 * mike@the-coates.com
9 */
10
11 #include "driver.h"
12 #include "artwork.h"
13 #include "vidhrdw/generic.h"
14 #include "cpu/s2650/s2650.h"
15
16 extern UINT8 *s2636ram;
17
18 extern WRITE_HANDLER( tinvader_videoram_w );
19 extern WRITE_HANDLER( zac_s2636_w );
20 extern WRITE_HANDLER( tinvader_sound_w );
21 extern READ_HANDLER( zac_s2636_r );
22 extern READ_HANDLER( tinvader_port_0_r );
23
24 extern VIDEO_START( tinvader );
25 extern VIDEO_UPDATE( tinvader );
26
27 #define WHITE MAKE_ARGB(0x04,0xff,0xff,0xff)
28 #define GREEN MAKE_ARGB(0x04,0x20,0xff,0x20)
29 #define PURPLE MAKE_ARGB(0x04,0xff,0x20,0xff)
30
31 OVERLAY_START( tinv2650_overlay )
32 OVERLAY_RECT( 0, 0, 720, 768, WHITE )
33 OVERLAY_RECT( 48, 0, 216, 768, GREEN )
34 OVERLAY_RECT( 0, 144, 48, 402, GREEN )
35 OVERLAY_RECT( 576, 0, 627, 768, PURPLE )
36 OVERLAY_END
37
MEMORY_READ_START(readmem)38 static MEMORY_READ_START( readmem )
39 { 0x0000, 0x17ff, MRA_ROM },
40 { 0x1800, 0x1bff, MRA_RAM },
41 { 0x1c00, 0x1cff, MRA_RAM },
42 { 0x1d00, 0x1dff, MRA_RAM },
43 { 0x1e80, 0x1e80, tinvader_port_0_r },
44 { 0x1e81, 0x1e81, input_port_1_r },
45 { 0x1e82, 0x1e82, input_port_2_r },
46 { 0x1e85, 0x1e85, input_port_4_r }, /* Dodgem Only */
47 { 0x1e86, 0x1e86, input_port_5_r }, /* Dodgem Only */
48 { 0x1f00, 0x1fff, zac_s2636_r }, /* S2636 Chip */
49 MEMORY_END
50
51
52 static MEMORY_WRITE_START( writemem )
53 { 0x0000, 0x17ff, MWA_ROM },
54 { 0x1800, 0x1bff, tinvader_videoram_w, &videoram },
55 { 0x1c00, 0x1cff, MWA_RAM },
56 { 0x1d00, 0x1dff, MWA_RAM },
57 { 0x1e80, 0x1e80, tinvader_sound_w },
58 { 0x1e86, 0x1e86, MWA_NOP }, /* Dodgem Only */
59 { 0x1f00, 0x1fff, zac_s2636_w, &s2636ram },
60 MEMORY_END
61
62 static PORT_READ_START( readport )
63 { S2650_SENSE_PORT, S2650_SENSE_PORT, input_port_3_r },
64 PORT_END
65
66 INPUT_PORTS_START( tinvader )
67
68 PORT_START /* 1E80 */
69 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
70 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
71 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
72 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
73 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )
74 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
75 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
76 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Missile-Background Collision */
77
78 PORT_START /* 1E81 */
79 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
80 PORT_DIPSETTING( 0x00, "3" )
81 PORT_DIPSETTING( 0x01, "4" )
82 PORT_DIPNAME( 0x02, 0x00, "Lightning Speed" ) /* Velocita Laser Inv */
83 PORT_DIPSETTING( 0x00, "Slow" )
84 PORT_DIPSETTING( 0x02, "Fast" )
85 PORT_DIPNAME( 0x1C, 0x04, DEF_STR( Coinage ) )
86 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
87 PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) )
88 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
89 PORT_DIPSETTING( 0x0C, DEF_STR( 1C_3C ) )
90 PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
91 PORT_DIPSETTING( 0x14, DEF_STR( 1C_5C ) )
92 PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
93 PORT_DIPSETTING( 0x1C, DEF_STR( 1C_7C ) )
94 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
95 PORT_DIPSETTING( 0x00, "1000" )
96 PORT_DIPSETTING( 0x20, "1500" )
97 PORT_DIPNAME( 0x40, 0x00, "Extended Play" )
98 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
99 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
100
101 PORT_START /* 1E82 */
102 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
103 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
104 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
105 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
106 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
107 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
108 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
109 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
110
111 PORT_START /* SENSE */
112 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
113
114 INPUT_PORTS_END
115
116 /* Almost identical, no number of bases selection */
117
118 INPUT_PORTS_START( sinvader )
119
120 PORT_START /* 1E80 */
121 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
122 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
123 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
124 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
125 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
126 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
127 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
128 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Missile-Background Collision */
129
130 PORT_START /* 1E81 */
131 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
132 PORT_DIPNAME( 0x02, 0x00, "Lightning Speed" ) /* Velocita Laser Inv */
133 PORT_DIPSETTING( 0x00, "Slow" )
134 PORT_DIPSETTING( 0x02, "Fast" )
135 PORT_DIPNAME( 0x1C, 0x04, DEF_STR( Coinage ) )
136 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
137 PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) )
138 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
139 PORT_DIPSETTING( 0x0C, DEF_STR( 1C_3C ) )
140 PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
141 PORT_DIPSETTING( 0x14, DEF_STR( 1C_5C ) )
142 PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
143 PORT_DIPSETTING( 0x1C, DEF_STR( 1C_7C ) )
144 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
145 PORT_DIPSETTING( 0x00, "1000" )
146 PORT_DIPSETTING( 0x20, "1500" )
147 PORT_DIPNAME( 0x40, 0x00, "Extended Play" )
148 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
149 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
150
151 PORT_START /* 1E82 */
152 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
153 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
154 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
155 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
156 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
157 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
158 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
159 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
160
161 PORT_START /* SENSE */
162 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
163
164 INPUT_PORTS_END
165
166 INPUT_PORTS_START( dodgem )
167
168 PORT_START /* 1E80 */
169 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
170 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
171 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
172 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
173 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
174 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
175 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
176 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Missile-Background Collision */
177
178 PORT_START /* 1E81 */
179 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
180 PORT_DIPSETTING( 0x00, "3" )
181 PORT_DIPSETTING( 0x01, "4" )
182 PORT_DIPNAME( 0x02, 0x00, "Time" )
183 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
184 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
185 PORT_DIPNAME( 0x1C, 0x04, DEF_STR( Coinage ) )
186 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
187 PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) )
188 PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
189 PORT_DIPSETTING( 0x0C, DEF_STR( 1C_3C ) )
190 PORT_DIPSETTING( 0x10, DEF_STR( 1C_4C ) )
191 PORT_DIPSETTING( 0x14, DEF_STR( 1C_5C ) )
192 PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
193 PORT_DIPSETTING( 0x1C, DEF_STR( 1C_7C ) )
194 PORT_DIPNAME( 0x20, 0x00, "Show High Scores" )
195 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
196 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
197 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
198 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
199 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
200 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
201 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
202 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
203
204 PORT_START /* 1E82 */
205 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
206 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
207 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
208 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
209 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
210 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
211 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
212 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
213
214 PORT_START /* SENSE */
215 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
216
217 PORT_START /* 1E85 */
218 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
219 PORT_DIPSETTING( 0x00, "Very Easy" )
220 PORT_DIPSETTING( 0x01, "Easy" )
221 PORT_DIPSETTING( 0x02, "Medium" )
222 PORT_DIPSETTING( 0x03, "Hard" )
223 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
224 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
225 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
226 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
227 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
228 PORT_DIPSETTING( 0x08, DEF_STR( On ) )
229 PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
230 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
231 PORT_DIPSETTING( 0x10, DEF_STR( On ) )
232 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
233 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
234 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
235 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
236 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
237 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
238 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
239 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
240 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
241
242 PORT_START /* 1E86 */
243 PORT_BITX( 0x01, 0x01, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Collision Detection", IP_KEY_NONE, IP_JOY_NONE )
244 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
245 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
246
247 INPUT_PORTS_END
248
249
250 static PALETTE_INIT( zac2650 )
251 {
252 palette_set_color(0,0x00,0x00,0x00); /* BLACK */
253 palette_set_color(1,0xff,0xff,0xff); /* WHITE */
254 colortable[0] = 0;
255 colortable[1] = 1;
256 colortable[2] = 0;
257 colortable[3] = 0;
258 }
259
260 /************************************************************************************************
261
262 Video is slightly odd on these zac boards
263
264 background is 256 x 240 pixels, but the sprite chips run at a different frequency, which means
265 that the output of 196x240 is stretched to fill the same screen space.
266
267 to 'properly' accomplish this, we set the screen up as 768x720 and do the background at 3 times
268 the size, and the sprites as 4 times the size - everything then matches up correctly.
269
270 ************************************************************************************************/
271
272
273 static struct GfxLayout tinvader_character =
274 {
275 24,24,
276 128,
277 1,
278 { 0 },
279 { 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7 },
280 { 0*8, 0*8, 0*8, 1*8, 1*8, 1*8, 2*8, 2*8, 2*8, 3*8, 3*8, 3*8, 4*8, 4*8, 4*8,
281 5*8, 5*8, 5*8, 6*8, 6*8, 6*8, 7*8, 7*8, 7*8 },
282 8*8
283 };
284
285
286 static struct GfxLayout s2636_character8 =
287 {
288 32,30,
289 16,
290 1,
291 { 0 },
292 { 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7 },
293 { 0*8, 0*8, 0*8, 1*8, 1*8, 1*8, 2*8, 2*8, 2*8, 3*8, 3*8, 3*8,
294 4*8, 4*8, 4*8, 5*8, 5*8, 5*8, 6*8, 6*8, 6*8, 7*8, 7*8, 7*8,
295 8*8, 8*8, 8*8, 9*8, 9*8, 9*8 } ,
296 8*8
297 };
298
299 static struct GfxLayout s2636_character16 =
300 {
301 64,60,
302 16,
303 1,
304 { 0 },
305 { 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,
306 4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7 },
307 { 0*8, 0*8, 0*8, 0*8, 0*8, 0*8, 1*8, 1*8, 1*8, 1*8, 1*8, 1*8,
308 2*8, 2*8, 2*8, 2*8, 2*8, 2*8, 3*8, 3*8, 3*8, 3*8, 3*8, 3*8,
309 4*8, 4*8, 4*8, 4*8, 4*8, 4*8, 5*8, 5*8, 5*8, 5*8, 5*8, 5*8,
310 6*8, 6*8, 6*8, 6*8, 6*8, 6*8, 7*8, 7*8, 7*8, 7*8, 7*8, 7*8,
311 8*8, 8*8, 8*8, 8*8, 8*8, 8*8, 9*8, 9*8, 9*8, 9*8, 9*8, 9*8 } ,
312 8*8
313 };
314
315 static struct GfxDecodeInfo tinvader_gfxdecodeinfo[] =
316 {
317 { REGION_GFX1, 0, &tinvader_character, 0, 2 },
318 { REGION_CPU1, 0x1F00, &s2636_character8, 0, 2 }, /* dynamic */
319 { REGION_CPU1, 0x1F00, &s2636_character16, 0, 2 }, /* dynamic */
320 { -1 } /* end of array */
321 };
322
323 static MACHINE_DRIVER_START( tinvader )
324
325 /* basic machine hardware */
326 MDRV_CPU_ADD(S2650, 3800000/4/3)
MDRV_CPU_MEMORY(readmem,writemem)327 MDRV_CPU_MEMORY(readmem,writemem)
328 MDRV_CPU_PORTS(readport,0)
329
330 MDRV_FRAMES_PER_SECOND(55)
331 MDRV_VBLANK_DURATION(1041)
332
333 /* video hardware */
334 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
335 MDRV_SCREEN_SIZE(30*24, 32*24)
336 MDRV_VISIBLE_AREA(0, 719, 0, 767)
337 MDRV_GFXDECODE(tinvader_gfxdecodeinfo)
338 MDRV_PALETTE_LENGTH(2)
339 MDRV_COLORTABLE_LENGTH(4)
340
341 MDRV_PALETTE_INIT(zac2650)
342 MDRV_VIDEO_START(tinvader)
343 MDRV_VIDEO_UPDATE(tinvader)
344
345 /* sound hardware */
346 MACHINE_DRIVER_END
347
348 WRITE_HANDLER( tinvader_sound_w )
349 {
350 /* sounds are NOT the same as space invaders */
351
352 log_cb(RETRO_LOG_DEBUG, LOGPRE "Register %x = Data %d\n",data & 0xfe,data & 0x01);
353
354 /* 08 = hit invader */
355 /* 20 = bonus (extra base) */
356 /* 40 = saucer */
357 /* 84 = fire */
358 /* 90 = die */
359 /* c4 = hit saucer */
360 }
361
362 ROM_START( sia2650 )
363 ROM_REGION( 0x2000, REGION_CPU1, 0 )
CRC(a85550a9)364 ROM_LOAD( "42_1.bin", 0x0000, 0x0800, CRC(a85550a9) SHA1(3f1e6b8e61894ff997e31b9c5ff819aa4678394e) )
365 ROM_LOAD( "44_2.bin", 0x0800, 0x0800, CRC(48d5a3ed) SHA1(7f6421ba8225d49c1038595517f31b076d566586) )
366 ROM_LOAD( "46_3.bin", 0x1000, 0x0800, CRC(d766e784) SHA1(88c113855c4cde8cefbe862d3e5abf80bd17aaa0) )
367
368 ROM_REGION( 0x400, REGION_GFX1, ROMREGION_DISPOSE )
369 ROM_LOAD( "06_inv.bin", 0x0000, 0x0400, CRC(7bfed23e) SHA1(f754f0a4d6c8f9812bf333c30fa433b63d49a750) )
370 ROM_END
371
372 ROM_START( tinv2650 )
373 ROM_REGION( 0x2000, REGION_CPU1, 0 )
374 ROM_LOAD( "42_1.bin", 0x0000, 0x0800, CRC(a85550a9) SHA1(3f1e6b8e61894ff997e31b9c5ff819aa4678394e) )
375 ROM_LOAD( "44_2t.bin", 0x0800, 0x0800, CRC(083c8621) SHA1(d9b33d532903b0e6dee2357b9e3b329856505a73) )
376 ROM_LOAD( "46_3t.bin", 0x1000, 0x0800, CRC(12c0934f) SHA1(9fd67d425c533b0e09b201301020639eb9e452f7) )
377
378 ROM_REGION( 0x400, REGION_GFX1, ROMREGION_DISPOSE )
379 ROM_LOAD( "06_inv.bin", 0x0000, 0x0400, CRC(7bfed23e) SHA1(f754f0a4d6c8f9812bf333c30fa433b63d49a750) )
380 ROM_END
381
382 ROM_START( dodgem )
383 ROM_REGION( 0x2000, REGION_CPU1, 0 )
384 ROM_LOAD( "rom1.bin", 0x0000, 0x0400, CRC(a327b57d) SHA1(a9cb17e60ab7b4ed9d5a9e7f8451a8f29bb7d00d) )
385 ROM_LOAD( "rom2.bin", 0x0400, 0x0400, CRC(2a06ec74) SHA1(34fd3cbb1ddadb81abde54046bf245e2285bb740) )
386 ROM_LOAD( "rom3.bin", 0x0800, 0x0400, CRC(e9ed656d) SHA1(a36ec04fd7cdf26aa7fa36e18cd44b159ed53906) )
387 ROM_LOAD( "rom4.bin", 0x0c00, 0x0400, CRC(ecbfd906) SHA1(89f921a3d69b30977cd09a62dff4be02e6604550) )
388 ROM_LOAD( "rom5.bin", 0x1000, 0x0400, CRC(bdae09fe) SHA1(76517d432d9bff5a2eea438f6edc3e04b889448a) )
389 ROM_LOAD( "rom6.bin", 0x1400, 0x0400, CRC(e131eacf) SHA1(6f5244a9d27b3c5696ed83843e46079d579f7b39) )
390
391 ROM_REGION( 0x400, REGION_GFX1, ROMREGION_DISPOSE )
392 ROM_LOAD( "93451.bin", 0x0000, 0x0400, CRC(004b26d2) SHA1(0b825510e7a8afa9db589f87ec93467ab8c73f93) )
393
394 /* unknown */
395 ROM_REGION( 0x0200, REGION_PROMS, 0 )
396 ROM_LOAD( "74s571", 0x0000, 0x0200, CRC(cc0b407e) SHA1(e675e3d7ff82e1cff9001e367620208bffa8b42f) )
397 ROM_END
398
399
400 static DRIVER_INIT( tinvader )
401 {
402 artwork_set_overlay(tinv2650_overlay);
403 }
404
405
406 GAMEX( 1978, sia2650, 0, tinvader, sinvader, 0, ROT270, "Zaccaria/Zelco", "Super Invader Attack", GAME_NO_SOUND )
407 GAMEX( 1978, tinv2650, sia2650, tinvader, tinvader, tinvader, ROT270, "Zaccaria/Zelco", "The Invaders", GAME_NO_SOUND )
408 GAMEX( 1979, dodgem, 0, tinvader, dodgem, 0, ROT0, "Zaccaria", "Dodgem", GAME_NO_SOUND )
409