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