1 /*
2 **	2xMC68000 + Z80
3 **	YM2151 + Custom PCM
4 **
5 **	Out Run
6 **	Super Hang-On
7 **	Super Hang-On Limited Edition
8 **	Turbo Out Run
9 */
10 
11 #include "driver.h"
12 #include "vidhrdw/generic.h"
13 #include "cpu/z80/z80.h"
14 #include "cpu/i8039/i8039.h"
15 #include "system16.h"
16 
set_fg_page(int data)17 static void set_fg_page( int data ){
18 	sys16_fg_page[0] = data>>12;
19 	sys16_fg_page[1] = (data>>8)&0xf;
20 	sys16_fg_page[2] = (data>>4)&0xf;
21 	sys16_fg_page[3] = data&0xf;
22 }
23 
set_bg_page(int data)24 static void set_bg_page( int data ){
25 	sys16_bg_page[0] = data>>12;
26 	sys16_bg_page[1] = (data>>8)&0xf;
27 	sys16_bg_page[2] = (data>>4)&0xf;
28 	sys16_bg_page[3] = data&0xf;
29 }
30 
set_fg_page1(int data)31 static void set_fg_page1( int data ){
32 	sys16_fg_page[1] = data>>12;
33 	sys16_fg_page[0] = (data>>8)&0xf;
34 	sys16_fg_page[3] = (data>>4)&0xf;
35 	sys16_fg_page[2] = data&0xf;
36 }
37 
set_bg_page1(int data)38 static void set_bg_page1( int data ){
39 	sys16_bg_page[1] = data>>12;
40 	sys16_bg_page[0] = (data>>8)&0xf;
41 	sys16_bg_page[3] = (data>>4)&0xf;
42 	sys16_bg_page[2] = data&0xf;
43 }
44 
45 #if 0
46 static void set_fg2_page( int data ){
47 	sys16_fg2_page[0] = data>>12;
48 	sys16_fg2_page[1] = (data>>8)&0xf;
49 	sys16_fg2_page[2] = (data>>4)&0xf;
50 	sys16_fg2_page[3] = data&0xf;
51 }
52 
53 static void set_bg2_page( int data ){
54 	sys16_bg2_page[0] = data>>12;
55 	sys16_bg2_page[1] = (data>>8)&0xf;
56 	sys16_bg2_page[2] = (data>>4)&0xf;
57 	sys16_bg2_page[3] = data&0xf;
58 }
59 #endif
60 
61 /* hang-on's accel/brake are really both analog controls, but I've added them
62 as digital as well to see what works better */
63 #define HANGON_DIGITAL_CONTROLS
64 
READ16_HANDLER(ho_io_x_r)65 static READ16_HANDLER( ho_io_x_r ){ return input_port_0_r( offset ); }
66 #ifdef HANGON_DIGITAL_CONTROLS
READ16_HANDLER(ho_io_y_r)67 static READ16_HANDLER( ho_io_y_r ){
68 	int data = input_port_1_r( offset );
69 
70 	switch(data & 3)
71 	{
72 		case 3:	return 0xffff;	// both
73 		case 2:	return 0x00ff;  // brake
74 		case 1:	return 0xff00;  // accel
75 		case 0:	return 0x0000;  // neither
76 	}
77 	return 0x0000;
78 }
79 #else
READ16_HANDLER(ho_io_y_r)80 static READ16_HANDLER( ho_io_y_r ){ return (input_port_1_r( offset ) << 8) + input_port_5_r( offset ); }
81 #endif
82 
83 //	outrun: generate_gr_screen(0x200,0x800,0,0,3,0x8000);
generate_gr_screen(int w,int bitmap_width,int skip,int start_color,int end_color,int source_size)84 static void generate_gr_screen(
85 	int w,int bitmap_width,int skip,
86 	int start_color,int end_color, int source_size )
87 {
88 	UINT8 *buf = malloc( source_size );
89 	UINT8 *buf_base = buf;
90 	if( buf ){
91 		UINT8 *gr = memory_region(REGION_GFX3);
92 		UINT8 *grr = NULL;
93 	    int i,j,k;
94 	    int center_offset=0;
95 		sys16_gr_bitmap_width = bitmap_width;
96 
97 		memcpy(buf,gr,source_size);
98 		memset(gr,0,256*bitmap_width);
99 
100 		if (w!=sys16_gr_bitmap_width){
101 			if (skip>0) // needs mirrored RHS
102 				grr=gr;
103 			else {
104 				center_offset= bitmap_width-w;
105 				gr+=center_offset/2;
106 			}
107 		}
108 
109 		for (i=0; i<256; i++){ // build gr_bitmap
110 			UINT8 last_bit;
111 			UINT8 color_data[4];
112 			color_data[0]=start_color;
113 			color_data[1]=start_color+1;
114 			color_data[2]=start_color+2;
115 			color_data[3]=start_color+3;
116 
117 			last_bit = ((buf[0]&0x80)==0)|(((buf[0x4000]&0x80)==0)<<1);
118 			for (j=0; j<w/8; j++){
119 				for (k=0; k<8; k++){
120 					UINT8 bit=((buf[0]&0x80)==0)|(((buf[0x4000]&0x80)==0)<<1);
121 					if (bit!=last_bit && bit==0 && i>1){ // color flipped to 0,advance color[0]
122 						if (color_data[0]+end_color <= end_color){
123 							color_data[0]+=end_color;
124 						}
125 						else{
126 							color_data[0]-=end_color;
127 						}
128 					}
129 					*gr++ = color_data[bit];
130 					last_bit=bit;
131 					buf[0] <<= 1; buf[0x4000] <<= 1;
132 				}
133 				buf++;
134 			}
135 
136 			if (grr!=NULL){ // need mirrored RHS
137 				const UINT8 *temp = gr-1-skip;
138 				for (j=0; j<w-skip; j++){
139 					*gr++ = *temp--;
140 				}
141 				for (j=0; j<skip; j++) *gr++ = 0;
142 			}
143 			else {
144 				gr+=center_offset;
145 			}
146 		}
147 
148 		i=1;
149 		while ( (1<<i) < sys16_gr_bitmap_width ) i++;
150 		sys16_gr_bitmap_width=i; // power of 2
151 		free(buf_base);
152 	}
153 }
154 
155 static data16_t coinctrl;
156 
WRITE16_HANDLER(sys16_3d_coinctrl_w)157 static WRITE16_HANDLER( sys16_3d_coinctrl_w )
158 {
159 	if( ACCESSING_LSB ){
160 		coinctrl = data&0xff;
161 		sys16_refreshenable = coinctrl & 0x10;
162 		coin_counter_w(0,coinctrl & 0x01);
163 		/* bit 6 is also used (0 in fantzone) */
164 
165 		/* Hang-On, Super Hang-On, Space Harrier, Enduro Racer */
166 		set_led_status(0,coinctrl & 0x04);
167 
168 		/* Space Harrier */
169 		set_led_status(1,coinctrl & 0x08);
170 	}
171 }
172 
173 #if 0
174 static WRITE16_HANDLER( sound_command_nmi_w ){
175 	if( ACCESSING_LSB ){
176 		soundlatch_w( 0,data&0xff );
177 		cpu_set_nmi_line(1, PULSE_LINE);
178 	}
179 }
180 #endif
181 
READ16_HANDLER(sys16_coinctrl_r)182 static READ16_HANDLER( sys16_coinctrl_r ){
183 	return coinctrl;
184 }
185 
186 #if 0
187 static WRITE16_HANDLER( sys16_coinctrl_w )
188 {
189 	if( ACCESSING_LSB ){
190 		coinctrl = data&0xff;
191 		sys16_refreshenable = coinctrl & 0x20;
192 		coin_counter_w(0,coinctrl & 0x01);
193 		set_led_status(0,coinctrl & 0x04);
194 		set_led_status(1,coinctrl & 0x08);
195 		/* bit 6 is also used (1 most of the time; 0 in dduxbl, sdi, wb3;
196 		   tturf has it normally 1 but 0 after coin insertion) */
197 		/* eswat sets bit 4 */
198 	}
199 }
200 #endif
201 
INTERRUPT_GEN(sys16_interrupt)202 static INTERRUPT_GEN( sys16_interrupt ){
203 	if(sys16_custom_irq) sys16_custom_irq();
204 	cpu_set_irq_line(cpu_getactivecpu(), 4, HOLD_LINE); /* Interrupt vector 4, used by VBlank */
205 }
206 
PORT_READ_START(sound_readport)207 static PORT_READ_START( sound_readport )
208 	{ 0x01, 0x01, YM2151_status_port_0_r },
209 	{ 0xc0, 0xc0, soundlatch_r },
210 PORT_END
211 
212 static PORT_WRITE_START( sound_writeport )
213 	{ 0x00, 0x00, YM2151_register_port_0_w },
214 	{ 0x01, 0x01, YM2151_data_port_0_w },
215 PORT_END
216 
217 static data16_t *shared_ram;
READ16_HANDLER(shared_ram_r)218 static READ16_HANDLER( shared_ram_r ){
219 	return shared_ram[offset];
220 }
WRITE16_HANDLER(shared_ram_w)221 static WRITE16_HANDLER( shared_ram_w ){
222 	COMBINE_DATA( &shared_ram[offset] );
223 }
224 
225 static unsigned char *sound_shared_ram;
READ16_HANDLER(sound_shared_ram_r)226 static READ16_HANDLER( sound_shared_ram_r )
227 {
228 	return (sound_shared_ram[offset*2] << 8) +
229 			sound_shared_ram[offset*2+1];
230 }
231 
WRITE16_HANDLER(sound_shared_ram_w)232 static WRITE16_HANDLER( sound_shared_ram_w )
233 {
234 	if( ACCESSING_LSB ){
235 		sound_shared_ram[offset*2+1] = data&0xff;
236 	}
237 	if( ACCESSING_MSB ){
238 		sound_shared_ram[offset*2] = data>>8;
239 	}
240 }
241 
READ_HANDLER(sound2_shared_ram_r)242 static READ_HANDLER( sound2_shared_ram_r ){
243 	return sound_shared_ram[offset];
244 }
WRITE_HANDLER(sound2_shared_ram_w)245 static WRITE_HANDLER( sound2_shared_ram_w ){
246 	sound_shared_ram[offset] = data;
247 }
248 
249 
250 ROM_START( shangon )
251 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code - protected */
CRC(e52721fe)252 	ROM_LOAD16_BYTE( "ic133", 0x000000, 0x10000, CRC(e52721fe) SHA1(21f0aa14d0cbda3d762bca86efe089646031aef5) )
253 	ROM_LOAD16_BYTE( "ic118", 0x000001, 0x10000, CRC(5fee09f6) SHA1(b97a08ba75d8c617aceff2b03c1f2bfcb16181ef) )
254 	ROM_LOAD16_BYTE( "ic132", 0x020000, 0x10000, CRC(5d55d65f) SHA1(d02d76b98d74746b078b0f49f0320b8be48e4c47) )
255 	ROM_LOAD16_BYTE( "ic117", 0x020001, 0x10000, CRC(b967e8c3) SHA1(00224b337b162daff03bbfabdcf8541025220d46) )
256 
257 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
258 	ROM_LOAD( "ic54",        0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) )
259 	ROM_LOAD( "ic55",        0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) )
260 	ROM_LOAD( "ic56",        0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) )
261 
262 	ROM_REGION( 0x0120000, REGION_GFX2, 0 ) /* sprites */
263 	ROM_LOAD16_BYTE( "ic8",	0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) )
264 //	ROM_RELOAD(     			0x100000, 0x010000 )	// twice?
265 	ROM_RELOAD(     			0x100001, 0x010000 )
266 	ROM_LOAD16_BYTE( "ic16",  0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) )
267 //	ROM_RELOAD(              	0x100000, 0x010000 )	// twice?
268 	ROM_RELOAD(              	0x100000, 0x010000 )
269 	ROM_LOAD16_BYTE( "ic7",   0x020001, 0x010000, CRC(25ebf2c5) SHA1(abcf673ae4e280417dd9f46d18c0ec7c0e4802ae) )
270 //	ROM_RELOAD(              	0x0e0000, 0x010000 )	// twice?
271 	ROM_RELOAD(              	0x0e0001, 0x010000 )
272 	ROM_LOAD16_BYTE( "ic15",  0x020000, 0x010000, CRC(6365d2e9) SHA1(688e2ba194e859f86cd3486c2575ebae257e975a) )
273 //	ROM_RELOAD(              	0x0e0000, 0x010000 )	// twice?
274 	ROM_RELOAD(              	0x0e0000, 0x010000 )
275 	ROM_LOAD16_BYTE( "ic6",   0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) )
276 	ROM_LOAD16_BYTE( "ic14",  0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) )
277 	ROM_LOAD16_BYTE( "ic5",   0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) )
278 	ROM_LOAD16_BYTE( "ic13",  0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) )
279 	ROM_LOAD16_BYTE( "ic4",   0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) )
280 	ROM_LOAD16_BYTE( "ic12",  0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) )
281 	ROM_LOAD16_BYTE( "ic3",   0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) )
282 	ROM_LOAD16_BYTE( "ic11",  0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) )
283 	ROM_LOAD16_BYTE( "ic2",   0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) )
284 	ROM_LOAD16_BYTE( "ic10",  0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) )
285 
286 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
287 	ROM_LOAD( "ic88", 0x0000, 0x08000, CRC(1254efa6) SHA1(997770ccdd776de6e335a6d8b1e15d200cbd4410) )
288 
289 	ROM_LOAD( "ic66", 0x10000, 0x08000, CRC(06f55364) SHA1(fd685795e12541e3d0059d383fab293b3980d247) )
290 	ROM_LOAD( "ic67", 0x18000, 0x08000, CRC(731f5cf8) SHA1(5a62a94e15a15d5470f32112e4b2b05675983720) )
291 	ROM_LOAD( "ic68", 0x20000, 0x08000, CRC(a60dabff) SHA1(bbef0fb0d7837cc7efc866226bfa2bd7fab06459) )
292 	ROM_LOAD( "ic69", 0x28000, 0x08000, CRC(473cc411) SHA1(04ca2d047eb59581cd5d76e0ac6eca8b19eef497) )
293 
294 	ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* second 68000 CPU  - protected */
295 	ROM_LOAD16_BYTE( "ic76", 0x0000, 0x10000, CRC(02be68db) SHA1(8c9f98ee49db54ee53b721ecf53f91737ae6cd73) )
296 	ROM_LOAD16_BYTE( "ic58", 0x0001, 0x10000, CRC(f13e8bee) SHA1(1c16c018f58f1fb49e240314a7e97a947087fad9) )
297 	ROM_LOAD16_BYTE( "ic75", 0x20000, 0x10000, CRC(1627c224) SHA1(76a308fc15e5ac52947fffadee38fa9b3c4b1e8a) )
298 	ROM_LOAD16_BYTE( "ic57", 0x20001, 0x10000, CRC(8cdbcde8) SHA1(0bcb4df96ee16db3dd4ce52fccd939f48a4bc1a0) )
299 
300 	ROM_REGION( 0x40000, REGION_GFX3, 0 ) /* Road Graphics  (region size should be gr_bitmapwidth*256, 0 )*/
301 	ROM_LOAD( "ic47", 0x0000, 0x8000, CRC(7836bcc3) SHA1(26f308bf96224311ddf685799d7aa29aac42dd2f) )
302 ROM_END
303 
304 ROM_START( shangonb )
305 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
306 	ROM_LOAD16_BYTE( "s-hangon.30", 0x000000, 0x10000, CRC(d95e82fc) SHA1(bc6cd0b0ac98a9c53f2e22ac086521704ab59e4d) )
307 	ROM_LOAD16_BYTE( "s-hangon.32", 0x000001, 0x10000, CRC(2ee4b4fb) SHA1(ba4042ab6e533c16c3cde848248d75e484be113f) )
308 	ROM_LOAD16_BYTE( "s-hangon.29", 0x020000, 0x8000, CRC(12ee8716) SHA1(8e798d23d22f85cd046641184d104c17b27995b2) )
309 	ROM_LOAD16_BYTE( "s-hangon.31", 0x020001, 0x8000, CRC(155e0cfd) SHA1(e51734351c887fe3920c881f57abdfbb7d075f57) )
310 
311 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
312 	ROM_LOAD( "ic54",        0x00000, 0x08000, CRC(260286f9) SHA1(dc7c8d2c6ef924a937328685eed19bda1c8b1819) )
313 	ROM_LOAD( "ic55",        0x08000, 0x08000, CRC(c609ee7b) SHA1(c6dacf81cbfe7e5df1f9a967cf571be1dcf1c429) )
314 	ROM_LOAD( "ic56",        0x10000, 0x08000, CRC(b236a403) SHA1(af02b8122794c083a66f2ab35d2c73b84b2df0be) )
315 
316 	ROM_REGION( 0x0120000, REGION_GFX2, 0 ) /* sprites */
317 	ROM_LOAD16_BYTE( "ic8",         0x000001, 0x010000, CRC(d6ac012b) SHA1(305023b1a0a9d84cfc081ffc2ad7578b53d562f2) )
318 //	ROM_RELOAD(       		          0x100000, 0x010000 )	// twice?
319 	ROM_RELOAD(       		          0x100001, 0x010000 )
320 	ROM_LOAD16_BYTE( "ic16",        0x000000, 0x010000, CRC(d9d83250) SHA1(f8ca3197edcdf53643a5b335c3c044ddc1310cd4) )
321 //	ROM_RELOAD(             		  0x100000, 0x010000 )	// twice?
322 	ROM_RELOAD(             		  0x100000, 0x010000 )
323 	ROM_LOAD16_BYTE( "s-hangon.20", 0x020001, 0x010000, CRC(eef23b3d) SHA1(2416fa9991afbdddf25d469082e53858289550db) )
324 //	ROM_RELOAD(           		      0x0e0000, 0x010000 )	// twice?
325 	ROM_RELOAD(           		      0x0e0001, 0x010000 )
326 	ROM_LOAD16_BYTE( "s-hangon.14", 0x020000, 0x010000, CRC(0f26d131) SHA1(0d8b6eb8b8aae0aa8f0fa0c31dc91ad0e610be3e) )
327 //	ROM_RELOAD(              		  0x0e0000, 0x010000 )	// twice?
328 	ROM_RELOAD(              		  0x0e0000, 0x010000 )
329 	ROM_LOAD16_BYTE( "ic6",         0x040001, 0x010000, CRC(8a57b8d6) SHA1(df1a31559dd2d1e7c2c9d800bf97526bdf3e84e6) )
330 	ROM_LOAD16_BYTE( "ic14",        0x040000, 0x010000, CRC(3aff8910) SHA1(4b41a49a7f02363424e814b37edce9a7a44a112e) )
331 	ROM_LOAD16_BYTE( "ic5",         0x060001, 0x010000, CRC(af473098) SHA1(a2afaba1cbf672949dc50e407b46d7e9ae183774) )
332 	ROM_LOAD16_BYTE( "ic13",        0x060000, 0x010000, CRC(80bafeef) SHA1(f01bcf65485e60f34e533295a896fca0b92e5b14) )
333 	ROM_LOAD16_BYTE( "ic4",         0x080001, 0x010000, CRC(03bc4878) SHA1(548fc58bcc620204e30fa12fa4c4f0a3f6a1e4c0) )
334 	ROM_LOAD16_BYTE( "ic12",        0x080000, 0x010000, CRC(274b734e) SHA1(906fa528659bc17c9b4744cec52f7096711adce8) )
335 	ROM_LOAD16_BYTE( "ic3",         0x0a0001, 0x010000, CRC(9f0677ed) SHA1(5964642b70bfad418da44f2d91476f887b021f74) )
336 	ROM_LOAD16_BYTE( "ic11",        0x0a0000, 0x010000, CRC(508a4701) SHA1(d17aea2aadc2e2cd65d81bf91feb3ef6923d5c0b) )
337 	ROM_LOAD16_BYTE( "ic2",         0x0c0001, 0x010000, CRC(b176ea72) SHA1(7ec0eb0f13398d014c2e235773ded00351edb3e2) )
338 	ROM_LOAD16_BYTE( "ic10",        0x0c0000, 0x010000, CRC(42fcd51d) SHA1(0eacb3527dc21746e5b901fcac83f2764a0f9e2c) )
339 
340 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
341 	ROM_LOAD( "s-hangon.03", 0x0000, 0x08000, CRC(83347dc0) SHA1(079bb750edd6372750a207764e8c84bb6abf2f79) )
342 
343 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
344 	ROM_LOAD( "s-hangon.02", 0x00000, 0x10000, CRC(da08ca2b) SHA1(2c94c127efd66f6cf86b25e2653637818a99aed1) )
345 	ROM_LOAD( "s-hangon.01", 0x10000, 0x10000, CRC(8b10e601) SHA1(75e9bcdd3f096be9bed672d61064b9240690deec) )
346 
347 	ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* second 68000 CPU */
348 	ROM_LOAD16_BYTE( "s-hangon.09", 0x00000, 0x10000, CRC(070c8059) SHA1(a18c5e9473b6634f6e7165300e39029335b41ba3) )
349 	ROM_LOAD16_BYTE( "s-hangon.05", 0x00001, 0x10000, CRC(9916c54b) SHA1(41a7c5a9bdb1e3feae8fadf1ac5f51fab6376157) )
350 	ROM_LOAD16_BYTE( "s-hangon.08", 0x20000, 0x10000, CRC(000ad595) SHA1(eb80e798159c09bc5142a7ea8b9b0f895976b0d4) )
351 	ROM_LOAD16_BYTE( "s-hangon.04", 0x20001, 0x10000, CRC(8f8f4af0) SHA1(1dac21b7df6ec6874d36a07e30de7129b7f7f33a) )
352 
353 	ROM_REGION( 0x40000, REGION_GFX3, 0 ) /* Road Graphics  (region size should be gr_bitmapwidth*256, 0 )*/
354 	ROM_LOAD( "s-hangon.26", 0x0000, 0x8000, CRC(1bbe4fc8) SHA1(30f7f301e4d10d3b254d12bf3d32e5371661a566) )
355 ROM_END
356 
357 // Outrun hardware
358 ROM_START( outrun )
359 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
360 	ROM_LOAD16_BYTE( "10380a", 0x000000, 0x10000, CRC(434fadbc) SHA1(83c861d331e69ef4f2452c313ae4b5ea9d8b7948) )
361 	ROM_LOAD16_BYTE( "10382a", 0x000001, 0x10000, CRC(1ddcc04e) SHA1(945d207d8d602d7fdb6d25f6b93c9c0b995e8d5a) )
362 	ROM_LOAD16_BYTE( "10381a", 0x020000, 0x10000, CRC(be8c412b) SHA1(bf3ff05bbf81bdd44567f3b9bb4919ed4a499624) )
363 	ROM_LOAD16_BYTE( "10383a", 0x020001, 0x10000, CRC(dcc586e7) SHA1(d6e1de6b562359574d94b88ce6101646c506e701) )
364 
365 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
366 	ROM_LOAD( "10268", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
367 	ROM_LOAD( "10232", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
368 	ROM_LOAD( "10267", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
369 	ROM_LOAD( "10231", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
370 	ROM_LOAD( "10266", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
371 	ROM_LOAD( "10230", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
372 
373 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
374 	ROM_LOAD( "10371", 0x00000, 0x20000, CRC(0a1c98de) SHA1(e683ab79bfc6f8c60974912f07ef8173b167f448) )
375 	ROM_LOAD( "10372", 0x20000, 0x20000, CRC(1640ad1f) SHA1(3223d536c61f349be8de9ee32fc210f61fe822e2) )
376 	ROM_LOAD( "10373", 0x40000, 0x20000, CRC(339f8e64) SHA1(0d79b584e9e6c838cb0a9d2e8a611913265a06d2) )
377 	ROM_LOAD( "10374", 0x60000, 0x20000, CRC(22744340) SHA1(0997687641b0fc5c81343220166777dd74cc12a8) )
378 	ROM_LOAD( "10375", 0x80000, 0x20000, CRC(62a472bd) SHA1(e753df3ad378e6d4e22d5978626fc2370826bcf0) )
379 	ROM_LOAD( "10376", 0xa0000, 0x20000, CRC(8337ace7) SHA1(6bb3739a730c8d026fe9a6e831fc7c9fc13eae4f) )
380 	ROM_LOAD( "10377", 0xc0000, 0x20000, CRC(c86daecb) SHA1(78f61038f54ca56aab1f73d662fbaf07e396075f) )
381 	ROM_LOAD( "10378", 0xe0000, 0x20000, CRC(544068fd) SHA1(54fe03d2d80548ebba9c2578ece5d0f89593cb3e) )
382 
383 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
384 	ROM_LOAD( "10187",       0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
385 
386 	ROM_REGION( 0x38000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
387 	ROM_LOAD( "10193",       0x00000, 0x8000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
388 	ROM_RELOAD(              0x30000, 0x8000 ) // twice??
389 	ROM_LOAD( "10192",       0x08000, 0x8000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
390 	ROM_LOAD( "10191",       0x10000, 0x8000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
391 	ROM_LOAD( "10190",       0x18000, 0x8000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
392 	ROM_LOAD( "10189",       0x20000, 0x8000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
393 	ROM_LOAD( "10188",       0x28000, 0x8000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
394 
395 	ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* second 68000 CPU */
396 	ROM_LOAD16_BYTE( "10327a", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
397 	ROM_LOAD16_BYTE( "10329a", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
398 	ROM_LOAD16_BYTE( "10328a", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
399 	ROM_LOAD16_BYTE( "10330a", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
400 
401 	ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* Road Graphics  (region size should be gr_bitmapwidth*256, 0 )*/
402 	ROM_LOAD( "10185", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
403 ROM_END
404 
405 ROM_START( outruna )
406 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
407 	ROM_LOAD16_BYTE( "10380b", 0x000000, 0x10000, CRC(1f6cadad) SHA1(31e870f307f44eb4f293b607123b623beee2bc3c) )
408 	ROM_LOAD16_BYTE( "10382b", 0x000001, 0x10000, CRC(c4c3fa1a) SHA1(69236cf9f27691dee290c79db1fc9b5e73ea77d7) )
409 	ROM_LOAD16_BYTE( "10381a", 0x020000, 0x10000, CRC(be8c412b) SHA1(bf3ff05bbf81bdd44567f3b9bb4919ed4a499624) )
410 	ROM_LOAD16_BYTE( "10383b", 0x020001, 0x10000, CRC(10a2014a) SHA1(1970895145ad8b5735f66ed8c837d9d453ce9b23) )
411 
412 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
413 	ROM_LOAD( "10268", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
414 	ROM_LOAD( "10232", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
415 	ROM_LOAD( "10267", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
416 	ROM_LOAD( "10231", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
417 	ROM_LOAD( "10266", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
418 	ROM_LOAD( "10230", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
419 
420 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
421 	ROM_LOAD( "10371", 0x00000, 0x20000, CRC(0a1c98de) SHA1(e683ab79bfc6f8c60974912f07ef8173b167f448) )
422 	ROM_LOAD( "10372", 0x20000, 0x20000, CRC(1640ad1f) SHA1(3223d536c61f349be8de9ee32fc210f61fe822e2) )
423 	ROM_LOAD( "10373", 0x40000, 0x20000, CRC(339f8e64) SHA1(0d79b584e9e6c838cb0a9d2e8a611913265a06d2) )
424 	ROM_LOAD( "10374", 0x60000, 0x20000, CRC(22744340) SHA1(0997687641b0fc5c81343220166777dd74cc12a8) )
425 	ROM_LOAD( "10375", 0x80000, 0x20000, CRC(62a472bd) SHA1(e753df3ad378e6d4e22d5978626fc2370826bcf0) )
426 	ROM_LOAD( "10376", 0xa0000, 0x20000, CRC(8337ace7) SHA1(6bb3739a730c8d026fe9a6e831fc7c9fc13eae4f) )
427 	ROM_LOAD( "10377", 0xc0000, 0x20000, CRC(c86daecb) SHA1(78f61038f54ca56aab1f73d662fbaf07e396075f) )
428 	ROM_LOAD( "10378", 0xe0000, 0x20000, CRC(544068fd) SHA1(54fe03d2d80548ebba9c2578ece5d0f89593cb3e) )
429 
430 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
431 	ROM_LOAD( "10187",       0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
432 
433 	ROM_REGION( 0x38000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
434 	ROM_LOAD( "10193",       0x00000, 0x8000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
435 	ROM_RELOAD(              0x30000, 0x8000 ) // twice??
436 	ROM_LOAD( "10192",       0x08000, 0x8000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
437 	ROM_LOAD( "10191",       0x10000, 0x8000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
438 	ROM_LOAD( "10190",       0x18000, 0x8000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
439 	ROM_LOAD( "10189",       0x20000, 0x8000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
440 	ROM_LOAD( "10188",       0x28000, 0x8000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
441 
442 	ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* second 68000 CPU */
443 	ROM_LOAD16_BYTE( "10327a", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
444 	ROM_LOAD16_BYTE( "10329a", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
445 	ROM_LOAD16_BYTE( "10328a", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
446 	ROM_LOAD16_BYTE( "10330a", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
447 
448 	ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* Road Graphics  (region size should be gr_bitmapwidth*256, 0 )*/
449 	ROM_LOAD( "10185", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
450 ROM_END
451 
452 
453 ROM_START( outrunb )
454 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
455 	ROM_LOAD16_BYTE( "orun_mn.rom", 0x000000, 0x10000, CRC(cddceea2) SHA1(34cb4ca61c941e96e585f3cd2aed79bdde67f8eb) )
456 	ROM_LOAD16_BYTE( "orun_ml.rom", 0x000001, 0x10000, CRC(9cfc07d5) SHA1(b1b5992ff99e4158bb008684e694e088a4b282c6) )
457 	ROM_LOAD16_BYTE( "orun_mm.rom", 0x020000, 0x10000, CRC(3092d857) SHA1(8ebfeab9217b80a7983a4f8eb7bb7d3387d791b3) )
458 	ROM_LOAD16_BYTE( "orun_mk.rom", 0x020001, 0x10000, CRC(30a1c496) SHA1(734c82930197e6e8cd2bea145aedda6b3c1145d0) )
459 
460 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
461 	ROM_LOAD( "10268", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
462 	ROM_LOAD( "10232", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
463 	ROM_LOAD( "10267", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
464 	ROM_LOAD( "10231", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
465 	ROM_LOAD( "10266", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
466 	ROM_LOAD( "10230", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
467 
468 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
469 	ROM_LOAD( "orun_1.rom", 	0x00000, 0x10000, CRC(77377e00) SHA1(4f376b05692f33d529f4c058dac989136c808ca1) )
470 	ROM_LOAD( "orun_17.rom", 	0x10000, 0x10000, CRC(4f784236) SHA1(1fb610fd29d3ddd8c5d4892ae215386b18552e6f) )
471 	ROM_LOAD( "orun_2.rom", 	0x20000, 0x10000, CRC(2c0e7277) SHA1(cf14d1ca1fba2e2687998c04ad2ab8c629917412) )
472 	ROM_LOAD( "orun_18.rom", 	0x30000, 0x10000, CRC(8d459356) SHA1(143914b1ac074708fed1d89072f915424aeb841e) )
473 	ROM_LOAD( "orun_3.rom", 	0x40000, 0x10000, CRC(69ecc975) SHA1(3560e9a31fc71e263a6ff61224b8db2b17836075) )
474 	ROM_LOAD( "orun_19.rom", 	0x50000, 0x10000, CRC(ee4f7154) SHA1(3a84c1b19d9dfcd5310e9cee90c0d4562a4a7786) )
475 	ROM_LOAD( "orun_4.rom", 	0x60000, 0x10000, CRC(54761e57) SHA1(dc0fc645eb998675ab9fe683d63d4ee57ae23693) )
476 	ROM_LOAD( "orun_20.rom",	0x70000, 0x10000, CRC(c2825654) SHA1(566ecb6e3dc76300351e54e4c0f24b9c2a6c710c) )
477 	ROM_LOAD( "orun_5.rom", 	0x80000, 0x10000, CRC(b6a8d0e2) SHA1(6184700dbe2c8c9c91f220e246501b7a865e4a05) )
478 	ROM_LOAD( "orun_21.rom", 	0x90000, 0x10000, CRC(e9880aa3) SHA1(cc47f631e758bd856bbc6d010fe230f9b1ed29de) )
479 	ROM_LOAD( "orun_6.rom", 	0xa0000, 0x10000, CRC(a00d0676) SHA1(c2ab29a7489c6f774ce26ef023758215ea3f7050) )
480 	ROM_LOAD( "orun_22.rom",	0xb0000, 0x10000, CRC(ef7d06fe) SHA1(541b5ba45f4140e2cc29a9da2592b476d414af5d) )
481 	ROM_LOAD( "orun_7.rom", 	0xc0000, 0x10000, CRC(d632d8a2) SHA1(27ca6faaa073bd01b2be959dba0359f93e8c1ec1) )
482 	ROM_LOAD( "orun_23.rom", 	0xd0000, 0x10000, CRC(dc286dc2) SHA1(eaa245b81f8a324988f617467fc3134a39b59c65) )
483 	ROM_LOAD( "orun_8.rom", 	0xe0000, 0x10000, CRC(da398368) SHA1(115b2881d2d5ddeda2ce82bb209a2c0b4acfcae4) )
484 	ROM_LOAD( "orun_24.rom",	0xf0000, 0x10000, CRC(1222af9f) SHA1(2364bd54cbe21dd688efff32e93bf154546c93d6) )
485 
486 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
487 	ROM_LOAD( "orun_ma.rom", 0x00000, 0x8000, CRC(a3ff797a) SHA1(d97318a0602965cb5059c69a68609691d55a8e41) )
488 
489 	ROM_REGION( 0x38000, REGION_SOUND1, 0 ) /* Sega PCM sound data */
490 	ROM_LOAD( "10193",       0x00000, 0x8000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
491 	ROM_RELOAD(              0x30000, 0x8000 ) // twice??
492 	ROM_LOAD( "10192",       0x08000, 0x8000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
493 	ROM_LOAD( "10191",       0x10000, 0x8000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
494 	ROM_LOAD( "10190",       0x18000, 0x8000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
495 	ROM_LOAD( "10189",       0x20000, 0x8000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
496 	ROM_LOAD( "10188",       0x28000, 0x8000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
497 
498 	ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* second 68000 CPU */
499 	ROM_LOAD16_BYTE( "orun_mj.rom", 0x00000, 0x10000, CRC(d7f5aae0) SHA1(0f9b693f078cdbbfeade5a373a94a20110d586ca) )
500 	ROM_LOAD16_BYTE( "orun_mh.rom", 0x00001, 0x10000, CRC(88c2e78f) SHA1(198cab9133345e4529f7fb52c29974c9a1a84933) )
501 	ROM_LOAD16_BYTE( "10328a",      0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
502 	ROM_LOAD16_BYTE( "orun_mg.rom", 0x20001, 0x10000, CRC(74c5fbec) SHA1(a44f1477d830fdb4d6c29351da94776843e5d3e1) )
503 
504 	ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* Road Graphics  (region size should be gr_bitmapwidth*256, 0 )*/
505 	ROM_LOAD( "orun_me.rom", 0x0000, 0x8000, CRC(666fe754) SHA1(606090db53d658d7b04dca4748014a411e12f259) )
506 
507 //	ROM_LOAD( "orun_mf.rom", 0x0000, 0x8000, CRC(ed5bda9c) )	//??
508 ROM_END
509 
510 // Turbo Outrun
511 
512 ROM_START( toutrun )
513 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
514 // custom cpu 317-0106
515 	ROM_LOAD16_BYTE( "epr12397.133", 0x000000, 0x10000, CRC(e4b57d7d) SHA1(62be55356c82b38ebebcc87a5458e23300019339) )
516 	ROM_LOAD16_BYTE( "epr12396.118", 0x000001, 0x10000, CRC(5e7115cb) SHA1(02c9ec91d9afb424e5045671ab0b5499181728c9) )
517 	ROM_LOAD16_BYTE( "epr12399.132", 0x020000, 0x10000, CRC(62c77b1b) SHA1(004803c68cb1b3e414296ffbf50dc3b33b9ffb9a) )
518 	ROM_LOAD16_BYTE( "epr12398.117", 0x020001, 0x10000, CRC(18e34520) SHA1(3f10ecb809106b82fd44fd6244d8d8e7f1c8e08d) )
519 	ROM_LOAD16_BYTE( "epr12293.131", 0x040000, 0x10000, CRC(f4321eea) SHA1(64334acc82c14bb58b7d51719f34fd81cfb9fc6b) )
520 	ROM_LOAD16_BYTE( "epr12292.116", 0x040001, 0x10000, CRC(51d98af0) SHA1(6e7115706bfafb687faa23d55d4a8c8e498a4df2) )
521 
522 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
523 	ROM_LOAD( "opr12323.102", 0x00000, 0x10000, CRC(4de43a6f) SHA1(68909338e1f192ac2699c8a8d24c3f46502dd019) )
524 	ROM_LOAD( "opr12324.103", 0x10000, 0x10000, CRC(24607a55) SHA1(69033f2281cd42e88233c23d809b73607fe54853) )
525 	ROM_LOAD( "opr12325.104", 0x20000, 0x10000, CRC(1405137a) SHA1(367db88d36852e35c5e839f692be5ea8c8e072d2) )
526 
527 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
528 	ROM_LOAD16_BYTE( "opr12307.9",  0x00001, 0x10000, CRC(437dcf09) SHA1(0022ee4d1c3698f77271e570cef98a8a1e5c5d6a) )
529 	ROM_LOAD16_BYTE( "opr12308.10", 0x00000, 0x10000, CRC(0de70cc2) SHA1(c03f8f8cda72daf64af2878bf254840ac6dd17eb) )
530 	ROM_LOAD16_BYTE( "opr12309.11", 0x20001, 0x10000, CRC(deb8c242) SHA1(c05d8ced4eafae52c4795fb1471cd66f5903d1aa) )
531 	ROM_LOAD16_BYTE( "opr12310.12", 0x20000, 0x10000, CRC(45cf157e) SHA1(5d0be2a374a53ea1fe0ba2bf9b2173e96de1eb51) )
532 	ROM_LOAD16_BYTE( "opr12311.13", 0x40001, 0x10000, CRC(ae2bd639) SHA1(64bb60ae7e3f87fbbce00106ba65c4e6fc1af0e4) )
533 	ROM_LOAD16_BYTE( "opr12312.14", 0x40000, 0x10000, CRC(626000e7) SHA1(4a7f9e76dd76a3dc56b8257149bc94be3f4f2e87) )
534 	ROM_LOAD16_BYTE( "opr12313.15", 0x60001, 0x10000, CRC(52870c37) SHA1(3a6836a46d94c0f9115800d206410252a1134c57) )
535 	ROM_LOAD16_BYTE( "opr12314.16", 0x60000, 0x10000, CRC(40c461ea) SHA1(7bed8f24112dc3c827fd087138fcf2700092aa59) )
536 	ROM_LOAD16_BYTE( "opr12315.17", 0x80001, 0x10000, CRC(3ff9a3a3) SHA1(0d90fe2669d03bd07a0d3b05934201778e28d54c) )
537 	ROM_LOAD16_BYTE( "opr12316.18", 0x80000, 0x10000, CRC(8a1e6dc8) SHA1(32f09ec504c2b6772815bad7380a2f738f11746a) )
538 	ROM_LOAD16_BYTE( "opr12317.19", 0xa0001, 0x10000, CRC(77e382d4) SHA1(5b7912069a46043b7be989d82436add85497d318) )
539 	ROM_LOAD16_BYTE( "opr12318.20", 0xa0000, 0x10000, CRC(d1afdea9) SHA1(813eccc88d5046992be5b5a0618d32127d16e30b) )
540 	ROM_LOAD16_BYTE( "opr12320.22", 0xc0001, 0x10000, CRC(7931e446) SHA1(9f2161a689ebad61f6653942e23d9c2bc6170d4a) )
541 	ROM_LOAD16_BYTE( "opr12321.23", 0xc0000, 0x10000, CRC(830bacd4) SHA1(5a4816969437ee1edca5845006c0b8e9ba365491) )
542 	ROM_LOAD16_BYTE( "opr12322.24", 0xe0001, 0x10000, CRC(8b812492) SHA1(bf1f9e059c093c0991c7caf1b01c739ed54b8357) )
543 	ROM_LOAD16_BYTE( "opr12319.25", 0xe0000, 0x10000, CRC(df23baf9) SHA1(f9611391bb3b3b92203fa9f6dd461e3a6e863622) )
544 
545 	ROM_REGION( 0x70000, REGION_CPU2, 0 ) /* sound CPU */
546 	ROM_LOAD( "epr12300.88",	0x00000, 0x10000, CRC(e8ff7011) SHA1(6eaf3aea507007ea31d507ed7825d905f4b8e7ab) )
547 	ROM_LOAD( "opr12301.66",    0x10000, 0x10000, CRC(6e78ad15) SHA1(c31ddf434b459cd1a381d2a028beabddd4ed10d2) )
548 	ROM_LOAD( "opr12302.67",    0x20000, 0x10000, CRC(e72928af) SHA1(40e0b178958cfe97c097fe9d82b5de54bc27a29f) )
549 	ROM_LOAD( "opr12303.68",    0x30000, 0x10000, CRC(8384205c) SHA1(c1f9d52bc587eab5a97867198e9aa7c19e973429) )
550 	ROM_LOAD( "opr12304.69",    0x40000, 0x10000, CRC(e1762ac3) SHA1(855f06c082a17d90857e6efa3cf95b0eda0e634d) )
551 	ROM_LOAD( "opr12305.70",    0x50000, 0x10000, CRC(ba9ce677) SHA1(056781f92450c902e1d279a02bda28337815cba9) )
552 	ROM_LOAD( "opr12306.71",    0x60000, 0x10000, CRC(e49249fd) SHA1(ff36e4dba4e9d3d354e3dd528edeb50ad9c18ee4) )
553 
554 	ROM_REGION( 0x100000, REGION_CPU3, 0 ) /* 68000 code */
555 	ROM_LOAD16_BYTE( "opr12295.76", 0x000000, 0x10000, CRC(d43a3a84) SHA1(362c98f62c205b6b40b7e8a4ba107745b547b984) )
556 	ROM_LOAD16_BYTE( "opr12294.58", 0x000001, 0x10000, CRC(27cdcfd3) SHA1(4fe57db95b109ab1bb1326789e06a3d3aac311cc) )
557 	ROM_LOAD16_BYTE( "opr12297.75", 0x020000, 0x10000, CRC(1d9b5677) SHA1(fb6e33acc43fbc7a8d7ac44045439ecdf794fdeb) )
558 	ROM_LOAD16_BYTE( "opr12296.57", 0x020001, 0x10000, CRC(0a513671) SHA1(4c13ca3a6f0aa9d06ed80798b466cca0c966a265) )
559 
560 	ROM_REGION( 0x40000, REGION_GFX3, 0 ) /* road */
561 	ROM_LOAD( "epr12298.11", 0x0, 0x08000, CRC(fc9bc41b) SHA1(9af73e096253cf2c4f283f227530110a4b37fcee) )
562 ROM_END
563 
564 
565 ROM_START( toutruna )
566 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
567 // custom cpu 317-0106
568 	ROM_LOAD16_BYTE( "epr12410.133", 0x000000, 0x10000, CRC(aa74f3e9) SHA1(2daf6b17317542063c0a40beea5b45c797192591) )
569 	ROM_LOAD16_BYTE( "epr12409.118", 0x000001, 0x10000, CRC(c11c8ef7) SHA1(4c1c5100d7fd728642d58e4bf45fba48695841e3) )
570 	ROM_LOAD16_BYTE( "epr12412.132", 0x020000, 0x10000, CRC(b0534647) SHA1(40f2260ff0d0ac662d118cc7280bb26006ee75e9) )
571 	ROM_LOAD16_BYTE( "epr12411.117", 0x020001, 0x10000, CRC(12bb0d83) SHA1(4aa1b724b2a7258fff7aa1971582950b3163c0db) )
572 	ROM_LOAD16_BYTE( "epr12293.131", 0x040000, 0x10000, CRC(f4321eea) SHA1(64334acc82c14bb58b7d51719f34fd81cfb9fc6b) )
573 	ROM_LOAD16_BYTE( "epr12292.116", 0x040001, 0x10000, CRC(51d98af0) SHA1(6e7115706bfafb687faa23d55d4a8c8e498a4df2) )
574 
575 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
576 	ROM_LOAD( "opr12323.102", 0x00000, 0x10000, CRC(4de43a6f) SHA1(68909338e1f192ac2699c8a8d24c3f46502dd019) )
577 	ROM_LOAD( "opr12324.103", 0x10000, 0x10000, CRC(24607a55) SHA1(69033f2281cd42e88233c23d809b73607fe54853) )
578 	ROM_LOAD( "opr12325.104", 0x20000, 0x10000, CRC(1405137a) SHA1(367db88d36852e35c5e839f692be5ea8c8e072d2) )
579 
580 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
581 	ROM_LOAD16_BYTE( "opr12307.9",  0x00001, 0x10000, CRC(437dcf09) SHA1(0022ee4d1c3698f77271e570cef98a8a1e5c5d6a) )
582 	ROM_LOAD16_BYTE( "opr12308.10", 0x00000, 0x10000, CRC(0de70cc2) SHA1(c03f8f8cda72daf64af2878bf254840ac6dd17eb) )
583 	ROM_LOAD16_BYTE( "opr12309.11", 0x20001, 0x10000, CRC(deb8c242) SHA1(c05d8ced4eafae52c4795fb1471cd66f5903d1aa) )
584 	ROM_LOAD16_BYTE( "opr12310.12", 0x20000, 0x10000, CRC(45cf157e) SHA1(5d0be2a374a53ea1fe0ba2bf9b2173e96de1eb51) )
585 	ROM_LOAD16_BYTE( "opr12311.13", 0x40001, 0x10000, CRC(ae2bd639) SHA1(64bb60ae7e3f87fbbce00106ba65c4e6fc1af0e4) )
586 	ROM_LOAD16_BYTE( "opr12312.14", 0x40000, 0x10000, CRC(626000e7) SHA1(4a7f9e76dd76a3dc56b8257149bc94be3f4f2e87) )
587 	ROM_LOAD16_BYTE( "opr12313.15", 0x60001, 0x10000, CRC(52870c37) SHA1(3a6836a46d94c0f9115800d206410252a1134c57) )
588 	ROM_LOAD16_BYTE( "opr12314.16", 0x60000, 0x10000, CRC(40c461ea) SHA1(7bed8f24112dc3c827fd087138fcf2700092aa59) )
589 	ROM_LOAD16_BYTE( "opr12315.17", 0x80001, 0x10000, CRC(3ff9a3a3) SHA1(0d90fe2669d03bd07a0d3b05934201778e28d54c) )
590 	ROM_LOAD16_BYTE( "opr12316.18", 0x80000, 0x10000, CRC(8a1e6dc8) SHA1(32f09ec504c2b6772815bad7380a2f738f11746a) )
591 	ROM_LOAD16_BYTE( "opr12317.19", 0xa0001, 0x10000, CRC(77e382d4) SHA1(5b7912069a46043b7be989d82436add85497d318) )
592 	ROM_LOAD16_BYTE( "opr12318.20", 0xa0000, 0x10000, CRC(d1afdea9) SHA1(813eccc88d5046992be5b5a0618d32127d16e30b) )
593 	ROM_LOAD16_BYTE( "opr12320.22", 0xc0001, 0x10000, CRC(7931e446) SHA1(9f2161a689ebad61f6653942e23d9c2bc6170d4a) )
594 	ROM_LOAD16_BYTE( "opr12321.23", 0xc0000, 0x10000, CRC(830bacd4) SHA1(5a4816969437ee1edca5845006c0b8e9ba365491) )
595 	ROM_LOAD16_BYTE( "opr12322.24", 0xe0001, 0x10000, CRC(8b812492) SHA1(bf1f9e059c093c0991c7caf1b01c739ed54b8357) )
596 	ROM_LOAD16_BYTE( "opr12319.25", 0xe0000, 0x10000, CRC(df23baf9) SHA1(f9611391bb3b3b92203fa9f6dd461e3a6e863622) )
597 
598 	ROM_REGION( 0x70000, REGION_CPU2, 0 ) /* sound CPU */
599 	ROM_LOAD( "epr12300.88",	0x00000, 0x10000, CRC(e8ff7011) SHA1(6eaf3aea507007ea31d507ed7825d905f4b8e7ab) )
600 	ROM_LOAD( "opr12301.66",    0x10000, 0x10000, CRC(6e78ad15) SHA1(c31ddf434b459cd1a381d2a028beabddd4ed10d2) )
601 	ROM_LOAD( "opr12302.67",    0x20000, 0x10000, CRC(e72928af) SHA1(40e0b178958cfe97c097fe9d82b5de54bc27a29f) )
602 	ROM_LOAD( "opr12303.68",    0x30000, 0x10000, CRC(8384205c) SHA1(c1f9d52bc587eab5a97867198e9aa7c19e973429) )
603 	ROM_LOAD( "opr12304.69",    0x40000, 0x10000, CRC(e1762ac3) SHA1(855f06c082a17d90857e6efa3cf95b0eda0e634d) )
604 	ROM_LOAD( "opr12305.70",    0x50000, 0x10000, CRC(ba9ce677) SHA1(056781f92450c902e1d279a02bda28337815cba9) )
605 	ROM_LOAD( "opr12306.71",    0x60000, 0x10000, CRC(e49249fd) SHA1(ff36e4dba4e9d3d354e3dd528edeb50ad9c18ee4) )
606 
607 	ROM_REGION( 0x100000, REGION_CPU3, 0 ) /* 68000 code */
608 	ROM_LOAD16_BYTE( "opr12295.76", 0x000000, 0x10000, CRC(d43a3a84) SHA1(362c98f62c205b6b40b7e8a4ba107745b547b984) )
609 	ROM_LOAD16_BYTE( "opr12294.58", 0x000001, 0x10000, CRC(27cdcfd3) SHA1(4fe57db95b109ab1bb1326789e06a3d3aac311cc) )
610 	ROM_LOAD16_BYTE( "opr12297.75", 0x020000, 0x10000, CRC(1d9b5677) SHA1(fb6e33acc43fbc7a8d7ac44045439ecdf794fdeb) )
611 	ROM_LOAD16_BYTE( "opr12296.57", 0x020001, 0x10000, CRC(0a513671) SHA1(4c13ca3a6f0aa9d06ed80798b466cca0c966a265) )
612 
613 	ROM_REGION( 0x40000, REGION_GFX3, 0 ) /* road */
614 	ROM_LOAD( "epr12298.11", 0x0, 0x08000, CRC(fc9bc41b) SHA1(9af73e096253cf2c4f283f227530110a4b37fcee) )
615 ROM_END
616 
617 /***************************************************************************/
618 
619 #if 0
620 static READ16_HANDLER( or_io_joy_r ){
621 	return (input_port_5_r( offset ) << 8) + input_port_6_r( offset );
622 }
623 #endif
624 
625 #ifdef HANGON_DIGITAL_CONTROLS
626 static READ16_HANDLER( or_io_brake_r ){
627 	int data = input_port_1_r( offset );
628 
629 	switch(data & 3)
630 	{
631 		case 3:	return 0xff00;	// both
632 		case 1:	return 0xff00;  // brake
633 		case 2:	return 0x0000;  // accel
634 		case 0:	return 0x0000;  // neither
635 	}
636 	return 0x0000;
637 }
638 
READ16_HANDLER(or_io_acc_steer_r)639 static READ16_HANDLER( or_io_acc_steer_r ){
640 	int data = input_port_1_r( offset );
641 	int ret = input_port_0_r( offset ) << 8;
642 
643 	switch(data & 3)
644 	{
645 		case 3:	return 0x00 | ret;	// both
646 		case 1:	return 0x00 | ret;  // brake
647 		case 2:	return 0xff | ret;  // accel
648 		case 0:	return 0x00 | ret ;  // neither
649 	}
650 	return 0x00 | ret;
651 }
652 #else
653 static READ16_HANDLER( or_io_acc_steer_r ){ return (input_port_0_r( offset ) << 8) + input_port_1_r( offset ); }
654 static READ16_HANDLER( or_io_brake_r ){ return input_port_5_r( offset ) << 8; }
655 #endif
656 
657 static int selected_analog;
658 
READ16_HANDLER(outrun_analog_r)659 static READ16_HANDLER( outrun_analog_r )
660 {
661 	switch (selected_analog)
662 	{
663 		default:
664 		case 0: return or_io_acc_steer_r(0,0) >> 8;
665 		case 1: return or_io_acc_steer_r(0,0) & 0xff;
666 		case 2: return or_io_brake_r(0,0) >> 8;
667 		case 3: return or_io_brake_r(0,0) & 0xff;
668 	}
669 }
670 
WRITE16_HANDLER(outrun_analog_select_w)671 static WRITE16_HANDLER( outrun_analog_select_w )
672 {
673 	if ( ACCESSING_LSB )
674 	{
675 		selected_analog = (data & 0x0c) >> 2;
676 	}
677 }
678 
679 static int or_gear=0;
680 
READ16_HANDLER(or_io_service_r)681 static READ16_HANDLER( or_io_service_r )
682 {
683 	int ret=input_port_2_r( offset );
684 	int data=input_port_1_r( offset );
685 	if(data & 4) or_gear=0;
686 	else if(data & 8) or_gear=1;
687 
688 	if(or_gear) ret|=0x10;
689 	else ret&=0xef;
690 
691 	return ret;
692 }
693 
WRITE16_HANDLER(outrun_sound_write_w)694 static WRITE16_HANDLER( outrun_sound_write_w )
695 {
696 	sound_shared_ram[0]=data&0xff;
697 }
698 
WRITE16_HANDLER(outrun_ctrl1_w)699 static WRITE16_HANDLER( outrun_ctrl1_w )
700 {
701 	if( ACCESSING_LSB ){
702 		sys16_refreshenable = data & 0x20;
703 		/* bit 0 always 1? */
704 		/* bits 2-3 continuously change: 00-01-10-11; this is the same that
705 		   gets written to 140030 so is probably input related */
706 	}
707 }
708 
WRITE16_HANDLER(outrun_ctrl2_w)709 static WRITE16_HANDLER( outrun_ctrl2_w )
710 {
711 	if( ACCESSING_LSB ){
712 		/* bit 0 always 1? */
713 		set_led_status(0,data & 0x04);
714 		set_led_status(1,data & 0x02);	/* brakes */
715 		coin_counter_w(0,data & 0x10);
716 	}
717 }
718 
MEMORY_READ16_START(outrun_readmem)719 static MEMORY_READ16_START( outrun_readmem )
720 	{ 0x000000, 0x03ffff, MRA16_ROM },
721 	{ 0x060900, 0x060907, sound_shared_ram_r },		//???
722 	{ 0x060000, 0x067fff, SYS16_MRA16_EXTRAM2 },
723 
724 	{ 0x100000, 0x10ffff, SYS16_MRA16_TILERAM },
725 	{ 0x110000, 0x110fff, SYS16_MRA16_TEXTRAM },
726 
727 	{ 0x130000, 0x130fff, SYS16_MRA16_SPRITERAM },
728 	{ 0x120000, 0x121fff, SYS16_MRA16_PALETTERAM },
729 
730 	{ 0x140010, 0x140011, or_io_service_r },
731 	{ 0x140014, 0x140015, input_port_3_word_r }, // dip1
732 	{ 0x140016, 0x140017, input_port_4_word_r }, // dip2
733 	{ 0x140030, 0x140031, outrun_analog_r },
734 
735 	{ 0x200000, 0x23ffff, SYS16_CPU3ROM16_r },
736 	{ 0x260000, 0x267fff, shared_ram_r },
737 	{ 0xe00000, 0xe00001, SYS16_CPU2_RESET_HACK },
738 MEMORY_END
739 
740 static MEMORY_WRITE16_START( outrun_writemem )
741 	{ 0x000000, 0x03ffff, MWA16_ROM },
742 	{ 0x060900, 0x060907, sound_shared_ram_w },		//???
743 	{ 0x060000, 0x067fff, SYS16_MWA16_EXTRAM2 },
744 	{ 0x100000, 0x10ffff, SYS16_MWA16_TILERAM },
745 	{ 0x110000, 0x110fff, SYS16_MWA16_TEXTRAM },
746 	{ 0x130000, 0x130fff, SYS16_MWA16_SPRITERAM },
747 	{ 0x120000, 0x121fff, SYS16_MWA16_PALETTERAM },
748 	{ 0x140004, 0x140005, outrun_ctrl1_w },
749 	{ 0x140020, 0x140021, outrun_ctrl2_w },
750 	{ 0x140030, 0x140031, outrun_analog_select_w },
751 	{ 0x200000, 0x23ffff, MWA16_ROM },
752 	{ 0x260000, 0x267fff, shared_ram_w, &shared_ram },
753 	{ 0xffff06, 0xffff07, outrun_sound_write_w },
754 MEMORY_END
755 
756 static MEMORY_READ16_START( outrun_readmem2 )
757 	{ 0x000000, 0x03ffff, MRA16_ROM },
758 	{ 0x060000, 0x067fff, shared_ram_r },
759 	{ 0x080000, 0x09ffff, SYS16_MRA16_EXTRAM },		// gr
760 MEMORY_END
761 
762 static MEMORY_WRITE16_START( outrun_writemem2 )
763 	{ 0x000000, 0x03ffff, MWA16_ROM },
764 	{ 0x060000, 0x067fff, shared_ram_w },
765 	{ 0x080000, 0x09ffff, SYS16_MWA16_EXTRAM },		// gr
766 MEMORY_END
767 
768 // Outrun
769 
770 static MEMORY_READ_START( outrun_sound_readmem )
771 	{ 0x0000, 0x7fff, MRA_ROM },
772 	{ 0xf000, 0xf0ff, SegaPCM_r },
773 	{ 0xf100, 0xf7ff, MRA_NOP },
774 	{ 0xf800, 0xf807, sound2_shared_ram_r },
775 	{ 0xf808, 0xffff, MRA_RAM },
776 MEMORY_END
777 
778 static MEMORY_WRITE_START( outrun_sound_writemem )
779 	{ 0x0000, 0x7fff, MWA_ROM },
780 	{ 0xf000, 0xf0ff, SegaPCM_w },
781 	{ 0xf100, 0xf7ff, MWA_NOP },
782 	{ 0xf800, 0xf807, sound2_shared_ram_w,&sound_shared_ram },
783 	{ 0xf808, 0xffff, MWA_RAM },
784 MEMORY_END
785 
786 /***************************************************************************/
787 
788 static void outrun_update_proc( void ){
789 	set_fg_page( sys16_textram[0x740] );
790 	set_bg_page( sys16_textram[0x741] );
791 	sys16_fg_scrolly = sys16_textram[0x748];
792 	sys16_bg_scrolly = sys16_textram[0x749];
793 	sys16_fg_scrollx = sys16_textram[0x74c];
794 	sys16_bg_scrollx = sys16_textram[0x74d];
795 }
796 
MACHINE_INIT(outrun)797 static MACHINE_INIT( outrun ){
798 	static int bank[8] = {
799 		7,0,1,2,
800 		3,4,5,6
801 	};
802 	sys16_obj_bank = bank;
803 	sys16_spritesystem = sys16_sprite_outrun;
804 	sys16_textlayer_lo_min=0;
805 	sys16_textlayer_lo_max=0;
806 	sys16_textlayer_hi_min=0;
807 	sys16_textlayer_hi_max=0xff;
808 	sys16_sprxoffset = -0xc0;
809 
810 // hack: cpu 0 reset opcode resets cpu 2
811 	sys16_patch_code(0x7d44,0x4a);
812 	sys16_patch_code(0x7d45,0x79);
813 	sys16_patch_code(0x7d46,0x00);
814 	sys16_patch_code(0x7d47,0xe0);
815 	sys16_patch_code(0x7d48,0x00);
816 	sys16_patch_code(0x7d49,0x00);
817 
818 // *forced sound cmd
819 	sys16_patch_code( 0x55ed, 0x00);
820 
821 // rogue tile on music selection screen
822 //	sys16_patch_code( 0x38545, 0x80);
823 
824 // *freeze time
825 //	sys16_patch_code( 0xb6b6, 0x4e);
826 //	sys16_patch_code( 0xb6b7, 0x71);
827 
828 	sys16_update_proc = outrun_update_proc;
829 
830 	sys16_gr_ver = &sys16_extraram[0];
831 	sys16_gr_hor = sys16_gr_ver+0x400/2;
832 	sys16_gr_flip= sys16_gr_ver+0xc00/2;
833 
834 	sys16_gr_palette= 0xf00 / 2;
835 	sys16_gr_palette_default = 0x800 /2;
836 	sys16_gr_colorflip[0][0]=0x08 / 2;
837 	sys16_gr_colorflip[0][1]=0x04 / 2;
838 	sys16_gr_colorflip[0][2]=0x00 / 2;
839 	sys16_gr_colorflip[0][3]=0x00 / 2;
840 	sys16_gr_colorflip[1][0]=0x0a / 2;
841 	sys16_gr_colorflip[1][1]=0x06 / 2;
842 	sys16_gr_colorflip[1][2]=0x02 / 2;
843 	sys16_gr_colorflip[1][3]=0x00 / 2;
844 
845 	sys16_gr_second_road = &sys16_extraram[0x8000];
846 }
847 
MACHINE_INIT(outruna)848 static MACHINE_INIT( outruna ){
849 	static int bank[8] = {
850 		7,0,1,2,
851 		3,4,5,6
852 	};
853 	sys16_obj_bank = bank;
854 	sys16_spritesystem = sys16_sprite_outrun;
855 	sys16_textlayer_lo_min=0;
856 	sys16_textlayer_lo_max=0;
857 	sys16_textlayer_hi_min=0;
858 	sys16_textlayer_hi_max=0xff;
859 
860 // cpu 0 reset opcode resets cpu 2
861 	sys16_patch_code(0x7db8,0x4a);
862 	sys16_patch_code(0x7db9,0x79);
863 	sys16_patch_code(0x7dba,0x00);
864 	sys16_patch_code(0x7dbb,0xe0);
865 	sys16_patch_code(0x7dbc,0x00);
866 	sys16_patch_code(0x7dbd,0x00);
867 
868 // *forced sound cmd
869 	sys16_patch_code( 0x5661, 0x00);
870 
871 // rogue tile on music selection screen
872 //	sys16_patch_code( 0x38455, 0x80);
873 
874 // *freeze time
875 //	sys16_patch_code( 0xb6b6, 0x4e);
876 //	sys16_patch_code( 0xb6b7, 0x71);
877 
878 	sys16_update_proc = outrun_update_proc;
879 
880 	sys16_gr_ver = &sys16_extraram[0];
881 	sys16_gr_hor = sys16_gr_ver+0x400/2;
882 	sys16_gr_flip= sys16_gr_ver+0xc00/2;
883 
884 	sys16_gr_palette= 0xf00 / 2;
885 	sys16_gr_palette_default = 0x800 /2;
886 	sys16_gr_colorflip[0][0]=0x08 / 2;
887 	sys16_gr_colorflip[0][1]=0x04 / 2;
888 	sys16_gr_colorflip[0][2]=0x00 / 2;
889 	sys16_gr_colorflip[0][3]=0x00 / 2;
890 	sys16_gr_colorflip[1][0]=0x0a / 2;
891 	sys16_gr_colorflip[1][1]=0x06 / 2;
892 	sys16_gr_colorflip[1][2]=0x02 / 2;
893 	sys16_gr_colorflip[1][3]=0x00 / 2;
894 
895 	sys16_gr_second_road = &sys16_extraram[0x10000];
896 }
897 
DRIVER_INIT(outrun)898 static DRIVER_INIT( outrun )
899 {
900 	machine_init_sys16_onetime();
901 	sys16_interleave_sprite_data( 0x100000 );
902 	generate_gr_screen(512,2048,0,0,3,0x8000);
903 }
904 
DRIVER_INIT(outrunb)905 static DRIVER_INIT( outrunb )
906 {
907 	data16_t *RAM = (data16_t *)memory_region(REGION_CPU1);
908 	int i;
909 
910 	machine_init_sys16_onetime();
911 /*
912   Main Processor
913 	Comparing the bootleg with the custom bootleg, it seems that:-
914 
915   if even bytes &0x28 == 0x20 or 0x08 then they are xored with 0x28
916   if odd bytes &0xc0 == 0x40 or 0x80 then they are xored with 0xc0
917 
918   ie. data lines are switched.
919 */
920 
921 	for( i=0;i<0x40000;i+=2 ){
922 		data16_t word = RAM[i/2];
923 		UINT8 even = word>>8;
924 		UINT8 odd = word&0xff;
925 
926 		// even byte
927 		if((even&0x28) == 0x20 || (even&0x28) == 0x08) even^=0x28;
928 
929 		// odd byte
930 		if((odd&0xc0) == 0x80 || (odd&0xc0) == 0x40) odd^=0xc0;
931 
932 		RAM[i/2] = (even<<8)+odd;
933 	}
934 
935 /*
936   Second Processor
937 
938   if even bytes &0xc0 == 0x40 or 0x80 then they are xored with 0xc0
939   if odd bytes &0x0c == 0x04 or 0x08 then they are xored with 0x0c
940 */
941 	RAM = (data16_t *)memory_region(REGION_CPU3);
942 	for(i=0;i<0x40000;i+=2)
943 	{
944 		data16_t word = RAM[i/2];
945 		UINT8 even = word>>8;
946 		UINT8 odd = word&0xff;
947 
948 		// even byte
949 		if((even&0xc0) == 0x80 || (even&0xc0) == 0x40) even^=0xc0;
950 
951 		// odd byte
952 		if((odd&0x0c) == 0x08 || (odd&0x0c) == 0x04) odd^=0x0c;
953 
954 		RAM[i/2] = (even<<8)+odd;
955 	}
956 /*
957   Road GFX
958 
959 	rom orun_me.rom
960 	if bytes &0x60 == 0x40 or 0x20 then they are xored with 0x60
961 
962 	rom orun_mf.rom
963 	if bytes &0xc0 == 0x40 or 0x80 then they are xored with 0xc0
964 
965   I don't know why there's 2 road roms, but I'm using orun_me.rom
966 */
967 	{
968 		UINT8 *mem = memory_region(REGION_GFX3);
969 		for(i=0;i<0x8000;i++){
970 			if( (mem[i]&0x60) == 0x20 || (mem[i]&0x60) == 0x40 ) mem[i]^=0x60;
971 		}
972 	}
973 
974 	generate_gr_screen(512,2048,0,0,3,0x8000);
975 	sys16_interleave_sprite_data( 0x100000 );
976 
977 /*
978   Z80 Code
979 	rom orun_ma.rom
980 	if bytes &0x60 == 0x40 or 0x20 then they are xored with 0x60
981 
982 */
983 	{
984 		UINT8 *mem = memory_region(REGION_CPU2);
985 		for(i=0;i<0x8000;i++){
986 			if( (mem[i]&0x60) == 0x20 || (mem[i]&0x60) == 0x40 ) mem[i]^=0x60;
987 		}
988 	}
989 }
990 
991 /***************************************************************************/
992 
INPUT_PORTS_START(outrun)993 INPUT_PORTS_START( outrun )
994 PORT_START	/* Steering */
995 	PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_CENTER, 100, 3, 0x48, 0xb8 )
996 //	PORT_ANALOG( 0xff, 0x7f, IPT_PADDLE , 70, 3, 0x48, 0xb8 )
997 
998 #ifdef HANGON_DIGITAL_CONTROLS
999 
1000 PORT_START	/* Buttons */
1001 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1002 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1003 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
1004 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 )
1005 
1006 #else
1007 
1008 PORT_START	/* Accel / Decel */
1009 	PORT_ANALOG( 0xff, 0x30, IPT_AD_STICK_Y | IPF_CENTER | IPF_REVERSE, 100, 16, 0x30, 0x90 )
1010 
1011 #endif
1012 
1013 PORT_START
1014 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1015 	PORT_BITX(0x02, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1016 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
1017 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
1018 //	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 )
1019 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1020 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
1021 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
1022 
1023 	SYS16_COINAGE
1024 
1025 PORT_START	/* DSW1 */
1026 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Cabinet ) )
1027 	PORT_DIPSETTING(    0x02, "Up Cockpit" )
1028 	PORT_DIPSETTING(    0x01, "Mini Up" )
1029 	PORT_DIPSETTING(    0x03, "Moving" )
1030 //	PORT_DIPSETTING(    0x00, "No Use" )
1031 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )
1032 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1033 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1034 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
1035 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1036 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1037 	PORT_DIPNAME( 0x30, 0x30, "Time" )
1038 	PORT_DIPSETTING(    0x20, "Easy" )
1039 	PORT_DIPSETTING(    0x30, "Normal" )
1040 	PORT_DIPSETTING(    0x10, "Hard" )
1041 	PORT_DIPSETTING(    0x00, "Hardest" )
1042 	PORT_DIPNAME( 0xc0, 0xc0, "Enemies" )
1043 	PORT_DIPSETTING(    0x80, "Easy" )
1044 	PORT_DIPSETTING(    0xc0, "Normal" )
1045 	PORT_DIPSETTING(    0x40, "Hard" )
1046 	PORT_DIPSETTING(    0x00, "Hardest" )
1047 
1048 
1049 #ifndef HANGON_DIGITAL_CONTROLS
1050 
1051 PORT_START	/* Brake */
1052 	PORT_ANALOG( 0xff, 0x30, IPT_AD_STICK_Y | IPF_PLAYER2 | IPF_CENTER | IPF_REVERSE, 100, 16, 0x30, 0x90 )
1053 
1054 #endif
1055 
1056 INPUT_PORTS_END
1057 
1058 /***************************************************************************/
1059 static INTERRUPT_GEN( or_interrupt ){
1060 	int intleft=cpu_getiloops();
1061 	if(intleft!=0) cpu_set_irq_line(0, 2, HOLD_LINE);
1062 	else cpu_set_irq_line(0, 4, HOLD_LINE);
1063 }
1064 
1065 
1066 static MACHINE_DRIVER_START( outrun )
1067 
1068 	/* basic machine hardware */
1069 	MDRV_CPU_ADD(M68000, 12000000)
1070 	MDRV_CPU_MEMORY(outrun_readmem,outrun_writemem)
1071 	MDRV_CPU_VBLANK_INT(or_interrupt,2)
1072 
1073 	MDRV_CPU_ADD(Z80, 4000000)
1074 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1075 	MDRV_CPU_MEMORY(outrun_sound_readmem,outrun_sound_writemem)
1076 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
1077 
1078 	MDRV_CPU_ADD(M68000, 12000000)
1079 	MDRV_CPU_MEMORY(outrun_readmem2,outrun_writemem2)
1080 	MDRV_CPU_VBLANK_INT(sys16_interrupt,2)
1081 
1082 	MDRV_FRAMES_PER_SECOND(60)
1083 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
1084 	MDRV_INTERLEAVE(100)
1085 
1086 	MDRV_MACHINE_INIT(outrun)
1087 
1088 	/* video hardware */
1089 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_AFTER_VBLANK)
1090 	MDRV_SCREEN_SIZE(40*8, 28*8)
1091 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
1092 	MDRV_GFXDECODE(sys16_gfxdecodeinfo)
1093 	MDRV_PALETTE_LENGTH(4096*ShadowColorsMultiplier)
1094 
1095 	MDRV_VIDEO_START(outrun)
1096 	MDRV_VIDEO_UPDATE(outrun)
1097 
1098 	/* sound hardware */
1099 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1100 	MDRV_SOUND_ADD(YM2151, sys16_ym2151_interface)
1101 	MDRV_SOUND_ADD(SEGAPCM, sys16_segapcm_interface_15k)
1102 MACHINE_DRIVER_END
1103 
1104 
1105 static MACHINE_DRIVER_START( outruna )
1106 
1107 	/* basic machine hardware */
1108 	MDRV_IMPORT_FROM(outrun)
1109 
1110 	MDRV_MACHINE_INIT(outruna)
1111 MACHINE_DRIVER_END
1112 
1113 
1114 static data16_t *shared_ram2;
READ16_HANDLER(shared_ram2_r)1115 static READ16_HANDLER( shared_ram2_r ){
1116 	return shared_ram2[offset];
1117 }
WRITE16_HANDLER(shared_ram2_w)1118 static WRITE16_HANDLER( shared_ram2_w ){
1119 	COMBINE_DATA(&shared_ram2[offset]);
1120 }
1121 
MEMORY_READ16_START(shangon_readmem)1122 static MEMORY_READ16_START( shangon_readmem )
1123 	{ 0x000000, 0x03ffff, MRA16_ROM },
1124 	{ 0x20c640, 0x20c647, sound_shared_ram_r },
1125 	{ 0x20c000, 0x20ffff, SYS16_MRA16_EXTRAM2 },
1126 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1127 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1128 	{ 0x600000, 0x600fff, SYS16_MRA16_SPRITERAM },
1129 	{ 0xa00000, 0xa00fff, SYS16_MRA16_PALETTERAM },
1130 	{ 0xc68000, 0xc68fff, shared_ram_r },
1131 	{ 0xc7c000, 0xc7ffff, shared_ram2_r },
1132 	{ 0xe00002, 0xe00003, sys16_coinctrl_r },
1133 	{ 0xe01000, 0xe01001, input_port_2_word_r }, // service
1134 	{ 0xe0100c, 0xe0100d, input_port_4_word_r }, // dip2
1135 	{ 0xe0100a, 0xe0100b, input_port_3_word_r }, // dip1
1136 	{ 0xe030f8, 0xe030f9, ho_io_x_r },
1137 	{ 0xe030fa, 0xe030fb, ho_io_y_r },
1138 MEMORY_END
1139 
1140 static MEMORY_WRITE16_START( shangon_writemem )
1141 	{ 0x000000, 0x03ffff, MWA16_ROM },
1142 	{ 0x20c640, 0x20c647, sound_shared_ram_w },
1143 	{ 0x20c000, 0x20ffff, SYS16_MWA16_EXTRAM2 },
1144 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
1145 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
1146 	{ 0x600000, 0x600fff, SYS16_MWA16_SPRITERAM },
1147 	{ 0xa00000, 0xa00fff, SYS16_MWA16_PALETTERAM },
1148 	{ 0xc68000, 0xc68fff, shared_ram_w, &shared_ram },
1149 	{ 0xc7c000, 0xc7ffff, shared_ram2_w, &shared_ram2 },
1150 	{ 0xe00002, 0xe00003, sys16_3d_coinctrl_w },
1151 MEMORY_END
1152 
1153 static MEMORY_READ16_START( shangon_readmem2 )
1154 	{ 0x000000, 0x03ffff, MRA16_ROM },
1155 	{ 0x454000, 0x45401f, SYS16_MRA16_EXTRAM3 },
1156 	{ 0x7e8000, 0x7e8fff, shared_ram_r },
1157 	{ 0x7fc000, 0x7ffbff, shared_ram2_r },
1158 	{ 0x7ffc00, 0x7fffff, SYS16_MRA16_EXTRAM },
1159 MEMORY_END
1160 
1161 static MEMORY_WRITE16_START( shangon_writemem2 )
1162 	{ 0x000000, 0x03ffff, MWA16_ROM },
1163 	{ 0x454000, 0x45401f, SYS16_MWA16_EXTRAM3 },
1164 	{ 0x7e8000, 0x7e8fff, shared_ram_w },
1165 	{ 0x7fc000, 0x7ffbff, shared_ram2_w },
1166 	{ 0x7ffc00, 0x7fffff, SYS16_MWA16_EXTRAM },
1167 MEMORY_END
1168 
1169 static MEMORY_READ_START( shangon_sound_readmem )
1170 	{ 0x0000, 0x7fff, MRA_ROM },
1171 	{ 0xf000, 0xf7ff, SegaPCM_r },
1172 	{ 0xf800, 0xf807, sound2_shared_ram_r },
1173 	{ 0xf808, 0xffff, MRA_RAM },
1174 MEMORY_END
1175 
1176 static MEMORY_WRITE_START( shangon_sound_writemem )
1177 	{ 0x0000, 0x7fff, MWA_ROM },
1178 	{ 0xf000, 0xf7ff, SegaPCM_w },
1179 	{ 0xf800, 0xf807, sound2_shared_ram_w,&sound_shared_ram },
1180 	{ 0xf808, 0xffff, MWA_RAM },
1181 MEMORY_END
1182 
1183 /***************************************************************************/
1184 
1185 static void shangon_update_proc( void ){
1186 	set_bg_page1( sys16_textram[0x74e] );
1187 	set_fg_page1( sys16_textram[0x74f] );
1188 	sys16_fg_scrollx = sys16_textram[0x7fc] & 0x01ff;
1189 	sys16_bg_scrollx = sys16_textram[0x7fd] & 0x01ff;
1190 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
1191 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
1192 }
1193 
MACHINE_INIT(shangon)1194 static MACHINE_INIT( shangon ){
1195 	sys16_textmode=1;
1196 	sys16_spritesystem = sys16_sprite_hangon;
1197 	sys16_sprxoffset = -0xc0;
1198 	sys16_fgxoffset = 8;
1199 	sys16_textlayer_lo_min=0;
1200 	sys16_textlayer_lo_max=0;
1201 	sys16_textlayer_hi_min=0;
1202 	sys16_textlayer_hi_max=0xff;
1203 
1204 	sys16_patch_code( 0x65bd, 0xf9);
1205 	sys16_patch_code( 0x6677, 0xfa);
1206 	sys16_patch_code( 0x66d5, 0xfb);
1207 	sys16_patch_code( 0x9621, 0xfb);
1208 
1209 	sys16_update_proc = shangon_update_proc;
1210 
1211 	sys16_gr_ver = shared_ram;
1212 	sys16_gr_hor = sys16_gr_ver+0x200/2;
1213 	sys16_gr_pal = sys16_gr_ver+0x400/2;
1214 	sys16_gr_flip= sys16_gr_ver+0x600/2;
1215 
1216 	sys16_gr_palette= 0xf80 / 2;
1217 	sys16_gr_palette_default = 0x70 /2;
1218 	sys16_gr_colorflip[0][0]=0x08 / 2;
1219 	sys16_gr_colorflip[0][1]=0x04 / 2;
1220 	sys16_gr_colorflip[0][2]=0x00 / 2;
1221 	sys16_gr_colorflip[0][3]=0x06 / 2;
1222 	sys16_gr_colorflip[1][0]=0x0a / 2;
1223 	sys16_gr_colorflip[1][1]=0x04 / 2;
1224 	sys16_gr_colorflip[1][2]=0x02 / 2;
1225 	sys16_gr_colorflip[1][3]=0x02 / 2;
1226 }
1227 
DRIVER_INIT(shangon)1228 static DRIVER_INIT( shangon ){
1229 	machine_init_sys16_onetime();
1230 	generate_gr_screen(512,1024,0,0,4,0x8000);
1231 
1232 	sys16_patch_z80code( 0x1087, 0x20);
1233 	sys16_patch_z80code( 0x1088, 0x01);
1234 }
1235 
DRIVER_INIT(shangonb)1236 static DRIVER_INIT( shangonb ){
1237 	machine_init_sys16_onetime();
1238 	generate_gr_screen(512,1024,8,0,4,0x8000);
1239 }
1240 /***************************************************************************/
1241 
1242 INPUT_PORTS_START( shangon )
1243 PORT_START	/* Steering */
1244 	PORT_ANALOG( 0xff, 0x7f, IPT_AD_STICK_X | IPF_REVERSE | IPF_CENTER , 100, 3, 0x42, 0xbd )
1245 
1246 #ifdef HANGON_DIGITAL_CONTROLS
1247 
1248 PORT_START	/* Buttons */
1249 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1250 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1251 
1252 #else
1253 
1254 PORT_START	/* Accel / Decel */
1255 	PORT_ANALOG( 0xff, 0x1, IPT_AD_STICK_Y | IPF_CENTER | IPF_REVERSE, 100, 16, 1, 0xa2 )
1256 
1257 #endif
1258 
1259 PORT_START
1260 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
1261 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
1262 	PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
1263 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
1264 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
1265 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
1266 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1267 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1268 
1269 	SYS16_COINAGE
1270 
1271 PORT_START	/* DSW1 */
1272 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
1273 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1274 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1275 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) )
1276 	PORT_DIPSETTING(    0x04, "Easy" )
1277 	PORT_DIPSETTING(    0x06, "Normal" )
1278 	PORT_DIPSETTING(    0x02, "Hard" )
1279 	PORT_DIPSETTING(    0x00, "Hardest" )
1280 	PORT_DIPNAME( 0x18, 0x18, "Time Adj." )
1281 	PORT_DIPSETTING(    0x10, "Easy" )
1282 	PORT_DIPSETTING(    0x18, "Normal" )
1283 	PORT_DIPSETTING(    0x08, "Hard" )
1284 	PORT_DIPSETTING(    0x00, "Hardest" )
1285 	PORT_DIPNAME( 0x20, 0x20, "Play Music" )
1286 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1287 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1288 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
1289 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1290 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1291 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1292 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1293 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1294 
1295 
1296 #ifndef HANGON_DIGITAL_CONTROLS
1297 
1298 PORT_START	/* Brake */
1299 	PORT_ANALOG( 0xff, 0x1, IPT_AD_STICK_Y | IPF_PLAYER2 | IPF_CENTER | IPF_REVERSE, 100, 16, 1, 0xa2 )
1300 
1301 #endif
1302 INPUT_PORTS_END
1303 
1304 /***************************************************************************/
1305 
1306 static MACHINE_DRIVER_START( shangon )
1307 
1308 	/* basic machine hardware */
1309 	MDRV_CPU_ADD(M68000, 10000000)
1310 	MDRV_CPU_MEMORY(shangon_readmem,shangon_writemem)
1311 	MDRV_CPU_VBLANK_INT(sys16_interrupt,1)
1312 
1313 	MDRV_CPU_ADD(Z80, 4000000)
1314 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
1315 	MDRV_CPU_MEMORY(shangon_sound_readmem,shangon_sound_writemem)
1316 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
1317 
1318 	MDRV_CPU_ADD(M68000, 10000000)
1319 	MDRV_CPU_MEMORY(shangon_readmem2,shangon_writemem2)
1320 	MDRV_CPU_VBLANK_INT(sys16_interrupt,1)
1321 
1322 	MDRV_FRAMES_PER_SECOND(60)
1323 	MDRV_VBLANK_DURATION(100)
1324 
1325 	MDRV_MACHINE_INIT(shangon)
1326 
1327 	/* video hardware */
1328 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_AFTER_VBLANK)
1329 	MDRV_SCREEN_SIZE(40*8, 28*8)
1330 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
1331 	MDRV_GFXDECODE(sys16_gfxdecodeinfo)
1332 	MDRV_PALETTE_LENGTH(2048*ShadowColorsMultiplier)
1333 
1334 	MDRV_VIDEO_START(hangon)
1335 	MDRV_VIDEO_UPDATE(hangon)
1336 
1337 	/* sound hardware */
1338 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
1339 	MDRV_SOUND_ADD(YM2151, sys16_ym2151_interface)
1340 	MDRV_SOUND_ADD(SEGAPCM, sys16_segapcm_interface_15k_512)
1341 MACHINE_DRIVER_END
1342 
1343 GAMEX(1992, shangon,  0,        shangon,  shangon,  shangon,  ROT0,         "Sega",    "Super Hang-On", GAME_NOT_WORKING )
1344 GAME( 1992, shangonb, shangon,  shangon,  shangon,  shangonb, ROT0,         "bootleg", "Super Hang-On (bootleg)" )
1345 
1346 GAME( 1986, outrun,   0,        outrun,   outrun,   outrun,   ROT0,         "Sega",    "Out Run (set 1)" )
1347 GAME( 1986, outruna,  outrun,   outruna,  outrun,   outrun,   ROT0,         "Sega",    "Out Run (set 2)" )
1348 GAME( 1986, outrunb,  outrun,   outruna,  outrun,   outrunb,  ROT0,         "Sega",    "Out Run (set 3)" )
1349 GAMEX(19??, toutrun,  0,        outrun,   outrun,   outrun,   ROT0,         "Sega", "Turbo Outrun (set 1)", GAME_NOT_WORKING )
1350 GAMEX(19??, toutruna, toutrun,  outrun,   outrun,   outrun,   ROT0,         "Sega", "Turbo Outrun (set 2)", GAME_NOT_WORKING )
1351