1 /*
2 	Sega System16 Hardware
3 	major cleanup in progress - still a lot to do!
4 
5 	see vidhrdw/system16.c for more information
6 */
7 
8 /***************************************************************************/
9 /*
10   ASTORMBL
11           3. In the ending, the 3 heroes are floating into a half bubble. (see picture).
12           Also colour problems during ending as well.
13           4. In the later Shooting gallery stage (like inside the car shop and the factory (mission 3)),
14 		  there is some garbage graphics (sprite of death monsters that appear where they should not)
15 
16 	working:
17 		Alex Kidd
18 		Alien Storm (bootleg)
19 		Alien Syndrome
20 		Altered Beast (Ver 1)
21 		Altered Beast (Ver 2)	(No Sound)
22 		Atomic Point			(No Sound)
23 		Aurail					(Speech quality sounds poor)
24 		Aurail (317-0168)
25 		Bay Route
26 		Body Slam
27 	    Dump Matsumoto (Japan, Body Slam)
28 		Dynamite Dux (bootleg)
29 		Enduro Racer (bootleg)
30 		Enduro Racer (custom bootleg)
31 		E-Swat (bootleg)
32 		Fantasy Zone (Old Ver.)
33 		Fantasy Zone (New Ver.)
34 		Flash Point  (bootleg)
35 		Golden Axe (Ver 1)
36 		Golden Axe (Ver 2)
37 		Hang-on
38 		Heavyweight Champ: some minor graphics glitches
39 		Major League: No game over.
40 		Moonwalker (bootleg): Music Speed varies
41 		Outrun (set 1)
42 		Outrun (set 2)
43 		Outrun (custom bootleg)
44 		Passing Shot (bootleg)
45 		Passing Shot (4 player bootleg)
46 		Quartet: Glitch on highscore list
47 		Quartet (Japan): Glitch on highscore list
48 		Quartet 2: Glitch on highscore list
49 		Riot City
50 		SDI
51 		Shadow Dancer
52 		Shadow Dancer (Japan)
53 		Shinobi
54 		Shinobi (Sys16A Bootleg?)
55 		Space Harrier
56 		Super Hangon (bootleg)
57 		Tetris (bootleg)
58 		Time Scanner
59 		Toryumon
60 		Tough Turf (Japan)			(No Sound)
61 		Tough Turf (US)				(No Sound)
62 		Tough Turf (bootleg)	(No Speech Roms)
63 		Wonderboy 3 - Monster Lair
64 		Wonderboy 3 - Monster Lair (bootleg)
65 		Wrestle War
66 
67 	not really working:
68 		Shadow Dancer (bootleg)
69 
70 	protected:
71 		Alex Kidd (jpn?)
72 		Alien Syndrome
73 		Alien Syndrome
74 		Alien Syndrome (Japan)
75 		Alien Storm
76 		Alien Storm (2 Player)
77 		Bay Route (317-0116)
78 		Bay Route (protected bootleg 1)
79 		Bay Route (protected bootleg 2)
80 		Enduro Racer
81 		E-Swat
82 		Flash Point
83 		Golden Axe (Ver 1 317-0121 Japan)
84 		Golden Axe (Ver 2 317-0110)
85 		Golden Axe (Ver 2 317-0122)
86 		Golden Axe (protected bootleg)
87 		Jyuohki (Japan, altered beast)
88 		Moonwalker (317-0158)
89 		Moonwalker (317-0159)
90 		Passing Shot (317-0080)
91 		Shinobi (Sys16B 317-0049)
92 		Shinobi (Sys16A 317-0050)
93 		SDI (Japan, old version)
94 		Super Hangon
95 		Tetris (Type A)
96 		Tetris (Type B 317-0092)
97 		Wonderboy 3 - Monster Lair (317-0089)
98 
99 	protected (No driver):
100 		Ace Attacker
101 		Action Fighter
102 		Bloxeed
103 		Clutch Hitter
104 		Cotton (Japan)
105 		Cotton
106 		DD Crew
107 		Dunk Shot
108 		Excite League
109 		Laser Ghost
110 		MVP
111 		Ryukyu
112 		Super Leagu
113 		Turbo Outrun
114 		Turbo Outrun (Set 2)
115 */
116 
117 #include "driver.h"
118 #include "vidhrdw/generic.h"
119 #include "cpu/z80/z80.h"
120 #include "cpu/i8039/i8039.h"
121 #include "system16.h"
122 
123 /***************************************************************************/
124 
125 // 7751 emulation
126 WRITE_HANDLER( sys16_7751_audio_8255_w );
127  READ_HANDLER( sys16_7751_audio_8255_r );
128  READ_HANDLER( sys16_7751_sh_rom_r );
129  READ_HANDLER( sys16_7751_sh_t1_r );
130  READ_HANDLER( sys16_7751_sh_command_r );
131 WRITE_HANDLER( sys16_7751_sh_dac_w );
132 WRITE_HANDLER( sys16_7751_sh_busy_w );
133 WRITE_HANDLER( sys16_7751_sh_offset_a0_a3_w );
134 WRITE_HANDLER( sys16_7751_sh_offset_a4_a7_w );
135 WRITE_HANDLER( sys16_7751_sh_offset_a8_a11_w );
136 WRITE_HANDLER( sys16_7751_sh_rom_select_w );
137 
138 /***************************************************************************/
139 
140 int sys16_wwfix=0, sys16_alienfix=0; //*
141 
142 static data16_t coinctrl;
143 
WRITE16_HANDLER(sys16_3d_coinctrl_w)144 static WRITE16_HANDLER( sys16_3d_coinctrl_w )
145 {
146 	if( ACCESSING_LSB ){
147 		coinctrl = data&0xff;
148 		sys16_refreshenable = coinctrl & 0x10;
149 		coin_counter_w(0,coinctrl & 0x01);
150 		/* bit 6 is also used (0 in fantzone) */
151 
152 		/* Hang-On, Super Hang-On, Space Harrier, Enduro Racer */
153 		set_led_status(0,coinctrl & 0x04);
154 
155 		/* Space Harrier */
156 		set_led_status(1,coinctrl & 0x08);
157 	}
158 }
159 
INTERRUPT_GEN(sys16_interrupt)160 static INTERRUPT_GEN( sys16_interrupt )
161 {
162 	if(sys16_custom_irq) sys16_custom_irq();
163 	cpu_set_irq_line(0, 4, HOLD_LINE); /* Interrupt vector 4, used by VBlank */
164 }
165 
166 
167 
168 /***************************************************************************/
169 
MEMORY_READ_START(sound_readmem)170 static MEMORY_READ_START( sound_readmem )
171 	{ 0x0000, 0x7fff, MRA_ROM },
172 	{ 0xe800, 0xe800, soundlatch_r },
173 	{ 0xf800, 0xffff, MRA_RAM },
174 MEMORY_END
175 
176 static MEMORY_WRITE_START( sound_writemem )
177 	{ 0x0000, 0x7fff, MWA_ROM },
178 	{ 0xf800, 0xffff, MWA_RAM },
179 MEMORY_END
180 
181 static PORT_READ_START( sound_readport )
182 	{ 0x01, 0x01, YM2151_status_port_0_r },
183 	{ 0xc0, 0xc0, soundlatch_r },
184 PORT_END
185 
186 static PORT_WRITE_START( sound_writeport )
187 	{ 0x00, 0x00, YM2151_register_port_0_w },
188 	{ 0x01, 0x01, YM2151_data_port_0_w },
189 PORT_END
190 
191 // 7751 Sound
192 static MEMORY_READ_START( sound_readmem_7751 )
193 	{ 0x0000, 0x7fff, MRA_ROM },
194 	{ 0xe800, 0xe800, soundlatch_r },
195 	{ 0xf800, 0xffff, MRA_RAM },
196 MEMORY_END
197 
198 static PORT_READ_START( sound_readport_7751 )
199 	{ 0x01, 0x01, YM2151_status_port_0_r },
200 //    { 0x0e, 0x0e, sys16_7751_audio_8255_r },
201 	{ 0xc0, 0xc0, soundlatch_r },
202 PORT_END
203 
204 static PORT_WRITE_START( sound_writeport_7751 )
205 	{ 0x00, 0x00, YM2151_register_port_0_w },
206 	{ 0x01, 0x01, YM2151_data_port_0_w },
207 	{ 0x80, 0x80, sys16_7751_audio_8255_w },
208 PORT_END
209 
210 static MEMORY_READ_START( readmem_7751 )
211 	{ 0x0000, 0x03ff, MRA_ROM },
212 MEMORY_END
213 
214 static MEMORY_WRITE_START( writemem_7751 )
215 	{ 0x0000, 0x03ff, MWA_ROM },
216 MEMORY_END
217 
218 static PORT_READ_START( readport_7751 )
219 	{ I8039_t1,  I8039_t1,  sys16_7751_sh_t1_r },
220 	{ I8039_p2,  I8039_p2,  sys16_7751_sh_command_r },
221 	{ I8039_bus, I8039_bus, sys16_7751_sh_rom_r },
222 PORT_END
223 
224 static PORT_WRITE_START( writeport_7751 )
225 	{ I8039_p1, I8039_p1, sys16_7751_sh_dac_w },
226 	{ I8039_p2, I8039_p2, sys16_7751_sh_busy_w },
227 	{ I8039_p4, I8039_p4, sys16_7751_sh_offset_a0_a3_w },
228 	{ I8039_p5, I8039_p5, sys16_7751_sh_offset_a4_a7_w },
229 	{ I8039_p6, I8039_p6, sys16_7751_sh_offset_a8_a11_w },
230 	{ I8039_p7, I8039_p7, sys16_7751_sh_rom_select_w },
231 PORT_END
232 
233 // 7759
234 static MEMORY_READ_START( sound_readmem_7759 )
235 	{ 0x0000, 0x7fff, MRA_ROM },
236 	{ 0x8000, 0xdfff, MRA_BANK1 },
237 	{ 0xe800, 0xe800, soundlatch_r },
238 	{ 0xf800, 0xffff, MRA_RAM },
239 MEMORY_END
240 
241 
242 static WRITE_HANDLER( UPD7759_bank_w ) //*
243 {
244 	int offs, size = memory_region_length(REGION_CPU2) - 0x10000;
245 
246 	UPD7759_reset_w(0, data & 0x40);
247 	if (sys16_alienfix && (data&0x30)==0x20) data-=2;
248 	offs = 0x10000 + (data * 0x4000) % size;
249 	cpu_setbank(1, memory_region(REGION_CPU2) + offs);
250 }
251 
252 
PORT_WRITE_START(sound_writeport_7759)253 static PORT_WRITE_START( sound_writeport_7759 )
254 	{ 0x00, 0x00, YM2151_register_port_0_w },
255 	{ 0x01, 0x01, YM2151_data_port_0_w },
256 	{ 0x40, 0x40, UPD7759_bank_w },
257 	{ 0x80, 0x80, UPD7759_0_port_w },
258 PORT_END
259 
260 
261 static WRITE16_HANDLER( sound_command_w ){
262 	if( ACCESSING_LSB ){
263 		soundlatch_w( 0,data&0xff );
264 		cpu_set_irq_line( 1, 0, HOLD_LINE );
265 	}
266 }
267 
WRITE16_HANDLER(sound_command_nmi_w)268 static WRITE16_HANDLER( sound_command_nmi_w ){
269 	if( ACCESSING_LSB ){
270 		soundlatch_w( 0,data&0xff );
271 		cpu_set_nmi_line(1, PULSE_LINE);
272 	}
273 }
274 
275 //static data16_t coinctrl;
276 
READ16_HANDLER(sys16_coinctrl_r)277 static READ16_HANDLER( sys16_coinctrl_r ){
278 	return coinctrl;
279 }
280 
WRITE16_HANDLER(sys16_coinctrl_w)281 static WRITE16_HANDLER( sys16_coinctrl_w )
282 {
283 	if( ACCESSING_LSB ){
284 		coinctrl = data&0xff;
285 		sys16_refreshenable = coinctrl & 0x20;
286 		coin_counter_w(0,coinctrl & 0x01);
287 		set_led_status(0,coinctrl & 0x04);
288 		set_led_status(1,coinctrl & 0x08);
289 		/* bit 6 is also used (1 most of the time; 0 in dduxbl, sdi, wb3;
290 		   tturf has it normally 1 but 0 after coin insertion) */
291 		/* eswat sets bit 4 */
292 	}
293 }
294 
295 /***************************************************************************/
296 
297 static MACHINE_DRIVER_START( system16 )
298 
299 	/* basic machine hardware */
300 	MDRV_CPU_ADD_TAG("main", M68000, 10000000)
301 	MDRV_CPU_VBLANK_INT(sys16_interrupt,1)
302 
303 	MDRV_CPU_ADD_TAG("sound", Z80, 4000000)
MDRV_CPU_FLAGS(CPU_AUDIO_CPU)304 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
305 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
306 	MDRV_CPU_PORTS(sound_readport,sound_writeport)
307 
308 	MDRV_FRAMES_PER_SECOND(60)
309 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
310 
311 	/* video hardware */
312 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
313 	MDRV_SCREEN_SIZE(40*8, 28*8)
314 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
315 	MDRV_GFXDECODE(sys16_gfxdecodeinfo)
316 	MDRV_PALETTE_LENGTH(2048*ShadowColorsMultiplier)
317 
318 	MDRV_VIDEO_START(system16)
319 	MDRV_VIDEO_UPDATE(system16)
320 
321 	/* sound hardware */
322 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
323 	MDRV_SOUND_ADD_TAG("2151", YM2151, sys16_ym2151_interface)
324 MACHINE_DRIVER_END
325 
326 
327 static MACHINE_DRIVER_START( system16_7759 )
328 
329 	/* basic machine hardware */
330 	MDRV_IMPORT_FROM(system16)
331 
332 	MDRV_CPU_MODIFY("sound")
333 	MDRV_CPU_MEMORY(sound_readmem_7759,sound_writemem)
334 	MDRV_CPU_PORTS(sound_readport,sound_writeport_7759)
335 
336 	/* sound hardware */
337 	MDRV_SOUND_ADD_TAG("7759", UPD7759, sys16_upd7759_interface)
338 MACHINE_DRIVER_END
339 
340 
341 static MACHINE_DRIVER_START( system16_7751 )
342 
343 	/* basic machine hardware */
344 	MDRV_IMPORT_FROM(system16)
345 
346 	MDRV_CPU_MODIFY("sound")
347 	MDRV_CPU_MEMORY(sound_readmem_7751,sound_writemem)
348 	MDRV_CPU_PORTS(sound_readport_7751,sound_writeport_7751)
349 
350 	MDRV_CPU_ADD(N7751, 6000000/15)
351 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
352 	MDRV_CPU_MEMORY(readmem_7751,writemem_7751)
353 	MDRV_CPU_PORTS(readport_7751,writeport_7751)
354 
355 	/* sound hardware */
356 	MDRV_SOUND_ADD(DAC, sys16_7751_dac_interface)
357 MACHINE_DRIVER_END
358 
359 /***************************************************************************/
360 
361 static void set_tile_bank( int data ){
362 	sys16_tile_bank1 = data&0xf;
363 	sys16_tile_bank0 = (data>>4)&0xf;
364 }
365 
366 #if 0
367 static void set_tile_bank18( int data ){
368 	sys16_tile_bank0 = data&0xf;
369 	sys16_tile_bank1 = (data>>4)&0xf;
370 }
371 #endif
372 
set_fg_page(int data)373 static void set_fg_page( int data ){
374 	sys16_fg_page[0] = data>>12;
375 	sys16_fg_page[1] = (data>>8)&0xf;
376 	sys16_fg_page[2] = (data>>4)&0xf;
377 	sys16_fg_page[3] = data&0xf;
378 }
379 
set_bg_page(int data)380 static void set_bg_page( int data ){
381 	sys16_bg_page[0] = data>>12;
382 	sys16_bg_page[1] = (data>>8)&0xf;
383 	sys16_bg_page[2] = (data>>4)&0xf;
384 	sys16_bg_page[3] = data&0xf;
385 }
386 
set_fg_page1(int data)387 static void set_fg_page1( int data ){
388 	sys16_fg_page[1] = data>>12;
389 	sys16_fg_page[0] = (data>>8)&0xf;
390 	sys16_fg_page[3] = (data>>4)&0xf;
391 	sys16_fg_page[2] = data&0xf;
392 }
393 
set_bg_page1(int data)394 static void set_bg_page1( int data ){
395 	sys16_bg_page[1] = data>>12;
396 	sys16_bg_page[0] = (data>>8)&0xf;
397 	sys16_bg_page[3] = (data>>4)&0xf;
398 	sys16_bg_page[2] = data&0xf;
399 }
400 
401 #if 0
402 static void set_fg2_page( int data ){
403 	sys16_fg2_page[0] = data>>12;
404 	sys16_fg2_page[1] = (data>>8)&0xf;
405 	sys16_fg2_page[2] = (data>>4)&0xf;
406 	sys16_fg2_page[3] = data&0xf;
407 }
408 
409 static void set_bg2_page( int data ){
410 	sys16_bg2_page[0] = data>>12;
411 	sys16_bg2_page[1] = (data>>8)&0xf;
412 	sys16_bg2_page[2] = (data>>4)&0xf;
413 	sys16_bg2_page[3] = data&0xf;
414 }
415 #endif
416 
417 /***************************************************************************/
418 // sys16A
419 ROM_START( alexkidd )
420 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
CRC(bdf49eca)421 	ROM_LOAD16_BYTE( "epr10429.42", 0x000000, 0x10000, CRC(bdf49eca) SHA1(899bc2d346544e4a33de51b60e02ebf7ee82cea8) )
422 	ROM_LOAD16_BYTE( "epr10427.26", 0x000001, 0x10000, CRC(f6e3dd29) SHA1(bb94ebc062bb7c6c13b68579053b9cbe8b92417c) )
423 	ROM_LOAD16_BYTE( "epr10430.43", 0x020000, 0x10000, CRC(89e3439f) SHA1(7c751bb477584842d93fda6686b03e289140bd62) )
424 	ROM_LOAD16_BYTE( "epr10428.25", 0x020001, 0x10000, CRC(dbed3210) SHA1(1e2d22935a633641ff88967d67ec673ee25cbf55) )
425 
426 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
427 	ROM_LOAD( "10431.95", 0x00000, 0x08000, CRC(a7962c39) SHA1(c816fc5d9f21b2ba32b9841e64b634bce7ea78c8) )
428 	ROM_LOAD( "10432.94", 0x08000, 0x08000, CRC(db8cd24e) SHA1(656d98844ad9ccaa68e3f501137dddd0a27d999d) )
429 	ROM_LOAD( "10433.93", 0x10000, 0x08000, CRC(e163c8c2) SHA1(ac54c5ecedca5b1a2c550de32687ca57c4d3a411) )
430 
431 	ROM_REGION( 0x040000, REGION_GFX2, 0 ) /* sprites */
432 	ROM_LOAD16_BYTE( "10437.10", 0x000001, 0x8000, CRC(522f7618) SHA1(9a6bc857dfef1dd1b7bffa034523c1c4cd8b3f4c) )
433 	ROM_LOAD16_BYTE( "10441.11", 0x000000, 0x8000, CRC(74e3a35c) SHA1(26b980a0a3aee94ac38e0e0c7d305bb35a60d1c4) )
434 	ROM_LOAD16_BYTE( "10438.17", 0x010001, 0x8000, CRC(738a6362) SHA1(a3c5f10c263cb216d275875f6333484a1cca281b) )
435 	ROM_LOAD16_BYTE( "10442.18", 0x010000, 0x8000, CRC(86cb9c14) SHA1(42bd0ed985de61ff183eed0192257966caa01594) )
436 	ROM_LOAD16_BYTE( "10439.23", 0x020001, 0x8000, CRC(b391aca7) SHA1(ca9d80b67e5365f709f90a5342b5e3aa7c7126e1) )
437 	ROM_LOAD16_BYTE( "10443.24", 0x020000, 0x8000, CRC(95d32635) SHA1(788af2af1ae783128bcdc8cd44d17cd2f1542231) )
438 	ROM_LOAD16_BYTE( "10440.29", 0x030001, 0x8000, CRC(23939508) SHA1(68450a18fc7e35f5b0155632aa68cffd251be38c) )
439 	ROM_LOAD16_BYTE( "10444.30", 0x030000, 0x8000, CRC(82115823) SHA1(e4103003cda949bebe57815115a5028f4fe8e7d7) )
440 
441 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
442 	ROM_LOAD( "10434.12", 0x0000, 0x8000, CRC(77141cce) SHA1(6c5e83527f7e11a5ff5cc4fa75d55618a55e1a58) )
443 
444 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
445 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
446 
447 	ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 7751 sound data (not used yet) */
448 	ROM_LOAD( "10435.1", 0x0000, 0x8000, CRC(ad89f6e3) SHA1(812a132142065b0fe13b5f0ac534b6d8830ba102) )
449 	ROM_LOAD( "10436.2", 0x8000, 0x8000, CRC(96c76613) SHA1(fe3e4e649fd2cb2453eec0c92015bd54b3b9a1b5) )
450 ROM_END
451 
452 ROM_START( alexkida )
453 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
454 	ROM_LOAD16_BYTE( "10447.43", 0x000000, 0x10000, CRC(29e87f71) SHA1(af980e55c02b3de1121c144fee23af74d24042ac) )
455 	ROM_LOAD16_BYTE( "10445.26", 0x000001, 0x10000, CRC(25ce5b6f) SHA1(dfec64df7e8d145d30740808bc94bdbbe667c4e8) )
456 	ROM_LOAD16_BYTE( "10448.42", 0x020000, 0x10000, CRC(05baedb5) SHA1(fc15989bf3d850170e4e018d74f18553f0268576) )
457 	ROM_LOAD16_BYTE( "10446.25", 0x020001, 0x10000, CRC(cd61d23c) SHA1(c235c4fef28556e9f2d07e815ad213c308e85598) )
458 
459 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
460 	ROM_LOAD( "10431.95", 0x00000, 0x08000, CRC(a7962c39) SHA1(c816fc5d9f21b2ba32b9841e64b634bce7ea78c8) )
461 	ROM_LOAD( "10432.94", 0x08000, 0x08000, CRC(db8cd24e) SHA1(656d98844ad9ccaa68e3f501137dddd0a27d999d) )
462 	ROM_LOAD( "10433.93", 0x10000, 0x08000, CRC(e163c8c2) SHA1(ac54c5ecedca5b1a2c550de32687ca57c4d3a411) )
463 
464 	ROM_REGION( 0x040000, REGION_GFX2, 0 ) /* sprites */
465 	ROM_LOAD16_BYTE( "10437.10", 0x000001, 0x8000, CRC(522f7618) SHA1(9a6bc857dfef1dd1b7bffa034523c1c4cd8b3f4c) )
466 	ROM_LOAD16_BYTE( "10441.11", 0x000000, 0x8000, CRC(74e3a35c) SHA1(26b980a0a3aee94ac38e0e0c7d305bb35a60d1c4) )
467 	ROM_LOAD16_BYTE( "10438.17", 0x010001, 0x8000, CRC(738a6362) SHA1(a3c5f10c263cb216d275875f6333484a1cca281b) )
468 	ROM_LOAD16_BYTE( "10442.18", 0x010000, 0x8000, CRC(86cb9c14) SHA1(42bd0ed985de61ff183eed0192257966caa01594) )
469 	ROM_LOAD16_BYTE( "10439.23", 0x020001, 0x8000, CRC(b391aca7) SHA1(ca9d80b67e5365f709f90a5342b5e3aa7c7126e1) )
470 	ROM_LOAD16_BYTE( "10443.24", 0x020000, 0x8000, CRC(95d32635) SHA1(788af2af1ae783128bcdc8cd44d17cd2f1542231) )
471 	ROM_LOAD16_BYTE( "10440.29", 0x030001, 0x8000, CRC(23939508) SHA1(68450a18fc7e35f5b0155632aa68cffd251be38c) )
472 	ROM_LOAD16_BYTE( "10444.30", 0x030000, 0x8000, CRC(82115823) SHA1(e4103003cda949bebe57815115a5028f4fe8e7d7) )
473 
474 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
475 	ROM_LOAD( "10434.12", 0x0000, 0x8000, CRC(77141cce) SHA1(6c5e83527f7e11a5ff5cc4fa75d55618a55e1a58) )
476 
477 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
478 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
479 
480 	ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* 7751 sound data */
481 	ROM_LOAD( "10435.1", 0x0000, 0x8000, CRC(ad89f6e3) SHA1(812a132142065b0fe13b5f0ac534b6d8830ba102) )
482 	ROM_LOAD( "10436.2", 0x8000, 0x8000, CRC(96c76613) SHA1(fe3e4e649fd2cb2453eec0c92015bd54b3b9a1b5) )
483 ROM_END
484 
485 /***************************************************************************/
486 
487 static READ16_HANDLER( alexkidd_skip_r ){
488 	if (activecpu_get_pc()==0x242c) {cpu_spinuntil_int(); return 0xffff;}
489 	return sys16_workingram[0x3108/2];
490 }
491 
MEMORY_READ16_START(alexkidd_readmem)492 static MEMORY_READ16_START( alexkidd_readmem )
493 	{ 0x000000, 0x03ffff, MRA16_ROM },
494 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
495 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
496 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
497 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
498 	{ 0xc40002, 0xc40005, MRA16_NOP },		//??
499 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
500 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
501 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
502 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
503 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
504 	{ 0xc60000, 0xc60001, MRA16_NOP },
505 	{ 0xfff108, 0xfff109, alexkidd_skip_r },
506 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
507 MEMORY_END
508 
509 static MEMORY_WRITE16_START( alexkidd_writemem )
510 	{ 0x000000, 0x03ffff, MWA16_ROM },
511 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
512 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
513 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
514 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
515 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
516 	{ 0xc40002, 0xc40005, MWA16_NOP },		//??
517 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
518 MEMORY_END
519 
520 /***************************************************************************/
521 
522 static void alexkidd_update_proc( void ){
523 	set_bg_page1( sys16_textram[0x74e] );
524 	set_fg_page1( sys16_textram[0x74f] );
525 	sys16_fg_scrollx = sys16_textram[0x7fc] & 0x01ff;
526 	sys16_bg_scrollx = sys16_textram[0x7fd] & 0x01ff;
527 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
528 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
529 }
530 
MACHINE_INIT(alexkidd)531 static MACHINE_INIT( alexkidd ){
532 	sys16_textmode=1;
533 	sys16_spritesystem = sys16_sprite_quartet2;
534 	sys16_sprxoffset = -0xbc;
535 	sys16_fgxoffset = sys16_bgxoffset = 7;
536 	sys16_bg_priority_mode=1;
537 
538 	sys16_update_proc = alexkidd_update_proc;
539 }
540 
DRIVER_INIT(alexkidd)541 static DRIVER_INIT( alexkidd )
542 {
543 	machine_init_sys16_onetime();
544 }
545 /***************************************************************************/
546 
INPUT_PORTS_START(alexkidd)547 INPUT_PORTS_START( alexkidd )
548 	SYS16_JOY1_SWAPPEDBUTTONS
549 	SYS16_JOY2_SWAPPEDBUTTONS
550 	SYS16_SERVICE
551 	SYS16_COINAGE
552 
553 PORT_START	/* DSW1 */
554 	PORT_DIPNAME( 0x01, 0x00, "Continues" )
555 	PORT_DIPSETTING(    0x01, "Only before level 5" )
556 	PORT_DIPSETTING(    0x00, "Unlimited" )
557 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
558 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
559 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
560 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
561 	PORT_DIPSETTING(    0x0c, "3" )
562 	PORT_DIPSETTING(    0x08, "4" )
563 	PORT_DIPSETTING(    0x04, "5" )
564 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "240", IP_KEY_NONE, IP_JOY_NONE )
565 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
566 	PORT_DIPSETTING(    0x20, "10000" )
567 	PORT_DIPSETTING(    0x30, "20000" )
568 	PORT_DIPSETTING(    0x10, "40000" )
569 	PORT_DIPSETTING(    0x00, "None" )
570 	PORT_DIPNAME( 0xc0, 0xc0, "Time Adjust" )
571 	PORT_DIPSETTING(    0x80, "70" )
572 	PORT_DIPSETTING(    0xc0, "60" )
573 	PORT_DIPSETTING(    0x40, "50" )
574 	PORT_DIPSETTING(    0x00, "40" )
575 
576 INPUT_PORTS_END
577 
578 /***************************************************************************/
579 
580 static MACHINE_DRIVER_START( alexkidd )
581 
582 	/* basic machine hardware */
583 	MDRV_IMPORT_FROM(system16_7751)
584 	MDRV_CPU_MODIFY("main")
585 	MDRV_CPU_MEMORY(alexkidd_readmem,alexkidd_writemem)
586 
587 	MDRV_MACHINE_INIT(alexkidd)
588 MACHINE_DRIVER_END
589 
590 /***************************************************************************/
591 // sys16B
592 ROM_START( aliensyn )
593 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
594 	ROM_LOAD16_BYTE( "11083.a4", 0x00000, 0x8000, CRC(cb2ad9b3) SHA1(66284b4e1071b3cb4b36960a2dba8949325f9e86) )
595 	ROM_LOAD16_BYTE( "11080.a1", 0x00001, 0x8000, CRC(fe7378d9) SHA1(acfee79e5fe9fdf95926562c02599e96e96f76b5) )
596 	ROM_LOAD16_BYTE( "11084.a5", 0x10000, 0x8000, CRC(2e1ec7b1) SHA1(666a9e402d7d02d74c0a2468853a3843b161c1a2) )
597 	ROM_LOAD16_BYTE( "11081.a2", 0x10001, 0x8000, CRC(1308ee63) SHA1(36a4c8cf3a310398e264c57c7c6f53c05dbc0108) )
598 	ROM_LOAD16_BYTE( "11085.a6", 0x20000, 0x8000, CRC(cff78f39) SHA1(78431ce6c03232150a8db15499da9371977b570b) )
599 	ROM_LOAD16_BYTE( "11082.a3", 0x20001, 0x8000, CRC(9cdc2a14) SHA1(c06693f45675e31d591703c27bb3f6ec02fc1215) )
600 
601 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
602 	ROM_LOAD( "10702.b9",  0x00000, 0x10000, CRC(393bc813) SHA1(672782c8fb2a6e454b27e073acc26130cacf3e50) )
603 	ROM_LOAD( "10703.b10", 0x10000, 0x10000, CRC(6b6dd9f5) SHA1(964409c6630caa13caf7d644d0c6fb071860b61b) )
604 	ROM_LOAD( "10704.b11", 0x20000, 0x10000, CRC(911e7ebc) SHA1(f03d3d3a09d19f7b705f9cb29f73140a3073463f) )
605 
606 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
607 	ROM_LOAD16_BYTE( "10709.b1", 0x00001, 0x10000, CRC(addf0a90) SHA1(a92c9531f1817763773471ce63f566b9e88360a0) )
608 	ROM_LOAD16_BYTE( "10713.b5", 0x00000, 0x10000, CRC(ececde3a) SHA1(9c12d4665179bf433c42f5ddc8a043ad592aa90e) )
609 	ROM_LOAD16_BYTE( "10710.b2", 0x20001, 0x10000, CRC(992369eb) SHA1(c6796acf6807e9ba4c3d241903653f91adf4764e) )
610 	ROM_LOAD16_BYTE( "10714.b6", 0x20000, 0x10000, CRC(91bf42fb) SHA1(4b9d3e97768323dee01e92378adafecb26bcc094) )
611 	ROM_LOAD16_BYTE( "10711.b3", 0x40001, 0x10000, CRC(29166ef6) SHA1(99a7cfd7d811537c821412a320beadb5a9c09af3) )
612 	ROM_LOAD16_BYTE( "10715.b7", 0x40000, 0x10000, CRC(a7c57384) SHA1(46f8efa691d7bbb0a18119c0ff12cff7c0d129e1) )
613 	ROM_LOAD16_BYTE( "10712.b4", 0x60001, 0x10000, CRC(876ad019) SHA1(39973ddb5a5746e0e094c759447bff1130c72c84) )
614 	ROM_LOAD16_BYTE( "10716.b8", 0x60000, 0x10000, CRC(40ba1d48) SHA1(e2d4d2689bb9b9bdc85e7f72a6665e5fd4c583aa) )
615 
616 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
617 	ROM_LOAD( "10723.a7", 0x00000, 0x8000, CRC(99953526) SHA1(4a980370923fd5d3dc9e25d42a032c9e78c7ff47) )
618 	ROM_LOAD( "10724.a8", 0x10000, 0x8000, CRC(f971a817) SHA1(502c95638e4fd5f87e5fc837cb44b39a5d62f4e4) )
619 	ROM_LOAD( "10726.a10",0x18000, 0x8000, CRC(d50b7736) SHA1(b1f8e3b0cf2ffee5382098100cfabe21b383cd51) ) //*
620 	ROM_LOAD( "10725.a9", 0x20000, 0x8000, CRC(6a50e08f) SHA1(d34b2ccadb8b07d5ad99cab5c5b5b79642c65574) )
621 ROM_END
622 
623 // sys16A - use a different sound chip?
624 ROM_START( aliensya )
625 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code. I guessing the order a bit here */
626 	ROM_LOAD16_BYTE( "10808", 0x00000, 0x8000, CRC(e669929f) SHA1(b5ab41d6f31f0369f8c5f5eb6fc08e8c23312b96) )
627 	ROM_LOAD16_BYTE( "10806", 0x00001, 0x8000, CRC(9f7f8fdd) SHA1(819e9c491b7d23deaef646d37319c38e75827d68) )
628 	ROM_LOAD16_BYTE( "10809", 0x10000, 0x8000, CRC(9a424919) SHA1(a7be5d9bed329099df10ff5a0104cb832485bd0a) )
629 	ROM_LOAD16_BYTE( "10807", 0x10001, 0x8000, CRC(3d2c3530) SHA1(567ed45c84b1d3d92371c4ad33fdb28f68cf29a3) )
630 	ROM_LOAD16_BYTE( "10701", 0x20000, 0x8000, CRC(92171751) SHA1(69a282c01db7224f32386a6db25309e09e29a112) )
631 	ROM_LOAD16_BYTE( "10698", 0x20001, 0x8000, CRC(c1e4fdc0) SHA1(65817a9336f7887d2bf14485bdff8352c960d2ab) )
632 
633 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
634 	ROM_LOAD( "10739", 0x00000, 0x10000, CRC(a29ec207) SHA1(c469d2689a7bdc2a59dfff56ce13d34e9fbac263) )
635 	ROM_LOAD( "10740", 0x10000, 0x10000, CRC(47f93015) SHA1(68247a6bffd1d4d1c450148dd46214d01ce1c668) )
636 	ROM_LOAD( "10741", 0x20000, 0x10000, CRC(4970739c) SHA1(5bdf4222209ec46e0015bfc0f90578dd9b30bdd1) )
637 
638 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
639 	ROM_LOAD16_BYTE( "10709.b1", 0x00001, 0x10000, CRC(addf0a90) SHA1(a92c9531f1817763773471ce63f566b9e88360a0) )
640 	ROM_LOAD16_BYTE( "10713.b5", 0x00000, 0x10000, CRC(ececde3a) SHA1(9c12d4665179bf433c42f5ddc8a043ad592aa90e) )
641 	ROM_LOAD16_BYTE( "10710.b2", 0x20001, 0x10000, CRC(992369eb) SHA1(c6796acf6807e9ba4c3d241903653f91adf4764e) )
642 	ROM_LOAD16_BYTE( "10714.b6", 0x20000, 0x10000, CRC(91bf42fb) SHA1(4b9d3e97768323dee01e92378adafecb26bcc094) )
643 	ROM_LOAD16_BYTE( "10711.b3", 0x40001, 0x10000, CRC(29166ef6) SHA1(99a7cfd7d811537c821412a320beadb5a9c09af3) )
644 	ROM_LOAD16_BYTE( "10715.b7", 0x40000, 0x10000, CRC(a7c57384) SHA1(46f8efa691d7bbb0a18119c0ff12cff7c0d129e1) )
645 	ROM_LOAD16_BYTE( "10712.b4", 0x60001, 0x10000, CRC(876ad019) SHA1(39973ddb5a5746e0e094c759447bff1130c72c84) )
646 	ROM_LOAD16_BYTE( "10716.b8", 0x60000, 0x10000, CRC(40ba1d48) SHA1(e2d4d2689bb9b9bdc85e7f72a6665e5fd4c583aa) )
647 
648 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
649 	ROM_LOAD( "10705", 0x00000, 0x8000, CRC(777b749e) SHA1(086b03100064a98228f95db7962b2671121c46ea) )
650 	ROM_LOAD( "10706", 0x10000, 0x8000, CRC(aa114acc) SHA1(81a2b3586ae90bc7fc55b82478ffe182ac49983e) )
651 	ROM_LOAD( "10707", 0x18000, 0x8000, CRC(800c1d82) SHA1(aac4123bd35f87da09264649f4cf8326b2ba3cb8) )
652 	ROM_LOAD( "10708", 0x20000, 0x8000, CRC(5921ef52) SHA1(eff9978361692e6e60a9c6caf5740dd6182cfe4a) )
653 ROM_END
654 
655 ROM_START( aliensyj )
656 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* Custom 68000 code . I guessing the order a bit here */
657 // custom cpu 317-0033
658 	ROM_LOAD16_BYTE( "epr10699.43", 0x00000, 0x8000, CRC(3fd38d17) SHA1(538c1246121051a1af9ba2a4259eb1fe7e4952e1) )
659 	ROM_LOAD16_BYTE( "epr10696.26", 0x00001, 0x8000, CRC(d734f19f) SHA1(4a08c35084f7a9364ba0f058b9a9ffc30c8b5a78) )
660 	ROM_LOAD16_BYTE( "epr10700.42", 0x10000, 0x8000, CRC(3b04b252) SHA1(0e40e89e8feb7c98ee1da1c3fb3fe1d317c66842) )
661 	ROM_LOAD16_BYTE( "epr10697.25", 0x10001, 0x8000, CRC(f2bc123d) SHA1(7848529342495289e2d4f865767f3649cd85993b) )
662 	ROM_LOAD16_BYTE( "10701", 0x20000, 0x8000, CRC(92171751) SHA1(69a282c01db7224f32386a6db25309e09e29a112) )
663 	ROM_LOAD16_BYTE( "10698", 0x20001, 0x8000, CRC(c1e4fdc0) SHA1(65817a9336f7887d2bf14485bdff8352c960d2ab) )
664 
665 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
666 	ROM_LOAD( "10739", 0x00000, 0x10000, CRC(a29ec207) SHA1(c469d2689a7bdc2a59dfff56ce13d34e9fbac263) )
667 	ROM_LOAD( "10740", 0x10000, 0x10000, CRC(47f93015) SHA1(68247a6bffd1d4d1c450148dd46214d01ce1c668) )
668 	ROM_LOAD( "10741", 0x20000, 0x10000, CRC(4970739c) SHA1(5bdf4222209ec46e0015bfc0f90578dd9b30bdd1) )
669 
670 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
671 	ROM_LOAD16_BYTE( "10709.b1", 0x00001, 0x10000, CRC(addf0a90) SHA1(a92c9531f1817763773471ce63f566b9e88360a0) )
672 	ROM_LOAD16_BYTE( "10713.b5", 0x00000, 0x10000, CRC(ececde3a) SHA1(9c12d4665179bf433c42f5ddc8a043ad592aa90e) )
673 	ROM_LOAD16_BYTE( "10710.b2", 0x20001, 0x10000, CRC(992369eb) SHA1(c6796acf6807e9ba4c3d241903653f91adf4764e) )
674 	ROM_LOAD16_BYTE( "10714.b6", 0x20000, 0x10000, CRC(91bf42fb) SHA1(4b9d3e97768323dee01e92378adafecb26bcc094) )
675 	ROM_LOAD16_BYTE( "10711.b3", 0x40001, 0x10000, CRC(29166ef6) SHA1(99a7cfd7d811537c821412a320beadb5a9c09af3) )
676 	ROM_LOAD16_BYTE( "10715.b7", 0x40000, 0x10000, CRC(a7c57384) SHA1(46f8efa691d7bbb0a18119c0ff12cff7c0d129e1) )
677 	ROM_LOAD16_BYTE( "10712.b4", 0x60001, 0x10000, CRC(876ad019) SHA1(39973ddb5a5746e0e094c759447bff1130c72c84) )
678 	ROM_LOAD16_BYTE( "10716.b8", 0x60000, 0x10000, CRC(40ba1d48) SHA1(e2d4d2689bb9b9bdc85e7f72a6665e5fd4c583aa) )
679 
680 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
681 	ROM_LOAD( "10705", 0x00000, 0x8000, CRC(777b749e) SHA1(086b03100064a98228f95db7962b2671121c46ea) )
682 	ROM_LOAD( "10706", 0x10000, 0x8000, CRC(aa114acc) SHA1(81a2b3586ae90bc7fc55b82478ffe182ac49983e) )
683 	ROM_LOAD( "10707", 0x18000, 0x8000, CRC(800c1d82) SHA1(aac4123bd35f87da09264649f4cf8326b2ba3cb8) )
684 	ROM_LOAD( "10708", 0x20000, 0x8000, CRC(5921ef52) SHA1(eff9978361692e6e60a9c6caf5740dd6182cfe4a) )
685 ROM_END
686 
687 
688 ROM_START( aliensyb )
689 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
690 	ROM_LOAD16_BYTE( "as_typeb.a4", 0x00000, 0x8000, CRC(17bf5304) SHA1(f6318c6c4a606d21ba43354229b60a51d8a3baa6) )
691 	ROM_LOAD16_BYTE( "as_typeb.a1", 0x00001, 0x8000, CRC(4cd134df) SHA1(541377bd6eba280d7f0367694032891989762485) )
692 	ROM_LOAD16_BYTE( "as_typeb.a5", 0x10000, 0x8000, CRC(c8b791b0) SHA1(7a83a6781ed5b43583d86d4ee5fb3120a650874b) )
693 	ROM_LOAD16_BYTE( "as_typeb.a2", 0x10001, 0x8000, CRC(bdcf4a30) SHA1(e11264999f15cef7c35b6569407bb3dd8e2dd236) )
694 	ROM_LOAD16_BYTE( "as_typeb.a6", 0x20000, 0x8000, CRC(1d0790aa) SHA1(c141b12aa7e4f86b96eabeb3f827ee26ddacde34) )
695 	ROM_LOAD16_BYTE( "as_typeb.a3", 0x20001, 0x8000, CRC(1e7586b7) SHA1(be4c2c03119aee1b8f26f3dd79c99ce431a43b28) )
696 
697 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
698 	ROM_LOAD( "10702.b9",  0x00000, 0x10000, CRC(393bc813) SHA1(672782c8fb2a6e454b27e073acc26130cacf3e50) )
699 	ROM_LOAD( "10703.b10", 0x10000, 0x10000, CRC(6b6dd9f5) SHA1(964409c6630caa13caf7d644d0c6fb071860b61b) )
700 	ROM_LOAD( "10704.b11", 0x20000, 0x10000, CRC(911e7ebc) SHA1(f03d3d3a09d19f7b705f9cb29f73140a3073463f) )
701 
702 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
703 	ROM_LOAD16_BYTE( "10709.b1", 0x00001, 0x10000, CRC(addf0a90) SHA1(a92c9531f1817763773471ce63f566b9e88360a0) )
704 	ROM_LOAD16_BYTE( "10713.b5", 0x00000, 0x10000, CRC(ececde3a) SHA1(9c12d4665179bf433c42f5ddc8a043ad592aa90e) )
705 	ROM_LOAD16_BYTE( "10710.b2", 0x20001, 0x10000, CRC(992369eb) SHA1(c6796acf6807e9ba4c3d241903653f91adf4764e) )
706 	ROM_LOAD16_BYTE( "10714.b6", 0x20000, 0x10000, CRC(91bf42fb) SHA1(4b9d3e97768323dee01e92378adafecb26bcc094) )
707 	ROM_LOAD16_BYTE( "10711.b3", 0x40001, 0x10000, CRC(29166ef6) SHA1(99a7cfd7d811537c821412a320beadb5a9c09af3) )
708 	ROM_LOAD16_BYTE( "10715.b7", 0x40000, 0x10000, CRC(a7c57384) SHA1(46f8efa691d7bbb0a18119c0ff12cff7c0d129e1) )
709 	ROM_LOAD16_BYTE( "10712.b4", 0x60001, 0x10000, CRC(876ad019) SHA1(39973ddb5a5746e0e094c759447bff1130c72c84) )
710 	ROM_LOAD16_BYTE( "10716.b8", 0x60000, 0x10000, CRC(40ba1d48) SHA1(e2d4d2689bb9b9bdc85e7f72a6665e5fd4c583aa) )
711 
712 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
713 	ROM_LOAD( "10723.a7", 0x0000, 0x8000, CRC(99953526) SHA1(4a980370923fd5d3dc9e25d42a032c9e78c7ff47) )
714 	ROM_LOAD( "10724.a8", 0x10000, 0x8000, CRC(f971a817) SHA1(502c95638e4fd5f87e5fc837cb44b39a5d62f4e4) )
715 	ROM_LOAD( "10725.a9", 0x18000, 0x8000, CRC(6a50e08f) SHA1(d34b2ccadb8b07d5ad99cab5c5b5b79642c65574) )
716 	ROM_LOAD( "10726.a10",0x20000, 0x8000, CRC(d50b7736) SHA1(b1f8e3b0cf2ffee5382098100cfabe21b383cd51) )
717 ROM_END
718 
719 /***************************************************************************/
720 
721 static MEMORY_READ16_START( aliensyn_readmem )
722 	{ 0x000000, 0x02ffff, MRA16_ROM },
723 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
724 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
725 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
726 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
727 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
728 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
729 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
730 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
731 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
732 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
733 MEMORY_END
734 
735 static MEMORY_WRITE16_START( aliensyn_writemem )
736 	{ 0x000000, 0x02ffff, MWA16_ROM },
737 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
738 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
739 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
740 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
741 	{ 0xc00006, 0xc00007, sound_command_w },
742 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
743 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
744 MEMORY_END
745 
746 /***************************************************************************/
747 
748 static void aliensyn_update_proc( void ){
749 	set_fg_page( sys16_textram[0x740] );
750 	set_bg_page( sys16_textram[0x741] );
751 	sys16_fg_scrolly = sys16_textram[0x748];
752 	sys16_bg_scrolly = sys16_textram[0x749];
753 	sys16_fg_scrollx = sys16_textram[0x74c];
754 	sys16_bg_scrollx = sys16_textram[0x74d];
755 }
756 
MACHINE_INIT(aliensyn)757 static MACHINE_INIT( aliensyn ){
758 	static int bank[16] = {
759 		0,0,0,0,
760 		0,0,0,3,
761 		0,0,0,2,
762 		0,1,0,0
763 	};
764 	sys16_obj_bank = bank;
765 
766 	sys16_bg_priority_mode=1;
767 	sys16_fg_priority_mode=1;
768 
769 	sys16_update_proc = aliensyn_update_proc;
770 
771 	sys16_alienfix = 1; //*
772 }
773 
DRIVER_INIT(aliensyn)774 static DRIVER_INIT( aliensyn )
775 {
776 	machine_init_sys16_onetime();
777 	sys16_bg1_trans=1;
778 }
779 
780 /***************************************************************************/
781 
INPUT_PORTS_START(aliensyn)782 INPUT_PORTS_START( aliensyn )
783 	SYS16_JOY1
784 	SYS16_JOY2
785 	SYS16_SERVICE
786 	SYS16_COINAGE
787 
788 PORT_START	/* DSW1 */
789 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
790 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
791 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
792 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
793 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
794 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
795 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
796 	PORT_DIPSETTING(    0x08, "2" )
797 	PORT_DIPSETTING(    0x0c, "3" )
798 	PORT_DIPSETTING(    0x04, "4" )
799 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "127", IP_KEY_NONE, IP_JOY_NONE )
800 	PORT_DIPNAME( 0x30, 0x30, "Timer" )
801 	PORT_DIPSETTING(    0x00, "120" )
802 	PORT_DIPSETTING(    0x10, "130" )
803 	PORT_DIPSETTING(    0x20, "140" )
804 	PORT_DIPSETTING(    0x30, "150" )
805 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
806 	PORT_DIPSETTING(    0x80, "Easy" )
807 	PORT_DIPSETTING(    0xc0, "Normal" )
808 	PORT_DIPSETTING(    0x40, "Hard" )
809 	PORT_DIPSETTING(    0x00, "Hardest" )
810 INPUT_PORTS_END
811 
812 /****************************************************************************/
813 
814 static MACHINE_DRIVER_START( aliensyn )
815 
816 	/* basic machine hardware */
817 	MDRV_IMPORT_FROM(system16_7759)
818 	MDRV_CPU_MODIFY("main")
819 	MDRV_CPU_MEMORY(aliensyn_readmem,aliensyn_writemem)
820 
821 	MDRV_MACHINE_INIT(aliensyn)
822 MACHINE_DRIVER_END
823 
824 /***************************************************************************/
825 // sys16B
826 ROM_START( altbeast )
827 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
828 	ROM_LOAD16_BYTE( "11705", 0x000000, 0x20000, CRC(57dc5c7a) SHA1(a5cc9b10a00778f5163fc915b956fa5d0d7a37ce) )
829 	ROM_LOAD16_BYTE( "11704", 0x000001, 0x20000, CRC(33bbcf07) SHA1(534e5426580dbf72509dceb762b8b99766d3a739) )
830 
831 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
832 	ROM_LOAD( "11674", 0x00000, 0x20000, CRC(a57a66d5) SHA1(5103583d48997abad12a0c5fee26431c486ced52) )
833 	ROM_LOAD( "11675", 0x20000, 0x20000, CRC(2ef2f144) SHA1(38d22d609db2d9b6067b5d12f6499436de4605cb) )
834 	ROM_LOAD( "11676", 0x40000, 0x20000, CRC(0c04acac) SHA1(87fe2a0dd9913f9550e9b4cbc7e7465b61640e07) )
835 
836 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
837 	ROM_LOAD16_BYTE( "epr11677.b1", 0x00001, 0x20000, CRC(a01425cd) SHA1(72be5ec29e476601f9bf6aaedef9b73cedeb42f0) )
838 	ROM_LOAD16_BYTE( "epr11681.b5", 0x00000, 0x20000, CRC(d9e03363) SHA1(995a7c6a8f0c61468b57a3bb407461a2a3ae8adc) )
839 	ROM_LOAD16_BYTE( "epr11678.b2", 0x40001, 0x20000, CRC(17a9fc53) SHA1(85a9a605742ae5aab86db37189b9ee4d54c70e56) )
840 	ROM_LOAD16_BYTE( "epr11682.b6", 0x40000, 0x20000, CRC(e3f77c5e) SHA1(6b3cb7918ab0c7c97a51cc5ea19ced3374ff3914) )
841 	ROM_LOAD16_BYTE( "epr11679.b3", 0x80001, 0x20000, CRC(14dcc245) SHA1(1ca1b6e0f2b7bedad2a8ab70f52da8c54d40d3cf) )
842 	ROM_LOAD16_BYTE( "epr11683.b7", 0x80000, 0x20000, CRC(f9a60f06) SHA1(0cffcfdb02733feaa869198b7e668c58b47c321a) )
843 	ROM_LOAD16_BYTE( "epr11680.b4", 0xc0001, 0x20000, CRC(f43dcdec) SHA1(2941500cf33afca487f19f2329033d5d17aad826) )
844 	ROM_LOAD16_BYTE( "epr11684.b8", 0xc0000, 0x20000, CRC(b20c0edb) SHA1(6c8694d05e3adac37c9015037ab800233371db36) )
845 
846 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
847 	ROM_LOAD( "11671",		 0x00000, 0x08000, CRC(2b71343b) SHA1(8a657f787de2b9d5161ed2c109642a148348af09) )
848 	ROM_LOAD( "opr11672",    0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) )
849 	ROM_LOAD( "opr11673",    0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) )
850 ROM_END
851 
852 ROM_START( jyuohki )
853 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* Custom 68000 code. */
854 // custom cpu 317-0065
855 	ROM_LOAD16_BYTE( "epr11670.a7", 0x000000, 0x20000, CRC(b748eb07) SHA1(f3663831610bcb358340f14c2c96833dd7591bfb) )
856 	ROM_LOAD16_BYTE( "epr11669.a5", 0x000001, 0x20000, CRC(005ecd11) SHA1(c392195955cf727752f03db92414701cc2bf1f4a) )
857 
858 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
859 	ROM_LOAD( "11674", 0x00000, 0x20000, CRC(a57a66d5) SHA1(5103583d48997abad12a0c5fee26431c486ced52) )
860 	ROM_LOAD( "11675", 0x20000, 0x20000, CRC(2ef2f144) SHA1(38d22d609db2d9b6067b5d12f6499436de4605cb) )
861 	ROM_LOAD( "11676", 0x40000, 0x20000, CRC(0c04acac) SHA1(87fe2a0dd9913f9550e9b4cbc7e7465b61640e07) )
862 
863 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
864 	ROM_LOAD16_BYTE( "epr11677.b1", 0x00001, 0x20000, CRC(a01425cd) SHA1(72be5ec29e476601f9bf6aaedef9b73cedeb42f0) )
865 	ROM_LOAD16_BYTE( "epr11681.b5", 0x00000, 0x20000, CRC(d9e03363) SHA1(995a7c6a8f0c61468b57a3bb407461a2a3ae8adc) )
866 	ROM_LOAD16_BYTE( "epr11678.b2", 0x40001, 0x20000, CRC(17a9fc53) SHA1(85a9a605742ae5aab86db37189b9ee4d54c70e56) )
867 	ROM_LOAD16_BYTE( "epr11682.b6", 0x40000, 0x20000, CRC(e3f77c5e) SHA1(6b3cb7918ab0c7c97a51cc5ea19ced3374ff3914) )
868 	ROM_LOAD16_BYTE( "epr11679.b3", 0x80001, 0x20000, CRC(14dcc245) SHA1(1ca1b6e0f2b7bedad2a8ab70f52da8c54d40d3cf) )
869 	ROM_LOAD16_BYTE( "epr11683.b7", 0x80000, 0x20000, CRC(f9a60f06) SHA1(0cffcfdb02733feaa869198b7e668c58b47c321a) )
870 	ROM_LOAD16_BYTE( "epr11680.b4", 0xc0001, 0x20000, CRC(f43dcdec) SHA1(2941500cf33afca487f19f2329033d5d17aad826) )
871 	ROM_LOAD16_BYTE( "epr11684.b8", 0xc0000, 0x20000, CRC(b20c0edb) SHA1(6c8694d05e3adac37c9015037ab800233371db36) )
872 
873 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
874 	ROM_LOAD( "11671",		 0x00000, 0x08000, CRC(2b71343b) SHA1(8a657f787de2b9d5161ed2c109642a148348af09) )
875 	ROM_LOAD( "opr11672",    0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) )
876 	ROM_LOAD( "opr11673",    0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) )
877 ROM_END
878 
879 // sys16B
880 ROM_START( altbeas2 )
881 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
882 	ROM_LOAD16_BYTE( "epr11740", 0x000000, 0x20000, CRC(ce227542) SHA1(54adcc1246943360bb68498e971809a0d4f9fe0c) )
883 	ROM_LOAD16_BYTE( "epr11739", 0x000001, 0x20000, CRC(e466eb65) SHA1(c9bb57818eb81a43abdf2ad2a79a0bd45c25d208) )
884 
885 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
886 	ROM_LOAD( "11674", 0x00000, 0x20000, CRC(a57a66d5) SHA1(5103583d48997abad12a0c5fee26431c486ced52) )
887 	ROM_LOAD( "11675", 0x20000, 0x20000, CRC(2ef2f144) SHA1(38d22d609db2d9b6067b5d12f6499436de4605cb) )
888 	ROM_LOAD( "11676", 0x40000, 0x20000, CRC(0c04acac) SHA1(87fe2a0dd9913f9550e9b4cbc7e7465b61640e07) )
889 
890 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
891 	ROM_LOAD16_BYTE( "epr11677.b1", 0x00001, 0x20000, CRC(a01425cd) SHA1(72be5ec29e476601f9bf6aaedef9b73cedeb42f0) )
892 	ROM_LOAD16_BYTE( "epr11681.b5", 0x00000, 0x20000, CRC(d9e03363) SHA1(995a7c6a8f0c61468b57a3bb407461a2a3ae8adc) )
893 	ROM_LOAD16_BYTE( "epr11678.b2", 0x40001, 0x20000, CRC(17a9fc53) SHA1(85a9a605742ae5aab86db37189b9ee4d54c70e56) )
894 	ROM_LOAD16_BYTE( "epr11682.b6", 0x40000, 0x20000, CRC(e3f77c5e) SHA1(6b3cb7918ab0c7c97a51cc5ea19ced3374ff3914) )
895 	ROM_LOAD16_BYTE( "epr11679.b3", 0x80001, 0x20000, CRC(14dcc245) SHA1(1ca1b6e0f2b7bedad2a8ab70f52da8c54d40d3cf) )
896 	ROM_LOAD16_BYTE( "epr11683.b7", 0x80000, 0x20000, CRC(f9a60f06) SHA1(0cffcfdb02733feaa869198b7e668c58b47c321a) )
897 	ROM_LOAD16_BYTE( "epr11680.b4", 0xc0001, 0x20000, CRC(f43dcdec) SHA1(2941500cf33afca487f19f2329033d5d17aad826) )
898 	ROM_LOAD16_BYTE( "epr11684.b8", 0xc0000, 0x20000, CRC(b20c0edb) SHA1(6c8694d05e3adac37c9015037ab800233371db36) )
899 
900 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
901 	ROM_LOAD( "opr11686",	 0x00000, 0x08000, CRC(828a45b3) SHA1(df921701b411afac1b6716b6798a1bffc2180133) )	// ???
902 	ROM_LOAD( "opr11672",    0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) )
903 	ROM_LOAD( "opr11673",    0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) )
904 ROM_END
905 
906 /***************************************************************************/
907 
908 static READ16_HANDLER( altbeast_skip_r )
909 {
910 	if (activecpu_get_pc()==0x3994) {cpu_spinuntil_int(); return 1<<8;}
911 	return sys16_workingram[0x301c/2];
912 }
913 
914 // ??? What is this, input test shows 4 bits to each player, but what does it do?
READ16_HANDLER(altbeast_io_r)915 static READ16_HANDLER( altbeast_io_r )
916 {
917 	return 0xff;
918 }
919 
MEMORY_READ16_START(altbeast_readmem)920 static MEMORY_READ16_START( altbeast_readmem )
921 	{ 0x000000, 0x03ffff, MRA16_ROM },
922 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
923 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
924 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
925 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
926 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
927 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
928 	{ 0xc41004, 0xc41005, altbeast_io_r },
929 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
930 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
931 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
932 	{ 0xfff01c, 0xfff01d, altbeast_skip_r },
933 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
934 MEMORY_END
935 
936 static MEMORY_WRITE16_START( altbeast_writemem )
937 	{ 0x000000, 0x03ffff, MWA16_ROM },
938 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
939 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
940 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
941 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
942 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
943 	{ 0xfe0006, 0xfe0007, sound_command_w },
944 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
945 MEMORY_END
946 
947 /***************************************************************************/
948 
949 static void altbeast_update_proc( void ){
950 	set_fg_page( sys16_textram[0x740] );
951 	set_bg_page( sys16_textram[0x741] );
952 	sys16_fg_scrolly = sys16_textram[0x748];
953 	sys16_bg_scrolly = sys16_textram[0x749];
954 	sys16_fg_scrollx = sys16_textram[0x74c];
955 	sys16_bg_scrollx = sys16_textram[0x74d];
956 
957 	set_tile_bank( sys16_workingram[0x3094/2] );
958 }
959 
MACHINE_INIT(altbeast)960 static MACHINE_INIT( altbeast ){
961 	sys16_update_proc = altbeast_update_proc;
962 }
963 
MACHINE_INIT(altbeas2)964 static MACHINE_INIT( altbeas2 ){
965 	static int bank[16] = {
966 		0x00,0x00,
967 		0x01,0x00,
968 		0x02,0x00,
969 		0x03,0x00,
970 		0x04,0x00,
971 		0x05,0x00,
972 		0x06,0x00,
973 		0x07,0x00
974 	};
975 	sys16_obj_bank = bank;
976 	sys16_update_proc = altbeast_update_proc;
977 }
978 
DRIVER_INIT(altbeast)979 static DRIVER_INIT( altbeast )
980 {
981 	machine_init_sys16_onetime();
982 }
983 
984 /***************************************************************************/
985 
INPUT_PORTS_START(altbeast)986 INPUT_PORTS_START( altbeast )
987 	SYS16_JOY1
988 	SYS16_JOY2
989 	SYS16_SERVICE
990 	SYS16_COINAGE
991 
992 PORT_START	/* DSW1 */
993 	PORT_DIPNAME( 0x01, 0x01, "Credits needed" )
994 	PORT_DIPSETTING(    0x01, "1 to start, 1 to continue" )
995 	PORT_DIPSETTING(    0x00, "2 to start, 1 to continue" )
996 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
997 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
998 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
999 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
1000 	PORT_DIPSETTING(    0x08, "2" )
1001 	PORT_DIPSETTING(    0x0c, "3" )
1002 	PORT_DIPSETTING(    0x04, "4" )
1003 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "240", IP_KEY_NONE, IP_JOY_NONE )
1004 	PORT_DIPNAME( 0x30, 0x30, "Energy Meter" )
1005 	PORT_DIPSETTING(    0x20, "2" )
1006 	PORT_DIPSETTING(    0x30, "3" )
1007 	PORT_DIPSETTING(    0x10, "4" )
1008 	PORT_DIPSETTING(    0x00, "5" )
1009 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
1010 	PORT_DIPSETTING(    0x80, "Easy" )
1011 	PORT_DIPSETTING(    0xc0, "Normal" )
1012 	PORT_DIPSETTING(    0x40, "Hard" )
1013 	PORT_DIPSETTING(    0x00, "Hardest" )
1014 INPUT_PORTS_END
1015 
1016 /***************************************************************************/
1017 
1018 static MACHINE_DRIVER_START( altbeast )
1019 
1020 	/* basic machine hardware */
1021 	MDRV_IMPORT_FROM(system16_7759)
1022 	MDRV_CPU_MODIFY("main")
1023 	MDRV_CPU_MEMORY(altbeast_readmem,altbeast_writemem)
1024 
1025 	MDRV_MACHINE_INIT(altbeast)
1026 MACHINE_DRIVER_END
1027 
1028 
1029 static MACHINE_DRIVER_START( altbeas2 )
1030 
1031 	/* basic machine hardware */
1032 	MDRV_IMPORT_FROM(system16_7759)
1033 	MDRV_CPU_MODIFY("main")
1034 	MDRV_CPU_MEMORY(altbeast_readmem,altbeast_writemem)
1035 
1036 	MDRV_MACHINE_INIT(altbeas2)
1037 MACHINE_DRIVER_END
1038 
1039 /***************************************************************************/
1040 // sys16B
1041 ROM_START( atomicp )
1042 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
1043 	ROM_LOAD16_BYTE( "ap-t2.bin", 0x000000, 0x10000, CRC(97421047) SHA1(18d61260470da7a0bef532f81df567a613c0d821) )
1044 	ROM_LOAD16_BYTE( "ap-t1.bin", 0x000001, 0x10000, CRC(5c65fe56) SHA1(aaf3b6f932c090b839817140c105f13c7d6b4ae2) )
1045 
1046 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1047 	ROM_LOAD( "ap-t4.bin",  0x00000, 0x8000, CRC(332e58f4) SHA1(cf5aeb6c14018cbd8f222a0ecf85ccf467f294a8) )
1048 	ROM_LOAD( "ap-t3.bin",  0x08000, 0x8000, CRC(dddc122c) SHA1(3411eae360ccd615636fb85e9738affc33c2c0ad) )
1049 	ROM_LOAD( "ap-t5.bin",  0x10000, 0x8000, CRC(ef5ecd6b) SHA1(07edc8ea4c0a5ad421df7f97e7a62a5e12a8dbd0) )
1050 
1051 	ROM_REGION( 0x1, REGION_GFX2, 0 ) /* sprites */
1052 ROM_END
1053 
1054 /***************************************************************************/
1055 
1056 #if 0
1057 static READ16_HANDLER( atomicp_skip_r ){
1058 	if (activecpu_get_pc()==0x7fc) {cpu_spinuntil_int(); return 0xffff;}
1059 	return sys16_workingram[0x0902/2];
1060 }
1061 #endif
1062 
1063 static MEMORY_READ16_START( atomicp_readmem )
1064 	{ 0x000000, 0x01ffff, MRA16_ROM },
1065 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1066 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1067 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
1068 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1069 	{ 0xc41000, 0xc41001, input_port_0_word_r }, // player1
1070 	{ 0xc41002, 0xc41003, input_port_1_word_r }, // player2
1071 	{ 0xc41004, 0xc41005, input_port_3_word_r }, // dip1
1072 	{ 0xc41006, 0xc41007, input_port_4_word_r }, // dip2
1073 //	{ 0xffc902, 0xffc903, atomicp_skip_r },
1074 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1075 MEMORY_END
1076 
1077 static WRITE16_HANDLER( atomicp_sound_w ){
1078 	if( ACCESSING_MSB ){
1079 		if(offset==0)
1080 			YM2413_register_port_0_w(0,(data>>8)&0xff);
1081 		else
1082 			YM2413_data_port_0_w(0,(data>>8)&0xff);
1083 	}
1084 }
1085 
MEMORY_WRITE16_START(atomicp_writemem)1086 static MEMORY_WRITE16_START( atomicp_writemem )
1087 	{ 0x000000, 0x01ffff, MWA16_ROM },
1088 	{ 0x080000, 0x080003, atomicp_sound_w },
1089 	{ 0x3f0000, 0x3f0003, MWA16_NOP },
1090 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
1091 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
1092 	{ 0x440000, 0x44ffff, SYS16_MWA16_SPRITERAM },
1093 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
1094 	{ 0xc40000, 0xc40001, SYS16_MWA16_EXTRAM2 },
1095 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
1096 MEMORY_END
1097 
1098 //	{ 0x0a, 0x0a, YM2413_register_port_0_w },
1099 //	{ 0x0b, 0x0b, YM2413_data_port_0_w },
1100 
1101 /***************************************************************************/
1102 
1103 static void atomicp_update_proc( void ){
1104 	set_fg_page( sys16_textram[0x740] );
1105 	set_bg_page( sys16_textram[0x741] );
1106 	sys16_fg_scrolly = sys16_textram[0x748];
1107 	sys16_bg_scrolly = sys16_textram[0x749];
1108 	sys16_fg_scrollx = sys16_textram[0x74c];
1109 	sys16_bg_scrollx = sys16_textram[0x74d];
1110 }
1111 
MACHINE_INIT(atomicp)1112 static MACHINE_INIT( atomicp ){
1113 	sys16_update_proc = atomicp_update_proc;
1114 }
1115 
DRIVER_INIT(atomicp)1116 static DRIVER_INIT( atomicp )
1117 {
1118 	machine_init_sys16_onetime();
1119 }
1120 
1121 /***************************************************************************/
1122 
INPUT_PORTS_START(atomicp)1123 INPUT_PORTS_START( atomicp )
1124 
1125 PORT_START
1126 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
1127 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
1128 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
1129 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
1130 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
1131 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
1132 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
1133 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
1134 
1135 PORT_START
1136 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
1137 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
1138 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
1139 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
1140 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
1141 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
1142 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1143 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1144 
1145 PORT_START	// dummy
1146 
1147 PORT_START	// dip1
1148 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_B ) )
1149 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1150 	PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
1151 	PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
1152 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
1153 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
1154 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
1155 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_4C ) )
1156 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_5C ) )
1157 
1158 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_A ) )
1159 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
1160 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
1161 	PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) )
1162 	PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) )
1163 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
1164 	PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
1165 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_4C ) )
1166 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_5C ) )
1167 
1168 	PORT_DIPNAME( 0xC0, 0xC0, DEF_STR( Lives ) )
1169 	PORT_DIPSETTING(    0xC0, "1" )
1170 	PORT_DIPSETTING(    0x80, "2" )
1171 	PORT_DIPSETTING(    0x40, "3" )
1172 	PORT_DIPSETTING(    0x00, "5" )
1173 
1174 PORT_START  //dip2
1175 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1176 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1177 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1178 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1179 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1180 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1181 	PORT_DIPNAME( 0x04, 0x04, "Instructions" )
1182 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1183 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1184 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1185 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1186 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1187 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1188 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1189 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1190 	PORT_DIPNAME( 0x20, 0x20, "Continuation" )
1191 	PORT_DIPSETTING(    0x20, "Continue" )
1192 	PORT_DIPSETTING(    0x00, "No Continue" )
1193 	PORT_DIPNAME( 0x40, 0x00, "Level Select" )
1194 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1195 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1196 	PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
1197 INPUT_PORTS_END
1198 
1199 /***************************************************************************/
1200 static INTERRUPT_GEN( ap_interrupt )
1201 {
1202 	int intleft=cpu_getiloops();
1203 	if(intleft!=0) cpu_set_irq_line(0, 2, HOLD_LINE);
1204 	else cpu_set_irq_line(0, 4, HOLD_LINE);
1205 }
1206 
1207 
1208 static MACHINE_DRIVER_START( atomicp )
1209 
1210 	/* basic machine hardware */
MDRV_IMPORT_FROM(system16)1211 	MDRV_IMPORT_FROM(system16)
1212 	MDRV_CPU_MODIFY("main")
1213 	MDRV_CPU_MEMORY(atomicp_readmem,atomicp_writemem)
1214 	MDRV_CPU_VBLANK_INT(ap_interrupt,2)
1215 
1216 	MDRV_CPU_REMOVE("sound")
1217 
1218 	MDRV_MACHINE_INIT(atomicp)
1219 
1220 	/* sound hardware */
1221 	MDRV_SOUND_ATTRIBUTES(0)
1222 	MDRV_SOUND_REPLACE("2151", YM2413, sys16_ym2413_interface)
1223 MACHINE_DRIVER_END
1224 
1225 
1226 /***************************************************************************
1227 
1228    Aurail
1229 
1230 ***************************************************************************/
1231 // sys16B
1232 ROM_START( aurail )
1233 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1234 	ROM_LOAD16_BYTE( "13577", 0x000000, 0x20000, CRC(6701b686) SHA1(ce1e99a516b34241bfe2fbe42d105970ad6e6ddb) )
1235 	ROM_LOAD16_BYTE( "13576", 0x000001, 0x20000, CRC(1e428d94) SHA1(53c0c2d946822157974c8505fd301f8001fc3401) )
1236 	/* empty 0x40000 - 0x80000 */
1237 	ROM_LOAD16_BYTE( "13447", 0x080000, 0x20000, CRC(70a52167) SHA1(51512d4ee1e63902375b197cf04170744b099d88) )
1238 	ROM_LOAD16_BYTE( "13445", 0x080001, 0x20000, CRC(28dfc3dd) SHA1(b1d6d3e31a48062a91cc9b7b6ff68bfde0a3ea1c) )
1239 
1240 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1241 	ROM_LOAD( "aurail.a14", 0x00000, 0x20000, CRC(0fc4a7a8) SHA1(b46b22a6b0ead19551e67abfb3304c52b02b8d29) ) /* plane 1 */
1242 	ROM_LOAD( "aurail.b14", 0x20000, 0x20000, CRC(e08135e0) SHA1(cd748f4a8f67f562174fa9c6edb966c77b488e75) )
1243 	ROM_LOAD( "aurail.a15", 0x40000, 0x20000, CRC(1c49852f) SHA1(d08d6991c203400f685fada2445a22a7eceeee04) ) /* plane 2 */
1244 	ROM_LOAD( "aurail.b15", 0x60000, 0x20000, CRC(e14c6684) SHA1(f9b0d45e01a6df2b3875b493db9fa41bf37d79f0) )
1245 	ROM_LOAD( "aurail.a16", 0x80000, 0x20000, CRC(047bde5e) SHA1(e759baedcbb637a6c14af461b8a492554cadc9e4) ) /* plane 3 */
1246 	ROM_LOAD( "aurail.b16", 0xa0000, 0x20000, CRC(6309fec4) SHA1(f90c9679bade3cfbaa7949e412410c29d5bfa4d3) )
1247 
1248 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
1249 	ROM_LOAD16_BYTE( "aurail.b1",  0x000001, 0x020000, CRC(5fa0a9f8) SHA1(d9d67cc006a608d48e37aa89359f1a9403172b00) )
1250 	ROM_LOAD16_BYTE( "aurail.b5",  0x000000, 0x020000, CRC(0d1b54da) SHA1(c7a6393f9e13adabe93b7a86aa7845c5f4d188f1) )
1251 	ROM_LOAD16_BYTE( "aurail.b2",  0x040001, 0x020000, CRC(5f6b33b1) SHA1(5d397bdaa2c7a9ce82cc9134bfeb78418dc613b0) )
1252 	ROM_LOAD16_BYTE( "aurail.b6",  0x040000, 0x020000, CRC(bad340c3) SHA1(e04ef028e44054d34831d3617c5a6348823cfebd) )
1253 	ROM_LOAD16_BYTE( "aurail.b3",  0x080001, 0x020000, CRC(4e80520b) SHA1(8147793ee0023ac18f633d756ecc53aef1980e95) )
1254 	ROM_LOAD16_BYTE( "aurail.b7",  0x080000, 0x020000, CRC(7e9165ac) SHA1(32114095f96fb0ae385c9bf31dd97a99ef182aaa) )
1255 	ROM_LOAD16_BYTE( "aurail.b4",  0x0c0001, 0x020000, CRC(5733c428) SHA1(865203ebee9d98e67324c46915d8835d0289ee0c) )
1256 	ROM_LOAD16_BYTE( "aurail.b8",  0x0c0000, 0x020000, CRC(66b8f9b3) SHA1(4bf003a9bed40673d88df51a314eb6bd10f0d039) )
1257 	ROM_LOAD16_BYTE( "aurail.a1",  0x100001, 0x020000, CRC(4f370b2b) SHA1(66beb4264d569520d80f8915e1c1fddbf61efb21) )
1258 	ROM_LOAD16_BYTE( "aurail.b10", 0x100000, 0x020000, CRC(f76014bf) SHA1(b44f0b6fb9dee927d81c62282aa946d8c35766ca) )
1259 	ROM_LOAD16_BYTE( "aurail.a2",  0x140001, 0x020000, CRC(37cf9cb4) SHA1(f51cee874ad8a824462d2475a23e7016ef64c6b4) )
1260 	ROM_LOAD16_BYTE( "aurail.b11", 0x140000, 0x020000, CRC(1061e7da) SHA1(bad3560f1ed6a5a79f4ecf85d3843b24ecf22d19) )
1261 	ROM_LOAD16_BYTE( "aurail.a3",  0x180001, 0x020000, CRC(049698ef) SHA1(dca1a78f0156cfac9acbfb6e47eb3897b579d2ec) )
1262 	ROM_LOAD16_BYTE( "aurail.b12", 0x180000, 0x020000, CRC(7dbcfbf1) SHA1(0b7be1de57f83b1213805489c6ebfc0f1e5fb4b0) )
1263 	ROM_LOAD16_BYTE( "aurail.a4",  0x1c0001, 0x020000, CRC(77a8989e) SHA1(0ad0877a9814fb7c2fb79062a50b1f9ce9420768) )
1264 	ROM_LOAD16_BYTE( "aurail.b13", 0x1c0000, 0x020000, CRC(551df422) SHA1(cf4cd2b66335853c7c6cce949e79c05e93a39666) )
1265 
1266 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1267 	ROM_LOAD( "13448",      0x0000, 0x8000, CRC(b5183fb9) SHA1(c8372b57fa486256d49dc5851d6b17c92de593fb) )
1268 	ROM_LOAD( "aurail.a12", 0x10000,0x20000, CRC(d3d9aaf9) SHA1(0fb3a8cb11033accceb3a43a691fb424cf8b9619) )
1269 	ROM_RELOAD(             0x30000,0x20000 )
1270 ROM_END
1271 
1272 ROM_START( auraila )
1273 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1274 // custom cpu 317-0168
1275 	ROM_LOAD16_BYTE( "epr13469.a7", 0x000000, 0x20000, CRC(c628b69d) SHA1(839cefe5ab1c58fb3e6af8cba245194d5d672223) )
1276 	ROM_LOAD16_BYTE( "epr13468.a5", 0x000001, 0x20000, CRC(ce092218) SHA1(c93450234bc37060bc4b8bca34ea69154d99be6c) )
1277 	/* 0x40000 - 0x80000 is empty, I will place decrypted opcodes here */
1278 	ROM_LOAD16_BYTE( "13447", 0x080000, 0x20000, CRC(70a52167) SHA1(51512d4ee1e63902375b197cf04170744b099d88) )
1279 	ROM_LOAD16_BYTE( "13445", 0x080001, 0x20000, CRC(28dfc3dd) SHA1(b1d6d3e31a48062a91cc9b7b6ff68bfde0a3ea1c) )
1280 
1281 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1282 	ROM_LOAD( "aurail.a14", 0x00000, 0x20000, CRC(0fc4a7a8) SHA1(b46b22a6b0ead19551e67abfb3304c52b02b8d29) ) /* plane 1 */
1283 	ROM_LOAD( "aurail.b14", 0x20000, 0x20000, CRC(e08135e0) SHA1(cd748f4a8f67f562174fa9c6edb966c77b488e75) )
1284 	ROM_LOAD( "aurail.a15", 0x40000, 0x20000, CRC(1c49852f) SHA1(d08d6991c203400f685fada2445a22a7eceeee04) ) /* plane 2 */
1285 	ROM_LOAD( "aurail.b15", 0x60000, 0x20000, CRC(e14c6684) SHA1(f9b0d45e01a6df2b3875b493db9fa41bf37d79f0) )
1286 	ROM_LOAD( "aurail.a16", 0x80000, 0x20000, CRC(047bde5e) SHA1(e759baedcbb637a6c14af461b8a492554cadc9e4) ) /* plane 3 */
1287 	ROM_LOAD( "aurail.b16", 0xa0000, 0x20000, CRC(6309fec4) SHA1(f90c9679bade3cfbaa7949e412410c29d5bfa4d3) )
1288 
1289 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
1290 	ROM_LOAD16_BYTE( "aurail.b1",  0x000001, 0x020000, CRC(5fa0a9f8) SHA1(d9d67cc006a608d48e37aa89359f1a9403172b00) )
1291 	ROM_LOAD16_BYTE( "aurail.b5",  0x000000, 0x020000, CRC(0d1b54da) SHA1(c7a6393f9e13adabe93b7a86aa7845c5f4d188f1) )
1292 	ROM_LOAD16_BYTE( "aurail.b2",  0x040001, 0x020000, CRC(5f6b33b1) SHA1(5d397bdaa2c7a9ce82cc9134bfeb78418dc613b0) )
1293 	ROM_LOAD16_BYTE( "aurail.b6",  0x040000, 0x020000, CRC(bad340c3) SHA1(e04ef028e44054d34831d3617c5a6348823cfebd) )
1294 	ROM_LOAD16_BYTE( "aurail.b3",  0x080001, 0x020000, CRC(4e80520b) SHA1(8147793ee0023ac18f633d756ecc53aef1980e95) )
1295 	ROM_LOAD16_BYTE( "aurail.b7",  0x080000, 0x020000, CRC(7e9165ac) SHA1(32114095f96fb0ae385c9bf31dd97a99ef182aaa) )
1296 	ROM_LOAD16_BYTE( "aurail.b4",  0x0c0001, 0x020000, CRC(5733c428) SHA1(865203ebee9d98e67324c46915d8835d0289ee0c) )
1297 	ROM_LOAD16_BYTE( "aurail.b8",  0x0c0000, 0x020000, CRC(66b8f9b3) SHA1(4bf003a9bed40673d88df51a314eb6bd10f0d039) )
1298 	ROM_LOAD16_BYTE( "aurail.a1",  0x100001, 0x020000, CRC(4f370b2b) SHA1(66beb4264d569520d80f8915e1c1fddbf61efb21) )
1299 	ROM_LOAD16_BYTE( "aurail.b10", 0x100000, 0x020000, CRC(f76014bf) SHA1(b44f0b6fb9dee927d81c62282aa946d8c35766ca) )
1300 	ROM_LOAD16_BYTE( "aurail.a2",  0x140001, 0x020000, CRC(37cf9cb4) SHA1(f51cee874ad8a824462d2475a23e7016ef64c6b4) )
1301 	ROM_LOAD16_BYTE( "aurail.b11", 0x140000, 0x020000, CRC(1061e7da) SHA1(bad3560f1ed6a5a79f4ecf85d3843b24ecf22d19) )
1302 	ROM_LOAD16_BYTE( "aurail.a3",  0x180001, 0x020000, CRC(049698ef) SHA1(dca1a78f0156cfac9acbfb6e47eb3897b579d2ec) )
1303 	ROM_LOAD16_BYTE( "aurail.b12", 0x180000, 0x020000, CRC(7dbcfbf1) SHA1(0b7be1de57f83b1213805489c6ebfc0f1e5fb4b0) )
1304 	ROM_LOAD16_BYTE( "aurail.a4",  0x1c0001, 0x020000, CRC(77a8989e) SHA1(0ad0877a9814fb7c2fb79062a50b1f9ce9420768) )
1305 	ROM_LOAD16_BYTE( "aurail.b13", 0x1c0000, 0x020000, CRC(551df422) SHA1(cf4cd2b66335853c7c6cce949e79c05e93a39666) )
1306 
1307 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1308 	ROM_LOAD( "13448",      0x0000, 0x8000, CRC(b5183fb9) SHA1(c8372b57fa486256d49dc5851d6b17c92de593fb) )
1309 	ROM_LOAD( "aurail.a12", 0x10000,0x20000, CRC(d3d9aaf9) SHA1(0fb3a8cb11033accceb3a43a691fb424cf8b9619) )
1310 	ROM_RELOAD(             0x30000,0x20000 )
1311 ROM_END
1312 
1313 
1314 /***************************************************************************/
1315 
1316 static READ16_HANDLER( aurail_skip_r )
1317 {
1318 	if (activecpu_get_pc()==0xe4e) {cpu_spinuntil_int(); return 0;}
1319 	return sys16_workingram[0x274e/2];
1320 }
1321 
MEMORY_READ16_START(aurail_readmem)1322 static MEMORY_READ16_START( aurail_readmem )
1323 	{ 0x000000, 0x0bffff, MRA16_ROM },
1324 	{ 0x3f0000, 0x3fffff, SYS16_MRA16_EXTRAM },
1325 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1326 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1327 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
1328 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1329 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
1330 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
1331 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
1332 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
1333 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
1334 	{ 0xfc0000, 0xfc0fff, SYS16_MRA16_EXTRAM3 },
1335 	{ 0xffe74e, 0xffe74f, aurail_skip_r },
1336 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1337 MEMORY_END
1338 
1339 static MEMORY_WRITE16_START( aurail_writemem )
1340 	{ 0x000000, 0x0bffff, MWA16_ROM },
1341 	{ 0x3f0000, 0x3fffff, SYS16_MWA16_EXTRAM },
1342 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
1343 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
1344 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
1345 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
1346 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
1347 	{ 0xfc0000, 0xfc0fff, SYS16_MWA16_EXTRAM3 },
1348 	{ 0xfe0006, 0xfe0007, sound_command_w },
1349 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
1350 MEMORY_END
1351 
1352 /***************************************************************************/
1353 
1354 static void aurail_update_proc (void){
1355 	sys16_fg_scrollx = sys16_textram[0x0e98/2];
1356 	sys16_bg_scrollx = sys16_textram[0x0e9a/2];
1357 	sys16_fg_scrolly = sys16_textram[0x0e90/2];
1358 	sys16_bg_scrolly = sys16_textram[0x0e92/2];
1359 
1360 	set_fg_page( sys16_textram[0x0e80/2] );
1361 	set_bg_page( sys16_textram[0x0e82/2] );
1362 
1363 	set_tile_bank( sys16_extraram3[0x0002/2] );
1364 }
1365 
MACHINE_INIT(aurail)1366 static MACHINE_INIT( aurail ){
1367 	sys16_spritesystem = sys16_sprite_aurail;
1368 	sys16_spritelist_end=0x8000;
1369 	sys16_bg_priority_mode=1;
1370 
1371 	sys16_update_proc = aurail_update_proc;
1372 }
1373 
DRIVER_INIT(aurail)1374 static DRIVER_INIT( aurail )
1375 {
1376 	machine_init_sys16_onetime();
1377 }
1378 
DRIVER_INIT(auraila)1379 static DRIVER_INIT( auraila )
1380 {
1381 	data16_t *rom = (data16_t *)memory_region(REGION_CPU1);
1382 	int diff = 0x40000;	/* place decrypted opcodes in a empty hole */
1383 
1384 	init_aurail();
1385 
1386 	memory_set_opcode_base(0,rom+diff/2);
1387 
1388 	memcpy(rom+diff/2,rom,0x40000);
1389 
1390 	aurail_decode_data(rom,rom,0x10000);
1391 	aurail_decode_opcode1(rom+diff/2,rom+diff/2,0x10000);
1392 	aurail_decode_opcode2(rom+(diff+0x10000)/2,rom+(diff+0x10000)/2,0x10000);
1393 }
1394 
1395 /***************************************************************************/
1396 
INPUT_PORTS_START(aurail)1397 INPUT_PORTS_START( aurail )
1398 	SYS16_JOY1
1399 	SYS16_JOY2
1400 	SYS16_SERVICE
1401 	SYS16_COINAGE
1402 
1403 PORT_START	/* DSW1 */
1404 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
1405 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
1406 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
1407 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1408 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1409 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1410 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
1411 	PORT_DIPSETTING(    0x00, "2" )
1412 	PORT_DIPSETTING(    0x0c, "3" )
1413 	PORT_DIPSETTING(    0x08, "4" )
1414 	PORT_DIPSETTING(    0x04, "5" )
1415 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
1416 	PORT_DIPSETTING(    0x10, "Normal" )
1417 	PORT_DIPSETTING(    0x00, "Hard" )
1418 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Difficulty ) )
1419 	PORT_DIPSETTING(    0x20, "Normal" )
1420 	PORT_DIPSETTING(    0x00, "Hard" )
1421 	PORT_DIPNAME( 0x40, 0x40, "Controller select" )
1422 	PORT_DIPSETTING(    0x40, "1 Player side" )
1423 	PORT_DIPSETTING(    0x00, "2 Players side" )
1424 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
1425 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1426 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1427 INPUT_PORTS_END
1428 
1429 /***************************************************************************/
1430 
1431 static MACHINE_DRIVER_START( aurail )
1432 
1433 	/* basic machine hardware */
1434 	MDRV_IMPORT_FROM(system16_7759)
1435 	MDRV_CPU_MODIFY("main")
1436 	MDRV_CPU_MEMORY(aurail_readmem,aurail_writemem)
1437 
1438 	MDRV_MACHINE_INIT(aurail)
1439 MACHINE_DRIVER_END
1440 
1441 /***************************************************************************/
1442 // sys16B
1443 ROM_START( bayroute )
1444 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1445 	ROM_LOAD16_BYTE( "br.4a", 0x000000, 0x10000, CRC(91c6424b) SHA1(79a968ade7690d5944ee815e19586cb82c3aa562) )
1446 	ROM_LOAD16_BYTE( "br.1a", 0x000001, 0x10000, CRC(76954bf3) SHA1(bd617c6ddaf1e7760479b17205388c201fb67662) )
1447 	/* empty 0x20000-0x80000*/
1448 	ROM_LOAD16_BYTE( "br.5a", 0x080000, 0x10000, CRC(9d6fd183) SHA1(5ae78d33c0e929886d84a25c0fbd62ab45dcbff4) )
1449 	ROM_LOAD16_BYTE( "br.2a", 0x080001, 0x10000, CRC(5ca1e3d2) SHA1(51ce67ed0a0054f9c9c4ac56c5775716c44d74b1) )
1450 	ROM_LOAD16_BYTE( "br.6a", 0x0a0000, 0x10000, CRC(ed97ad4c) SHA1(6c7d671c3046f1adb486f053acdd2be0c981c68b) )
1451 	ROM_LOAD16_BYTE( "br.3a", 0x0a0001, 0x10000, CRC(0d362905) SHA1(04cb35aa44cc1d9ead44c5a7b4f838efec453c85) )
1452 
1453 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1454 	ROM_LOAD( "opr12462.a14", 0x00000, 0x10000, CRC(a19943b5) SHA1(95cd95223ea76677227b807a7c4eff120e690d37) )
1455 	ROM_LOAD( "opr12463.a15", 0x10000, 0x10000, CRC(62f8200d) SHA1(a5a0035249f339396b33f8a908d393777e8951c4) )
1456 	ROM_LOAD( "opr12464.a16", 0x20000, 0x10000, CRC(c8c59703) SHA1(3a4f45b88990d27c55ddfde5fc93496954868200) )
1457 
1458 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
1459 	ROM_LOAD16_BYTE( "br_obj0o.1b", 0x00001, 0x10000, CRC(098a5e82) SHA1(c5922f418773bc3629071e584457839d67a370e9) )
1460 	ROM_LOAD16_BYTE( "br_obj0e.5b", 0x00000, 0x10000, CRC(85238af9) SHA1(39989a8d9b60c6d55272b5e2c213341a563dd993) )
1461 	ROM_LOAD16_BYTE( "br_obj1o.2b", 0x20001, 0x10000, CRC(cc641da1) SHA1(28f8a6502702cb9e2cc7f3e98f6c5d201f462fa3) )
1462 	ROM_LOAD16_BYTE( "br_obj1e.6b", 0x20000, 0x10000, CRC(d3123315) SHA1(16a87caed1cabb080d4f35935910b38797344ca5) )
1463 	ROM_LOAD16_BYTE( "br_obj2o.3b", 0x40001, 0x10000, CRC(84efac1f) SHA1(41c43d70dc7ae7e361d6fa12c5790ea7ebf13ca8) )
1464 	ROM_LOAD16_BYTE( "br_obj2e.7b", 0x40000, 0x10000, CRC(b73b12cb) SHA1(e8265ae90aabf1ee0522dbc6541a0f82fec97c7a) )
1465 	ROM_LOAD16_BYTE( "br_obj3o.4b", 0x60001, 0x10000, CRC(a2e238ac) SHA1(c854774c0ffd1ccf6e46591a8fa3c80a4630e007) )
1466 	ROM_LOAD16_BYTE( "br.8b",		  0x60000, 0x10000, CRC(d8de78ff) SHA1(110661ab8008543b47629722b98d0470f73a48c5) )
1467 
1468 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1469 	ROM_LOAD( "epr12459.a10", 0x00000, 0x08000, CRC(3e1d29d0) SHA1(fe3d985983e5132e8a26a02a3f2d8d420cbf1a49) )
1470 	ROM_LOAD( "mpr12460.a11", 0x10000, 0x20000, CRC(0bae570d) SHA1(05fa4a3405666342ab66e696a7344cca97569f19) )
1471 	ROM_LOAD( "mpr12461.a12", 0x30000, 0x20000, CRC(b03b8b46) SHA1(b0283ac377d464f3d9374a992192ec6c515a3c2f) )
1472 ROM_END
1473 
1474 ROM_START( bayrouta )
1475 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1476 // custom cpu 317-0116
1477 	ROM_LOAD16_BYTE( "epr12517.a7", 0x000000, 0x20000, CRC(436728a9) SHA1(0f6753493ad2c1776880862b462f10ef936a9ee5) )
1478 	ROM_LOAD16_BYTE( "epr12516.a5", 0x000001, 0x20000, CRC(4ff0353f) SHA1(f5960f9e80e42d0a3f82d6670b1f2e39b51ffcef) )
1479 	/* empty 0x40000-0x80000*/
1480 	ROM_LOAD16_BYTE( "epr12458.a8", 0x080000, 0x20000, CRC(e7c7476a) SHA1(7b724d76bdc1978ddf78489edfda14533905a360) )
1481 	ROM_LOAD16_BYTE( "epr12456.a6", 0x080001, 0x20000, CRC(25dc2eaf) SHA1(dda300840b9a90bcce7be16ff1904a7a0456c396) )
1482 
1483 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1484 	ROM_LOAD( "opr12462.a14", 0x00000, 0x10000, CRC(a19943b5) SHA1(95cd95223ea76677227b807a7c4eff120e690d37) )
1485 	ROM_LOAD( "opr12463.a15", 0x10000, 0x10000, CRC(62f8200d) SHA1(a5a0035249f339396b33f8a908d393777e8951c4) )
1486 	ROM_LOAD( "opr12464.a16", 0x20000, 0x10000, CRC(c8c59703) SHA1(3a4f45b88990d27c55ddfde5fc93496954868200) )
1487 
1488 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
1489 	ROM_LOAD16_BYTE( "mpr12465.b1", 0x00001, 0x20000, CRC(11d61b45) SHA1(01678e07ffcafb8c161b52763f2183dc281c7578) )
1490 	ROM_LOAD16_BYTE( "mpr12467.b5", 0x00000, 0x20000, CRC(c3b4e4c0) SHA1(2d8dbea5278b3fac03c7ad8749f931d36cc8f341) )
1491 	ROM_LOAD16_BYTE( "mpr12466.b2", 0x40001, 0x20000, CRC(a57f236f) SHA1(c83219cdfcee10a4fdffcbf410808f161a2b1aef) )
1492 	ROM_LOAD16_BYTE( "mpr12468.b6", 0x40000, 0x20000, CRC(d89c77de) SHA1(0e903bf57a7515291dda7e11bdef982a1417043a) )
1493 
1494 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1495 	ROM_LOAD( "epr12459.a10", 0x00000, 0x08000, CRC(3e1d29d0) SHA1(fe3d985983e5132e8a26a02a3f2d8d420cbf1a49) )
1496 	ROM_LOAD( "mpr12460.a11", 0x10000, 0x20000, CRC(0bae570d) SHA1(05fa4a3405666342ab66e696a7344cca97569f19) )
1497 	ROM_LOAD( "mpr12461.a12", 0x30000, 0x20000, CRC(b03b8b46) SHA1(b0283ac377d464f3d9374a992192ec6c515a3c2f) )
1498 ROM_END
1499 
1500 ROM_START( bayrtbl1 )
1501 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1502 	ROM_LOAD16_BYTE( "b4.bin", 0x000000, 0x10000, CRC(eb6646ae) SHA1(073bc0a3868e70785f44e497a949cd9e3b591a33) )
1503 	ROM_LOAD16_BYTE( "b2.bin", 0x000001, 0x10000, CRC(ecd9cd0e) SHA1(177c38ca02c4e87d6adcae77ce4e9237938d23a9) )
1504 	/* empty 0x20000-0x80000*/
1505 	ROM_LOAD16_BYTE( "br.5a",  0x080000, 0x10000, CRC(9d6fd183) SHA1(5ae78d33c0e929886d84a25c0fbd62ab45dcbff4) )
1506 	ROM_LOAD16_BYTE( "br.2a",  0x080001, 0x10000, CRC(5ca1e3d2) SHA1(51ce67ed0a0054f9c9c4ac56c5775716c44d74b1) )
1507 	ROM_LOAD16_BYTE( "b8.bin", 0x0a0000, 0x10000, CRC(e7ca0331) SHA1(b255939576a84f4d266f31a7fde818e04ff35b24) )
1508 	ROM_LOAD16_BYTE( "b6.bin", 0x0a0001, 0x10000, CRC(2bc748a6) SHA1(9ab760377fde24cecb703726ee3e59ee23d60a3a) )
1509 
1510 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1511 	ROM_LOAD( "bs16.bin", 0x00000, 0x10000, CRC(a8a5b310) SHA1(8883e1ed48a3e0f7b4c36d83579f93e84e28568c) )
1512 	ROM_LOAD( "bs14.bin", 0x10000, 0x10000, CRC(6bc4d0a8) SHA1(90b9a61c7a140291d72554857ce26d54ebf03fc2) )
1513 	ROM_LOAD( "bs12.bin", 0x20000, 0x10000, CRC(c1f967a6) SHA1(8eb6bbd9e17dc531830bc798b8485c8ea999e56e) )
1514 
1515 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
1516 	ROM_LOAD16_BYTE( "br_obj0o.1b", 0x00001, 0x10000, CRC(098a5e82) SHA1(c5922f418773bc3629071e584457839d67a370e9) )
1517 	ROM_LOAD16_BYTE( "br_obj0e.5b", 0x00000, 0x10000, CRC(85238af9) SHA1(39989a8d9b60c6d55272b5e2c213341a563dd993) )
1518 	ROM_LOAD16_BYTE( "br_obj1o.2b", 0x20001, 0x10000, CRC(cc641da1) SHA1(28f8a6502702cb9e2cc7f3e98f6c5d201f462fa3) )
1519 	ROM_LOAD16_BYTE( "br_obj1e.6b", 0x20000, 0x10000, CRC(d3123315) SHA1(16a87caed1cabb080d4f35935910b38797344ca5) )
1520 	ROM_LOAD16_BYTE( "br_obj2o.3b", 0x40001, 0x10000, CRC(84efac1f) SHA1(41c43d70dc7ae7e361d6fa12c5790ea7ebf13ca8) )
1521 	ROM_LOAD16_BYTE( "br_obj2e.7b", 0x40000, 0x10000, CRC(b73b12cb) SHA1(e8265ae90aabf1ee0522dbc6541a0f82fec97c7a) )
1522 	ROM_LOAD16_BYTE( "br_obj3o.4b", 0x60001, 0x10000, CRC(a2e238ac) SHA1(c854774c0ffd1ccf6e46591a8fa3c80a4630e007) )
1523 	ROM_LOAD16_BYTE( "bs7.bin",     0x60000, 0x10000, CRC(0c91abcc) SHA1(d25608f3cbacd1bd169f1a2247f007ac8bc8dda0) )
1524 
1525 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1526 	ROM_LOAD( "epr12459.a10", 0x00000, 0x08000, CRC(3e1d29d0) SHA1(fe3d985983e5132e8a26a02a3f2d8d420cbf1a49) )
1527 	ROM_LOAD( "mpr12460.a11", 0x10000, 0x20000, CRC(0bae570d) SHA1(05fa4a3405666342ab66e696a7344cca97569f19) )
1528 	ROM_LOAD( "mpr12461.a12", 0x30000, 0x20000, CRC(b03b8b46) SHA1(b0283ac377d464f3d9374a992192ec6c515a3c2f) )
1529 ROM_END
1530 
1531 ROM_START( bayrtbl2 )
1532 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
1533 	ROM_LOAD16_BYTE( "br_04", 0x000000, 0x10000, CRC(2e33ebfc) SHA1(f6b5a4bd28d302abd6b1e5a9ec6f2a8b57ff213e) )
1534 	ROM_LOAD16_BYTE( "br_06", 0x000001, 0x10000, CRC(3db42313) SHA1(e1c874ebf83e1a458cefaa038fbe89a9804ca30d) )
1535 	/* empty 0x20000-0x80000*/
1536 	ROM_LOAD16_BYTE( "br_03", 0x080000, 0x20000, CRC(285d256b) SHA1(73eac0131d14f0d7fe2a06cb2e0e57dcf4779cf9) )
1537 	ROM_LOAD16_BYTE( "br_05", 0x080001, 0x20000, CRC(552e6384) SHA1(2770b0c9d961671576e09ada2ebd7bb486f24547) )
1538 
1539 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1540 	ROM_LOAD( "br_15",    0x00000, 0x10000, CRC(050079a9) SHA1(4b356eddec2f500fb0dcc20af6b7aed2f9ef0c02) )
1541 	ROM_LOAD( "br_16",    0x10000, 0x10000, CRC(fc371928) SHA1(b36866c95bdc440aae999a90ecf3bbaed11d4351) )
1542 	ROM_LOAD( "bs12.bin", 0x20000, 0x10000, CRC(c1f967a6) SHA1(8eb6bbd9e17dc531830bc798b8485c8ea999e56e) )
1543 
1544 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
1545 	ROM_LOAD16_BYTE( "br_11",       0x00001, 0x10000, CRC(65232905) SHA1(cb195a0ce8bff9d1d3e31678060b3aaccfefcd2d) )
1546 	ROM_LOAD16_BYTE( "br_obj0e.5b", 0x00000, 0x10000, CRC(85238af9) SHA1(39989a8d9b60c6d55272b5e2c213341a563dd993) )
1547 	ROM_LOAD16_BYTE( "br_obj1o.2b", 0x20001, 0x10000, CRC(cc641da1) SHA1(28f8a6502702cb9e2cc7f3e98f6c5d201f462fa3) )
1548 	ROM_LOAD16_BYTE( "br_obj1e.6b", 0x20000, 0x10000, CRC(d3123315) SHA1(16a87caed1cabb080d4f35935910b38797344ca5) )
1549 	ROM_LOAD16_BYTE( "br_obj2o.3b", 0x40001, 0x10000, CRC(84efac1f) SHA1(41c43d70dc7ae7e361d6fa12c5790ea7ebf13ca8) )
1550 	ROM_LOAD16_BYTE( "br_09",       0x40000, 0x10000, CRC(05e9b840) SHA1(7cc1c9ac7b85f1e1bdb68215b5e83eae3ee5ba2a) )
1551 	ROM_LOAD16_BYTE( "br_14",       0x60001, 0x10000, CRC(4c4a177b) SHA1(a9dfd7e56b0a21a0f7750d8ec4631901ad182609) )
1552 	ROM_LOAD16_BYTE( "bs7.bin",     0x60000, 0x10000, CRC(0c91abcc) SHA1(d25608f3cbacd1bd169f1a2247f007ac8bc8dda0) )
1553 
1554 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
1555 	ROM_LOAD( "br_01", 0x00000, 0x10000, CRC(b87156ec) SHA1(bdfef2ab5a4d3cac4077c92ce1ef4604b4c11cf8) )
1556 	ROM_LOAD( "br_02", 0x10000, 0x10000, CRC(ef63991b) SHA1(4221741780f88c80b3213ddca949bee7d4c1469a) )
1557 ROM_END
1558 
1559 /***************************************************************************/
1560 
1561 static MEMORY_READ16_START( bayroute_readmem )
1562 	{ 0x000000, 0x0bffff, MRA16_ROM },
1563 	{ 0x500000, 0x503fff, SYS16_MRA16_EXTRAM3 },
1564 	{ 0x600000, 0x600fff, SYS16_MRA16_SPRITERAM },
1565 	{ 0x700000, 0x70ffff, SYS16_MRA16_TILERAM },
1566 	{ 0x710000, 0x710fff, SYS16_MRA16_TEXTRAM },
1567 	{ 0x800000, 0x800fff, SYS16_MRA16_PALETTERAM },
1568 	{ 0x901002, 0x901003, input_port_0_word_r }, // player1
1569 	{ 0x901006, 0x901007, input_port_1_word_r }, // player2
1570 	{ 0x901000, 0x901001, input_port_2_word_r }, // service
1571 	{ 0x902002, 0x902003, input_port_3_word_r }, // dip1
1572 	{ 0x902000, 0x902001, input_port_4_word_r }, // dip2
1573 MEMORY_END
1574 
1575 static MEMORY_WRITE16_START( bayroute_writemem )
1576 	{ 0x000000, 0x0bffff, MWA16_ROM },
1577 	{ 0x500000, 0x503fff, SYS16_MWA16_EXTRAM3 },
1578 	{ 0x600000, 0x600fff, SYS16_MWA16_SPRITERAM },
1579 	{ 0x700000, 0x70ffff, SYS16_MWA16_TILERAM },
1580 	{ 0x710000, 0x710fff, SYS16_MWA16_TEXTRAM },
1581 	{ 0x800000, 0x800fff, SYS16_MWA16_PALETTERAM },
1582 	{ 0x900000, 0x900001, sys16_coinctrl_w },
1583 	{ 0xff0006, 0xff0007, sound_command_w },
1584 MEMORY_END
1585 
1586 /***************************************************************************/
1587 
1588 static void bayroute_update_proc( void ){
1589 	set_fg_page( sys16_textram[0x740] );
1590 	set_bg_page( sys16_textram[0x741] );
1591 	sys16_fg_scrolly = sys16_textram[0x748];
1592 	sys16_bg_scrolly = sys16_textram[0x749];
1593 	sys16_fg_scrollx = sys16_textram[0x74c];
1594 	sys16_bg_scrollx = sys16_textram[0x74d];
1595 }
1596 
MACHINE_INIT(bayroute)1597 static MACHINE_INIT( bayroute ){
1598 	static int bank[16] = {
1599 		0,0,0,0,
1600 		0,0,0,3,
1601 		0,0,0,2,
1602 		0,1,0,0
1603 	};
1604 	sys16_obj_bank = bank;
1605 	sys16_update_proc = bayroute_update_proc;
1606 	sys16_spritesystem = sys16_sprite_aurail;
1607 	sys16_spritelist_end=0xc000;
1608 }
1609 
DRIVER_INIT(bayroute)1610 static DRIVER_INIT( bayroute ){
1611 	machine_init_sys16_onetime();
1612 }
1613 
DRIVER_INIT(bayrouta)1614 static DRIVER_INIT( bayrouta ){
1615 	machine_init_sys16_onetime();
1616 }
1617 
DRIVER_INIT(bayrtbl1)1618 static DRIVER_INIT( bayrtbl1 ){
1619 	int i;
1620 	machine_init_sys16_onetime();
1621 	/* invert the graphics bits on the tiles */
1622 	for (i = 0; i < 0x30000; i++)
1623 		memory_region(REGION_GFX1)[i] ^= 0xff;
1624 }
1625 /***************************************************************************/
1626 
INPUT_PORTS_START(bayroute)1627 INPUT_PORTS_START( bayroute )
1628 	SYS16_JOY1
1629 	SYS16_JOY2
1630 	SYS16_SERVICE
1631 	SYS16_COINAGE
1632 
1633 PORT_START
1634 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
1635 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1636 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1637 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1638 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1639 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1640 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
1641 	PORT_DIPSETTING(    0x04, "1" )
1642 	PORT_DIPSETTING(    0x0c, "3" )
1643 	PORT_DIPSETTING(    0x08, "5" )
1644 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Unlimited", IP_KEY_NONE, IP_JOY_NONE )
1645 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
1646 	PORT_DIPSETTING(    0x30, "10000" )
1647 	PORT_DIPSETTING(    0x20, "15000" )
1648 	PORT_DIPSETTING(    0x10, "20000" )
1649 	PORT_DIPSETTING(    0x00, "None" )
1650 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Unknown ) )
1651 	PORT_DIPSETTING(    0xc0, "A" )
1652 	PORT_DIPSETTING(    0x80, "B" )
1653 	PORT_DIPSETTING(    0x40, "C" )
1654 	PORT_DIPSETTING(    0x00, "D" )
1655 
1656 INPUT_PORTS_END
1657 
1658 /***************************************************************************/
1659 
1660 static MACHINE_DRIVER_START( bayroute )
1661 
1662 	/* basic machine hardware */
1663 	MDRV_IMPORT_FROM(system16_7759)
1664 	MDRV_CPU_MODIFY("main")
1665 	MDRV_CPU_MEMORY(bayroute_readmem,bayroute_writemem)
1666 
1667 	MDRV_MACHINE_INIT(bayroute)
1668 MACHINE_DRIVER_END
1669 
1670 /***************************************************************************
1671 
1672    Body Slam
1673 
1674 ***************************************************************************/
1675 // pre16
1676 ROM_START( bodyslam )
1677 	ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* 68000 code */
1678 	ROM_LOAD16_BYTE( "epr10066.b9", 0x000000, 0x8000, CRC(6cd53290) SHA1(68ef83ad99a26a507d9bc4cd715462169f4ac41f) )
1679 	ROM_LOAD16_BYTE( "epr10063.b6", 0x000001, 0x8000, CRC(dd849a16) SHA1(b8cb9f2685a739698a3ed18f76617fd4ac9cb424) )
1680 	ROM_LOAD16_BYTE( "epr10067.b10",0x010000, 0x8000, CRC(db22a5ce) SHA1(95c37d4913fa31d5edf02661681bc83deec731d9) )
1681 	ROM_LOAD16_BYTE( "epr10064.b7", 0x010001, 0x8000, CRC(53d6b7e0) SHA1(00bfa1487479629f60e1cc1b98ced47e4cb07964) )
1682 	ROM_LOAD16_BYTE( "epr10068.b11",0x020000, 0x8000, CRC(15ccc665) SHA1(b088a9bcb1499854794b2dbf4c689f3ae3ce2808) )
1683 	ROM_LOAD16_BYTE( "epr10065.b8", 0x020001, 0x8000, CRC(0e5fa314) SHA1(44e36fde102ba6aef2c3b4374ddc21690f2fe527) )
1684 
1685 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1686 	ROM_LOAD( "epr10321.c9",  0x00000, 0x8000, CRC(cd3e7cba) SHA1(4d3cfc7346c6e63e2221193601f949162d0e4f90) ) /* plane 1 */
1687 	ROM_LOAD( "epr10322.c10", 0x08000, 0x8000, CRC(b53d3217) SHA1(baebf20925e9f8ab6660f041a24721716d5b7d92) ) /* plane 2 */
1688 	ROM_LOAD( "epr10323.c11", 0x10000, 0x8000, CRC(915a3e61) SHA1(6504a8b26b7b4880971cd69ac2c8aae30dcfa18c) ) /* plane 3 */
1689 
1690 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites */
1691 	ROM_LOAD16_BYTE( "epr10012.c5",  0x00001, 0x08000, CRC(990824e8) SHA1(bd45f75d07cb4e17583c2d76050e5f819f4b7efe) )
1692 	ROM_LOAD16_BYTE( "epr10016.b2",  0x00000, 0x08000, CRC(af5dc72f) SHA1(97bbb76940c702e642d8222dda71447b8f60b616) )
1693 	ROM_LOAD16_BYTE( "epr10013.c6",  0x10001, 0x08000, CRC(9a0919c5) SHA1(e39e60c1e834b3b46bf2ef1c5952841bebe66ade) )
1694 	ROM_LOAD16_BYTE( "epr10017.b3",  0x10000, 0x08000, CRC(62aafd95) SHA1(e1e3a95fd11cabf81f44ac2dd3f951d3094725e6) )
1695 	ROM_LOAD16_BYTE( "epr10027.c7",  0x20001, 0x08000, CRC(3f1c57c7) SHA1(1336da8dc167a323f09534a2f62ae6f9c62290e4) )
1696 	ROM_LOAD16_BYTE( "epr10028.b4",  0x20000, 0x08000, CRC(80d4946d) SHA1(d4c96a18ef6c2ac6bd9d153d8862a3af894642e8) )
1697 	ROM_LOAD16_BYTE( "epr10015.c8",  0x30001, 0x08000, CRC(582d3b6a) SHA1(4f1d0060682e3fc1147082286e00e6a296a95da2) )
1698 	ROM_LOAD16_BYTE( "epr10019.b5",  0x30000, 0x08000, CRC(e020c38b) SHA1(d13d38a64f2afa7df3cbccef2fe505a4421b73ad) )
1699 
1700 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
1701 	ROM_LOAD( "epr10026.b1", 0x00000, 0x8000, CRC(123b69b8) SHA1(c0614a8c822991e257f7218908247df278056de8) )
1702 
1703 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
1704 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
1705 
1706 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
1707 	ROM_LOAD( "epr10029.c1", 0x00000, 0x8000, CRC(7e4aca83) SHA1(703486b96d493941ee87267e8363220a851f008e) )
1708 	ROM_LOAD( "epr10030.c2", 0x08000, 0x8000, CRC(dcc1df0b) SHA1(a82a557fa48f4b3e1ab38f61b84d749cd417e80f) )
1709 	ROM_LOAD( "epr10031.c3", 0x10000, 0x8000, CRC(ea3c4472) SHA1(ad8eac2d3d14fd6aba713f4d624861c17aabf757) )
1710 	ROM_LOAD( "epr10032.c4", 0x18000, 0x8000, CRC(0aabebce) SHA1(fab12df8f4eab270be491c6c025d832c338e1e83) )
1711 
1712 ROM_END
1713 
1714 ROM_START( dumpmtmt )
1715 	ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* 68000 code */
1716 	ROM_LOAD16_BYTE( "7704a.bin", 0x000000, 0x8000, CRC(96de6c7b) SHA1(f23edf86c5044c151a8502957af7ca0de420d55e) )
1717 	ROM_LOAD16_BYTE( "7701a.bin", 0x000001, 0x8000, CRC(786d1009) SHA1(c56ebd169c2792cde610a7130cffdc0363fca871) )
1718 	ROM_LOAD16_BYTE( "7705a.bin", 0x010000, 0x8000, CRC(fc584391) SHA1(27238408fba2dda67f29094a6700b634b6fdaa58) )
1719 	ROM_LOAD16_BYTE( "7702a.bin", 0x010001, 0x8000, CRC(2241a8fd) SHA1(d968ab57aa228dbb7ae6f17d7bf22991291e75ae) )
1720 	ROM_LOAD16_BYTE( "7706a.bin", 0x020000, 0x8000, CRC(6bbcc9d0) SHA1(e8e0b85867f11eec6b280f3ad9e2746d3d97ab28) )
1721 	ROM_LOAD16_BYTE( "7703a.bin", 0x020001, 0x8000, CRC(fcb0cd40) SHA1(999e107fe08fcb52729ddebc7714a85c47e748b1) )
1722 
1723 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1724 	ROM_LOAD( "7707a.bin",  0x00000, 0x8000, CRC(45318738) SHA1(6885347321aec8c4829a71e4518d1742f939ea9c) ) /* plane 1 */
1725 	ROM_LOAD( "7708a.bin",  0x08000, 0x8000, CRC(411be9a4) SHA1(808a9c941d353f34c3491ca2cde984e73cc7a87d) ) /* plane 2 */
1726 	ROM_LOAD( "7709a.bin",  0x10000, 0x8000, CRC(74ceb5a8) SHA1(93ed6bb4a3c820f3a7ee5e9b2c2ce35d2bed8529) ) /* plane 3 */
1727 
1728 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites */
1729 	ROM_LOAD16_BYTE( "7715.bin",  	0x000001, 0x08000, CRC(bf47e040) SHA1(5aa1b9adaa2095844c10993402a0597bb5768efb) )
1730 	ROM_LOAD16_BYTE( "7719.bin",  	0x000000, 0x08000, CRC(fa5c5d6c) SHA1(6cac5d3fd705d1365348d57a18bbeb1eb9e412b8) )
1731 	ROM_LOAD16_BYTE( "epr10013.c6",	0x010001, 0x08000, CRC(9a0919c5) SHA1(e39e60c1e834b3b46bf2ef1c5952841bebe66ade) )	/* 7716 */
1732 	ROM_LOAD16_BYTE( "epr10017.b3",	0x010000, 0x08000, CRC(62aafd95) SHA1(e1e3a95fd11cabf81f44ac2dd3f951d3094725e6) )	/* 7720 */
1733 	ROM_LOAD16_BYTE( "7717.bin",  	0x020001, 0x08000, CRC(fa64c86d) SHA1(ada722dd6efbf466a719ee1fe34a36ce1ea20184) )
1734 	ROM_LOAD16_BYTE( "7721.bin",  	0x020000, 0x08000, CRC(62a9143e) SHA1(28f0dc0329163f0a6505dd34a24a843b35118c5e) )
1735 	ROM_LOAD16_BYTE( "epr10015.c8",	0x030001, 0x08000, CRC(582d3b6a) SHA1(4f1d0060682e3fc1147082286e00e6a296a95da2) )	/* 7718 */
1736 	ROM_LOAD16_BYTE( "epr10019.b5",	0x030000, 0x08000, CRC(e020c38b) SHA1(d13d38a64f2afa7df3cbccef2fe505a4421b73ad) )	/* 7722 */
1737 
1738 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
1739 	ROM_LOAD( "7710a.bin", 0x00000, 0x8000, CRC(a19b8ba8) SHA1(21b628d4ecbe38a6d96a39ca4252ff1cb728343f) )
1740 
1741 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
1742 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
1743 
1744 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
1745 	ROM_LOAD( "7711.bin", 0x00000, 0x8000, CRC(efa9aabd) SHA1(b0928313b98159b95f3a6784c6279924774b9253) )
1746 	ROM_LOAD( "7712.bin", 0x08000, 0x8000, CRC(7bcd85cf) SHA1(9acba6998327e1074d7311a9b6d06da9baf69aa0) )
1747 	ROM_LOAD( "7713.bin", 0x10000, 0x8000, CRC(33f292e7) SHA1(4358cd3922a0dcbf109d2d697c7b8c4e090c3d52) )
1748 	ROM_LOAD( "7714.bin", 0x18000, 0x8000, CRC(8fd48c47) SHA1(1cba63a9e7e0b477683b7758d124f4949558ba7a) )
1749 
1750 ROM_END
1751 
1752 /***************************************************************************/
1753 
1754 static MEMORY_READ16_START( bodyslam_readmem )
1755 	{ 0x000000, 0x02ffff, MRA16_ROM },
1756 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1757 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1758 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
1759 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1760 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
1761 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
1762 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
1763 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
1764 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
1765 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1766 MEMORY_END
1767 
1768 static MEMORY_WRITE16_START( bodyslam_writemem )
1769 	{ 0x000000, 0x02ffff, MWA16_ROM },
1770 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
1771 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
1772 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
1773 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
1774 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
1775 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
1776 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
1777 MEMORY_END
1778 
1779 /***************************************************************************/
1780 
1781 static void bodyslam_update_proc (void){
1782 	sys16_fg_scrollx = sys16_textram[0x0ffa/2] & 0x01ff;
1783 	sys16_bg_scrollx = sys16_textram[0x0ff8/2] & 0x01ff;
1784 	sys16_fg_scrolly = sys16_textram[0x0f26/2] & 0x00ff;
1785 	sys16_bg_scrolly = sys16_textram[0x0f24/2] & 0x01ff;
1786 
1787 	set_fg_page1( sys16_textram[0x0e9e/2] );
1788 	set_bg_page1( sys16_textram[0x0e9c/2] );
1789 }
1790 
MACHINE_INIT(bodyslam)1791 static MACHINE_INIT( bodyslam ){
1792 	sys16_textmode=1;
1793 	sys16_spritesystem = sys16_sprite_quartet2;
1794 	sys16_sprxoffset = -0xbc;
1795 	sys16_fgxoffset = sys16_bgxoffset = 7;
1796 	sys16_bg_priority_mode = 2;
1797 	sys16_bg_priority_value=0x0e00;
1798 
1799 	sys16_textlayer_lo_min=0;
1800 	sys16_textlayer_lo_max=0x1f;
1801 	sys16_textlayer_hi_min=0x20;
1802 	sys16_textlayer_hi_max=0xff;
1803 
1804 	sys16_update_proc = bodyslam_update_proc;
1805 }
1806 
1807 // I have no idea if this is needed, but I cannot find any code for the countdown
1808 // timer in the code and this seems to work ok.
bodyslam_irq_timer(void)1809 static void bodyslam_irq_timer(void)
1810 {
1811 	int flag=(*(UINT16 *)(&sys16_workingram[0x200/2]))>>8;
1812 	int tick=(*(UINT16 *)(&sys16_workingram[0x200/2]))&0xff;
1813 	int sec=(*(UINT16 *)(&sys16_workingram[0x202/2]))>>8;
1814 	int min=(*(UINT16 *)(&sys16_workingram[0x202/2]))&0xff;
1815 
1816 	if(tick == 0 && sec == 0 && min == 0)
1817 		flag=1;
1818 	else
1819 	{
1820 		if(tick==0)
1821 		{
1822 			tick=0x40;	// The game initialise this to 0x40
1823 			if(sec==0)
1824 			{
1825 				sec=0x59;
1826 				if(min==0)
1827 				{
1828 					flag=1;
1829 					tick=sec=min=0;
1830 				}
1831 				else
1832 					min--;
1833 			}
1834 			else
1835 			{
1836 				if((sec&0xf)==0)
1837 				{
1838 					sec-=0x10;
1839 					sec|=9;
1840 				}
1841 				else
1842 					sec--;
1843 
1844 			}
1845 		}
1846 		else
1847 			tick--;
1848 	}
1849 	sys16_workingram[0x200/2] = (flag<<8)+tick;
1850 	sys16_workingram[0x202/2] = (sec<<8)+min;
1851 }
1852 
DRIVER_INIT(bodyslam)1853 static DRIVER_INIT( bodyslam ){
1854 	machine_init_sys16_onetime();
1855 	sys16_bg1_trans=1;
1856 	sys16_custom_irq=bodyslam_irq_timer;
1857 }
1858 
1859 /***************************************************************************/
1860 
INPUT_PORTS_START(bodyslam)1861 INPUT_PORTS_START( bodyslam )
1862 	SYS16_JOY1
1863 	SYS16_JOY2
1864 	SYS16_SERVICE
1865 	SYS16_COINAGE
1866 
1867 PORT_START	/* DSW1 */
1868 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
1869 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1870 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1871 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
1872 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1873 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1874 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1875 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1876 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1877 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1878 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1879 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1880 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1881 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1882 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1883 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1884 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1885 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1886 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1887 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1888 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1889 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1890 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1891 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1892 
1893 INPUT_PORTS_END
1894 
1895 /***************************************************************************/
1896 
1897 static MACHINE_DRIVER_START( bodyslam )
1898 
1899 	/* basic machine hardware */
1900 	MDRV_IMPORT_FROM(system16_7751)
1901 	MDRV_CPU_MODIFY("main")
1902 	MDRV_CPU_MEMORY(bodyslam_readmem,bodyslam_writemem)
1903 
1904 	MDRV_MACHINE_INIT(bodyslam)
1905 MACHINE_DRIVER_END
1906 
1907 /***************************************************************************/
1908 // sys16B
1909 ROM_START( dduxbl )
1910 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
1911 	ROM_LOAD16_BYTE( "dduxb03.bin", 0x000000, 0x20000, CRC(e7526012) SHA1(a1798008bfa1ce9b87dc330f3817b1978052fcfd) )
1912 	ROM_LOAD16_BYTE( "dduxb05.bin", 0x000001, 0x20000, CRC(459d1237) SHA1(55e9c0dc341c919d58cc789203642c397d7ac65e) )
1913 	/* empty 0x40000 - 0x80000 */
1914 	ROM_LOAD16_BYTE( "dduxb02.bin", 0x080000, 0x20000, CRC(d8ed3132) SHA1(a9d5ad8f79fb635cc234a99fad398688a5f15926) )
1915 	ROM_LOAD16_BYTE( "dduxb04.bin", 0x080001, 0x20000, CRC(30c6cb92) SHA1(2e17c74eeb37c9731fc2e365cc0114f7383c0106) )
1916 
1917 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
1918 	ROM_LOAD( "dduxb14.bin", 0x00000, 0x10000, CRC(664bd135) SHA1(674b06e01c2c8f5b8057dd24d470330c3f140473) )
1919 	ROM_LOAD( "dduxb15.bin", 0x10000, 0x10000, CRC(ce0d2b30) SHA1(e60521c46f1650c9bdc76f2ceb91a6d61aaa0a09) )
1920 	ROM_LOAD( "dduxb16.bin", 0x20000, 0x10000, CRC(6de95434) SHA1(7bed2a0261cf6c2fbb3756633f05f0bb2173977c) )
1921 
1922 	ROM_REGION( 0xa0000, REGION_GFX2, 0 ) //* sprites */
1923 	ROM_LOAD16_BYTE( "dduxb10.bin", 0x00001, 0x010000, CRC(0be3aee5) SHA1(48fc779b7398abbb82cd0d0d28705ece75b3c4e3) )
1924 	ROM_RELOAD( 0x20001, 0x010000 )
1925 	ROM_LOAD16_BYTE( "dduxb06.bin", 0x00000, 0x010000, CRC(b0079e99) SHA1(9bb4d3fa804a3d05a6e06b45a1280d7064e96ac6) )
1926 	ROM_RELOAD( 0x20000, 0x010000 )
1927 	ROM_LOAD16_BYTE( "dduxb11.bin", 0x40001, 0x010000, CRC(cfb2af18) SHA1(1ad18f933a7b797f0364d1f4a6c8549351b4c9a6) )
1928 	ROM_LOAD16_BYTE( "dduxb07.bin", 0x40000, 0x010000, CRC(0217369c) SHA1(b6ec2fa1279a27a602d79e1073c54193745ea816) )
1929 	ROM_LOAD16_BYTE( "dduxb12.bin", 0x60001, 0x010000, CRC(28ce9b15) SHA1(1640df9c8f21893c0647ad2f4210c714a06e6f37) )
1930 	ROM_LOAD16_BYTE( "dduxb08.bin", 0x60000, 0x010000, CRC(8844f336) SHA1(18c1baaad3bcc658d4a6d03de8c97378b5284e88) )
1931 	ROM_LOAD16_BYTE( "dduxb13.bin", 0x80001, 0x010000, CRC(efe57759) SHA1(69b8969b20ab9480df2735bd2bcd527069196bd7) )
1932 	ROM_LOAD16_BYTE( "dduxb09.bin", 0x80000, 0x010000, CRC(6b64f665) SHA1(df07fcf2bbec6fa78f89b95272762aebd6f3ec0e) )
1933 
1934 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
1935 	ROM_LOAD( "dduxb01.bin", 0x0000, 0x8000, CRC(0dbef0d7) SHA1(8b9afb2fcb946cec467b1e691c267194b503f841) )
1936 ROM_END
1937 
1938 /***************************************************************************/
1939 static READ16_HANDLER( dduxbl_skip_r ){
1940 	if (activecpu_get_pc()==0x502) {cpu_spinuntil_int(); return 0xffff;}
1941 	return sys16_workingram[0x36e0/2];
1942 }
1943 
MEMORY_READ16_START(dduxbl_readmem)1944 static MEMORY_READ16_START( dduxbl_readmem )
1945 	{ 0x000000, 0x0bffff, MRA16_ROM },
1946 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
1947 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
1948 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
1949 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
1950 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
1951 	{ 0xc41004, 0xc41005, input_port_1_word_r }, // player2
1952 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
1953 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
1954 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
1955 	{ 0xfff6e0, 0xfff6e1, dduxbl_skip_r },
1956 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
1957 MEMORY_END
1958 
1959 static MEMORY_WRITE16_START( dduxbl_writemem )
1960 	{ 0x000000, 0x0bffff, MWA16_ROM },
1961 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
1962 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
1963 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
1964 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
1965 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
1966 	{ 0xc40006, 0xc40007, sound_command_w },
1967 	{ 0xc46000, 0xc4603f, SYS16_MWA16_EXTRAM2 },
1968 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
1969 MEMORY_END
1970 
1971 /***************************************************************************/
1972 
1973 static void dduxbl_update_proc( void ){
1974 	sys16_fg_scrollx = (sys16_extraram2[0x0018/2] ^ 0xffff) & 0x01ff;
1975 	sys16_bg_scrollx = (sys16_extraram2[0x0008/2] ^ 0xffff) & 0x01ff;
1976 	sys16_fg_scrolly = sys16_extraram2[0x0010/2] & 0x00ff;
1977 	sys16_bg_scrolly = sys16_extraram2[0x0000/2];
1978 
1979 	{
1980 		unsigned char lu = sys16_extraram2[0x0020/2] & 0xff;
1981 		unsigned char ru = sys16_extraram2[0x0022/2] & 0xff;
1982 		unsigned char ld = sys16_extraram2[0x0024/2] & 0xff;
1983 		unsigned char rd = sys16_extraram2[0x0026/2] & 0xff;
1984 
1985 		if (lu==4 && ld==4 && ru==5 && rd==5)
1986 		{ // fix a bug in chicago round (un-tested in MAME)
1987 			int vs=(*(UINT16 *)(&sys16_workingram[0x36ec]));
1988 			sys16_bg_scrolly = vs & 0xff;
1989 			sys16_fg_scrolly = vs & 0xff;
1990 			if (vs >= 0x100)
1991 			{
1992 				lu=0x26; ru=0x37;
1993 				ld=0x04; rd=0x15;
1994 			} else {
1995 				ld=0x26; rd=0x37;
1996 				lu=0x04; ru=0x15;
1997 			}
1998 		}
1999 		sys16_fg_page[0] = ld&0xf;
2000 		sys16_fg_page[1] = rd&0xf;
2001 		sys16_fg_page[2] = lu&0xf;
2002 		sys16_fg_page[3] = ru&0xf;
2003 
2004 		sys16_bg_page[0] = ld>>4;
2005 		sys16_bg_page[1] = rd>>4;
2006 		sys16_bg_page[2] = lu>>4;
2007 		sys16_bg_page[3] = ru>>4;
2008 	}
2009 }
2010 
MACHINE_INIT(dduxbl)2011 static MACHINE_INIT( dduxbl ){
2012 	static int bank[16] = { //*
2013 		0,0,0,0,
2014 		0,0,0,4,
2015 		0,0,0,3,
2016 		0,2,0,0
2017 	};
2018 	sys16_obj_bank = bank;
2019 
2020 	sys16_patch_code( 0x1eb2e, 0x01 );
2021 	sys16_patch_code( 0x1eb2f, 0x01 );
2022 	sys16_patch_code( 0x1eb3c, 0x00 );
2023 	sys16_patch_code( 0x1eb3d, 0x00 );
2024 	sys16_patch_code( 0x23132, 0x01 );
2025 	sys16_patch_code( 0x23133, 0x01 );
2026 	sys16_patch_code( 0x23140, 0x00 );
2027 	sys16_patch_code( 0x23141, 0x00 );
2028 	sys16_patch_code( 0x24a9a, 0x01 );
2029 	sys16_patch_code( 0x24a9b, 0x01 );
2030 	sys16_patch_code( 0x24aa8, 0x00 );
2031 	sys16_patch_code( 0x24aa9, 0x00 );
2032 
2033 	sys16_update_proc = dduxbl_update_proc;
2034 	sys16_sprxoffset = -0x48;
2035 }
2036 
DRIVER_INIT(dduxbl)2037 static DRIVER_INIT( dduxbl )
2038 {
2039 	int i;
2040 
2041 	machine_init_sys16_onetime();
2042 
2043 	/* invert the graphics bits on the tiles */
2044 	for (i = 0; i < 0x30000; i++)
2045 		memory_region(REGION_GFX1)[i] ^= 0xff;
2046 }
2047 /***************************************************************************/
2048 
INPUT_PORTS_START(dduxbl)2049 INPUT_PORTS_START( dduxbl )
2050 	SYS16_JOY1
2051 	SYS16_JOY2
2052 	SYS16_SERVICE
2053 	SYS16_COINAGE
2054 
2055 PORT_START	/* DSW1 */
2056 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
2057 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2058 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2059 	PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) )
2060 	PORT_DIPSETTING(    0x04, "Easy" )
2061 	PORT_DIPSETTING(    0x06, "Normal" )
2062 	PORT_DIPSETTING(    0x02, "Hard" )
2063 	PORT_DIPSETTING(    0x00, "Hardest" )
2064 	PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) )
2065 	PORT_DIPSETTING(    0x10, "2" )
2066 	PORT_DIPSETTING(    0x18, "3" )
2067 	PORT_DIPSETTING(    0x08, "4" )
2068 	PORT_DIPSETTING(    0x00, "5" )
2069 	PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) )
2070 	PORT_DIPSETTING(    0x40, "150000" )
2071 	PORT_DIPSETTING(    0x60, "200000" )
2072 	PORT_DIPSETTING(    0x20, "300000" )
2073 	PORT_DIPSETTING(    0x00, "400000" )
2074 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
2075 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2076 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2077 
2078 INPUT_PORTS_END
2079 
2080 /***************************************************************************/
2081 
2082 static MACHINE_DRIVER_START( dduxbl )
2083 
2084 	/* basic machine hardware */
2085 	MDRV_IMPORT_FROM(system16)
2086 	MDRV_CPU_MODIFY("main")
2087 	MDRV_CPU_MEMORY(dduxbl_readmem,dduxbl_writemem)
2088 
2089 	MDRV_MACHINE_INIT(dduxbl)
2090 MACHINE_DRIVER_END
2091 
2092 /***************************************************************************/
2093 // sys16B
2094 ROM_START( eswat )
2095 	ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2096 	ROM_LOAD16_BYTE( "12657", 0x000000, 0x40000, CRC(cfb935e9) SHA1(c2ff4566f5f6cd6229323fac4f9d1881fc86ac62) )
2097 	ROM_LOAD16_BYTE( "12656", 0x000001, 0x40000, CRC(be3f9d28) SHA1(3e93da0746e064c3406c378b1cf6be82f999b282) )
2098 
2099 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2100 	ROM_LOAD( "e12624r", 0x00000, 0x40000, CRC(e7b8545e) SHA1(1eee07ae29b791851a5b3761e731ceee6e5c24a8) )
2101 	ROM_LOAD( "e12625r", 0x40000, 0x40000, CRC(b418582c) SHA1(06120c58e4873474eef8ee1339b01b9a71d08a1a) )
2102 	ROM_LOAD( "e12626r", 0x80000, 0x40000, CRC(ba65789b) SHA1(3603a229756b02bfa89df97d36b27d55bf0fd82b) )
2103 
2104 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
2105 	ROM_LOAD16_BYTE( "e12618r", 0x000001, 0x40000, CRC(2d9ae975) SHA1(3d2f80f3393bac0dfee37ac8d3c96ab8b0869411) )
2106 	ROM_LOAD16_BYTE( "e12621r", 0x000000, 0x40000, CRC(1e6c4cf7) SHA1(21c87769c2a2410b8c451e08099a4e5e70381408) )
2107 	ROM_LOAD16_BYTE( "e12619r", 0x080001, 0x40000, CRC(5f7ee6f6) SHA1(1a9d0ecc00586ec1ee9250579957cf095066fd44) )
2108 	ROM_LOAD16_BYTE( "e12622r", 0x080000, 0x40000, CRC(33251fde) SHA1(bbfc0f69a5b92c9d6fc25fdfbf652e30627106ab) )
2109 	ROM_LOAD16_BYTE( "e12620r", 0x100001, 0x40000, CRC(905f9be2) SHA1(3a3d0f6392263b67011d6b9d9d79c79d69f68bd6) )
2110 	ROM_LOAD16_BYTE( "e12623r", 0x100000, 0x40000, CRC(a25ea1fc) SHA1(4ab4b9c8698e0b630bb6f363070f28a300ab9ee6) )
2111 
2112 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
2113 	ROM_LOAD( "e12617", 0x00000, 0x08000, CRC(537930cb) SHA1(da3d50aff3cbe1587809e804f840fa5138fb6811) )
2114 	ROM_LOAD( "e12616r",0x10000, 0x20000, CRC(f213fa4a) SHA1(a4cb8a52b358a075177f73699eae525884aba1ec) )
2115 ROM_END
2116 
2117 ROM_START( eswatbl )
2118 	ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 code */
2119 	ROM_LOAD16_BYTE( "eswat_c.rom", 0x000000, 0x10000, CRC(1028cc81) SHA1(24b4cd182419a44f3d6afa1c4273353024eb278f) )
2120 	ROM_LOAD16_BYTE( "eswat_f.rom", 0x000001, 0x10000, CRC(f7b2d388) SHA1(8131ba8f4fa01751b9993c3c6c218c9bd3adb328) )
2121 	ROM_LOAD16_BYTE( "eswat_b.rom", 0x020000, 0x10000, CRC(87c6b1b5) SHA1(a9f29e29a9c0e3daf272dce263a5fd7866642c77) )
2122 	ROM_LOAD16_BYTE( "eswat_e.rom", 0x020001, 0x10000, CRC(937ddf9a) SHA1(9fc73f93e9c4221a4dc778593edc02cb405b2f78) )
2123 	ROM_LOAD16_BYTE( "eswat_a.rom", 0x040000, 0x08000, CRC(2af4fc62) SHA1(f7b1539a5ab9560bd49dfecf44699abccfb649be) )
2124 	ROM_LOAD16_BYTE( "eswat_d.rom", 0x040001, 0x08000, CRC(b4751e19) SHA1(57c9687dc864c163d13dbb89057cd42684a199cd) )
2125 
2126 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2127 	ROM_LOAD( "ic19.bin", 0x00000, 0x40000, CRC(375a5ec4) SHA1(42b9116bdc0e0a5b1dd667ac1856b4c2252829ba) )
2128 	ROM_LOAD( "ic20.bin", 0x40000, 0x40000, CRC(3b8c757e) SHA1(0b66e8446d059a12e47e2a6fe8f0a333245bb95c) )
2129 	ROM_LOAD( "ic21.bin", 0x80000, 0x40000, CRC(3efca25c) SHA1(0d866bf53a16b52719f73081e933f4db27d72ece) )
2130 
2131 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
2132 	ROM_LOAD16_BYTE( "ic9.bin",  0x000001, 0x040000, CRC(0d1530bf) SHA1(bb8626cd98761c1c20cee117d00315c85621ba6a) )
2133 	ROM_LOAD16_BYTE( "ic12.bin", 0x000000, 0x040000, CRC(18ff0799) SHA1(5417223378aef16ee2b4f438d1f8f11a23fe7265) )
2134 	ROM_LOAD16_BYTE( "ic10.bin", 0x080001, 0x040000, CRC(32069246) SHA1(4913009bc72bf4f8b171b14fe06457f5784cab15) )
2135 	ROM_LOAD16_BYTE( "ic13.bin", 0x080000, 0x040000, CRC(a3dfe436) SHA1(640ccc552114d403f35d441574d2f3e4f1d4a8f9) )
2136 	ROM_LOAD16_BYTE( "ic11.bin", 0x100001, 0x040000, CRC(f6b096e0) SHA1(695ad1adbdc29f4d614645867e16de038cf92709) )
2137 	ROM_LOAD16_BYTE( "ic14.bin", 0x100000, 0x040000, CRC(6773fef6) SHA1(91e646ea447be02254d060daf255d26afe0cc79e) )
2138 
2139 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
2140 	ROM_LOAD( "ic8.bin", 0x0000, 0x8000, CRC(7efecf23) SHA1(2b87af7cfaab5942a3f7b38c987fcba01d3475ab) )
2141 	ROM_LOAD( "ic6.bin", 0x10000, 0x40000, CRC(254347c2) SHA1(bf2d83a69a5be375c7e42e9f7d6e65c1095a354c) )
2142 ROM_END
2143 /***************************************************************************/
2144 
2145 static READ16_HANDLER( eswatbl_skip_r ){
2146 	if (activecpu_get_pc()==0x65c) {cpu_spinuntil_int(); return 0xffff;}
2147 	return sys16_workingram[0x0454/2];
2148 }
2149 
MEMORY_READ16_START(eswat_readmem)2150 static MEMORY_READ16_START( eswat_readmem )
2151 	{ 0x000000, 0x07ffff, MRA16_ROM },
2152 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
2153 	{ 0x410000, 0x418fff, SYS16_MRA16_TEXTRAM }, //*
2154 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
2155 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
2156 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
2157 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
2158 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
2159 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
2160 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
2161 	{ 0xffc454, 0xffc455, eswatbl_skip_r },
2162 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
2163 MEMORY_END
2164 
2165 static int eswat_tilebank0;
2166 
WRITE16_HANDLER(eswat_tilebank0_w)2167 static WRITE16_HANDLER( eswat_tilebank0_w ){
2168 	if( ACCESSING_LSB ){
2169 		eswat_tilebank0 = data&0xff;
2170 	}
2171 }
2172 
MEMORY_WRITE16_START(eswat_writemem)2173 static MEMORY_WRITE16_START( eswat_writemem )
2174 	{ 0x000000, 0x07ffff, MWA16_ROM },
2175 	{ 0x3e2000, 0x3e2001, eswat_tilebank0_w },
2176 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
2177 	{ 0x410000, 0x418fff, SYS16_MWA16_TEXTRAM },
2178 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
2179 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
2180 	{ 0xc42006, 0xc42007, sound_command_w },
2181 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
2182 	{ 0xc80000, 0xc80001, MWA16_NOP },
2183 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
2184 MEMORY_END
2185 
2186 /***************************************************************************/
2187 
2188 static void eswat_update_proc( void ){
2189 	sys16_fg_scrollx = sys16_textram[0x8008/2] ^ 0xffff;
2190 	sys16_bg_scrollx = sys16_textram[0x8018/2] ^ 0xffff;
2191 	sys16_fg_scrolly = sys16_textram[0x8000/2];
2192 	sys16_bg_scrolly = sys16_textram[0x8010/2];
2193 
2194 	set_fg_page( sys16_textram[0x8020/2] );
2195 	set_bg_page( sys16_textram[0x8028/2] );
2196 
2197 	sys16_tile_bank1 = (sys16_textram[0x8030/2])&0xf;
2198 	sys16_tile_bank0 = eswat_tilebank0;
2199 }
2200 
MACHINE_INIT(eswat)2201 static MACHINE_INIT( eswat ){
2202 	static int bank[] = {
2203 		0,1,	4,5,
2204 		8,9,	12,13,
2205 		2,3,	6,7,
2206 		10,11,	14,15
2207 	};
2208 	sys16_obj_bank = bank;
2209 	sys16_sprxoffset = -0x23c;
2210 
2211 	sys16_patch_code( 0x3897, 0x11 );
2212 
2213 	sys16_update_proc = eswat_update_proc;
2214 }
2215 
DRIVER_INIT(eswat)2216 static DRIVER_INIT( eswat ){
2217 	machine_init_sys16_onetime();
2218 	sys16_rowscroll_scroll=0x8000;
2219 	sys18_splittab_fg_x=&sys16_textram[0x0f80];
2220 }
2221 
2222 /***************************************************************************/
2223 
INPUT_PORTS_START(eswat)2224 INPUT_PORTS_START( eswat )
2225 	SYS16_JOY1
2226 	SYS16_JOY2
2227 	SYS16_SERVICE
2228 	SYS16_COINAGE
2229 
2230 PORT_START	/* DSW1 */
2231 	PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" )
2232 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2233 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2234 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
2235 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2236 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2237 	PORT_DIPNAME( 0x04, 0x04, "Display Flip" )
2238 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2239 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2240 	PORT_DIPNAME( 0x08, 0x08, "Time" )
2241 	PORT_DIPSETTING(    0x08, "Normal" )
2242 	PORT_DIPSETTING(    0x00, "Hard" )
2243 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
2244 	PORT_DIPSETTING(    0x20, "Easy" )
2245 	PORT_DIPSETTING(    0x30, "Normal" )
2246 	PORT_DIPSETTING(    0x10, "Hard" )
2247 	PORT_DIPSETTING(    0x00, "Hardest" )
2248 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) )
2249 	PORT_DIPSETTING(    0x00, "1" )
2250 	PORT_DIPSETTING(    0x40, "2" )
2251 	PORT_DIPSETTING(    0xc0, "3" )
2252 	PORT_DIPSETTING(    0x80, "4" )
2253 INPUT_PORTS_END
2254 
2255 /***************************************************************************/
2256 
2257 static MACHINE_DRIVER_START( eswat )
2258 
2259 	/* basic machine hardware */
2260 	MDRV_IMPORT_FROM(system16_7759)
2261 	MDRV_CPU_MODIFY("main")
2262 	MDRV_CPU_MEMORY(eswat_readmem,eswat_writemem)
2263 
2264 	MDRV_MACHINE_INIT(eswat)
2265 MACHINE_DRIVER_END
2266 
2267 /***************************************************************************/
2268 // sys16A
2269 ROM_START( fantzono )
2270 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
2271 	ROM_LOAD16_BYTE( "7385.43", 0x000000, 0x8000, CRC(5cb64450) SHA1(5831405359975dd7d8c6614b20fd9b18a5d6410d) )
2272 	ROM_LOAD16_BYTE( "7382.26", 0x000001, 0x8000, CRC(3fda7416) SHA1(91f34cc8afb4ad8bc783c31d25781a1359c44cfe) )
2273 	ROM_LOAD16_BYTE( "7386.42", 0x010000, 0x8000, CRC(15810ace) SHA1(e61a258ab6601d359f6ad1f37a2b2801bf777d26) )
2274 	ROM_LOAD16_BYTE( "7383.25", 0x010001, 0x8000, CRC(a001e10a) SHA1(04ebb012b10817db36997d0ee877104d512decf8) )
2275 	ROM_LOAD16_BYTE( "7387.41", 0x020000, 0x8000, CRC(0acd335d) SHA1(f39566a2069eefa7682c57c6521ea7a328738d06) )
2276 	ROM_LOAD16_BYTE( "7384.24", 0x020001, 0x8000, CRC(fd909341) SHA1(2f1e01eb7d7b330c9c0dd98e5f8ed4973f0e93fb) )
2277 
2278 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2279 	ROM_LOAD( "7388.95", 0x00000, 0x08000, CRC(8eb02f6b) SHA1(80511b944b57541669010bd5a0ca52bc98eabd62) )
2280 	ROM_LOAD( "7389.94", 0x08000, 0x08000, CRC(2f4f71b8) SHA1(ceb39e95cd43904b8e4f89c7227491e139fb3ca6) )
2281 	ROM_LOAD( "7390.93", 0x10000, 0x08000, CRC(d90609c6) SHA1(4232f6ecb21f242c0c8d81e06b88bc742668609f) )
2282 
2283 	ROM_REGION( 0x30000, REGION_GFX2, 0 ) /* sprites */
2284 	ROM_LOAD16_BYTE( "7392.10", 0x00001, 0x8000, CRC(5bb7c8b6) SHA1(eaa0ed63ac4f66ee285757e842bdd7b005292600) )
2285 	ROM_LOAD16_BYTE( "7396.11", 0x00000, 0x8000, CRC(74ae4b57) SHA1(1f24b1faea765994b85f0e7ac8e944c8da22103f) )
2286 	ROM_LOAD16_BYTE( "7393.17", 0x10001, 0x8000, CRC(14fc7e82) SHA1(ca7caca989a3577dd30ad4f66b0fcce712a454ef) )
2287 	ROM_LOAD16_BYTE( "7397.18", 0x10000, 0x8000, CRC(e05a1e25) SHA1(9691d9f0763b7483ee6912437902f22ab4b78a05) )
2288 	ROM_LOAD16_BYTE( "7394.23", 0x20001, 0x8000, CRC(531ca13f) SHA1(19e68bc515f6021e1145cff4f3f0e083839ee8f3) )
2289 	ROM_LOAD16_BYTE( "7398.24", 0x20000, 0x8000, CRC(68807b49) SHA1(0a189da8cdd2090e76d6d06c55b478abce60542d) )
2290 
2291 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
2292 	ROM_LOAD( "7535.12", 0x0000, 0x8000, CRC(0cb2126a) SHA1(42b18a81bed58ef59eaad929007eef89ad273dbb) )
2293 ROM_END
2294 
2295 ROM_START( fantzone )
2296 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
2297 	ROM_LOAD16_BYTE( "epr7385a.43", 0x000000, 0x8000, CRC(4091af42) SHA1(1d4fdd32db9f75e5ccaab5766a50249ad71a60af) )
2298 	ROM_LOAD16_BYTE( "epr7382a.26", 0x000001, 0x8000, CRC(77d67bfd) SHA1(886ce4c2d779cedd81f85737ef55fce3c94baa18) )
2299 	ROM_LOAD16_BYTE( "epr7386a.42", 0x010000, 0x8000, CRC(b0a67cd0) SHA1(2e2bf2b7306fc567f7d13f89977543b368c19027) )
2300 	ROM_LOAD16_BYTE( "epr7383a.25", 0x010001, 0x8000, CRC(5f79b2a9) SHA1(de3125bbd0a126fc5a67ba3134cd3f4608ebdfce) )
2301 	ROM_LOAD16_BYTE( "7387.41", 0x020000, 0x8000, CRC(0acd335d) SHA1(f39566a2069eefa7682c57c6521ea7a328738d06) )
2302 	ROM_LOAD16_BYTE( "7384.24", 0x020001, 0x8000, CRC(fd909341) SHA1(2f1e01eb7d7b330c9c0dd98e5f8ed4973f0e93fb) )
2303 
2304 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2305 	ROM_LOAD( "7388.95", 0x00000, 0x08000, CRC(8eb02f6b) SHA1(80511b944b57541669010bd5a0ca52bc98eabd62) )
2306 	ROM_LOAD( "7389.94", 0x08000, 0x08000, CRC(2f4f71b8) SHA1(ceb39e95cd43904b8e4f89c7227491e139fb3ca6) )
2307 	ROM_LOAD( "7390.93", 0x10000, 0x08000, CRC(d90609c6) SHA1(4232f6ecb21f242c0c8d81e06b88bc742668609f) )
2308 
2309 	ROM_REGION( 0x30000, REGION_GFX2, 0 ) /* sprites */
2310 	ROM_LOAD16_BYTE( "7392.10", 0x00001, 0x8000, CRC(5bb7c8b6) SHA1(eaa0ed63ac4f66ee285757e842bdd7b005292600) )
2311 	ROM_LOAD16_BYTE( "7396.11", 0x00000, 0x8000, CRC(74ae4b57) SHA1(1f24b1faea765994b85f0e7ac8e944c8da22103f) )
2312 	ROM_LOAD16_BYTE( "7393.17", 0x10001, 0x8000, CRC(14fc7e82) SHA1(ca7caca989a3577dd30ad4f66b0fcce712a454ef) )
2313 	ROM_LOAD16_BYTE( "7397.18", 0x10000, 0x8000, CRC(e05a1e25) SHA1(9691d9f0763b7483ee6912437902f22ab4b78a05) )
2314 	ROM_LOAD16_BYTE( "7394.23", 0x20001, 0x8000, CRC(531ca13f) SHA1(19e68bc515f6021e1145cff4f3f0e083839ee8f3) )
2315 	ROM_LOAD16_BYTE( "7398.24", 0x20000, 0x8000, CRC(68807b49) SHA1(0a189da8cdd2090e76d6d06c55b478abce60542d) )
2316 
2317 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
2318 	ROM_LOAD( "epr7535a.12", 0x0000, 0x8000, CRC(bc1374fa) SHA1(ed2c87ae024dc251e175239f1bccc728fc096548) )
2319 ROM_END
2320 
2321 
2322 /***************************************************************************/
2323 
2324 static READ16_HANDLER( fantzone_skip_r ){
2325 	if (activecpu_get_pc()==0x91b2) {cpu_spinuntil_int(); return 0xffff;}
2326 	return sys16_workingram[0x022a/2];
2327 }
2328 
MEMORY_READ16_START(fantzono_readmem)2329 static MEMORY_READ16_START( fantzono_readmem )
2330 	{ 0x000000, 0x02ffff, MRA16_ROM },
2331 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
2332 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
2333 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
2334 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
2335 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
2336 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
2337 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
2338 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
2339 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
2340 	{ 0xc40000, 0xc40003, SYS16_MRA16_EXTRAM2 },
2341 	{ 0xffc22a, 0xffc22b, fantzone_skip_r },
2342 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
2343 MEMORY_END
2344 
2345 static MEMORY_WRITE16_START( fantzono_writemem )
2346 	{ 0x000000, 0x02ffff, MWA16_ROM },
2347 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
2348 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
2349 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
2350 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
2351 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
2352 	{ 0xc40000, 0xc40003, SYS16_MWA16_EXTRAM2 },
2353 	{ 0xc60000, 0xc60003, MWA16_NOP },
2354 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
2355 MEMORY_END
2356 
2357 static MEMORY_READ16_START( fantzone_readmem )
2358 	{ 0x000000, 0x02ffff, MRA16_ROM },
2359 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
2360 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
2361 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
2362 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
2363 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
2364 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
2365 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
2366 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
2367 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
2368 	{ 0xffc22a, 0xffc22b, fantzone_skip_r },
2369 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
2370 MEMORY_END
2371 
2372 static MEMORY_WRITE16_START( fantzone_writemem )
2373 	{ 0x000000, 0x02ffff, MWA16_ROM },
2374 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
2375 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
2376 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
2377 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
2378 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
2379 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
2380 	{ 0xc60000, 0xc60003, MWA16_NOP },
2381 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
2382 MEMORY_END
2383 
2384 /***************************************************************************/
2385 
2386 static void fantzone_update_proc( void ){
2387 	set_bg_page1( sys16_textram[0x74e] );
2388 	set_fg_page1( sys16_textram[0x74f] );
2389 	sys16_fg_scrollx = sys16_textram[0x7fc] & 0x01ff;
2390 	sys16_bg_scrollx = sys16_textram[0x7fd] & 0x01ff;
2391 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
2392 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
2393 }
2394 
MACHINE_INIT(fantzono)2395 static MACHINE_INIT( fantzono ){
2396 	sys16_textmode=1;
2397 	sys16_spritesystem = sys16_sprite_fantzone;
2398 	sys16_sprxoffset = -0xbe;
2399 //	sys16_fgxoffset = sys16_bgxoffset = 8;
2400 	sys16_fg_priority_mode=3;				// fixes end of game priority
2401 	sys16_fg_priority_value=0xd000;
2402 
2403 	sys16_patch_code( 0x20e7, 0x16 );
2404 	sys16_patch_code( 0x30ef, 0x16 );
2405 
2406 	// solving Fantasy Zone scrolling bug
2407 	sys16_patch_code(0x308f,0x00);
2408 
2409 	// invincible
2410 /*	sys16_patch_code(0x224e,0x4e);
2411 	sys16_patch_code(0x224f,0x71);
2412 	sys16_patch_code(0x2250,0x4e);
2413 	sys16_patch_code(0x2251,0x71);
2414 
2415 	sys16_patch_code(0x2666,0x4e);
2416 	sys16_patch_code(0x2667,0x71);
2417 	sys16_patch_code(0x2668,0x4e);
2418 	sys16_patch_code(0x2669,0x71);
2419 
2420 	sys16_patch_code(0x25c0,0x4e);
2421 	sys16_patch_code(0x25c1,0x71);
2422 	sys16_patch_code(0x25c2,0x4e);
2423 	sys16_patch_code(0x25c3,0x71);
2424 */
2425 
2426 	sys16_update_proc = fantzone_update_proc;
2427 }
2428 
MACHINE_INIT(fantzone)2429 static MACHINE_INIT( fantzone ){
2430 	sys16_textmode=1;
2431 	sys16_spritesystem = sys16_sprite_fantzone;
2432 	sys16_sprxoffset = -0xbe;
2433 	sys16_fg_priority_mode=3;				// fixes end of game priority
2434 	sys16_fg_priority_value=0xd000;
2435 
2436 	sys16_patch_code( 0x2135, 0x16 );
2437 	sys16_patch_code( 0x3649, 0x16 );
2438 
2439 	// hack? solving Fantasy Zone scrolling bug
2440 	sys16_patch_code(0x35e9,0x00);
2441 
2442 	sys16_update_proc = fantzone_update_proc;
2443 }
2444 
DRIVER_INIT(fantzone)2445 static DRIVER_INIT( fantzone )
2446 {
2447 	machine_init_sys16_onetime();
2448 }
2449 /***************************************************************************/
2450 
INPUT_PORTS_START(fantzone)2451 INPUT_PORTS_START( fantzone )
2452 	SYS16_JOY1
2453 	SYS16_JOY2
2454 	SYS16_SERVICE
2455 	SYS16_COINAGE
2456 
2457 PORT_START	/* DSW1 */
2458 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
2459 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
2460 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
2461 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
2462 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2463 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2464 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
2465 	PORT_DIPSETTING(    0x08, "2" )
2466 	PORT_DIPSETTING(    0x0c, "3" )
2467 	PORT_DIPSETTING(    0x04, "4" )
2468 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "240", IP_KEY_NONE, IP_JOY_NONE )
2469 	PORT_DIPNAME( 0x30, 0x30, "Extra Ship Cost" )
2470 	PORT_DIPSETTING(    0x30, "5000" )
2471 	PORT_DIPSETTING(    0x20, "10000" )
2472 	PORT_DIPSETTING(    0x10, "15000" )
2473 	PORT_DIPSETTING(    0x00, "20000" )
2474 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
2475 	PORT_DIPSETTING(    0x80, "Easy" )
2476 	PORT_DIPSETTING(    0xc0, "Normal" )
2477 	PORT_DIPSETTING(    0x40, "Hard" )
2478 	PORT_DIPSETTING(    0x00, "Hardest" )
2479 
2480 INPUT_PORTS_END
2481 
2482 /***************************************************************************/
2483 
2484 static MACHINE_DRIVER_START( fantzono )
2485 
2486 	/* basic machine hardware */
2487 	MDRV_IMPORT_FROM(system16)
2488 	MDRV_CPU_MODIFY("main")
2489 	MDRV_CPU_MEMORY(fantzono_readmem,fantzono_writemem)
2490 
2491 	MDRV_MACHINE_INIT(fantzono)
2492 MACHINE_DRIVER_END
2493 
2494 
2495 static MACHINE_DRIVER_START( fantzone )
2496 
2497 	/* basic machine hardware */
2498 	MDRV_IMPORT_FROM(system16)
2499 	MDRV_CPU_MODIFY("main")
2500 	MDRV_CPU_MEMORY(fantzone_readmem,fantzone_writemem)
2501 
2502 	MDRV_MACHINE_INIT(fantzone)
2503 MACHINE_DRIVER_END
2504 
2505 /***************************************************************************/
2506 // sys16B
2507 ROM_START( fpoint )
2508 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
2509 	ROM_LOAD16_BYTE( "12591b.bin", 0x000000, 0x10000, CRC(248b3e1b) SHA1(b473c2a057a61896596ac4761e875d72c4f91529) )
2510 	ROM_LOAD16_BYTE( "12590b.bin", 0x000001, 0x10000, CRC(75256e3d) SHA1(87a7d9952f29e49958c135906ac2fd19bdc29b67) )
2511 
2512 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2513 	ROM_LOAD( "12595.bin", 0x00000, 0x10000, CRC(5b18d60b) SHA1(8e9c81635dcefa52d1cf53c2937ae560191b5202) )
2514 	ROM_LOAD( "12594.bin", 0x10000, 0x10000, CRC(8bfc4815) SHA1(08d28b65e5024c592a9a289b270774ef5c553cbf) )
2515 	ROM_LOAD( "12593.bin", 0x20000, 0x10000, CRC(cc0582d8) SHA1(92c7d125a6dcb9c5e6e7bd92a5bf3008385ed487) )
2516 
2517 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* sprites */
2518 	ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x10000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
2519 	ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x10000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
2520 
2521 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
2522 	ROM_LOAD( "12592.bin", 0x0000, 0x8000, CRC(9a8c11bb) SHA1(399f8e9bdd7aaa4d25817fa9cd4bbf413e5baebe) )
2523 ROM_END
2524 
2525 ROM_START( fpointbl )
2526 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
2527 	ROM_LOAD16_BYTE( "flpoint.003", 0x000000, 0x10000, CRC(4d6df514) SHA1(168aa1629ab7152ba1984605155406b236954a2c) )
2528 	ROM_LOAD16_BYTE( "flpoint.002", 0x000001, 0x10000, CRC(4dff2ee8) SHA1(bd157d8c168d45e7490a05d5e1e901d9bdda9599) )
2529 
2530 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2531 	ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
2532 	ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
2533 	ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
2534 
2535 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* sprites */
2536 	ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
2537 	ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
2538 
2539 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
2540 	ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) )	// bootleg rom doesn't work, but should be correct!
2541 	/* the below rom is from the original, sound doesn't work with the bootleg rom but the bootleg rom is correct */
2542 	ROM_LOAD( "12592.bin",   0x0000, 0x8000, CRC(9a8c11bb) SHA1(399f8e9bdd7aaa4d25817fa9cd4bbf413e5baebe) )	// wrong sound rom? (this ones from the original)
2543 ROM_END
2544 
2545 
2546 ROM_START( fpointbj )
2547 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
2548 	ROM_LOAD16_BYTE( "boot2.003", 0x000000, 0x10000, CRC(6c00d1b0) SHA1(fd0c47b8ca010a64d3ef91980f93854ebc98fbda) )
2549 	ROM_LOAD16_BYTE( "boot2.002", 0x000001, 0x10000, CRC(c1fcd704) SHA1(697bef464e53fb9891ed15ee2d6210107b693b20) )
2550 
2551 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2552 	ROM_LOAD( "flpoint.006", 0x00000, 0x10000, CRC(c539727d) SHA1(56674effe1d273128dddd2ff9e02974ec10f3fff) )
2553 	ROM_LOAD( "flpoint.005", 0x10000, 0x10000, CRC(82c0b8b0) SHA1(e1e2e721cb8ad53df33065582dc90edeba9c3cab) )
2554 	ROM_LOAD( "flpoint.004", 0x20000, 0x10000, CRC(522426ae) SHA1(90fd0a19b30a8a61dc4cfa66a64115596333dcc6) )
2555 
2556 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* sprites */
2557 	ROM_LOAD16_BYTE( "12596.bin", 0x00001, 0x010000, CRC(4a4041f3) SHA1(4c52b30223d8aa80ccdbb196098cb17e64ad6583) )
2558 	ROM_LOAD16_BYTE( "12597.bin", 0x00000, 0x010000, CRC(6961e676) SHA1(7639d2da086b57a9a8d6100fdacf40d97d7c4772) )
2559 
2560 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
2561 	ROM_LOAD( "flpoint.001", 0x0000, 0x8000, CRC(c5b8e0fe) SHA1(6cf8c67151d8604326fc6dbf976c0635b452a844) )	// bootleg rom doesn't work, but should be correct!
2562 	/* the below rom is from the original, sound doesn't work with the bootleg rom but the bootleg rom is correct */
2563 	ROM_LOAD( "12592.bin",   0x0000, 0x8000, CRC(9a8c11bb) SHA1(399f8e9bdd7aaa4d25817fa9cd4bbf413e5baebe) )	// wrong sound rom? (this ones from the original)
2564 
2565 	/* stuff below isn't used but loaded because it was on the board .. */
2566 	ROM_REGION( 0x0120, REGION_PROMS, 0 )
2567 	ROM_LOAD( "82s129.1",  0x0000, 0x0100, CRC(a7c22d96) SHA1(160deae8053b09c09328325246598b3518c7e20b) )
2568 	ROM_LOAD( "82s123.2",  0x0100, 0x0020, CRC(58bcf8bd) SHA1(e4d3d179b08c0f3424a6bec0f15058fb1b56f8d8) )
2569 
2570 	ROM_REGION( 0x800, REGION_USER1, 0 )
2571 	ROM_LOAD( "d2716.rom",  0x0000, 0x0800, CRC(d7fd8ac4) SHA1(87e5f1c24350adab129ad79a1f68af402580f8f0) )
2572 ROM_END
2573 
2574 /***************************************************************************/
2575 
2576 static READ16_HANDLER( fp_io_service_dummy_r ){
2577 	int data = readinputport( 2 ) & 0xff;
2578 	return (data << 8) + data;
2579 }
2580 
MEMORY_READ16_START(fpoint_readmem)2581 static MEMORY_READ16_START( fpoint_readmem )
2582 	{ 0x000000, 0x01ffff, MRA16_ROM },
2583 	{ 0x02002e, 0x020049, fp_io_service_dummy_r },
2584 	{ 0x601002, 0x601003, input_port_0_word_r }, // player1
2585 	{ 0x601004, 0x601005, input_port_1_word_r }, // player2
2586 	{ 0x601000, 0x601001, input_port_2_word_r }, // service
2587 	{ 0x600000, 0x600001, input_port_4_word_r }, // dip2
2588 	{ 0x600002, 0x600003, input_port_3_word_r }, // dip1
2589 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
2590 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
2591 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
2592 	{ 0x44302a, 0x44304d, fp_io_service_dummy_r },
2593 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
2594 	{ 0xfe003e, 0xfe003f, fp_io_service_dummy_r },
2595 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
2596 MEMORY_END
2597 
2598 static MEMORY_WRITE16_START( fpoint_writemem )
2599 	{ 0x000000, 0x01ffff, MWA16_ROM },
2600 	{ 0x600006, 0x600007, sound_command_w },
2601 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
2602 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
2603 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
2604 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
2605 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
2606 MEMORY_END
2607 
2608 /***************************************************************************/
2609 
2610 static void fpoint_update_proc( void ){
2611 	set_fg_page( sys16_textram[0x740] );
2612 	set_bg_page( sys16_textram[0x741] );
2613 	sys16_fg_scrolly = sys16_textram[0x748];
2614 	sys16_bg_scrolly = sys16_textram[0x749];
2615 	sys16_fg_scrollx = sys16_textram[0x74c];
2616 	sys16_bg_scrollx = sys16_textram[0x74d];
2617 }
2618 
MACHINE_INIT(fpoint)2619 static MACHINE_INIT( fpoint ){
2620 	sys16_patch_code( 0x454, 0x33 );
2621 	sys16_patch_code( 0x455, 0xf8 );
2622 	sys16_patch_code( 0x456, 0xe0 );
2623 	sys16_patch_code( 0x457, 0xe2 );
2624 	sys16_patch_code( 0x8ce8, 0x16 );
2625 	sys16_patch_code( 0x8ce9, 0x66 );
2626 	sys16_patch_code( 0x17687, 0x00 );
2627 	sys16_patch_code( 0x7bed, 0x04 );
2628 
2629 	sys16_patch_code( 0x7ea8, 0x61 );
2630 	sys16_patch_code( 0x7ea9, 0x00 );
2631 	sys16_patch_code( 0x7eaa, 0x84 );
2632 	sys16_patch_code( 0x7eab, 0x16 );
2633 	sys16_patch_code( 0x2c0, 0xe7 );
2634 	sys16_patch_code( 0x2c1, 0x48 );
2635 	sys16_patch_code( 0x2c2, 0xe7 );
2636 	sys16_patch_code( 0x2c3, 0x49 );
2637 	sys16_patch_code( 0x2c4, 0x04 );
2638 	sys16_patch_code( 0x2c5, 0x40 );
2639 	sys16_patch_code( 0x2c6, 0x00 );
2640 	sys16_patch_code( 0x2c7, 0x10 );
2641 	sys16_patch_code( 0x2c8, 0x4e );
2642 	sys16_patch_code( 0x2c9, 0x75 );
2643 
2644 	sys16_update_proc = fpoint_update_proc;
2645 }
2646 
DRIVER_INIT(fpoint)2647 static DRIVER_INIT( fpoint ){
2648 	machine_init_sys16_onetime();
2649 }
2650 
DRIVER_INIT(fpointbl)2651 static DRIVER_INIT( fpointbl ){
2652 	int i;
2653 
2654 	machine_init_sys16_onetime();
2655 
2656 	/* invert the graphics bits on the tiles */
2657 	for (i = 0; i < 0x30000; i++)
2658 		memory_region(REGION_GFX1)[i] ^= 0xff;
2659 }
2660 /***************************************************************************/
2661 
INPUT_PORTS_START(fpoint)2662 INPUT_PORTS_START( fpoint )
2663 PORT_START
2664 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
2665 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
2666 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
2667 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2668 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
2669 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
2670 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
2671 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
2672 
2673 PORT_START
2674 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
2675 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
2676 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
2677 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2678 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
2679 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
2680 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
2681 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
2682 
2683 	SYS16_SERVICE
2684 	SYS16_COINAGE
2685 
2686 PORT_START	/* DSW1 */
2687 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
2688 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2689 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2690 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
2691 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2692 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2693 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
2694 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2695 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2696 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
2697 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2698 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2699 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
2700 	PORT_DIPSETTING(    0x20, "Easy" )
2701 	PORT_DIPSETTING(    0x30, "Normal" )
2702 	PORT_DIPSETTING(    0x10, "Hard" )
2703 	PORT_DIPSETTING(    0x00, "Hardest" )
2704 	PORT_DIPNAME( 0x40, 0x40, "Clear round allowed" ) /* Use button 3 */
2705 	PORT_DIPSETTING(    0x00, "1" )
2706 	PORT_DIPSETTING(    0x40, "2" )
2707 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
2708 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
2709 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2710 
2711 INPUT_PORTS_END
2712 
2713 INPUT_PORTS_START( fpointbj )
2714 	PORT_START
2715 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
2716 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
2717 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
2718 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2719 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
2720 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
2721 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
2722 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
2723 
2724 	PORT_START
2725 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
2726 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
2727 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
2728 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2729 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
2730 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
2731 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
2732 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
2733 
2734 	SYS16_SERVICE
2735 	SYS16_COINAGE
2736 
2737 	PORT_START	/* DSW1 */
2738 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) /* not used according to manual */
2739 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2740 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2741 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
2742 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2743 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2744 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* not used according to manual */
2745 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2746 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2747 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) /* not used according to manual */
2748 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
2749 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2750 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
2751 	PORT_DIPSETTING(    0x20, "Easy" )
2752 	PORT_DIPSETTING(    0x30, "Normal" )
2753 	PORT_DIPSETTING(    0x10, "Hard" )
2754 	PORT_DIPSETTING(    0x00, "Hardest" )
2755 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) /* not used according to manual */
2756 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2757 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2758 	PORT_DIPNAME( 0x80, 0x80, "2 Cell Move Mode" )
2759 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2760 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2761 
2762 INPUT_PORTS_END
2763 
2764 /***************************************************************************/
2765 
2766 static MACHINE_DRIVER_START( fpoint )
2767 
2768 	/* basic machine hardware */
2769 	MDRV_IMPORT_FROM(system16)
2770 	MDRV_CPU_MODIFY("main")
2771 	MDRV_CPU_MEMORY(fpoint_readmem,fpoint_writemem)
2772 
2773 	MDRV_MACHINE_INIT(fpoint)
2774 MACHINE_DRIVER_END
2775 
2776 /***************************************************************************/
2777 // sys16B
2778 ROM_START( goldnaxe )
2779 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
2780 	ROM_LOAD16_BYTE( "epr12523.a7", 0x00000, 0x20000, CRC(8e6128d7) SHA1(b8de216f4ca08815ca98d39a773024d191d21b4d) )
2781 	ROM_LOAD16_BYTE( "epr12522.a5", 0x00001, 0x20000, CRC(b6c35160) SHA1(88015d0a486f56911360362c96a82f36a13de886) )
2782 	/* empty 0x40000 - 0x80000 */
2783 	ROM_LOAD16_BYTE( "epr12521.a8", 0x80000, 0x20000, CRC(5001d713) SHA1(68cf3f48d6e440e5b800503a211adda02107d956) )
2784 	ROM_LOAD16_BYTE( "epr12519.a6", 0x80001, 0x20000, CRC(4438ca8e) SHA1(0af53d64f06abf41f4c46540d28d5f008a4835a3) )
2785 
2786 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2787 	ROM_LOAD( "epr12385", 0x00000, 0x20000, CRC(b8a4e7e0) SHA1(9b36f50209d45a835ded53eb045f63c649b02fc9) )
2788 	ROM_LOAD( "epr12386", 0x20000, 0x20000, CRC(25d7d779) SHA1(2de14a76a5176d5abc7e7f7f723146c620927610) )
2789 	ROM_LOAD( "epr12387", 0x40000, 0x20000, CRC(c7fcadf3) SHA1(5f0fd600a75a02749935af21e1e0d2c714c6417e) )
2790 
2791 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
2792 	ROM_LOAD16_BYTE( "mpr12378.b1", 0x000001, 0x40000, CRC(119e5a82) SHA1(261ed2bc4ebac7142e2ecca9f03c91242e792a98) )
2793 	ROM_LOAD16_BYTE( "mpr12379.b4", 0x000000, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
2794 	ROM_LOAD16_BYTE( "mpr12380.b2", 0x080001, 0x40000, CRC(bb2c0853) SHA1(3f3b546d078f22d787c93ee74d9ad3a6e84383ac) )
2795 	ROM_LOAD16_BYTE( "mpr12381.b5", 0x080000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
2796 	ROM_LOAD16_BYTE( "mpr12382.b3", 0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
2797 	ROM_LOAD16_BYTE( "mpr12383.b6", 0x100000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
2798 
2799 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
2800 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
2801 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
2802 ROM_END
2803 
2804 ROM_START( goldnaxj )
2805 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
2806 // Custom cpu 317-0121
2807 	ROM_LOAD16_BYTE( "epr12540.a7", 0x00000, 0x20000, CRC(0c7ccc6d) SHA1(25bc29eee731befc665472c2c1998cac8447cc21) )
2808 	ROM_LOAD16_BYTE( "epr12539.a5", 0x00001, 0x20000, CRC(1f24f7d0) SHA1(a09cdf394c03069707f7ed400b8fbdc13674fa74) )
2809 	/* emtpy 0x40000 - 0x80000 */
2810 	ROM_LOAD16_BYTE( "epr12521.a8", 0x80000, 0x20000, CRC(5001d713) SHA1(68cf3f48d6e440e5b800503a211adda02107d956) )
2811 	ROM_LOAD16_BYTE( "epr12519.a6", 0x80001, 0x20000, CRC(4438ca8e) SHA1(0af53d64f06abf41f4c46540d28d5f008a4835a3) )
2812 
2813 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2814 	ROM_LOAD( "epr12385", 0x00000, 0x20000, CRC(b8a4e7e0) SHA1(9b36f50209d45a835ded53eb045f63c649b02fc9) )
2815 	ROM_LOAD( "epr12386", 0x20000, 0x20000, CRC(25d7d779) SHA1(2de14a76a5176d5abc7e7f7f723146c620927610) )
2816 	ROM_LOAD( "epr12387", 0x40000, 0x20000, CRC(c7fcadf3) SHA1(5f0fd600a75a02749935af21e1e0d2c714c6417e) )
2817 
2818 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
2819 	ROM_LOAD16_BYTE( "mpr12378.b1", 0x000001, 0x40000, CRC(119e5a82) SHA1(261ed2bc4ebac7142e2ecca9f03c91242e792a98) )
2820 	ROM_LOAD16_BYTE( "mpr12379.b4", 0x000000, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
2821 	ROM_LOAD16_BYTE( "mpr12380.b2", 0x080001, 0x40000, CRC(bb2c0853) SHA1(3f3b546d078f22d787c93ee74d9ad3a6e84383ac) )
2822 	ROM_LOAD16_BYTE( "mpr12381.b5", 0x080000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
2823 	ROM_LOAD16_BYTE( "mpr12382.b3", 0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
2824 	ROM_LOAD16_BYTE( "mpr12383.b6", 0x100000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
2825 
2826 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
2827 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
2828 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
2829 ROM_END
2830 
2831 ROM_START( goldnabl )
2832 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
2833 // protected code
2834 	ROM_LOAD16_BYTE( "ga6.a22", 0x00000, 0x10000, CRC(f95b459f) SHA1(dadf66d63454ed62fefa521d4fed249d28c63778) )
2835 	ROM_LOAD16_BYTE( "ga4.a20", 0x00001, 0x10000, CRC(83eabdf5) SHA1(1effef966f513fbdec2026d535658e17ef7dea51) )
2836 	ROM_LOAD16_BYTE( "ga11.a27",0x20000, 0x10000, CRC(f4ef9349) SHA1(3ffa335e74ffbc10f80387268da659643c566897) )
2837 	ROM_LOAD16_BYTE( "ga8.a24", 0x20001, 0x10000, CRC(37a65839) SHA1(6e8055d91b840afd8526041d3752c0a55eaebe0c) )
2838 	/* emtpy 0x40000 - 0x80000 */
2839 	ROM_LOAD16_BYTE( "epr12521.a8", 0x80000, 0x20000, CRC(5001d713) SHA1(68cf3f48d6e440e5b800503a211adda02107d956) )
2840 	ROM_LOAD16_BYTE( "epr12519.a6", 0x80001, 0x20000, CRC(4438ca8e) SHA1(0af53d64f06abf41f4c46540d28d5f008a4835a3) )
2841 
2842 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
2843 	ROM_LOAD( "ga33.b16", 0x00000, 0x10000, CRC(84587263) SHA1(3a88c8578a477a487a0a214a367042b9739f39eb) )
2844 	ROM_LOAD( "ga32.b15", 0x10000, 0x10000, CRC(63d72388) SHA1(ba0a582b1daf3a1e316237efbad17fcc0381643f) )
2845 	ROM_LOAD( "ga31.b14", 0x20000, 0x10000, CRC(f8b6ae4f) SHA1(55132c98955107e4b247992f7917a6ce588460a7) )
2846 	ROM_LOAD( "ga30.b13", 0x30000, 0x10000, CRC(e29baf4f) SHA1(3761cb2217599fe3f2f860f9395930b96ec52f47) )
2847 	ROM_LOAD( "ga29.b12", 0x40000, 0x10000, CRC(22f0667e) SHA1(2d11b2ce105a3db9c914942cace85aff17deded9) )
2848 	ROM_LOAD( "ga28.b11", 0x50000, 0x10000, CRC(afb1a7e4) SHA1(726fded9db72a881128b43f449d2baf450131f63) )
2849 
2850 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
2851 	/* wrong! */
2852 	ROM_LOAD16_BYTE( "ga34.b17", 		0x000001, 0x10000, CRC(28ba70c8) SHA1(a6f33e1404928b6d1006943494646d6cfbd60a4b) )
2853 	ROM_LOAD16_BYTE( "ga35.b18", 		0x010000, 0x10000, CRC(2ed96a26) SHA1(edcf915243e6f92d31cdfc53965438f6b6bff51d) )
2854 	ROM_LOAD16_BYTE( "ga23.a14", 		0x020001, 0x10000, CRC(84dccc5b) SHA1(10263d98d663f1170c3203066f391075a1d64ff5) )
2855 	ROM_LOAD16_BYTE( "ga18.a9",  		0x030000, 0x10000, CRC(de346006) SHA1(65aa489373b6d2cccbb024f13fc190a7cae86274) )
2856 	ROM_LOAD16_BYTE( "mpr12379.b4", 	0x040001, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
2857 	ROM_LOAD16_BYTE( "ga36.b19", 		0x080000, 0x10000, CRC(101d2fff) SHA1(1de1390c5f55f192491053c8aac31be3389aab2b) )
2858 	ROM_LOAD16_BYTE( "ga37.b20", 		0x090001, 0x10000, CRC(677e64a6) SHA1(e3d0d31097017c6cb1a7f41292783f18ce13b41c) )
2859 	ROM_LOAD16_BYTE( "ga19.a10", 		0x0a0000, 0x10000, CRC(11794d05) SHA1(eef52d7a644dbcc5f983222f163445a725286a32) )
2860 	ROM_LOAD16_BYTE( "ga20.a11", 		0x0b0001, 0x10000, CRC(ad1c1c90) SHA1(155f17593cfab1a117bb755b1edd0c473d455f91) )
2861 	ROM_LOAD16_BYTE( "mpr12381.b5",	0x0c0000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
2862 	ROM_LOAD16_BYTE( "mpr12382.b3",	0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
2863 	ROM_LOAD16_BYTE( "mpr12383.b6",	0x140000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
2864 
2865 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
2866 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
2867 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
2868 ROM_END
2869 
2870 
2871 /***************************************************************************/
2872 
2873 static READ16_HANDLER( goldnaxe_skip_r ){
2874 	if (activecpu_get_pc()==0x3cb0) {cpu_spinuntil_int(); return 0xffff;}
2875 	return sys16_workingram[0x2c1c/2];
2876 }
2877 
READ16_HANDLER(ga_io_players_r)2878 static READ16_HANDLER( ga_io_players_r ) {
2879 	return (readinputport(0) << 8) | readinputport(1);
2880 }
READ16_HANDLER(ga_io_service_r)2881 static READ16_HANDLER( ga_io_service_r ){
2882 	return (input_port_2_word_r(0,0) << 8) | (sys16_workingram[0x2c96/2] & 0x00ff);
2883 }
2884 
MEMORY_READ16_START(goldnaxe_readmem)2885 static MEMORY_READ16_START( goldnaxe_readmem )
2886 	{ 0x000000, 0x0bffff, MRA16_ROM },
2887 	{ 0x100000, 0x10ffff, SYS16_MRA16_TILERAM },
2888 	{ 0x110000, 0x110fff, SYS16_MRA16_TEXTRAM },
2889 	{ 0x140000, 0x140fff, SYS16_MRA16_PALETTERAM },
2890 	{ 0x1f0000, 0x1f0003, SYS16_MRA16_EXTRAM },
2891 	{ 0x200000, 0x200fff, SYS16_MRA16_SPRITERAM },
2892 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
2893 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
2894 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
2895 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
2896 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
2897 	{ 0xffecd0, 0xffecd1, ga_io_players_r },
2898 	{ 0xffec96, 0xffec97, ga_io_service_r },
2899 	{ 0xffec1c, 0xffec1d, goldnaxe_skip_r },
2900 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
2901 MEMORY_END
2902 
2903 static WRITE16_HANDLER( ga_sound_command_w ){
2904 	COMBINE_DATA( &sys16_workingram[(0xecfc-0xc000)/2] );
2905 	if( ACCESSING_MSB ){
2906 		soundlatch_w( 0,data>>8 );
2907 		cpu_set_irq_line( 1, 0, HOLD_LINE );
2908 	}
2909 }
2910 
WRITE16_HANDLER(goldnaxe_prot_w)2911 static WRITE16_HANDLER( goldnaxe_prot_w ){
2912 	sys16_workingram[(0xecd8 - 0xc000)/2] = 0x048c;
2913 	sys16_workingram[(0xecda - 0xc000)/2] = 0x159d;
2914 	sys16_workingram[(0xecdc - 0xc000)/2] = 0x26ae;
2915 	sys16_workingram[(0xecde - 0xc000)/2] = 0x37bf;
2916 	COMBINE_DATA( &sys16_workingram[(0xec1c-0xc000)/2] );
2917 }
2918 
MEMORY_WRITE16_START(goldnaxe_writemem)2919 static MEMORY_WRITE16_START( goldnaxe_writemem )
2920 	{ 0x000000, 0x0bffff, MWA16_ROM },
2921 	{ 0x100000, 0x10ffff, SYS16_MWA16_TILERAM },
2922 	{ 0x110000, 0x110fff, SYS16_MWA16_TEXTRAM },
2923 	{ 0x140000, 0x140fff, SYS16_MWA16_PALETTERAM },
2924 	{ 0x1f0000, 0x1f0003, SYS16_MWA16_EXTRAM },
2925 	{ 0x200000, 0x200fff, SYS16_MWA16_SPRITERAM },
2926 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
2927 	{ 0xc43000, 0xc43001, MWA16_NOP }, // ?
2928 //	{ 0xfe0006, 0xfe0007, MWA16_NOP }, I think this is the real sound out
2929 	{ 0xffec1c, 0xffec1d, goldnaxe_prot_w },// how does this really work?
2930 	{ 0xffecfc, 0xffecfd, ga_sound_command_w },// probably just a buffer
2931 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM }, /* fails SCRATCH RAM test because of hacks */
2932 //	{ 0xfffc00, 0xffffff, MWA15_NOP }, /* 0x400 bytes; battery backed up */
2933 MEMORY_END
2934 
2935 /***************************************************************************/
2936 
2937 static void goldnaxe_update_proc( void ){
2938 	set_fg_page( sys16_textram[0x740] );
2939 	set_bg_page( sys16_textram[0x741] );
2940 	sys16_fg_scrolly = sys16_textram[0x748];
2941 	sys16_bg_scrolly = sys16_textram[0x749];
2942 	sys16_fg_scrollx = sys16_textram[0x74c];
2943 	sys16_bg_scrollx = sys16_textram[0x74d];
2944 
2945 	set_tile_bank( sys16_workingram[0x2c94/2] );
2946 }
2947 
MACHINE_INIT(goldnaxe)2948 static MACHINE_INIT( goldnaxe ){
2949 	static int bank[16] = {
2950 		0,1,4,5,
2951 		8,9,0,0,
2952 		2,3,6,7,
2953 		10,11,0,0
2954 	};
2955 	sys16_obj_bank = bank;
2956 
2957 // protection patch; no longer needed
2958 //	sys16_patch_code( 0x3CB2, 0x60 );
2959 //	sys16_patch_code( 0x3CB3, 0x1e );
2960 
2961 	sys16_sprxoffset = -0xb8;
2962 	sys16_update_proc = goldnaxe_update_proc;
2963 }
2964 
DRIVER_INIT(goldnaxe)2965 static DRIVER_INIT( goldnaxe ){
2966 	machine_init_sys16_onetime();
2967 }
2968 
DRIVER_INIT(goldnabl)2969 static DRIVER_INIT( goldnabl ){
2970 	int i;
2971 
2972 	machine_init_sys16_onetime();
2973 
2974 	/* invert the graphics bits on the tiles */
2975 	for (i = 0; i < 0x60000; i++)
2976 		memory_region(REGION_GFX1)[i] ^= 0xff;
2977 }
2978 
2979 /***************************************************************************/
2980 
INPUT_PORTS_START(goldnaxe)2981 INPUT_PORTS_START( goldnaxe )
2982 	SYS16_JOY1
2983 	SYS16_JOY2
2984 	SYS16_SERVICE
2985 	SYS16_COINAGE
2986 
2987 PORT_START	/* DSW1 */
2988 	PORT_DIPNAME( 0x01, 0x01, "Credits needed" )
2989 	PORT_DIPSETTING(    0x01, "1 to start, 1 to continue" )
2990 	PORT_DIPSETTING(    0x00, "2 to start, 1 to continue" )
2991 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
2992 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
2993 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2994 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
2995 	PORT_DIPSETTING(    0x08, "1" )
2996 	PORT_DIPSETTING(    0x0c, "2" )
2997 	PORT_DIPSETTING(    0x04, "3" )
2998 	PORT_DIPSETTING(    0x00, "5" )
2999 	PORT_DIPNAME( 0x30, 0x30, "Energy Meter" )
3000 	PORT_DIPSETTING(    0x20, "2" )
3001 	PORT_DIPSETTING(    0x30, "3" )
3002 	PORT_DIPSETTING(    0x10, "4" )
3003 	PORT_DIPSETTING(    0x00, "5" )
3004 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
3005 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
3006 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3007 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
3008 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
3009 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3010 INPUT_PORTS_END
3011 
3012 /***************************************************************************/
3013 
3014 static MACHINE_DRIVER_START( goldnaxe )
3015 
3016 	/* basic machine hardware */
3017 	MDRV_IMPORT_FROM(system16_7759)
3018 	MDRV_CPU_MODIFY("main")
3019 	MDRV_CPU_MEMORY(goldnaxe_readmem,goldnaxe_writemem)
3020 
3021 	MDRV_MACHINE_INIT(goldnaxe)
3022 MACHINE_DRIVER_END
3023 
3024 /***************************************************************************/
3025 // sys16B
3026 ROM_START( goldnaxa )
3027 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
3028 	ROM_LOAD16_BYTE( "epr12545.a2", 0x00000, 0x40000, CRC(a97c4e4d) SHA1(41cda15ae56185725233db669d9f8c4a8c1eb1c3) )
3029 	ROM_LOAD16_BYTE( "epr12544.a1", 0x00001, 0x40000, CRC(5e38f668) SHA1(3b15a9a30adde6e852c439c8e6e45875b66252cb) )
3030 
3031 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3032 	ROM_LOAD( "epr12385", 0x00000, 0x20000, CRC(b8a4e7e0) SHA1(9b36f50209d45a835ded53eb045f63c649b02fc9) )
3033 	ROM_LOAD( "epr12386", 0x20000, 0x20000, CRC(25d7d779) SHA1(2de14a76a5176d5abc7e7f7f723146c620927610) )
3034 	ROM_LOAD( "epr12387", 0x40000, 0x20000, CRC(c7fcadf3) SHA1(5f0fd600a75a02749935af21e1e0d2c714c6417e) )
3035 
3036 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
3037 	ROM_LOAD16_BYTE( "mpr12378.b1", 0x000001, 0x40000, CRC(119e5a82) SHA1(261ed2bc4ebac7142e2ecca9f03c91242e792a98) )
3038 	ROM_LOAD16_BYTE( "mpr12379.b4", 0x000000, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
3039 	ROM_LOAD16_BYTE( "mpr12380.b2", 0x080001, 0x40000, CRC(bb2c0853) SHA1(3f3b546d078f22d787c93ee74d9ad3a6e84383ac) )
3040 	ROM_LOAD16_BYTE( "mpr12381.b5", 0x080000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
3041 	ROM_LOAD16_BYTE( "mpr12382.b3", 0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
3042 	ROM_LOAD16_BYTE( "mpr12383.b6", 0x100000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
3043 
3044 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
3045 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
3046 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
3047 ROM_END
3048 
3049 ROM_START( goldnaxb )
3050 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
3051 // Custom 68000 ver 317-0110
3052 	ROM_LOAD16_BYTE( "epr12389.a2", 0x00000, 0x40000, CRC(35d5fa77) SHA1(b16b312eb1c91c412fee61002599812e30e321ee) )
3053 	ROM_LOAD16_BYTE( "epr12388.a1", 0x00001, 0x40000, CRC(72952a93) SHA1(b31888429ad81388a96333dc0b2c7e2223134834) )
3054 
3055 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3056 	ROM_LOAD( "epr12385", 0x00000, 0x20000, CRC(b8a4e7e0) SHA1(9b36f50209d45a835ded53eb045f63c649b02fc9) )
3057 	ROM_LOAD( "epr12386", 0x20000, 0x20000, CRC(25d7d779) SHA1(2de14a76a5176d5abc7e7f7f723146c620927610) )
3058 	ROM_LOAD( "epr12387", 0x40000, 0x20000, CRC(c7fcadf3) SHA1(5f0fd600a75a02749935af21e1e0d2c714c6417e) )
3059 
3060 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
3061 	ROM_LOAD16_BYTE( "mpr12378.b1", 0x000001, 0x40000, CRC(119e5a82) SHA1(261ed2bc4ebac7142e2ecca9f03c91242e792a98) )
3062 	ROM_LOAD16_BYTE( "mpr12379.b4", 0x000000, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
3063 	ROM_LOAD16_BYTE( "mpr12380.b2", 0x080001, 0x40000, CRC(bb2c0853) SHA1(3f3b546d078f22d787c93ee74d9ad3a6e84383ac) )
3064 	ROM_LOAD16_BYTE( "mpr12381.b5", 0x080000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
3065 	ROM_LOAD16_BYTE( "mpr12382.b3", 0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
3066 	ROM_LOAD16_BYTE( "mpr12383.b6", 0x100000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
3067 
3068 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
3069 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
3070 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
3071 ROM_END
3072 
3073 ROM_START( goldnaxc )
3074 	ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 code */
3075 // Custom 68000 ver 317-0122
3076 	ROM_LOAD16_BYTE( "epr12543.a2", 0x00000, 0x40000, CRC(b0df9ca4) SHA1(240f3c2998f969569d992f796e006f5ea4434e55) )
3077 	ROM_LOAD16_BYTE( "epr12542.a1", 0x00001, 0x40000, CRC(b7994d3c) SHA1(87570f23826922fca465c69df6b892c59f14e103) )
3078 
3079 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3080 	ROM_LOAD( "epr12385", 0x00000, 0x20000, CRC(b8a4e7e0) SHA1(9b36f50209d45a835ded53eb045f63c649b02fc9) )
3081 	ROM_LOAD( "epr12386", 0x20000, 0x20000, CRC(25d7d779) SHA1(2de14a76a5176d5abc7e7f7f723146c620927610) )
3082 	ROM_LOAD( "epr12387", 0x40000, 0x20000, CRC(c7fcadf3) SHA1(5f0fd600a75a02749935af21e1e0d2c714c6417e) )
3083 
3084 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
3085 	ROM_LOAD16_BYTE( "mpr12378.b1", 0x000001, 0x40000, CRC(119e5a82) SHA1(261ed2bc4ebac7142e2ecca9f03c91242e792a98) )
3086 	ROM_LOAD16_BYTE( "mpr12379.b4", 0x000000, 0x40000, CRC(1a0e8c57) SHA1(674f1ae7db632876fff346e76786801ae19d9799) )
3087 	ROM_LOAD16_BYTE( "mpr12380.b2", 0x080001, 0x40000, CRC(bb2c0853) SHA1(3f3b546d078f22d787c93ee74d9ad3a6e84383ac) )
3088 	ROM_LOAD16_BYTE( "mpr12381.b5", 0x080000, 0x40000, CRC(81ba6ecc) SHA1(7f59e4d86a192b97e92729371b78c3f1c784a0b5) )
3089 	ROM_LOAD16_BYTE( "mpr12382.b3", 0x100001, 0x40000, CRC(81601c6f) SHA1(604bc5613c6c734a06860303ba36d61bb54508a0) )
3090 	ROM_LOAD16_BYTE( "mpr12383.b6", 0x100000, 0x40000, CRC(5dbacf7a) SHA1(236866fb94672b13cbb2cb479324e61de87eeb34) )
3091 
3092 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
3093 	ROM_LOAD( "epr12390",     0x00000, 0x08000, CRC(399fc5f5) SHA1(6f290b36dc71ff4759598e2a9c185a8945a3c9e7) )
3094 	ROM_LOAD( "mpr12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
3095 ROM_END
3096 
3097 
3098 /***************************************************************************/
3099 
3100 static READ16_HANDLER( goldnaxa_skip_r ){
3101 	if (activecpu_get_pc()==0x3ca0) {cpu_spinuntil_int(); return 0xffff;}
3102 	return sys16_workingram[0x2c1c/2];
3103 }
3104 
3105 // This version has somekind of hardware comparitor for collision detection,
3106 // and a hardware multiplier.
3107 static data16_t ga_hardware_collision_data[5];
WRITE16_HANDLER(ga_hardware_collision_w)3108 static WRITE16_HANDLER( ga_hardware_collision_w )
3109 {
3110 	static int bit=1;
3111 //TBA
3112 //	COMBINE_DATA( &ga_hardware_collision_data );
3113 	if( offset==4/2 ){
3114 		if( ga_hardware_collision_data[2] <= ga_hardware_collision_data[0] &&
3115 			ga_hardware_collision_data[2] >= ga_hardware_collision_data[1])
3116 		{
3117 			ga_hardware_collision_data[4] |=bit;
3118 		}
3119 		bit=bit<<1;
3120 	}
3121 	else if( offset==8/2 ) bit=1;
3122 }
3123 
READ16_HANDLER(ga_hardware_collision_r)3124 static READ16_HANDLER( ga_hardware_collision_r ){
3125 	return ga_hardware_collision_data[4];
3126 }
3127 
3128 static int ga_hardware_multiplier_data[4];
WRITE16_HANDLER(ga_hardware_multiplier_w)3129 static WRITE16_HANDLER( ga_hardware_multiplier_w ){
3130 //TBA
3131 //	COMBINE_DATA( &ga_hardware_multiplier_data );
3132 }
3133 
READ16_HANDLER(ga_hardware_multiplier_r)3134 static READ16_HANDLER( ga_hardware_multiplier_r ){
3135 	if(offset==6/2)
3136 		return ga_hardware_multiplier_data[0] * ga_hardware_multiplier_data[1];
3137 	else
3138 		return ga_hardware_multiplier_data[offset];
3139 }
3140 
MEMORY_READ16_START(goldnaxa_readmem)3141 static MEMORY_READ16_START( goldnaxa_readmem )
3142 	{ 0x000000, 0x07ffff, MRA16_ROM },
3143 	{ 0x100000, 0x10ffff, SYS16_MRA16_TILERAM },
3144 	{ 0x110000, 0x110fff, SYS16_MRA16_TEXTRAM },
3145 	{ 0x140000, 0x140fff, SYS16_MRA16_PALETTERAM },
3146 	{ 0x1e0008, 0x1e0009, ga_hardware_collision_r },
3147 	{ 0x1f0000, 0x1f0007, ga_hardware_multiplier_r },
3148 	{ 0x1f1008, 0x1f1009, ga_hardware_collision_r },
3149 	{ 0x1f2000, 0x1f2003, SYS16_MRA16_EXTRAM },
3150 	{ 0x200000, 0x200fff, SYS16_MRA16_SPRITERAM },
3151 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
3152 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
3153 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
3154 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
3155 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
3156 	{ 0xffecd0, 0xffecd1, ga_io_players_r },
3157 	{ 0xffec96, 0xffec97, ga_io_service_r },
3158 	{ 0xffec1c, 0xffec1d, goldnaxa_skip_r },
3159 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
3160 MEMORY_END
3161 
3162 static MEMORY_WRITE16_START( goldnaxa_writemem )
3163 	{ 0x000000, 0x07ffff, MWA16_ROM },
3164 	{ 0x100000, 0x10ffff, SYS16_MWA16_TILERAM },
3165 	{ 0x110000, 0x110fff, SYS16_MWA16_TEXTRAM },
3166 	{ 0x140000, 0x140fff, SYS16_MWA16_PALETTERAM },
3167 	{ 0x1e0000, 0x1e0009, ga_hardware_collision_w },
3168 	{ 0x1f0000, 0x1f0003, ga_hardware_multiplier_w },
3169 	{ 0x1f1000, 0x1f1009, ga_hardware_collision_w },
3170 	{ 0x1f2000, 0x1f2003, SYS16_MWA16_EXTRAM },
3171 	{ 0x200000, 0x200fff, SYS16_MWA16_SPRITERAM },
3172 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
3173 	{ 0xffecfc, 0xffecfd, ga_sound_command_w },
3174 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
3175 MEMORY_END
3176 
3177 /***************************************************************************/
3178 
3179 static void goldnaxa_update_proc( void ){
3180 	set_fg_page( sys16_textram[0x740] );
3181 	set_bg_page( sys16_textram[0x741] );
3182 	sys16_fg_scrolly = sys16_textram[0x748];
3183 	sys16_bg_scrolly = sys16_textram[0x749];
3184 	sys16_fg_scrollx = sys16_textram[0x74c];
3185 	sys16_bg_scrollx = sys16_textram[0x74d];
3186 
3187 	set_tile_bank( sys16_workingram[0x2c94/2] );
3188 }
3189 
MACHINE_INIT(goldnaxa)3190 static MACHINE_INIT( goldnaxa ){
3191 	static int bank[16] = {
3192 		0,1,4,5,
3193 		8,9,0,0,
3194 		2,3,6,7,
3195 		10,11,0,0
3196 	};
3197 	sys16_obj_bank = bank;
3198 	//?
3199 	sys16_patch_code( 0x3CA2, 0x60 );
3200 	sys16_patch_code( 0x3CA3, 0x1e );
3201 	sys16_sprxoffset = -0xb8;
3202 	sys16_update_proc = goldnaxa_update_proc;
3203 }
3204 
3205 /***************************************************************************/
3206 
3207 static MACHINE_DRIVER_START( goldnaxa )
3208 
3209 	/* basic machine hardware */
3210 	MDRV_IMPORT_FROM(system16_7759)
3211 	MDRV_CPU_MODIFY("main")
3212 	MDRV_CPU_MEMORY(goldnaxa_readmem,goldnaxa_writemem)
3213 
3214 	MDRV_MACHINE_INIT(goldnaxa)
3215 MACHINE_DRIVER_END
3216 
3217 /***************************************************************************/
3218 // sys16B
3219 ROM_START( hwchamp )
3220 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
3221 	ROM_LOAD16_BYTE( "rom0-e.bin", 0x000000, 0x20000, CRC(e5abfed7) SHA1(1f875dbaf8665c1dbfe336470580361b18a8ed4e) )
3222 	ROM_LOAD16_BYTE( "rom0-o.bin", 0x000001, 0x20000, CRC(25180124) SHA1(77b414f8cd88270713c57bddadec5d8dca490e86) )
3223 
3224 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3225 	ROM_LOAD( "scr01.bin", 0x00000, 0x20000, CRC(fc586a86) SHA1(2c26ef3ab94089940add3be9952804a6e62f5113) )
3226 	ROM_LOAD( "scr11.bin", 0x20000, 0x20000, CRC(aeaaa9d8) SHA1(6b7e5320f515c1c35445d3320b3edaef911191e1) )
3227 	ROM_LOAD( "scr02.bin", 0x40000, 0x20000, CRC(7715a742) SHA1(e6040ff0e9c68f3f502e5f6d7e7ca04b14059752) )
3228 	ROM_LOAD( "scr12.bin", 0x60000, 0x20000, CRC(63a82afa) SHA1(a02bbb6dd84cdf7cdab8e738c6927f5b1e3fcad5) )
3229 	ROM_LOAD( "scr03.bin", 0x80000, 0x20000, CRC(f30cd5fd) SHA1(df6118ca4b724c37b11e18d9f2ea18e9591ae7aa) )
3230 	ROM_LOAD( "scr13.bin", 0xA0000, 0x20000, CRC(5b8494a8) SHA1(9e3f09f4037a007b6a188dd81ec8f9c635e87650) )
3231 
3232 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) //* sprites */
3233 	ROM_LOAD16_BYTE( "obj0-o.bin", 0x000001, 0x010000, CRC(fc098a13) SHA1(b4a6e00d4765265bad170dabf0b2a4a58e063b16) )
3234 	ROM_CONTINUE( 0x040001, 0x10000 )
3235 	ROM_RELOAD  ( 0x020001, 0x10000 )
3236 	ROM_CONTINUE( 0x060001, 0x10000 )
3237 	ROM_LOAD16_BYTE( "obj0-e.bin", 0x000000, 0x010000, CRC(5db934a8) SHA1(ba7cc93025af71ad2674b1376b61afbb7ae910ff) )
3238 	ROM_CONTINUE( 0x040000, 0x10000 )
3239 	ROM_RELOAD  ( 0x020000, 0x10000 )
3240 	ROM_CONTINUE( 0x060000, 0x10000 )
3241 	ROM_LOAD16_BYTE( "obj1-o.bin", 0x080001, 0x010000, CRC(1f27ee74) SHA1(a60d50a4f501623187c067a3c17bff49151ca3b2) )
3242 	ROM_CONTINUE( 0x0c0001, 0x10000 )
3243 	ROM_RELOAD  ( 0x0a0001, 0x10000 )
3244 	ROM_CONTINUE( 0x0e0001, 0x10000 )
3245 	ROM_LOAD16_BYTE( "obj1-e.bin", 0x080000, 0x010000, CRC(8a6a5cf1) SHA1(28b22aa326682ef3b54891dda7aa9a432da12a4d) )
3246 	ROM_CONTINUE( 0x0c0000, 0x10000 )
3247 	ROM_RELOAD  ( 0x0a0000, 0x10000 )
3248 	ROM_CONTINUE( 0x0e0000, 0x10000 )
3249 	ROM_LOAD16_BYTE( "obj2-o.bin", 0x100001, 0x010000, CRC(c0b2ba82) SHA1(30349c86a99bbe3dfb423027ad534a9333e27679) )
3250 	ROM_CONTINUE( 0x140001, 0x10000 )
3251 	ROM_RELOAD  ( 0x120001, 0x10000 )
3252 	ROM_CONTINUE( 0x160001, 0x10000 )
3253 	ROM_LOAD16_BYTE( "obj2-e.bin", 0x100000, 0x010000, CRC(d6c7917b) SHA1(8b313a5634c14f4c90bfa9f9616d600283f72768) )
3254 	ROM_CONTINUE( 0x140000, 0x10000 )
3255 	ROM_RELOAD  ( 0x120000, 0x10000 )
3256 	ROM_CONTINUE( 0x160000, 0x10000 )
3257 	ROM_LOAD16_BYTE( "obj3-o.bin", 0x180001, 0x010000, CRC(52fa3a49) SHA1(c2331af630d86a111cdaf21556d9df23d1471f53) )
3258 	ROM_CONTINUE( 0x1c0001, 0x10000 )
3259 	ROM_RELOAD  ( 0x1a0001, 0x10000 )
3260 	ROM_CONTINUE( 0x1e0001, 0x10000 )
3261 	ROM_LOAD16_BYTE( "obj3-e.bin", 0x180000, 0x010000, CRC(57e8f9d2) SHA1(1804677820d05a421120660f91e3a5f1df1e6a8d) )
3262 	ROM_CONTINUE( 0x1c0000, 0x10000 )
3263 	ROM_RELOAD  ( 0x1a0000, 0x10000 )
3264 	ROM_CONTINUE( 0x1e0000, 0x10000 )
3265 
3266 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
3267 	ROM_LOAD( "s-prog.bin", 0x0000, 0x8000, CRC(96a12d9d) SHA1(f4ba70c3b5d80a1b6a187c940b922d5182d5ab12) )
3268 
3269 	ROM_LOAD( "speech0.bin", 0x10000, 0x20000, CRC(4191c03d) SHA1(40809fb80527980015d3b5c4ca7cf159bc09cf5a) )
3270 	ROM_LOAD( "speech1.bin", 0x30000, 0x20000, CRC(a4d53f7b) SHA1(71123a8ecfa093897c6f2bb7312e6c755be14521) )
3271 ROM_END
3272 
3273 /***************************************************************************/
3274 
3275 static int hwc_handles_shifts[3];
3276 
WRITE16_HANDLER(hwc_io_handles_w)3277 static WRITE16_HANDLER( hwc_io_handles_w ){
3278 	hwc_handles_shifts[offset]=7;
3279 }
3280 
READ16_HANDLER(hwc_io_handles_r)3281 static READ16_HANDLER( hwc_io_handles_r ){
3282 	static int dodge_toggle=0;
3283 	int data=0,ret;
3284 	if(offset==0){
3285 		// monitor
3286 		data=input_port_0_r( offset );
3287 		if(input_port_1_r( offset ) & 4){
3288 			if(dodge_toggle) data=0x38; else data=0x60;
3289 		}
3290 		if(input_port_1_r( offset ) & 8){
3291 			if(dodge_toggle) data=0xc8; else data=0xa0;
3292 		}
3293 		if(input_port_1_r( offset ) & 0x10){
3294 			if(dodge_toggle) data=0xff; else data=0xe0;
3295 		}
3296 		if(input_port_1_r( offset ) & 0x20){
3297 			if(dodge_toggle) data=0x0; else data=0x20;
3298 		}
3299 		if( hwc_handles_shifts[offset]==0) dodge_toggle^=1;
3300 	}
3301 	else if(offset==1){
3302 		// left handle
3303 		if(input_port_1_r( offset ) & 1) data=0xff;
3304 	}
3305 	else {
3306 		// right handle
3307 		if(input_port_1_r( offset ) & 2) data=0xff;
3308 	}
3309 
3310 	ret = data>>hwc_handles_shifts[offset];
3311 	hwc_handles_shifts[offset]--;
3312 	return ret;
3313 }
3314 
WRITE16_HANDLER(hwc_ctrl1_w)3315 static WRITE16_HANDLER( hwc_ctrl1_w ){
3316 	if( ACCESSING_LSB ){
3317 		sys16_refreshenable = data & 0x20;
3318 		coin_counter_w(0,data & 0x01);
3319 		set_led_status(0,data & 0x04);
3320 		/* bit 6 is also used (always 1?) */
3321 	}
3322 }
3323 
WRITE16_HANDLER(hwc_ctrl2_w)3324 static WRITE16_HANDLER( hwc_ctrl2_w ){
3325 	if( ACCESSING_LSB ){
3326 		/* bit 4 is GONG */
3327 //		if (data & 0x10) usrintf_showmessage("GONG");
3328 		/* are the following really lamps? */
3329 //		set_led_status(1,data & 0x20);
3330 //		set_led_status(2,data & 0x40);
3331 //		set_led_status(3,data & 0x80);
3332 	}
3333 }
3334 
MEMORY_READ16_START(hwchamp_readmem)3335 static MEMORY_READ16_START( hwchamp_readmem )
3336 	{ 0x000000, 0x03ffff, MRA16_ROM },
3337 	{ 0x3f0000, 0x3fffff, SYS16_MRA16_EXTRAM },
3338 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
3339 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
3340 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
3341 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
3342 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
3343 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
3344 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
3345 	{ 0xc43020, 0xc43025, hwc_io_handles_r },
3346 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
3347 MEMORY_END
3348 
3349 static MEMORY_WRITE16_START( hwchamp_writemem )
3350 	{ 0x000000, 0x03ffff, MWA16_ROM },
3351 	{ 0x3f0000, 0x3fffff, SYS16_MWA16_EXTRAM },
3352 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
3353 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
3354 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
3355 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
3356 	{ 0xc40000, 0xc40001, hwc_ctrl1_w },
3357 	{ 0xc43020, 0xc43025, hwc_io_handles_w },
3358 	{ 0xc43034, 0xc43035, hwc_ctrl2_w },
3359 	{ 0xfe0006, 0xfe0007, sound_command_w },
3360 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
3361 MEMORY_END
3362 
3363 /***************************************************************************/
3364 
3365 static void hwchamp_update_proc( void ){
3366 	set_fg_page( sys16_textram[0x740] );
3367 	set_bg_page( sys16_textram[0x741] );
3368 	sys16_fg_scrolly = sys16_textram[0x748];
3369 	sys16_bg_scrolly = sys16_textram[0x749];
3370 	sys16_fg_scrollx = sys16_textram[0x74c];
3371 	sys16_bg_scrollx = sys16_textram[0x74d];
3372 
3373 	sys16_tile_bank0 = sys16_extraram[0]&0xf;
3374 	sys16_tile_bank1 = sys16_extraram[1]&0xf;
3375 }
3376 
MACHINE_INIT(hwchamp)3377 static MACHINE_INIT( hwchamp ){
3378 	sys16_spritelist_end=0xc000;
3379 	sys16_update_proc = hwchamp_update_proc;
3380 	sys16_wwfix = 1; //*
3381 }
3382 
DRIVER_INIT(hwchamp)3383 static DRIVER_INIT( hwchamp )
3384 {
3385 	machine_init_sys16_onetime();
3386 }
3387 /***************************************************************************/
3388 
INPUT_PORTS_START(hwchamp)3389 INPUT_PORTS_START( hwchamp )
3390 
3391 PORT_START	/* Monitor */
3392 	PORT_ANALOG( 0xff, 0x80, IPT_PADDLE  , 70, 4, 0x0, 0xff )
3393 
3394 PORT_START	/* Handles (Fake) */
3395 	PORT_BITX(0x01, 0, IPT_BUTTON1, IP_NAME_DEFAULT, KEYCODE_F, IP_JOY_NONE ) // right hit
3396 	PORT_BITX(0x02, 0, IPT_BUTTON2, IP_NAME_DEFAULT, KEYCODE_D, IP_JOY_NONE ) // left hit
3397 	PORT_BITX(0x04, 0, IPT_BUTTON3, IP_NAME_DEFAULT, KEYCODE_B, IP_JOY_NONE ) // right dodge
3398 	PORT_BITX(0x08, 0, IPT_BUTTON4, IP_NAME_DEFAULT, KEYCODE_Z, IP_JOY_NONE ) // left dodge
3399 	PORT_BITX(0x10, 0, IPT_BUTTON5, IP_NAME_DEFAULT, KEYCODE_V, IP_JOY_NONE ) // right sway
3400 	PORT_BITX(0x20, 0, IPT_BUTTON6, IP_NAME_DEFAULT, KEYCODE_X, IP_JOY_NONE ) // left swat
3401 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
3402 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
3403 
3404 	SYS16_SERVICE
3405 	SYS16_COINAGE
3406 
3407 PORT_START	/* DSW1 */
3408 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )	// Not Used
3409 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
3410 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3411 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
3412 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
3413 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3414 	PORT_DIPNAME( 0x04, 0x00, "Start Level Select" )
3415 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
3416 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3417 	PORT_DIPNAME( 0x08, 0x08, "Continue Mode" )
3418 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
3419 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3420 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
3421 	PORT_DIPSETTING(    0x20, "Easy" )
3422 	PORT_DIPSETTING(    0x30, "Normal" )
3423 	PORT_DIPSETTING(    0x10, "Hard" )
3424 	PORT_DIPSETTING(    0x00, "Hardest" )
3425 	PORT_DIPNAME( 0xc0, 0xc0, "Time Adjust"  )
3426 	PORT_DIPSETTING(    0x80, "Easy" )
3427 	PORT_DIPSETTING(    0xc0, "Normal" )
3428 	PORT_DIPSETTING(    0x40, "Hard" )
3429 	PORT_DIPSETTING(    0x00, "Hardest" )
3430 
3431 INPUT_PORTS_END
3432 
3433 /***************************************************************************/
3434 
3435 static MACHINE_DRIVER_START( hwchamp )
3436 
3437 	/* basic machine hardware */
3438 	MDRV_IMPORT_FROM(system16_7759)
3439 	MDRV_CPU_MODIFY("main")
3440 	MDRV_CPU_MEMORY(hwchamp_readmem,hwchamp_writemem)
3441 
3442 	MDRV_MACHINE_INIT(hwchamp)
3443 MACHINE_DRIVER_END
3444 
3445 /***************************************************************************/
3446 // pre16
3447 ROM_START( mjleague )
3448 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
3449 	ROM_LOAD16_BYTE( "epr-7404.09b", 0x000000, 0x8000, CRC(ec1655b5) SHA1(5c1df364fa9733daa4478c5f88298089e4963c33) )
3450 	ROM_LOAD16_BYTE( "epr-7401.06b", 0x000001, 0x8000, CRC(2befa5e0) SHA1(0a1681a4c7d62a5754ba6f3845436b4d08324246) )
3451 	ROM_LOAD16_BYTE( "epr-7405.10b", 0x010000, 0x8000, CRC(7a4f4e38) SHA1(65a22097dd933e83f326bd64b3863915897780a6) )
3452 	ROM_LOAD16_BYTE( "epr-7402.07b", 0x010001, 0x8000, CRC(b7bef762) SHA1(214450e0b094f99ef38dec2a3e5cbdb0b30e917d) )
3453 	ROM_LOAD16_BYTE( "epra7406.11b", 0x020000, 0x8000, CRC(bb743639) SHA1(5d99638a79f02ce14374d3b1f3d9fbfc5c13c6e1) )
3454 	ROM_LOAD16_BYTE( "epra7403.08b", 0x020001, 0x8000, CRC(d86250cf) SHA1(fb5dabb7b9b9fe0bbe93e28c60311c7b3256107a) )	// Fails memory test. Bad rom?
3455 
3456 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3457 	ROM_LOAD( "epr-7051.09a", 0x00000, 0x08000, CRC(10ca255a) SHA1(ccf58ffcac2f7fbdbfbdf32601a1b97f359cbd91) )
3458 	ROM_LOAD( "epr-7052.10a", 0x08000, 0x08000, CRC(2550db0e) SHA1(28f8d68f43d26f12793fe295c205cc86adc4e96a) )
3459 	ROM_LOAD( "epr-7053.11a", 0x10000, 0x08000, CRC(5bfea038) SHA1(01dc6e14cc7bba9f7930e68573c441fa2841f49a) )
3460 
3461 	ROM_REGION( 0x50000, REGION_GFX2, 0 ) /* sprites */
3462 	ROM_LOAD16_BYTE( "epr-7055.05a", 0x000001, 0x8000, CRC(1fb860bd) SHA1(4a4155d0352dfae9e402a2b2f1558ef17b1303b4) )
3463 	ROM_LOAD16_BYTE( "epr-7059.02b", 0x000000, 0x8000, CRC(3d14091d) SHA1(36208415b2012b6e948fefa15b0f7041748066be) )
3464 	ROM_LOAD16_BYTE( "epr-7056.06a", 0x010001, 0x8000, CRC(b35dd968) SHA1(e306b5e38acf583d7b2089302622ad25ae5564b0) )
3465 	ROM_LOAD16_BYTE( "epr-7060.03b", 0x010000, 0x8000, CRC(61bb3757) SHA1(5c87cf23be22b84e3dae746527ca057d870d6397) )
3466 	ROM_LOAD16_BYTE( "epr-7057.07a", 0x020001, 0x8000, CRC(3e5a2b6f) SHA1(d3dbafb4acb916e02c978a156008bd75ba122fb7) )
3467 	ROM_LOAD16_BYTE( "epr-7061.04b", 0x020000, 0x8000, CRC(c808dad5) SHA1(9b65acc8dc23b16e56327298188d1a6ab48b2b5d) )
3468 	ROM_LOAD16_BYTE( "epr-7058.08a", 0x030001, 0x8000, CRC(b543675f) SHA1(35ffc9295a8849a18fabe156fdbc9801ea2179cd) )
3469 	ROM_LOAD16_BYTE( "epr-7062.05b", 0x030000, 0x8000, CRC(9168eb47) SHA1(daaa7836e627a0679e65373d8f20a9383ba4c905) )
3470 //	ROM_LOAD16_BYTE( "epr-7055.05a", 0x040001, 0x8000, CRC(1fb860bd) SHA1(4a4155d0352dfae9e402a2b2f1558ef17b1303b4) ) loaded twice??
3471 //	ROM_LOAD16_BYTE( "epr-7059.02b", 0x040000, 0x8000, CRC(3d14091d) SHA1(36208415b2012b6e948fefa15b0f7041748066be) ) loaded twice??
3472 
3473 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
3474 	ROM_LOAD( "eprc7054.01b", 0x00000, 0x8000, CRC(4443b744) SHA1(73359a6e9d62b382dee47fea31b9e17eb26a0321) )
3475 
3476 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
3477 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
3478 
3479 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
3480 	ROM_LOAD( "epr-7063.01a", 0x00000, 0x8000, CRC(45d8908a) SHA1(e61f81f953c1a744ded36fed3b55774e4747af29) )
3481 	ROM_LOAD( "epr-7065.02a", 0x08000, 0x8000, CRC(8c8f8cff) SHA1(fca5a916a8b25800ee5e8771e2ced0ed9bd737f4) )
3482 	ROM_LOAD( "epr-7064.03a", 0x10000, 0x8000, CRC(159f6636) SHA1(66fa3f3e95a6ef3d3ff4ded09c05ab1131d9fbbb) )
3483 	ROM_LOAD( "epr-7066.04a", 0x18000, 0x8000, CRC(f5cfa91f) SHA1(c85d68cbcd03fe1436bed12235c033610acc11ee) )
3484 ROM_END
3485 
3486 /***************************************************************************/
3487 
3488 static READ16_HANDLER( mjl_io_player1_r ){
3489 	data16_t data=input_port_0_r( offset ) & 0x80;
3490 
3491 	if( sys16_extraram2[2/2] & 0x4 )
3492 		data|=(input_port_5_r( offset ) & 0x3f) << 1;
3493 	else
3494 		data|=(input_port_6_r( offset ) & 0x3f) << 1;
3495 
3496 	return data;
3497 }
3498 
READ16_HANDLER(mjl_io_service_r)3499 static READ16_HANDLER( mjl_io_service_r ){
3500 	data16_t data=input_port_2_r( offset ) & 0x3f;
3501 
3502 	if(sys16_extraram2[2/2] & 0x4){
3503 		data|=(input_port_5_r( offset ) & 0x40);
3504 		data|=(input_port_7_r( offset ) & 0x40) << 1;
3505 	}
3506 	else {
3507 		data|=(input_port_6_r( offset ) & 0x40);
3508 		data|=(input_port_8_r( offset ) & 0x40) << 1;
3509 	}
3510 
3511 	return data;
3512 }
3513 
READ16_HANDLER(mjl_io_player2_r)3514 static READ16_HANDLER( mjl_io_player2_r )
3515 {
3516 	data16_t data=input_port_1_r( offset ) & 0x80;
3517 	if(sys16_extraram2[2/2] & 0x4)
3518 		data|=(input_port_7_r( offset ) & 0x3f) << 1;
3519 	else
3520 		data|=(input_port_8_r( offset ) & 0x3f) << 1;
3521 	return data;
3522 }
3523 
READ16_HANDLER(mjl_io_bat_r)3524 static READ16_HANDLER( mjl_io_bat_r )
3525 {
3526 	int data1=input_port_0_r( offset );
3527 	int data2=input_port_1_r( offset );
3528 	int ret=0;
3529 
3530 	// Hitting has 8 values, but for easy of playing, I've only added 3
3531 
3532 	if(data1 &1) ret=0x00;
3533 	else if(data1 &2) ret=0x03;
3534 	else if(data1 &4) ret=0x07;
3535 	else ret=0x0f;
3536 
3537 	if(data2 &1) ret|=0x00;
3538 	else if(data2 &2) ret|=0x30;
3539 	else if(data2 &4) ret|=0x70;
3540 	else ret|=0xf0;
3541 
3542 	return ret;
3543 }
3544 
MEMORY_READ16_START(mjleague_readmem)3545 static MEMORY_READ16_START( mjleague_readmem )
3546 	{ 0x000000, 0x02ffff, MRA16_ROM },
3547 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
3548 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
3549 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
3550 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
3551 
3552 	{ 0xc40002, 0xc40003, sys16_coinctrl_r },
3553 	{ 0xc41000, 0xc41001, mjl_io_service_r },
3554 	{ 0xc41002, 0xc41003, mjl_io_player1_r },
3555 	{ 0xc41006, 0xc41007, mjl_io_player2_r },
3556 	{ 0xc41004, 0xc41005, mjl_io_bat_r },
3557 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
3558 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
3559 	{ 0xc60000, 0xc60001, MRA16_NOP }, /* What is this? Watchdog? */
3560 
3561 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
3562 MEMORY_END
3563 
3564 static MEMORY_WRITE16_START( mjleague_writemem )
3565 	{ 0x000000, 0x02ffff, MWA16_ROM },
3566 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
3567 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
3568 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
3569 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
3570 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
3571 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
3572 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
3573 MEMORY_END
3574 
3575 /***************************************************************************/
3576 
3577 static void mjleague_update_proc( void ){
3578 	set_bg_page1( sys16_textram[0x746] );
3579 	set_fg_page1( sys16_textram[0x747] );
3580 
3581 	sys16_fg_scrollx = sys16_textram[0x7fc] & 0x01ff;
3582 	sys16_bg_scrollx = sys16_textram[0x7fd] & 0x01ff;
3583 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
3584 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
3585 }
3586 
MACHINE_INIT(mjleague)3587 static MACHINE_INIT( mjleague ){
3588 	sys16_textmode=1;
3589 	sys16_spritesystem = sys16_sprite_quartet2;
3590 	sys16_sprxoffset = -0xbd;
3591 	sys16_fgxoffset = sys16_bgxoffset = 7;
3592 
3593 	// remove memory test because it fails.
3594 	sys16_patch_code( 0xBD42, 0x66 );
3595 
3596 	sys16_update_proc = mjleague_update_proc;
3597 }
3598 
DRIVER_INIT(mjleague)3599 static DRIVER_INIT( mjleague )
3600 {
3601 	machine_init_sys16_onetime();
3602 }
3603 
3604 /***************************************************************************/
3605 
INPUT_PORTS_START(mjleague)3606 INPUT_PORTS_START( mjleague )
3607 
3608 PORT_START /* player 1 button fake */
3609 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
3610 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
3611 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 )
3612 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 )
3613 
3614 PORT_START /* player 1 button fake */
3615 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
3616 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
3617 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2 )
3618 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 | IPF_PLAYER2 )
3619 
3620 PORT_START  /* Service */
3621 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
3622 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
3623 	PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
3624 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
3625 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
3626 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
3627 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
3628 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
3629 
3630 	SYS16_COINAGE
3631 
3632 PORT_START	/* DSW1 */
3633 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
3634 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
3635 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
3636 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
3637 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
3638 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3639 	PORT_DIPNAME( 0x0c, 0x00, "Starting Points" )
3640 	PORT_DIPSETTING(    0x0c, "2000" )
3641 	PORT_DIPSETTING(    0x08, "3000" )
3642 	PORT_DIPSETTING(    0x04, "5000" )
3643 	PORT_DIPSETTING(    0x00, "10000" )
3644 	PORT_DIPNAME( 0x10, 0x10, "Team Select" )
3645 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
3646 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
3647 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )	//??? something to do with cocktail mode?
3648 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
3649 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3650 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
3651 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
3652 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3653 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
3654 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
3655 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3656 
3657 PORT_START	/* IN5 */
3658 	PORT_ANALOG( 0x7f, 0x40, IPT_TRACKBALL_Y, 70, 30, 0, 127 )
3659 
3660 PORT_START	/* IN6 */
3661 	PORT_ANALOG( 0x7f, 0x40, IPT_TRACKBALL_X /*| IPF_REVERSE*/, 50, 30, 0, 127 )
3662 
3663 PORT_START	/* IN7 */
3664 	PORT_ANALOG( 0x7f, 0x40, IPT_TRACKBALL_Y | IPF_PLAYER2, 70, 30, 0, 127 )
3665 
3666 PORT_START	/* IN8 */
3667 	PORT_ANALOG( 0x7f, 0x40, IPT_TRACKBALL_X | IPF_PLAYER2 | IPF_REVERSE, 50, 30, 0, 127 )
3668 
3669 INPUT_PORTS_END
3670 
3671 /***************************************************************************/
3672 
3673 static MACHINE_DRIVER_START( mjleague )
3674 
3675 	/* basic machine hardware */
3676 	MDRV_IMPORT_FROM(system16_7751)
3677 	MDRV_CPU_MODIFY("main")
3678 	MDRV_CPU_MEMORY(mjleague_readmem,mjleague_writemem)
3679 
3680 	MDRV_MACHINE_INIT(mjleague)
3681 MACHINE_DRIVER_END
3682 
3683 /***************************************************************************/
3684 // sys16B
3685 ROM_START( passsht )
3686 	ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code */
3687 	ROM_LOAD16_BYTE( "epr11871.a4", 0x000000, 0x10000, CRC(0f9ccea5) SHA1(515a2721a35332df0303f4b9616122194b5c7170) )
3688 	ROM_LOAD16_BYTE( "epr11870.a1", 0x000001, 0x10000, CRC(df43ebcf) SHA1(3ca11a25819e1e8d5162f7b36cccc928d8efe150) )
3689 
3690 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3691 	ROM_LOAD( "opr11854.b9",  0x00000, 0x10000, CRC(d31c0b6c) SHA1(610d04988da70c30300cc5614817eda9d2204f39) )
3692 	ROM_LOAD( "opr11855.b10", 0x10000, 0x10000, CRC(b78762b4) SHA1(d594ef846bd7fed8da91a89906b39c1a2867a1fe) )
3693 	ROM_LOAD( "opr11856.b11", 0x20000, 0x10000, CRC(ea49f666) SHA1(36ccd32cdcbb7fcc300628bb59c220ec3c324d82) )
3694 
3695 	ROM_REGION( 0x60000, REGION_GFX2, 0 ) /* sprites */
3696 	ROM_LOAD16_BYTE( "opr11862.b1",  0x00001, 0x10000, CRC(b6e94727) SHA1(0838e034f1f10d9cd1312c8c94b5c57387c0c271) )
3697 	ROM_LOAD16_BYTE( "opr11865.b5",  0x00000, 0x10000, CRC(17e8d5d5) SHA1(ac1074b0a705be13c6e3391441e6cfec1d2b3f8a) )
3698 	ROM_LOAD16_BYTE( "opr11863.b2",  0x20001, 0x10000, CRC(3e670098) SHA1(2cfc83f4294be30cd868738886ac546bd8489962) )
3699 	ROM_LOAD16_BYTE( "opr11866.b6",  0x20000, 0x10000, CRC(50eb71cc) SHA1(463b4917ca19c7f4ad2c2845caa104d5e4a2dda3) )
3700 	ROM_LOAD16_BYTE( "opr11864.b3",  0x40001, 0x10000, CRC(05733ca8) SHA1(1dbc7c99450ebe6a9fd8c0244fd3cb38b74984ef) )
3701 	ROM_LOAD16_BYTE( "opr11867.b7",  0x40000, 0x10000, CRC(81e49697) SHA1(a70fa409e3555ad6c8f28930a7026fdf2deb8c65) )
3702 
3703 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
3704 	ROM_LOAD( "epr11857.a7",  0x00000, 0x08000, CRC(789edc06) SHA1(8c89c94e503513c287807d187de78a7fbd75a7cf) )
3705 	ROM_LOAD( "epr11858.a8",  0x10000, 0x08000, CRC(08ab0018) SHA1(0685f80a7d403208c9cfffea3f2035324f3924fe) )
3706 	ROM_LOAD( "epr11859.a9",  0x18000, 0x08000, CRC(8673e01b) SHA1(e79183ab30e683fdf61ced2e9dbe010567c324cb) )
3707 	ROM_LOAD( "epr11860.a10", 0x20000, 0x08000, CRC(10263746) SHA1(1f981fb185c6a9795208ecdcfba36cf892a99ed5) )
3708 	ROM_LOAD( "epr11861.a11", 0x28000, 0x08000, CRC(38b54a71) SHA1(68ec4ef5b115844214ff2213be1ce6678904fbd2) )
3709 ROM_END
3710 
3711 ROM_START( passht4b )
3712 	ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code */
3713 	ROM_LOAD16_BYTE( "pas4p.3", 0x000000, 0x10000, CRC(2d8bc946) SHA1(35d3e529d4815543d9876fd0545c3d686467abaa) )
3714 	ROM_LOAD16_BYTE( "pas4p.4", 0x000001, 0x10000, CRC(e759e831) SHA1(dd5727dc28010cb988e4951723171171eb645ce8) )
3715 
3716 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3717 	ROM_LOAD( "pas4p.11", 0x00000, 0x10000, CRC(da20fbc9) SHA1(21dc8143f4d1cebae4f86e83495fa84e5293ba48) )
3718 	ROM_LOAD( "pas4p.12", 0x10000, 0x10000, CRC(bebb9211) SHA1(4f56048f6f70b63f74a4c0d64456213d36ce5b26) )
3719 	ROM_LOAD( "pas4p.13", 0x20000, 0x10000, CRC(e37506c3) SHA1(e6fbf15d58f321a3d052fefbe5a1901e4a1734ae) )
3720 
3721 	ROM_REGION( 0x60000, REGION_GFX2, 0 ) /* sprites */
3722 	ROM_LOAD16_BYTE( "opr11862.b1",  0x00001, 0x10000, CRC(b6e94727) SHA1(0838e034f1f10d9cd1312c8c94b5c57387c0c271) )
3723 	ROM_LOAD16_BYTE( "opr11865.b5",  0x00000, 0x10000, CRC(17e8d5d5) SHA1(ac1074b0a705be13c6e3391441e6cfec1d2b3f8a) )
3724 	ROM_LOAD16_BYTE( "opr11863.b2",  0x20001, 0x10000, CRC(3e670098) SHA1(2cfc83f4294be30cd868738886ac546bd8489962) )
3725 	ROM_LOAD16_BYTE( "opr11866.b6",  0x20000, 0x10000, CRC(50eb71cc) SHA1(463b4917ca19c7f4ad2c2845caa104d5e4a2dda3) )
3726 	ROM_LOAD16_BYTE( "opr11864.b3",  0x40001, 0x10000, CRC(05733ca8) SHA1(1dbc7c99450ebe6a9fd8c0244fd3cb38b74984ef) )
3727 	ROM_LOAD16_BYTE( "opr11867.b7",  0x40000, 0x10000, CRC(81e49697) SHA1(a70fa409e3555ad6c8f28930a7026fdf2deb8c65) )
3728 
3729 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
3730 	ROM_LOAD( "pas4p.1",  0x00000, 0x08000, CRC(e60fb017) SHA1(21298036eab55c74427f1c2e3a9623d41bca4849) )
3731 	ROM_LOAD( "pas4p.2",  0x10000, 0x10000, CRC(092e016e) SHA1(713638749efa9dce19c547b84308236110bc85fe) )
3732 ROM_END
3733 
3734 ROM_START( passshtb )
3735 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
3736 	ROM_LOAD16_BYTE( "pass3_2p.bin", 0x000000, 0x10000, CRC(26bb9299) SHA1(11bacf86dfdd8bcfbfb61f0ebc59890325c48adc) )
3737 	ROM_LOAD16_BYTE( "pass4_2p.bin", 0x000001, 0x10000, CRC(06ac6d5d) SHA1(2dd71a8a956404326797de8beed7bca016c9919e) )
3738 
3739 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
3740 	ROM_LOAD( "opr11854.b9",  0x00000, 0x10000, CRC(d31c0b6c) SHA1(610d04988da70c30300cc5614817eda9d2204f39) )
3741 	ROM_LOAD( "opr11855.b10", 0x10000, 0x10000, CRC(b78762b4) SHA1(d594ef846bd7fed8da91a89906b39c1a2867a1fe) )
3742 	ROM_LOAD( "opr11856.b11", 0x20000, 0x10000, CRC(ea49f666) SHA1(36ccd32cdcbb7fcc300628bb59c220ec3c324d82) )
3743 
3744 	ROM_REGION( 0x60000, REGION_GFX2, 0 ) /* sprites */
3745 	ROM_LOAD16_BYTE( "opr11862.b1",  0x00001, 0x10000, CRC(b6e94727) SHA1(0838e034f1f10d9cd1312c8c94b5c57387c0c271) )
3746 	ROM_LOAD16_BYTE( "opr11865.b5",  0x00000, 0x10000, CRC(17e8d5d5) SHA1(ac1074b0a705be13c6e3391441e6cfec1d2b3f8a) )
3747 	ROM_LOAD16_BYTE( "opr11863.b2",  0x20001, 0x10000, CRC(3e670098) SHA1(2cfc83f4294be30cd868738886ac546bd8489962) )
3748 	ROM_LOAD16_BYTE( "opr11866.b6",  0x20000, 0x10000, CRC(50eb71cc) SHA1(463b4917ca19c7f4ad2c2845caa104d5e4a2dda3) )
3749 	ROM_LOAD16_BYTE( "opr11864.b3",  0x40001, 0x10000, CRC(05733ca8) SHA1(1dbc7c99450ebe6a9fd8c0244fd3cb38b74984ef) )
3750 	ROM_LOAD16_BYTE( "opr11867.b7",  0x40000, 0x10000, CRC(81e49697) SHA1(a70fa409e3555ad6c8f28930a7026fdf2deb8c65) )
3751 
3752 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
3753 	ROM_LOAD( "epr11857.a7",  0x00000, 0x08000, CRC(789edc06) SHA1(8c89c94e503513c287807d187de78a7fbd75a7cf) )
3754 	ROM_LOAD( "epr11858.a8",  0x10000, 0x08000, CRC(08ab0018) SHA1(0685f80a7d403208c9cfffea3f2035324f3924fe) )
3755 	ROM_LOAD( "epr11859.a9",  0x18000, 0x08000, CRC(8673e01b) SHA1(e79183ab30e683fdf61ced2e9dbe010567c324cb) )
3756 	ROM_LOAD( "epr11860.a10", 0x20000, 0x08000, CRC(10263746) SHA1(1f981fb185c6a9795208ecdcfba36cf892a99ed5) )
3757 	ROM_LOAD( "epr11861.a11", 0x28000, 0x08000, CRC(38b54a71) SHA1(68ec4ef5b115844214ff2213be1ce6678904fbd2) )
3758 ROM_END
3759 /***************************************************************************/
3760 
3761 static MEMORY_READ16_START( passsht_readmem )
3762 	{ 0x000000, 0x01ffff, MRA16_ROM },
3763 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
3764 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
3765 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
3766 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
3767 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
3768 	{ 0xc41004, 0xc41005, input_port_1_word_r }, // player2
3769 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
3770 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
3771 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
3772 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
3773 MEMORY_END
3774 
3775 static MEMORY_WRITE16_START( passsht_writemem )
3776 	{ 0x000000, 0x01ffff, MWA16_ROM },
3777 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
3778 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
3779 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
3780 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
3781 	{ 0xc42006, 0xc42007, sound_command_w },
3782 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
3783 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
3784 MEMORY_END
3785 
3786 static int passht4b_io1_val;
3787 static int passht4b_io2_val;
3788 static int passht4b_io3_val;
3789 
READ16_HANDLER(passht4b_service_r)3790 static READ16_HANDLER( passht4b_service_r ){
3791 	data16_t val=input_port_2_word_r(offset,0);
3792 	if(!(readinputport(0) & 0x40)) val&=0xef;
3793 	if(!(readinputport(1) & 0x40)) val&=0xdf;
3794 	if(!(readinputport(5) & 0x40)) val&=0xbf;
3795 	if(!(readinputport(6) & 0x40)) val&=0x7f;
3796 
3797 	passht4b_io3_val=(readinputport(0)<<4) | (readinputport(5)&0xf);
3798 	passht4b_io2_val=(readinputport(1)<<4) | (readinputport(6)&0xf);
3799 
3800 	passht4b_io1_val=0xff;
3801 
3802 	// player 1 buttons
3803 	if(!(readinputport(0) & 0x10)) passht4b_io1_val &=0xfe;
3804 	if(!(readinputport(0) & 0x20)) passht4b_io1_val &=0xfd;
3805 	if(!(readinputport(0) & 0x80)) passht4b_io1_val &=0xfc;
3806 
3807 	// player 2 buttons
3808 	if(!(readinputport(1) & 0x10)) passht4b_io1_val &=0xfb;
3809 	if(!(readinputport(1) & 0x20)) passht4b_io1_val &=0xf7;
3810 	if(!(readinputport(1) & 0x80)) passht4b_io1_val &=0xf3;
3811 
3812 	// player 3 buttons
3813 	if(!(readinputport(5) & 0x10)) passht4b_io1_val &=0xef;
3814 	if(!(readinputport(5) & 0x20)) passht4b_io1_val &=0xdf;
3815 	if(!(readinputport(5) & 0x80)) passht4b_io1_val &=0xcf;
3816 
3817 	// player 4 buttons
3818 	if(!(readinputport(6) & 0x10)) passht4b_io1_val &=0xbf;
3819 	if(!(readinputport(6) & 0x20)) passht4b_io1_val &=0x7f;
3820 	if(!(readinputport(6) & 0x80)) passht4b_io1_val &=0x3f;
3821 
3822 	return val;
3823 }
3824 
READ16_HANDLER(passht4b_io1_r)3825 static READ16_HANDLER( passht4b_io1_r ) {	return passht4b_io1_val;}
READ16_HANDLER(passht4b_io2_r)3826 static READ16_HANDLER( passht4b_io2_r ) {	return passht4b_io2_val;}
READ16_HANDLER(passht4b_io3_r)3827 static READ16_HANDLER( passht4b_io3_r ) {	return passht4b_io3_val;}
3828 
MEMORY_READ16_START(passht4b_readmem)3829 static MEMORY_READ16_START( passht4b_readmem )
3830 	{ 0x000000, 0x01ffff, MRA16_ROM },
3831 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
3832 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
3833 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
3834 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
3835 	{ 0xc41000, 0xc41001, passht4b_service_r },
3836 	{ 0xc41002, 0xc41003, passht4b_io1_r },
3837 	{ 0xc41004, 0xc41005, passht4b_io2_r },
3838 	{ 0xc41006, 0xc41007, passht4b_io3_r },
3839 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
3840 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
3841 	{ 0xc43000, 0xc43001, input_port_0_word_r }, // player1		// test mode only
3842 	{ 0xc43002, 0xc43003, input_port_1_word_r }, // player2
3843 	{ 0xc43004, 0xc43005, input_port_5_word_r }, // player3
3844 	{ 0xc43006, 0xc43007, input_port_6_word_r }, // player4
3845 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
3846 MEMORY_END
3847 
3848 static MEMORY_WRITE16_START( passht4b_writemem )
3849 	{ 0x000000, 0x01ffff, MWA16_ROM },
3850 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
3851 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
3852 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
3853 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
3854 	{ 0xc42006, 0xc42007, sound_command_w },
3855 	{ 0xc4600a, 0xc4600b, sys16_coinctrl_w },	/* coin counter doesn't work */
3856 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
3857 MEMORY_END
3858 
3859 /***************************************************************************/
3860 
3861 static void passsht_update_proc( void ){
3862 	sys16_fg_scrollx = sys16_workingram[0x34be/2];
3863 	sys16_bg_scrollx = sys16_workingram[0x34c2/2];
3864 	sys16_fg_scrolly = sys16_workingram[0x34bc/2];
3865 	sys16_bg_scrolly = sys16_workingram[0x34c0/2];
3866 
3867 	set_fg_page( sys16_textram[0x0ff6/2] );
3868 	set_bg_page( sys16_textram[0x0ff4/2] );
3869 }
3870 
passht4b_update_proc(void)3871 static void passht4b_update_proc( void ){
3872 	sys16_fg_scrollx = sys16_workingram[0x34ce/2];
3873 	sys16_bg_scrollx = sys16_workingram[0x34d2/2];
3874 	sys16_fg_scrolly = sys16_workingram[0x34cc/2];
3875 	sys16_bg_scrolly = sys16_workingram[0x34d0/2];
3876 
3877 	set_fg_page( sys16_textram[0x0ff6/2] );
3878 	set_bg_page( sys16_textram[0x0ff4/2] );
3879 }
3880 
MACHINE_INIT(passsht)3881 static MACHINE_INIT( passsht ){
3882 	sys16_sprxoffset = -0x48;
3883 	sys16_spritesystem = sys16_sprite_passshot;
3884 
3885 	// fix name entry
3886 	sys16_patch_code( 0x13a8,0xc0);
3887 
3888 	sys16_update_proc = passsht_update_proc;
3889 }
3890 
MACHINE_INIT(passht4b)3891 static MACHINE_INIT( passht4b ){
3892 	sys16_sprxoffset = -0xb8;
3893 	sys16_spritesystem = sys16_sprite_passshot;
3894 
3895 	// fix name entry
3896 	sys16_patch_code( 0x138a,0xc0);
3897 
3898 	sys16_update_proc = passht4b_update_proc;
3899 }
3900 
DRIVER_INIT(passsht)3901 static DRIVER_INIT( passsht )
3902 {
3903 	machine_init_sys16_onetime();
3904 }
3905 
DRIVER_INIT(passht4b)3906 static DRIVER_INIT( passht4b ){
3907 	int i;
3908 
3909 	machine_init_sys16_onetime();
3910 
3911 	/* invert the graphics bits on the tiles */
3912 	for (i = 0; i < 0x30000; i++)
3913 		memory_region(REGION_GFX1)[i] ^= 0xff;
3914 }
3915 
3916 /***************************************************************************/
3917 
INPUT_PORTS_START(passsht)3918 INPUT_PORTS_START( passsht )
3919 PORT_START /* joy 1 */
3920 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )
3921 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
3922 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
3923 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
3924 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
3925 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
3926 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
3927 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
3928 
3929 PORT_START /* joy 2 */
3930 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
3931 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
3932 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
3933 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_COCKTAIL )
3934 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
3935 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
3936 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
3937 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
3938 
3939 	SYS16_SERVICE
3940 	SYS16_COINAGE
3941 
3942 PORT_START	/* DSW1 */
3943 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
3944 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
3945 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3946 	PORT_DIPNAME( 0x0e, 0x0e, "Initial Point" )
3947 	PORT_DIPSETTING(    0x06, "2000" )
3948 	PORT_DIPSETTING(    0x0a, "3000" )
3949 	PORT_DIPSETTING(    0x0c, "4000" )
3950 	PORT_DIPSETTING(    0x0e, "5000" )
3951 	PORT_DIPSETTING(    0x08, "6000" )
3952 	PORT_DIPSETTING(    0x04, "7000" )
3953 	PORT_DIPSETTING(    0x02, "8000" )
3954 	PORT_DIPSETTING(    0x00, "9000" )
3955 	PORT_DIPNAME( 0x30, 0x30, "Point Table" )
3956 	PORT_DIPSETTING(    0x20, "Easy" )
3957 	PORT_DIPSETTING(    0x30, "Normal" )
3958 	PORT_DIPSETTING(    0x10, "Hard" )
3959 	PORT_DIPSETTING(    0x00, "Hardest" )
3960 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
3961 	PORT_DIPSETTING(    0x80, "Easy" )
3962 	PORT_DIPSETTING(    0xc0, "Normal" )
3963 	PORT_DIPSETTING(    0x40, "Hard" )
3964 	PORT_DIPSETTING(    0x00, "Hardest" )
3965 INPUT_PORTS_END
3966 
3967 INPUT_PORTS_START( passht4b )
3968 PORT_START /* joy 1 */
3969 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
3970 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
3971 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
3972 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
3973 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
3974 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
3975 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
3976 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
3977 
3978 PORT_START /* joy 2 */
3979 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
3980 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
3981 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
3982 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
3983 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
3984 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
3985 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
3986 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_COCKTAIL )
3987 
3988 PORT_START /* service */
3989 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
3990 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
3991 	PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
3992 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
3993 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
3994 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
3995 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
3996 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
3997 
3998 	SYS16_COINAGE
3999 
4000 PORT_START	/* DSW1 */
4001 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
4002 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4003 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4004 	PORT_DIPNAME( 0x0e, 0x0e, "Initial Point" )
4005 	PORT_DIPSETTING(    0x06, "2000" )
4006 	PORT_DIPSETTING(    0x0a, "3000" )
4007 	PORT_DIPSETTING(    0x0c, "4000" )
4008 	PORT_DIPSETTING(    0x0e, "5000" )
4009 	PORT_DIPSETTING(    0x08, "6000" )
4010 	PORT_DIPSETTING(    0x04, "7000" )
4011 	PORT_DIPSETTING(    0x02, "8000" )
4012 	PORT_DIPSETTING(    0x00, "9000" )
4013 	PORT_DIPNAME( 0x30, 0x30, "Point Table" )
4014 	PORT_DIPSETTING(    0x20, "Easy" )
4015 	PORT_DIPSETTING(    0x30, "Normal" )
4016 	PORT_DIPSETTING(    0x10, "Hard" )
4017 	PORT_DIPSETTING(    0x00, "Hardest" )
4018 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
4019 	PORT_DIPSETTING(    0x80, "Easy" )
4020 	PORT_DIPSETTING(    0xc0, "Normal" )
4021 	PORT_DIPSETTING(    0x40, "Hard" )
4022 	PORT_DIPSETTING(    0x00, "Hardest" )
4023 
4024 PORT_START /* joy 3 */
4025 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
4026 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
4027 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
4028 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
4029 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
4030 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
4031 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
4032 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER3 )
4033 
4034 PORT_START /* joy 4 */
4035 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
4036 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
4037 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
4038 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
4039 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
4040 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
4041 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
4042 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER4 )
4043 
4044 INPUT_PORTS_END
4045 
4046 /***************************************************************************/
4047 
4048 static MACHINE_DRIVER_START( passsht )
4049 
4050 	/* basic machine hardware */
4051 	MDRV_IMPORT_FROM(system16_7759)
4052 	MDRV_CPU_MODIFY("main")
4053 	MDRV_CPU_MEMORY(passsht_readmem,passsht_writemem)
4054 
4055 	MDRV_MACHINE_INIT(passsht)
4056 MACHINE_DRIVER_END
4057 
4058 
4059 static MACHINE_DRIVER_START( passht4b )
4060 
4061 	/* basic machine hardware */
4062 	MDRV_IMPORT_FROM(system16_7759)
4063 	MDRV_CPU_MODIFY("main")
4064 	MDRV_CPU_MEMORY(passht4b_readmem,passht4b_writemem)
4065 
4066 	MDRV_MACHINE_INIT(passht4b)
4067 MACHINE_DRIVER_END
4068 
4069 /***************************************************************************/
4070 // pre16
4071 ROM_START( quartet )
4072 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4073 	ROM_LOAD16_BYTE( "epr7458a.9b",  0x000000, 0x8000, CRC(42e7b23e) SHA1(9df3b1b915723f9a927ef03d80ae7983a8c91a21) )
4074 	ROM_LOAD16_BYTE( "epr7455a.6b",  0x000001, 0x8000, CRC(01631ab2) SHA1(2d613d23fe79072f850ccc9020830dea54312b23) )
4075 	ROM_LOAD16_BYTE( "epr7459a.10b", 0x010000, 0x8000, CRC(6b540637) SHA1(4b2e9ba06b80f8fb502310ab770805f8c6a47567) )
4076 	ROM_LOAD16_BYTE( "epr7456a.7b",  0x010001, 0x8000, CRC(31ca583e) SHA1(8ade8f7e42ae3e171b138410374e4c090fdc4ecb) )
4077 	ROM_LOAD16_BYTE( "epr7460.11b",  0x020000, 0x8000, CRC(a444ea13) SHA1(884ed22d606e3bd30d8401fe1750687e54674e82) )
4078 	ROM_LOAD16_BYTE( "epr7457.8b",   0x020001, 0x8000, CRC(3b282c23) SHA1(95de41a97f50f6169887c6d9724d5c42a41bb264) )
4079 
4080 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4081 	ROM_LOAD( "epr7461.9c",  0x00000, 0x08000, CRC(f6af07f2) SHA1(546fabbda936d61a90d2395d033fd4d6bb0bc38a) )
4082 	ROM_LOAD( "epr7462.10c", 0x08000, 0x08000, CRC(7914af28) SHA1(4bf59fe4a0b0aa5d4cc0b6f9375ffab3c96e8a2b) )
4083 	ROM_LOAD( "epr7463.11c", 0x10000, 0x08000, CRC(827c5603) SHA1(8db3bd6eae5aeeb229e017471049ef5347974df5) )
4084 
4085 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites  - the same as quartet 2 */
4086 	ROM_LOAD16_BYTE( "epr7465.5c",  0x000001, 0x8000, CRC(8a1ab7d7) SHA1(a2f317538c70a1603b65d795223407cbaaf88524) )
4087 	ROM_LOAD16_BYTE( "epr-7469.2b", 0x000000, 0x8000, CRC(cb65ae4f) SHA1(3ee7b3b4cce113a6f394e8dfd317cdb6ffae64f7) )
4088 	ROM_LOAD16_BYTE( "epr7466.6c",  0x010001, 0x8000, CRC(b2d3f4f3) SHA1(65e654fde10bee4cb5eee8234d0babb78fe41cfb) )
4089 	ROM_LOAD16_BYTE( "epr-7470.3b", 0x010000, 0x8000, CRC(16fc67b1) SHA1(788fe2878c5c9faea43c2f166f32c22ee51c7d09) )
4090 	ROM_LOAD16_BYTE( "epr7467.7c",  0x020001, 0x8000, CRC(0af68de2) SHA1(81163baf3f0e45bac950a6d9c24b3a886db1509c) )
4091 	ROM_LOAD16_BYTE( "epr-7471.4b", 0x020000, 0x8000, CRC(13fad5ac) SHA1(75b480083fbb14cbef969126989bf9b2235fd31e) )
4092 	ROM_LOAD16_BYTE( "epr7468.8c",  0x030001, 0x8000, CRC(ddfd40c0) SHA1(6c12ad668cd0c82e7d7d46bfbdcee8b9d46ebd09) )
4093 	ROM_LOAD16_BYTE( "epr-7472.5b", 0x030000, 0x8000, CRC(8e2762ec) SHA1(872e19a6aab81d7a2472367d0e31dc1295da7182) )
4094 
4095 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4096 	ROM_LOAD( "epr-7464.1b", 0x0000, 0x8000, CRC(9f291306) SHA1(96a09542a863ccf2ded43e2df6f913722b3f97b1) )
4097 
4098 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
4099 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
4100 
4101 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
4102 	ROM_LOAD( "epr7473.1c", 0x00000, 0x8000, CRC(06ec75fa) SHA1(5f14bc887449122700c46ad22c0379a1682e0bdb) )
4103 	ROM_LOAD( "epr7475.2c", 0x08000, 0x8000, CRC(7abd1206) SHA1(54d52dc0b9c245cd2df647e714310a71b803cbcf) )
4104 	ROM_LOAD( "epr7474.3c", 0x10000, 0x8000, CRC(dbf853b8) SHA1(e82f497e1144f23f3233b5c45ef182bfc7923715) )
4105 	ROM_LOAD( "epr7476.4c", 0x18000, 0x8000, CRC(5eba655a) SHA1(6713ef12037cba3139d0f469c82bd90b44bae8ce) )
4106 ROM_END
4107 
4108 ROM_START( quartetj )
4109 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4110 	ROM_LOAD16_BYTE( "epr-7458.43",  0x000000, 0x8000, CRC(0096499f) SHA1(dcf8e33513ce7c6660ea546c8e1c574fde629a22) )
4111 	ROM_LOAD16_BYTE( "epr-7455.26",  0x000001, 0x8000, CRC(da934390) SHA1(d40eb65b6a36a4c1ebeadb76e47a61bd8b2e4b89) )
4112 	ROM_LOAD16_BYTE( "epr-7459.42",  0x010000, 0x8000, CRC(d130cf61) SHA1(3a065f5c296b10b97c78d49aa285ae7afb16e881) )
4113 	ROM_LOAD16_BYTE( "epr-7456.25",  0x010001, 0x8000, CRC(7847149f) SHA1(fc8ad669f2bc426cb7af78d92ea147cbd1e181af) )
4114 	ROM_LOAD16_BYTE( "epr7460.11b",  0x020000, 0x8000, CRC(a444ea13) SHA1(884ed22d606e3bd30d8401fe1750687e54674e82) )
4115 	ROM_LOAD16_BYTE( "epr7457.8b",   0x020001, 0x8000, CRC(3b282c23) SHA1(95de41a97f50f6169887c6d9724d5c42a41bb264) )
4116 
4117 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4118 	ROM_LOAD( "epr7461.9c",  0x00000, 0x08000, CRC(f6af07f2) SHA1(546fabbda936d61a90d2395d033fd4d6bb0bc38a) )
4119 	ROM_LOAD( "epr7462.10c", 0x08000, 0x08000, CRC(7914af28) SHA1(4bf59fe4a0b0aa5d4cc0b6f9375ffab3c96e8a2b) )
4120 	ROM_LOAD( "epr7463.11c", 0x10000, 0x08000, CRC(827c5603) SHA1(8db3bd6eae5aeeb229e017471049ef5347974df5) )
4121 
4122 	ROM_REGION( 0x040000, REGION_GFX2, 0 ) /* sprites  - the same as quartet 2 */
4123 	ROM_LOAD16_BYTE( "epr7465.5c",  0x000001, 0x8000, CRC(8a1ab7d7) SHA1(a2f317538c70a1603b65d795223407cbaaf88524) )
4124 	ROM_LOAD16_BYTE( "epr-7469.2b", 0x000000, 0x8000, CRC(cb65ae4f) SHA1(3ee7b3b4cce113a6f394e8dfd317cdb6ffae64f7) )
4125 	ROM_LOAD16_BYTE( "epr7466.6c",  0x010001, 0x8000, CRC(b2d3f4f3) SHA1(65e654fde10bee4cb5eee8234d0babb78fe41cfb) )
4126 	ROM_LOAD16_BYTE( "epr-7470.3b", 0x010000, 0x8000, CRC(16fc67b1) SHA1(788fe2878c5c9faea43c2f166f32c22ee51c7d09) )
4127 	ROM_LOAD16_BYTE( "epr7467.7c",  0x020001, 0x8000, CRC(0af68de2) SHA1(81163baf3f0e45bac950a6d9c24b3a886db1509c) )
4128 	ROM_LOAD16_BYTE( "epr-7471.4b", 0x020000, 0x8000, CRC(13fad5ac) SHA1(75b480083fbb14cbef969126989bf9b2235fd31e) )
4129 	ROM_LOAD16_BYTE( "epr7468.8c",  0x030001, 0x8000, CRC(ddfd40c0) SHA1(6c12ad668cd0c82e7d7d46bfbdcee8b9d46ebd09) )
4130 	ROM_LOAD16_BYTE( "epr-7472.5b", 0x030000, 0x8000, CRC(8e2762ec) SHA1(872e19a6aab81d7a2472367d0e31dc1295da7182) )
4131 
4132 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4133 	ROM_LOAD( "epr-7464.1b", 0x0000, 0x8000, CRC(9f291306) SHA1(96a09542a863ccf2ded43e2df6f913722b3f97b1) )
4134 
4135 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
4136 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
4137 
4138 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
4139 	ROM_LOAD( "epr7473.1c", 0x00000, 0x8000, CRC(06ec75fa) SHA1(5f14bc887449122700c46ad22c0379a1682e0bdb) )
4140 	ROM_LOAD( "epr7475.2c", 0x08000, 0x8000, CRC(7abd1206) SHA1(54d52dc0b9c245cd2df647e714310a71b803cbcf) )
4141 	ROM_LOAD( "epr7474.3c", 0x10000, 0x8000, CRC(dbf853b8) SHA1(e82f497e1144f23f3233b5c45ef182bfc7923715) )
4142 	ROM_LOAD( "epr7476.4c", 0x18000, 0x8000, CRC(5eba655a) SHA1(6713ef12037cba3139d0f469c82bd90b44bae8ce) )
4143 ROM_END
4144 
4145 
4146 /***************************************************************************/
4147 
4148 #if 0
4149 static READ16_HANDLER( quartet_skip_r ){
4150 	if (activecpu_get_pc()==0x89b2) {cpu_spinuntil_int(); return 0xffff;}
4151 	return sys16_workingram[0x0800/2];
4152 }
4153 #endif
4154 
4155 static MEMORY_READ16_START( quartet_readmem )
4156 	{ 0x000000, 0x02ffff, MRA16_ROM },
4157 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
4158 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
4159 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
4160 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
4161 	{ 0xc40002, 0xc40003, sys16_coinctrl_r },
4162 	{ 0xc41000, 0xc41001, input_port_0_word_r }, // p1
4163 	{ 0xc41002, 0xc41003, input_port_1_word_r }, // p2
4164 	{ 0xc41004, 0xc41005, input_port_2_word_r }, // p3
4165 	{ 0xc41006, 0xc41007, input_port_3_word_r }, // p4
4166 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
4167 	{ 0xc42002, 0xc42003, input_port_5_word_r }, // dip2
4168 //	{ 0xffc800, 0xffc801, quartet_skip_r },
4169 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
4170 MEMORY_END
4171 
4172 static MEMORY_WRITE16_START( quartet_writemem )
4173 	{ 0x000000, 0x02ffff, MWA16_ROM },
4174 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
4175 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
4176 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
4177 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
4178 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
4179 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
4180 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
4181 MEMORY_END
4182 
4183 /***************************************************************************/
4184 
4185 static void quartet_update_proc( void ){
4186 	sys16_fg_scrollx = sys16_workingram[0x0d14/2] & 0x01ff;
4187 	sys16_bg_scrollx = sys16_workingram[0x0d18/2] & 0x01ff;
4188 	sys16_fg_scrolly = sys16_textram[0x0f24/2] & 0x00ff;
4189 	sys16_bg_scrolly = sys16_textram[0x0f26/2] & 0x01ff;
4190 
4191 //	if(((*(UINT16 *)(&sys16_extraram[4])) & 0xff) == 1)
4192 //		\=1;
4193 //	else
4194 		sys16_quartet_title_kludge=0;
4195 
4196 	set_fg_page1( sys16_workingram[0x0d1c/2] );
4197 	set_bg_page1( sys16_workingram[0x0d1e/2] );
4198 }
4199 
MACHINE_INIT(quartet)4200 static MACHINE_INIT( quartet ){
4201 	sys16_textmode=1;
4202 	sys16_spritesystem = sys16_sprite_quartet2;
4203 	sys16_sprxoffset = -0xbc;
4204 	sys16_fgxoffset = sys16_bgxoffset = 7;
4205 
4206 	sys16_update_proc = quartet_update_proc;
4207 }
4208 
DRIVER_INIT(quartet)4209 static DRIVER_INIT( quartet )
4210 {
4211 	machine_init_sys16_onetime();
4212 }
4213 /***************************************************************************/
4214 
INPUT_PORTS_START(quartet)4215 INPUT_PORTS_START( quartet )
4216 	// Player 1
4217 	PORT_START
4218 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY  )
4219 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP  | IPF_8WAY  )
4220 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
4221 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
4222 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
4223 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
4224 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
4225 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
4226 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* player 1 coin 2 really */
4227 	// Player 2
4228 	PORT_START
4229 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY  | IPF_PLAYER2 )
4230 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP  | IPF_8WAY  | IPF_PLAYER2 )
4231 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2)
4232 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2)
4233 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2)
4234 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
4235 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2)
4236 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
4237 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* player 2 coin 2 really */
4238 	// Player 3
4239 	PORT_START
4240 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3  )
4241 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP  | IPF_8WAY  | IPF_PLAYER3 )
4242 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
4243 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
4244 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
4245 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START3 )
4246 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
4247 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
4248 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* player 3 coin 2 really */
4249 	// Player 4
4250 	PORT_START
4251 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY  | IPF_PLAYER4 )
4252 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP  | IPF_8WAY  | IPF_PLAYER4 )
4253 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4)
4254 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER4)
4255 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4)
4256 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START4 )
4257 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4)
4258 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN4 )
4259 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* player 4 coin 2 really */
4260 
4261 	SYS16_COINAGE
4262 
4263 	PORT_START	/* DSW1 */
4264 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
4265 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4266 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4267 	PORT_DIPNAME( 0x06, 0x00, "Credit Power" )
4268 	PORT_DIPSETTING(    0x04, "500" )
4269 	PORT_DIPSETTING(    0x06, "1000" )
4270 	PORT_DIPSETTING(    0x02, "2000" )
4271 	PORT_DIPSETTING(    0x00, "9000" )
4272 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Difficulty ) )
4273 	PORT_DIPSETTING(    0x10, "Easy" )
4274 	PORT_DIPSETTING(    0x18, "Normal" )
4275 	PORT_DIPSETTING(    0x08, "Hard" )
4276 	PORT_DIPSETTING(    0x00, "Hardest" )
4277 	PORT_DIPNAME( 0x20, 0x20, "Coin During Game" )
4278 	PORT_DIPSETTING(    0x20, "Power" )
4279 	PORT_DIPSETTING(    0x00, "Credit" )
4280 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) )
4281 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
4282 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4283 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
4284 INPUT_PORTS_END
4285 
4286 /***************************************************************************/
4287 
4288 static MACHINE_DRIVER_START( quartet )
4289 
4290 	/* basic machine hardware */
4291 	MDRV_IMPORT_FROM(system16_7751)
4292 	MDRV_CPU_MODIFY("main")
4293 	MDRV_CPU_MEMORY(quartet_readmem,quartet_writemem)
4294 
4295 	MDRV_MACHINE_INIT(quartet)
4296 MACHINE_DRIVER_END
4297 
4298 /***************************************************************************/
4299 // pre16
4300 ROM_START( quartet2 )
4301 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4302 	ROM_LOAD16_BYTE( "quartet2.b9",  0x000000, 0x8000, CRC(67177cd8) SHA1(c4ea001dfbeeb29a09d597fb50d71f54e4e9572a) )
4303 	ROM_LOAD16_BYTE( "quartet2.b6",  0x000001, 0x8000, CRC(50f50b08) SHA1(646c0d545150b95e5d8d47bf63360f7326add08f) )
4304 	ROM_LOAD16_BYTE( "quartet2.b10", 0x010000, 0x8000, CRC(4273c3b7) SHA1(4cae221678a6d2b7806487becd4ba09b520f9fa0) )
4305 	ROM_LOAD16_BYTE( "quartet2.b7",  0x010001, 0x8000, CRC(0aa337bb) SHA1(f31f8f294fccd866eadebfafee067bfae44b3184) )
4306 	ROM_LOAD16_BYTE( "quartet2.b11", 0x020000, 0x8000, CRC(3a6a375d) SHA1(8ebea6b7f1208438b47e887b46cb569725c4042a) )
4307 	ROM_LOAD16_BYTE( "quartet2.b8",  0x020001, 0x8000, CRC(d87b2ca2) SHA1(58adf0900e41036b1b78a931ab94b30ce601909d) )
4308 
4309 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4310 	ROM_LOAD( "quartet2.c9",  0x00000, 0x08000, CRC(547a6058) SHA1(5248e974c8d12183c996b1fc8fda09e8a4bf0d2d) )
4311 	ROM_LOAD( "quartet2.c10", 0x08000, 0x08000, CRC(77ec901d) SHA1(b5961895473c16a8f4a111185cce48b05ab66885) )
4312 	ROM_LOAD( "quartet2.c11", 0x10000, 0x08000, CRC(7e348cce) SHA1(82bba65280faaf3280208c85caef48ec8baeade8) )
4313 
4314 	ROM_REGION( 0x040000, REGION_GFX2, 0 ) /* sprites */
4315 	ROM_LOAD16_BYTE( "epr7465.5c",  0x000001, 0x8000, CRC(8a1ab7d7) SHA1(a2f317538c70a1603b65d795223407cbaaf88524) )
4316 	ROM_LOAD16_BYTE( "epr-7469.2b", 0x000000, 0x8000, CRC(cb65ae4f) SHA1(3ee7b3b4cce113a6f394e8dfd317cdb6ffae64f7) )
4317 	ROM_LOAD16_BYTE( "epr7466.6c",  0x010001, 0x8000, CRC(b2d3f4f3) SHA1(65e654fde10bee4cb5eee8234d0babb78fe41cfb) )
4318 	ROM_LOAD16_BYTE( "epr-7470.3b", 0x010000, 0x8000, CRC(16fc67b1) SHA1(788fe2878c5c9faea43c2f166f32c22ee51c7d09) )
4319 	ROM_LOAD16_BYTE( "epr7467.7c",  0x020001, 0x8000, CRC(0af68de2) SHA1(81163baf3f0e45bac950a6d9c24b3a886db1509c) )
4320 	ROM_LOAD16_BYTE( "epr-7471.4b", 0x020000, 0x8000, CRC(13fad5ac) SHA1(75b480083fbb14cbef969126989bf9b2235fd31e) )
4321 	ROM_LOAD16_BYTE( "epr7468.8c",  0x030001, 0x8000, CRC(ddfd40c0) SHA1(6c12ad668cd0c82e7d7d46bfbdcee8b9d46ebd09) )
4322 	ROM_LOAD16_BYTE( "epr-7472.5b", 0x030000, 0x8000, CRC(8e2762ec) SHA1(872e19a6aab81d7a2472367d0e31dc1295da7182) )
4323 
4324 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4325 	ROM_LOAD( "epr-7464.1b", 0x0000, 0x8000, CRC(9f291306) SHA1(96a09542a863ccf2ded43e2df6f913722b3f97b1) )
4326 
4327 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
4328 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
4329 
4330 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
4331 	ROM_LOAD( "epr7473.1c", 0x00000, 0x8000, CRC(06ec75fa) SHA1(5f14bc887449122700c46ad22c0379a1682e0bdb) )
4332 	ROM_LOAD( "epr7475.2c", 0x08000, 0x8000, CRC(7abd1206) SHA1(54d52dc0b9c245cd2df647e714310a71b803cbcf) )
4333 	ROM_LOAD( "epr7474.3c", 0x10000, 0x8000, CRC(dbf853b8) SHA1(e82f497e1144f23f3233b5c45ef182bfc7923715) )
4334 	ROM_LOAD( "epr7476.4c", 0x18000, 0x8000, CRC(5eba655a) SHA1(6713ef12037cba3139d0f469c82bd90b44bae8ce) )
4335 ROM_END
4336 
4337 ROM_START( quartt2j )
4338 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4339 	ROM_LOAD16_BYTE( "epr-7728.43",  0x000000, 0x8000, CRC(56a8c88e) SHA1(33eaca5272f3588058952ca0b1fa298b89418e81) )
4340 	ROM_LOAD16_BYTE( "epr-7725.26",  0x000001, 0x8000, CRC(ee15fcc9) SHA1(70d9755145245537f6aeb0d39abeda7811749b8c) )
4341 	ROM_LOAD16_BYTE( "epr-7729.42",  0x010000, 0x8000, CRC(bc242123) SHA1(8e58dd89b70ba06d12437010a7375464647262f5) )
4342 	ROM_LOAD16_BYTE( "epr-7726.25",  0x010001, 0x8000, CRC(9d1c48e7) SHA1(e11a358895c7809cdf7241ff9317c2b162e4040e) )
4343 	ROM_LOAD16_BYTE( "quartet2.b11", 0x020000, 0x8000, CRC(3a6a375d) SHA1(8ebea6b7f1208438b47e887b46cb569725c4042a) )
4344 	ROM_LOAD16_BYTE( "quartet2.b8",  0x020001, 0x8000, CRC(d87b2ca2) SHA1(58adf0900e41036b1b78a931ab94b30ce601909d) )
4345 
4346 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4347 	ROM_LOAD( "quartet2.c9",  0x00000, 0x08000, CRC(547a6058) SHA1(5248e974c8d12183c996b1fc8fda09e8a4bf0d2d) )
4348 	ROM_LOAD( "quartet2.c10", 0x08000, 0x08000, CRC(77ec901d) SHA1(b5961895473c16a8f4a111185cce48b05ab66885) )
4349 	ROM_LOAD( "quartet2.c11", 0x10000, 0x08000, CRC(7e348cce) SHA1(82bba65280faaf3280208c85caef48ec8baeade8) )
4350 
4351 	ROM_REGION( 0x040000, REGION_GFX2, 0 ) /* sprites */
4352 	ROM_LOAD16_BYTE( "epr7465.5c",  0x000001, 0x8000, CRC(8a1ab7d7) SHA1(a2f317538c70a1603b65d795223407cbaaf88524) )
4353 	ROM_LOAD16_BYTE( "epr-7469.2b", 0x000000, 0x8000, CRC(cb65ae4f) SHA1(3ee7b3b4cce113a6f394e8dfd317cdb6ffae64f7) )
4354 	ROM_LOAD16_BYTE( "epr7466.6c",  0x010001, 0x8000, CRC(b2d3f4f3) SHA1(65e654fde10bee4cb5eee8234d0babb78fe41cfb) )
4355 	ROM_LOAD16_BYTE( "epr-7470.3b", 0x010000, 0x8000, CRC(16fc67b1) SHA1(788fe2878c5c9faea43c2f166f32c22ee51c7d09) )
4356 	ROM_LOAD16_BYTE( "epr7467.7c",  0x020001, 0x8000, CRC(0af68de2) SHA1(81163baf3f0e45bac950a6d9c24b3a886db1509c) )
4357 	ROM_LOAD16_BYTE( "epr-7471.4b", 0x020000, 0x8000, CRC(13fad5ac) SHA1(75b480083fbb14cbef969126989bf9b2235fd31e) )
4358 	ROM_LOAD16_BYTE( "epr7468.8c",  0x030001, 0x8000, CRC(ddfd40c0) SHA1(6c12ad668cd0c82e7d7d46bfbdcee8b9d46ebd09) )
4359 	ROM_LOAD16_BYTE( "epr-7472.5b", 0x030000, 0x8000, CRC(8e2762ec) SHA1(872e19a6aab81d7a2472367d0e31dc1295da7182) )
4360 
4361 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4362 	ROM_LOAD( "epr-7464.1b", 0x0000, 0x8000, CRC(9f291306) SHA1(96a09542a863ccf2ded43e2df6f913722b3f97b1) )
4363 
4364 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
4365 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
4366 
4367 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* 7751 sound data */
4368 	ROM_LOAD( "epr7473.1c", 0x00000, 0x8000, CRC(06ec75fa) SHA1(5f14bc887449122700c46ad22c0379a1682e0bdb) )
4369 	ROM_LOAD( "epr7475.2c", 0x08000, 0x8000, CRC(7abd1206) SHA1(54d52dc0b9c245cd2df647e714310a71b803cbcf) )
4370 	ROM_LOAD( "epr7474.3c", 0x10000, 0x8000, CRC(dbf853b8) SHA1(e82f497e1144f23f3233b5c45ef182bfc7923715) )
4371 	ROM_LOAD( "epr7476.4c", 0x18000, 0x8000, CRC(5eba655a) SHA1(6713ef12037cba3139d0f469c82bd90b44bae8ce) )
4372 ROM_END
4373 
4374 /***************************************************************************/
4375 
4376 #if 0
4377 static READ16_HANDLER( quartet2_skip_r ){
4378 	if (activecpu_get_pc()==0x8f6c) {cpu_spinuntil_int(); return 0xffff;}
4379 	return sys16_workingram[0x0800/2];
4380 }
4381 #endif
4382 
4383 static MEMORY_READ16_START( quartet2_readmem )
4384 	{ 0x000000, 0x02ffff, MRA16_ROM },
4385 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
4386 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
4387 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
4388 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
4389 	{ 0xc40002, 0xc40003, sys16_coinctrl_r },
4390 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
4391 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
4392 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
4393 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
4394 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
4395 //	{ 0xffc800, 0xffc801, quartet2_skip_r },
4396 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
4397 MEMORY_END
4398 
4399 static MEMORY_WRITE16_START( quartet2_writemem )
4400 	{ 0x000000, 0x02ffff, MWA16_ROM },
4401 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
4402 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
4403 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
4404 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
4405 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
4406 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
4407 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
4408 MEMORY_END
4409 
4410 /***************************************************************************/
4411 
4412 static void quartet2_update_proc( void ){
4413 	sys16_fg_scrollx = sys16_workingram[0x0d14/2] & 0x01ff;
4414 	sys16_bg_scrollx = sys16_workingram[0x0d18/2] & 0x01ff;
4415 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
4416 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
4417 
4418 //let's fix this properly
4419 //	if(((*(UINT16 *)(&sys16_extraram[4])) & 0xff) == 1)
4420 //		sys16_quartet_title_kludge=1;
4421 //	else
4422 		sys16_quartet_title_kludge=0;
4423 
4424 	set_fg_page1( sys16_workingram[0x0d1c/2] );
4425 	set_bg_page1( sys16_workingram[0x0d1e/2] );
4426 }
4427 
MACHINE_INIT(quartet2)4428 static MACHINE_INIT( quartet2 ){
4429 	sys16_textmode=1;
4430 	sys16_spritesystem = sys16_sprite_quartet2;
4431 	sys16_sprxoffset = -0xbc;
4432 	sys16_fgxoffset = sys16_bgxoffset = 7;
4433 
4434 	sys16_update_proc = quartet2_update_proc;
4435 }
4436 
DRIVER_INIT(quartet2)4437 static DRIVER_INIT( quartet2 ){
4438 	machine_init_sys16_onetime();
4439 }
4440 /***************************************************************************/
4441 
INPUT_PORTS_START(quartet2)4442 INPUT_PORTS_START( quartet2 )
4443 	SYS16_JOY1_SWAPPEDBUTTONS
4444 	SYS16_JOY2_SWAPPEDBUTTONS
4445 	SYS16_SERVICE
4446 	SYS16_COINAGE
4447 
4448 PORT_START	/* DSW1 */
4449 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
4450 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4451 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4452 	PORT_DIPNAME( 0x06, 0x00, "Credit Power" )
4453 	PORT_DIPSETTING(    0x04, "500" )
4454 	PORT_DIPSETTING(    0x06, "1000" )
4455 	PORT_DIPSETTING(    0x02, "2000" )
4456 	PORT_DIPSETTING(    0x00, "9000" )
4457 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Difficulty ) )
4458 	PORT_DIPSETTING(    0x10, "Easy" )
4459 	PORT_DIPSETTING(    0x18, "Normal" )
4460 	PORT_DIPSETTING(    0x08, "Hard" )
4461 	PORT_DIPSETTING(    0x00, "Hardest" )
4462 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
4463 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
4464 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4465 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
4466 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
4467 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4468 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
4469 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
4470 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4471 
4472 INPUT_PORTS_END
4473 
4474 /***************************************************************************/
4475 
4476 static MACHINE_DRIVER_START( quartet2 )
4477 
4478 	/* basic machine hardware */
4479 	MDRV_IMPORT_FROM(system16_7751)
4480 	MDRV_CPU_MODIFY("main")
4481 	MDRV_CPU_MEMORY(quartet2_readmem,quartet2_writemem)
4482 
4483 	MDRV_MACHINE_INIT(quartet2)
4484 MACHINE_DRIVER_END
4485 
4486 /***************************************************************************
4487 
4488    Riot City
4489 
4490 ***************************************************************************/
4491 // sys16B
4492 ROM_START( riotcity )
4493 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
4494 	ROM_LOAD16_BYTE( "epr14612.bin", 0x000000, 0x20000, CRC(a1b331ec) SHA1(49136ffed35ecc9e5e9a6ea7acbe534e6ccc9dd8) )
4495 	ROM_LOAD16_BYTE( "epr14610.bin", 0x000001, 0x20000, CRC(cd4f2c50) SHA1(c7a7e95901c664a72195c202b50a159db8d5981d) )
4496 	/* empty 0x40000 - 0x80000 */
4497 	ROM_LOAD16_BYTE( "epr14613.bin", 0x080000, 0x20000, CRC(0659df4c) SHA1(a24005ce354113732306c318de373c818400a9c8) )
4498 	ROM_LOAD16_BYTE( "epr14611.bin", 0x080001, 0x20000, CRC(d9e6f80b) SHA1(5ac56b3685bb121a4f07be3d81209807436e76ec) )
4499 
4500 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4501 	ROM_LOAD( "epr14616.bin", 0x00000, 0x20000, CRC(46d30368) SHA1(a791ef0e881345b6be0b28f32af17127edb5b590) ) /* plane 1 */
4502 	ROM_LOAD( "epr14625.bin", 0x20000, 0x20000, CRC(abfb80fe) SHA1(5f0d61d55f27e8f776b573e3193164c4d70ec12b) )
4503 	ROM_LOAD( "epr14617.bin", 0x40000, 0x20000, CRC(884e40f9) SHA1(f7eeae57544e7d95139588137605986732937d38) ) /* plane 2 */
4504 	ROM_LOAD( "epr14626.bin", 0x60000, 0x20000, CRC(4ef55846) SHA1(2f23474e7d1d8880dc251ada55c5fca2fc19256a) )
4505 	ROM_LOAD( "epr14618.bin", 0x80000, 0x20000, CRC(00eb260e) SHA1(f293180fb9a053c98022ef086bf4002563752f61) ) /* plane 3 */
4506 	ROM_LOAD( "epr14627.bin", 0xa0000, 0x20000, CRC(961e5f82) SHA1(dc88b511dff6cdebf96fe8bf388bf76098296b0f) )
4507 
4508 	ROM_REGION( 0x180000, REGION_GFX2, 0 ) /* sprites */
4509 	ROM_LOAD16_BYTE( "epr14619.bin",  0x000001, 0x040000, CRC(6f2b5ef7) SHA1(a0186fcc5b12c31b65b84355f88bcb10b1434135) )
4510 	ROM_LOAD16_BYTE( "epr14622.bin",  0x000000, 0x040000, CRC(7ca7e40d) SHA1(57d26cc1b530cb867b2a4779bb5108ac457b2154) )
4511 	ROM_LOAD16_BYTE( "epr14620.bin",  0x080001, 0x040000, CRC(66183333) SHA1(44bb9d57cd0308c0d7b6a10ba9bd95763ceea775) )
4512 	ROM_LOAD16_BYTE( "epr14623.bin",  0x080000, 0x040000, CRC(98630049) SHA1(216ae0b4a59f306b51bd50dfcbf831c3186a4d2a) )
4513 	ROM_LOAD16_BYTE( "epr14621.bin",  0x100001, 0x040000, CRC(c0f2820e) SHA1(ae433f6c5065ed495f5f57f50d6abe5ff98b041e) )
4514 	ROM_LOAD16_BYTE( "epr14624.bin",  0x100000, 0x040000, CRC(d1a68448) SHA1(7591f0476e899a11042d9b7e93f99b64de48b0ef) )
4515 
4516 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
4517 	ROM_LOAD( "epr14614.bin", 0x00000, 0x10000, CRC(c65cc69a) SHA1(28a75dd2085b8e1447fe4e6af210a54a6666fcb1) )
4518 	ROM_LOAD( "epr14615.bin", 0x10000, 0x20000, CRC(46653db1) SHA1(7a43d8742ee451d93bb5f1b0f4f261b274c3f0ef) )
4519 ROM_END
4520 
4521 /***************************************************************************/
4522 
4523 static READ16_HANDLER( riotcity_skip_r ){
4524 	if (activecpu_get_pc()==0x3ce) {cpu_spinuntil_int(); return 0;}
4525 	return sys16_workingram[0x2cde/2];
4526 }
4527 
MEMORY_READ16_START(riotcity_readmem)4528 static MEMORY_READ16_START( riotcity_readmem )
4529 	{ 0x000000, 0x0bffff, MRA16_ROM },
4530 	{ 0x3f0000, 0x3fffff, SYS16_MRA16_EXTRAM },
4531 	{ 0xf20000, 0xf20fff, SYS16_MRA16_EXTRAM3 },
4532 	{ 0xf40000, 0xf40fff, SYS16_MRA16_SPRITERAM },
4533 	{ 0xf60000, 0xf60fff, SYS16_MRA16_PALETTERAM },
4534 	{ 0xf81002, 0xf81003, input_port_0_word_r }, // player1
4535 	{ 0xf81006, 0xf81007, input_port_1_word_r }, // player2
4536 	{ 0xf81000, 0xf81001, input_port_2_word_r }, // service
4537 	{ 0xf82002, 0xf82003, input_port_3_word_r }, // dip1
4538 	{ 0xf82000, 0xf82001, input_port_4_word_r }, // dip2
4539 	{ 0xfa0000, 0xfaffff, SYS16_MRA16_TILERAM },
4540 	{ 0xfb0000, 0xfb0fff, SYS16_MRA16_TEXTRAM },
4541 	{ 0xffecde, 0xffecdf, riotcity_skip_r },
4542 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
4543 MEMORY_END
4544 
4545 static MEMORY_WRITE16_START( riotcity_writemem )
4546 	{ 0x000000, 0x0bffff, MWA16_ROM },
4547 	{ 0x3f0000, 0x3fffff, SYS16_MWA16_EXTRAM },
4548 	{ 0xf00006, 0xf00007, sound_command_w },
4549 	{ 0xf20000, 0xf20fff, SYS16_MWA16_EXTRAM3 },
4550 	{ 0xf40000, 0xf40fff, SYS16_MWA16_SPRITERAM },
4551 	{ 0xf60000, 0xf60fff, SYS16_MWA16_PALETTERAM },
4552 	{ 0xf80000, 0xf80001, sys16_coinctrl_w },
4553 	{ 0xfa0000, 0xfaffff, SYS16_MWA16_TILERAM },
4554 	{ 0xfb0000, 0xfb0fff, SYS16_MWA16_TEXTRAM },
4555 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
4556 MEMORY_END
4557 
4558 /***************************************************************************/
4559 
4560 static void riotcity_update_proc (void)
4561 {
4562 	sys16_fg_scrollx = sys16_textram[0x0e98/2];
4563 	sys16_bg_scrollx = sys16_textram[0x0e9a/2];
4564 	sys16_fg_scrolly = sys16_textram[0x0e90/2];
4565 	sys16_bg_scrolly = sys16_textram[0x0e92/2];
4566 
4567 	set_fg_page( sys16_textram[0x0e80/2] );
4568 	set_bg_page( sys16_textram[0x0e82/2] );
4569 
4570 	sys16_tile_bank1 = sys16_extraram3[0x0002/2] & 0xf;
4571 	sys16_tile_bank0 = sys16_extraram3[0x0000/2] & 0xf;
4572 }
4573 
MACHINE_INIT(riotcity)4574 static MACHINE_INIT( riotcity ){
4575 	static int bank[16] = {
4576 		0x0,0x1,0x4,0x5,
4577 		0x8,0x9,0x0,0x0,
4578 		0x2,0x3,0x6,0x7,
4579 		0xa,0xb,0x0,0x0
4580 	};
4581 	sys16_obj_bank = bank;
4582 	sys16_spritesystem = sys16_sprite_aurail;
4583 	sys16_spritelist_end=0x8000;
4584 	sys16_bg_priority_mode=1;
4585 
4586 	sys16_update_proc = riotcity_update_proc;
4587 }
4588 
DRIVER_INIT(riotcity)4589 static DRIVER_INIT( riotcity )
4590 {
4591 	machine_init_sys16_onetime();
4592 }
4593 
4594 /***************************************************************************/
4595 
INPUT_PORTS_START(riotcity)4596 INPUT_PORTS_START( riotcity )
4597 	SYS16_JOY1
4598 	SYS16_JOY2
4599 	SYS16_SERVICE
4600 	SYS16_COINAGE
4601 
4602 PORT_START	/* DSW1 */
4603 	PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" )
4604 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4605 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4606 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
4607 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
4608 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4609 	PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )
4610 	PORT_DIPSETTING(    0x00, "1" )
4611 	PORT_DIPSETTING(    0x0c, "2" )
4612 	PORT_DIPSETTING(    0x08, "3" )
4613 	PORT_DIPSETTING(    0x04, "4" )
4614 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )
4615 	PORT_DIPSETTING(    0x20, "Easy" )
4616 	PORT_DIPSETTING(    0x30, "Normal" )
4617 	PORT_DIPSETTING(    0x10, "Hard" )
4618 	PORT_DIPSETTING(    0x00, "Hardest" )
4619 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
4620 	PORT_DIPSETTING(    0x40, "Normal" )
4621 	PORT_DIPSETTING(    0x00, "Hard" )
4622 	PORT_DIPNAME( 0x80, 0x80, "Attack Button to Start" )
4623 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
4624 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4625 INPUT_PORTS_END
4626 
4627 /***************************************************************************/
4628 
4629 static MACHINE_DRIVER_START( riotcity )
4630 
4631 	/* basic machine hardware */
4632 	MDRV_IMPORT_FROM(system16_7759)
4633 	MDRV_CPU_MODIFY("main")
4634 	MDRV_CPU_MEMORY(riotcity_readmem,riotcity_writemem)
4635 
4636 	MDRV_MACHINE_INIT(riotcity)
4637 MACHINE_DRIVER_END
4638 
4639 /***************************************************************************/
4640 // sys16B
4641 ROM_START( sdi )
4642 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4643 	ROM_LOAD16_BYTE( "a4.rom", 0x000000, 0x8000, CRC(f2c41dd6) SHA1(7fdbf819e42c7af0efe3976ffd919ee142efe1bc) )
4644 	ROM_LOAD16_BYTE( "a1.rom", 0x000001, 0x8000, CRC(a9f816ef) SHA1(5ccab14b088d2249f83ff5e80591eccb4afb6e20) )
4645 	ROM_LOAD16_BYTE( "a5.rom", 0x010000, 0x8000, CRC(7952e27e) SHA1(caead75724a6744fc6fc7fbbc9894932a7a22eed) )
4646 	ROM_LOAD16_BYTE( "a2.rom", 0x010001, 0x8000, CRC(369af326) SHA1(d6517c38f3a386e8f23b058fe8fa0607918ba215) )
4647 	ROM_LOAD16_BYTE( "a6.rom", 0x020000, 0x8000, CRC(8ee2c287) SHA1(8ed98334dab51c2eab8e1ff0724abc1f819dc8c2) )
4648 	ROM_LOAD16_BYTE( "a3.rom", 0x020001, 0x8000, CRC(193e4231) SHA1(14fecfab010641b83e5b24d0e8003bc0de35e1c8) )
4649 
4650 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4651 	ROM_LOAD( "b9.rom",  0x00000, 0x10000, CRC(182b6301) SHA1(bb6f1174f82611c801d2b4b7d3596bf71619e8a1) )
4652 	ROM_LOAD( "b10.rom", 0x10000, 0x10000, CRC(8f7129a2) SHA1(094a4065597d8d51fb2232546df1de9043fea731) )
4653 	ROM_LOAD( "b11.rom", 0x20000, 0x10000, CRC(4409411f) SHA1(84fd7128e8440d96b0384ae3c391a59bd37ecf9d) )
4654 
4655 	ROM_REGION( 0x60000, REGION_GFX2, 0 ) /* sprites */
4656 	ROM_LOAD16_BYTE( "b1.rom", 0x00001, 0x010000, CRC(30e2c50a) SHA1(1fb9e69d4cb97fdcb0f98c2a7ede246aaa4ac382) )
4657 	ROM_LOAD16_BYTE( "b5.rom", 0x00000, 0x010000, CRC(794e3e8b) SHA1(91ca1cb9aabf99adc8426feed4494a992afb8c4a) )
4658 	ROM_LOAD16_BYTE( "b2.rom", 0x20001, 0x010000, CRC(6a8b3fd0) SHA1(a122d3cb0b3263714f026e57d85b0dbf6cb110d7) )
4659 	ROM_LOAD16_BYTE( "b6.rom", 0x20000, 0x010000, CRC(602da5d5) SHA1(d32cdde7d86c4561e7bfa547d7d7995ce9a43c24) )
4660 	ROM_LOAD16_BYTE( "b3.rom", 0x40001, 0x010000, CRC(b9de3aeb) SHA1(2f7a55a8377e831338a884f8962d6ab2757e8c9b) )
4661 	ROM_LOAD16_BYTE( "b7.rom", 0x40000, 0x010000, CRC(0a73a057) SHA1(7f31124c67541a245e069e5b6aac59935d99a9a9) )
4662 
4663 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4664 	ROM_LOAD( "a7.rom", 0x0000, 0x8000, CRC(793f9f7f) SHA1(9e4fde376db9e99a83eb2fc734c6721c122ba9af) )
4665 ROM_END
4666 
4667 // sys16A
4668 ROM_START( sdioj )
4669 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
4670 // Custom cpu 317-0027
4671 	ROM_LOAD16_BYTE( "epr10970.43", 0x000000, 0x8000, CRC(b8fa4a2c) SHA1(06b448bbee0a2b2809d9af7a2a22c5847343c079) )
4672 	ROM_LOAD16_BYTE( "epr10968.26", 0x000001, 0x8000, CRC(a3f97793) SHA1(0f924fae0d13b3387a0e5171482f6d413432ddb3) )
4673 	ROM_LOAD16_BYTE( "epr10971.42", 0x010000, 0x8000, CRC(c44a0328) SHA1(3736bb83e728bb0e15ea58bc2a6c2fe66a1a4885) )
4674 	ROM_LOAD16_BYTE( "epr10969.25", 0x010001, 0x8000, CRC(455d15bd) SHA1(be679ecb1687b0675614ad27973c20808ad53797) )
4675 	ROM_LOAD16_BYTE( "epr10755.41", 0x020000, 0x8000, CRC(405e3969) SHA1(6d8c3bd06d35c971f7db005dffa2e83cae1378f8) )
4676 	ROM_LOAD16_BYTE( "epr10752.24", 0x020001, 0x8000, CRC(77453740) SHA1(9032463e5e14c3c610c31e2eb6e2c962df9adf46) )
4677 
4678 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4679 	ROM_LOAD( "epr10756.95", 0x00000, 0x10000, CRC(44d8a506) SHA1(363d49dcb65ac0093f3ed3b259b1bc45f0291e9d) )
4680 	ROM_LOAD( "epr10757.94", 0x10000, 0x10000, CRC(497e1740) SHA1(95b166a9db46a27087e417c1b2cbb76bee2e64a7) )
4681 	ROM_LOAD( "epr10758.93", 0x20000, 0x10000, CRC(61d61486) SHA1(d48ff87216947b78903cd98a10436babdf8b75a0) )
4682 
4683 	ROM_REGION( 0x60000, REGION_GFX2, 0 ) /* sprites */
4684 	ROM_LOAD16_BYTE( "b1.rom", 0x00001, 0x10000, CRC(30e2c50a) SHA1(1fb9e69d4cb97fdcb0f98c2a7ede246aaa4ac382) )
4685 	ROM_LOAD16_BYTE( "b5.rom", 0x00000, 0x10000, CRC(794e3e8b) SHA1(91ca1cb9aabf99adc8426feed4494a992afb8c4a) )
4686 	ROM_LOAD16_BYTE( "b2.rom", 0x20001, 0x10000, CRC(6a8b3fd0) SHA1(a122d3cb0b3263714f026e57d85b0dbf6cb110d7) )
4687 	ROM_LOAD16_BYTE( "b6.rom", 0x20000, 0x10000, CRC(602da5d5) SHA1(d32cdde7d86c4561e7bfa547d7d7995ce9a43c24) )
4688 	ROM_LOAD16_BYTE( "b3.rom", 0x40001, 0x10000, CRC(b9de3aeb) SHA1(2f7a55a8377e831338a884f8962d6ab2757e8c9b) )
4689 	ROM_LOAD16_BYTE( "b7.rom", 0x40000, 0x10000, CRC(0a73a057) SHA1(7f31124c67541a245e069e5b6aac59935d99a9a9) )
4690 
4691 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
4692 	ROM_LOAD( "epr10759.12", 0x0000, 0x8000, CRC(d7f9649f) SHA1(ce4abe7dd7e33da048569d7817063345fab75ea7) )
4693 ROM_END
4694 
4695 
4696 /***************************************************************************/
4697 
4698 static READ16_HANDLER( io_p1mousex_r ){ return 0xff-input_port_5_r( offset ); }
READ16_HANDLER(io_p1mousey_r)4699 static READ16_HANDLER( io_p1mousey_r ){ return input_port_6_r( offset ); }
4700 
READ16_HANDLER(io_p2mousex_r)4701 static READ16_HANDLER( io_p2mousex_r ){ return input_port_7_r( offset ); }
READ16_HANDLER(io_p2mousey_r)4702 static READ16_HANDLER( io_p2mousey_r ){ return input_port_8_r( offset ); }
4703 
READ16_HANDLER(sdi_skip_r)4704 static READ16_HANDLER( sdi_skip_r ){
4705 	if (activecpu_get_pc()==0x5326) {cpu_spinuntil_int(); return 0xffff;}
4706 	return sys16_workingram[0x0400/2];
4707 }
4708 
MEMORY_READ16_START(sdi_readmem)4709 static MEMORY_READ16_START( sdi_readmem )
4710 	{ 0x000000, 0x02ffff, MRA16_ROM },
4711 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
4712 	{ 0x410000, 0x411fff, SYS16_MRA16_TEXTRAM }, //*
4713 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
4714 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
4715 	{ 0xc41004, 0xc41005, input_port_0_word_r }, // player1
4716 	{ 0xc41002, 0xc41003, input_port_1_word_r }, // player2
4717 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
4718 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
4719 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
4720 	{ 0xc42004, 0xc42005, input_port_4_word_r }, // dip2
4721 	{ 0xc43000, 0xc43001, io_p1mousex_r },
4722 	{ 0xc43004, 0xc43005, io_p1mousey_r },
4723 	{ 0xc43008, 0xc43009, io_p2mousex_r },
4724 	{ 0xc4300c, 0xc4300d, io_p2mousey_r },
4725 //	{ 0xc42000, 0xc42001, MRA16_NOP }, /* What is this? */
4726 	{ 0xc60000, 0xc60001, MRA16_NOP }, /* What is this? */
4727 	{ 0xffc400, 0xffc401, sdi_skip_r },
4728 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
4729 MEMORY_END
4730 
4731 static MEMORY_WRITE16_START( sdi_writemem )
4732 	{ 0x000000, 0x02ffff, MWA16_ROM },
4733 	{ 0x123406, 0x123407, sound_command_w },
4734 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
4735 	{ 0x410000, 0x411fff, SYS16_MWA16_TEXTRAM },
4736 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
4737 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
4738 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
4739 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
4740 MEMORY_END
4741 
4742 /***************************************************************************/
4743 
4744 static void sdi_update_proc( void ){
4745 	set_fg_page( sys16_textram[0x740] );
4746 	set_bg_page( sys16_textram[0x741] );
4747 	sys16_fg_scrolly = sys16_textram[0x748];
4748 	sys16_bg_scrolly = sys16_textram[0x749];
4749 	sys16_fg_scrollx = sys16_textram[0x74c];
4750 	sys16_bg_scrollx = sys16_textram[0x74d];
4751 }
4752 
MACHINE_INIT(sdi)4753 static MACHINE_INIT( sdi ){
4754 	static int bank[16] = {
4755 		0,0,0,0,
4756 		0,0,0,3,
4757 		0,0,0,2,
4758 		0,1,0,0
4759 	};
4760 	sys16_obj_bank = bank;
4761 
4762 	sys16_patch_code( 0x102f2, 0x00 );
4763 	sys16_patch_code( 0x102f3, 0x02 );
4764 
4765 	sys16_update_proc = sdi_update_proc;
4766 }
4767 
DRIVER_INIT(sdi)4768 static DRIVER_INIT( sdi ){
4769 	machine_init_sys16_onetime();
4770 	sys18_splittab_bg_x=&sys16_textram[0x0fc0];
4771 	sys16_rowscroll_scroll=0xff00;
4772 }
4773 
4774 /***************************************************************************/
4775 
INPUT_PORTS_START(sdi)4776 INPUT_PORTS_START( sdi )
4777 PORT_START	/* DSW1 */
4778 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN  | IPF_8WAY )
4779 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP    | IPF_8WAY )
4780 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY )
4781 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT  | IPF_8WAY )
4782 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN  | IPF_8WAY | IPF_PLAYER2)
4783 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP    | IPF_8WAY | IPF_PLAYER2)
4784 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_8WAY | IPF_PLAYER2)
4785 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT  | IPF_8WAY | IPF_PLAYER2)
4786 
4787 	SYS16_JOY2
4788 
4789 PORT_START /* Service */
4790 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
4791 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
4792 	PORT_BITX(0x04, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
4793 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
4794 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
4795 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
4796 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
4797 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2)
4798 
4799 	SYS16_COINAGE
4800 
4801 PORT_START	/* DSW1 */
4802 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) )
4803 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
4804 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4805 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
4806 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
4807 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4808 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
4809 	PORT_DIPSETTING(    0x08, "2" )
4810 	PORT_DIPSETTING(    0x0c, "3" )
4811 	PORT_DIPSETTING(    0x04, "4" )
4812 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "240?", IP_KEY_NONE, IP_JOY_NONE )
4813 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
4814 	PORT_DIPSETTING(    0x20, "Easy" )
4815 	PORT_DIPSETTING(    0x30, "Normal" )
4816 	PORT_DIPSETTING(    0x10, "Hard" )
4817 	PORT_DIPSETTING(    0x00, "Hardest" )
4818 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )
4819 	PORT_DIPSETTING(    0x80, "Every 50000" )
4820 	PORT_DIPSETTING(    0xc0, "50000" )
4821 	PORT_DIPSETTING(    0x40, "100000" )
4822 	PORT_DIPSETTING(    0x00, "None" )
4823 
4824 	PORT_START				/* fake analog X */
4825 	PORT_ANALOG( 0xff, 0x80, IPT_TRACKBALL_X, 75, 1, 0, 255 )
4826 
4827 	PORT_START				/* fake analog Y */
4828 	PORT_ANALOG( 0xff, 0x80, IPT_TRACKBALL_Y, 75, 1, 0, 255 )
4829 
4830 	PORT_START				/* fake analog X */
4831 	PORT_ANALOG( 0xff, 0x80, IPT_TRACKBALL_X | IPF_PLAYER2 , 75, 1, 0, 255 )
4832 
4833 	PORT_START				/* fake analog Y */
4834 	PORT_ANALOG( 0xff, 0x80, IPT_TRACKBALL_Y | IPF_PLAYER2, 75, 1, 0, 255 )
4835 
4836 INPUT_PORTS_END
4837 
4838 /***************************************************************************/
4839 
4840 static MACHINE_DRIVER_START( sdi )
4841 
4842 	/* basic machine hardware */
4843 	MDRV_IMPORT_FROM(system16)
4844 	MDRV_CPU_MODIFY("main")
4845 	MDRV_CPU_MEMORY(sdi_readmem,sdi_writemem)
4846 
4847 	MDRV_MACHINE_INIT(sdi)
4848 MACHINE_DRIVER_END
4849 
4850 /***************************************************************************/
4851 
4852 
4853 /***************************************************************************/
4854 // sys16B
4855 ROM_START( shinobi )
4856 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
4857 	ROM_LOAD16_BYTE( "shinobi.a4", 0x00000, 0x10000, CRC(b930399d) SHA1(955ff2948e1990463631b0bc5c7f5275384236cc) )
4858 	ROM_LOAD16_BYTE( "shinobi.a1", 0x00001, 0x10000, CRC(343f4c46) SHA1(2cf5d00462ad85ae9a2e16d59171c8ab85e10f49) )
4859 	ROM_LOAD16_BYTE( "epr11283",   0x20000, 0x10000, CRC(9d46e707) SHA1(37ab25b3b37365c9f45837bfb6ec80652691dd4c) )
4860 	ROM_LOAD16_BYTE( "epr11281",   0x20001, 0x10000, CRC(7961d07e) SHA1(38cbdab35f901532c0ad99ad0083513abd2ff182) )
4861 
4862 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4863 	ROM_LOAD( "shinobi.b9",  0x00000, 0x10000, CRC(5f62e163) SHA1(03f008745a1af84142ada647acf3601049f43ad5) )
4864 	ROM_LOAD( "shinobi.b10", 0x10000, 0x10000, CRC(75f8fbc9) SHA1(29072edcd583af60ec66b4c8bb82b179a3751edf) )
4865 	ROM_LOAD( "shinobi.b11", 0x20000, 0x10000, CRC(06508bb9) SHA1(57c9036123ec8e35d0275ab6eaff25a16aa203d4) )
4866 
4867 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
4868 	ROM_LOAD16_BYTE( "epr11290.10", 0x00001, 0x10000, CRC(611f413a) SHA1(180f83216e2dfbfd77b0fb3be83c3042954d12df) )
4869 	ROM_LOAD16_BYTE( "epr11294.11", 0x00000, 0x10000, CRC(5eb00fc1) SHA1(97e02eee74f61fabcad2a9e24f1868cafaac1d51) )
4870 	ROM_LOAD16_BYTE( "epr11291.17", 0x20001, 0x10000, CRC(3c0797c0) SHA1(df18c7987281bd9379026c6cf7f96f6ae49fd7f9) )
4871 	ROM_LOAD16_BYTE( "epr11295.18", 0x20000, 0x10000, CRC(25307ef8) SHA1(91ffbe436f80d583524ee113a8b7c0cf5d8ab286) )
4872 	ROM_LOAD16_BYTE( "epr11292.23", 0x40001, 0x10000, CRC(c29ac34e) SHA1(b5e9b8c3233a7d6797f91531a0d9123febcf1660) )
4873 	ROM_LOAD16_BYTE( "epr11296.24", 0x40000, 0x10000, CRC(04a437f8) SHA1(ea5fed64443236e3404fab243761e60e2e48c84c) )
4874 	ROM_LOAD16_BYTE( "epr11293.29", 0x60001, 0x10000, CRC(41f41063) SHA1(5cc461e9738dddf9eea06831fce3702d94674163) )
4875 	ROM_LOAD16_BYTE( "epr11297.30", 0x60000, 0x10000, CRC(b6e1fd72) SHA1(eb86e4bf880bd1a1d9bcab3f2f2e917bcaa06172) )
4876 
4877 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
4878 	ROM_LOAD( "shinobi.a7", 0x00000, 0x8000, CRC(2457a7cf) SHA1(ddfac640e442537acb015de8bb088659f5a217ee) )
4879 	ROM_LOAD( "shinobi.a8", 0x10000, 0x8000, CRC(c8df8460) SHA1(0aeb41a493df155edb5f600f53ec43b798927dff) )
4880 	ROM_LOAD( "shinobi.a9", 0x18000, 0x8000, CRC(e5a4cf30) SHA1(d1982da7a550c11ab2253f5d64ac6ab847da0a04) )
4881 ROM_END
4882 
4883 ROM_START( shinobib )
4884 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
4885 // Custom cpu 317-0049
4886 	ROM_LOAD16_BYTE( "epr11282", 0x00000, 0x10000, CRC(5f2e5524) SHA1(9e5fcabb95abbe6c8178e82f4971abdbc92bff73) )
4887 	ROM_LOAD16_BYTE( "epr11280", 0x00001, 0x10000, CRC(bdfe5c38) SHA1(65f537e38b74c66576d57c770d182dc13302cca6) )
4888 	ROM_LOAD16_BYTE( "epr11283", 0x20000, 0x10000, CRC(9d46e707) SHA1(37ab25b3b37365c9f45837bfb6ec80652691dd4c) )
4889 	ROM_LOAD16_BYTE( "epr11281", 0x20001, 0x10000, CRC(7961d07e) SHA1(38cbdab35f901532c0ad99ad0083513abd2ff182) )
4890 
4891 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
4892 	ROM_LOAD( "shinobi.b9",  0x00000, 0x10000, CRC(5f62e163) SHA1(03f008745a1af84142ada647acf3601049f43ad5) )
4893 	ROM_LOAD( "shinobi.b10", 0x10000, 0x10000, CRC(75f8fbc9) SHA1(29072edcd583af60ec66b4c8bb82b179a3751edf) )
4894 	ROM_LOAD( "shinobi.b11", 0x20000, 0x10000, CRC(06508bb9) SHA1(57c9036123ec8e35d0275ab6eaff25a16aa203d4) )
4895 
4896 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
4897 	ROM_LOAD16_BYTE( "epr11290.10", 0x00001, 0x10000, CRC(611f413a) SHA1(180f83216e2dfbfd77b0fb3be83c3042954d12df) )
4898 	ROM_LOAD16_BYTE( "epr11294.11", 0x10000, 0x10000, CRC(5eb00fc1) SHA1(97e02eee74f61fabcad2a9e24f1868cafaac1d51) )
4899 	ROM_LOAD16_BYTE( "epr11291.17", 0x20001, 0x10000, CRC(3c0797c0) SHA1(df18c7987281bd9379026c6cf7f96f6ae49fd7f9) )
4900 	ROM_LOAD16_BYTE( "epr11295.18", 0x30000, 0x10000, CRC(25307ef8) SHA1(91ffbe436f80d583524ee113a8b7c0cf5d8ab286) )
4901 	ROM_LOAD16_BYTE( "epr11292.23", 0x40001, 0x10000, CRC(c29ac34e) SHA1(b5e9b8c3233a7d6797f91531a0d9123febcf1660) )
4902 	ROM_LOAD16_BYTE( "epr11296.24", 0x50000, 0x10000, CRC(04a437f8) SHA1(ea5fed64443236e3404fab243761e60e2e48c84c) )
4903 	ROM_LOAD16_BYTE( "epr11293.29", 0x60001, 0x10000, CRC(41f41063) SHA1(5cc461e9738dddf9eea06831fce3702d94674163) )
4904 	ROM_LOAD16_BYTE( "epr11297.30", 0x70000, 0x10000, CRC(b6e1fd72) SHA1(eb86e4bf880bd1a1d9bcab3f2f2e917bcaa06172) )
4905 
4906 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
4907 	ROM_LOAD( "shinobi.a7", 0x00000, 0x8000, CRC(2457a7cf) SHA1(ddfac640e442537acb015de8bb088659f5a217ee) )
4908 	ROM_LOAD( "shinobi.a8", 0x10000, 0x8000, CRC(c8df8460) SHA1(0aeb41a493df155edb5f600f53ec43b798927dff) )
4909 	ROM_LOAD( "shinobi.a9", 0x18000, 0x8000, CRC(e5a4cf30) SHA1(d1982da7a550c11ab2253f5d64ac6ab847da0a04) )
4910 
4911 ROM_END
4912 
4913 /***************************************************************************/
4914 
4915 static READ16_HANDLER( shinobi_skip_r ){
4916 	if (activecpu_get_pc()==0x32e0) {cpu_spinuntil_int(); return 1<<8;}
4917 	return sys16_workingram[0x301c/2];
4918 }
4919 
MEMORY_READ16_START(shinobi_readmem)4920 static MEMORY_READ16_START( shinobi_readmem )
4921 	{ 0x000000, 0x03ffff, MRA16_ROM },
4922 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
4923 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
4924 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
4925 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
4926 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
4927 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
4928 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
4929 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
4930 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
4931 	{ 0xc43000, 0xc43001, MRA16_NOP },
4932 	{ 0xfff01c, 0xfff01d, shinobi_skip_r },
4933 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
4934 MEMORY_END
4935 
4936 static MEMORY_WRITE16_START( shinobi_writemem )
4937 	{ 0x000000, 0x03ffff, MWA16_ROM },
4938 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
4939 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
4940 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
4941 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
4942 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
4943 	{ 0xc43000, 0xc43001, MWA16_NOP },
4944 	{ 0xfe0006, 0xfe0007, sound_command_w },
4945 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
4946 MEMORY_END
4947 
4948 /***************************************************************************/
4949 
4950 static void shinobi_update_proc( void ){
4951 	set_fg_page( sys16_textram[0x740] );
4952 	set_bg_page( sys16_textram[0x741] );
4953 	sys16_fg_scrolly = sys16_textram[0x748];
4954 	sys16_bg_scrolly = sys16_textram[0x749];
4955 	sys16_fg_scrollx = sys16_textram[0x74c];
4956 	sys16_bg_scrollx = sys16_textram[0x74d];
4957 }
4958 
MACHINE_INIT(shinobi)4959 static MACHINE_INIT( shinobi ){
4960 	static int bank[16] = {
4961 		0,0,0,0,
4962 		0,0,0,3,
4963 		0,0,0,2,
4964 		0,1,0,0
4965 	};
4966 	sys16_obj_bank = bank;
4967 	sys16_dactype = 1;
4968 	sys16_update_proc = shinobi_update_proc;
4969 }
4970 
DRIVER_INIT(shinobi)4971 static DRIVER_INIT( shinobi )
4972 {
4973 	machine_init_sys16_onetime();
4974 }
4975 
4976 /***************************************************************************/
4977 
INPUT_PORTS_START(shinobi)4978 INPUT_PORTS_START( shinobi )
4979 	SYS16_JOY1
4980 	SYS16_JOY2
4981 	SYS16_SERVICE
4982 	SYS16_COINAGE
4983 
4984 PORT_START
4985 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
4986 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
4987 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
4988 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
4989 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
4990 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
4991 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
4992 	PORT_DIPSETTING(    0x08, "2" )
4993 	PORT_DIPSETTING(    0x0c, "3" )
4994 	PORT_DIPSETTING(    0x04, "5" )
4995 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "240", IP_KEY_NONE, IP_JOY_NONE )
4996 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
4997 	PORT_DIPSETTING(    0x20, "Easy" )
4998 	PORT_DIPSETTING(    0x30, "Normal" )
4999 	PORT_DIPSETTING(    0x10, "Hard" )
5000 	PORT_DIPSETTING(    0x00, "Hardest" )
5001 	PORT_DIPNAME( 0x40, 0x40, "Enemy's Bullet Speed" )
5002 	PORT_DIPSETTING(    0x40, "Slow" )
5003 	PORT_DIPSETTING(    0x00, "Fast" )
5004 	PORT_DIPNAME( 0x80, 0x80, "Language" )
5005 	PORT_DIPSETTING(    0x80, "Japanese" )
5006 	PORT_DIPSETTING(    0x00, "English" )
5007 
5008 INPUT_PORTS_END
5009 
5010 /***************************************************************************/
5011 
5012 static MACHINE_DRIVER_START( shinobi )
5013 
5014 	/* basic machine hardware */
5015 	MDRV_IMPORT_FROM(system16_7759)
5016 	MDRV_CPU_MODIFY("main")
5017 	MDRV_CPU_MEMORY(shinobi_readmem,shinobi_writemem)
5018 
5019 	MDRV_MACHINE_INIT(shinobi)
5020 MACHINE_DRIVER_END
5021 
5022 /***************************************************************************/
5023 // sys16A
5024 ROM_START( shinobia )
5025 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
5026 // custom cpu 317-0050
5027 	ROM_LOAD16_BYTE( "epr11262.42", 0x000000, 0x10000, CRC(d4b8df12) SHA1(64bfa2dd8a3d99728d9eeb114887272d9590d0b8) )
5028 	ROM_LOAD16_BYTE( "epr11260.27", 0x000001, 0x10000, CRC(2835c95d) SHA1(b5b42af265d3a16183e02d58b053ec2894072679) )
5029 	ROM_LOAD16_BYTE( "epr11263.43", 0x020000, 0x10000, CRC(a2a620bd) SHA1(f8b135ce14d6c5eac5e40ddfd5ad2f1e6f2bc7a6) )
5030 	ROM_LOAD16_BYTE( "epr11261.25", 0x020001, 0x10000, CRC(a3ceda52) SHA1(97a1c52a162fb1d43b3f8f16613b70ce582a8d26) )
5031 
5032 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5033 	ROM_LOAD( "epr11264.95", 0x00000, 0x10000, CRC(46627e7d) SHA1(66bb5b22a2100e7b9df303007a837bc2d52cf7ba) )
5034 	ROM_LOAD( "epr11265.94", 0x10000, 0x10000, CRC(87d0f321) SHA1(885b38eaff2dcaeab4eeaa20cc8a2885d520abd6) )
5035 	ROM_LOAD( "epr11266.93", 0x20000, 0x10000, CRC(efb4af87) SHA1(0b8a905023e1bc808fd2b1c3cfa3778cde79e659) )
5036 
5037 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
5038 	ROM_LOAD16_BYTE( "epr11290.10", 0x00001, 0x10000, CRC(611f413a) SHA1(180f83216e2dfbfd77b0fb3be83c3042954d12df) )
5039 	ROM_LOAD16_BYTE( "epr11294.11", 0x00000, 0x10000, CRC(5eb00fc1) SHA1(97e02eee74f61fabcad2a9e24f1868cafaac1d51) )
5040 	ROM_LOAD16_BYTE( "epr11291.17", 0x20001, 0x10000, CRC(3c0797c0) SHA1(df18c7987281bd9379026c6cf7f96f6ae49fd7f9) )
5041 	ROM_LOAD16_BYTE( "epr11295.18", 0x20000, 0x10000, CRC(25307ef8) SHA1(91ffbe436f80d583524ee113a8b7c0cf5d8ab286) )
5042 	ROM_LOAD16_BYTE( "epr11292.23", 0x40001, 0x10000, CRC(c29ac34e) SHA1(b5e9b8c3233a7d6797f91531a0d9123febcf1660) )
5043 	ROM_LOAD16_BYTE( "epr11296.24", 0x40000, 0x10000, CRC(04a437f8) SHA1(ea5fed64443236e3404fab243761e60e2e48c84c) )
5044 	ROM_LOAD16_BYTE( "epr11293.29", 0x60001, 0x10000, CRC(41f41063) SHA1(5cc461e9738dddf9eea06831fce3702d94674163) )
5045 	ROM_LOAD16_BYTE( "epr11297.30", 0x60000, 0x10000, CRC(b6e1fd72) SHA1(eb86e4bf880bd1a1d9bcab3f2f2e917bcaa06172) )
5046 
5047 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
5048 	ROM_LOAD( "epr11267.12", 0x0000, 0x8000, CRC(dd50b745) SHA1(52e1977569d3713ad864d607170c9a61cd059a65) )
5049 
5050 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
5051 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
5052 
5053 	ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* 7751 sound data */
5054 	ROM_LOAD( "epr11268.1", 0x0000, 0x8000, CRC(6d7966da) SHA1(90f55a99f784c21d7c135e630f4e8b1d4d043d66) )
5055 ROM_END
5056 
5057 
5058 ROM_START( shinobl )
5059 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
5060 // Star Bootleg
5061 	ROM_LOAD16_BYTE( "b3",          0x000000, 0x10000, CRC(38e59646) SHA1(6a13015a93260ab99811b95950bb122eade01c27) )
5062 	ROM_LOAD16_BYTE( "b1",          0x000001, 0x10000, CRC(8529d192) SHA1(202b912d20a2d82abe055b4a5e8c509ab7d69ff8) )
5063 	ROM_LOAD16_BYTE( "epr11263.43", 0x020000, 0x10000, CRC(a2a620bd) SHA1(f8b135ce14d6c5eac5e40ddfd5ad2f1e6f2bc7a6) )
5064 	ROM_LOAD16_BYTE( "epr11261.25", 0x020001, 0x10000, CRC(a3ceda52) SHA1(97a1c52a162fb1d43b3f8f16613b70ce582a8d26) )
5065 
5066 // Beta Bootleg
5067 //	ROM_LOAD16_BYTE( "4",           0x000000, 0x10000, CRC(c178a39c) )
5068 //	ROM_LOAD16_BYTE( "2",           0x000001, 0x10000, CRC(5ad8ebf2) )
5069 //	ROM_LOAD16_BYTE( "epr11263.43", 0x020000, 0x10000, CRC(a2a620bd) SHA1(f8b135ce14d6c5eac5e40ddfd5ad2f1e6f2bc7a6) )
5070 //	ROM_LOAD16_BYTE( "epr11261.25", 0x020001, 0x10000, CRC(a3ceda52) SHA1(97a1c52a162fb1d43b3f8f16613b70ce582a8d26) )
5071 
5072 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5073 	ROM_LOAD( "epr11264.95", 0x00000, 0x10000, CRC(46627e7d) SHA1(66bb5b22a2100e7b9df303007a837bc2d52cf7ba) )
5074 	ROM_LOAD( "epr11265.94", 0x10000, 0x10000, CRC(87d0f321) SHA1(885b38eaff2dcaeab4eeaa20cc8a2885d520abd6) )
5075 	ROM_LOAD( "epr11266.93", 0x20000, 0x10000, CRC(efb4af87) SHA1(0b8a905023e1bc808fd2b1c3cfa3778cde79e659) )
5076 
5077 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
5078 	ROM_LOAD16_BYTE( "epr11290.10", 0x00001, 0x10000, CRC(611f413a) SHA1(180f83216e2dfbfd77b0fb3be83c3042954d12df) )
5079 	ROM_LOAD16_BYTE( "epr11294.11", 0x00000, 0x10000, CRC(5eb00fc1) SHA1(97e02eee74f61fabcad2a9e24f1868cafaac1d51) )
5080 	ROM_LOAD16_BYTE( "epr11291.17", 0x20001, 0x10000, CRC(3c0797c0) SHA1(df18c7987281bd9379026c6cf7f96f6ae49fd7f9) )
5081 	ROM_LOAD16_BYTE( "epr11295.18", 0x20000, 0x10000, CRC(25307ef8) SHA1(91ffbe436f80d583524ee113a8b7c0cf5d8ab286) )
5082 	ROM_LOAD16_BYTE( "epr11292.23", 0x40001, 0x10000, CRC(c29ac34e) SHA1(b5e9b8c3233a7d6797f91531a0d9123febcf1660) )
5083 	ROM_LOAD16_BYTE( "epr11296.24", 0x40000, 0x10000, CRC(04a437f8) SHA1(ea5fed64443236e3404fab243761e60e2e48c84c) )
5084 	ROM_LOAD16_BYTE( "epr11293.29", 0x60001, 0x10000, CRC(41f41063) SHA1(5cc461e9738dddf9eea06831fce3702d94674163) )
5085 //	ROM_LOAD16_BYTE( "epr11297.30", 0x60000, 0x10000, CRC(b6e1fd72) SHA1(eb86e4bf880bd1a1d9bcab3f2f2e917bcaa06172) )
5086 	ROM_LOAD16_BYTE( "b17",         0x60000, 0x10000, CRC(0315cf42) SHA1(2d129171aece883cb9c2805f894b3867ec98332b) )	// Beta bootleg uses the rom above.
5087 
5088 	ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* sound CPU */
5089 	ROM_LOAD( "epr11267.12", 0x0000, 0x8000, CRC(dd50b745) SHA1(52e1977569d3713ad864d607170c9a61cd059a65) )
5090 
5091 	ROM_REGION( 0x1000, REGION_CPU3, 0 )      /* 4k for 7751 onboard ROM */
5092 	ROM_LOAD( "7751.bin",     0x0000, 0x0400, CRC(6a9534fc) SHA1(67ad94674db5c2aab75785668f610f6f4eccd158) ) /* 7751 - U34 */
5093 
5094 	ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* 7751 sound data */
5095 	ROM_LOAD( "epr11268.1", 0x0000, 0x8000, CRC(6d7966da) SHA1(90f55a99f784c21d7c135e630f4e8b1d4d043d66) )
5096 ROM_END
5097 
5098 /***************************************************************************/
5099 
5100 static MEMORY_READ16_START( shinobl_readmem )
5101 	{ 0x000000, 0x03ffff, MRA16_ROM },
5102 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5103 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5104 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
5105 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
5106 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
5107 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
5108 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
5109 	{ 0xc42000, 0xc42001, input_port_3_word_r }, // dip1
5110 	{ 0xc42002, 0xc42003, input_port_4_word_r }, // dip2
5111 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
5112 MEMORY_END
5113 
5114 static MEMORY_WRITE16_START( shinobl_writemem )
5115 	{ 0x000000, 0x03ffff, MWA16_ROM },
5116 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5117 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5118 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
5119 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
5120 	{ 0xc40000, 0xc40001, sound_command_nmi_w },
5121 	{ 0xc40002, 0xc40003, sys16_3d_coinctrl_w },
5122 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
5123 MEMORY_END
5124 
5125 /***************************************************************************/
5126 
5127 static void shinobl_update_proc( void ){
5128 	set_bg_page( sys16_textram[0x74e] );
5129 	set_fg_page( sys16_textram[0x74f] );
5130 	sys16_fg_scrolly = sys16_textram[0x792] & 0x00ff;
5131 	sys16_bg_scrolly = sys16_textram[0x793] & 0x01ff;
5132 	sys16_fg_scrollx = sys16_textram[0x7fc] & 0x01ff;
5133 	sys16_bg_scrollx = sys16_textram[0x7fd] & 0x01ff;
5134 }
5135 
MACHINE_INIT(shinobl)5136 static MACHINE_INIT( shinobl ){
5137 	static int bank[] = {
5138 		0,2,4,6,
5139 		1,3,5,7
5140 	};
5141 	sys16_obj_bank = bank;
5142 	sys16_textmode=1;
5143 	sys16_spritesystem = sys16_sprite_quartet2;
5144 	sys16_sprxoffset = -0xbc;
5145 	sys16_fgxoffset = sys16_bgxoffset = 7;
5146 	sys16_tilebank_switch=0x2000;
5147 
5148 	sys16_dactype = 1;
5149 	sys16_update_proc = shinobl_update_proc;
5150 }
5151 
5152 
5153 
5154 /***************************************************************************/
5155 
5156 static MACHINE_DRIVER_START( shinobl )
5157 
5158 	/* basic machine hardware */
MDRV_IMPORT_FROM(system16_7751)5159 	MDRV_IMPORT_FROM(system16_7751)
5160 	MDRV_CPU_MODIFY("main")
5161 	MDRV_CPU_MEMORY(shinobl_readmem,shinobl_writemem)
5162 
5163 	MDRV_MACHINE_INIT(shinobl)
5164 MACHINE_DRIVER_END
5165 
5166 /***************************************************************************/
5167 
5168 // sys16A custom
5169 ROM_START( tetris )
5170 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
5171 	ROM_LOAD16_BYTE( "epr12201.rom", 0x000000, 0x8000, CRC(338e9b51) SHA1(f56a1124c963d4ad72a806b26f9aa906aaa37d2b) )
5172 	ROM_LOAD16_BYTE( "epr12200.rom", 0x000001, 0x8000, CRC(fb058779) SHA1(0045985ea943ebc7e44bd95127c5e5212c2821e8) )
5173 
5174 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5175 	ROM_LOAD( "epr12202.rom", 0x00000, 0x10000, CRC(2f7da741) SHA1(51a685673b4a57a13818eca65d122230f20bd9a0) )
5176 	ROM_LOAD( "epr12203.rom", 0x10000, 0x10000, CRC(a6e58ec5) SHA1(5a6c43c989768270e0ab61cfaa5ef86d4607fe20) )
5177 	ROM_LOAD( "epr12204.rom", 0x20000, 0x10000, CRC(0ae98e23) SHA1(f067b81b85f9e03a6373c7c53ff52d5395b8a985) )
5178 
5179 	ROM_REGION( 0x10000, REGION_GFX2, 0 ) /* sprites */
5180 	ROM_LOAD16_BYTE( "epr12169.rom", 0x0001, 0x8000, CRC(dacc6165) SHA1(87b1a7643e3630ff73b2b117752496e1ea5da23d) )
5181 	ROM_LOAD16_BYTE( "epr12170.rom", 0x0000, 0x8000, CRC(87354e42) SHA1(e7fd55aee59b51d82cb9b619fbb815ad6839560c) )
5182 
5183 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
5184 	ROM_LOAD( "epr12205.rom", 0x0000, 0x8000, CRC(6695dc99) SHA1(08123aa24c302bc9243329384bd9c2545a4d50c3) )
5185 ROM_END
5186 
5187 // sys16B
5188 ROM_START( tetrisbl )
5189 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
5190 	ROM_LOAD16_BYTE( "rom2.bin", 0x000000, 0x10000, CRC(4d165c38) SHA1(04706b1977ae18bd09bafaf8ea65f8e5f32e04b8) )
5191 	ROM_LOAD16_BYTE( "rom1.bin", 0x000001, 0x10000, CRC(1e912131) SHA1(8f53504ac08942ee340489d84eab825e654d0a2c) )
5192 
5193 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5194 	ROM_LOAD( "scr01.rom", 0x00000, 0x10000, CRC(62640221) SHA1(c311d3847a981d0e1609f9b3d80481565d32d78c) )
5195 	ROM_LOAD( "scr02.rom", 0x10000, 0x10000, CRC(9abd183b) SHA1(621b017cb34973f9227be383e26b5cd41aea9422) )
5196 	ROM_LOAD( "scr03.rom", 0x20000, 0x10000, CRC(2495fd4e) SHA1(2db94ead9223a67238a97e724668076fc43e5534) )
5197 
5198 	ROM_REGION( 0x020000, REGION_GFX2, 0 ) /* sprites */
5199 	ROM_LOAD16_BYTE( "obj0-o.rom", 0x00001, 0x10000, CRC(2fb38880) SHA1(0e1b601bbda78d1887951c1f7e752531c281bc83) )
5200 	ROM_LOAD16_BYTE( "obj0-e.rom", 0x00000, 0x10000, CRC(d6a02cba) SHA1(d80000f92e754e89c6ca7b7273feab448fc9a061) )
5201 
5202 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
5203 	ROM_LOAD( "s-prog.rom", 0x0000, 0x8000, CRC(bd9ba01b) SHA1(fafa7dc36cc057a50ae4cdf7a35f3594292336f4) )
5204 ROM_END
5205 
5206 // sys16B
5207 ROM_START( tetrisa )
5208 	ROM_REGION( 0x020000, REGION_CPU1, 0 ) /* 68000 code */
5209 // Custom Cpu 317-0092
5210 	ROM_LOAD16_BYTE( "tetris.a7", 0x000000, 0x10000, CRC(9ce15ac9) SHA1(0fdbd3ca37e4c0efa7c66415714bfc10637ced6c) )
5211 	ROM_LOAD16_BYTE( "tetris.a5", 0x000001, 0x10000, CRC(98d590ca) SHA1(4d18409c0b5734d0adcea5646d13f65b687dd05d) )
5212 
5213 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5214 	ROM_LOAD( "scr01.rom", 0x00000, 0x10000, CRC(62640221) SHA1(c311d3847a981d0e1609f9b3d80481565d32d78c) )
5215 	ROM_LOAD( "scr02.rom", 0x10000, 0x10000, CRC(9abd183b) SHA1(621b017cb34973f9227be383e26b5cd41aea9422) )
5216 	ROM_LOAD( "scr03.rom", 0x20000, 0x10000, CRC(2495fd4e) SHA1(2db94ead9223a67238a97e724668076fc43e5534) )
5217 
5218 	ROM_REGION( 0x020000, REGION_GFX2, 0 ) /* sprites */
5219 	ROM_LOAD16_BYTE( "obj0-o.rom", 0x00001, 0x10000, CRC(2fb38880) SHA1(0e1b601bbda78d1887951c1f7e752531c281bc83) )
5220 	ROM_LOAD16_BYTE( "obj0-e.rom", 0x00000, 0x10000, CRC(d6a02cba) SHA1(d80000f92e754e89c6ca7b7273feab448fc9a061) )
5221 
5222 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
5223 	ROM_LOAD( "s-prog.rom", 0x0000, 0x8000, CRC(bd9ba01b) SHA1(fafa7dc36cc057a50ae4cdf7a35f3594292336f4) )
5224 ROM_END
5225 
5226 /***************************************************************************/
5227 
5228 static MEMORY_READ16_START( tetris_readmem )
5229 	{ 0x000000, 0x01ffff, MRA16_ROM },
5230 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5231 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5232 	{ 0x418000, 0x41803f, SYS16_MRA16_EXTRAM2 },
5233 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
5234 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
5235 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
5236 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
5237 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
5238 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
5239 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
5240 	{ 0xc80000, 0xc80001, MRA16_NOP },
5241 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
5242 MEMORY_END
5243 
5244 static MEMORY_WRITE16_START( tetris_writemem )
5245 	{ 0x000000, 0x01ffff, MWA16_ROM },
5246 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5247 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5248 	{ 0x418000, 0x41803f, SYS16_MWA16_EXTRAM2 },
5249 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
5250 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
5251 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
5252 	{ 0xc42006, 0xc42007, sound_command_w },
5253 	{ 0xc43034, 0xc43035, MWA16_NOP },
5254 	{ 0xc80000, 0xc80001, MWA16_NOP },
5255 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
5256 MEMORY_END
5257 
5258 /***************************************************************************/
5259 
5260 static void tetris_update_proc( void ){
5261 	sys16_fg_scrolly = sys16_textram[0x748];
5262 	sys16_bg_scrolly = sys16_textram[0x749];
5263 	sys16_fg_scrollx = sys16_textram[0x74c];
5264 	sys16_bg_scrollx = sys16_textram[0x74d];
5265 
5266 	set_fg_page( sys16_extraram2[0x38/2] );
5267 	set_bg_page( sys16_extraram2[0x28/2] );
5268 }
5269 
MACHINE_INIT(tetris)5270 static MACHINE_INIT( tetris ){
5271 	sys16_patch_code( 0xba6, 0x4e );
5272 	sys16_patch_code( 0xba7, 0x71 );
5273 
5274 	sys16_sprxoffset = -0x40;
5275 	sys16_update_proc = tetris_update_proc;
5276 }
5277 
DRIVER_INIT(tetris)5278 static DRIVER_INIT( tetris )
5279 {
5280 	machine_init_sys16_onetime();
5281 }
5282 
DRIVER_INIT(tetrisbl)5283 static DRIVER_INIT( tetrisbl )
5284 {
5285 	machine_init_sys16_onetime();
5286 }
5287 /***************************************************************************/
5288 
INPUT_PORTS_START(tetris)5289 INPUT_PORTS_START( tetris )
5290 	SYS16_JOY1
5291 	SYS16_JOY2
5292 	SYS16_SERVICE
5293 	SYS16_COINAGE /* unconfirmed */
5294 
5295 PORT_START	/* DSW1 */
5296 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
5297 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
5298 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5299 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
5300 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
5301 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5302 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )	// from the code it looks like some kind of difficulty
5303 	PORT_DIPSETTING(    0x0c, "A" )					// level, but all 4 levels points to the same place
5304 	PORT_DIPSETTING(    0x08, "B" )					// so it doesn't actually change anything!!
5305 	PORT_DIPSETTING(    0x04, "C" )
5306 	PORT_DIPSETTING(    0x00, "D" )
5307 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
5308 	PORT_DIPSETTING(    0x20, "Easy" )
5309 	PORT_DIPSETTING(    0x30, "Normal" )
5310 	PORT_DIPSETTING(    0x10, "Hard" )
5311 	PORT_DIPSETTING(    0x00, "Hardest" )
5312 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
5313 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
5314 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5315 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
5316 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
5317 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5318 INPUT_PORTS_END
5319 
5320 /***************************************************************************/
5321 
5322 static MACHINE_DRIVER_START( tetris )
5323 
5324 	/* basic machine hardware */
5325 	MDRV_IMPORT_FROM(system16)
5326 	MDRV_CPU_MODIFY("main")
5327 	MDRV_CPU_MEMORY(tetris_readmem,tetris_writemem)
5328 
5329 	MDRV_MACHINE_INIT(tetris)
5330 MACHINE_DRIVER_END
5331 
5332 /***************************************************************************/
5333 // sys16B
5334 ROM_START( timscanr )
5335 	ROM_REGION( 0x030000, REGION_CPU1, 0 ) /* 68000 code */
5336 	ROM_LOAD16_BYTE( "ts10853.bin", 0x00000, 0x8000, CRC(24d7c5fb) SHA1(b1796e77cf968f9bdae7a47c5c02b93aaec10ade) )
5337 	ROM_LOAD16_BYTE( "ts10850.bin", 0x00001, 0x8000, CRC(f1575732) SHA1(d0c8fc42171c436cc1cd55a33295bd019a474d47) )
5338 	ROM_LOAD16_BYTE( "ts10854.bin", 0x10000, 0x8000, CRC(82d0b237) SHA1(c1defda4785014ccd7164f49f53f77e36fcb3a8d) )
5339 	ROM_LOAD16_BYTE( "ts10851.bin", 0x10001, 0x8000, CRC(f5ce271b) SHA1(8b4f1178c87e657d8d5805d908100f0d5fb030da) )
5340 	ROM_LOAD16_BYTE( "ts10855.bin", 0x20000, 0x8000, CRC(63e95a53) SHA1(60c42bbb1c316deb493a237990a7938551f8bc2e) )
5341 	ROM_LOAD16_BYTE( "ts10852.bin", 0x20001, 0x8000, CRC(7cd1382b) SHA1(6263cc863cbf0ef66a7ba8cc1c98212917d7c131) )
5342 
5343 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5344 	ROM_LOAD( "timscanr.b9",  0x00000, 0x8000, CRC(07dccc37) SHA1(544cc6a3b3ef64727ecf5098b84ade2dd5330614) )
5345 	ROM_LOAD( "timscanr.b10", 0x08000, 0x8000, CRC(84fb9a3a) SHA1(efde54cc9582f68e58cae05f717a4fc8f620c0fc) )
5346 	ROM_LOAD( "timscanr.b11", 0x10000, 0x8000, CRC(c8694bc0) SHA1(e48fc349ef454ded86141937f70b006e64da6b6b) )
5347 
5348 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites */
5349 	ROM_LOAD16_BYTE( "ts10548.bin", 0x00001, 0x8000, CRC(aa150735) SHA1(b6e6ff9229c641e196fc7a0a2cf7aa362f554676) )
5350 	ROM_LOAD16_BYTE( "ts10552.bin", 0x00000, 0x8000, CRC(6fcbb9f7) SHA1(0a0fab930477d8b79e500263bbc80d3bf73778f8) )
5351 	ROM_LOAD16_BYTE( "ts10549.bin", 0x10001, 0x8000, CRC(2f59f067) SHA1(1fb64cce2f98ddcb5ecb662e63ea636a8da08bcd) )
5352 	ROM_LOAD16_BYTE( "ts10553.bin", 0x10000, 0x8000, CRC(8a220a9f) SHA1(c17547d85721fa19e5f445b5be30b3fbf5e8cc6e) )
5353 	ROM_LOAD16_BYTE( "ts10550.bin", 0x20001, 0x8000, CRC(f05069ff) SHA1(bd95761036c2fad8ddf4e169d899b173822ee4b0) )
5354 	ROM_LOAD16_BYTE( "ts10554.bin", 0x20000, 0x8000, CRC(dc64f809) SHA1(ea85eefa98ec55e9e872940821a959ff4eb1bd1c) )
5355 	ROM_LOAD16_BYTE( "ts10551.bin", 0x30001, 0x8000, CRC(435d811f) SHA1(b28eb09620113cd7578387c4d96029f2acb8ec06) )
5356 	ROM_LOAD16_BYTE( "ts10555.bin", 0x30000, 0x8000, CRC(2143c471) SHA1(d413aa216349ddf773a39d2826c3a940b4149229) )
5357 
5358 	ROM_REGION( 0x18000, REGION_CPU2, 0 ) /* sound CPU */
5359 	ROM_LOAD( "ts10562.bin", 0x0000, 0x8000, CRC(3f5028bf) SHA1(02081569a5f4dc64771e97651a9902a98d54a952) )
5360 	ROM_LOAD( "ts10563.bin", 0x10000, 0x8000, CRC(9db7eddf) SHA1(8b9a27442a623bee6b9b5b06275226734d132e17) )
5361 ROM_END
5362 
5363 /***************************************************************************/
5364 
5365 static READ16_HANDLER( timscanr_skip_r ){
5366 	if (activecpu_get_pc()==0x1044c) {cpu_spinuntil_int(); return 0;}
5367 	return sys16_workingram[0x000c/2];
5368 }
5369 
MEMORY_READ16_START(timscanr_readmem)5370 static MEMORY_READ16_START( timscanr_readmem )
5371 	{ 0x000000, 0x02ffff, MRA16_ROM },
5372 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5373 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5374 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
5375 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
5376 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
5377 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
5378 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
5379 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
5380 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
5381 	{ 0xc41004, 0xc41005, input_port_5_word_r }, // dip3
5382 	{ 0xffc00c, 0xffc00d, timscanr_skip_r },
5383 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
5384 MEMORY_END
5385 
5386 static MEMORY_WRITE16_START( timscanr_writemem )
5387 	{ 0x000000, 0x02ffff, MWA16_ROM },
5388 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5389 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5390 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
5391 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
5392 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
5393 	{ 0xfe0006, 0xfe0007, sound_command_w },
5394 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
5395 MEMORY_END
5396 
5397 /***************************************************************************/
5398 
5399 static void timscanr_update_proc( void ){
5400 	set_fg_page( sys16_textram[0x740] );
5401 	set_bg_page( sys16_textram[0x741] );
5402 	sys16_fg_scrolly = sys16_textram[0x748];
5403 	sys16_bg_scrolly = sys16_textram[0x749];
5404 	sys16_fg_scrollx = sys16_textram[0x74c];
5405 	sys16_bg_scrollx = sys16_textram[0x74d];
5406 }
5407 
MACHINE_INIT(timscanr)5408 static MACHINE_INIT( timscanr ){
5409 	static int bank[16] = {
5410 		0,0,0,0,
5411 		0,0,0,3,
5412 		0,0,0,2,
5413 		0,1,0,0
5414 	};
5415 	sys16_obj_bank = bank;
5416 
5417 	sys16_textmode=1;
5418 	sys16_update_proc = timscanr_update_proc;
5419 	sys16_wwfix = -1; //*
5420 }
5421 
DRIVER_INIT(timscanr)5422 static DRIVER_INIT( timscanr ){
5423 	machine_init_sys16_onetime();
5424 }
5425 /***************************************************************************/
5426 
INPUT_PORTS_START(timscanr)5427 INPUT_PORTS_START( timscanr )
5428 	SYS16_JOY1
5429 	SYS16_JOY2
5430 	SYS16_SERVICE
5431 	SYS16_COINAGE
5432 
5433 PORT_START	/* DSW2 */
5434 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )		//??
5435 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
5436 	PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
5437 	PORT_DIPNAME( 0x1e, 0x14, "Bonus" )
5438 	PORT_DIPSETTING(    0x16, "Replay 1000000/2000000" )
5439 	PORT_DIPSETTING(    0x14, "Replay 1200000/2500000" )
5440 	PORT_DIPSETTING(    0x12, "Replay 1500000/3000000" )
5441 	PORT_DIPSETTING(    0x10, "Replay 2000000/4000000" )
5442 	PORT_DIPSETTING(    0x1c, "Replay 1000000" )
5443 	PORT_DIPSETTING(    0x1e, "Replay 1200000" )
5444 	PORT_DIPSETTING(    0x1a, "Replay 1500000" )
5445 	PORT_DIPSETTING(    0x18, "Replay 1800000" )
5446 	PORT_DIPSETTING(    0x0e, "ExtraBall 100000" )
5447 	PORT_DIPSETTING(    0x0c, "ExtraBall 200000" )
5448 	PORT_DIPSETTING(    0x0a, "ExtraBall 300000" )
5449 	PORT_DIPSETTING(    0x08, "ExtraBall 400000" )
5450 	PORT_DIPSETTING(    0x06, "ExtraBall 500000" )
5451 	PORT_DIPSETTING(    0x04, "ExtraBall 600000" )
5452 	PORT_DIPSETTING(    0x02, "ExtraBall 700000" )
5453 	PORT_DIPSETTING(    0x00, "None" )
5454 
5455 	PORT_DIPNAME( 0x20, 0x20, "Match" )
5456 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
5457 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
5458 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
5459 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
5460 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5461 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Lives ) )
5462 	PORT_DIPSETTING(    0x80, "3" )
5463 	PORT_DIPSETTING(    0x00, "5" )
5464 
5465 PORT_START	/* DSW3 */
5466 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )		//??
5467 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
5468 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5469 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
5470 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
5471 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5472 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
5473 	PORT_DIPSETTING(    0x04, "1" )
5474 	PORT_DIPSETTING(    0x0c, "2" )
5475 	PORT_DIPSETTING(    0x08, "3" )
5476 	PORT_DIPSETTING(    0x00, "None" )
5477 	PORT_DIPNAME( 0x10, 0x10, "Allow Continue" )
5478 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
5479 	PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
5480 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
5481 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
5482 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5483 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
5484 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
5485 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5486 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
5487 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
5488 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5489 
5490 INPUT_PORTS_END
5491 
5492 /***************************************************************************/
5493 
5494 static MACHINE_DRIVER_START( timscanr )
5495 
5496 	/* basic machine hardware */
5497 	MDRV_IMPORT_FROM(system16_7759)
5498 	MDRV_CPU_MODIFY("main")
5499 	MDRV_CPU_MEMORY(timscanr_readmem,timscanr_writemem)
5500 
5501 	MDRV_MACHINE_INIT(timscanr)
5502 MACHINE_DRIVER_END
5503 
5504 /***************************************************************************/
5505 
5506 // sys16B
5507 ROM_START( toryumon )
5508 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5509 	ROM_LOAD16_BYTE( "17689",  0x00000, 0x20000, CRC(4f0dee19) SHA1(efb5bf29e27029e9ea3fdd57ad7af54b4e1e9a97) )
5510 	ROM_LOAD16_BYTE( "17688",  0x00001, 0x20000, CRC(717d81c7) SHA1(293cd9859a2a3aad89c47fdad2ca6aa48e9f74cb) )
5511 
5512 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5513 	ROM_LOAD( "17700", 0x00000, 0x40000, CRC(8f288b37) SHA1(f0c1bb60ace8078566b51ab91fc35d2981c9f32c) )
5514 	ROM_LOAD( "17701", 0x40000, 0x40000, CRC(6dfb025b) SHA1(502c16f650596a791fae1834f9bce6f3aa25c45f) )
5515 	ROM_LOAD( "17702", 0x80000, 0x40000, CRC(ae0b7eab) SHA1(403ca2b50913a744e2c5e1cd0d59c69df5464836) )
5516 
5517 	ROM_REGION( 0x100000, REGION_GFX2, 0 ) /* sprites */
5518 	ROM_LOAD16_BYTE( "17692", 0x00001, 0x20000, CRC(543c4327) SHA1(9f40163aaf165f5e4f5aefd8ce083d5f72ded125) )
5519 	ROM_LOAD16_BYTE( "17695", 0x00000, 0x20000, CRC(ee60f244) SHA1(21b912e12f6a56ea6b9e5e0be117b447d1ecda43) )
5520 	ROM_LOAD16_BYTE( "17693", 0x40001, 0x20000, CRC(4a350b3e) SHA1(70181bf713106475cdf684f86d593ee323ded2ca) )
5521 	ROM_LOAD16_BYTE( "17696", 0x40000, 0x20000, CRC(6edb54f1) SHA1(8188d76db16bcf2f6bbfd0d61499e0d0a128bb27) )
5522 	ROM_LOAD16_BYTE( "17694", 0x80001, 0x20000, CRC(b296d71d) SHA1(28f55fa451c4856f6fd6d4d9b16b4c3ef963ee5b) )
5523 	ROM_LOAD16_BYTE( "17697", 0x80000, 0x20000, CRC(6ccb7b28) SHA1(7a82230b575bfabb150141183d3c37c44a0d41ad) )
5524 	ROM_LOAD16_BYTE( "17698", 0xc0001, 0x20000, CRC(cd4dfb82) SHA1(def5847a94cd7da96f5434b62b22925fbb8da151) )
5525 	ROM_LOAD16_BYTE( "17699", 0xc0000, 0x20000, CRC(2694ecce) SHA1(85d7ab89d4fd0aa0ca942485f94c5737deaa8eff) )
5526 
5527 
5528 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
5529 	ROM_LOAD( "17691", 0x00000,  0x08000, CRC(14205388) SHA1(0b580d4ef52eab2d71541d44fbd32676b2277aa1) )
5530 	ROM_LOAD( "17690", 0x10000,  0x40000, CRC(4f9ba4e4) SHA1(450d821ef12dbb24cf85ac10c77e9b31c03112b1) )
5531 ROM_END
5532 
5533 /***************************************************************************/
5534 
5535 static MEMORY_READ16_START( toryumon_readmem )
5536 	{ 0x000000, 0x03ffff, MRA16_ROM },
5537 	{ 0x3e2000, 0x3e2003, SYS16_MRA16_EXTRAM },
5538 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5539 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5540 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
5541 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
5542 	{ 0xe41002, 0xe41003, input_port_0_word_r }, // player1
5543 	{ 0xe41004, 0xe41005, MRA16_NOP },
5544 	{ 0xe41006, 0xe41007, input_port_1_word_r }, // player2
5545 	{ 0xe41000, 0xe41001, input_port_2_word_r }, // service
5546 	{ 0xe42002, 0xe42003, input_port_3_word_r }, // dip1
5547 	{ 0xe42000, 0xe42001, input_port_4_word_r }, // dip2
5548 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
5549 MEMORY_END
5550 
5551 static MEMORY_WRITE16_START( toryumon_writemem )
5552 	{ 0x000000, 0x03ffff, MWA16_ROM },
5553 	{ 0x3e2000, 0x3e2003, SYS16_MWA16_EXTRAM },
5554 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5555 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5556 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
5557 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
5558 	{ 0xe40000, 0xe40001, sys16_coinctrl_w },
5559 	{ 0xfe0006, 0xfe0007, sound_command_w },
5560 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
5561 MEMORY_END
5562 
5563 /***************************************************************************/
5564 
5565 static void toryumon_update_proc( void ){
5566 	set_fg_page( sys16_textram[0x740] );
5567 	set_bg_page( sys16_textram[0x741] );
5568 	sys16_fg_scrolly = sys16_textram[0x748];
5569 	sys16_bg_scrolly = sys16_textram[0x749];
5570 	sys16_fg_scrollx = sys16_textram[0x74c];
5571 	sys16_bg_scrollx = sys16_textram[0x74d];
5572 
5573 	sys16_tile_bank0 = sys16_extraram[0]&0xf;
5574 	sys16_tile_bank1 = sys16_extraram[1]&0xf;
5575 }
5576 
MACHINE_INIT(toryumon)5577 static MACHINE_INIT( toryumon ){
5578 	sys16_update_proc = toryumon_update_proc;
5579 }
5580 
DRIVER_INIT(toryumon)5581 static DRIVER_INIT( toryumon )
5582 {
5583 	machine_init_sys16_onetime();
5584 }
5585 /***************************************************************************/
5586 
INPUT_PORTS_START(toryumon)5587 INPUT_PORTS_START( toryumon )
5588 	SYS16_JOY1
5589 	SYS16_JOY2
5590 	SYS16_SERVICE
5591 	SYS16_COINAGE
5592 
5593 PORT_START	/* DSW1 */
5594 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
5595 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
5596 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5597 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
5598 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
5599 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5600 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
5601 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
5602 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5603 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
5604 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
5605 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5606 	PORT_DIPNAME( 0x10, 0x10, "VS-Mode Battle" )
5607 	PORT_DIPSETTING(    0x10, "1" )
5608 	PORT_DIPSETTING(    0x00, "3" )
5609 	PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Difficulty ) )
5610 	PORT_DIPSETTING(    0xc0, "Easy" )
5611 	PORT_DIPSETTING(    0xe0, "Normal" )
5612 	PORT_DIPSETTING(    0xa0, "Hard" )
5613 	PORT_DIPSETTING(    0x80, "Hard+1" )
5614 	PORT_DIPSETTING(    0x60, "Hard+2" )
5615 	PORT_DIPSETTING(    0x40, "Hard+3" )
5616 	PORT_DIPSETTING(    0x20, "Hard+4" )
5617 	PORT_DIPSETTING(    0x00, "Hard+5" )
5618 INPUT_PORTS_END
5619 
5620 /***************************************************************************/
5621 
5622 static MACHINE_DRIVER_START( toryumon )
5623 
5624 	/* basic machine hardware */
5625 	MDRV_IMPORT_FROM(system16_7759)
5626 	MDRV_CPU_MODIFY("main")
5627 	MDRV_CPU_MEMORY(toryumon_readmem,toryumon_writemem)
5628 
5629 	MDRV_MACHINE_INIT(toryumon)
5630 MACHINE_DRIVER_END
5631 
5632 /***************************************************************************/
5633 
5634 // sys16B
5635 ROM_START( tturf )
5636 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5637 	ROM_LOAD16_BYTE( "12327.7a",  0x00000, 0x20000, CRC(0376c593) SHA1(3057828b16ee3b7cbb57a76047eecf74d1d8b465) )
5638 	ROM_LOAD16_BYTE( "12326.5a",  0x00001, 0x20000, CRC(f998862b) SHA1(69902ab0162eb42e1d6a9792651a5d41cb77477d) )
5639 
5640 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5641 	ROM_LOAD( "12268.14a", 0x00000, 0x10000, CRC(e0dac07f) SHA1(c7f6de42eb93a8f34afdc300628735b5f40a34c2) )
5642 	ROM_LOAD( "12269.15a", 0x10000, 0x10000, CRC(457a8790) SHA1(b701e1a1745cefb31083c8a3daa3b23181f89576) )
5643 	ROM_LOAD( "12270.16a", 0x20000, 0x10000, CRC(69fc025b) SHA1(20be1242de27f1b997d43890051cc5d5ac8a127a) )
5644 
5645 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
5646 	ROM_LOAD16_BYTE( "12279.1b", 0x00001, 0x10000, CRC(7a169fb1) SHA1(1ec6da0d2cfcf727e61f61c847fd8b975b64f944) )
5647 	ROM_LOAD16_BYTE( "12283.5b", 0x00000, 0x10000, CRC(ae0fa085) SHA1(ae9af92d4dd0c8a0f064d24e647522b588fbd7f7) )
5648 	ROM_LOAD16_BYTE( "12278.2b", 0x20001, 0x10000, CRC(961d06b7) SHA1(b1a9dea63785bfa2c0e7b931387b91dfcd27d79b) )
5649 	ROM_LOAD16_BYTE( "12282.6b", 0x20000, 0x10000, CRC(e8671ee1) SHA1(a3732938c370f1936d867aae9c3d1e9bbfb57ede) )
5650 	ROM_LOAD16_BYTE( "12277.3b", 0x40001, 0x10000, CRC(f16b6ba2) SHA1(00cc04c7b5aad82d51d2d252e1e57bcdc5e2c9e3) )
5651 	ROM_LOAD16_BYTE( "12281.7b", 0x40000, 0x10000, CRC(1ef1077f) SHA1(8ce6fd7d32a20b93b3f91aaa43fe22720da7236f) )
5652 	ROM_LOAD16_BYTE( "12276.4b", 0x60001, 0x10000, CRC(838bd71f) SHA1(82d9d127438f5e1906b1cf40bf3b4727f2ee5685) )
5653 	ROM_LOAD16_BYTE( "12280.8b", 0x60000, 0x10000, CRC(639a57cb) SHA1(84fd8b96758d38f9e1ba1a3c2cf8099ec0452784) )
5654 
5655 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
5656 	ROM_LOAD( "12328.10a", 0x0000, 0x8000, NO_DUMP )
5657 	ROM_LOAD( "12329.11a", 0x10000, 0x10000, CRC(ed9a686d) SHA1(da433033d501ee871429ee676b3972b14179df9f) )		// speech
5658 	ROM_LOAD( "12330.12a", 0x20000, 0x10000, CRC(fb762bca) SHA1(ff9191c5ec38c711ebb7c2ad043f62b6d7e2203c) )
5659 
5660 ROM_END
5661 
5662 // sys16B
5663 ROM_START( tturfu )
5664 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5665 	ROM_LOAD16_BYTE( "epr12266.bin",  0x00000, 0x10000, CRC(f549def8) SHA1(9e913509d46274bd192455321904ec9884b5f629) )
5666 	ROM_LOAD16_BYTE( "epr12264.bin",  0x00001, 0x10000, CRC(f7cdb289) SHA1(9c386cf33a96a977c623c2f243db38fda2c41ba4) )
5667 	ROM_LOAD16_BYTE( "epr12267.bin",  0x20000, 0x10000, CRC(3c3ce191) SHA1(036ece2be585a85e05c047fe4a1ab3b6814c3490) )
5668 	ROM_LOAD16_BYTE( "epr12265.bin",  0x20001, 0x10000, CRC(8cdadd9a) SHA1(a17852f0eb8f63a82ff44cbeb100da72fe5890e0) )
5669 
5670 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5671 	ROM_LOAD( "12268.14a", 0x00000, 0x10000, CRC(e0dac07f) SHA1(c7f6de42eb93a8f34afdc300628735b5f40a34c2) )
5672 	ROM_LOAD( "12269.15a", 0x10000, 0x10000, CRC(457a8790) SHA1(b701e1a1745cefb31083c8a3daa3b23181f89576) )
5673 	ROM_LOAD( "12270.16a", 0x20000, 0x10000, CRC(69fc025b) SHA1(20be1242de27f1b997d43890051cc5d5ac8a127a) )
5674 
5675 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
5676 	ROM_LOAD16_BYTE( "12279.1b", 0x00001, 0x10000, CRC(7a169fb1) SHA1(1ec6da0d2cfcf727e61f61c847fd8b975b64f944) )
5677 	ROM_LOAD16_BYTE( "12283.5b", 0x00000, 0x10000, CRC(ae0fa085) SHA1(ae9af92d4dd0c8a0f064d24e647522b588fbd7f7) )
5678 	ROM_LOAD16_BYTE( "12278.2b", 0x20001, 0x10000, CRC(961d06b7) SHA1(b1a9dea63785bfa2c0e7b931387b91dfcd27d79b) )
5679 	ROM_LOAD16_BYTE( "12282.6b", 0x20000, 0x10000, CRC(e8671ee1) SHA1(a3732938c370f1936d867aae9c3d1e9bbfb57ede) )
5680 	ROM_LOAD16_BYTE( "12277.3b", 0x40001, 0x10000, CRC(f16b6ba2) SHA1(00cc04c7b5aad82d51d2d252e1e57bcdc5e2c9e3) )
5681 	ROM_LOAD16_BYTE( "12281.7b", 0x40000, 0x10000, CRC(1ef1077f) SHA1(8ce6fd7d32a20b93b3f91aaa43fe22720da7236f) )
5682 	ROM_LOAD16_BYTE( "12276.4b", 0x60001, 0x10000, CRC(838bd71f) SHA1(82d9d127438f5e1906b1cf40bf3b4727f2ee5685) )
5683 	ROM_LOAD16_BYTE( "12280.8b", 0x60000, 0x10000, CRC(639a57cb) SHA1(84fd8b96758d38f9e1ba1a3c2cf8099ec0452784) )
5684 
5685 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
5686 	ROM_LOAD( "epr12271.bin", 0x00000,  0x8000, CRC(99671e52) SHA1(ab21b7e7a449c8081b5db1fdb579071e31b6852c) )
5687 	ROM_LOAD( "epr12272.bin", 0x10000, 0x8000, CRC(7cf7e69f) SHA1(62c9f75db8e2b4ece517167ba5c0712bac5f1d95) )
5688 	ROM_LOAD( "epr12273.bin", 0x18000, 0x8000, CRC(28f0bb8b) SHA1(d99aff57d213b10ac10c37ceff2f125875816488) )
5689 	ROM_LOAD( "epr12274.bin", 0x20000, 0x8000, CRC(8207f0c4) SHA1(169914861a52fa731a305e1ee2d230aa0d0d97fe) )
5690 	ROM_LOAD( "epr12275.bin", 0x28000, 0x8000, CRC(182f3c3d) SHA1(1482fe08a05a721e315b1a3aa5bef4dddc72e26e) )
5691 
5692 ROM_END
5693 
5694 /***************************************************************************/
5695 static READ16_HANDLER( tt_io_player1_r ){ return input_port_0_r( offset ) << 8; }
READ16_HANDLER(tt_io_player2_r)5696 static READ16_HANDLER( tt_io_player2_r ){ return input_port_1_r( offset ) << 8; }
READ16_HANDLER(tt_io_service_r)5697 static READ16_HANDLER( tt_io_service_r ){ return input_port_2_r( offset ) << 8; }
5698 
MEMORY_READ16_START(tturf_readmem)5699 static MEMORY_READ16_START( tturf_readmem )
5700 	{ 0x000000, 0x03ffff, MRA16_ROM },
5701 	{ 0x2001e6, 0x2001e7, tt_io_service_r },
5702 	{ 0x2001e8, 0x2001e9, tt_io_player1_r },
5703 	{ 0x2001ea, 0x2001eb, tt_io_player2_r },
5704 	{ 0x200000, 0x203fff, SYS16_MRA16_EXTRAM },
5705 	{ 0x300000, 0x300fff, SYS16_MRA16_SPRITERAM },
5706 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5707 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5708 	{ 0x500000, 0x500fff, SYS16_MRA16_PALETTERAM },
5709 	{ 0x602002, 0x602003, input_port_3_word_r }, // dip1
5710 	{ 0x602000, 0x602001, input_port_4_word_r }, // dip2
5711 MEMORY_END
5712 
5713 static MEMORY_WRITE16_START( tturf_writemem )
5714 	{ 0x000000, 0x03ffff, MWA16_ROM },
5715 	{ 0x200000, 0x203fff, SYS16_MWA16_EXTRAM },
5716 	{ 0x300000, 0x300fff, SYS16_MWA16_SPRITERAM },
5717 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5718 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5719 	{ 0x500000, 0x500fff, SYS16_MWA16_PALETTERAM },
5720 	{ 0x600000, 0x600001, sys16_coinctrl_w },
5721 //	{ 0x600006, 0x600007, sound_command_w },
5722 MEMORY_END
5723 
5724 /***************************************************************************/
5725 static void tturf_update_proc( void ){
5726 	set_fg_page( sys16_textram[0x740] );
5727 	set_bg_page( sys16_textram[0x741] );
5728 	sys16_fg_scrolly = sys16_textram[0x748];
5729 	sys16_bg_scrolly = sys16_textram[0x749];
5730 	sys16_fg_scrollx = sys16_textram[0x74c];
5731 	sys16_bg_scrollx = sys16_textram[0x74d];
5732 }
5733 
MACHINE_INIT(tturf)5734 static MACHINE_INIT( tturf ){
5735 	static int bank[16] = { 0,0,1,0,2,0,3,0 };
5736 	sys16_obj_bank = bank;
5737 	sys16_spritelist_end=0xc000;
5738 	sys16_update_proc = tturf_update_proc;
5739 }
5740 
MACHINE_INIT(tturfu)5741 static MACHINE_INIT( tturfu ){
5742 	static int bank[16] = {
5743 		0,0,0,0,
5744 		0,0,0,0,
5745 		0,0,0,1,
5746 		0,2,3,0
5747 	};
5748 	sys16_obj_bank = bank;
5749 	sys16_spritelist_end=0xc000;
5750 
5751 	sys16_update_proc = tturf_update_proc;
5752 }
5753 
DRIVER_INIT(tturf)5754 static DRIVER_INIT( tturf ){
5755 	machine_init_sys16_onetime();
5756 }
5757 /***************************************************************************/
5758 
INPUT_PORTS_START(tturf)5759 INPUT_PORTS_START( tturf )
5760 	SYS16_JOY1
5761 	SYS16_JOY2
5762 	SYS16_SERVICE
5763 	SYS16_COINAGE
5764 
5765 PORT_START	/* DSW1 */
5766 	PORT_DIPNAME( 0x03, 0x00, "Continues" )
5767 	PORT_DIPSETTING(    0x00, "None" )
5768 	PORT_DIPSETTING(    0x01, "3" )
5769 	PORT_DIPSETTING(    0x02, "Unlimited" )
5770 	PORT_DIPSETTING(    0x03, "Unlimited" )
5771 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
5772 	PORT_DIPSETTING(    0x08, "Easy" )
5773 	PORT_DIPSETTING(    0x0c, "Normal" )
5774 	PORT_DIPSETTING(    0x04, "Hard" )
5775 	PORT_DIPSETTING(    0x00, "Hardest" )
5776 	PORT_DIPNAME( 0x30, 0x20, "Starting Energy" )
5777 	PORT_DIPSETTING(    0x00, "3" )
5778 	PORT_DIPSETTING(    0x10, "4" )
5779 	PORT_DIPSETTING(    0x20, "6" )
5780 	PORT_DIPSETTING(    0x30, "8" )
5781 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
5782 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
5783 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
5784 	PORT_DIPNAME( 0x80, 0x00, "Bonus Energy" )
5785 	PORT_DIPSETTING(    0x80, "1" )
5786 	PORT_DIPSETTING(    0x00, "2" )
5787 INPUT_PORTS_END
5788 
5789 /***************************************************************************/
5790 
5791 static MACHINE_DRIVER_START( tturf )
5792 
5793 	/* basic machine hardware */
5794 	MDRV_IMPORT_FROM(system16_7759)
5795 	MDRV_CPU_MODIFY("main")
5796 	MDRV_CPU_MEMORY(tturf_readmem,tturf_writemem)
5797 
5798 	MDRV_MACHINE_INIT(tturf)
5799 MACHINE_DRIVER_END
5800 
5801 
5802 static MACHINE_DRIVER_START( tturfu )
5803 
5804 	/* basic machine hardware */
5805 	MDRV_IMPORT_FROM(tturf)
5806 	MDRV_MACHINE_INIT(tturfu)
5807 MACHINE_DRIVER_END
5808 
5809 /***************************************************************************/
5810 // sys16B
5811 ROM_START( tturfbl )
5812 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5813 	ROM_LOAD16_BYTE( "tt042197.rom", 0x00000, 0x10000, CRC(deee5af1) SHA1(0caba775021dc7e28ac6b7af8eac4f49d3102c83) )
5814 	ROM_LOAD16_BYTE( "tt06c794.rom", 0x00001, 0x10000, CRC(90e6a95a) SHA1(014a0ae5cebcba9cc99e6ccde4ad5d938fab915c) )
5815 	ROM_LOAD16_BYTE( "tt030be3.rom", 0x20000, 0x10000, CRC(100264a2) SHA1(d1ea4bf93f5472901ce95200f546ce9b58936aea) )
5816 	ROM_LOAD16_BYTE( "tt05ef8a.rom", 0x20001, 0x10000, CRC(f787a948) SHA1(512b8cb2f5e9795171951e02c07cae957db41334) )
5817 
5818 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5819 	ROM_LOAD( "tt1574b3.rom", 0x00000, 0x10000, CRC(e9e630da) SHA1(e8471dedbb25475e4814d78b56f579fe9110461e) )
5820 	ROM_LOAD( "tt16cf44.rom", 0x10000, 0x10000, CRC(4c467735) SHA1(8338b6605cbe2e076da0b3e3a47630409a79f002) )
5821 	ROM_LOAD( "tt17d59e.rom", 0x20000, 0x10000, CRC(60c0f2fe) SHA1(3fea4ed757d47628f59ff940e40cb86b3b5b443b) )
5822 
5823 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
5824 	ROM_LOAD16_BYTE( "12279.1b", 0x00001, 0x10000, CRC(7a169fb1) SHA1(1ec6da0d2cfcf727e61f61c847fd8b975b64f944) )
5825 	ROM_LOAD16_BYTE( "12283.5b", 0x00000, 0x10000, CRC(ae0fa085) SHA1(ae9af92d4dd0c8a0f064d24e647522b588fbd7f7) )
5826 	ROM_LOAD16_BYTE( "12278.2b", 0x20001, 0x10000, CRC(961d06b7) SHA1(b1a9dea63785bfa2c0e7b931387b91dfcd27d79b) )
5827 	ROM_LOAD16_BYTE( "12282.6b", 0x20000, 0x10000, CRC(e8671ee1) SHA1(a3732938c370f1936d867aae9c3d1e9bbfb57ede) )
5828 	ROM_LOAD16_BYTE( "12277.3b", 0x40001, 0x10000, CRC(f16b6ba2) SHA1(00cc04c7b5aad82d51d2d252e1e57bcdc5e2c9e3) )
5829 	ROM_LOAD16_BYTE( "12281.7b", 0x40000, 0x10000, CRC(1ef1077f) SHA1(8ce6fd7d32a20b93b3f91aaa43fe22720da7236f) )
5830 	ROM_LOAD16_BYTE( "12276.4b", 0x60001, 0x10000, CRC(838bd71f) SHA1(82d9d127438f5e1906b1cf40bf3b4727f2ee5685) )
5831 	ROM_LOAD16_BYTE( "12280.8b", 0x60000, 0x10000, CRC(639a57cb) SHA1(84fd8b96758d38f9e1ba1a3c2cf8099ec0452784) )
5832 
5833 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
5834 	ROM_LOAD( "tt014d68.rom", 0x00000, 0x08000, CRC(d4aab1d9) SHA1(94885896d59da1ecabe2377a194fcf61eaae3765) )
5835 	ROM_CONTINUE(             0x10000, 0x08000 )
5836 	ROM_LOAD( "tt0246ff.rom", 0x18000, 0x10000, CRC(bb4bba8f) SHA1(b182a7e1d0425e93c2c1b93472aafd30a6af6907) )
5837 ROM_END
5838 
5839 /***************************************************************************/
5840 
5841 static MEMORY_READ16_START( tturfbl_readmem )
5842 	{ 0x000000, 0x03ffff, MRA16_ROM },
5843 	{ 0x2001e6, 0x2001e7, tt_io_service_r },
5844 	{ 0x2001e8, 0x2001e9, tt_io_player1_r },
5845 	{ 0x2001ea, 0x2001eb, tt_io_player2_r },
5846 	{ 0x200000, 0x203fff, SYS16_MRA16_EXTRAM },
5847 	{ 0x300000, 0x300fff, SYS16_MRA16_SPRITERAM },
5848 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5849 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5850 	{ 0x500000, 0x500fff, SYS16_MRA16_PALETTERAM },
5851 	{ 0x600002, 0x600003, input_port_3_word_r }, // dip1
5852 	{ 0x600000, 0x600001, input_port_4_word_r }, // dip2
5853 	{ 0x601002, 0x601003, input_port_0_word_r }, // player1
5854 	{ 0x601004, 0x601005, input_port_1_word_r }, // player2
5855 	{ 0x601000, 0x601001, input_port_2_word_r }, // service
5856 	{ 0x602002, 0x602003, input_port_3_word_r }, // dip1
5857 	{ 0x602000, 0x602001, input_port_4_word_r }, // dip2
5858 	{ 0xc46000, 0xc4601f, SYS16_MRA16_EXTRAM3 },
5859 MEMORY_END
5860 
5861 static MEMORY_WRITE16_START( tturfbl_writemem )
5862 	{ 0x000000, 0x03ffff, MWA16_ROM },
5863 	{ 0x200000, 0x203fff, SYS16_MWA16_EXTRAM },
5864 	{ 0x300000, 0x300fff, SYS16_MWA16_SPRITERAM },
5865 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
5866 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
5867 	{ 0x500000, 0x500fff, SYS16_MWA16_PALETTERAM },
5868 	{ 0x600000, 0x600001, sys16_coinctrl_w },
5869 	{ 0x600006, 0x600007, sound_command_w },
5870 	{ 0xc44000, 0xc44001, MWA16_NOP },
5871 	{ 0xc46000, 0xc4601f, SYS16_MWA16_EXTRAM3 },
5872 MEMORY_END
5873 
5874 /***************************************************************************/
5875 
5876 static void tturfbl_update_proc( void ){
5877 	sys16_fg_scrollx = sys16_textram[0x74c] & 0x01ff;
5878 	sys16_bg_scrollx = sys16_textram[0x74d/2] & 0x01ff;
5879 	sys16_fg_scrolly = sys16_textram[0x748];
5880 	sys16_bg_scrolly = sys16_textram[0x749];
5881 
5882 
5883 	{
5884 		int data1,data2;
5885 
5886 		data1 = sys16_textram[0x740];
5887 		data2 = sys16_textram[0x741];
5888 
5889 		sys16_fg_page[3] = data1>>12;
5890 		sys16_bg_page[3] = (data1>>8)&0xf;
5891 		sys16_fg_page[1] = (data1>>4)&0xf;
5892 		sys16_bg_page[1] = data1&0xf;
5893 
5894 		sys16_fg_page[2] = data2>>12;
5895 		sys16_bg_page[2] = (data2>>8)&0xf;
5896 		sys16_fg_page[0] = (data2>>4)&0xf;
5897 		sys16_bg_page[0] = data2&0xf;
5898 	}
5899 }
5900 
MACHINE_INIT(tturfbl)5901 static MACHINE_INIT( tturfbl ){
5902 	static int bank[16] = {
5903 		0,0,0,0,
5904 		0,0,0,3,
5905 		0,0,0,2,
5906 		0,1,0,0
5907 	};
5908 	sys16_obj_bank = bank;
5909 	sys16_sprxoffset = -0x48;
5910 	sys16_spritelist_end=0xc000;
5911 
5912 	sys16_update_proc = tturfbl_update_proc;
5913 }
5914 
DRIVER_INIT(tturfbl)5915 static DRIVER_INIT( tturfbl )
5916 {
5917 	int i;
5918 
5919 	machine_init_sys16_onetime();
5920 
5921 	/* invert the graphics bits on the tiles */
5922 	for (i = 0; i < 0x30000; i++)
5923 		memory_region(REGION_GFX1)[i] ^= 0xff;
5924 }
5925 /***************************************************************************/
5926 // sound ??
5927 static MACHINE_DRIVER_START( tturfbl )
5928 
5929 	/* basic machine hardware */
MDRV_IMPORT_FROM(system16_7759)5930 	MDRV_IMPORT_FROM(system16_7759)
5931 	MDRV_CPU_MODIFY("main")
5932 	MDRV_CPU_MEMORY(tturfbl_readmem,tturfbl_writemem)
5933 
5934 	MDRV_MACHINE_INIT(tturfbl)
5935 MACHINE_DRIVER_END
5936 
5937 /***************************************************************************/
5938 // sys16B
5939 ROM_START( wb3 )
5940 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5941 	ROM_LOAD16_BYTE( "epr12259.a7", 0x000000, 0x20000, CRC(54927c7e) SHA1(09a4c25b40aba2056c79b5c2e6e8cb7e6c05bc16) )
5942 	ROM_LOAD16_BYTE( "epr12258.a5", 0x000001, 0x20000, CRC(01f5898c) SHA1(2422b4199ce5b63482f7fa1c790c90fc70a2b872) )
5943 
5944 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5945 	ROM_LOAD( "epr12124.a14", 0x00000, 0x10000, CRC(dacefb6f) SHA1(789a5a99ad9419aee9da5397bcea34452ea8b4b3) )
5946 	ROM_LOAD( "epr12125.a15", 0x10000, 0x10000, CRC(9fc36df7) SHA1(b39ccc687489e9781181197505fc78aa5cf7ea55) )
5947 	ROM_LOAD( "epr12126.a16", 0x20000, 0x10000, CRC(a693fd94) SHA1(38e5446f41b6793a8e4134fdd92b02b86e3589f7) )
5948 
5949 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
5950 	ROM_LOAD16_BYTE( "epr12093.b4", 0x00001, 0x010000, CRC(4891e7bb) SHA1(1be04fcabe9bfa8cf746263a5bcca67902a021a0) )
5951 	ROM_LOAD16_BYTE( "epr12097.b8", 0x00000, 0x010000, CRC(e645902c) SHA1(497cfcf6c25cc2e042e16dbcb1963d2223def15a) )
5952 	ROM_LOAD16_BYTE( "epr12091.b2", 0x20001, 0x010000, CRC(8409a243) SHA1(bcbb9510a6499d8147543d6befa5a49f4ac055d9) )
5953 	ROM_LOAD16_BYTE( "epr12095.b6", 0x20000, 0x010000, CRC(e774ec2c) SHA1(a4aa15ec7be5539a740ad02ff720458018dbc536) )
5954 	ROM_LOAD16_BYTE( "epr12090.b1", 0x40001, 0x010000, CRC(aeeecfca) SHA1(496124b170a725ad863c741d4e021ab947511e4c) )
5955 	ROM_LOAD16_BYTE( "epr12094.b5", 0x40000, 0x010000, CRC(615e4927) SHA1(d23f164973afa770714e284a77ddf10f18cc596b) )
5956 	ROM_LOAD16_BYTE( "epr12092.b3", 0x60001, 0x010000, CRC(5c2f0d90) SHA1(e0fbc0f841e4607ad232931368b16e81440a75c4) )
5957 	ROM_LOAD16_BYTE( "epr12096.b7", 0x60000, 0x010000, CRC(0cd59d6e) SHA1(caf754a461feffafcfe7bfc6e89da76c4db257c5) )
5958 
5959 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
5960 	ROM_LOAD( "epr12127.a10", 0x0000, 0x8000, CRC(0bb901bb) SHA1(c81b198df8e3b0ec568032c76addf0d1a1711194) )
5961 ROM_END
5962 
5963 ROM_START( wb3a )
5964 	ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */
5965 // Custom CPU 317-0089
5966 	ROM_LOAD16_BYTE( "epr12137.a7", 0x000000, 0x20000, CRC(6f81238e) SHA1(b578165c1624f8a112e9eea098fb4551cc38faa1) )
5967 	ROM_LOAD16_BYTE( "epr12136.a5", 0x000001, 0x20000, CRC(4cf05003) SHA1(bd4c64c327e53143aa94062f91946eda0a7146c2) )
5968 
5969 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
5970 	ROM_LOAD( "epr12124.a14", 0x00000, 0x10000, CRC(dacefb6f) SHA1(789a5a99ad9419aee9da5397bcea34452ea8b4b3) )
5971 	ROM_LOAD( "epr12125.a15", 0x10000, 0x10000, CRC(9fc36df7) SHA1(b39ccc687489e9781181197505fc78aa5cf7ea55) )
5972 	ROM_LOAD( "epr12126.a16", 0x20000, 0x10000, CRC(a693fd94) SHA1(38e5446f41b6793a8e4134fdd92b02b86e3589f7) )
5973 
5974 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
5975 	ROM_LOAD16_BYTE( "epr12093.b4", 0x00001, 0x010000, CRC(4891e7bb) SHA1(1be04fcabe9bfa8cf746263a5bcca67902a021a0) )
5976 	ROM_LOAD16_BYTE( "epr12097.b8", 0x00000, 0x010000, CRC(e645902c) SHA1(497cfcf6c25cc2e042e16dbcb1963d2223def15a) )
5977 	ROM_LOAD16_BYTE( "epr12091.b2", 0x20001, 0x010000, CRC(8409a243) SHA1(bcbb9510a6499d8147543d6befa5a49f4ac055d9) )
5978 	ROM_LOAD16_BYTE( "epr12095.b6", 0x20000, 0x010000, CRC(e774ec2c) SHA1(a4aa15ec7be5539a740ad02ff720458018dbc536) )
5979 	ROM_LOAD16_BYTE( "epr12090.b1", 0x40001, 0x010000, CRC(aeeecfca) SHA1(496124b170a725ad863c741d4e021ab947511e4c) )
5980 	ROM_LOAD16_BYTE( "epr12094.b5", 0x40000, 0x010000, CRC(615e4927) SHA1(d23f164973afa770714e284a77ddf10f18cc596b) )
5981 	ROM_LOAD16_BYTE( "epr12092.b3", 0x60001, 0x010000, CRC(5c2f0d90) SHA1(e0fbc0f841e4607ad232931368b16e81440a75c4) )
5982 	ROM_LOAD16_BYTE( "epr12096.b7", 0x60000, 0x010000, CRC(0cd59d6e) SHA1(caf754a461feffafcfe7bfc6e89da76c4db257c5) )
5983 
5984 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
5985 	ROM_LOAD( "epr12127.a10", 0x0000, 0x8000, CRC(0bb901bb) SHA1(c81b198df8e3b0ec568032c76addf0d1a1711194) )
5986 ROM_END
5987 
5988 /***************************************************************************/
5989 
5990 static MEMORY_READ16_START( wb3_readmem )
5991 	{ 0x000000, 0x03ffff, MRA16_ROM },
5992 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
5993 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
5994 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
5995 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
5996 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
5997 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
5998 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
5999 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
6000 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
6001 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
6002 MEMORY_END
6003 
6004 static WRITE16_HANDLER( wb3_sound_command_w ){
6005 	if( ACCESSING_MSB ) sound_command_w(offset,data>>8,0xff00); //*
6006 }
6007 
MEMORY_WRITE16_START(wb3_writemem)6008 static MEMORY_WRITE16_START( wb3_writemem )
6009 	{ 0x000000, 0x03ffff, MWA16_ROM },
6010 	{ 0x3f0000, 0x3f0003, MWA16_NOP },
6011 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
6012 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
6013 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
6014 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
6015 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
6016 	{ 0xffc008, 0xffc009, wb3_sound_command_w },
6017 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
6018 MEMORY_END
6019 
6020 /***************************************************************************/
6021 
6022 static void wb3_update_proc( void ){
6023 	set_fg_page( sys16_textram[0x740] );
6024 	set_bg_page( sys16_textram[0x741] );
6025 	sys16_fg_scrolly = sys16_textram[0x748];
6026 	sys16_bg_scrolly = sys16_textram[0x749];
6027 	sys16_fg_scrollx = sys16_textram[0x74c];
6028 	sys16_bg_scrollx = sys16_textram[0x74d];
6029 }
6030 
MACHINE_INIT(wb3)6031 static MACHINE_INIT( wb3 ){
6032 	static int bank[16] = {
6033 		2,0,
6034 		1,0,
6035 		3,0,
6036 		0,3,
6037 		0,0,
6038 		0,2,
6039 		0,1,
6040 		0,0
6041 	};
6042 	sys16_obj_bank = bank;
6043 	sys16_update_proc = wb3_update_proc;
6044 }
6045 
DRIVER_INIT(wb3)6046 static DRIVER_INIT( wb3 ){
6047 	machine_init_sys16_onetime();
6048 }
6049 
6050 /***************************************************************************/
6051 
INPUT_PORTS_START(wb3)6052 INPUT_PORTS_START( wb3 )
6053 	SYS16_JOY1
6054 	SYS16_JOY2
6055 	SYS16_SERVICE
6056 	SYS16_COINAGE
6057 
6058 PORT_START	/* DSW1 */
6059 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
6060 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
6061 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6062 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
6063 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
6064 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6065 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
6066 	PORT_DIPSETTING(    0x00, "2" )
6067 	PORT_DIPSETTING(    0x0c, "3" )
6068 	PORT_DIPSETTING(    0x08, "4" )
6069 	PORT_DIPSETTING(    0x04, "5" )
6070 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )		//??
6071 	PORT_DIPSETTING(    0x10, "5000/10000/18000/30000" )
6072 	PORT_DIPSETTING(    0x00, "5000/15000/30000" )
6073 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
6074 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
6075 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6076 	PORT_DIPNAME( 0x40, 0x40, "Allow Round Select" )
6077 	PORT_DIPSETTING(    0x40, DEF_STR( No ) )
6078 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )			// no collision though
6079 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
6080 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
6081 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6082 INPUT_PORTS_END
6083 
6084 /***************************************************************************/
6085 
6086 static MACHINE_DRIVER_START( wb3 )
6087 
6088 	/* basic machine hardware */
6089 	MDRV_IMPORT_FROM(system16)
6090 	MDRV_CPU_MODIFY("main")
6091 	MDRV_CPU_MEMORY(wb3_readmem,wb3_writemem)
6092 
6093 	MDRV_MACHINE_INIT(wb3)
6094 MACHINE_DRIVER_END
6095 
6096 /***************************************************************************/
6097 // sys16B
6098 ROM_START( wb3bl )
6099 	ROM_REGION( 0x040000, REGION_CPU1, 0 ) /* 68000 code */
6100 	ROM_LOAD16_BYTE( "wb3_03", 0x000000, 0x10000, CRC(0019ab3b) SHA1(89d49a437690fa6e0c35bb9f1450042f89504714) )
6101 	ROM_LOAD16_BYTE( "wb3_05", 0x000001, 0x10000, CRC(196e17ee) SHA1(71e4345b2c3d1612a3d424c9310fad1e23c8a9f7) )
6102 	ROM_LOAD16_BYTE( "wb3_02", 0x020000, 0x10000, CRC(c87350cb) SHA1(55a8cb68d70b6060dd9a55e281e216ce3917ea5b) )
6103 	ROM_LOAD16_BYTE( "wb3_04", 0x020001, 0x10000, CRC(565d5035) SHA1(e28a132f1a4ce9466945e231c54502178748af98) )
6104 
6105 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6106 	ROM_LOAD( "wb3_14", 0x00000, 0x10000, CRC(d3f20bca) SHA1(0a87f709f8e2a913473512ede408e2cbc535443f) )
6107 	ROM_LOAD( "wb3_15", 0x10000, 0x10000, CRC(96ff9d52) SHA1(791a9da4860e0d42fba98f80a3c6725ad8c73e33) )
6108 	ROM_LOAD( "wb3_16", 0x20000, 0x10000, CRC(afaf0d31) SHA1(d4309329a0a543250788146b63b27ff058c02fc3) )
6109 
6110 	ROM_REGION( 0x080000, REGION_GFX2, 0 ) /* sprites */
6111 	ROM_LOAD16_BYTE( "epr12093.b4", 0x000001, 0x010000, CRC(4891e7bb) SHA1(1be04fcabe9bfa8cf746263a5bcca67902a021a0) )
6112 	ROM_LOAD16_BYTE( "epr12097.b8", 0x000000, 0x010000, CRC(e645902c) SHA1(497cfcf6c25cc2e042e16dbcb1963d2223def15a) )
6113 	ROM_LOAD16_BYTE( "epr12091.b2", 0x020001, 0x010000, CRC(8409a243) SHA1(bcbb9510a6499d8147543d6befa5a49f4ac055d9) )
6114 	ROM_LOAD16_BYTE( "epr12095.b6", 0x020000, 0x010000, CRC(e774ec2c) SHA1(a4aa15ec7be5539a740ad02ff720458018dbc536) )
6115 	ROM_LOAD16_BYTE( "epr12090.b1", 0x040001, 0x010000, CRC(aeeecfca) SHA1(496124b170a725ad863c741d4e021ab947511e4c) )
6116 	ROM_LOAD16_BYTE( "epr12094.b5", 0x040000, 0x010000, CRC(615e4927) SHA1(d23f164973afa770714e284a77ddf10f18cc596b) )
6117 	ROM_LOAD16_BYTE( "epr12092.b3", 0x060001, 0x010000, CRC(5c2f0d90) SHA1(e0fbc0f841e4607ad232931368b16e81440a75c4) )
6118 	ROM_LOAD16_BYTE( "epr12096.b7", 0x060000, 0x010000, CRC(0cd59d6e) SHA1(caf754a461feffafcfe7bfc6e89da76c4db257c5) )
6119 
6120 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
6121 	ROM_LOAD( "epr12127.a10", 0x0000, 0x8000, CRC(0bb901bb) SHA1(c81b198df8e3b0ec568032c76addf0d1a1711194) )
6122 ROM_END
6123 
6124 /***************************************************************************/
6125 
6126 static MEMORY_READ16_START( wb3bl_readmem )
6127 	{ 0x000000, 0x03ffff, MRA16_ROM },
6128 	{ 0x400000, 0x40ffff, SYS16_MRA16_TILERAM },
6129 	{ 0x410000, 0x410fff, SYS16_MRA16_TEXTRAM },
6130 	{ 0x440000, 0x440fff, SYS16_MRA16_SPRITERAM },
6131 	{ 0x840000, 0x840fff, SYS16_MRA16_PALETTERAM },
6132 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
6133 	{ 0xc41004, 0xc41005, input_port_1_word_r }, // player2
6134 	{ 0xc41000, 0xc41001, input_port_2_word_r }, // service
6135 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
6136 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
6137 	{ 0xc46000, 0xc4601f, SYS16_MRA16_EXTRAM3 },
6138 	{ 0xff0000, 0xffffff, SYS16_MRA16_WORKINGRAM },
6139 MEMORY_END
6140 
6141 static MEMORY_WRITE16_START( wb3bl_writemem )
6142 	{ 0x000000, 0x03ffff, MWA16_ROM },
6143 	{ 0x3f0000, 0x3f0003, MWA16_NOP },
6144 	{ 0x400000, 0x40ffff, SYS16_MWA16_TILERAM },
6145 	{ 0x410000, 0x410fff, SYS16_MWA16_TEXTRAM },
6146 	{ 0x440000, 0x440fff, SYS16_MWA16_SPRITERAM },
6147 	{ 0x840000, 0x840fff, SYS16_MWA16_PALETTERAM },
6148 	{ 0xc42006, 0xc42007, sound_command_w },
6149 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
6150 	{ 0xc44000, 0xc44001, MWA16_NOP },
6151 	{ 0xc46000, 0xc4601f, SYS16_MWA16_EXTRAM3 },
6152 	{ 0xff0000, 0xffffff, SYS16_MWA16_WORKINGRAM },
6153 MEMORY_END
6154 
6155 /***************************************************************************/
6156 
6157 static void wb3bl_update_proc( void ){
6158 	sys16_fg_scrollx = sys16_workingram[0xc030/2];
6159 	sys16_bg_scrollx = sys16_workingram[0xc038/2];
6160 	sys16_fg_scrolly = sys16_workingram[0xc032/2];
6161 	sys16_bg_scrolly = sys16_workingram[0xc03c/2];
6162 
6163 	set_fg_page( sys16_textram[0x0ff6/2] );
6164 	set_bg_page( sys16_textram[0x0ff4/2] );
6165 }
6166 
MACHINE_INIT(wb3bl)6167 static MACHINE_INIT( wb3bl ){
6168 	static int bank[16] = {
6169 		2,0,
6170 		1,0,
6171 		3,0,
6172 		0,3,
6173 		0,0,
6174 		0,2,
6175 		0,1,
6176 		0,0
6177 	};
6178 	sys16_obj_bank = bank;
6179 
6180 	sys16_patch_code( 0x17058, 0x4e );
6181 	sys16_patch_code( 0x17059, 0xb9 );
6182 	sys16_patch_code( 0x1705a, 0x00 );
6183 	sys16_patch_code( 0x1705b, 0x00 );
6184 	sys16_patch_code( 0x1705c, 0x09 );
6185 	sys16_patch_code( 0x1705d, 0xdc );
6186 	sys16_patch_code( 0x1705e, 0x4e );
6187 	sys16_patch_code( 0x1705f, 0xf9 );
6188 	sys16_patch_code( 0x17060, 0x00 );
6189 	sys16_patch_code( 0x17061, 0x01 );
6190 	sys16_patch_code( 0x17062, 0x70 );
6191 	sys16_patch_code( 0x17063, 0xe0 );
6192 	sys16_patch_code( 0x1a3a, 0x31 );
6193 	sys16_patch_code( 0x1a3b, 0x7c );
6194 	sys16_patch_code( 0x1a3c, 0x80 );
6195 	sys16_patch_code( 0x1a3d, 0x00 );
6196 	sys16_patch_code( 0x23df8, 0x14 );
6197 	sys16_patch_code( 0x23df9, 0x41 );
6198 	sys16_patch_code( 0x23dfa, 0x10 );
6199 	sys16_patch_code( 0x23dfd, 0x14 );
6200 	sys16_patch_code( 0x23dff, 0x1c );
6201 
6202 	sys16_update_proc = wb3bl_update_proc;
6203 }
6204 
DRIVER_INIT(wb3bl)6205 static DRIVER_INIT( wb3bl )
6206 {
6207 	int i;
6208 
6209 	machine_init_sys16_onetime();
6210 
6211 	/* invert the graphics bits on the tiles */
6212 	for (i = 0; i < 0x30000; i++)
6213 		memory_region(REGION_GFX1)[i] ^= 0xff;
6214 }
6215 
6216 /***************************************************************************/
6217 
6218 static MACHINE_DRIVER_START( wb3bl )
6219 
6220 	/* basic machine hardware */
MDRV_IMPORT_FROM(system16)6221 	MDRV_IMPORT_FROM(system16)
6222 	MDRV_CPU_MODIFY("main")
6223 	MDRV_CPU_MEMORY(wb3bl_readmem,wb3bl_writemem)
6224 
6225 	MDRV_MACHINE_INIT(wb3bl)
6226 MACHINE_DRIVER_END
6227 
6228 /***************************************************************************/
6229 // sys16B
6230 ROM_START( wrestwar )
6231 	ROM_REGION( 0xc0000, REGION_CPU1, 0 ) /* 68000 code */
6232 	ROM_LOAD16_BYTE( "ww.a7", 0x00000, 0x20000, CRC(eeaba126) SHA1(ca1f630ff0cfc301205d2b8226d7614eadc117b7) )
6233 	ROM_LOAD16_BYTE( "ww.a5", 0x00001, 0x20000, CRC(6714600a) SHA1(8b04347f39bb8a8bc52b1bbfa367d42ea7c61bc9) )
6234 	/* empty 0x40000 - 0x80000 */
6235 	ROM_LOAD16_BYTE( "ww.a8", 0x80000, 0x20000, CRC(b77ba665) SHA1(b6a01ca857b5127ebb763f18cd4123185a7765a6) )
6236 	ROM_LOAD16_BYTE( "ww.a6", 0x80001, 0x20000, CRC(ddf075cb) SHA1(5d887f0d5786fa62757c593d937bba6f150c1b12) )
6237 
6238 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6239 	ROM_LOAD( "ww.a14", 0x00000, 0x20000, CRC(6a821ab9) SHA1(e69f7e534835d4c820746ffc3ad76c3b7bb9b02e) )
6240 	ROM_LOAD( "ww.a15", 0x20000, 0x20000, CRC(2b1a0751) SHA1(8cb1027ef3728f5bdfdb5e2df0f0421f743cdc0a) )
6241 	ROM_LOAD( "ww.a16", 0x40000, 0x20000, CRC(f6e190fe) SHA1(4c8b334fb22c449d8d00c8f49f5eccbe008e244f) )
6242 
6243 	ROM_REGION( 0x300000, REGION_GFX2, 0 ) //* sprites */
6244 	ROM_LOAD16_BYTE( "ww.b1",  0x000001, 0x10000, CRC(ffa7d368) SHA1(e5663ef1cbe8ab27be0919a3cd78d9a7747bbac6) )
6245 	ROM_CONTINUE( 0x040001, 0x10000 )
6246 	ROM_RELOAD  ( 0x020001, 0x10000 )
6247 	ROM_CONTINUE( 0x060001, 0x10000 )
6248 	ROM_LOAD16_BYTE( "ww.b5",  0x000000, 0x10000, CRC(8d7794c1) SHA1(ace87970cfa02ab8200173622633d0d70ef7aa9e) )
6249 	ROM_CONTINUE( 0x040000, 0x10000 )
6250 	ROM_RELOAD  ( 0x020000, 0x10000 )
6251 	ROM_CONTINUE( 0x060000, 0x10000 )
6252 	ROM_LOAD16_BYTE( "ww.b2",  0x080001, 0x10000, CRC(0ed343f2) SHA1(951bd616e63c5fe0aa3f387c9c12153b4f29675f) )
6253 	ROM_CONTINUE( 0x0c0001, 0x10000 )
6254 	ROM_RELOAD  ( 0x0a0001, 0x10000 )
6255 	ROM_CONTINUE( 0x0e0001, 0x10000 )
6256 	ROM_LOAD16_BYTE( "ww.b6",  0x080000, 0x10000, CRC(99458d58) SHA1(87020267610c5784e066bb4e3551852d27b4cf61) )
6257 	ROM_CONTINUE( 0x0c0000, 0x10000 )
6258 	ROM_RELOAD  ( 0x0a0000, 0x10000 )
6259 	ROM_CONTINUE( 0x0e0000, 0x10000 )
6260 	ROM_LOAD16_BYTE( "ww.b3",  0x100001, 0x10000, CRC(3087104d) SHA1(9ad0ea2b580820443c576cbb95d57467e32ea7b5) )
6261 	ROM_CONTINUE( 0x140001, 0x10000 )
6262 	ROM_RELOAD  ( 0x120001, 0x10000 )
6263 	ROM_CONTINUE( 0x160001, 0x10000 )
6264 	ROM_LOAD16_BYTE( "ww.b7",  0x100000, 0x10000, CRC(abcf9bed) SHA1(4f755cfd0304e877b798c31de50e15995f8c4edf) )
6265 	ROM_CONTINUE( 0x140000, 0x10000 )
6266 	ROM_RELOAD  ( 0x120000, 0x10000 )
6267 	ROM_CONTINUE( 0x160000, 0x10000 )
6268 	ROM_LOAD16_BYTE( "ww.b4",  0x180001, 0x10000, CRC(41b6068b) SHA1(c1f1f51c4e0f4320cef7821bccac5b0c9e915d9b) )
6269 	ROM_CONTINUE( 0x1c0001, 0x10000 )
6270 	ROM_RELOAD  ( 0x1a0001, 0x10000 )
6271 	ROM_CONTINUE( 0x1e0001, 0x10000 )
6272 	ROM_LOAD16_BYTE( "ww.b8",  0x180000, 0x10000, CRC(97eac164) SHA1(2bb62e6d8b2d662e9b31aa8d238a51af7c7905e8) )
6273 	ROM_CONTINUE( 0x1c0000, 0x10000 )
6274 	ROM_RELOAD  ( 0x1a0000, 0x10000 )
6275 	ROM_CONTINUE( 0x1e0000, 0x10000 )
6276 	ROM_LOAD16_BYTE( "ww.a1",  0x200001, 0x10000, CRC(260311c5) SHA1(6b52b671252aef992c0546468c44b722bdb6a649) )
6277 	ROM_CONTINUE( 0x240001, 0x10000 )
6278 	ROM_RELOAD  ( 0x220001, 0x10000 )
6279 	ROM_CONTINUE( 0x260001, 0x10000 )
6280 	ROM_LOAD16_BYTE( "ww.b10", 0x200000, 0x10000, CRC(35a4b1b1) SHA1(c3b8ba708f9f2822e48e52ea74d7e96f08182ac4) )
6281 	ROM_CONTINUE( 0x240000, 0x10000 )
6282 	ROM_RELOAD  ( 0x220000, 0x10000 )
6283 	ROM_CONTINUE( 0x260000, 0x10000 )
6284 	ROM_LOAD16_BYTE( "ww.a2",  0x280001, 0x10000, CRC(12e38a5c) SHA1(05558a370b4e8100d2fa5e700a5ab76771ff7729) )
6285 	ROM_RELOAD  ( 0x2a0001, 0x10000 )
6286 	ROM_LOAD16_BYTE( "ww.b11", 0x280000, 0x10000, CRC(fa06fd24) SHA1(20a578b82a75fe96a230c91645108fdc8b5bae21) )
6287 	ROM_RELOAD  ( 0x2a0000, 0x10000 )
6288 
6289 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
6290 	ROM_LOAD( "ww.a10", 0x00000, 0x08000, CRC(c3609607) SHA1(2e0acb775c60851bf0b2037b91b07ead061d5862) )
6291 	ROM_LOAD( "ww.a11", 0x10000, 0x20000, CRC(fb9a7f29) SHA1(7ba79c18ab4e586be2deccd78e4479d55eb75a7e) )
6292 	ROM_LOAD( "ww.a12", 0x30000, 0x20000, CRC(d6617b19) SHA1(aa36d257eaa52c8c871a39aaa2f29c203525dbaf) )
6293 ROM_END
6294 
6295 /***************************************************************************/
6296 
6297 static READ16_HANDLER( ww_io_service_r ){
6298 	return input_port_2_word_r(offset,0) | (sys16_workingram[0x2082/2] & 0xff00);
6299 }
6300 
MEMORY_READ16_START(wrestwar_readmem)6301 static MEMORY_READ16_START( wrestwar_readmem )
6302 	{ 0x000000, 0x0bffff, MRA16_ROM },
6303 	{ 0x100000, 0x10ffff, SYS16_MRA16_TILERAM },
6304 	{ 0x110000, 0x111fff, SYS16_MRA16_TEXTRAM }, //*
6305 	{ 0x200000, 0x200fff, SYS16_MRA16_SPRITERAM },
6306 	{ 0x300000, 0x300fff, SYS16_MRA16_PALETTERAM },
6307 	{ 0x400000, 0x400003, SYS16_MRA16_EXTRAM },
6308 	{ 0xc41002, 0xc41003, input_port_0_word_r }, // player1
6309 	{ 0xc41006, 0xc41007, input_port_1_word_r }, // player2
6310 	{ 0xc42002, 0xc42003, input_port_3_word_r }, // dip1
6311 	{ 0xc42000, 0xc42001, input_port_4_word_r }, // dip2
6312 	{ 0xffe082, 0xffe083, ww_io_service_r },
6313 	{ 0xffc000, 0xffffff, SYS16_MRA16_WORKINGRAM },
6314 MEMORY_END
6315 
6316 static MEMORY_WRITE16_START( wrestwar_writemem )
6317 	{ 0x000000, 0x0bffff, MWA16_ROM },
6318 	{ 0x100000, 0x10ffff, SYS16_MWA16_TILERAM },
6319 	{ 0x110000, 0x111fff, SYS16_MWA16_TEXTRAM },
6320 	{ 0x200000, 0x200fff, SYS16_MWA16_SPRITERAM },
6321 	{ 0x300000, 0x300fff, SYS16_MWA16_PALETTERAM },
6322 	{ 0x400000, 0x400003, SYS16_MWA16_EXTRAM },
6323 	{ 0xc40000, 0xc40001, sys16_coinctrl_w },
6324 	{ 0xc43034, 0xc43035, MWA16_NOP },
6325 	{ 0xffe08e, 0xffe08f, sound_command_w },
6326 	{ 0xffc000, 0xffffff, SYS16_MWA16_WORKINGRAM },
6327 MEMORY_END
6328 
6329 /***************************************************************************/
6330 
6331 static void wrestwar_update_proc( void ){
6332 	set_fg_page( sys16_textram[0x740] );
6333 	set_bg_page( sys16_textram[0x741] );
6334 	sys16_fg_scrolly = sys16_textram[0x748];
6335 	sys16_bg_scrolly = sys16_textram[0x749];
6336 	sys16_fg_scrollx = sys16_textram[0x74c];
6337 	sys16_bg_scrollx = sys16_textram[0x74d];
6338 
6339 	set_tile_bank( sys16_extraram[1] );
6340 }
6341 
MACHINE_INIT(wrestwar)6342 static MACHINE_INIT( wrestwar ){
6343 	sys16_bg_priority_mode=2;
6344 	sys16_bg_priority_value=0x0a00;
6345 	sys16_update_proc = wrestwar_update_proc;
6346 	sys16_wwfix = 1; //*
6347 }
6348 
DRIVER_INIT(wrestwar)6349 static DRIVER_INIT( wrestwar ){
6350 	machine_init_sys16_onetime();
6351 	sys16_bg1_trans=1;
6352 	sys16_MaxShadowColors=16;
6353 	sys18_splittab_bg_y=&sys16_textram[0x0f40];
6354 	sys18_splittab_fg_y=&sys16_textram[0x0f00];
6355 	sys16_rowscroll_scroll=0x8000;
6356 }
6357 /***************************************************************************/
6358 
INPUT_PORTS_START(wrestwar)6359 INPUT_PORTS_START( wrestwar )
6360 	SYS16_JOY1
6361 	SYS16_JOY2
6362 	SYS16_SERVICE
6363 	SYS16_COINAGE
6364 
6365 PORT_START	/* DSW1 */
6366 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
6367 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
6368 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6369 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
6370 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
6371 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6372 	PORT_DIPNAME( 0x0c, 0x0c, "Round Time" )
6373 	PORT_DIPSETTING(    0x00, "100" )
6374 	PORT_DIPSETTING(    0x0c, "110" )
6375 	PORT_DIPSETTING(    0x08, "120" )
6376 	PORT_DIPSETTING(    0x04, "130" )
6377 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
6378 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
6379 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
6380 	PORT_DIPNAME( 0x20, 0x20, "Continuation" )
6381 	PORT_DIPSETTING(    0x20, "Continue" )
6382 	PORT_DIPSETTING(    0x00, "No Continue" )
6383 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) )
6384 	PORT_DIPSETTING(    0x80, "Easy" )
6385 	PORT_DIPSETTING(    0xc0, "Normal" )
6386 	PORT_DIPSETTING(    0x40, "Hard" )
6387 	PORT_DIPSETTING(    0x00, "Hardest" )
6388 
6389 INPUT_PORTS_END
6390 
6391 /***************************************************************************/
6392 
6393 static MACHINE_DRIVER_START( wrestwar )
6394 
6395 	/* basic machine hardware */
6396 	MDRV_IMPORT_FROM(system16_7759)
6397 	MDRV_CPU_MODIFY("main")
6398 	MDRV_CPU_MEMORY(wrestwar_readmem,wrestwar_writemem)
6399 
6400 	MDRV_MACHINE_INIT(wrestwar)
6401 MACHINE_DRIVER_END
6402 
6403 /*****************************************************************************/
6404 /* Dummy drivers for games that don't have a working clone and are protected */
6405 /*****************************************************************************/
6406 
6407 static MEMORY_READ16_START( sys16_dummy_readmem )
6408 	{ 0x000000, 0x0fffff, MRA16_ROM },
6409 	{ 0xff0000, 0xffffff, SYS16_MRA16_WORKINGRAM },
6410 MEMORY_END
6411 
6412 static MEMORY_WRITE16_START( sys16_dummy_writemem )
6413 	{ 0x000000, 0x0fffff, MWA16_ROM },
6414 	{ 0xff0000, 0xffffff, SYS16_MWA16_WORKINGRAM },
6415 MEMORY_END
6416 
6417 static MACHINE_INIT( sys16_dummy ){
6418 }
6419 
DRIVER_INIT(s16dummy)6420 static DRIVER_INIT( s16dummy )
6421 {
6422 	machine_init_sys16_onetime();
6423 }
6424 
6425 INPUT_PORTS_START( s16dummy )
6426 INPUT_PORTS_END
6427 
6428 static MACHINE_DRIVER_START( s16dummy )
6429 
6430 	/* basic machine hardware */
6431 	MDRV_IMPORT_FROM(system16)
6432 	MDRV_CPU_MODIFY("main")
6433 	MDRV_CPU_MEMORY(sys16_dummy_readmem,sys16_dummy_writemem)
6434 
6435 	MDRV_MACHINE_INIT(sys16_dummy)
6436 MACHINE_DRIVER_END
6437 
6438 /*****************************************************************************/
6439 // Cotton
6440 
6441 ROM_START( cotton )
6442 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6443 // custom cpu 317-?????
6444 	ROM_LOAD16_BYTE( "epr13858.a7", 0x000000, 0x20000, CRC(276f42fe) SHA1(47d2f910f6f101628cb0c660e5fd12c0e331bd99) )
6445 	ROM_LOAD16_BYTE( "epr13856.a5", 0x000001, 0x20000, CRC(14e6b5e7) SHA1(708c69cddd1c60e729a74f539d40e67b2a6d9d6f) )
6446 	ROM_LOAD16_BYTE( "epr13859.a8", 0x040000, 0x20000, CRC(4703ef9d) SHA1(8b03a71736a599c337ad5d95cbc812ea38b0cc43) )
6447 	ROM_LOAD16_BYTE( "epr13857.a6", 0x040001, 0x20000, CRC(de37e527) SHA1(124ce7c7eef1199c89735556cebf71255573a155) )
6448 
6449 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6450 	ROM_LOAD( "scr01.rom", 0x00000, 0x20000, CRC(a47354b6) SHA1(ce52813b245f1d491a134d4bd5ab074e71d20129) )
6451 	ROM_LOAD( "scr11.rom", 0x20000, 0x20000, CRC(d38424b5) SHA1(884ca190936aee2d2cac86491d4d0cdf4a45efe5) )
6452 	ROM_LOAD( "scr02.rom", 0x40000, 0x20000, CRC(8c990026) SHA1(07b4510936376c171f3b31d87ac6154361eb0cbc) )
6453 	ROM_LOAD( "scr12.rom", 0x60000, 0x20000, CRC(21c15b8a) SHA1(690d92420ec5465885e0f4870419992961420e33) )
6454 	ROM_LOAD( "scr03.rom", 0x80000, 0x20000, CRC(d2b175bf) SHA1(897b7c794d0e7229ea5e9a682f64266a947a818f) )
6455 	ROM_LOAD( "scr13.rom", 0xa0000, 0x20000, CRC(b9d62531) SHA1(e8c5e7b93339c00f75a3b66ce18f7838255577be) )
6456 
6457 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
6458 	ROM_LOAD16_BYTE( "obj0-e.rom", 0x000001, 0x20000, CRC(ab4b3468) SHA1(3071654a295152d609d2c2c1d4153b5ba3f174d5) )
6459 	ROM_LOAD16_BYTE( "obj0-o.rom", 0x000000, 0x20000, CRC(7024f404) SHA1(4b2f9cdfdd97218797a3e386106e53f713b8650d) )
6460 	ROM_LOAD16_BYTE( "obj1-e.rom", 0x040001, 0x20000, CRC(69b41ac3) SHA1(4c5a85e5a5ca9f8260557d4e97eb091dd857d63a) )
6461 	ROM_LOAD16_BYTE( "obj1-o.rom", 0x040000, 0x20000, CRC(6169bba4) SHA1(a24a418ee7cd0c1109870a2e7a91e430671897ed) )
6462 	ROM_LOAD16_BYTE( "obj2-e.rom", 0x080001, 0x20000, CRC(0801cf02) SHA1(3007bbbce2f327f4700e78e2b8672f4482189cd7) )
6463 	ROM_LOAD16_BYTE( "obj2-o.rom", 0x080000, 0x20000, CRC(b014f02d) SHA1(46f5ed0b44cee03a6aec9ec57b506bb15bf35e47) )
6464 	ROM_LOAD16_BYTE( "obj3-e.rom", 0x0c0001, 0x20000, CRC(f066f315) SHA1(bbeb24daaded994240d0cdb5cec2e662b677cb75) )
6465 	ROM_LOAD16_BYTE( "obj3-o.rom", 0x0c0000, 0x20000, CRC(e62a7cd6) SHA1(1e6d06345f7b6cef2e887d9b9cd45e0155140c5e) )
6466 	ROM_LOAD16_BYTE( "obj4-e.rom", 0x100001, 0x20000, CRC(1bd145f3) SHA1(4744ffe9fbda453785345b46eb61b56730048f42) )
6467 	ROM_LOAD16_BYTE( "obj4-o.rom", 0x100000, 0x20000, CRC(943aba8b) SHA1(d0dd1665a8d9495a92ae4e35d6b15b966e8d43cd) )
6468 	ROM_LOAD16_BYTE( "obj5-e.rom", 0x140001, 0x20000, CRC(4fd59bff) SHA1(2b4630e49b60593d668fe34d8faf712ac6928c14) )
6469 	ROM_LOAD16_BYTE( "obj5-o.rom", 0x140000, 0x20000, CRC(7ea93200) SHA1(8e2d8cd48a12306772653f25bddc99ad0597a698) )
6470 	ROM_LOAD16_BYTE( "obj6-e.rom", 0x180001, 0x20000, CRC(6a66868d) SHA1(60961a8b1f193d0b08c1906f4a79123fa0db443a) )
6471 	ROM_LOAD16_BYTE( "obj6-o.rom", 0x180000, 0x20000, CRC(1c942190) SHA1(514fac5cc7362e9e3168c84975c8fe0e34bb4471) )
6472 	ROM_LOAD16_BYTE( "obj7-e.rom", 0x1c0001, 0x20000, CRC(1c5ffad8) SHA1(13e5886ceece564cc71ba7f43a26d2b1782ccfc8) )
6473 	ROM_LOAD16_BYTE( "obj7-o.rom", 0x1c0000, 0x20000, CRC(856f3ee2) SHA1(72346d887ff9738ebe93acb2e3f8cd80d494621e) )
6474 
6475 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
6476 	ROM_LOAD( "s-prog.rom",	 0x00000, 0x08000, CRC(6a57b027) SHA1(8f9de548df203605bb4ab9eececf09739b55adf1) )
6477 	ROM_LOAD( "speech0.rom", 0x10000, 0x20000, CRC(4d21153f) SHA1(173ddd9633f255c39ca508c37d0562e374704e7b) )
6478 ROM_END
6479 
6480 
6481 ROM_START( cottona )
6482 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6483 // custom cpu 317-0181a
6484 	ROM_LOAD16_BYTE( "ep13921a.a7", 0x000000, 0x20000, CRC(f047a037) SHA1(e4a9eeb1f2cf6b5ee3b2fcf74be917ffd3e6ca0e) )
6485 	ROM_LOAD16_BYTE( "ep13919a.a5", 0x000001, 0x20000, CRC(651108b1) SHA1(1ab32085ca1a8cb3d464059b0abb10253decd423) )
6486 	ROM_LOAD16_BYTE( "ep13922a.a8", 0x040000, 0x20000, CRC(1ca248c5) SHA1(f7df2ccf54a3f1f09334c3b3df3dcd2ec33f99d1) )
6487 	ROM_LOAD16_BYTE( "ep13920a.a6", 0x040001, 0x20000, CRC(fa3610f9) SHA1(6127496bf7cd47d4343291fc2e11673d77ccc550) )
6488 
6489 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6490 	ROM_LOAD( "scr01.rom", 0x00000, 0x20000, CRC(a47354b6) SHA1(ce52813b245f1d491a134d4bd5ab074e71d20129) )
6491 	ROM_LOAD( "scr11.rom", 0x20000, 0x20000, CRC(d38424b5) SHA1(884ca190936aee2d2cac86491d4d0cdf4a45efe5) )
6492 	ROM_LOAD( "scr02.rom", 0x40000, 0x20000, CRC(8c990026) SHA1(07b4510936376c171f3b31d87ac6154361eb0cbc) )
6493 	ROM_LOAD( "scr12.rom", 0x60000, 0x20000, CRC(21c15b8a) SHA1(690d92420ec5465885e0f4870419992961420e33) )
6494 	ROM_LOAD( "scr03.rom", 0x80000, 0x20000, CRC(d2b175bf) SHA1(897b7c794d0e7229ea5e9a682f64266a947a818f) )
6495 	ROM_LOAD( "scr13.rom", 0xa0000, 0x20000, CRC(b9d62531) SHA1(e8c5e7b93339c00f75a3b66ce18f7838255577be) )
6496 
6497 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
6498 	ROM_LOAD16_BYTE( "obj0-e.rom", 0x000001, 0x20000, CRC(ab4b3468) SHA1(3071654a295152d609d2c2c1d4153b5ba3f174d5) )
6499 	ROM_LOAD16_BYTE( "obj0-o.rom", 0x000000, 0x20000, CRC(7024f404) SHA1(4b2f9cdfdd97218797a3e386106e53f713b8650d) )
6500 	ROM_LOAD16_BYTE( "obj1-e.rom", 0x040001, 0x20000, CRC(69b41ac3) SHA1(4c5a85e5a5ca9f8260557d4e97eb091dd857d63a) )
6501 	ROM_LOAD16_BYTE( "obj1-o.rom", 0x040000, 0x20000, CRC(6169bba4) SHA1(a24a418ee7cd0c1109870a2e7a91e430671897ed) )
6502 	ROM_LOAD16_BYTE( "obj2-e.rom", 0x080001, 0x20000, CRC(0801cf02) SHA1(3007bbbce2f327f4700e78e2b8672f4482189cd7) )
6503 	ROM_LOAD16_BYTE( "obj2-o.rom", 0x080000, 0x20000, CRC(b014f02d) SHA1(46f5ed0b44cee03a6aec9ec57b506bb15bf35e47) )
6504 	ROM_LOAD16_BYTE( "obj3-e.rom", 0x0c0001, 0x20000, CRC(f066f315) SHA1(bbeb24daaded994240d0cdb5cec2e662b677cb75) )
6505 	ROM_LOAD16_BYTE( "obj3-o.rom", 0x0c0000, 0x20000, CRC(e62a7cd6) SHA1(1e6d06345f7b6cef2e887d9b9cd45e0155140c5e) )
6506 	ROM_LOAD16_BYTE( "obj4-e.rom", 0x100001, 0x20000, CRC(1bd145f3) SHA1(4744ffe9fbda453785345b46eb61b56730048f42) )
6507 	ROM_LOAD16_BYTE( "obj4-o.rom", 0x100000, 0x20000, CRC(943aba8b) SHA1(d0dd1665a8d9495a92ae4e35d6b15b966e8d43cd) )
6508 	ROM_LOAD16_BYTE( "obj5-e.rom", 0x140001, 0x20000, CRC(4fd59bff) SHA1(2b4630e49b60593d668fe34d8faf712ac6928c14) )
6509 	ROM_LOAD16_BYTE( "obj5-o.rom", 0x140000, 0x20000, CRC(7ea93200) SHA1(8e2d8cd48a12306772653f25bddc99ad0597a698) )
6510 	ROM_LOAD16_BYTE( "obj6-e.rom", 0x180001, 0x20000, CRC(6a66868d) SHA1(60961a8b1f193d0b08c1906f4a79123fa0db443a) )
6511 	ROM_LOAD16_BYTE( "obj6-o.rom", 0x180000, 0x20000, CRC(1c942190) SHA1(514fac5cc7362e9e3168c84975c8fe0e34bb4471) )
6512 	ROM_LOAD16_BYTE( "obj7-e.rom", 0x1c0001, 0x20000, CRC(1c5ffad8) SHA1(13e5886ceece564cc71ba7f43a26d2b1782ccfc8) )
6513 	ROM_LOAD16_BYTE( "obj7-o.rom", 0x1c0000, 0x20000, CRC(856f3ee2) SHA1(72346d887ff9738ebe93acb2e3f8cd80d494621e) )
6514 
6515 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
6516 	ROM_LOAD( "s-prog.rom",	 0x00000, 0x08000, CRC(6a57b027) SHA1(8f9de548df203605bb4ab9eececf09739b55adf1) )
6517 	ROM_LOAD( "speech0.rom", 0x10000, 0x20000, CRC(4d21153f) SHA1(173ddd9633f255c39ca508c37d0562e374704e7b) )
6518 ROM_END
6519 
6520 
6521 /*****************************************************************************/
6522 // Dunk Shot
6523 
6524 ROM_START( dunkshot )
6525 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6526 	ROM_LOAD16_BYTE( "10468.bin", 0x000000, 0x8000, CRC(e2d5f97a) SHA1(bf7b4a029580633fee65be89d5c9c83ff76a8484) )
6527 	ROM_LOAD16_BYTE( "10467.bin", 0x000001, 0x8000, CRC(29774114) SHA1(3a88739213afd4ef7807ddbd3acdfddeb9636fd3) )
6528 	ROM_LOAD16_BYTE( "10470.bin", 0x010000, 0x8000, CRC(8c60761f) SHA1(aba009f482df7023b460ab20e50225ab5f6dff6d) )
6529 	ROM_LOAD16_BYTE( "10469.bin", 0x010001, 0x8000, CRC(aa442b81) SHA1(24f455bc59147ccd948fd89e2048a118b5591d84) )
6530 	ROM_LOAD16_BYTE( "10472.bin", 0x020000, 0x8000, CRC(206027a6) SHA1(2b7d4754639d7023bc00f5e0fe9de4d2a971e487) )
6531 	ROM_LOAD16_BYTE( "10471.bin", 0x020001, 0x8000, CRC(22777314) SHA1(fbc35505a94c8d4bdb44ee058e9e2e9e9b377c5c) )
6532 
6533 	ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6534 	ROM_LOAD( "10485.bin", 0x00000, 0x8000, CRC(f16dda29) SHA1(88f3aa5e6f827e124c5bba0978a6ccfde8cb6fe7) )
6535 	ROM_LOAD( "10486.bin", 0x08000, 0x8000, CRC(311d973c) SHA1(c4765917ba788ed45a801499f3d873a86c418eb8) )
6536 	ROM_LOAD( "10487.bin", 0x10000, 0x8000, CRC(a8fb179f) SHA1(8a748d537b3d327c41d6dac17342de9be068e53b) )
6537 
6538 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites */
6539 	ROM_LOAD16_BYTE( "10481.bin", 0x00001, 0x8000, CRC(feb04bc9) SHA1(233dc8e3b887a88ac114723d58a909a58f0ae771) )
6540 	ROM_LOAD16_BYTE( "10477.bin", 0x00000, 0x8000, CRC(f9d3b2cb) SHA1(b530fe16882c718122bfd1de098f39e54993de28) )
6541 	ROM_LOAD16_BYTE( "10482.bin", 0x10001, 0x8000, CRC(5bc07618) SHA1(f4c88f81b407d467f958181770ea4fd32aab3daf) )
6542 	ROM_LOAD16_BYTE( "10478.bin", 0x10000, 0x8000, CRC(5b5c5c92) SHA1(1c6f1cafa0788678c80ade11560f4a8d8bb7272a) )
6543 	ROM_LOAD16_BYTE( "10483.bin", 0x20001, 0x8000, CRC(7cab4f9e) SHA1(2310a9fe604f78d74d84bea301c95e6f0e6a6085) )
6544 	ROM_LOAD16_BYTE( "10479.bin", 0x20000, 0x8000, CRC(e84190a0) SHA1(23a8799adf81e1884a8c6b4c55397b8bca2f1850) )
6545 	ROM_LOAD16_BYTE( "10484.bin", 0x30001, 0x8000, CRC(bcb5fcc9) SHA1(eb8d557c908e6265f96a5a7e832e19776a9e576c) )
6546 	ROM_LOAD16_BYTE( "10480.bin", 0x30000, 0x8000, CRC(5dffd9dd) SHA1(256b24613c952d89dbb9971c9091d5a8a7f363b0) )
6547 
6548 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) //* sound CPU */
6549 	ROM_LOAD( "10473.bin",	 0x00000, 0x08000, CRC(7f1f5a27) SHA1(7ff91b95c883b395ab4ff5e440d78e553a09e623) )
6550 	ROM_LOAD( "10474.bin",   0x10000, 0x08000, CRC(419a656e) SHA1(aa734ae835761badeb069f99acc5fded2a19b3a3) )
6551 	ROM_LOAD( "10475.bin",   0x18000, 0x08000, CRC(17d55e85) SHA1(0c414bafecbfaa82679cc155f15f5255c186358d) )
6552 	ROM_LOAD( "10476.bin",   0x20000, 0x08000, CRC(a6be0956) SHA1(fc4d6e25e0b46679f94fddbb1850fb0b02f8d84b) )
6553 ROM_END
6554 
6555 /*****************************************************************************/
6556 // MVP
6557 
6558 ROM_START( mvp )
6559 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6560 	ROM_LOAD16_BYTE( "13000.rom", 0x000000, 0x40000, CRC(2e0e21ec) SHA1(3b72da0746fb0ece4311d6e935bc6b9ece3549ec) )
6561 	ROM_LOAD16_BYTE( "12999.rom", 0x000001, 0x40000, CRC(fd213d28) SHA1(5324ee402a2f28a6c152905493da0052d4976b29) )
6562 
6563 	ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6564 	ROM_LOAD( "13011.rom", 0x00000, 0x40000, CRC(1cb871fc) SHA1(d20a46e538d57b25d78faa7deb9c11519b4111d3) )
6565 	ROM_LOAD( "13012.rom", 0x40000, 0x40000, CRC(b75e6821) SHA1(a2b049995755d79a136a4b4b0dc78d902c5b9eed) )
6566 	ROM_LOAD( "13013.rom", 0x80000, 0x40000, CRC(f1944a3c) SHA1(db59cadb435c26f3a957bd4996a083fa30c8bbd0) )
6567 
6568 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* sprites */
6569 	ROM_LOAD16_BYTE( "13010.rom", 0x000001, 0x40000, CRC(df37c567) SHA1(05c959e379a3e20fe5e70912410e3bae4db13905) )
6570 	ROM_LOAD16_BYTE( "13009.rom", 0x000000, 0x40000, CRC(126d2e37) SHA1(91317d3bcc4f918a8607cc0c383181c3641ebccf) )
6571 	ROM_LOAD16_BYTE( "13006.rom", 0x080001, 0x40000, CRC(2e9afd2f) SHA1(7fe0929e70e061878065fab2d26309066d14c038) )
6572 	ROM_LOAD16_BYTE( "13003.rom", 0x080000, 0x40000, CRC(21424151) SHA1(156e15eee9ff7122c30a42bfec0b307073b7a375) )
6573 	ROM_LOAD16_BYTE( "13007.rom", 0x100001, 0x40000, CRC(55c8605b) SHA1(6c81e5f9bcd61f6e67c87ea5b25a8fe1ee50f14d) )
6574 	ROM_LOAD16_BYTE( "13004.rom", 0x100000, 0x40000, CRC(0aa09dd3) SHA1(0cd58d29efa714e52c494ee1ec8a0e90c0a03e3c) )
6575 	ROM_LOAD16_BYTE( "13008.rom", 0x180001, 0x40000, CRC(b3d46dfc) SHA1(27a5c58d5fd974fbbb12b535a49aa7fb3f7d3f6a) )
6576 	ROM_LOAD16_BYTE( "13005.rom", 0x180000, 0x40000, CRC(c899c810) SHA1(a251cfd8f99f2c2f98585cc9ba1d86f08b2eca51) )
6577 
6578 	ROM_REGION( 0x50000, REGION_CPU2, 0 ) /* sound CPU */
6579 	ROM_LOAD( "13002.rom",	 0x00000, 0x08000, CRC(1b6e1515) SHA1(1816d48dcb1bfd819a2cfa55fb51e1ca04ad4feb) )
6580 	ROM_LOAD( "13001.rom",   0x10000, 0x40000, CRC(e8cace8c) SHA1(5f47b935d927f2aa5f7a5f6dc52f5380baebe1bb) )
6581 ROM_END
6582 
6583 /*****************************************************************************/
6584 // Excite League
6585 
6586 ROM_START( exctleag )
6587 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6588 	ROM_LOAD16_BYTE( "epr11937.a02",0x00000,0x10000, CRC(4ebda367) SHA1(ab4db50eb0d2e10a3b4b7fc0f4bdc82412379809) )
6589 	ROM_LOAD16_BYTE( "epr11936.a01",0x00001,0x10000, CRC(0863de60) SHA1(540a5cae2623bce296c07603239f737a782e3b0b) )
6590 	ROM_LOAD16_BYTE( "epr11939.a04",0x20000,0x10000, CRC(117dd98f) SHA1(0234c2cf3421849854bec3711ab64f50f12cc5dd) )
6591 	ROM_LOAD16_BYTE( "epr11938.a03",0x20001,0x10000, CRC(07c08d47) SHA1(47d3445cfa2514918206cd29a203837a9f434b42) )
6592 	ROM_LOAD16_BYTE( "epr11941.a06",0x40000,0x10000, CRC(4df2d451) SHA1(644541b20e034a0149117874021c158bd3759e35) )
6593 	ROM_LOAD16_BYTE( "epr11940.a05",0x40001,0x10000, CRC(dec83274) SHA1(85919bcd372fbfb9f06c34897b4d28d08ef3c9d1) )
6594 
6595 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6596 	ROM_LOAD( "epr11942.b09",0x00000,0x10000, CRC(eb70e827) SHA1(0617b4411a90087c277354c3653fe994bc4fc580) )
6597 	ROM_LOAD( "epr11943.b10",0x10000,0x10000, CRC(d97c8982) SHA1(3e604af1771caba3aa213796c4a0812a5e352580) )
6598 	ROM_LOAD( "epr11944.b11",0x20000,0x10000, CRC(a75cae80) SHA1(17c148a33b09b5403e68f5d96e506545c2ced206) )
6599 
6600 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
6601 	ROM_LOAD16_BYTE( "epr11950.b01",0x00001,0x10000, CRC(af497849) SHA1(c5fdca8d3b1d83e3d377a49ecdc0fc53714afc09) )
6602 	ROM_LOAD16_BYTE( "epr11951.b02",0x00000,0x10000, CRC(c04fa974) SHA1(b1a4fb8522126113d7857d559f169f09c5f51a13) )
6603 	ROM_LOAD16_BYTE( "epr11952.b03",0x20001,0x10000, CRC(e64a9761) SHA1(e16b3a30165710abc11ab0f358cb7ef875cc672c) )
6604 	ROM_LOAD16_BYTE( "epr11953.b04",0x20000,0x10000, CRC(4cae3999) SHA1(22089e43a5e2e4fe672015366154e24ad38d3c19) )
6605 	ROM_LOAD16_BYTE( "epr11954.b05",0x40001,0x10000, CRC(5fa2106c) SHA1(2f2620fa52d07667dff4720fea32a6615d99e522) )
6606 	ROM_LOAD16_BYTE( "epr11955.b06",0x40000,0x10000, CRC(86a0c368) SHA1(ab8d6ab5c571121bf9c5d40727b1ef385a033845) )
6607 	ROM_LOAD16_BYTE( "epr11956.b07",0x60001,0x10000, CRC(aff5c2fa) SHA1(1ec76193f2abf3547fa610761147436548beccbc) )
6608 	ROM_LOAD16_BYTE( "epr11957.b08",0x60000,0x10000, CRC(218f835b) SHA1(bfef3ec45665a5921c095da34701528d4d4e0e3a) )
6609 
6610 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
6611 	ROM_LOAD( "epr11945.a07",0x00000,0x8000, CRC(c2a83012) SHA1(b3de8af803497438aa3e110a9c608ac290f7d1e8) )
6612 	ROM_LOAD( "epr11140.a08",0x10000,0x8000, CRC(b297371b) SHA1(4e787aa9ee2aeab4da30237644421df407b684a5) )
6613 	ROM_LOAD( "epr11141.a09",0x18000,0x8000, CRC(19756aa6) SHA1(81597e17b848f6a41f5fb117296e7508297815e4) )
6614 	ROM_LOAD( "epr11142.a10",0x20000,0x8000, CRC(25d26c66) SHA1(2485afb859f84a9cc90b2091e9ae4eef263f42b3) )
6615 	ROM_LOAD( "epr11143.a11",0x28000,0x8000, CRC(848b7b77) SHA1(8903a39f8f0ffb4ce32117d33282876196516c30) )
6616 
6617 ROM_END
6618 
6619 
6620 
6621 /*****************************************************************************/
6622 // Super League
6623 
6624 ROM_START( suprleag )
6625 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6626 	ROM_LOAD16_BYTE( "epr11131.a02",0x00000,0x10000, CRC(9b78c2cc) SHA1(9a453dd999120590c52b17f8ff2b49fd2fde0b35) )
6627 	ROM_LOAD16_BYTE( "epr11130.a01",0x00001,0x10000, CRC(e2451676) SHA1(d2f71d9fca933e63e2bd5ee48217801ab0cb049c) )
6628 	ROM_LOAD16_BYTE( "epr11133.a04",0x20000,0x10000, CRC(eed72f37) SHA1(80b68abdb90a63b30754dd031e85b1020dcc0cc4) )
6629 	ROM_LOAD16_BYTE( "epr11132.a03",0x20001,0x10000, CRC(ff199325) SHA1(2ece15b6b79ec3f948f7bec623e1df281cf89382) )
6630 	ROM_LOAD16_BYTE( "epr11135.a06",0x40000,0x10000, CRC(3735e0e1) SHA1(ae2910099909245993ee29e5a03a5591f20962c7) )
6631 	ROM_LOAD16_BYTE( "epr11134.a05",0x40001,0x10000, CRC(ccd857f5) SHA1(2566bb458bdd365db403e8229ecdad79e23076a1) )
6632 
6633 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6634 	ROM_LOAD( "epr11136.b09",0x00000,0x10000, CRC(c3860ce4) SHA1(af7618f3b5a0e8d6374877c7815ba69fff218a45) )
6635 	ROM_LOAD( "epr11137.b10",0x10000,0x10000, CRC(92d96187) SHA1(45138795992b9842d5b0c86a96b300445bf12060) )
6636 	ROM_LOAD( "epr11138.b11",0x20000,0x10000, CRC(c01dc773) SHA1(b27da906186e1272cdd6f8d5e5a979f6623255ac) )
6637 
6638 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
6639 	ROM_LOAD16_BYTE( "epr11144.b01",0x00001,0x10000, CRC(b31de51c) SHA1(011a79a37d32ab4545187e28e61f27aa0601f686) )
6640 	ROM_LOAD16_BYTE( "epr11145.b02",0x00000,0x10000, CRC(4223d2c3) SHA1(310d5c411eeaf69fe0dc9350e6bfe6dfe950b373) )
6641 	ROM_LOAD16_BYTE( "epr11146.b03",0x20001,0x10000, CRC(bf0359b6) SHA1(6cd5e6b685e53f062d5b04888f225c808aab3c4c) )
6642 	ROM_LOAD16_BYTE( "epr11147.b04",0x20000,0x10000, CRC(3e592772) SHA1(b0fe2c680871dcdbe655c0b1b98bcf8118fb3a50) )
6643 	ROM_LOAD16_BYTE( "epr11148.b05",0x40001,0x10000, CRC(126e1309) SHA1(7386ac5ac57325d8f661caf8cab0b19a42c0309d) )
6644 	ROM_LOAD16_BYTE( "epr11149.b06",0x40000,0x10000, CRC(694d3765) SHA1(4aa8590648d5b8eb5db489edefb1326ecd01ea2c) )
6645 	ROM_LOAD16_BYTE( "epr11150.b07",0x60001,0x10000, CRC(9fc0aded) SHA1(7ad9e8fe79a0a07c748b0c20ad46c0e00de8a23a) )
6646 	ROM_LOAD16_BYTE( "epr11151.b08",0x60000,0x10000, CRC(9de95169) SHA1(1a2801ecd9dece3dae7ceab3b793d5005caa4614) )
6647 
6648 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
6649 	ROM_LOAD( "epr11139.a07",0x00000,0x08000, CRC(9cbd99da) SHA1(55960b68b23a4f89ec810e1d31f22ba60cda0cfe) )
6650 	ROM_LOAD( "epr11140.a08",0x10000,0x08000, CRC(b297371b) SHA1(4e787aa9ee2aeab4da30237644421df407b684a5) )
6651 	ROM_LOAD( "epr11141.a09",0x18000,0x08000, CRC(19756aa6) SHA1(81597e17b848f6a41f5fb117296e7508297815e4) )
6652 	ROM_LOAD( "epr11142.a10",0x20000,0x08000, CRC(25d26c66) SHA1(2485afb859f84a9cc90b2091e9ae4eef263f42b3) )
6653 	ROM_LOAD( "epr11143.a11",0x28000,0x08000, CRC(848b7b77) SHA1(8903a39f8f0ffb4ce32117d33282876196516c30) )
6654 
6655 ROM_END
6656 
6657 /*****************************************************************************/
6658 // Action Fighter
6659 
6660 ROM_START( afighter )
6661 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6662 // cpu 317-0018
6663 	ROM_LOAD16_BYTE( "10348",0x00000,0x08000, CRC(e51e3012) SHA1(bb5522aacb55b5f04aa4cb7a642e202f0ddd7c84) )
6664 	ROM_LOAD16_BYTE( "10349",0x00001,0x08000, CRC(4b434c37) SHA1(5f3afbdb9cdb0762e56b702a195274f30193b472) )
6665 	ROM_LOAD16_BYTE( "10350",0x20000,0x08000, CRC(f2cd6b3f) SHA1(380f75b8c1696b388179641866cd1d23f78664e7) )
6666 	ROM_LOAD16_BYTE( "10351",0x20001,0x08000, CRC(ede21d8d) SHA1(b3e3944d706c606fd01e00d9511f020ce9aec9f0) )
6667 	ROM_LOAD16_BYTE( "10352",0x40000,0x08000, CRC(f8abb143) SHA1(97e78291c15bdf95fd35adca6b9e002480137b12) )
6668 	ROM_LOAD16_BYTE( "10353",0x40001,0x08000, CRC(5a757dc9) SHA1(b0540844c8a09195f5d12312f8e27c334641d7b8) )
6669 
6670 	ROM_REGION( 0x30000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6671 	ROM_LOAD( "10281",0x00000,0x10000, CRC(30e92cda) SHA1(36293a2a8a22dca5350571f19f3d5d04e1b27458) )
6672 	ROM_LOAD( "10282",0x10000,0x10000, CRC(b67b8910) SHA1(f3f029a3e6547114cec28e5cf8fda65ef434c353) )
6673 	ROM_LOAD( "10283",0x20000,0x10000, CRC(e7dbfd2d) SHA1(91bae3fbc4a3c612dc507eecfa8de1c2e1e7afee) )
6674 
6675 	ROM_REGION( 0x40000, REGION_GFX2, 0 ) /* sprites */
6676 	ROM_LOAD16_BYTE( "10285",0x00001,0x08000, CRC(98aa3d04) SHA1(1d26d17a72e55281e3444fee9c5af69ffb9e3c69) )
6677 	ROM_LOAD16_BYTE( "10286",0x00000,0x08000, CRC(8da050cf) SHA1(c28e8968dbd9c110672581f4486f70d5f45df7f5) )
6678 	ROM_LOAD16_BYTE( "10287",0x10001,0x08000, CRC(7989b74a) SHA1(a87acafe82b37a11d8f8b1f2ee4c9b2e1bb8161c) )
6679 	ROM_LOAD16_BYTE( "10288",0x10000,0x08000, CRC(d3ce551a) SHA1(0ff2170d9ef89058273025dd8d5e1021094adef1) )
6680 	ROM_LOAD16_BYTE( "10289",0x20001,0x08000, CRC(c59d1b98) SHA1(e232f2519234981c0e4ffecdd25c48083d9f93a8) )
6681 	ROM_LOAD16_BYTE( "10290",0x20000,0x08000, CRC(39354223) SHA1(d8a73d3f7fc2d83d23bb7434f43bc8804f35cc16) )
6682 	ROM_LOAD16_BYTE( "10291",0x30001,0x08000, CRC(6e4b245c) SHA1(1f8cecf7ea2d2dfa5ce18d7ee34b0da2cc40221e) )
6683 	ROM_LOAD16_BYTE( "10292",0x30000,0x08000, CRC(cef289a3) SHA1(7ab817b6348c168f79be325fb3cc2cca14ee0f8e) )
6684 
6685 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound CPU */
6686 	ROM_LOAD( "10284",0x00000,0x8000, CRC(8ff09116) SHA1(8b99b6d2499897cfbd037a7e7cf5bc53bce8a63a) )
6687 
6688 ROM_END
6689 
6690 /*****************************************************************************/
6691 // Ryukyu
6692 
6693 ROM_START( ryukyu )
6694 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 code */
6695 // cpu 317-5023
6696 	ROM_LOAD16_BYTE( "13347",0x00000,0x10000, CRC(398031fa) SHA1(5c118c85b7af1a83726b95bbeb85cb5020254f57) )
6697 	ROM_LOAD16_BYTE( "13348",0x00001,0x10000, CRC(5f0e0c86) SHA1(f8f5912a190d0755cc5158e2e43cceb825f95b4f) )
6698 
6699 	ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE ) /* tiles */
6700 	ROM_LOAD( "13351",0x00000,0x20000, CRC(a68a4e6d) SHA1(ee3e317c7184b41af5dd383d41f7be3eebff0d04) )
6701 	ROM_LOAD( "13352",0x20000,0x20000, CRC(5e5531e4) SHA1(e8e16b35f7985e6cdd77353ca5235db518914744) )
6702 	ROM_LOAD( "13353",0x40000,0x20000, CRC(6d23dfd8) SHA1(21266340290b9854cee0b62fc107cc2981519a80) )
6703 
6704 	ROM_REGION( 0x80000, REGION_GFX2, 0 ) /* sprites */
6705 	ROM_LOAD16_BYTE( "13354",0x00001,0x20000, CRC(f07aad99) SHA1(71759525a5b7fe76d112cec93984f0f89cadbc00) )
6706 	ROM_LOAD16_BYTE( "13355",0x00000,0x20000, CRC(67890019) SHA1(165c6a32f305273396ec0e9499e00329caadc484) )
6707 	ROM_LOAD16_BYTE( "13356",0x40001,0x20000, CRC(5498290b) SHA1(b3115b636d8cb6ecac22d5264b7961e3b807cf04) )
6708 	ROM_LOAD16_BYTE( "13357",0x40000,0x20000, CRC(f9e7cf03) SHA1(2258111499c79443faf84fb0495007016282bb3c) )
6709 
6710 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* sound CPU */
6711 	ROM_LOAD( "13349",0x00000,0x08000, CRC(b83183f8) SHA1(9d6127f51c04a16bb2637dc9992b843b94613c2b) )
6712 	ROM_LOAD( "13350",0x10000,0x20000, CRC(3c59a658) SHA1(2cef13ee9e666bb850fe6c6e6954d7b75df665a9) )
6713 ROM_END
6714 
6715 /***************************************************************************/
6716 
6717 /* pre-System16 */
6718 /*          rom       parent    machine   inp       init */
6719 /* Alien Syndrome */
6720 GAMEX(1985, mjleague, 0,        mjleague, mjleague, mjleague, ROT270, "Sega",    "Major League", GAME_NOT_WORKING )
6721 GAME( 1986, bodyslam, 0,        bodyslam, bodyslam, bodyslam, ROT0,   "Sega",    "Body Slam" )
6722 GAME( 1986, dumpmtmt, bodyslam, bodyslam, bodyslam, bodyslam, ROT0,   "Sega",    "Dump Matsumoto (Japan)" )
6723 GAME( 1986, quartet,  0,        quartet,  quartet,  quartet,  ROT0,   "Sega",    "Quartet" )
6724 GAME( 1986, quartetj, quartet,  quartet,  quartet,  quartet,  ROT0,   "Sega",    "Quartet (Japan)" )
6725 GAME( 1986, quartet2, quartet,  quartet2, quartet2, quartet2, ROT0,   "Sega",    "Quartet 2" )
6726 GAME( 1986, quartt2j, quartet,  quartet2, quartet2, quartet2, ROT0,   "Sega",    "Quartet 2 (Japan)" )
6727 
6728 /* System16A */
6729 /*          rom       parent    machine   inp       init */
6730 GAMEX(19??, afighter, 0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Action Fighter", GAME_NOT_WORKING )
6731 GAMEX(1986, alexkidd, 0,        alexkidd, alexkidd, alexkidd, ROT0,   "Sega",    "Alex Kidd: The Lost Stars (set 1)", GAME_NOT_WORKING )
6732 GAME( 1986, alexkida, alexkidd, alexkidd, alexkidd, alexkidd, ROT0,   "Sega",    "Alex Kidd: The Lost Stars (set 2)" )
6733 GAME( 1986, fantzone, 0,        fantzone, fantzone, fantzone, ROT0,   "Sega",    "Fantasy Zone (Japan New Ver.)" )
6734 GAME( 1986, fantzono, fantzone, fantzono, fantzone, fantzone, ROT0,   "Sega",    "Fantasy Zone (Old Ver.)" )
6735 GAMEX(19??, ryukyu  , 0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Ryukyu", GAME_NOT_WORKING )
6736 GAME( 1987, shinobi,  0,        shinobi,  shinobi,  shinobi,  ROT0,   "Sega",    "Shinobi (set 1)" )
6737 GAMEX(1987, shinobib, shinobi,  shinobi,  shinobi,  shinobi,  ROT0,   "Sega",    "Shinobi (set 3)", GAME_NOT_WORKING )
6738 GAMEX(1987, shinobia, shinobi,  shinobl,  shinobi,  shinobi,  ROT0,   "Sega",    "Shinobi (set 2)", GAME_NOT_WORKING )
6739 GAME( 1987, shinobl,  shinobi,  shinobl,  shinobi,  shinobi,  ROT0,   "bootleg", "Shinobi (bootleg)" )
6740 GAME( 1987, sdi,      0,        sdi,      sdi,      sdi,      ROT0,   "Sega",    "SDI - Strategic Defense Initiative" )
6741 GAMEX(1987, sdioj,    sdi,      sdi,      sdi,      sdi,      ROT0,   "Sega",    "SDI - Strategic Defense Initiative (Japan)", GAME_NOT_WORKING )
6742 GAMEX(1988, tetris,   0,        tetris,   tetris,   tetris,   ROT0,   "Sega",    "Tetris (Sega Set 1)", GAME_NOT_WORKING )
6743 GAME( 1988, tetrisbl, tetris,   tetris,   tetris,   tetrisbl, ROT0,   "bootleg", "Tetris (Sega bootleg)" )
6744 GAMEX(1988, tetrisa,  tetris,   tetris,   tetris,   tetrisbl, ROT0,   "Sega",    "Tetris (Sega Set 2)", GAME_NOT_WORKING )
6745 
6746 /* System16B */
6747 /*          rom       parent    machine   inp       init */
6748 GAMEX(1990, atomicp,  0,        atomicp,  atomicp,  atomicp,  ROT0,   "Philko",  "Atomic Point", GAME_NO_SOUND )
6749 GAME( 1987, aliensyn, 0,        aliensyn, aliensyn, aliensyn, ROT0,   "Sega",    "Alien Syndrome (set 1)" )
6750 GAMEX(1987, aliensya, aliensyn, aliensyn, aliensyn, aliensyn, ROT0,   "Sega",    "Alien Syndrome (set 2)", GAME_NOT_WORKING )
6751 GAMEX(1987, aliensyj, aliensyn, aliensyn, aliensyn, aliensyn, ROT0,   "Sega",    "Alien Syndrome (Japan)", GAME_NOT_WORKING )
6752 GAMEX(1987, aliensyb, aliensyn, aliensyn, aliensyn, aliensyn, ROT0,   "Sega",    "Alien Syndrome (set 3)", GAME_NOT_WORKING )
6753 GAME( 1988, altbeast, 0,        altbeast, altbeast, altbeast, ROT0,   "Sega",    "Altered Beast (Version 1)" )
6754 GAMEX(1988, altbeas2, altbeast, altbeas2, altbeast, altbeast, ROT0,   "Sega",    "Altered Beast (Version 2)", GAME_NO_SOUND )
6755 GAMEX(1988, jyuohki,  altbeast, altbeast, altbeast, altbeast, ROT0,   "Sega",    "Jyuohki (Japan)",           GAME_NOT_WORKING )
6756 GAME( 1990, aurail,   0,        aurail,   aurail,   aurail,   ROT0,   "Sega / Westone", "Aurail (set 1)" )
6757 GAME( 1990, auraila,  aurail,   aurail,   aurail,   auraila,  ROT0,   "Sega / Westone", "Aurail (set 2)" )
6758 GAME( 1989, bayroute, 0,        bayroute, bayroute, bayroute, ROT0,   "Sunsoft / Sega", "Bay Route (set 1)" )
6759 GAMEX(1989, bayrouta, bayroute, bayroute, bayroute, bayrouta, ROT0,   "Sunsoft / Sega", "Bay Route (set 2)", GAME_NOT_WORKING )
6760 GAMEX(1989, bayrtbl1, bayroute, bayroute, bayroute, bayrtbl1, ROT0,   "bootleg", "Bay Route (bootleg set 1)", GAME_NOT_WORKING )
6761 GAMEX(1989, bayrtbl2, bayroute, bayroute, bayroute, bayrtbl1, ROT0,   "bootleg", "Bay Route (bootleg set 2)", GAME_NOT_WORKING )
6762 /* Bullet */
6763 /* Charon */
6764 GAMEX(19??, cotton,   0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Cotton (Japan)", GAME_NOT_WORKING )
6765 GAMEX(19??, cottona,  cotton,   s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Cotton", GAME_NOT_WORKING )
6766 GAMEX(19??, dunkshot, 0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Dunk Shot", GAME_NOT_WORKING )
6767 GAME( 1989, dduxbl,   0,        dduxbl,   dduxbl,   dduxbl,   ROT0,   "bootleg", "Dynamite Dux (bootleg)" )
6768 GAMEX(1989, eswat,    0,        eswat,    eswat,    eswat,    ROT0,   "Sega",    "E-Swat - Cyber Police", GAME_NOT_WORKING )
6769 GAME( 1989, eswatbl,  eswat,    eswat,    eswat,    eswat,    ROT0,   "bootleg", "E-Swat - Cyber Police (bootleg)" )
6770 GAMEX(19??, exctleag, 0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Excite League", GAME_NOT_WORKING )
6771 GAMEX(1989, fpoint,   0,        fpoint,   fpoint,   fpoint,   ROT0,   "Sega",    "Flash Point", GAME_NOT_WORKING )
6772 GAME( 1989, fpointbl, fpoint,   fpoint,   fpoint,   fpointbl, ROT0,   "bootleg", "Flash Point (World, bootleg)" )
6773 GAMEX(1989, fpointbj, fpoint,   fpoint,   fpointbj, fpointbl, ROT0,   "bootleg", "Flash Point (Japan, bootleg)", GAME_NO_SOUND )
6774 GAME( 1989, goldnaxe, 0,        goldnaxe, goldnaxe, goldnaxe, ROT0,   "Sega",    "Golden Axe (Version 1)" )
6775 GAMEX(1989, goldnaxj, goldnaxe, goldnaxe, goldnaxe, goldnaxe, ROT0,   "Sega",    "Golden Axe (Version 1, Japan)", GAME_NOT_WORKING )
6776 GAMEX(1989, goldnabl, goldnaxe, goldnaxe, goldnaxe, goldnabl, ROT0,   "bootleg", "Golden Axe (bootleg)", GAME_NOT_WORKING )
6777 GAMEX(1989, goldnaxa, goldnaxe, goldnaxa, goldnaxe, goldnaxe, ROT0,   "Sega",    "Golden Axe (Version 2)", GAME_NOT_WORKING )
6778 GAMEX(1989, goldnaxb, goldnaxe, goldnaxa, goldnaxe, goldnaxe, ROT0,   "Sega",    "Golden Axe (Version 2 317-0110)", GAME_NOT_WORKING )
6779 GAMEX(1989, goldnaxc, goldnaxe, goldnaxa, goldnaxe, goldnaxe, ROT0,   "Sega",    "Golden Axe (Version 2 317-0122)", GAME_NOT_WORKING )
6780 GAME( 1987, hwchamp,  0,        hwchamp,  hwchamp,  hwchamp,  ROT0,   "Sega",    "Heavyweight Champ" )
6781 GAMEX(19??, mvp,      0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "MVP", GAME_NOT_WORKING )
6782 GAMEX(1988, passsht,  0,        passsht,  passsht,  passsht,  ROT270, "Sega",    "Passing Shot (2 Players)", GAME_NOT_WORKING )
6783 GAME( 1988, passshtb, passsht,  passsht,  passsht,  passsht,  ROT270, "bootleg", "Passing Shot (2 Players) (bootleg)" )
6784 GAMEX(1988, passht4b, passsht,  passht4b, passht4b, passht4b, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", GAME_NO_SOUND )
6785 GAME( 1991, riotcity, 0,        riotcity, riotcity, riotcity, ROT0,   "Sega / Westone", "Riot City" )
6786 /* Ryukyu */
6787 /* Shinobi */
6788 /* Sonic Boom */
6789 /* SDI */
6790 /* Sukeban Jansi Ryuko */
6791 GAMEX(19??, suprleag, 0,        s16dummy, s16dummy, s16dummy, ROT0,   "Sega", "Super League", GAME_NOT_WORKING )
6792 /* Tetris */
6793 GAME( 1987, timscanr, 0,        timscanr, timscanr, timscanr, ROT270, "Sega",    "Time Scanner" )
6794 GAME (1994, toryumon, 0,        toryumon, toryumon, toryumon, ROT0,   "Sega",    "Toryumon" )
6795 GAMEX(1989, tturf,    0,        tturf,    tturf,    tturf,    ROT0,   "Sega / Sunsoft", "Tough Turf (Japan)", GAME_NO_SOUND )
6796 GAMEX(1989, tturfu,   tturf,    tturfu,   tturf,    tturf,    ROT0,   "Sega / Sunsoft", "Tough Turf (US)", GAME_NO_SOUND )
6797 GAMEX(1989, tturfbl,  tturf,    tturfbl,  tturf,    tturfbl,  ROT0,   "bootleg", "Tough Turf (bootleg)", GAME_IMPERFECT_SOUND )
6798 GAME( 1988, wb3,      0,        wb3,      wb3,      wb3,      ROT0,   "Sega / Westone", "Wonder Boy III - Monster Lair (set 1)" ) //*
6799 GAMEX(1988, wb3a,     wb3,      wb3,      wb3,      wb3,      ROT0,   "Sega / Westone", "Wonder Boy III - Monster Lair (set 2)", GAME_NOT_WORKING )
6800 GAME( 1988, wb3bl,    wb3,      wb3bl,    wb3,      wb3bl,    ROT0,   "bootleg", "Wonder Boy III - Monster Lair (bootleg)" )
6801 GAME( 1989, wrestwar, 0,        wrestwar, wrestwar, wrestwar, ROT270, "Sega",    "Wrestle War" )
6802