1 /***************************************************************************
2
3 Space Force Memory Map
4
5 driver by Zsolt Vasvari
6
7
8 0000-3fff R ROM
9 4000-43ff R/W RAM
10 7000-7002 R input ports 0-2
11 7000 W sound command
12 7001 W sound CPU IRQ trigger on bit 3 falling edge
13 7002 W unknown
14 7008 W unknown
15 7009 W unknown
16 700a W unknown
17 700b W flip screen
18 700c W unknown
19 700d W unknown
20 700e W main CPU interrupt enable (it uses RST7.5)
21 700f W unknown
22 8000-83ff R/W bit 0-7 of character code
23 9000-93ff R/W attributes RAM
24 bit 0 - bit 8 of character code
25 bit 1-3 - unused
26 bit 4-6 - color
27 bit 7 - unused
28 a000-a3ff R/W X/Y scroll position of each character (can be scrolled up
29 to 7 pixels in each direction)
30
31
32 ***************************************************************************/
33
34 #include "driver.h"
35 #include "vidhrdw/generic.h"
36 #include "cpu/i8085/i8085.h"
37 #include "cpu/i8039/i8039.h"
38
39
40 extern unsigned char *spcforce_scrollram;
41
42 WRITE_HANDLER( spcforce_flip_screen_w );
43 VIDEO_UPDATE( spcforce );
44
45
46 static int spcforce_SN76496_latch;
47 static int spcforce_SN76496_select;
48
WRITE_HANDLER(spcforce_SN76496_latch_w)49 static WRITE_HANDLER( spcforce_SN76496_latch_w )
50 {
51 spcforce_SN76496_latch = data;
52 }
53
READ_HANDLER(spcforce_SN76496_select_r)54 static READ_HANDLER( spcforce_SN76496_select_r )
55 {
56 return spcforce_SN76496_select;
57 }
58
WRITE_HANDLER(spcforce_SN76496_select_w)59 static WRITE_HANDLER( spcforce_SN76496_select_w )
60 {
61 spcforce_SN76496_select = data;
62
63 if (~data & 0x40) SN76496_0_w(0, spcforce_SN76496_latch);
64 if (~data & 0x20) SN76496_1_w(0, spcforce_SN76496_latch);
65 if (~data & 0x10) SN76496_2_w(0, spcforce_SN76496_latch);
66 }
67
READ_HANDLER(spcforce_t0_r)68 static READ_HANDLER( spcforce_t0_r )
69 {
70 /* SN76496 status according to Al - not supported by MAME?? */
71 return rand() & 1;
72 }
73
74
WRITE_HANDLER(spcforce_soundtrigger_w)75 static WRITE_HANDLER( spcforce_soundtrigger_w )
76 {
77 cpu_set_irq_line(1, 0, (~data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
78 }
79
80
MEMORY_READ_START(readmem)81 static MEMORY_READ_START( readmem )
82 { 0x0000, 0x3fff, MRA_ROM },
83 { 0x4000, 0x43ff, MRA_RAM },
84 { 0x7000, 0x7000, input_port_0_r },
85 { 0x7001, 0x7001, input_port_1_r },
86 { 0x7002, 0x7002, input_port_2_r },
87 { 0x8000, 0x83ff, MRA_RAM },
88 { 0x9000, 0x93ff, MRA_RAM },
89 { 0xa000, 0xa3ff, MRA_RAM },
90 MEMORY_END
91
92 static MEMORY_WRITE_START( writemem )
93 { 0x0000, 0x3fff, MWA_ROM },
94 { 0x4000, 0x43ff, MWA_RAM },
95 { 0x7000, 0x7000, soundlatch_w },
96 { 0x7001, 0x7001, spcforce_soundtrigger_w },
97 { 0x700b, 0x700b, spcforce_flip_screen_w },
98 { 0x700e, 0x700e, interrupt_enable_w },
99 { 0x700f, 0x700f, MWA_NOP },
100 { 0x8000, 0x83ff, MWA_RAM, &videoram, &videoram_size },
101 { 0x9000, 0x93ff, MWA_RAM, &colorram },
102 { 0xa000, 0xa3ff, MWA_RAM, &spcforce_scrollram },
103 MEMORY_END
104
105 static MEMORY_READ_START( sound_readmem )
106 { 0x0000, 0x07ff, MRA_ROM },
107 MEMORY_END
108
109 static MEMORY_WRITE_START( sound_writemem )
110 { 0x0000, 0x07ff, MWA_ROM },
111 MEMORY_END
112
113 static PORT_READ_START( sound_readport )
114 { I8039_bus, I8039_bus, soundlatch_r },
115 { I8039_p2, I8039_p2, spcforce_SN76496_select_r },
116 { I8039_t0, I8039_t0, spcforce_t0_r },
117 PORT_END
118
119 static PORT_WRITE_START( sound_writeport )
120 { I8039_p1, I8039_p1, spcforce_SN76496_latch_w },
121 { I8039_p2, I8039_p2, spcforce_SN76496_select_w },
122 PORT_END
123
124
125 INPUT_PORTS_START( spcforce )
126 PORT_START /* DSW */
127 PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_A ) )
128 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
129 PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
130 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
131 PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) )
132 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coin_B ) )
133 PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ) )
134 PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
135 PORT_DIPNAME( 0x18, 0x08, DEF_STR( Lives ) )
136 PORT_DIPSETTING( 0x00, "2" )
137 PORT_DIPSETTING( 0x08, "3" )
138 PORT_DIPSETTING( 0x10, "4" )
139 PORT_DIPSETTING( 0x18, "5" )
140 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
141 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
142 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
143 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) /* probably unused */
144 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
145 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
146 PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
147 PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
148 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
149
150 PORT_START /* IN0 */
151 PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
152 PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
153 PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
154 PORT_BIT ( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
155 PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
156 PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_START2 )
157 PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_START1 )
158 PORT_BIT ( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
159
160 PORT_START /* IN1 */
161 PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL | IPF_2WAY )
162 PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
163 PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
164 PORT_BITX( 0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
165 PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
166 PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
167 PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_VBLANK )
168 PORT_BIT ( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_COCKTAIL | IPF_2WAY )
169 INPUT_PORTS_END
170
171 /* same as spcforce, but no cocktail mode */
172 INPUT_PORTS_START( spcforc2 )
173 PORT_START /* DSW */
174 PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_A ) )
175 PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
176 PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
177 PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
178 PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) )
179 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coin_B ) )
180 PORT_DIPSETTING( 0x00, DEF_STR( 1C_3C ) )
181 PORT_DIPSETTING( 0x04, DEF_STR( 1C_6C ) )
182 PORT_DIPNAME( 0x18, 0x08, DEF_STR( Lives ) )
183 PORT_DIPSETTING( 0x00, "2" )
184 PORT_DIPSETTING( 0x08, "3" )
185 PORT_DIPSETTING( 0x10, "4" )
186 PORT_DIPSETTING( 0x18, "5" )
187 PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
188 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
189 PORT_DIPSETTING( 0x20, DEF_STR( On ) )
190 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) /* probably unused */
191 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
192 PORT_DIPSETTING( 0x40, DEF_STR( On ) )
193 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* probably unused */
194 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
195 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
196
197 PORT_START /* IN0 */
198 PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
199 PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
200 PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
201 PORT_BIT ( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
202 PORT_BIT ( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
203 PORT_BIT ( 0x20, IP_ACTIVE_LOW, IPT_START2 )
204 PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_START1 )
205 PORT_BIT ( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
206
207 PORT_START /* IN1 */
208 PORT_BITX( 0x08, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
209 PORT_BIT ( 0x40, IP_ACTIVE_LOW, IPT_VBLANK )
210 INPUT_PORTS_END
211
212
213 static struct GfxLayout charlayout =
214 {
215 8,8, /* 8*8 chars */
216 512, /* 512 characters */
217 3, /* 3 bits per pixel */
218 { 2*512*8*8, 512*8*8, 0 }, /* The bitplanes are seperate */
219 { 0, 1, 2, 3, 4, 5, 6, 7},
220 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8},
221 8*8 /* every char takes 8 consecutive bytes */
222 };
223
224
225 static struct GfxDecodeInfo gfxdecodeinfo[] =
226 {
227 { REGION_GFX1, 0, &charlayout, 0, 8 },
228 { -1 } /* end of array */
229 };
230
231
232 /* 1-bit RGB palette */
233 static unsigned short colortable_source[] =
234 {
235 0, 1, 2, 3, 4, 5, 6, 7,
236 0, 0, 1, 2, 3, 4, 5, 6, /* not sure about these, but they are only used */
237 0, 7, 0, 1, 2, 3, 4, 5, /* to change the text color. During the game, */
238 0, 6, 7, 0, 1, 2, 3, 4, /* only color 0 is used, which is correct. */
239 0, 5, 6, 7, 0, 1, 2, 3,
240 0, 4, 5, 6, 7, 0, 1, 2,
241 0, 3, 4, 5, 6, 7, 0, 1,
242 0, 2, 3, 4, 5, 6, 7, 0
243 };
PALETTE_INIT(spcforce)244 static PALETTE_INIT( spcforce )
245 {
246 int i;
247 for (i = 0; i < 8; i++)
248 palette_set_color(i, (i & 1) * 0xff, ((i >> 1) & 1) * 0xff, ((i >> 2) & 1) * 0xff);
249 memcpy(colortable,colortable_source,sizeof(colortable_source));
250 }
251
252
253 static struct SN76496interface sn76496_interface =
254 {
255 3, /* 3 chips */
256 { 2000000, 2000000, 2000000 }, /* 8 MHz / 4 ?*/
257 { 100, 100, 100 }
258 };
259
260
261 static MACHINE_DRIVER_START( spcforce )
262
263 /* basic machine hardware */
264 MDRV_CPU_ADD(8085A, 4000000) /* 4.00 MHz??? */
265 MDRV_CPU_MEMORY(readmem,writemem)
266 MDRV_CPU_VBLANK_INT(irq3_line_hold,1)
267
268 MDRV_CPU_ADD(I8035,6144000/8)
269 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* divisor ??? */
270 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
271 MDRV_CPU_PORTS(sound_readport,sound_writeport)
272
273 MDRV_FRAMES_PER_SECOND(60)
274 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
275
276 /* video hardware */
277 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
278 MDRV_SCREEN_SIZE(32*8, 32*8)
279 MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
280 MDRV_GFXDECODE(gfxdecodeinfo)
281 MDRV_PALETTE_LENGTH(8)
282 MDRV_COLORTABLE_LENGTH(sizeof(colortable_source) / sizeof(colortable_source[0]))
283
284 MDRV_PALETTE_INIT(spcforce)
285 MDRV_VIDEO_START(generic_bitmapped)
286 MDRV_VIDEO_UPDATE(spcforce)
287
288 /* sound hardware */
289 MDRV_SOUND_ADD(SN76496, sn76496_interface)
290 MACHINE_DRIVER_END
291
292
293 /***************************************************************************
294
295 Game driver(s)
296
297 ***************************************************************************/
298 ROM_START( spcforce )
299 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
300 ROM_LOAD( "m1v4f.1a", 0x0000, 0x0800, CRC(7da0d1ed) SHA1(2ee145f590da557be057f181b4861014627872e7) )
301 ROM_LOAD( "m2v4f.1c", 0x0800, 0x0800, CRC(25605bff) SHA1(afda2884a00fdbc000191dd548fd8e34df3e2f49) )
302 ROM_LOAD( "m3v5f.2a", 0x1000, 0x0800, CRC(6f879366) SHA1(ef624619dbaad1f2adf4fab82e04bac117dbfac6) )
303 ROM_LOAD( "m4v5f.2c", 0x1800, 0x0800, CRC(7fbfabfa) SHA1(0d6bbdcc80e251aa0ebd12e66549afaf6d8ccb0e) )
304 /*0x2000 empty */
305 ROM_LOAD( "m6v4f.3c", 0x2800, 0x0800, CRC(12128e9e) SHA1(b2a113b419e11ca094f56ae93870df11690b119a) )
306 ROM_LOAD( "m7v4f.4a", 0x3000, 0x0800, CRC(978ad452) SHA1(fa84dcc6587403dd939da719a747d8c7332ed038) )
307 ROM_LOAD( "m8v4f.4c", 0x3800, 0x0800, CRC(f805c3cd) SHA1(78eb13b99aae895742b34ed56bee9313d3643de1) )
308
309 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound MCU */
310 ROM_LOAD( "spacefor.snd", 0x0000, 0x0800, CRC(8820913c) SHA1(90002cafdf5f32f916e5457e013ebe53405d5ca8) )
311
312 ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
313 ROM_LOAD( "rm1v2.6s", 0x0000, 0x0800, CRC(8e3490d7) SHA1(a5e47f953bb833c2bb769b266fff60f7a20c69a6) )
314 ROM_LOAD( "rm2v1.7s", 0x0800, 0x0800, CRC(fbbfa05a) SHA1(c737b216f47e14c069cb84b5dbcc5a79fcc13648) )
315 ROM_LOAD( "gm1v2.6p", 0x1000, 0x0800, CRC(4f574920) SHA1(05930a8ea5c6e05d01d1b4faabb3305aab44125c) )
316 ROM_LOAD( "gm2v1.7p", 0x1800, 0x0800, CRC(0cd89ce2) SHA1(adb101400eb00119930494e99629948248d99d2f) )
317 ROM_LOAD( "bm1v2.6m", 0x2000, 0x0800, CRC(130869ce) SHA1(588d6c9403d5fd966266b4f0333ee47b36c8b1d8) )
318 ROM_LOAD( "bm2v1.7m", 0x2800, 0x0800, CRC(472f0a9b) SHA1(a8a9e2aa62374cd3bd938b5cb5fb20face3114c3) )
319 ROM_END
320
321 ROM_START( spcforc2 )
322 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
323 ROM_LOAD( "spacefor.1a", 0x0000, 0x0800, CRC(ef6fdccb) SHA1(2fff28437597958b39a821f93ac30f32c24f50aa) )
324 ROM_LOAD( "spacefor.1c", 0x0800, 0x0800, CRC(44bd1cdd) SHA1(6dd5ae7a64079c61b63667f06e0d34dec48eac7c) )
325 ROM_LOAD( "spacefor.2a", 0x1000, 0x0800, CRC(fcbc7df7) SHA1(b6e89dbfc80d5d9dcf889f618a8278c182773a14) )
326 ROM_LOAD( "vm4", 0x1800, 0x0800, CRC(c5b073b9) SHA1(93b77c77488aa954c35880439be6c7629448a3ea) )
327 /*0x2000 empty */
328 ROM_LOAD( "spacefor.3c", 0x2800, 0x0800, CRC(9fd52301) SHA1(1ea5d5b888dd2f7ac6aab227c78b86c2f2f320da) )
329 ROM_LOAD( "spacefor.4a", 0x3000, 0x0800, CRC(89aefc0a) SHA1(0b56efa613bce972af4bbf145853bfc0cda60ef9) )
330 ROM_LOAD( "m8v4f.4c", 0x3800, 0x0800, CRC(f805c3cd) SHA1(78eb13b99aae895742b34ed56bee9313d3643de1) )
331
332 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound MCU */
333 ROM_LOAD( "spacefor.snd", 0x0000, 0x0800, CRC(8820913c) SHA1(90002cafdf5f32f916e5457e013ebe53405d5ca8) )
334
335 ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
336 ROM_LOAD( "spacefor.6s", 0x0000, 0x0800, CRC(848ae522) SHA1(deb28ba09556d04d9f6c906a163372f842b00c63) )
337 ROM_LOAD( "rm2v1.7s", 0x0800, 0x0800, CRC(fbbfa05a) SHA1(c737b216f47e14c069cb84b5dbcc5a79fcc13648) )
338 ROM_LOAD( "spacefor.6p", 0x1000, 0x0800, CRC(95446911) SHA1(843025d1c557156f73c2e9a1278c02738b69fb5d) )
339 ROM_LOAD( "gm2v1.7p", 0x1800, 0x0800, CRC(0cd89ce2) SHA1(adb101400eb00119930494e99629948248d99d2f) )
340 ROM_LOAD( "bm1v2.6m", 0x2000, 0x0800, CRC(130869ce) SHA1(588d6c9403d5fd966266b4f0333ee47b36c8b1d8) )
341 ROM_LOAD( "bm2v1.7m", 0x2800, 0x0800, CRC(472f0a9b) SHA1(a8a9e2aa62374cd3bd938b5cb5fb20face3114c3) )
342 ROM_END
343
344 ROM_START( meteor )
345 ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */
346 ROM_LOAD( "vm1", 0x0000, 0x0800, CRC(894fe9b1) SHA1(617e05523392e2ba2608ca13aa24d6601289fe87) )
347 ROM_LOAD( "vm2", 0x0800, 0x0800, CRC(28685a68) SHA1(f911a3ccb8d63cf82a6dc8f069f3f498e9081656) )
348 ROM_LOAD( "vm3", 0x1000, 0x0800, CRC(c88fb12a) SHA1(1eeb26caf7a1421ec2d570f71b8c4675ad7ea172) )
349 ROM_LOAD( "vm4", 0x1800, 0x0800, CRC(c5b073b9) SHA1(93b77c77488aa954c35880439be6c7629448a3ea) )
350 /*0x2000 empty */
351 ROM_LOAD( "vm6", 0x2800, 0x0800, CRC(9969ec43) SHA1(3ce067c34b84e9559f195e7ef9939a78070693b1) )
352 ROM_LOAD( "vm7", 0x3000, 0x0800, CRC(39f43ac2) SHA1(b45275759f4003a22a32dc04227a98908bd140a9) )
353 ROM_LOAD( "vm8", 0x3800, 0x0800, CRC(a0508de3) SHA1(75666a4e46b6c433f1c1f8e76c30fd087354097b) )
354
355 ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound MCU */
356 ROM_LOAD( "vm5", 0x0000, 0x0800, CRC(b14ccd57) SHA1(0349ec5d0ca7f98ffdd96d7bf01cf096fe547f7a) )
357
358 ROM_REGION( 0x3000, REGION_GFX1, ROMREGION_DISPOSE )
359 ROM_LOAD( "rm1v", 0x0000, 0x0800, CRC(d621fe96) SHA1(29b75333ea8103095a4d452636eea4a1055845e5) )
360 ROM_LOAD( "rm2v", 0x0800, 0x0800, CRC(b3981251) SHA1(b6743d121a6b3ad8e8beebe1faff2678b89e7d16) )
361 ROM_LOAD( "gm1v", 0x1000, 0x0800, CRC(d44617e8) SHA1(1cec7984cc5e3472c25c23f02179380c4a5b4076) )
362 ROM_LOAD( "gm2v", 0x1800, 0x0800, CRC(0997d945) SHA1(16eba77b14c62b2a0ebea47a28d4d5d21d7a2234) )
363 ROM_LOAD( "bm1v", 0x2000, 0x0800, CRC(cc97c890) SHA1(e852bfe9d4b2d31801a840c1bacdd4386a93a22f) )
364 ROM_LOAD( "bm2v", 0x2800, 0x0800, CRC(2858cf5c) SHA1(1313b4e4adda074499153e4a42bc2c6b41b0ec7e) )
365 ROM_END
366
367
368 GAMEX( 1980, spcforce, 0, spcforce, spcforce, 0, ROT270, "Venture Line", "Space Force", GAME_IMPERFECT_COLORS )
369 GAMEX( 19??, spcforc2, spcforce, spcforce, spcforc2, 0, ROT270, "Elcon (bootleg?)", "Space Force (set 2)", GAME_IMPERFECT_COLORS )
370 GAMEX( 1981, meteor, spcforce, spcforce, spcforc2, 0, ROT270, "Venture Line", "Meteoroids", GAME_IMPERFECT_COLORS )
371