diff options
Diffstat (limited to 'src/mame/drivers/taito_z.c')
-rw-r--r-- | src/mame/drivers/taito_z.c | 4226 |
1 files changed, 4226 insertions, 0 deletions
diff --git a/src/mame/drivers/taito_z.c b/src/mame/drivers/taito_z.c new file mode 100644 index 00000000000..cf96592896c --- /dev/null +++ b/src/mame/drivers/taito_z.c @@ -0,0 +1,4226 @@ +/*************************************************************************** + +Taito Z System [twin 68K with optional Z80] +------------------------------------------- + +David Graves + +(this is based on the F2 driver by Bryan McPhail, Brad Oliver, Andrew Prime, +Nicola Salmoria. Thanks to Richard Bush and the Raine team, whose open +source was very helpful in many areas particularly the sprites.) + +- Changes Log - + +05-01-04 Added Racing Beat +01-26-02 Added Enforce +10-17-01 TC0150ROD support improved (e.g. Aquajack) +09-01-01 Preliminary TC0150ROD support +08-28-01 Fixed uncentered steer inputs, Nightstr controls +05-27-01 Inputs through taitoic ioc routines, contcirc subwoofer filter +04-12-01 Centered steering AD inputs, added digital steer +02-18-01 Added Spacegun gunsights (Insideoutboy) + + + ***** + +The Taito Z system has a number of similarities with the Taito F2 system, +and uses some of the same custom Taito components. + +TaitoZ supports 5 separate layers of graphics - one 64x64 tiled scrolling +background plane of 8x8 tiles, a similar foreground plane, another optional +plane used for drawing a road (e.g. Chasehq), a sprite plane [with varying +properties], and a text plane with character definitions held in ram. + +(Double Axle has four rather than two background planes, and they contain +32x32 16x16 tiles. This is because it uses a TC0480SCP rather than the +older TC0100SCN tilemap generator used in previous Taito Z games. The +hardware for Taito's Super Chase was a further development of this, with a +68020 for main CPU and Ensoniq sound - standard features of Taito's F3 +system. Taito's F3 system superceded both Taito B and F2 systems, but the +Taito Z system was enhanced with F3 features and continued in games like +Super Chase and Under Fire up to the mid 1990s.) + +Each Taito Z game used one of the following sprite systems - allowing the +use of big sprites with minimal CPU overhead [*]: + +(i) 16x8 tiles aggregated through a spritemap rom into 128x128 sprites +(ii) 16x16 tiles aggregated through a spritemap rom into three sprite sizes: + 128 x 128 + 64 x 128 + 32 x 128 +(iii) 16x8 tiles aggregated through a spritemap rom into 64x64 sprites + +[* in Taito B/F2/F3 the CPU has to keep track of all the 16x16 tiles within +a big sprite] + +The Z system has twin 68K CPUs which communicate via shared ram. +Typically they share $4000 bytes, but Spacegun / Dbleaxle share $10000. + +The first 68000 handles screen, palette and sprites, and sometimes other +jobs [e.g. inputs; in one game it also handles the road]. + +The second 68000 may handle functions such as: + (i) inputs/dips, sound (through a YM2610) and/or + (ii) the "road" that's in every TaitoZ game except Spacegun. + +Most Z system games have a Z80 as well, which takes over sound duties. +Commands are written to it by the one of the 68000s. + +The memory map for the Taito Z games is similar in outline but usually +shuffled around: some games have different i/o because of analogue +sticks, light guns, cockpit hardware etc. + + +Contcirc board (B.Troha) +-------------- + +Taito Sound PCB J1100137A K1100314A: + + Zilog Z0840004PSC XTAL OSC Yamaha + Z80 CPU 16.000 MHz YM2610 + + TC0060DCA B33-30 + TC0060DCA + TC0140SYT + + B33-08 + B33-09 + B33-10 + +Notes: B33-30 is a OKI M27512-15 + + +Taito Video Baord PCB J1100139A K1100316A: + + B33-03 TC0050VDZ TC0050VDZ TC0050VDZ + B33-04 + B33-05 + B33-06 TC0020VAR + + B14-31 + + B33-07 + + B14-30 + +Notes: B14-31 is 27HC64 (Sharp LH5763J-70) + B14-30 is OKI M27512-15 +DG: TC0020VAR + 3xTC0050VDZ may be precursor to 370MSO/300FLA combo + + +Taito CPU Board J110138A K1100315A: + + XTAL OSC XTAL OSC + 24.000MHz 26.686MHz + + B33-02 +B33-01 + TC0150ROD TC0100SCN NEC D43256C-10L + NEC D43256C-10L + + TC0110PCR + + TC0070RGB + MC6800P12 IC-25 MC68000P12 IC-35 + IC-26 IC 36 TC0040IOC + DSWA DSWB + +Notes: IC-41 Is 271001 Listed as JH1 (unsocketed / unused) + IC-42 Is 271001 Listed as JL1 (unsocketed / unused) + + + +Aquajack top board (Guru) +------------------ + +68000-12 x 2 +OSC: 26.686, 24.000, 16.000 +I dont see any recognisable sound chips, but I do see a YM3016F + +TCO110PCR +TCO220IOC +TCO100SCN +TCO140SYT +TCO3200BR +TCO150ROD +TCO020VAR +TCO050VDZ +TCO050VDZ +TCO050VDZ + +ChaseHQ (Guru) +------- + +Video board +----------- + Pal b52-28d b52-28b + Pal 17d 17b + Pal 28c 28a + Pal 77c 17a + +b52-30 + 34 + 31 + 35 + 32 b52-27 pal20 TC020VAR b52-03 b52-127 + 36 51 b52-126 b52-124 Pal + 50 + 49 Pal b52-125 + 33 Pal b52-19 Pal b52-25 + 37 38 b52-18b Pal 122 + Pal Pal b52-18a Pal 123 + b52-20 b52-21 b52-18 + + +CPU board +--------- + b52-119 Pal + b52-118 Pal + 68000-12 + b52-131 129 +b52-113 b52-130 136 +b52-114 +b52-115 TC0140SYT +b52-116 + + YM2610 b52-29 + 26.686MHz + 24 MHz + 16MHz TC0100SCN + + Pal b52-121 + Pal b52-120 TC0170ABT TC0110PCR b52-01 + 68000-12 + b52-06 + TC0040IOC b52-133 b52-132 TC0150ROD b52-28 + + + +ChaseHQ2(SCI) custom chips (Guru) (DG: same as Bshark except 0140SYT?) +-------------------------- + +CPU PCB: +TC0170ABT +TC0150ROD +TC0140SYT +TC0220IOC + +c09-23.rom is a +PROM type AM27S21PC, location looks like this... + +------------- +| 68000 | +------------- + +c09-25 c09-26 +c09-24 + +|-------| +| | +| ABT | +| | +|-------| + +c09-23 c09-07 + +|-------| +| | +| ROD | +| | +|-------| + +c09-32 c09-33 +------------- +| 68000 | +------------- + +c09-21 c09-22 + +Lower PCB: +TCO270MOD +TC0300FLA +TC0260DAR +TC0370MSO +TC0100SCN +TC0380BSH + +c09-16.rom is located next to +c09-05, which is located next to Taito TCO370MSO. + +SCI (Guru) +Taito, 1989 + +Controls for this game are one wheel, one switch for shift lever (used for high gear) +and one switch each for accelerate, brake, gun and nitro. + +Note that the gear is low by default and is shifted to high gear by a lever which +holds the switch closed. The lever is not self-centering or spring-loaded to go back to +low. The lever must be physically shifted back to low when required. + + +PCB Layout +---------- + +CPU PCB K1100490A J1100209A +|----------------------------------------------------| +| 24MHz C09-14.42 TCO140SYT C09-22.3 C09-21.2 | +| C09-13.43 68000 | +| C09-12.44 C09-33.6 C09-32.5 | +| YM2610 C09-15.29 6264 6264 | +| YM3016 TL074 TL074 Z80 | +| C09-34.31 6264 TCO150ROD | +|D VOL 6264 6264 | +| | +| MB3735 C09-07.15 C09-23.14 | +| D633 16MHz | +| 62064 6264 6264 TCO170ABT | +| C09-28.37 6264 | +|G 62003 C09-36.38 C09-24.22 | +| TCO220IOC 6264 C09-26.26 C09-25.25 | +| C09-30.40 68000 | +| DSWB DSWA C09-31.41 | +|----------------------------------------------------| + +Notes: + Clocks: + 68000 : 16.000MHz (both) + Z80 : 4.000MHz + YM2610: 8.000MHz + + Vsync: 60Hz + + Misc parts: + MB3735: 15w Power AMP with dual output (used for stereo sounds ; CH1/CH2) + TL074 : JFET Lo Noise Quad OP Amp + 6264 : 8k x8 SRAM + TD62064 : NPN 50V 1.5A Quad Darlinton Switch (for driving coin meters) + TD62003 : PNP 50V 0.5A Quad Darlinton Switch (for driving coin meters) + D633 : Si NPN POWER transistor used in 68k reset circuit (TIP122 compatible) + ROMs: + C09-12 thru C09-14 - MB834100 + C09-07 - HN62404 + C09-32 thru C09-33 - AM27C512 + C09-30 thru C09-31 - TC571000 + C09-38 and C09-36 - TC571000 + C09-23 - AM27S21 + C09-22 and C09-26 - MMI PAL16L8B + C09-21 and + C09-24 thru C09-25 - MMI PAL20L8B + +PINOUT CONNECTOR D (Note: All pinouts typed from an original Taito document) +------------------ + +1 +24V +2 +24V +3 GND +4 GND +5 D OUT + +Question: +24V and D OUT are for? + + +PINOUT CONNECTOR G (the meanings of some of these is a bit vague - PTL OUTx, DRV0, HANDLE CENTER SW etc) + + PARTS | SOLDER + ---------------|--------------- + GND 1|A GND + GND 2|B GND + +5V 3|C +5V + +5V 4|D +5V + -5V 5|E -5V + +12V 6|F +12V + KEY 7|H KEY + COUNTER A 8|J COUNTER B + C LOCKOUT A 9|K C LOCKOUT B + SPK CH1+ 10|L SPK CH2+ + SPK CH1- 11|M SPK CH2- + VOLUME2 12|N VOLUME1 + VOLUME3 13|P MUTE + GND 14|R SERVICE SW + GND 15|S BRAKE SW0 + COIN A 16|T COIN B + BRAKE SW1 17|U BRAKE SW2 + NITRO SW 18|V TILT +HANDLE CENTER SW 19|W START SW + SHIFT SW 20|X ACCEL SW0 + ACCEL SW1 21|Y ACCEL SW2 + PTL OUT1 22|Z PTL OUT2 + DRV0 23|a GUN SW + PADL X1 24|b PADL X2 + PADL Y1 25|c PADL Y2 + HANDLE Z1 26|d HANDLE Z2 + GND 27|e GND + GND 28|f GND + +Question: What hardware is used for steering and where is it connected? It doesn't seem to use + a regular potentiometer for the steering?? + + +PCB Layout +---------- + +VIDEO PCB K1100491A J1100210A +|-----------------------------------------------------| +| TCO370MSO C09-17.24 43256 | +|H C09-18.25 43256 | +| C09-05.16 | +| C09-16.17 26.686MHz TCO100SCN 6264 | +| C1815 | +|V C1815 6264 | +| C1815 TCO260DAR C09-06.37 | +|6264 | +| | +| TCO380BSH C09-19.67| +|TCO270MOD TCO300FLA | +| | +|43256 43256 43256 43256 C09-04.52 C09-20.71| +|43256 43256 43256 43256 C09-03.53 | +|43256 43256 43256 43256 C09-02.54 | +|43256 43256 43256 43256 C09-01.55 | +|-----------------------------------------------------| + +Notes: + ROMs: + C09-01 thru C09-05 - 234000 + C09-06 - HN62404 + C09-17 thru C09-18 - MMI 63S441 + C09-19 - MMI PAL16L8B + C09-20 - AM27S21 + + Misc parts: + 6264: 8k x8 SRAM + 43256: 32k x8 SRAM + C1815: transistor used for driving RGB + +PINOUT CONNECTOR H +------------------ + +1 GND +2 GND +3 GND +4 GND +5 +5V +6 +5V +7 +5V +8 +5V +9 -5V +10 POST +11 +12V +12 NC + + +PINOUT CONNECTOR V +------------------ + +1 GND +2 RED +3 GREEN +4 BLUE +5 SYNC +6 NC +7 NC + + + + + +BShark custom chips +------------------- + +TC0220IOC (known io chip) +TC0260DAR (known palette chip) +TC0400YSC substitute for TC0140SYT when 68K writes directly to YM2610 ?? +TC0170ABT = same in Dblaxle +TC0100SCN (known tilemap chip) +TC0370MSO = same in Dblaxle, Motion Objects ? +TC0300FLA = same in Dblaxle +TC0270MOD ??? +TC0380BSH ??? +TC0150ROD (known road generator chip) + + +DblAxle custom chip info +------------------------ + +TC0150ROD is next to road lines gfx chip [c78-09] but also +c78-15, an unused 256 byte rom. Perhaps this contains color +info for the road lines? Raine makes an artificial "pal map" +for the road, AFAICS. + +TC0170ABT is between 68000 CPUA and the TC0140SYT. Next to +that is the Z80A, the YM2610, and the three adpcm roms. + +On the graphics board we have the TC0480SCP next to its two +scr gfx roms: c78-10 & 11. + +The STY object mapping rom is next to c78-25, an unused +0x10000 byte rom which compresses by 98%. To right of this +are TC0370MSO (motion objects?), then TC0300FLA. + +Below c78-25 are two unused 1K roms: c84-10 and c84-11. +Below right is another unused 256 byte rom, c78-21. +(At the bottom are the 5 obj gfx roms.) + +K11000635A +---------- + 43256 c78-11 SCN1 CHR + 43256 c78-10 SCN0 CHR TC0480SCP + + c78-04 + STY ROM + c78-25 TC0370MSO TC0300FLA + c84-10 + c84-11 c78-21 + + 43256 43256 43256 43256 + 43256 43256 43256 43256 43256 + 43256 43256 43256 43256 43256 + 43256 43256 + + c78-05L + c78-06 OBJ1 + c78-05H + + c78-08 OBJ3 c78-07 OBJ2 + +Power Wheels +------------ + +Cpu PCB + +CPU: 68000-16 x2 +Sound: Z80-A + YM2610 +OSC: 32.000MHz +Chips: TC0140SYT + TC0150ROD + TC0170ABT + TC0310FAM + TC0510NIO + + +Video PCB + +OSC: 26.686MHz +Chips: TC0260DAR + TC0270MOD + TC0300FLA + TC0370MSO + TC0380BSH + TC0480SCP + + +LAN interface board + +OSC: 40.000MHz + 16.000MHz +Chips: uPD72105C + + +TODO Lists +========== + +Add cpu idle time skip to improve speed. + +Is the no-Z80 sound handling correct: some voices in Bshark +aren't that clear. + +Make taitosnd cpu-independent so we can restore Z80 to CPU3. + +Cockpit hardware + +DIPs - e.g. coinage + +Sprite zooming - dimensions may be got from the unused 64K rom +on the video board (it's in the right place for it, both with +Contcirc video chips and the chips used on later boards). These +64K roms compare as follows - makes sense as these groups +comprise the three sprite layout types used in TaitoZ games: + + Contcirc / Enforce =IDENTICAL + ChaseHQ / Nightstr =IDENTICAL + Bshark / SCI / Dblaxle / Racingb =IDENTICAL + + Missing from Aquajack / Spacegun dumps (I would bet they are + the same as Bshark). Can anyone dump these two along with any + proms on the video board? + + +Continental Circus +------------------ + +Road priority incompletely understood - e.g. start barrier should +be darkening LH edge of road as well as RH edge. + +The 8 level accel / brake should be possible to control with +analogue pedal. Don't think mame can do this. + +Junk (?) stuff often written in high byte of sound word. + +Speculative YM2610 a/b/c channel filtering as these may be +outputs to subwoofer (vibration). They sound better, anyway. + + +Chasehq +------- + +Motor CPU: appears to be identical to one in Topspeed. + +[Used to have junk sprites when you reach criminal car (the 'criminals +here' sprite): two bits above tile number are used. Are these +meaningless, or is some effect missing?] + + +Enforce +------- + +Test mode - SHIFT: LO/HI is not understood (appears to depend on Demo +Sound DSW) + +Landscape in the background can be made to scroll rapidly with DSW. +True to original? + +Some layer offsets are out a little. + + +Battle Shark +------------ + +Is road on the road stages correct? Hard to tell. + +Does the original have the "seeking" crosshair effect, making it a +challenge to control? + + +SCI +--- + +Road seems ok, but are the green bushes in round 1 a little too far +to the edge of the interroad verge? + +Sprite frames were plotted in opposite order so flickered. Reversing +this has lost us alternate frames: probably need to buffer sprite +ram by one frame to solve this? + + +Night Striker +------------- + +Road A/B priority problems will manifest in the choice tunnels with, +one or the other having higher priority in top and bottom halves. Can +someone provide a sequence of screenshots showing exactly what happens +at the road split point. + +Strange page in test mode which lets you alter all sorts of settings, +may relate to sit-in cockpit version. Can't find a dip that disables +this. + +Does a variety of writes to TC0220IOC offset 3... significant? + + +Aqua Jack +--------- + +Sprites left on screen under hiscore table. Deliberate? Or is there +a sprite disable bit somewhere. + +Should road body be largely transparent as I've implemented it? + +Sprite/sprite priorities often look bad. Sprites go to max size for +a frame before they explode - surely a bug. + +Hangs briefly fairly often without massive cpu interleaving (500). +Keys aren't very responsive in test mode. + +The problem code is this: + +CPUA +$1fe02 hangs waiting for ($6002,A5) in shared ram to be zero. + +CPUB +$1056 calls $11ea routine which starts by setting ($6002,A5) non- +zero. At end (after $1218 waiting for a bit from sound comm port) +it alters ($6002,A5) to zero (but this value lasts briefly!). + +Unless context rapidly switches back to cpua this change is missed +because $11ea gets called again *very* rapidly at times when sounds +are being written [that's when the problem manifested]. + +$108a-c2 reads 0x20 bytes from unmapped area, not sure +what it's doing. Perhaps this machine had some optional +exotic input device... + + +Spacegun +-------- + +Problem with the zoomed sprites not matching up very well +when forming the background. They jerk a bit relative to +each other... probably a cpu sync thing, perhaps also some +fine-tuning required on the zoomed sprite dimension calcs. + +Light gun interrupt timing arbitrary. + + +Double Axle +----------- + +Road occasionally has incorrectly unclipped line appearing at top +(ice stage). Also road 'ghost' often remains on screen - also an +interrupt issue I presume. + +Double Axle has poor sound: one ADPCM rom should be twice as long? +[In log we saw stuff like this, suggesting extra ADPCM rom needed: +YM2610: ADPCM-A end out of range: $001157ff +YM2610: ADPCM-A start out of range: $00111f00] + +Various sprites go missing e.g. mountains half way through cross +country course. Fall off the ledge and crash and you will see +the explosion sprites make other mountain sprites vanish, as +though their entries in spriteram are being overwritten. (Perhaps +an int6 timing/number issue: sprites seem to be ChaseHQ2ish with +a spriteframe toggle - currently this never changes which may be +wrong.) + + +Racing Beat +----------- + +Sprites (and main road) very wrong + +M43E0227A +K11E0674A +K1100650A J1100264A CPU PCB +|-------------------------------------------------------------| +|6264 62256 32MHz DSWA DSWB | +| 62256 | +|C84-104.2 | +|C84-110.3 TC0170ABT TC0510NIO | +|C84-103.4 | +|C84-111.5 MB3771 | +| C84_101.42 | +|6264 TC0140SYT | +| 6264 | +| | +| | +| C84-85.31 Z80 | +|68000 | +| | +| | +|PAL PAL YM2610 | +| C84-86.33 | +|PAL | +| 6264 C84-87.46 | +| | +| | +| PAL C84-99.35 YM3016 | +|6264 6264 | +| | +| PAL C84-100.36 TL074 | +| TC0150ROD | +|C84-84.12 6264 | +| PAL | +| TL074 | +| C84-07.22 MB3735 | +| 68000 | +|-------------------------------------------------------------| +Notes: + 68000s running at 16MHz + Z80 running at 4MHz + YM2610 running at 8MHz + + +K11X0675A +K1100635A +J1100256A VIDEO PCB +|-------------------------------------------------------------| +| 26.686MHz 6264 | +|62256 C84-89.11 TC0260DAR | +| | +|62256 C84-90.12 | +| TC0480SCP 6264 | +| | +| 6264 | +|C84-88.3 | +| | +| | +| C84-19.15 | +| TC0370MSO TC0300FLA PAL | +| C84-10.16 | +| C84-11.17 | +| C84-09.74| +| | +| 62256 62256 62256 62256 | +| | +| | +| 62256 62256 62256 62256 62256 | +| | +| | +| 62256 62256 62256 62256 62256 | +| | +| | +| 62256 62256 | +| C84-91.23 C84-93.31 | +| | +| TC0380BSH TC0270MOD | +| C84-92.25 C84-94.33 | +| | +|-------------------------------------------------------------| + + +***************************************************************************/ + +#include "driver.h" +#include "cpu/m68000/m68000.h" +#include "machine/eeprom.h" +#include "video/taitoic.h" +#include "audio/taitosnd.h" +#include "sound/2610intf.h" + +VIDEO_START( taitoz ); +VIDEO_START( spacegun ); + +VIDEO_UPDATE( contcirc ); +VIDEO_UPDATE( chasehq ); +VIDEO_UPDATE( bshark ); +VIDEO_UPDATE( sci ); +VIDEO_UPDATE( aquajack ); +VIDEO_UPDATE( spacegun ); +VIDEO_UPDATE( dblaxle ); + +WRITE16_HANDLER( contcirc_out_w ); +READ16_HANDLER ( sci_spriteframe_r ); +WRITE16_HANDLER( sci_spriteframe_w ); + +// These TC0150ROD prototypes will go in taitoic.h // +READ16_HANDLER ( TC0150ROD_word_r ); /* Road generator */ +WRITE16_HANDLER( TC0150ROD_word_w ); + +static UINT16 cpua_ctrl = 0xff; +static INT32 sci_int6 = 0; +static INT32 dblaxle_int6 = 0; +static INT32 ioc220_port = 0; +static UINT16 eep_latch = 0; + +//static UINT16 *taitoz_ram; +//static UINT16 *motor_ram; + +static size_t taitoz_sharedram_size; +static UINT16 *taitoz_sharedram; /* read externally to draw Spacegun crosshair */ + +static READ16_HANDLER( sharedram_r ) +{ + return taitoz_sharedram[offset]; +} + +static WRITE16_HANDLER( sharedram_w ) +{ + COMBINE_DATA(&taitoz_sharedram[offset]); +} + +static void parse_control(void) +{ + /* bit 0 enables cpu B */ + /* however this fails when recovering from a save state + if cpu B is disabled !! */ + cpunum_set_input_line(2, INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE); + +} + +static void parse_control_noz80(void) +{ + /* bit 0 enables cpu B */ + /* however this fails when recovering from a save state + if cpu B is disabled !! */ + cpunum_set_input_line(1, INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE); + +} + +static WRITE16_HANDLER( cpua_ctrl_w ) /* assumes Z80 sandwiched between 68Ks */ +{ + if ((data &0xff00) && ((data &0xff) == 0)) + data = data >> 8; /* for Wgp */ + cpua_ctrl = data; + + parse_control(); + + // Chase HQ: handle the lights + if ((!strcmp(Machine->gamedrv->name, "chasehq")) || (!strcmp(Machine->gamedrv->name, "chasehqj"))) + { + output_set_lamp_value(0, (data&0x20) ? 1 : 0); + output_set_lamp_value(1, (data&0x40) ? 1 : 0); + } + + logerror("CPU #0 PC %06x: write %04x to cpu control\n",activecpu_get_pc(),data); +} + +static WRITE16_HANDLER( cpua_noz80_ctrl_w ) /* assumes no Z80 */ +{ + if ((data &0xff00) && ((data &0xff) == 0)) + data = data >> 8; /* for Wgp */ + cpua_ctrl = data; + + parse_control_noz80(); + + logerror("CPU #0 PC %06x: write %04x to cpu control\n",activecpu_get_pc(),data); +} + + +/*********************************************************** + INTERRUPTS +***********************************************************/ + +/* 68000 A */ + +static TIMER_CALLBACK( taitoz_interrupt6 ) +{ + cpunum_set_input_line(0,6,HOLD_LINE); +} + +/* 68000 B */ + +#if 0 +static TIMER_CALLBACK( taitoz_cpub_interrupt5 ) +{ + cpunum_set_input_line(2,5,HOLD_LINE); /* assumes Z80 sandwiched between the 68Ks */ +} +#endif + +static TIMER_CALLBACK( taitoz_sg_cpub_interrupt5 ) +{ + cpunum_set_input_line(1,5,HOLD_LINE); /* assumes no Z80 */ +} + +#if 0 +static TIMER_CALLBACK( taitoz_cpub_interrupt6 ) +{ + cpunum_set_input_line(2,6,HOLD_LINE); /* assumes Z80 sandwiched between the 68Ks */ +} +#endif + + + +/***** Routines for particular games *****/ + +static INTERRUPT_GEN( sci_interrupt ) +{ + /* Need 2 int4's per int6 else (-$6b63,A5) never set to 1 which + causes all sprites to vanish! Spriteram has areas for 2 frames + so in theory only needs updating every other frame. */ + + sci_int6 = !sci_int6; + + if (sci_int6) + timer_set(ATTOTIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6); + cpunum_set_input_line(0, 4, HOLD_LINE); +} + +/* Double Axle seems to keep only 1 sprite frame in sprite ram, + which is probably wrong. Game seems to work with no int 6's + at all. Cpu control byte has 0,4,8,c poked into 2nd nibble + and it seems possible this should be causing int6's ? */ + +static INTERRUPT_GEN( dblaxle_interrupt ) +{ + // Unsure how many int6's per frame, copy SCI for now + dblaxle_int6 = !dblaxle_int6; + + if (dblaxle_int6) + timer_set(ATTOTIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6); + + cpunum_set_input_line(0, 4, HOLD_LINE); +} + +static INTERRUPT_GEN( dblaxle_cpub_interrupt ) +{ + // Unsure how many int6's per frame + timer_set(ATTOTIME_IN_CYCLES(200000-500,0),0, taitoz_interrupt6); + cpunum_set_input_line(2, 4, HOLD_LINE); +} + + +/****************************************************************** + EEPROM +******************************************************************/ + +static UINT8 default_eeprom[128]= +{ + 0x00,0x00,0x00,0xff,0x00,0x01,0x41,0x41,0x00,0x00,0x00,0xff,0x00,0x00,0xf0,0xf0, + 0x00,0x00,0x00,0xff,0x00,0x01,0x41,0x41,0x00,0x00,0x00,0xff,0x00,0x00,0xf0,0xf0, + 0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x01,0x40,0x00,0x00,0x00,0xf0,0x00, + 0x00,0x01,0x42,0x85,0x00,0x00,0xf1,0xe3,0x00,0x01,0x40,0x00,0x00,0x00,0xf0,0x00, + 0x00,0x01,0x42,0x85,0x00,0x00,0xf1,0xe3,0xcc,0xcb,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff +}; + +static struct EEPROM_interface eeprom_interface = +{ + 6, /* address bits */ + 16, /* data bits */ + "0110", /* read command */ + "0101", /* write command */ + "0111", /* erase command */ + "0100000000", /* lock command */ + "0100111111" /* unlock command */ +}; + +static NVRAM_HANDLER( spacegun ) +{ + if (read_or_write) + EEPROM_save(file); + else + { + EEPROM_init(&eeprom_interface); + + if (file) + EEPROM_load(file); + else + EEPROM_set_data(default_eeprom,128); /* Default the gun setup values */ + } +} + +static int eeprom_r(void) +{ + return (EEPROM_read_bit() & 0x01)<<7; +} + +#if 0 +static READ16_HANDLER( eep_latch_r ) +{ + return eep_latch; +} +#endif + +static WRITE16_HANDLER( spacegun_output_bypass_w ) +{ + switch (offset) + { + case 0x03: + +/* 0000xxxx (unused) + 000x0000 eeprom reset (active low) + 00x00000 eeprom clock + 0x000000 eeprom data + x0000000 (unused) */ + + COMBINE_DATA(&eep_latch); + EEPROM_write_bit(data & 0x40); + EEPROM_set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + EEPROM_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + break; + + default: + TC0220IOC_w( offset,data ); /* might be a 510NIO ! */ + } +} + + +/********************************************************** + GAME INPUTS +**********************************************************/ + +static READ16_HANDLER( contcirc_input_bypass_r ) +{ + /* Bypass TC0220IOC controller for analog input */ + + UINT8 port = TC0220IOC_port_r(0); /* read port number */ + int steer = 0; + int fake = input_port_6_word_r(0,0); + + if (!(fake &0x10)) /* Analogue steer (the real control method) */ + { + /* center around zero and reduce span to 0xc0 */ + steer = ((input_port_5_word_r(0,0) - 0x80) * 0xc0) / 0x100; + + } + else /* Digital steer */ + { + if (fake &0x4) + { + steer = 0x60; + } + else if (fake &0x8) + { + steer = 0xff9f; + } + } + + switch (port) + { + case 0x08: + return steer &0xff; + + case 0x09: + return steer >> 8; + + default: + return TC0220IOC_portreg_r( offset ); + } +} + + +static READ16_HANDLER( chasehq_input_bypass_r ) +{ + /* Bypass TC0220IOC controller for extra inputs */ + + UINT8 port = TC0220IOC_port_r(0); /* read port number */ + int steer = 0; + int fake = input_port_10_word_r(0,0); + + if (!(fake &0x10)) /* Analogue steer (the real control method) */ + { + /* center around zero */ + steer = input_port_9_word_r(0,0) - 0x80; + } + else /* Digital steer */ + { + if (fake &0x4) + { + steer = 0xff80; + } + else if (fake &0x8) + { + steer = 0x7f; + } + } + + switch (port) + { + case 0x08: + return input_port_5_word_r(0,mem_mask); + + case 0x09: + return input_port_6_word_r(0,mem_mask); + + case 0x0a: + return input_port_7_word_r(0,mem_mask); + + case 0x0b: + return input_port_8_word_r(0,mem_mask); + + case 0x0c: + return steer &0xff; + + case 0x0d: + return steer >> 8; + + default: + return TC0220IOC_portreg_r( offset ); + } +} + + +static READ16_HANDLER( bshark_stick_r ) +{ + switch (offset) + { + case 0x00: + return input_port_5_word_r(0,mem_mask); + + case 0x01: + return input_port_6_word_r(0,mem_mask); + + case 0x02: + return input_port_7_word_r(0,mem_mask); + + case 0x03: + return input_port_8_word_r(0,mem_mask); + } + +logerror("CPU #0 PC %06x: warning - read unmapped stick offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static UINT8 nightstr_stick[128]= +{ + 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, + 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7, + 0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, + 0xe8,0x00,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25, + 0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35, + 0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45, + 0x46,0x47,0x48,0x49,0xb8 +}; + +static READ16_HANDLER( nightstr_stick_r ) +{ + switch (offset) + { + case 0x00: + return nightstr_stick[(input_port_5_word_r(0,mem_mask) * 0x64) / 0x100]; + + case 0x01: + return nightstr_stick[(input_port_6_word_r(0,mem_mask) * 0x64) / 0x100]; + + case 0x02: + return input_port_7_word_r(0,mem_mask); + + case 0x03: + return input_port_8_word_r(0,mem_mask); + } + +logerror("CPU #0 PC %06x: warning - read unmapped stick offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + +static WRITE16_HANDLER( bshark_stick_w ) +{ + /* Each write invites a new interrupt as soon as the + hardware has got the next a/d conversion ready. We set a token + delay of 10000 cycles; our "coords" are always ready + but we don't want CPUA to have an int6 before int4 is over (?) + */ + + timer_set(ATTOTIME_IN_CYCLES(10000,0),0, taitoz_interrupt6); +} + + +static READ16_HANDLER( sci_steer_input_r ) +{ + int steer = 0; + int fake = input_port_6_word_r(0,0); + + if (!(fake &0x10)) /* Analogue steer (the real control method) */ + { + /* center around zero and reduce span to 0xc0 */ + steer = ((input_port_5_word_r(0,0) - 0x80) * 0xc0) / 0x100; + } + else /* Digital steer */ + { + if (fake &0x4) + { + steer = 0xffa0; + } + else if (fake &0x8) + { + steer = 0x5f; + } + } + + switch (offset) + { + case 0x04: + return (steer & 0xff); + + case 0x05: + return (steer & 0xff00) >> 8; + } + +logerror("CPU #0 PC %06x: warning - read unmapped steer input offset %06x\n",activecpu_get_pc(),offset); + + return 0xff; +} + + +static READ16_HANDLER( spacegun_input_bypass_r ) +{ + switch (offset) + { + case 0x03: + return eeprom_r(); + + default: + return TC0220IOC_r( offset ); /* might be a 510NIO ! */ + } +} + +static READ16_HANDLER( spacegun_lightgun_r ) +{ + switch (offset) + { + case 0x00: + return input_port_5_word_r(0,mem_mask); /* P1X */ + + case 0x01: + return input_port_6_word_r(0,mem_mask); /* P1Y */ + + case 0x02: + return input_port_7_word_r(0,mem_mask); /* P2X */ + + case 0x03: + return input_port_8_word_r(0,mem_mask); /* P2Y */ + } + + return 0x0; +} + +static WRITE16_HANDLER( spacegun_lightgun_w ) +{ + /* Each write invites a new lightgun interrupt as soon as the + hardware has got the next coordinate ready. We set a token + delay of 10000 cycles; our "lightgun" coords are always ready + but we don't want CPUB to have an int5 before int4 is over (?). + + Four lightgun interrupts happen before the collected coords + are moved to shared ram where CPUA can use them. */ + + timer_set(ATTOTIME_IN_CYCLES(10000,0),0, taitoz_sg_cpub_interrupt5); +} + + +static READ16_HANDLER( dblaxle_steer_input_r ) +{ + int steer = 0; + int fake = input_port_6_word_r(0,0); + + if (!(fake &0x10)) /* Analogue steer (the real control method) */ + { + /* center around zero and reduce span to 0x80 */ + steer = ((input_port_5_word_r(0,0) - 0x80) * 0x80) / 0x100; + } + else /* Digital steer */ + { + if (fake &0x4) + { + steer = 0xffc0; + } + else if (fake &0x8) + { + steer = 0x3f; + } + } + + switch (offset) + { + case 0x04: + return steer >> 8; + + case 0x05: + return steer &0xff; + } + +logerror("CPU #0 PC %06x: warning - read unmapped steer input offset %02x\n",activecpu_get_pc(),offset); + return 0x00; +} + + +static READ16_HANDLER( chasehq_motor_r ) +{ + switch (offset) + { + case 0x0: + return (mame_rand(Machine) &0xff); /* motor status ?? */ + + case 0x101: + return 0x55; /* motor cpu status ? */ + + default: +logerror("CPU #0 PC %06x: warning - read motor cpu %03x\n",activecpu_get_pc(),offset); + return 0; + } +} + +static WRITE16_HANDLER( chasehq_motor_w ) +{ + /* Writes $e00000-25 and $e00200-219 */ + +logerror("CPU #0 PC %06x: warning - write %04x to motor cpu %03x\n",activecpu_get_pc(),data,offset); + +} + +static READ16_HANDLER( aquajack_unknown_r ) +{ + return 0xff; +} + + +/***************************************************** + SOUND +*****************************************************/ + +static INT32 banknum = -1; + +static void reset_sound_region(void) /* assumes Z80 sandwiched between 68Ks */ +{ + memory_set_bankptr( 10, memory_region(REGION_CPU2) + (banknum * 0x4000) + 0x10000 ); +} + +static WRITE8_HANDLER( sound_bankswitch_w ) +{ + banknum = (data - 1) & 7; + reset_sound_region(); +} + +static WRITE16_HANDLER( taitoz_sound_w ) +{ + if (offset == 0) + taitosound_port_w (0, data & 0xff); + else if (offset == 1) + taitosound_comm_w (0, data & 0xff); + +#ifdef MAME_DEBUG +// if (data & 0xff00) +// { +// char buf[80]; +// +// sprintf(buf,"taitoz_sound_w to high byte: %04x",data); +// popmessage(buf); +// } +#endif +} + +static READ16_HANDLER( taitoz_sound_r ) +{ + if (offset == 1) + return ((taitosound_comm_r (0) & 0xff)); + else return 0; +} + +#if 0 +static WRITE16_HANDLER( taitoz_msb_sound_w ) +{ + if (offset == 0) + taitosound_port_w (0,(data >> 8) & 0xff); + else if (offset == 1) + taitosound_comm_w (0,(data >> 8) & 0xff); + +#ifdef MAME_DEBUG + if (data & 0xff) + { + char buf[80]; + + sprintf(buf,"taitoz_msb_sound_w to low byte: %04x",data); + popmessage(buf); + } +#endif +} + +static READ16_HANDLER( taitoz_msb_sound_r ) +{ + if (offset == 1) + return ((taitosound_comm_r (0) & 0xff) << 8); + else return 0; +} +#endif + + +/*********************************************************** + SAVE STATES +***********************************************************/ + +static MACHINE_START( taitoz ) +{ + state_save_register_global(cpua_ctrl); + state_save_register_func_postload(parse_control); + + /* these are specific to various games: we ought to split the inits */ + state_save_register_global(sci_int6); + state_save_register_global(dblaxle_int6); + state_save_register_global(ioc220_port); + + state_save_register_global(banknum); + state_save_register_func_postload(reset_sound_region); +} + + +/*********************************************************** + MEMORY STRUCTURES +***********************************************************/ + + +static ADDRESS_MAP_START( contcirc_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x080000, 0x083fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x084000, 0x087fff) AM_READ(sharedram_r) + AM_RANGE(0x100000, 0x100007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x200000, 0x20ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x220000, 0x22000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0x300000, 0x301fff) AM_READ(TC0150ROD_word_r) /* "root ram" */ + AM_RANGE(0x400000, 0x4006ff) AM_READ(MRA16_RAM) /* spriteram */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( contcirc_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x080000, 0x083fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x084000, 0x087fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x090000, 0x090001) AM_WRITE(contcirc_out_w) /* road palette bank, sub CPU reset, 3d glasses control */ + AM_RANGE(0x100000, 0x100007) AM_WRITE(TC0110PCR_step1_rbswap_word_w) /* palette */ + AM_RANGE(0x200000, 0x20ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x220000, 0x22000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0x300000, 0x301fff) AM_WRITE(TC0150ROD_word_w) /* "root ram" */ + AM_RANGE(0x400000, 0x4006ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( contcirc_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x080000, 0x083fff) AM_READ(MRA16_RAM) + AM_RANGE(0x084000, 0x087fff) AM_READ(sharedram_r) + AM_RANGE(0x100000, 0x100001) AM_READ(contcirc_input_bypass_r) + AM_RANGE(0x100002, 0x100003) AM_READ(TC0220IOC_halfword_port_r) /* (actually game uses TC040IOC) */ + AM_RANGE(0x200000, 0x200003) AM_READ(taitoz_sound_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( contcirc_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x080000, 0x083fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x084000, 0x087fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x100000, 0x100001) AM_WRITE(TC0220IOC_halfword_portreg_w) + AM_RANGE(0x100002, 0x100003) AM_WRITE(TC0220IOC_halfword_port_w) + AM_RANGE(0x200000, 0x200003) AM_WRITE(taitoz_sound_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( chasehq_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x107fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x108000, 0x10bfff) AM_READ(sharedram_r) + AM_RANGE(0x10c000, 0x10ffff) AM_READ(MRA16_RAM) /* extra CPUA ram */ + AM_RANGE(0x400000, 0x400001) AM_READ(chasehq_input_bypass_r) + AM_RANGE(0x400002, 0x400003) AM_READ(TC0220IOC_halfword_port_r) + AM_RANGE(0x820000, 0x820003) AM_READ(taitoz_sound_r) + AM_RANGE(0xa00000, 0xa00007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0xc00000, 0xc0ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0xc20000, 0xc2000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xd00000, 0xd007ff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0xe00000, 0xe003ff) AM_READ(chasehq_motor_r) /* motor cpu */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( chasehq_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x107fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x108000, 0x10bfff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x400000, 0x400001) AM_WRITE(TC0220IOC_halfword_portreg_w) + AM_RANGE(0x400002, 0x400003) AM_WRITE(TC0220IOC_halfword_port_w) + AM_RANGE(0x800000, 0x800001) AM_WRITE(cpua_ctrl_w) + AM_RANGE(0x820000, 0x820003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0xa00000, 0xa00007) AM_WRITE(TC0110PCR_step1_word_w) /* palette */ + AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0xc20000, 0xc2000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xd00000, 0xd007ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xe00000, 0xe003ff) AM_WRITE(chasehq_motor_w) /* motor cpu */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( chq_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) + AM_RANGE(0x108000, 0x10bfff) AM_READ(sharedram_r) + AM_RANGE(0x800000, 0x801fff) AM_READ(TC0150ROD_word_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( chq_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x108000, 0x10bfff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x800000, 0x801fff) AM_WRITE(TC0150ROD_word_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( enforce_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x104000, 0x107fff) AM_READ(sharedram_r) + AM_RANGE(0x300000, 0x3006ff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0x400000, 0x401fff) AM_READ(TC0150ROD_word_r) /* "root ram" ??? */ + AM_RANGE(0x500000, 0x500007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x600000, 0x60ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x620000, 0x62000f) AM_READ(TC0100SCN_ctrl_word_0_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( enforce_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // works without? + AM_RANGE(0x300000, 0x3006ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x400000, 0x401fff) AM_WRITE(TC0150ROD_word_w) /* "root ram" ??? */ + AM_RANGE(0x500000, 0x500007) AM_WRITE(TC0110PCR_step1_rbswap_word_w) /* palette */ + AM_RANGE(0x600000, 0x60ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x620000, 0x62000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( enforce_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_READ(sharedram_r) + AM_RANGE(0x200000, 0x200003) AM_READ(taitoz_sound_r) + AM_RANGE(0x300000, 0x300001) AM_READ(TC0220IOC_halfword_portreg_r) + AM_RANGE(0x300002, 0x300003) AM_READ(TC0220IOC_halfword_port_r) /* (actually game uses TC040IOC ?) */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( enforce_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x200000, 0x200003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0x300000, 0x300001) AM_WRITE(TC0220IOC_halfword_portreg_w) + AM_RANGE(0x300002, 0x300003) AM_WRITE(TC0220IOC_halfword_port_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( bshark_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x110000, 0x113fff) AM_READ(sharedram_r) + AM_RANGE(0x400000, 0x40000f) AM_READ(TC0220IOC_halfword_r) + AM_RANGE(0x800000, 0x800007) AM_READ(bshark_stick_r) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(paletteram16_word_r) /* palette */ + AM_RANGE(0xc00000, 0xc00fff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0xd00000, 0xd0ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0xd20000, 0xd2000f) AM_READ(TC0100SCN_ctrl_word_0_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( bshark_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x110000, 0x113fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x400000, 0x40000f) AM_WRITE(TC0220IOC_halfword_w) + AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_noz80_ctrl_w) + AM_RANGE(0x800000, 0x800007) AM_WRITE(bshark_stick_w) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) + AM_RANGE(0xc00000, 0xc00fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xd00000, 0xd0ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0xd20000, 0xd2000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( bshark_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x108000, 0x10bfff) AM_READ(MRA16_RAM) + AM_RANGE(0x110000, 0x113fff) AM_READ(sharedram_r) +// AM_RANGE(0x40000a, 0x40000b) AM_READ(taitoz_unknown_r) // ??? + AM_RANGE(0x600000, 0x600001) AM_READ(YM2610_status_port_0_A_lsb_r) + AM_RANGE(0x600002, 0x600003) AM_READ(YM2610_read_port_0_lsb_r) + AM_RANGE(0x600004, 0x600005) AM_READ(YM2610_status_port_0_B_lsb_r) + AM_RANGE(0x60000c, 0x60000d) AM_READ(MRA16_NOP) + AM_RANGE(0x60000e, 0x60000f) AM_READ(MRA16_NOP) + AM_RANGE(0x800000, 0x801fff) AM_READ(TC0150ROD_word_r) /* "root ram" */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( bshark_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x108000, 0x10bfff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x110000, 0x113fff) AM_WRITE(sharedram_w) +// AM_RANGE(0x400000, 0x400007) AM_WRITE(MWA16_NOP) // pan ??? + AM_RANGE(0x600000, 0x600001) AM_WRITE(YM2610_control_port_0_A_lsb_w) + AM_RANGE(0x600002, 0x600003) AM_WRITE(YM2610_data_port_0_A_lsb_w) + AM_RANGE(0x600004, 0x600005) AM_WRITE(YM2610_control_port_0_B_lsb_w) + AM_RANGE(0x600006, 0x600007) AM_WRITE(YM2610_data_port_0_B_lsb_w) + AM_RANGE(0x60000c, 0x60000d) AM_WRITE(MWA16_NOP) // interrupt controller? + AM_RANGE(0x60000e, 0x60000f) AM_WRITE(MWA16_NOP) + AM_RANGE(0x800000, 0x801fff) AM_WRITE(TC0150ROD_word_w) /* "root ram" */ +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( sci_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x107fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x108000, 0x10bfff) AM_READ(sharedram_r) /* extent ?? */ + AM_RANGE(0x10c000, 0x10ffff) AM_READ(MRA16_RAM) /* extra CPUA ram */ + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0220IOC_halfword_r) + AM_RANGE(0x200010, 0x20001f) AM_READ(sci_steer_input_r) + AM_RANGE(0x420000, 0x420003) AM_READ(taitoz_sound_r) + AM_RANGE(0x800000, 0x801fff) AM_READ(paletteram16_word_r) + AM_RANGE(0xa00000, 0xa0ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0xa20000, 0xa2000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xc00000, 0xc03fff) AM_READ(MRA16_RAM) /* spriteram */ // Raine draws only 0x1000 + AM_RANGE(0xc08000, 0xc08001) AM_READ(sci_spriteframe_r) // debugging +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sci_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x107fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x108000, 0x10bfff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0220IOC_halfword_w) +// AM_RANGE(0x400000, 0x400001) AM_WRITE(cpua_ctrl_w) // ?? doesn't seem to fit what's written + AM_RANGE(0x420000, 0x420003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0x800000, 0x801fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) + AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0xa20000, 0xa2000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0xc08000, 0xc08001) AM_WRITE(sci_spriteframe_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sci_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x203fff) AM_READ(MRA16_RAM) + AM_RANGE(0x208000, 0x20bfff) AM_READ(sharedram_r) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(TC0150ROD_word_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sci_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x203fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x208000, 0x20bfff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(TC0150ROD_word_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( nightstr_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x110000, 0x113fff) AM_READ(sharedram_r) + AM_RANGE(0x400000, 0x40000f) AM_READ(TC0220IOC_halfword_r) + AM_RANGE(0x820000, 0x820003) AM_READ(taitoz_sound_r) + AM_RANGE(0xa00000, 0xa00007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0xc00000, 0xc0ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0xc20000, 0xc2000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xd00000, 0xd007ff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0xe40000, 0xe40007) AM_READ(nightstr_stick_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( nightstr_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x110000, 0x113fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x400000, 0x40000f) AM_WRITE(TC0220IOC_halfword_w) + AM_RANGE(0x800000, 0x800001) AM_WRITE(cpua_ctrl_w) + AM_RANGE(0x820000, 0x820003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0xa00000, 0xa00007) AM_WRITE(TC0110PCR_step1_word_w) /* palette */ + AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0xc20000, 0xc2000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xd00000, 0xd007ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +// AM_RANGE(0xe00000, 0xe00001) AM_WRITE(MWA16_NOP) /* ??? */ +// AM_RANGE(0xe00008, 0xe00009) AM_WRITE(MWA16_NOP) /* ??? */ +// AM_RANGE(0xe00010, 0xe00011) AM_WRITE(MWA16_NOP) /* ??? */ + AM_RANGE(0xe40000, 0xe40007) AM_WRITE(bshark_stick_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( nightstr_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_READ(sharedram_r) + AM_RANGE(0x800000, 0x801fff) AM_READ(TC0150ROD_word_r) /* "root ram" */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( nightstr_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x800000, 0x801fff) AM_WRITE(TC0150ROD_word_w) /* "root ram" */ +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( aquajack_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x104000, 0x107fff) AM_READ(sharedram_r) + AM_RANGE(0x300000, 0x300007) AM_READ(TC0110PCR_word_r) /* palette */ + AM_RANGE(0x800000, 0x801fff) AM_READ(TC0150ROD_word_r) /* (like Contcirc, uses CPUA for road) */ + AM_RANGE(0xa00000, 0xa0ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0xa20000, 0xa2000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xc40000, 0xc403ff) AM_READ(MRA16_RAM) /* spriteram */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( aquajack_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // not needed, but it's probably like the others + AM_RANGE(0x300000, 0x300007) AM_WRITE(TC0110PCR_step1_word_w) /* palette */ + AM_RANGE(0x800000, 0x801fff) AM_WRITE(TC0150ROD_word_w) + AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0xa20000, 0xa2000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xc40000, 0xc403ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( aquajack_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_READ(sharedram_r) + AM_RANGE(0x200000, 0x20000f) AM_READ(TC0220IOC_halfword_r) + AM_RANGE(0x300000, 0x300003) AM_READ(taitoz_sound_r) + AM_RANGE(0x800800, 0x80083f) AM_READ(aquajack_unknown_r) // Read regularly after write to 800800... +// AM_RANGE(0x900000, 0x900007) AM_READ(taitoz_unknown_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( aquajack_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x104000, 0x107fff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x200000, 0x20000f) AM_WRITE(TC0220IOC_halfword_w) + AM_RANGE(0x300000, 0x300003) AM_WRITE(taitoz_sound_w) +// AM_RANGE(0x800800, 0x800801) AM_WRITE(taitoz_unknown_w) +// AM_RANGE(0x900000, 0x900007) AM_WRITE(taitoz_unknown_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( spacegun_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x30c000, 0x30ffff) AM_READ(MRA16_RAM) /* local CPUA ram */ + AM_RANGE(0x310000, 0x31ffff) AM_READ(sharedram_r) /* extent correct acc. to CPUB inits */ + AM_RANGE(0x500000, 0x5005ff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0x900000, 0x90ffff) AM_READ(TC0100SCN_word_0_r) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_READ(TC0100SCN_ctrl_word_0_r) + AM_RANGE(0xb00000, 0xb00007) AM_READ(TC0110PCR_word_r) /* palette */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( spacegun_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x30c000, 0x30ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x310000, 0x31ffff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x500000, 0x5005ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0100SCN_word_0_w) /* tilemaps */ + AM_RANGE(0x920000, 0x92000f) AM_WRITE(TC0100SCN_ctrl_word_0_w) + AM_RANGE(0xb00000, 0xb00007) AM_WRITE(TC0110PCR_step1_rbswap_word_w) /* palette */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( spacegun_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x20c000, 0x20ffff) AM_READ(MRA16_RAM) /* local CPUB ram */ + AM_RANGE(0x210000, 0x21ffff) AM_READ(sharedram_r) + AM_RANGE(0x800000, 0x80000f) AM_READ(spacegun_input_bypass_r) + AM_RANGE(0xc00000, 0xc00001) AM_READ(YM2610_status_port_0_A_lsb_r) + AM_RANGE(0xc00002, 0xc00003) AM_READ(YM2610_read_port_0_lsb_r) + AM_RANGE(0xc00004, 0xc00005) AM_READ(YM2610_status_port_0_B_lsb_r) + AM_RANGE(0xc0000c, 0xc0000d) AM_READ(MRA16_NOP) + AM_RANGE(0xc0000e, 0xc0000f) AM_READ(MRA16_NOP) + AM_RANGE(0xf00000, 0xf00007) AM_READ(spacegun_lightgun_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( spacegun_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x20c000, 0x20ffff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x210000, 0x21ffff) AM_WRITE(sharedram_w) + AM_RANGE(0x800000, 0x80000f) AM_WRITE(spacegun_output_bypass_w) + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(YM2610_control_port_0_A_lsb_w) + AM_RANGE(0xc00002, 0xc00003) AM_WRITE(YM2610_data_port_0_A_lsb_w) + AM_RANGE(0xc00004, 0xc00005) AM_WRITE(YM2610_control_port_0_B_lsb_w) + AM_RANGE(0xc00006, 0xc00007) AM_WRITE(YM2610_data_port_0_B_lsb_w) + AM_RANGE(0xc0000c, 0xc0000d) AM_WRITE(MWA16_NOP) // interrupt controller? + AM_RANGE(0xc0000e, 0xc0000f) AM_WRITE(MWA16_NOP) +// AM_RANGE(0xc20000, 0xc20003) AM_WRITE(YM2610_????) /* Pan (acc. to Raine) */ +// AM_RANGE(0xe00000, 0xe00001) AM_WRITE(MWA16_NOP) /* ??? */ + AM_RANGE(0xf00000, 0xf00007) AM_WRITE(spacegun_lightgun_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( dblaxle_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x200000, 0x203fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x210000, 0x21ffff) AM_READ(sharedram_r) + AM_RANGE(0x400000, 0x40000f) AM_READ(TC0510NIO_halfword_wordswap_r) + AM_RANGE(0x400010, 0x40001f) AM_READ(dblaxle_steer_input_r) + AM_RANGE(0x620000, 0x620003) AM_READ(taitoz_sound_r) + AM_RANGE(0x800000, 0x801fff) AM_READ(paletteram16_word_r) /* palette */ + AM_RANGE(0xa00000, 0xa0ffff) AM_READ(TC0480SCP_word_r) /* tilemaps */ + AM_RANGE(0xa30000, 0xa3002f) AM_READ(TC0480SCP_ctrl_word_r) + AM_RANGE(0xc00000, 0xc03fff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0xc08000, 0xc08001) AM_READ(sci_spriteframe_r) // debugging +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dblaxle_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x200000, 0x203fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x210000, 0x21ffff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x400000, 0x40000f) AM_WRITE(TC0510NIO_halfword_wordswap_w) + AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w) /* could this be causing int6 ? */ + AM_RANGE(0x620000, 0x620003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0x800000, 0x801fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0480SCP_word_w) /* tilemap mirror */ + AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(TC0480SCP_word_w) /* tilemaps */ + AM_RANGE(0xa30000, 0xa3002f) AM_WRITE(TC0480SCP_ctrl_word_w) + AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* mostly unused ? */ + AM_RANGE(0xc08000, 0xc08001) AM_WRITE(sci_spriteframe_w) /* set in int6, seems to stay zero */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dblaxle_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) + AM_RANGE(0x110000, 0x11ffff) AM_READ(sharedram_r) + AM_RANGE(0x300000, 0x301fff) AM_READ(TC0150ROD_word_r) + AM_RANGE(0x500000, 0x503fff) AM_READ(MRA16_RAM) /* network ram ? (see Gunbustr) */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dblaxle_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x110000, 0x11ffff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0x300000, 0x301fff) AM_WRITE(TC0150ROD_word_w) + AM_RANGE(0x500000, 0x503fff) AM_WRITE(MWA16_RAM) /* network ram ? (see Gunbustr) */ +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( racingb_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) /* main CPUA ram */ + AM_RANGE(0x110000, 0x11ffff) AM_READ(sharedram_r) + AM_RANGE(0x300000, 0x30000f) AM_READ(TC0510NIO_halfword_wordswap_r) + AM_RANGE(0x300010, 0x30001f) AM_READ(dblaxle_steer_input_r) + AM_RANGE(0x520000, 0x520003) AM_READ(taitoz_sound_r) + AM_RANGE(0x700000, 0x701fff) AM_READ(paletteram16_word_r) /* palette */ + AM_RANGE(0x900000, 0x90ffff) AM_READ(TC0480SCP_word_r) /* tilemaps */ + AM_RANGE(0x930000, 0x93002f) AM_READ(TC0480SCP_ctrl_word_r) + AM_RANGE(0xb00000, 0xb03fff) AM_READ(MRA16_RAM) /* spriteram */ + AM_RANGE(0xb08000, 0xb08001) AM_READ(sci_spriteframe_r) // debugging +ADDRESS_MAP_END + +static ADDRESS_MAP_START( racingb_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x110000, 0x11ffff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) AM_SIZE(&taitoz_sharedram_size) + AM_RANGE(0x300000, 0x30000f) AM_WRITE(TC0510NIO_halfword_wordswap_w) + AM_RANGE(0x500002, 0x500003) AM_WRITE(cpua_ctrl_w) + AM_RANGE(0x520000, 0x520003) AM_WRITE(taitoz_sound_w) + AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0480SCP_word_w) /* tilemaps */ + AM_RANGE(0x930000, 0x93002f) AM_WRITE(TC0480SCP_ctrl_word_w) + AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* mostly unused ? */ + AM_RANGE(0xb08000, 0xb08001) AM_WRITE(sci_spriteframe_w) /* alternates 0/0x100 */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( racingb_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x400000, 0x403fff) AM_READ(MRA16_RAM) + AM_RANGE(0x410000, 0x41ffff) AM_READ(sharedram_r) + AM_RANGE(0xa00000, 0xa01fff) AM_READ(TC0150ROD_word_r) + AM_RANGE(0xd00000, 0xd03fff) AM_READ(MRA16_RAM) /* network ram ? */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( racingb_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x400000, 0x403fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x410000, 0x41ffff) AM_WRITE(sharedram_w) AM_BASE(&taitoz_sharedram) + AM_RANGE(0xa00000, 0xa01fff) AM_WRITE(TC0150ROD_word_w) + AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(MWA16_RAM) /* network ram ? */ +ADDRESS_MAP_END + + +/***************************************************************************/ + +static ADDRESS_MAP_START( z80_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x3fff) AM_READ(MRA8_ROM) + AM_RANGE(0x4000, 0x7fff) AM_READ(MRA8_BANK10) + AM_RANGE(0xc000, 0xdfff) AM_READ(MRA8_RAM) + AM_RANGE(0xe000, 0xe000) AM_READ(YM2610_status_port_0_A_r) + AM_RANGE(0xe001, 0xe001) AM_READ(YM2610_read_port_0_r) + AM_RANGE(0xe002, 0xe002) AM_READ(YM2610_status_port_0_B_r) + AM_RANGE(0xe200, 0xe200) AM_READ(MRA8_NOP) + AM_RANGE(0xe201, 0xe201) AM_READ(taitosound_slave_comm_r) + AM_RANGE(0xea00, 0xea00) AM_READ(MRA8_NOP) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( z80_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0xc000, 0xdfff) AM_WRITE(MWA8_RAM) + AM_RANGE(0xe000, 0xe000) AM_WRITE(YM2610_control_port_0_A_w) + AM_RANGE(0xe001, 0xe001) AM_WRITE(YM2610_data_port_0_A_w) + AM_RANGE(0xe002, 0xe002) AM_WRITE(YM2610_control_port_0_B_w) + AM_RANGE(0xe003, 0xe003) AM_WRITE(YM2610_data_port_0_B_w) + AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w) + AM_RANGE(0xe201, 0xe201) AM_WRITE(taitosound_slave_comm_w) + AM_RANGE(0xe400, 0xe403) AM_WRITE(MWA8_NOP) /* pan */ + AM_RANGE(0xee00, 0xee00) AM_WRITE(MWA8_NOP) /* ? */ + AM_RANGE(0xf000, 0xf000) AM_WRITE(MWA8_NOP) /* ? */ + AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) +ADDRESS_MAP_END + + +/*********************************************************** + INPUT PORTS, DIPs +***********************************************************/ + +#define TAITO_Z_COINAGE_JAPAN_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) + +#define TAITO_Z_COINAGE_WORLD_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \ + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + +#define TAITO_Z_COINAGE_US_8 \ + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \ + PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \ + PORT_DIPNAME( 0xc0, 0xc0, "Price to Continue" ) \ + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \ + PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \ + PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \ + PORT_DIPSETTING( 0xc0, "Same as Start" ) + +#define TAITO_Z_DIFFICULTY_8 \ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \ + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \ + PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) \ + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \ + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + + +static INPUT_PORTS_START( contcirc ) + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, "Cockpit" ) // analogue accelerator pedal + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_WORLD_8 + + PORT_START_TAG("DSW2") /* DSW B */ + PORT_DIPNAME( 0x03, 0x03, "Difficulty 1 (time/speed)" ) + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0c, 0x0c, "Difficulty 2 (other cars)" ) + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x10, 0x10, "Steering wheel" ) //not sure what effect this has + PORT_DIPSETTING( 0x10, "Free" ) + PORT_DIPSETTING( 0x00, "Locked" ) + PORT_DIPNAME( 0x20, 0x00, "Enable 3d alternate frames" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1) /* 3 for accel [7 levels] */ + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) /* main accel key */ + + PORT_START /* IN1: b3 not mapped: standardized on holding b4=lo gear */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* gear shift lo/hi */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_PLAYER(1) /* 3 for brake [7 levels] */ + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) /* main brake key */ + + PORT_START /* IN2, unused */ + + PORT_START /* IN3, "handle" i.e. steering */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1) + + PORT_START /* IN4, fake allowing digital steer */ + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) + PORT_DIPNAME( 0x10, 0x00, "Steering type" ) + PORT_DIPSETTING( 0x10, "Digital" ) + PORT_DIPSETTING( 0x00, "Analogue" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( contcrcu ) + PORT_INCLUDE(contcirc) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_JAPAN_8 // confirmed +INPUT_PORTS_END + +static INPUT_PORTS_START( chasehq ) // IN3-6 perhaps used with cockpit setup? // + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Cabinet ) ) /* US Manual states DIPS 1 & 2 "MUST REMAIN OFF" */ + PORT_DIPSETTING( 0x03, "Upright / Steering Lock" ) + PORT_DIPSETTING( 0x02, "Upright / No Steering Lock" ) + PORT_DIPSETTING( 0x01, "Full Throttle Convert, Cockpit" ) + PORT_DIPSETTING( 0x00, "Full Throttle Convert, Deluxe" ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_WORLD_8 + + PORT_START_TAG("DSW2") /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" ) + PORT_DIPSETTING( 0x08, "70 Seconds" ) + PORT_DIPSETTING( 0x04, "65 Seconds" ) + PORT_DIPSETTING( 0x0c, "60 Seconds" ) + PORT_DIPSETTING( 0x00, "55 Seconds" ) + PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x20, 0x20, "Discounted Continue Play" ) /* Full coin price to start, 1 coin to continue */ + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* brake */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) /* turbo */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* gear */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* accel */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN2, unused */ + + PORT_START /* IN3, ??? */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN4, ??? */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN5, ??? */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN6, ??? */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN7, steering */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START /* IN8, fake allowing digital steer */ + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) + PORT_DIPNAME( 0x10, 0x00, "Steering type" ) + PORT_DIPSETTING( 0x10, "Digital" ) + PORT_DIPSETTING( 0x00, "Analogue" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( chasehqj ) + PORT_INCLUDE(chasehq) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_JAPAN_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( enforce ) + PORT_START /* DSW A */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // Says SHIFT HI in test mode !? + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) // Says SHIFT LO in test mode !? + TAITO_Z_COINAGE_JAPAN_8 + + PORT_START /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Background scenery" ) + PORT_DIPSETTING( 0x10, "Crazy scrolling" ) + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* Bomb */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* Laser */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) +INPUT_PORTS_END + +static INPUT_PORTS_START( bshark ) + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x01, 0x01, "Mirror screen" ) // manual says first two must be off + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_US_8 + + PORT_START_TAG("DSW2") /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x04, "Speed of Sight" ) + PORT_DIPSETTING( 0x0c, "Slow" ) + PORT_DIPSETTING( 0x08, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x04, "Fast" ) + PORT_DIPSETTING( 0x00, "Fastest" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) // manual says all these must be off + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN1, unused */ + + PORT_START /* IN2, b2-5 affect sound num in service mode but otherwise useless (?) */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* "Fire" */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) /* same as "Fire" */ + + PORT_START /* values chosen to match allowed crosshair area */ + PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_MINMAX(0xcc,0x35) PORT_SENSITIVITY(20) PORT_KEYDELTA(4) PORT_REVERSE PORT_PLAYER(1) + + PORT_START /* "X adjust" */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* values chosen to match allowed crosshair area */ + PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_MINMAX(0xd5,0x32) PORT_SENSITIVITY(20) PORT_KEYDELTA(4) PORT_PLAYER(1) + + PORT_START /* "Y adjust" */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bsharkj ) + PORT_INCLUDE(bshark) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_JAPAN_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( sci ) + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x01, "Cockpit" ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Manual states "MUST REMAIN OFF" */ + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_WORLD_8 + + PORT_START_TAG("DSW2") /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Timer Setting" ) + PORT_DIPSETTING( 0x08, "70 Seconds" ) + PORT_DIPSETTING( 0x04, "65 Seconds" ) + PORT_DIPSETTING( 0x0c, "60 Seconds" ) + PORT_DIPSETTING( 0x00, "55 Seconds" ) + PORT_DIPNAME( 0x10, 0x10, "Turbos Stocked" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x20, 0x20, "Steering Radius" ) + PORT_DIPSETTING( 0x00, "270 Degree" ) + PORT_DIPSETTING( 0x20, "360 Degree" ) + PORT_DIPNAME( 0x40, 0x40, "Damage Cleared at Continue" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Siren Volume" ) + PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Low ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) /* fire */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* brake */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) /* turbo */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) /* "center" */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* gear */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* accel */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN2, unused */ + + PORT_START /* IN3, steering */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START /* IN4, fake allowing digital steer */ + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) + PORT_DIPNAME( 0x10, 0x00, "Steering type" ) + PORT_DIPSETTING( 0x10, "Digital" ) + PORT_DIPSETTING( 0x00, "Analogue" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( sciu ) + PORT_INCLUDE(sci) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_US_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( scij ) + PORT_INCLUDE(sci) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_JAPAN_8 +INPUT_PORTS_END + +static INPUT_PORTS_START( nightstr ) + PORT_START /* DSW A */ + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x01, "Cockpit" ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Shown only as "OFF" in the manual */ + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_US_8 + + PORT_START /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x0c, 0x0c, "Bonus Shields" ) + PORT_DIPSETTING( 0x08, "3" ) + PORT_DIPSETTING( 0x04, "2" ) + PORT_DIPSETTING( 0x0c, "1" ) + PORT_DIPSETTING( 0x00, DEF_STR( None ) ) + PORT_DIPNAME( 0x30, 0x30, "Shields" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x30, "5" ) + PORT_DIPSETTING( 0x20, "6" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Trigger Turbo" ) + PORT_DIPSETTING( 0x80, "7 Shots / Second" ) + PORT_DIPSETTING( 0x00, "10 Shots / Second" ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT ) + + PORT_START /* IN1, unused */ + + PORT_START /* IN2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(60) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(60) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1) + + PORT_START /* X offset */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* Y offset */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( aquajack ) + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x80, "Cockpit" ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) /* Dip 2 shown as "Must Remain in "Off" Position" in manual */ + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) /* The Romstar (US version) manual list this as "Continue Pricing" */ + PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) ) /* Same pricing as Coin A */ + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) /* 1 Coin to Continue */ + PORT_DIPSETTING( 0x02, DEF_STR( 1C_4C ) ) /* 2 Coins to Continue */ + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) /* 3 Coins to Continue */ + + PORT_START_TAG("DSW2") /* DSW B */ + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x00, "30k" ) + PORT_DIPSETTING( 0x30, "50k" ) + PORT_DIPSETTING( 0x10, "80k" ) + PORT_DIPSETTING( 0x20, "100k" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x08, "1" ) + PORT_DIPSETTING( 0x04, "2" ) + PORT_DIPSETTING( 0x0c, "3" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) /* Dips 7 & 8 shown as "Do Not Touch" in non US manuals */ + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) /* The Romstar (US version) manual list this as "Endless Game" - Has no effect on "World" version */ + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) /* Normal Game */ + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) /* Endless Game */ + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN2, what is it ??? */ + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(1) +INPUT_PORTS_END + +static INPUT_PORTS_START( aquajckj ) + PORT_INCLUDE(aquajack) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( spacegun ) + PORT_START /* DSW A */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) // Manual says Always Off + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, "Always have gunsight power up" ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_WORLD_8 + + PORT_START /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) // Manual lists dips 3 through 6 and 8 as Always off + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Disable Pedal (?)" ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2) + + PORT_START /* IN1, unused */ + + PORT_START /* IN2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(22) PORT_REVERSE PORT_PLAYER(1) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(22) PORT_PLAYER(1) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(22) PORT_REVERSE PORT_PLAYER(2) + + PORT_START + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(22) PORT_PLAYER(2) +INPUT_PORTS_END + +static INPUT_PORTS_START( dblaxle ) + PORT_START_TAG("DSW1") /* DSW A */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, "Gear shift" ) + PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, "Inverted" ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_Z_COINAGE_US_8 + + PORT_START_TAG("DSW2") /* DSW B */ + TAITO_Z_DIFFICULTY_8 + PORT_DIPNAME( 0x04, 0x00, "Multi-machine hookup ?" ) // doesn't boot if on + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, "Player Truck" ) + PORT_DIPSETTING( 0x08, "Red" ) + PORT_DIPSETTING( 0x00, "Blue" ) + PORT_DIPNAME( 0x10, 0x10, "Back button" ) + PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, "Inverted" ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) // causes "Root CPU Error" on "Icy Road" (Tourniquet) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START /* IN0 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) /* shift */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* brake */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) /* "back" */ + + PORT_START /* IN1 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) /* nitro */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) /* "center" */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* accel */ + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START /* IN2, unused */ + + PORT_START /* IN3, steering */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(40) PORT_KEYDELTA(10) PORT_PLAYER(1) + + PORT_START /* IN4, fake allowing digital steer */ + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) + PORT_DIPNAME( 0x10, 0x00, "Steering type" ) + PORT_DIPSETTING( 0x10, "Digital" ) + PORT_DIPSETTING( 0x00, "Analogue" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( pwheelsj ) + PORT_INCLUDE(dblaxle) + + PORT_MODIFY("DSW1") + TAITO_Z_COINAGE_JAPAN_8 +INPUT_PORTS_END + + +/*********************************************************** + GFX DECODING +***********************************************************/ + +static const gfx_layout tile16x8_layout = +{ + 16,8, /* 16*8 sprites */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 8, 16, 24 }, + { 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, + 64*8 /* every sprite takes 64 consecutive bytes */ +}; + +static const gfx_layout tile16x16_layout = +{ + 16,16, /* 16*16 sprites */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 8, 16, 24 }, + { 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, + 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + 64*16 /* every sprite takes 128 consecutive bytes */ +}; + +static const gfx_layout charlayout = +{ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 32*8 /* every sprite takes 32 consecutive bytes */ +}; + +static const gfx_layout dblaxle_charlayout = +{ + 16,16, /* 16*16 characters */ + RGN_FRAC(1,1), + 4, /* 4 bits per pixel */ + { 0, 1, 2, 3 }, + { 1*4, 0*4, 5*4, 4*4, 3*4, 2*4, 7*4, 6*4, 9*4, 8*4, 13*4, 12*4, 11*4, 10*4, 15*4, 14*4 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, + 128*8 /* every sprite takes 128 consecutive bytes */ +}; + +static GFXDECODE_START( taitoz ) + GFXDECODE_ENTRY( REGION_GFX2, 0x0, tile16x8_layout, 0, 256 ) /* sprite parts */ + GFXDECODE_ENTRY( REGION_GFX1, 0x0, charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + +/* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx + slot, so 2nd batch of obj must be placed third */ + +static GFXDECODE_START( chasehq ) + GFXDECODE_ENTRY( REGION_GFX2, 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ + GFXDECODE_ENTRY( REGION_GFX1, 0x0, charlayout, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( REGION_GFX4, 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ +GFXDECODE_END + +static GFXDECODE_START( dblaxle ) + GFXDECODE_ENTRY( REGION_GFX2, 0x0, tile16x8_layout, 0, 256 ) /* sprite parts */ + GFXDECODE_ENTRY( REGION_GFX1, 0x0, dblaxle_charlayout, 0, 256 ) /* sprites & playfield */ +GFXDECODE_END + + + +/************************************************************** + YM2610 (SOUND) + +The first interface is for game boards with twin 68000 and Z80. +Interface B is for games which lack a Z80 (Spacegun, Bshark). +**************************************************************/ + +/* handler called by the YM2610 emulator when the internal timers cause an IRQ */ +static void irqhandler(int irq) // assumes Z80 sandwiched between 68Ks +{ + cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); +} + +/* handler called by the YM2610 emulator when the internal timers cause an IRQ */ +static void irqhandlerb(int irq) +{ + // DG: this is probably specific to Z80 and wrong? +// cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); +} + +static struct YM2610interface ym2610_interface = +{ + irqhandler, + REGION_SOUND2, /* Delta-T */ + REGION_SOUND1 /* ADPCM */ +}; + +static struct YM2610interface ym2610_interfaceb = +{ + irqhandlerb, + REGION_SOUND2, /* Delta-T */ + REGION_SOUND1 /* ADPCM */ +}; + + +/************************************************************** + SUBWOOFER (SOUND) +**************************************************************/ + +#if 0 +static int subwoofer_sh_start(const sound_config *msound) +{ + /* Adjust the lowpass filter of the first three YM2610 channels */ + + /* 150 Hz is a common top frequency played by a generic */ + /* subwoofer, the real Arcade Machine may differs */ + + mixer_set_lowpass_frequency(0,20); + mixer_set_lowpass_frequency(1,20); + mixer_set_lowpass_frequency(2,20); + + return 0; +} + +static struct CustomSound_interface subwoofer_interface = +{ + subwoofer_sh_start, + 0, /* none */ + 0 /* none */ +}; +#endif + + +/*********************************************************** + MACHINE DRIVERS + +CPU Interleaving +---------------- + +Chasehq2 needs high interleaving to have sound (not checked +since May 2001 - may have changed). + +Enforce with interleave of 1 sometimes lets you take over from +the demo game when you coin up! Set to 10 seems to cure this. + +Bshark needs the high cpu interleaving to run test mode. + +Nightstr needs the high cpu interleaving to get through init. + +Aquajack has it VERY high to cure frequent sound-related +hangs. + +Dblaxle has 10 to boot up reliably but very occasionally gets +a "root cpu error" still. + +Racingb inherited interleave from Dblaxle - other values not +tested! + +Mostly it's the 2nd 68K which writes to road chip, so syncing +between it and the master 68K may be important. Contcirc +and ChaseHQ have interleave of only 1 - possible cause of +Contcirc road glitchiness in attract? + +***********************************************************/ + +/* Contcirc vis area seems narrower than the other games... */ + +static MACHINE_DRIVER_START( contcirc ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(contcirc_readmem,contcirc_writemem) + MDRV_CPU_VBLANK_INT(irq6_line_hold,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(contcirc_cpub_readmem,contcirc_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq6_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(contcirc) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) + +// MDRV_SOUND_ADD(CUSTOM, subwoofer_interface) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( chasehq ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(chasehq_readmem,chasehq_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(chq_cpub_readmem,chq_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(chasehq) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(chasehq) + + /* sound hardware */ + MDRV_SPEAKER_ADD("front", 0.0, 0.0, 0.7) + MDRV_SPEAKER_ADD("rear", 0.0, 0.0, 1.3) + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "rear", 0.25) + MDRV_SOUND_ROUTE(0, "front", 0.25) + MDRV_SOUND_ROUTE(1, "rear", 1.0) + MDRV_SOUND_ROUTE(2, "front", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( enforce ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(enforce_readmem,enforce_writemem) + MDRV_CPU_VBLANK_INT(irq6_line_hold,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(enforce_cpub_readmem,enforce_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq6_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(10) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 31*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(contcirc) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) + +// MDRV_SOUND_ADD(CUSTOM, subwoofer_interface) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( bshark ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(bshark_readmem,bshark_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(bshark_cpub_readmem,bshark_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(100) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(bshark) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interfaceb) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( sci ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(sci_readmem,sci_writemem) + MDRV_CPU_VBLANK_INT(sci_interrupt,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(sci_cpub_readmem,sci_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(50) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(sci) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( nightstr ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(nightstr_readmem,nightstr_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(nightstr_cpub_readmem,nightstr_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(100) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(chasehq) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(chasehq) + + /* sound hardware */ + MDRV_SPEAKER_ADD("front", 0.0, 0.0, 0.7) + MDRV_SPEAKER_ADD("rear", 0.0, 0.0, 1.3) + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "front", 0.25) + MDRV_SOUND_ROUTE(0, "rear", 0.25) + MDRV_SOUND_ROUTE(1, "front", 1.0) + MDRV_SOUND_ROUTE(2, "rear", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( aquajack ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(aquajack_readmem,aquajack_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 12000000) /* 12 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(aquajack_cpub_readmem,aquajack_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(500) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(aquajack) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( spacegun ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(spacegun_readmem,spacegun_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(spacegun_cpub_readmem,spacegun_cpub_writemem) + MDRV_CPU_VBLANK_INT(irq4_line_hold,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + MDRV_NVRAM_HANDLER(spacegun) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(taitoz) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(spacegun) + MDRV_VIDEO_UPDATE(spacegun) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interfaceb) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( dblaxle ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(dblaxle_readmem,dblaxle_writemem) + MDRV_CPU_VBLANK_INT(dblaxle_interrupt,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(dblaxle_cpub_readmem,dblaxle_cpub_writemem) + MDRV_CPU_VBLANK_INT(dblaxle_cpub_interrupt,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(10) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(dblaxle) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(dblaxle) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +static MACHINE_DRIVER_START( racingb ) + + /* basic machine hardware */ + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(racingb_readmem,racingb_writemem) + MDRV_CPU_VBLANK_INT(dblaxle_interrupt,1) + + MDRV_CPU_ADD(Z80,16000000/4) + /* audio CPU */ /* 4 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem) + + MDRV_CPU_ADD(M68000, 16000000) /* 16 MHz ??? */ + MDRV_CPU_PROGRAM_MAP(racingb_cpub_readmem,racingb_cpub_writemem) + MDRV_CPU_VBLANK_INT(dblaxle_cpub_interrupt,1) + + MDRV_MACHINE_START(taitoz) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(100) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(40*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) + MDRV_GFXDECODE(dblaxle) + MDRV_PALETTE_LENGTH(4096) + + MDRV_VIDEO_START(taitoz) + MDRV_VIDEO_UPDATE(dblaxle) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("left", "right") + + MDRV_SOUND_ADD(YM2610, 16000000/2) + MDRV_SOUND_CONFIG(ym2610_interface) + MDRV_SOUND_ROUTE(0, "left", 0.25) + MDRV_SOUND_ROUTE(0, "right", 0.25) + MDRV_SOUND_ROUTE(1, "left", 1.0) + MDRV_SOUND_ROUTE(2, "right", 1.0) +MACHINE_DRIVER_END + + +/*************************************************************************** + DRIVERS + +Contcirc, Dblaxle sound sample rom order is uncertain as sound imperfect +***************************************************************************/ + +ROM_START( contcirc ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "ic25", 0x00000, 0x20000, CRC(f5c92e42) SHA1(42dfa1895e601df76d7022b83f05c4e5c843fd12) ) + ROM_LOAD16_BYTE( "ic26", 0x00001, 0x20000, CRC(e7c1d1fa) SHA1(75e851629a54facb8804ee8a953ab3265633bbf4) ) +// this was bogus and has been removed. +// someone hacked the copyright year from 1987 to 1989, and changed an unused byte from FF to F3 to keep +// the checksum the same. There are no other differences. +// ROM_LOAD16_BYTE( "cc_26.bin", 0x00001, 0x20000, CRC(1345ebe6) SHA1(88b9cc8ba2f7061beb8f6b763583cd45b03bcea1) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "ic35", 0x00000, 0x20000, CRC(16522f2d) SHA1(1d2823d61518936d342df3ed712da5bdfdf6e55a) ) + ROM_LOAD16_BYTE( "cc_36.bin", 0x00001, 0x20000, CRC(a1732ea5) SHA1(b773add433c20633e7acbc99d5cfeb7ccde83371) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b33-30.11", 0x00000, 0x04000, CRC(d8746234) SHA1(39132eedfe2ff4e3133f8020304da0d04dd757db) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b33-02.57", 0x00000, 0x80000, CRC(f6fb3ba2) SHA1(19b7c4cf33c4737405ebe53e7342578454e6ef95) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b33-06", 0x000000, 0x080000, CRC(2cb40599) SHA1(48b269610f80a42608f563742e5266dcf11638d1) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b33-05", 0x000001, 0x080000, CRC(bddf9eea) SHA1(284f4ba3dc107b4e26424963d8206c5ec4882983) ) + ROM_LOAD32_BYTE( "b33-04", 0x000002, 0x080000, CRC(8df866a2) SHA1(6b87d8e683fe7d31070b16620ebfee4edf7711b8) ) + ROM_LOAD32_BYTE( "b33-03", 0x000003, 0x080000, CRC(4f6c36d9) SHA1(18b15a991c3daf22b7f3f144edf3bd2abb3917eb) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b33-01.3", 0x00000, 0x80000, CRC(f11f2be8) SHA1(72ae08dc5bf5f6901fbb52d3b1dabcba90929b38) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) + ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b33-08.19", 0x00000, 0x80000, CRC(caa1c4c8) SHA1(15ef4f36e56fab793d2249252c456677ca6a85c9) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b14-30.97", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) ) // sprite vertical zoom + ROM_LOAD( "b14-31.50", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) ) // sprite horizontal zoom + ROM_LOAD( "b33-17.16", 0x00000, 0x00100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + ROM_LOAD( "b33-18.17", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( contcrcu ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "ic25", 0x00000, 0x20000, CRC(f5c92e42) SHA1(42dfa1895e601df76d7022b83f05c4e5c843fd12) ) + ROM_LOAD16_BYTE( "ic26", 0x00001, 0x20000, CRC(e7c1d1fa) SHA1(75e851629a54facb8804ee8a953ab3265633bbf4) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "ic35", 0x00000, 0x20000, CRC(16522f2d) SHA1(1d2823d61518936d342df3ed712da5bdfdf6e55a) ) + ROM_LOAD16_BYTE( "ic36", 0x00001, 0x20000, CRC(d6741e33) SHA1(8e86789e1664a34ceed85434fd3186f2571f0c4a) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b33-30.11", 0x00000, 0x04000, CRC(d8746234) SHA1(39132eedfe2ff4e3133f8020304da0d04dd757db) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b33-02.57", 0x00000, 0x80000, CRC(f6fb3ba2) SHA1(19b7c4cf33c4737405ebe53e7342578454e6ef95) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b33-06", 0x000000, 0x080000, CRC(2cb40599) SHA1(48b269610f80a42608f563742e5266dcf11638d1) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b33-05", 0x000001, 0x080000, CRC(bddf9eea) SHA1(284f4ba3dc107b4e26424963d8206c5ec4882983) ) + ROM_LOAD32_BYTE( "b33-04", 0x000002, 0x080000, CRC(8df866a2) SHA1(6b87d8e683fe7d31070b16620ebfee4edf7711b8) ) + ROM_LOAD32_BYTE( "b33-03", 0x000003, 0x080000, CRC(4f6c36d9) SHA1(18b15a991c3daf22b7f3f144edf3bd2abb3917eb) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b33-01.3", 0x00000, 0x80000, CRC(f11f2be8) SHA1(72ae08dc5bf5f6901fbb52d3b1dabcba90929b38) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) + ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b33-08.19", 0x00000, 0x80000, CRC(caa1c4c8) SHA1(15ef4f36e56fab793d2249252c456677ca6a85c9) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b14-30.97", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) ) // sprite vertical zoom + ROM_LOAD( "b14-31.50", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) ) // sprite horizontal zoom + ROM_LOAD( "b33-17.16", 0x00000, 0x00100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + ROM_LOAD( "b33-18.17", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( contcrua ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b33-34.ic25", 0x00000, 0x20000, CRC(e1e016c1) SHA1(d6ca3bcf03828dc296eab73185f773860bbaaae6) ) + ROM_LOAD16_BYTE( "b33-33.ic26", 0x00001, 0x20000, CRC(f539d44b) SHA1(1b77d97376f9bf3bbd728d459f0a0afbadc6d756) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "21-2.ic35", 0x00000, 0x20000, CRC(2723f9e3) SHA1(18a86e352bb0aeec6ad6c537294ddd0d33823ea6) ) + ROM_LOAD16_BYTE( "31-1.ic36", 0x00001, 0x20000, CRC(438431f7) SHA1(9be4ac6526d5aee01c3691f189583a2cfdad0e45) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b33-30.11", 0x00000, 0x04000, CRC(d8746234) SHA1(39132eedfe2ff4e3133f8020304da0d04dd757db) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b33-02.57", 0x00000, 0x80000, CRC(f6fb3ba2) SHA1(19b7c4cf33c4737405ebe53e7342578454e6ef95) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b33-06", 0x000000, 0x080000, CRC(2cb40599) SHA1(48b269610f80a42608f563742e5266dcf11638d1) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b33-05", 0x000001, 0x080000, CRC(bddf9eea) SHA1(284f4ba3dc107b4e26424963d8206c5ec4882983) ) + ROM_LOAD32_BYTE( "b33-04", 0x000002, 0x080000, CRC(8df866a2) SHA1(6b87d8e683fe7d31070b16620ebfee4edf7711b8) ) + ROM_LOAD32_BYTE( "b33-03", 0x000003, 0x080000, CRC(4f6c36d9) SHA1(18b15a991c3daf22b7f3f144edf3bd2abb3917eb) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b33-01.3", 0x00000, 0x80000, CRC(f11f2be8) SHA1(72ae08dc5bf5f6901fbb52d3b1dabcba90929b38) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b33-07.64", 0x00000, 0x80000, CRC(151e1f52) SHA1(118c673d74f27c4e76b321cc0e84f166d9f0d412) ) /* STY spritemap */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b33-09.18", 0x00000, 0x80000, CRC(1e6724b5) SHA1(48bb96b648605a9ceb88ff3b175a87226583c3d6) ) + ROM_LOAD( "b33-10.17", 0x80000, 0x80000, CRC(e9ce03ab) SHA1(17324e8f0422118bc0912eba5750d80469f40b78) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b33-08.19", 0x00000, 0x80000, CRC(caa1c4c8) SHA1(15ef4f36e56fab793d2249252c456677ca6a85c9) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b14-30.97", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) ) // sprite vertical zoom + ROM_LOAD( "b14-31.50", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) ) // sprite horizontal zoom + ROM_LOAD( "b33-17.16", 0x00000, 0x00100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + ROM_LOAD( "b33-18.17", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( chasehq ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b52-130.36", 0x00000, 0x20000, CRC(4e7beb46) SHA1(b8890c4a2121aa93cfc3a41ddbb3b840d0804cfa) ) + ROM_LOAD16_BYTE( "b52-136.29", 0x00001, 0x20000, CRC(2f414df0) SHA1(0daad8b1f7512a5af0722983751841b5b18064ac) ) + ROM_LOAD16_BYTE( "b52-131.37", 0x40000, 0x20000, CRC(aa945d83) SHA1(9d8a8186a199cacc0e24cf1ee75d81ab8b056406) ) + ROM_LOAD16_BYTE( "b52-129.30", 0x40001, 0x20000, CRC(0eaebc08) SHA1(1dde3304b251ddeb52f1378ef3845269c3667169) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b52-132.39", 0x00000, 0x10000, CRC(a2f54789) SHA1(941a6470e3a5ae35d079657260a8d7d6a9fca122) ) + ROM_LOAD16_BYTE( "b52-133.55", 0x00001, 0x10000, CRC(12232f95) SHA1(2894b95fc1d0a6e5b323bf3e7f1968f02b30a845) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b52-137.51", 0x00000, 0x04000, CRC(37abb74a) SHA1(1feb1e49102c13a90e02c150472545cd9f6334da) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b52-29.27", 0x00000, 0x80000, CRC(8366d27c) SHA1(d7c5f588b39742927228ce73e5d69bda1e903df6) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b52-34.5", 0x000000, 0x080000, CRC(7d8dce36) SHA1(ca082e647d10378144c05a70a8e4fe352d95eeaf) ) + ROM_LOAD32_BYTE( "b52-35.7", 0x000001, 0x080000, CRC(78eeec0d) SHA1(2e82186ca17c579816865ef21c52aef9e133fbf5) ) /* OBJ A 16x16 */ + ROM_LOAD32_BYTE( "b52-36.9", 0x000002, 0x080000, CRC(61e89e91) SHA1(f655b3caa37a8835c2eb11f4d72e985636ac5379) ) + ROM_LOAD32_BYTE( "b52-37.11", 0x000003, 0x080000, CRC(f02e47b9) SHA1(093864bd18bd58dafa57990e999f394ca3124452) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b52-28.4", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b52-30.4", 0x000000, 0x080000, CRC(1b8cc647) SHA1(8807fe01b6804507564fc179adf995bf86521fda) ) + ROM_LOAD32_BYTE( "b52-31.6", 0x000001, 0x080000, CRC(f1998e20) SHA1(b03d4e373e88933391f3533b885817edfca4cfdf) ) /* OBJ B 16x16 */ + ROM_LOAD32_BYTE( "b52-32.8", 0x000002, 0x080000, CRC(8620780c) SHA1(2545fd8fb03dcddc3da86d5ea06a6dc915acd1a1) ) + ROM_LOAD32_BYTE( "b52-33.10", 0x000003, 0x080000, CRC(e6f4b8c4) SHA1(8d15c75a16953aa56fb3dc6fd3b691e227bef622) ) + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b52-115.71", 0x000000, 0x080000, CRC(4e117e93) SHA1(51d893fa21793335878c76f6d5987d99da60be04) ) + ROM_LOAD( "b52-114.72", 0x080000, 0x080000, CRC(3a73d6b1) SHA1(419f02a875b30913331db207e344d0eaa275297e) ) + ROM_LOAD( "b52-113.73", 0x100000, 0x080000, CRC(2c6a3a05) SHA1(f2f0dfbbbb6930bf53025064ebae9c07a95c6deb) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b52-116.70", 0x00000, 0x80000, CRC(ad46983c) SHA1(6fcad67456fbd8c967cd4786815f70b57a24a969) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b52-01.7", 0x00000, 0x00100, CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) ) // road/sprite priority and palette select + ROM_LOAD( "b52-03.135", 0x00000, 0x00400, CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) ) + ROM_LOAD( "b52-06.24", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b52-18.93", 0x00000, 0x00100, CRC(60bdaf1a) SHA1(0cb9c6b821de9ccc1f38336608dd7ead46cb8d24) ) // identical to b52-18b + ROM_LOAD( "b52-18a", 0x00000, 0x00100, CRC(6271be0d) SHA1(84282af98fc0de10e88282f7187cd865133ed6ce) ) + ROM_LOAD( "b52-49.68", 0x00000, 0x02000, CRC(60dd2ed1) SHA1(8673b6b3355975fb91cd1491e0ac7c0f590e3824) ) + ROM_LOAD( "b52-50.66", 0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) ) + ROM_LOAD( "b52-51.65", 0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) ) + ROM_LOAD( "b52-126.136", 0x00000, 0x00400, CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) ) + ROM_LOAD( "b52-127.156", 0x00000, 0x00400, CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) ) + + ROM_REGION( 0x02a00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal20l8b-b52-17.ic18", 0x0000, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic16", 0x0200, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic53", 0x0400, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic55", 0x0600, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal16l8b-b52-19.ic33", 0x0800, 0x0104, CRC(3ba292dc) SHA1(ce904e92e9c0d73802e6f53dc747204c194281c5) ) + ROM_LOAD( "pal16l8b-b52-20.ic35", 0x0a00, 0x0104, CRC(bd39ad73) SHA1(03120f3d7d0b9b9105990e226388f9cdd53e5789) ) + ROM_LOAD( "pal16l8b-b52-21.ic51", 0x0c00, 0x0104, CRC(2fe76aa4) SHA1(9ea187cff3e0edb58b019400cfc4bf342d4304c3) ) + ROM_LOAD( "pal20l8b-b52-25.ic123", 0x0e00, 0x0144, CRC(372b632d) SHA1(84631489c9f56907a97d686c35b15284fab09e8d) ) + ROM_LOAD( "pal20l8b-b52-26.ic15", 0x1000, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic18", 0x1200, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic52", 0x1400, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic54", 0x1600, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-27.ic64", 0x1800, 0x0144, CRC(61c2ab26) SHA1(8540d452a21581739b1ab08708b0c799dd2d2393) ) + ROM_LOAD( "pal20l8b-b52-118.ic20", 0x1a00, 0x0144, CRC(9c5fe4af) SHA1(1fbc6461f067eeac9679ca32c126563951a99c09) ) + ROM_LOAD( "pal20l8b-b52-119.ic21", 0x1c00, 0x0144, CRC(8b8e2106) SHA1(be59baae5cada9901c2ea8891f99731f010364db) ) + ROM_LOAD( "pal16l8b-b52-120.ic56", 0x1e00, 0x0104, CRC(3e7effa0) SHA1(0e8c09613b6a9311261aa8fa8bafab0f27081741) ) + ROM_LOAD( "pal20l8b-b52-121.ic57", 0x2000, 0x0144, CRC(7056fd1d) SHA1(fc032f24b95ff7a8bf5a7badddef51c5447c445d) ) + ROM_LOAD( "pal16l8b-b52-122.ic124", 0x2200, 0x0104, CRC(04c0fb04) SHA1(53dfeb747e213c67a78c1407e43cdad4cec2cb7e) ) + ROM_LOAD( "pal16l8b-b52-123.ic125", 0x2400, 0x0104, CRC(3865d1c8) SHA1(2d77326be4fb047243c3d5c33c442b009bf6fc04) ) + ROM_LOAD( "pal16l8b-b52-124.ic180", 0x2600, 0x0104, NO_DUMP ) /* read protected */ + ROM_LOAD( "pal16l8b-b52-125.ic112", 0x2800, 0x0104, CRC(7628c557) SHA1(11bf628e091dc02e0c2e17ae726061ac04705a54) ) +ROM_END + +ROM_START( chasehqj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b52-140.36", 0x00000, 0x20000, CRC(c1298a4b) SHA1(41981b72c9ebbea8f8a4aa32e74b9ed46dd71e32) ) + ROM_LOAD16_BYTE( "b52-139.29", 0x00001, 0x20000, CRC(997f732e) SHA1(0f7bd4b3c53e1f14830b3c288f2175e7c125c2cc) ) + ROM_LOAD16_BYTE( "b52-131.37", 0x40000, 0x20000, CRC(aa945d83) SHA1(9d8a8186a199cacc0e24cf1ee75d81ab8b056406) ) + ROM_LOAD16_BYTE( "b52-129.30", 0x40001, 0x20000, CRC(0eaebc08) SHA1(1dde3304b251ddeb52f1378ef3845269c3667169) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b52-132.39", 0x00000, 0x10000, CRC(a2f54789) SHA1(941a6470e3a5ae35d079657260a8d7d6a9fca122) ) + ROM_LOAD16_BYTE( "b52-133.55", 0x00001, 0x10000, CRC(12232f95) SHA1(2894b95fc1d0a6e5b323bf3e7f1968f02b30a845) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b52-134.51", 0x00000, 0x04000, CRC(91faac7f) SHA1(05f00e0909444566877d0ef678bae49f107e1628) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b52-29.27", 0x00000, 0x80000, CRC(8366d27c) SHA1(d7c5f588b39742927228ce73e5d69bda1e903df6) ) /* SCR 8x8*/ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b52-34.5", 0x000000, 0x080000, CRC(7d8dce36) SHA1(ca082e647d10378144c05a70a8e4fe352d95eeaf) ) + ROM_LOAD32_BYTE( "b52-35.7", 0x000001, 0x080000, CRC(78eeec0d) SHA1(2e82186ca17c579816865ef21c52aef9e133fbf5) ) /* OBJ A 16x16 */ + ROM_LOAD32_BYTE( "b52-36.9", 0x000002, 0x080000, CRC(61e89e91) SHA1(f655b3caa37a8835c2eb11f4d72e985636ac5379) ) + ROM_LOAD32_BYTE( "b52-37.11", 0x000003, 0x080000, CRC(f02e47b9) SHA1(093864bd18bd58dafa57990e999f394ca3124452) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b52-28.4", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b52-30.4", 0x000000, 0x080000, CRC(1b8cc647) SHA1(8807fe01b6804507564fc179adf995bf86521fda) ) + ROM_LOAD32_BYTE( "b52-31.6", 0x000001, 0x080000, CRC(f1998e20) SHA1(b03d4e373e88933391f3533b885817edfca4cfdf) ) /* OBJ B 16x16 */ + ROM_LOAD32_BYTE( "b52-32.8", 0x000002, 0x080000, CRC(8620780c) SHA1(2545fd8fb03dcddc3da86d5ea06a6dc915acd1a1) ) + ROM_LOAD32_BYTE( "b52-33.10", 0x000003, 0x080000, CRC(e6f4b8c4) SHA1(8d15c75a16953aa56fb3dc6fd3b691e227bef622) ) + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b52-38.34", 0x00000, 0x80000, CRC(5b5bf7f6) SHA1(71dd5b40b83870d351c9ecaccc4fb98c3a6740ae) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b52-41.71", 0x000000, 0x80000, CRC(8204880c) SHA1(4dfd6454b4a4c04db3593e98648afbfe8d1f59ed) ) + ROM_LOAD( "b52-40.72", 0x080000, 0x80000, CRC(f0551055) SHA1(4498cd058a52d5e87c6d502e844908a5df3abf2a) ) + ROM_LOAD( "b52-39.73", 0x100000, 0x80000, CRC(ac9cbbd3) SHA1(792f41fef37ff35067fd0173d944f90279176649) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b52-42.70", 0x00000, 0x80000, CRC(6e617df1) SHA1(e3d1678132130c66506f2e1419db2f6b5b062f74) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b52-01.7", 0x00000, 0x00100, CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) ) // road/sprite priority and palette select + ROM_LOAD( "b52-03.135", 0x00000, 0x00400, CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) ) + ROM_LOAD( "b52-06.24", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b52-18.93", 0x00000, 0x00100, CRC(60bdaf1a) SHA1(0cb9c6b821de9ccc1f38336608dd7ead46cb8d24) ) // identical to b52-18b + ROM_LOAD( "b52-18a", 0x00000, 0x00100, CRC(6271be0d) SHA1(84282af98fc0de10e88282f7187cd865133ed6ce) ) + ROM_LOAD( "b52-49.68", 0x00000, 0x02000, CRC(60dd2ed1) SHA1(8673b6b3355975fb91cd1491e0ac7c0f590e3824) ) + ROM_LOAD( "b52-50.66", 0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) ) + ROM_LOAD( "b52-51.65", 0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) ) + ROM_LOAD( "b52-126.136", 0x00000, 0x00400, CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) ) + ROM_LOAD( "b52-127.156", 0x00000, 0x00400, CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) ) + + ROM_REGION( 0x02a00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal20l8b-b52-17.ic18", 0x0000, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic16", 0x0200, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic53", 0x0400, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal20l8b-b52-17.ic55", 0x0600, 0x0144, CRC(4851316d) SHA1(c58537b4b1ded471b7edcb94518757916a207bc0) ) + ROM_LOAD( "pal16l8b-b52-19.ic33", 0x0800, 0x0104, CRC(3ba292dc) SHA1(ce904e92e9c0d73802e6f53dc747204c194281c5) ) + ROM_LOAD( "pal16l8b-b52-20.ic35", 0x0a00, 0x0104, CRC(bd39ad73) SHA1(03120f3d7d0b9b9105990e226388f9cdd53e5789) ) + ROM_LOAD( "pal16l8b-b52-21.ic51", 0x0c00, 0x0104, CRC(2fe76aa4) SHA1(9ea187cff3e0edb58b019400cfc4bf342d4304c3) ) + ROM_LOAD( "pal20l8b-b52-25.ic123", 0x0e00, 0x0144, CRC(372b632d) SHA1(84631489c9f56907a97d686c35b15284fab09e8d) ) + ROM_LOAD( "pal20l8b-b52-26.ic15", 0x1000, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic18", 0x1200, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic52", 0x1400, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-26.ic54", 0x1600, 0x0144, CRC(d94f2bc2) SHA1(5ef92f824549add1a115ec25a10567bd4fe65c41) ) + ROM_LOAD( "pal20l8b-b52-27.ic64", 0x1800, 0x0144, CRC(61c2ab26) SHA1(8540d452a21581739b1ab08708b0c799dd2d2393) ) + ROM_LOAD( "pal20l8b-b52-118.ic20", 0x1a00, 0x0144, CRC(9c5fe4af) SHA1(1fbc6461f067eeac9679ca32c126563951a99c09) ) + ROM_LOAD( "pal20l8b-b52-119.ic21", 0x1c00, 0x0144, CRC(8b8e2106) SHA1(be59baae5cada9901c2ea8891f99731f010364db) ) + ROM_LOAD( "pal16l8b-b52-120.ic56", 0x1e00, 0x0104, CRC(3e7effa0) SHA1(0e8c09613b6a9311261aa8fa8bafab0f27081741) ) + ROM_LOAD( "pal20l8b-b52-121.ic57", 0x2000, 0x0144, CRC(7056fd1d) SHA1(fc032f24b95ff7a8bf5a7badddef51c5447c445d) ) + ROM_LOAD( "pal16l8b-b52-122.ic124", 0x2200, 0x0104, CRC(04c0fb04) SHA1(53dfeb747e213c67a78c1407e43cdad4cec2cb7e) ) + ROM_LOAD( "pal16l8b-b52-123.ic125", 0x2400, 0x0104, CRC(3865d1c8) SHA1(2d77326be4fb047243c3d5c33c442b009bf6fc04) ) + ROM_LOAD( "pal16l8b-b52-124.ic180", 0x2600, 0x0104, NO_DUMP ) /* read protected */ + ROM_LOAD( "pal16l8b-b52-125.ic112", 0x2800, 0x0104, CRC(7628c557) SHA1(11bf628e091dc02e0c2e17ae726061ac04705a54) ) +ROM_END + +ROM_START( enforce ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b58-27.27", 0x00000, 0x20000, CRC(a1aa0191) SHA1(193d936e1bfe0da4ac984aba65d3e4e6c93a4c11) ) + ROM_LOAD16_BYTE( "b58-19.19", 0x00001, 0x20000, CRC(40f43da3) SHA1(bb3d6c6db8df77674bb76c16992d05c297d97c9f) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b58-26.26", 0x00000, 0x20000, CRC(e823c85c) SHA1(199b19e81c76eb936f4cf31957ae08bed1395bda) ) + ROM_LOAD16_BYTE( "b58-18.18", 0x00001, 0x20000, CRC(65328a3e) SHA1(f51ca107910629e030678e183cc8fd06d2569098) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b58-32.41", 0x00000, 0x04000, CRC(f3fd8eca) SHA1(3b1ab64984ea43805b6494f8add26210ed1175c5) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b58-09.13", 0x00000, 0x80000, CRC(9ffd5b31) SHA1(0214fb32012a48560ca9c6ed5ee969d3c41cf95c) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b58-04.7", 0x000000, 0x080000, CRC(9482f08d) SHA1(3fc74b9bebca1d82b300ba72c7297c3bcd69cfa9) ) + ROM_LOAD32_BYTE( "b58-03.6", 0x000001, 0x080000, CRC(158bc440) SHA1(ceab296146363a2e9a48f62118fba6123b4b5a1b) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b58-02.2", 0x000002, 0x080000, CRC(6a6e307c) SHA1(fc4a68220e0dd0e64d75ba7c7af0c1ac97dc7fd9) ) + ROM_LOAD32_BYTE( "b58-01.1", 0x000003, 0x080000, CRC(01e9f0a8) SHA1(0d3a4dc81702e3c57c790eb8a45caca36cb47d4c) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b58-06.116", 0x00000, 0x80000, CRC(b3495d70) SHA1(ead4c2fd20b8f103a849201c7344cded013eb8bb) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b58-05.71", 0x00000, 0x80000, CRC(d1f4991b) SHA1(f1c5a9b8dce994d013290e98fda7bedf73e95900) ) /* STY spritemap */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b58-07.11", 0x000000, 0x080000, CRC(eeb5ba08) SHA1(fe40333e09339c76e503ce87b42a89b48d487016) ) + ROM_LOAD( "b58-08.12", 0x080000, 0x080000, CRC(049243cf) SHA1(1f3099b6d764114dc4161ed308369d0f3148dc4e) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples ??? */ + ROM_LOAD( "b58-10.14", 0x00000, 0x80000, CRC(edce0cc1) SHA1(1f6cbc60502b8b12b349e48446ce3a4a1f76bccd) ) /* ??? */ + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b58-26a.104", 0x00000, 0x10000, CRC(dccb0c7f) SHA1(42f0af72f559133b74912a4478e1323062be4b77) ) // sprite vertical zoom + ROM_LOAD( "b58-27.56", 0x00000, 0x02000, CRC(5c6b013d) SHA1(6d02d4560076213b6fb6fe856143bb533090603e) ) // sprite horizontal zoom + ROM_LOAD( "b58-23.52", 0x00000, 0x00100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + ROM_LOAD( "b58-24.51", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b58-25.75", 0x00000, 0x00100, CRC(de547342) SHA1(3b2b116d4016ddbf46c41c625c7fcfd76129baa7) ) +// Add pals... +ROM_END + +ROM_START( bshark ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c34_71.98", 0x00000, 0x20000, CRC(df1fa629) SHA1(6cb207e577fac85da654f3dc56e2f9f25c38a76d) ) + ROM_LOAD16_BYTE( "c34_69.75", 0x00001, 0x20000, CRC(a54c137a) SHA1(632bf2d65f54035de2ecb87648dafa877c45e428) ) + ROM_LOAD16_BYTE( "c34_70.97", 0x40000, 0x20000, CRC(d77d81e2) SHA1(d60e586cefd9001e87cae583ca25bf5a8a461d8d) ) + ROM_LOAD16_BYTE( "bshark67.bin", 0x40001, 0x20000, CRC(39307c74) SHA1(65d1cb6b0baee29c1439180b8b4c6907e20b2921) ) + + ROM_REGION( 0x80000, REGION_CPU2, 0 ) /* 512K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c34_74.128", 0x00000, 0x20000, CRC(6869fa99) SHA1(16221f25c865a81ca4f6a987b6de02a3ccf3208c) ) + ROM_LOAD16_BYTE( "c34_72.112", 0x00001, 0x20000, CRC(c09c0f91) SHA1(32c78924617328abb11c094f89a90a92e72ed5e6) ) + ROM_LOAD16_BYTE( "c34_75.129", 0x40000, 0x20000, CRC(6ba65542) SHA1(9ba5af9dd240a198dfa760ca14b0f0c84eb307c9) ) + ROM_LOAD16_BYTE( "c34_73.113", 0x40001, 0x20000, CRC(f2fe62b5) SHA1(e31b5989b747de451ee6c2a5e15ec75235d84e0d) ) + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c34_05.3", 0x00000, 0x80000, CRC(596b83da) SHA1(826cf1e48a017a0cbfcc4a4f507dfb285594178b) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c34_04.17", 0x000000, 0x080000, CRC(2446b0da) SHA1(bce5c73533e2bb7dfa7f18fad510f818cf1a542a) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c34_03.16", 0x000001, 0x080000, CRC(a18eab78) SHA1(155f0efbfe73e18355804477d4b8954bb47bf1ef) ) + ROM_LOAD32_BYTE( "c34_02.15", 0x000002, 0x080000, CRC(8488ba10) SHA1(60f8f0dc9d4bc6bc452527250221c9915e9dfe6e) ) + ROM_LOAD32_BYTE( "c34_01.14", 0x000003, 0x080000, CRC(3ebe8c63) SHA1(fa7403bf895c041cb64234209c944683ae372e57) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c34_07.42", 0x00000, 0x80000, CRC(edb07808) SHA1(f32b4b93e9125536376d96fbca76c2b2f5f78656) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) ) /* STY spritemap */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c34_09.126", 0x00000, 0x80000, CRC(39d12b50) SHA1(5c5d1369597604376943e4825f6c09cc28d66047) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c34_18.22", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c34_19.72", 0x00000, 0x00100, CRC(2ee9c404) SHA1(3a2ddaaaf7abe9f47f7e062b002fd3a61c80f60b) ) // road/sprite priority and palette select + ROM_LOAD( "c34_20.89", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "c34_21.7", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) ) + ROM_LOAD( "c34_22.8", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) ) +ROM_END + +ROM_START( bsharkj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c34_71.98", 0x00000, 0x20000, CRC(df1fa629) SHA1(6cb207e577fac85da654f3dc56e2f9f25c38a76d) ) + ROM_LOAD16_BYTE( "c34_69.75", 0x00001, 0x20000, CRC(a54c137a) SHA1(632bf2d65f54035de2ecb87648dafa877c45e428) ) + ROM_LOAD16_BYTE( "c34_70.97", 0x40000, 0x20000, CRC(d77d81e2) SHA1(d60e586cefd9001e87cae583ca25bf5a8a461d8d) ) + ROM_LOAD16_BYTE( "c34_66.74", 0x40001, 0x20000, CRC(a0392dce) SHA1(5d20f39b75e921fda82c33990463cec73879d113) ) + + ROM_REGION( 0x80000, REGION_CPU2, 0 ) /* 512K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c34_74.128", 0x00000, 0x20000, CRC(6869fa99) SHA1(16221f25c865a81ca4f6a987b6de02a3ccf3208c) ) + ROM_LOAD16_BYTE( "c34_72.112", 0x00001, 0x20000, CRC(c09c0f91) SHA1(32c78924617328abb11c094f89a90a92e72ed5e6) ) + ROM_LOAD16_BYTE( "c34_75.129", 0x40000, 0x20000, CRC(6ba65542) SHA1(9ba5af9dd240a198dfa760ca14b0f0c84eb307c9) ) + ROM_LOAD16_BYTE( "c34_73.113", 0x40001, 0x20000, CRC(f2fe62b5) SHA1(e31b5989b747de451ee6c2a5e15ec75235d84e0d) ) + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c34_05.3", 0x00000, 0x80000, CRC(596b83da) SHA1(826cf1e48a017a0cbfcc4a4f507dfb285594178b) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c34_04.17", 0x000000, 0x080000, CRC(2446b0da) SHA1(bce5c73533e2bb7dfa7f18fad510f818cf1a542a) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c34_03.16", 0x000001, 0x080000, CRC(a18eab78) SHA1(155f0efbfe73e18355804477d4b8954bb47bf1ef) ) + ROM_LOAD32_BYTE( "c34_02.15", 0x000002, 0x080000, CRC(8488ba10) SHA1(60f8f0dc9d4bc6bc452527250221c9915e9dfe6e) ) + ROM_LOAD32_BYTE( "c34_01.14", 0x000003, 0x080000, CRC(3ebe8c63) SHA1(fa7403bf895c041cb64234209c944683ae372e57) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c34_07.42", 0x00000, 0x80000, CRC(edb07808) SHA1(f32b4b93e9125536376d96fbca76c2b2f5f78656) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c34_06.12", 0x00000, 0x80000, CRC(d200b6eb) SHA1(6bfe3a7dde8d4e983521877d2bb176f5d126b763) ) /* STY spritemap */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c34_08.127", 0x00000, 0x80000, CRC(89a30450) SHA1(96b96ca5a3e20cdceb9ac5ddf377fb21a9a529fb) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c34_09.126", 0x00000, 0x80000, CRC(39d12b50) SHA1(5c5d1369597604376943e4825f6c09cc28d66047) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c34_18.22", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c34_19.72", 0x00000, 0x00100, CRC(2ee9c404) SHA1(3a2ddaaaf7abe9f47f7e062b002fd3a61c80f60b) ) // road/sprite priority and palette select + ROM_LOAD( "c34_20.89", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "c34_21.7", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) ) + ROM_LOAD( "c34_22.8", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) ) +ROM_END + +ROM_START( sci ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c09-37.43", 0x00000, 0x20000, CRC(0fecea17) SHA1(0ad4454eee6646b0f978b1ba83206d64c1f6d081) ) + ROM_LOAD16_BYTE( "c09-38.40", 0x00001, 0x20000, CRC(e46ebd9b) SHA1(52b0c1f95e8a664076d8fbc0f6204ca55893e281) ) + ROM_LOAD16_BYTE( "c09-42.38", 0x40000, 0x20000, CRC(f4404f87) SHA1(8f051f1ffbf323cb3d613bc22afa53676590f29c) ) + ROM_LOAD16_BYTE( "c09-39.41", 0x40001, 0x20000, CRC(de87bcb9) SHA1(b5537a25871ea90294f3b6f0b6386a883cfdf991) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c09-33.6", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) ) /* Actual label is "C09 33*" */ + ROM_LOAD16_BYTE( "c09-32.5", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) ) /* Actual label is "C09 32*" */ + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "c09-34.31", 0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c09-05.16", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c09-04.52", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c09-02.53", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) ) + ROM_LOAD32_BYTE( "c09-03.54", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) ) + ROM_LOAD32_BYTE( "c09-01.55", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c09-07.15", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) + ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) + ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c09-15.29", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c09-16.17", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c09-20.71", 0x00000, 0x00100, CRC(cd8ffd80) SHA1(133bcd291a3751bce5293cb6b685f87258e8db19) ) // road/sprite priority and palette select + ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +// ROM_LOAD( "c09-21.2", 0x00000, 0x00???, NO_DUMP ) /* pals (Guru dump) */ +// ROM_LOAD( "c09-22.3", 0x00000, 0x00???, NO_DUMP ) +// ROM_LOAD( "c09-24.22", 0x00000, 0x00???, NO_DUMP ) +// ROM_LOAD( "c09-25.25", 0x00000, 0x00???, NO_DUMP ) +// ROM_LOAD( "c09-26.26", 0x00000, 0x00???, NO_DUMP ) +ROM_END + +ROM_START( scia ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c09-28.43", 0x00000, 0x20000, CRC(630dbaad) SHA1(090f6a97007ac04f64d92ae5823b7254152144af) ) + ROM_LOAD16_BYTE( "c09-30.40", 0x00001, 0x20000, CRC(68b1a97d) SHA1(c377f7880154b38fe25dc0ec420ca0cd7228fbad) ) + ROM_LOAD16_BYTE( "c09-36.38", 0x40000, 0x20000, CRC(59e47cba) SHA1(313302bc62ff02b437b1091d394d2010ce66c7e7) ) + ROM_LOAD16_BYTE( "c09-31.41", 0x40001, 0x20000, CRC(962b1fbf) SHA1(62181a289dfc6d1da674ba4bcbefeb16a67a55e3) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c09-33.6", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) ) /* Actual label is "C09 33*" */ + ROM_LOAD16_BYTE( "c09-32.5", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) ) /* Actual label is "C09 32*" */ + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "c09-34.31", 0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c09-05.16", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c09-04.52", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c09-02.53", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) ) + ROM_LOAD32_BYTE( "c09-03.54", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) ) + ROM_LOAD32_BYTE( "c09-01.55", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c09-07.15", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) + ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) + ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c09-15.29", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c09-16.17", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c09-20.71", 0x00000, 0x00100, CRC(cd8ffd80) SHA1(133bcd291a3751bce5293cb6b685f87258e8db19) ) // road/sprite priority and palette select + ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( scij ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c09-37.43", 0x00000, 0x20000, CRC(0fecea17) SHA1(0ad4454eee6646b0f978b1ba83206d64c1f6d081) ) + ROM_LOAD16_BYTE( "c09-38.40", 0x00001, 0x20000, CRC(e46ebd9b) SHA1(52b0c1f95e8a664076d8fbc0f6204ca55893e281) ) + ROM_LOAD16_BYTE( "c09-40.38", 0x40000, 0x20000, CRC(1a4e2eab) SHA1(7c95ba516d164b7b4e6eaf80e3dacf7c35d8123d) ) + ROM_LOAD16_BYTE( "c09-39.41", 0x40001, 0x20000, CRC(de87bcb9) SHA1(b5537a25871ea90294f3b6f0b6386a883cfdf991) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c09-33.6", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) ) /* Actual label is "C09 33*" */ + ROM_LOAD16_BYTE( "c09-32.5", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) ) /* Actual label is "C09 32*" */ + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "c09-27.31", 0x00000, 0x04000, CRC(cd161dca) SHA1(2e0632f290f8efae5e479c67ca8808a90e0f4afd) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c09-05.16", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c09-04.52", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c09-02.53", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) ) + ROM_LOAD32_BYTE( "c09-03.54", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) ) + ROM_LOAD32_BYTE( "c09-01.55", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c09-07.15", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c09-10.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) + ROM_LOAD( "c09-09.43", 0x080000, 0x080000, CRC(6a655c00) SHA1(5ae1ee422226e386550b69a1f35668c10d3bdcc2) ) + ROM_LOAD( "c09-08.44", 0x100000, 0x080000, CRC(7ddfc316) SHA1(47f0ed8eecd4719b4c5cb8762ee6b8bb01686812) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c09-11.29", 0x00000, 0x80000, CRC(6b1a11e1) SHA1(4304d029ecf91fa5b779057f195f75ebdd0a7c1c) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c09-16.17", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c09-20.71", 0x00000, 0x00100, CRC(cd8ffd80) SHA1(133bcd291a3751bce5293cb6b685f87258e8db19) ) // road/sprite priority and palette select + ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( sciu ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c09-43.43", 0x00000, 0x20000, CRC(20a9343e) SHA1(b0185ddbda827236b7b41687f18c92e10c2dbd3a) ) + ROM_LOAD16_BYTE( "c09-44.40", 0x00001, 0x20000, CRC(7524338a) SHA1(f4e68a4d09f843f4697b4b4a4e94b5759a14fd01) ) + ROM_LOAD16_BYTE( "c09-41.38", 0x40000, 0x20000, CRC(83477f11) SHA1(f6dba2137a182dae215cf212bf85f4528e3d006d) ) + ROM_LOAD16_BYTE( "c09-39.41", 0x40001, 0x20000, CRC(de87bcb9) SHA1(b5537a25871ea90294f3b6f0b6386a883cfdf991) ) + + ROM_REGION( 0x20000, REGION_CPU3, 0 ) /* 128K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c09-33.6", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) ) /* Actual label is "C09 33*" */ + ROM_LOAD16_BYTE( "c09-32.5", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) ) /* Actual label is "C09 32*" */ + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "c09-34.31", 0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c09-05.16", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c09-04.52", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c09-02.53", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) ) + ROM_LOAD32_BYTE( "c09-03.54", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) ) + ROM_LOAD32_BYTE( "c09-01.55", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c09-07.15", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) ) + ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) ) + ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c09-15.29", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c09-16.17", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c09-20.71", 0x00000, 0x00100, CRC(cd8ffd80) SHA1(133bcd291a3751bce5293cb6b685f87258e8db19) ) // road/sprite priority and palette select + ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority +ROM_END + +ROM_START( nightstr ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b91-45.bin", 0x00000, 0x20000, CRC(7ad63421) SHA1(4ecfc3c8cd691d878e5d9212ccff0d225bb06bd9) ) + ROM_LOAD16_BYTE( "b91-44.bin", 0x00001, 0x20000, CRC(4bc30adf) SHA1(531d6ee9c8ff0d4ed07c15465ec7cb78cf976115) ) + ROM_LOAD16_BYTE( "b91-43.bin", 0x40000, 0x20000, CRC(3e6f727a) SHA1(ae837131a4c0c9bc5deba155c2a5b7ae72f1d070) ) + ROM_LOAD16_BYTE( "b91-46.bin", 0x40001, 0x20000, CRC(e870be95) SHA1(9a83df2c88a029bc40f5ce074143778ea555a2ba) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b91-39.bin", 0x00000, 0x20000, CRC(725b23ae) SHA1(d4b4335863d32b9a81f7461240e960bf345c9835) ) + ROM_LOAD16_BYTE( "b91-40.bin", 0x00001, 0x20000, CRC(81fb364d) SHA1(f02733509039cde2c1de616e0a7969e31de1007a) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* Z80 sound cpu */ + ROM_LOAD( "b91-41.bin", 0x00000, 0x04000, CRC(2694bb42) SHA1(ee770472655ac0ef55eeff04037457dbf6744e4f) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b91-11.bin", 0x00000, 0x80000, CRC(fff8ce31) SHA1(fc729de92937a805d79379228d7a30041594c0df) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b91-04.bin", 0x000000, 0x080000, CRC(8ca1970d) SHA1(d8504298a38a95f1d8f3a2fba479ec75fe4d5de7) ) /* OBJ A 16x16 */ + ROM_LOAD32_BYTE( "b91-03.bin", 0x000001, 0x080000, CRC(cd5fed39) SHA1(c16c67cc998889288e6e96535fd8e61afc93bc78) ) + ROM_LOAD32_BYTE( "b91-02.bin", 0x000002, 0x080000, CRC(457c64b8) SHA1(443f13d56d53ca6a7750ec974da675bad3f34a38) ) + ROM_LOAD32_BYTE( "b91-01.bin", 0x000003, 0x080000, CRC(3731d94f) SHA1(2978d3eb1f44595681e84f3aa8dc03d34a191455) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b91-10.bin", 0x00000, 0x80000, CRC(1d8f05b4) SHA1(04caa6a0887b90860c426a973dc3c3270e996818) ) /* ROD, road lines */ + + ROM_REGION( 0x200000, REGION_GFX4, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b91-08.bin", 0x000000, 0x080000, CRC(66f35c34) SHA1(9040390fa9c626a54076a9461e0e198f059e2cb1) ) /* OBJ B 16x16 */ + ROM_LOAD32_BYTE( "b91-07.bin", 0x000001, 0x080000, CRC(4d8ec6cf) SHA1(2b7c10b459dc45313c4c90899a73c42c55b6c5c9) ) + ROM_LOAD32_BYTE( "b91-06.bin", 0x000002, 0x080000, CRC(a34dc839) SHA1(e1fcb763dbc562a62e862297458bde66d691606c) ) + ROM_LOAD32_BYTE( "b91-05.bin", 0x000003, 0x080000, CRC(5e72ac90) SHA1(c28c2718e873be5a254992ef8db256a394ca03ff) ) + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b91-09.bin", 0x00000, 0x80000, CRC(5f247ca2) SHA1(3b89e5d035f27f62a14c5c7a976c804f9bb5c04d) ) /* STY spritemap */ + + ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b91-13.bin", 0x00000, 0x80000, CRC(8c7bf0f5) SHA1(6e18531991225c24a9722c9fbe1af6ae6e9b866b) ) + ROM_LOAD( "b91-12.bin", 0x80000, 0x80000, CRC(da77c7af) SHA1(49662a69b83739e2e0209cabff83995a951383f4) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b91-14.bin", 0x00000, 0x80000, CRC(6bc314d3) SHA1(ae3e9c6b853bab4ec81a6bd951b39a4bc883f456) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "b91-26.bin", 0x00000, 0x0400, CRC(77682a4f) SHA1(da2b3143f1c8688a22d8ec47bbb73b2f2e578480) ) + ROM_LOAD( "b91-27.bin", 0x00000, 0x0400, CRC(a3f8490d) SHA1(349b8c9ba914603f72f800a3fc8e8277d756deb1) ) + ROM_LOAD( "b91-28.bin", 0x00000, 0x0400, CRC(fa2f840e) SHA1(dd61ee6833bd43bbf619d36ec46f2bfa00880f40) ) + ROM_LOAD( "b91-29.bin", 0x00000, 0x2000, CRC(ad685be8) SHA1(e7681d76fa216c124c54544393c4f6a08fd7d74d) ) + ROM_LOAD( "b91-30.bin", 0x00000, 0x10000, CRC(30cc1f79) SHA1(3b0e3e6e8bce7a7d04a5b0103e2ce4e18e52a68e) ) + ROM_LOAD( "b91-31.bin", 0x00000, 0x10000, CRC(c189781c) SHA1(af3904ce51f715970965d110313491dbacf188b8) ) + ROM_LOAD( "b91-32.bin", 0x00000, 0x0100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b91-33.bin", 0x00000, 0x0100, CRC(89719d17) SHA1(50181b8172b0fc08b149db18caf10659be9c517f) ) // road/sprite priority and palette select +ROM_END + +ROM_START( aquajack ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b77-22.rom", 0x00000, 0x20000, CRC(67400dde) SHA1(1e47c4fbd4449f2d973ac962ad58f22502d59198) ) + ROM_LOAD16_BYTE( "34.17", 0x00001, 0x20000, CRC(cd4d0969) SHA1(d610e7847a09f1ca892007440fa1b431bb0c41d2) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b77-24.rom", 0x00000, 0x20000, CRC(95e643ed) SHA1(d47ddd50c744f33b3cbd5ef90880ca577977f5ca) ) + ROM_LOAD16_BYTE( "b77-23.rom", 0x00001, 0x20000, CRC(395a7d1c) SHA1(22cbbabb07f43e72a6139b6b9d68d6c1146d727f) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b77-20.rom", 0x00000, 0x04000, CRC(84ba54b7) SHA1(84e51c1a6a5b4eb2a65f4a6d9d54037323348f50) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b77-05.rom", 0x00000, 0x80000, CRC(7238f0ff) SHA1(95e2d6815e99392358bbeabf1afbf237673f2e24) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b77-04.rom", 0x000000, 0x80000, CRC(bed0be6c) SHA1(2b11824f741b7f6755bd78f594af19b63a29092f) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b77-03.rom", 0x000001, 0x80000, CRC(9a3030a7) SHA1(7b60fd066eccd04d9fcc131d9d06f151334ccab2) ) + ROM_LOAD32_BYTE( "b77-02.rom", 0x000002, 0x80000, CRC(daea0d2e) SHA1(10640651824234a589838e8f017964b79de79cb4) ) + ROM_LOAD32_BYTE( "b77-01.rom", 0x000003, 0x80000, CRC(cdab000d) SHA1(d83ee7f1dc17ab113bac38d0d062bb1519ff69f7) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b77-07.rom", 0x000000, 0x80000, CRC(7db1fc5e) SHA1(fbc88c2179b881d34d3a33d0a901d8da3445f9a8) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) ) /* STY spritemap */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b77-08.rom", 0x00000, 0x80000, CRC(119b9485) SHA1(2c9cd90be20df769e09016abccf59c8f119da286) ) + + ROM_REGION( 0x00200, REGION_USER2, 0 ) /* unused PROMs */ + ROM_LOAD( "b77-17.bin", 0x00000, 0x0100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b77-18.bin", 0x00100, 0x0100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + +/* (no unused roms in my set, there should be an 0x10000 one like the rest) */ +ROM_END + +ROM_START( aquajckj ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 256K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "b77-22.rom", 0x00000, 0x20000, CRC(67400dde) SHA1(1e47c4fbd4449f2d973ac962ad58f22502d59198) ) + ROM_LOAD16_BYTE( "b77-21.rom", 0x00001, 0x20000, CRC(23436845) SHA1(e62111c902453e1b655c7f25bcea938a6f13aed2) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "b77-24.rom", 0x00000, 0x20000, CRC(95e643ed) SHA1(d47ddd50c744f33b3cbd5ef90880ca577977f5ca) ) + ROM_LOAD16_BYTE( "b77-23.rom", 0x00001, 0x20000, CRC(395a7d1c) SHA1(22cbbabb07f43e72a6139b6b9d68d6c1146d727f) ) + + ROM_REGION( 0x1c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD( "b77-20.rom", 0x00000, 0x04000, CRC(84ba54b7) SHA1(84e51c1a6a5b4eb2a65f4a6d9d54037323348f50) ) + ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */ + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "b77-05.rom", 0x00000, 0x80000, CRC(7238f0ff) SHA1(95e2d6815e99392358bbeabf1afbf237673f2e24) ) /* SCR 8x8 */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "b77-04.rom", 0x000000, 0x80000, CRC(bed0be6c) SHA1(2b11824f741b7f6755bd78f594af19b63a29092f) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "b77-03.rom", 0x000001, 0x80000, CRC(9a3030a7) SHA1(7b60fd066eccd04d9fcc131d9d06f151334ccab2) ) + ROM_LOAD32_BYTE( "b77-02.rom", 0x000002, 0x80000, CRC(daea0d2e) SHA1(10640651824234a589838e8f017964b79de79cb4) ) + ROM_LOAD32_BYTE( "b77-01.rom", 0x000003, 0x80000, CRC(cdab000d) SHA1(d83ee7f1dc17ab113bac38d0d062bb1519ff69f7) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "b77-07.rom", 0x000000, 0x80000, CRC(7db1fc5e) SHA1(fbc88c2179b881d34d3a33d0a901d8da3445f9a8) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "b77-06.rom", 0x00000, 0x80000, CRC(ce2aed00) SHA1(9c992717914b13eb271122ecf7cca3634b013e56) ) /* STY spritemap */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "b77-09.rom", 0x00000, 0x80000, CRC(948e5ad9) SHA1(35cd6706470f01b5a244817d10fc65c075ff29b1) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "b77-08.rom", 0x00000, 0x80000, CRC(119b9485) SHA1(2c9cd90be20df769e09016abccf59c8f119da286) ) + + ROM_REGION( 0x00200, REGION_USER2, 0 ) /* unused PROMs */ + ROM_LOAD( "b77-17.bin", 0x00000, 0x0100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "b77-18.bin", 0x00100, 0x0100, CRC(7b7d8ff4) SHA1(18842ed8160739cd2e2ccc2db605153dbed6cc0a) ) // road/sprite priority and palette select + +/* (no unused roms in my set, there should be an 0x10000 one like the rest) */ +ROM_END + +ROM_START( spacegun ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c57-18.62", 0x00000, 0x20000, CRC(19d7d52e) SHA1(4361929a43f911864ece4dcd06995ea6b6156c59) ) + ROM_LOAD16_BYTE( "c57-20.74", 0x00001, 0x20000, CRC(2e58253f) SHA1(36fb52ce1c6cf9f537cf500ba330b167871969b9) ) + ROM_LOAD16_BYTE( "c57-17.59", 0x40000, 0x20000, CRC(e197edb8) SHA1(2ffd000aac1825ecd564c273f0cc055710ba4050) ) + ROM_LOAD16_BYTE( "c57-22.73", 0x40001, 0x20000, CRC(5855fde3) SHA1(fcd6d7ed16b61b9023596f0efb7f6971060a2e0b) ) + + ROM_REGION( 0x40000, REGION_CPU2, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c57-15.27", 0x00000, 0x20000, CRC(b36eb8f1) SHA1(e6e9fb844fd9acc6ee8a515a964d5df8de088a8c) ) + ROM_LOAD16_BYTE( "c57-16.29", 0x00001, 0x20000, CRC(bfb5d1e7) SHA1(cbf22e9043aac54e08c5da74d973da27844170ef) ) + + ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "c57-06.52", 0x00000, 0x80000, CRC(4ebadd5b) SHA1(d32a52b4d7dd19b0fa2551f93ce3d5cbcf2bc158) ) /* SCR 8x8 */ + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c57-01.25", 0x000000, 0x100000, CRC(f901b04e) SHA1(24bac1c3a0c585966a7cbeeebd9b2dd3acf45a67) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c57-02.24", 0x000001, 0x100000, CRC(21ee4633) SHA1(ddb948b165127c8fb1a988b5a0f17f92117f1b66) ) + ROM_LOAD32_BYTE( "c57-03.12", 0x000002, 0x100000, CRC(fafca86f) SHA1(dc6ea78f0deafef632d8bd3677ec74e797dc69a2) ) + ROM_LOAD32_BYTE( "c57-04.11", 0x000003, 0x100000, CRC(a9787090) SHA1(8c05c4c0d14a9f60defb37225da37aadf946c563) ) + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c57-05.36", 0x00000, 0x80000, CRC(6a70eb2e) SHA1(307dd876af65204e86e094b4015ffb4a655824f8) ) /* STY spritemap */ + + ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c57-07.76", 0x00000, 0x80000, CRC(ad653dc1) SHA1(2ec440f793b0a686233fbe61c9462f8365c42b65) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c57-08.75", 0x00000, 0x80000, CRC(22593550) SHA1(e802e947e6947d146e1b57dbff7ac021e19e7b2b) ) + + ROM_REGION( 0x0c00, REGION_PLDS, ROMREGION_DISPOSE ) + ROM_LOAD( "pal16l8-c57-09.9", 0x0000, 0x0104, CRC(ea93161e) SHA1(c83c6ce3696b2754abb861d41a8d587a8e82aa1e) ) + ROM_LOAD( "pal20l8-c57-10.47", 0x0200, 0x0144, CRC(3ee56888) SHA1(030efb0903d919686748b1ff86a327990832d0fa) ) + ROM_LOAD( "pal16l8-c57-11.48", 0x0400, 0x0104, CRC(6bb4372e) SHA1(513bf6f032a9043303b8660c106753ae214d28ff) ) + ROM_LOAD( "pal20l8-c57-12.61", 0x0600, 0x0144, CRC(debddb13) SHA1(47be25b3bb157d37b9813737544a56a2090f85ba) ) + ROM_LOAD( "pal16l8-c57-13.72", 0x0800, 0x0104, CRC(1369f23e) SHA1(bbc960cfc3edd07e89134e1b876aa7a6c0cba5ac) ) + ROM_LOAD( "pal16r4-c57-14.96", 0x0a00, 0x0104, CRC(75e1bf61) SHA1(e8358329a78ec0ab87641b2ecaec0b2b67c6ca30) ) +ROM_END + +ROM_START( dblaxle ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c78-41.3", 0x00000, 0x20000, CRC(cf297fe4) SHA1(4875de63e8336062c27d83b55938bcb3d08a24a3) ) + ROM_LOAD16_BYTE( "c78-43.5", 0x00001, 0x20000, CRC(38a8bad6) SHA1(50977a6a364893549d2f7899bbc4e0c67086697e) ) + ROM_LOAD16_BYTE( "c78-42.4", 0x40000, 0x20000, CRC(4124ab2b) SHA1(96c3b6e01a1823259b3d7ca43e0a8631bfe33d0e) ) + ROM_LOAD16_BYTE( "c78-44.6", 0x40001, 0x20000, CRC(50a55b6e) SHA1(62a72d33030d50c157a5cf05f6bdc1b02c9b9ff1) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c78-30-1.35", 0x00000, 0x20000, CRC(026aac18) SHA1(f50873982b4dc0fc822060f4c20c635efdd75d7e) ) + ROM_LOAD16_BYTE( "c78-31-1.36", 0x00001, 0x20000, CRC(67ce23e8) SHA1(983e998a79e3d4376b005c92ded050be236d37cc) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD ( "ic42", 0x00000, 0x04000, CRC(f2186943) SHA1(2e9aed39fddf3aa1db7e20f8a709b6b82cc3e7df) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD16_BYTE( "c78-10.12", 0x00000, 0x80000, CRC(44b1897c) SHA1(7ad179db6d7dfeb139ea13cb4a231f99d177f2b1) ) /* SCR 8x8 */ + ROM_LOAD16_BYTE( "c78-11.11", 0x00001, 0x80000, CRC(7db3d4a3) SHA1(fc3c44ed36b212688a5bd8dc61321a994578258e) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c78-08.25", 0x000000, 0x100000, CRC(6c725211) SHA1(3c1765f44fe57b496d305e994516674f71bd4c3c) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c78-07.33", 0x000001, 0x100000, CRC(9da00d5b) SHA1(f6b664c7495b936ce1b99852da45ec92cb37062a) ) + ROM_LOAD32_BYTE( "c78-06.23", 0x000002, 0x100000, CRC(8309e91b) SHA1(3f27557bc82bf42cc77e3c7e363b51a0b119144d) ) + ROM_LOAD32_BYTE( "c78-05.31", 0x000003, 0x100000, CRC(90001f68) SHA1(5c08dfe6a2e12e6ca84035815563f38fc2c2c029) ) +// ROMX_LOAD ( "c78-05l.1", 0x000003, 0x080000, CRC(f24bf972) , ROM_SKIP(7) ) +// ROMX_LOAD ( "c78-05h.2", 0x000007, 0x080000, CRC(c01039b5) , ROM_SKIP(7) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c78-09.12", 0x000000, 0x80000, CRC(0dbde6f5) SHA1(4049271e3738b54e0c56d191889b1aea5664d49f) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c78-12.33", 0x000000, 0x80000, CRC(fbb39585) SHA1(4b7cdf9a3fba71155871b3e52d2301e50bf817ca) ) // Half size ?? + // ??? gap 0x80000-fffff // + ROM_LOAD( "c78-13.46", 0x100000, 0x80000, CRC(1b363aa2) SHA1(0aae3988024654e98cc0c784307b1c329c8f0783) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c78-14.31", 0x00000, 0x80000, CRC(9cad4dfb) SHA1(9187ef827a3f1bc9233d0e45e72c72c0956c5912) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c78-25.15", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) // 98% compression + ROM_LOAD( "c78-15.22", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "c78-21.74", 0x00000, 0x00100, CRC(2926bf27) SHA1(bfbbe6c71bb29a05959f3de0d940816139f9ebfe) ) // road/sprite priority and palette select + ROM_LOAD( "c84-10.16", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) ) + ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) ) +ROM_END + +ROM_START( pwheelsj ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c78-26-2.2", 0x00000, 0x20000, CRC(25c8eb2e) SHA1(a526b886c76a19c9ce1abc25cf433574564605a3) ) + ROM_LOAD16_BYTE( "c78-28-2.4", 0x00001, 0x20000, CRC(a9500eb1) SHA1(ad300add3439515512003703df46e2f9317f2ee8) ) + ROM_LOAD16_BYTE( "c78-27-2.3", 0x40000, 0x20000, CRC(08d2cffb) SHA1(a4f117a15499c0df85bf8036f00871caa6723082) ) + ROM_LOAD16_BYTE( "c78-29-2.5", 0x40001, 0x20000, CRC(e1608004) SHA1(c4863264074de09ab38e7b73214f4271728e30aa) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c78-30-1.35", 0x00000, 0x20000, CRC(026aac18) SHA1(f50873982b4dc0fc822060f4c20c635efdd75d7e) ) + ROM_LOAD16_BYTE( "c78-31-1.36", 0x00001, 0x20000, CRC(67ce23e8) SHA1(983e998a79e3d4376b005c92ded050be236d37cc) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD ( "c78-32.42", 0x00000, 0x04000, CRC(1494199c) SHA1(f6b6ccaadbc5440f9342750a79ebc00c019ef355) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD16_BYTE( "c78-10.12", 0x00000, 0x80000, CRC(44b1897c) SHA1(7ad179db6d7dfeb139ea13cb4a231f99d177f2b1) ) /* SCR 8x8 */ + ROM_LOAD16_BYTE( "c78-11.11", 0x00001, 0x80000, CRC(7db3d4a3) SHA1(fc3c44ed36b212688a5bd8dc61321a994578258e) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c78-08.25", 0x000000, 0x100000, CRC(6c725211) SHA1(3c1765f44fe57b496d305e994516674f71bd4c3c) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c78-07.33", 0x000001, 0x100000, CRC(9da00d5b) SHA1(f6b664c7495b936ce1b99852da45ec92cb37062a) ) + ROM_LOAD32_BYTE( "c78-06.23", 0x000002, 0x100000, CRC(8309e91b) SHA1(3f27557bc82bf42cc77e3c7e363b51a0b119144d) ) + ROM_LOAD32_BYTE( "c78-05.31", 0x000003, 0x100000, CRC(90001f68) SHA1(5c08dfe6a2e12e6ca84035815563f38fc2c2c029) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c78-09.12", 0x000000, 0x80000, CRC(0dbde6f5) SHA1(4049271e3738b54e0c56d191889b1aea5664d49f) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c78-04.3", 0x00000, 0x80000, CRC(cc1aa37c) SHA1(cfa2eb338dc81c98c637c2f0b14d2baea8b115f5) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c78-01.33", 0x000000, 0x100000, CRC(90ff1e72) SHA1(6115e3683bc701922953b644427d1ddb471bf037) ) + ROM_LOAD( "c78-02.46", 0x100000, 0x080000, CRC(8882d2b7) SHA1(4d3abac1e50cd5ae79a562f430563032a11e8390) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c78-03.31", 0x00000, 0x80000, CRC(9b926a2f) SHA1(cc2d612441a5cc587e097bb8380b56753b9a4f7c) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c78-25.15", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) // 98% compression + ROM_LOAD( "c78-15.22", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) ) // road A/B internal priority + ROM_LOAD( "c78-21.74", 0x00000, 0x00100, CRC(2926bf27) SHA1(bfbbe6c71bb29a05959f3de0d940816139f9ebfe) ) // road/sprite priority and palette select + ROM_LOAD( "c84-10.16", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) ) + ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) ) +ROM_END + +ROM_START( racingb ) + ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 512K for 68000 code (CPU A) */ + ROM_LOAD16_BYTE( "c84-110.3", 0x00000, 0x20000, CRC(119a8d3b) SHA1(bcda256730c4427c25aab17d2178814289361a78) ) + ROM_LOAD16_BYTE( "c84-111.5", 0x00001, 0x20000, CRC(1f095692) SHA1(6a36f3a62de9fc24724e68a23de782bc21c01734) ) + ROM_LOAD16_BYTE( "c84-104.2", 0x40000, 0x20000, CRC(37077fc6) SHA1(3498db29936f806e1cb624031940fda2e7e601fe) ) + ROM_LOAD16_BYTE( "c84-103.4", 0x40001, 0x20000, CRC(4ca1d1c2) SHA1(cd526db226362b7d4429a29392dee40bcc519556) ) + + ROM_REGION( 0x40000, REGION_CPU3, 0 ) /* 256K for 68000 code (CPU B) */ + ROM_LOAD16_BYTE( "c84-99.35", 0x00000, 0x20000, CRC(24778f40) SHA1(5a588be1774af4e179bdc0e16cd118e74bb9f6ff) ) + ROM_LOAD16_BYTE( "c84-100.36", 0x00001, 0x20000, CRC(2b99258a) SHA1(ff2da0f3a0391f55e20655554d72b82cc29fbc87) ) + + ROM_REGION( 0x2c000, REGION_CPU2, 0 ) /* sound cpu */ + ROM_LOAD ( "c84-101.42", 0x00000, 0x04000, CRC(9322106e) SHA1(6c42ee7b9c76483fec2e397ec2737c030a082267) ) + ROM_CONTINUE( 0x10000, 0x1c000 ) /* banked stuff */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD16_BYTE( "c84-90.12", 0x00000, 0x80000, CRC(83ee0e8d) SHA1(a3b6067913f15656e1f74b30b4c0364a50d1846a) ) /* SCR 8x8 */ + ROM_LOAD16_BYTE( "c84-89.11", 0x00001, 0x80000, CRC(aae43c87) SHA1(cfc05553f7a18132127ae5f1d181fcc582432b56) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD32_BYTE( "c84-92.25", 0x000000, 0x100000, CRC(56e8fd55) SHA1(852446d4069a446dd9b88b29e461b83b8d626b2c) ) /* OBJ 16x8 */ + ROM_LOAD32_BYTE( "c84-94.33", 0x000001, 0x100000, CRC(6117c19b) SHA1(6b9587fb864a325aec17a73046ba5b7be08a8dd2) ) + ROM_LOAD32_BYTE( "c84-91.23", 0x000002, 0x100000, CRC(b1b0146c) SHA1(d01f08085d644b17445d904a4684c00f133f7bae) ) + ROM_LOAD32_BYTE( "c84-93.31", 0x000003, 0x100000, CRC(8837bb4e) SHA1(c41fff198a3c87c6e1672174ede589434374c1b3) ) + + ROM_REGION( 0x80000, REGION_GFX3, 0 ) /* don't dispose */ + ROM_LOAD( "c84-84.12", 0x000000, 0x80000, CRC(34dc486b) SHA1(2f503be67adbc5293f2d1218c838416fd931796c) ) /* ROD, road lines */ + + ROM_REGION16_LE( 0x80000, REGION_USER1, 0 ) + ROM_LOAD16_WORD( "c84-88.3", 0x00000, 0x80000, CRC(edd1f49c) SHA1(f11c419dcc7da03ef1f1665c1344c27ff35fe867) ) /* STY spritemap */ + + ROM_REGION( 0x180000, REGION_SOUND1, 0 ) /* ADPCM samples */ + ROM_LOAD( "c84-86.33", 0x000000, 0x100000, CRC(98d9771e) SHA1(0cbb6b08e1fa5e632309962d7ad7dca448ef4d78) ) + ROM_LOAD( "c84-87.46", 0x100000, 0x080000, CRC(9c1dd80c) SHA1(e1bae4e02fd94413fac4683e39e530f9d508d658) ) + + ROM_REGION( 0x80000, REGION_SOUND2, 0 ) /* Delta-T samples */ + ROM_LOAD( "c84-85.31", 0x00000, 0x80000, CRC(24cd838d) SHA1(18139f7df191ff2d005d76b3a85a6fafb630ea42) ) + + ROM_REGION( 0x10000, REGION_USER2, 0 ) /* unused ROMs */ + ROM_LOAD( "c84-19.15", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) ) + ROM_LOAD( "c84-07.22", 0x00000, 0x00100, CRC(95a15c77) SHA1(10246020776cf23c0659f41db66ae2c86db09ed2) ) // road A/B internal priority? bad dump? + ROM_LOAD( "c84-09.74", 0x00000, 0x00100, CRC(71217472) SHA1(69352cd484b4d5b41b37697aea24107dff8f1b24) ) // road/sprite priority and palette select? + ROM_LOAD( "c84-10.16", 0x00000, 0x00400, CRC(643e8bfc) SHA1(a6e6086fb8fbd102e01ec72fe60a4232f5909565) ) + ROM_LOAD( "c84-11.17", 0x00000, 0x00400, CRC(10728853) SHA1(45d7cc8e06fbe01295cc2194bca9586f0ef8b12b) ) +ROM_END + + +static DRIVER_INIT( taitoz ) +{ +// taitosnd_setz80_soundcpu( 2 ); + + cpua_ctrl = 0xff; +} + +static DRIVER_INIT( bshark ) +{ + cpua_ctrl = 0xff; + state_save_register_func_postload(parse_control_noz80); + + state_save_register_global(eep_latch); +} + + + +GAME( 1987, contcirc, 0, contcirc, contcirc, taitoz, ROT0, "Taito Corporation Japan", "Continental Circus (World)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1987, contcrcu, contcirc, contcirc, contcrcu, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 1)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1987, contcrua, contcirc, contcirc, contcrcu, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 2)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1988, chasehq, 0, chasehq, chasehq, taitoz, ROT0, "Taito Corporation Japan", "Chase H.Q. (World)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1988, chasehqj, chasehq, chasehq, chasehqj, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1988, enforce, 0, enforce, enforce, taitoz, ROT0, "Taito Corporation", "Enforce (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, bshark, 0, bshark, bshark, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Battle Shark (US)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, bsharkj, bshark, bshark, bsharkj, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, sci, 0, sci, sci, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 1)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, scia, sci, sci, sci, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, scij, sci, sci, scij, taitoz, ROT0, "Taito Corporation", "Special Criminal Investigation (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, sciu, sci, sci, sciu, taitoz, ROT0, "Taito America Corporation", "Special Criminal Investigation (US)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1989, nightstr, 0, nightstr, nightstr, taitoz, ROT0, "Taito America Corporation", "Night Striker (US)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1990, aquajack, 0, aquajack, aquajack, taitoz, ROT0, "Taito Corporation Japan", "Aqua Jack (World)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1990, aquajckj, aquajack, aquajack, aquajckj, taitoz, ROT0, "Taito Corporation", "Aqua Jack (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1990, spacegun, 0, spacegun, spacegun, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Space Gun (World)", 0 ) +GAME( 1991, dblaxle, 0, dblaxle, dblaxle, taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1991, racingb, 0, racingb, dblaxle, taitoz, ROT0, "Taito Corporation Japan", "Racing Beat (World)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING ) + |