Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
5941 lines (4765 sloc) 331 KB
// license:BSD-3-Clause
// copyright-holders:K.Wilkins
/***************************************************************************
Namco System II driver by K.Wilkins (Jun1998, Oct1999)
Email: mame@esplexo.co.uk
How to calibrate the guns:
- hold 9, press f2
- shoot at the targets it shows using the crosshair
- after you've shot the target press 9 again to move onto the next one
- once you get back to the start again press f2 to exit.
How to calibrate the steering in Dirt Fox and Final Lap 2/3:
- hold 9, press f2
- verify that controls are set to zero then press f2 to exit.
Final Lap Notes:
1..4 cabinets may be wired together.
To move through self test options, press gas pedal and change gear shift from low to high
To change an option, move gear shift from low to high without touching the gas pedal
known issues:
- sprite/tilemap orthogonality needed
- bad road colors in Final Lap and Suzuka series
Finest Hour:
- roz plane colors are bad in-game
Final Lap:
- sprite size bit is bogus during splash screen
Final Lap 3:
- uses unaligned 32x32 sprites, which aren't handled correctly in video/namcos2.cpp yet
Suzuka 8 Hours II
- some sprite cropping issues
Valkyrie No Densetsu
- gives ADSMISS error on startup
Does a checksum on area 0x181000 - 0x183fff, in 0x20 bytes block chunks. Game doesn't init it properly so you either have to go into service menu and do
an "all data clear" or play once to get rid of the message.
Bubble Trouble (Golly Ghost II)
- no artwork
Metal Hawk
- tilemap issues (ex : Result and stage select screen)
- ROZ wraparound isn't implemented
The Namco System II board is a 5 ( only 4 are emulated ) CPU system. The
complete system consists of two boards: CPU + GRAPHICS. It contains a large
number of custom ASICs to perform graphics operations, there is no
documentation available for these parts.
The system is extremely powerful and flexible. A standard CPU board is coupled
with a number of different graphics boards to produce a system.
CPU Board details
=================
CPU BOARD - Master/Slave CPU, Sound CPU, I/O CPU, Serial I/F CPU
Text/Scrolling layer generation and video pixel generator.
Sound Generation.
CPU1 - Master CPU (68K)
CPU2 - Slave CPU (68K)
CPU3 - Sound/IO engine (6809)
CPU4 - IO Microcontroller (63705) Dips/input ports
CPU5 - Serial I/F Controller (??? - Not emulated)
The 4 CPU's are all connected via a central 2KByte dual port SRAM. The two
68000s are on one side and the 6809/63705 are on the other side.
Each 68000 has its own private bus area AND a common shared area between the
two devices, which is where the video ram/dual port/Sprite Generation etc
logic sits.
So far only 1 CPU board variant has been identified, unlike the GFX board...
All sound circuitry is contained on the CPU board, it consists of:
YM2151
C140 (24 Channel Stereo PCM Sample player)
The CPU board also contains the frame timing and video image generation
circuitry along with text/scroll planes and the palette generator. The system
has 8192 pens of which 4096+2048 are displayable at any given time. These
pens refernce a 24 bit colour lookup table (R8:G8:B8).
The text/tile plane generator has the following capabilities:
2 x Static tile planes (36x28 tiles)
4 x Scolling tile planes (64x64 tiles)
Each plane has its own colour index (8 total) that is used alongside the
pen number to be looked up in the pen index and generate a 24 bit pixel. Each
plane also has its own priority level.
The video image generator receives a pixel stream from the graphics board
which contains:
PEN NUMBER
COLOUR BANK
PIXEL PRIORITY
This stream is then combined with the stream from the text plane pixel
generator with the highest priority pixel being displayed on screen.
Graphics Board details
======================
There are several variants of graphics board with unique capabilities
separate memory map definition. The PCB outputs a pixel stream to the
main PCB board via one of the system connectors.
ROZ(A): 1 256x256 ROZ plane composed of 8x8 tiles
ROZ(B): 2 ROZ planes, composed of 16x16 tiles (same as Namco NB2)
Sprite(A): 128 Sprites displayable, but 16 banks of 128 sprites
Sprite(B): (same as Namco NB2)
Roadway: tiles and road attributes in RAM
ROZ Sprites Roadway
Standard Namco System 2 (A) (A) n/a
Final Lap (1/2/3) n/a (A) yes
Metal Hawk (B) (A) no
Steel Gunner 2 n/a (B) no
Suzuka (1/2) n/a (B) yes
Lucky&Wild (B) (B) yes
Memory Map
==========
The Dual 68000 Shared memory map area is shown below, this is taken from the memory
decoding pal from the Cosmo Gang board.
#############################################################
# #
# MASTER 68000 PRIVATE MEMORY AREA (MAIN PCB) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Program ROM 000000-03FFFF R D00-D15
Program RAM 100000-10FFFF R/W D00-D15
EEPROM 180000-183FFF R/W D00-D07
Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02
???????? 1C0XXX
???????? 1C2XXX
???????? 1C4XXX
Master/Slave IRQ level 1C6XXX D00-D02
EXIRQ level 1C8XXX D00-D02
POSIRQ level 1CAXXX D00-D02
SCIRQ level 1CCXXX D00-D02
VBLANK IRQ level 1CEXXX D00-D02
???????? 1D0XXX
???????? 1D4000 trigger master/slave INT?
Acknowlegde Master/Slave IRQ 1D6XXX ack master/slave INT
Acknowledge EXIRQ 1D8XXX
Acknowledge POSIRQ 1DAXXX
Acknowledge SCIRQ 1DCXXX
Acknowledge VBLANK IRQ 1DEXXX
EEPROM Ready status 1E0XXX R D01
Sound CPU Reset control 1E2XXX W D01
Slave 68000 & IO CPU Reset 1E4XXX W D01
Watchdog reset kicker 1E6XXX W
#############################################################
# #
# SLAVE 68000 PRIVATE MEMORY AREA (MAIN PCB) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Program ROM 000000-03FFFF R D00-D15
Program RAM 100000-10FFFF R/W D00-D15
Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02
???????? 1C0XXX
???????? 1C2XXX
???????? 1C4XXX
Master/Slave IRQ level 1C6XXX D00-D02
EXIRQ level 1C8XXX D00-D02
POSIRQ level 1CAXXX D00-D02
SCIRQ level 1CCXXX D00-D02
VBLANK IRQ level 1CEXXX D00-D02
???????? 1D0XXX
Acknowlegde Master/Slave IRQ 1D6XXX
Acknowledge EXIRQ 1D8XXX
Acknowledge POSIRQ 1DAXXX
Acknowledge SCIRQ 1DCXXX
Acknowledge VBLANK IRQ 1DEXXX
Watchdog reset kicker 1E6XXX W
#############################################################
# #
# SHARED 68000 MEMORY AREA (MAIN PCB) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Data ROMS 0-1 200000-2FFFFF R D00-D15
Data ROMS 2-3 300000-3FFFFF R D00-D15
Screen memory for text planes 400000-41FFFF R/W D00-D15
Screen control registers 420000-43FFFF R/W D00-D15
Scroll plane 0 - X offset 42XX02 W D00-D11
Scroll plane 0 - X flip 42XX02 W D15
?????? 42XX04 W D14-D15
Scroll plane 0 - Y offset 42XX06 W D00-D11
Scroll plane 0 - Y flip 42XX06 W D15
?????? 42XX08 W D14-D15
Scroll plane 1 - X offset 42XX0A W D00-D11
Scroll plane 1 - X flip 42XX0A W D15
?????? 42XX0C W D14-D15
Scroll plane 1 - Y offset 42XX0E W D00-D11
Scroll plane 1 - Y flip 42XX0E W D15
?????? 42XX10 W D14-D15
Scroll plane 2 - X offset 42XX12 W D00-D11
Scroll plane 2 - X flip 42XX12 W D15
?????? 42XX14 W D14-D15
Scroll plane 2 - Y offset 42XX16 W D00-D11
Scroll plane 2 - Y flip 42XX16 W D15
?????? 42XX18 W D14-D15
Scroll plane 3 - X offset 42XX1A W D00-D11
Scroll plane 3 - X flip 42XX1A W D15
?????? 42XX1C W D14-D15
Scroll plane 3 - Y offset 42XX1E W D00-D11
Scroll plane 3 - Y flip 42XX1E W D15
Scroll plane 0 priority 42XX20 W D00-D02
Scroll plane 1 priority 42XX22 W D00-D02
Scroll plane 2 priority 42XX24 W D00-D02
Scroll plane 3 priority 42XX26 W D00-D02
Text plane 0 priority 42XX28 W D00-D02
Text plane 1 priority 42XX2A W D00-D02
Scroll plane 0 colour 42XX30 W D00-D03
Scroll plane 1 colour 42XX32 W D00-D03
Scroll plane 2 colour 42XX34 W D00-D03
Scroll plane 3 colour 42XX36 W D00-D03
Text plane 0 colour 42XX38 W D00-D03
Text plane 1 colour 42XX3A W D00-D03
Screen palette control/data 440000-45FFFF R/W D00-D15
RED ROZ/Sprite pens 8x256 440000-440FFF
GREEN 441000-441FFF
BLUE 442000-442FFF
Control registers 443000-44300F R/W D00-D15
RED ROZ/Sprite pens 8x256 444000-444FFF
GREEN 445000-445FFF
BLUE 446000-446FFF
447000-447FFF
RED Text plane pens 8x256 448000-448FFF
GREEN 449000-449FFF
BLUE 44A000-44AFFF
44B000-44BFFF
RED Unused pens 8x256 44C000-44CFFF
GREEN 44D000-44DFFF
BLUE 44E000-44EFFF
Dual port memory 460000-47FFFF R/W D00-D07
Serial comms processor 480000-49FFFF
Serial comms processor - Data 4A0000-4BFFFF
#############################################################
# #
# SHARED 68000 MEMORY AREA (GFX PCB) #
# (STANDARD NAMCO SYSTEM 2 BOARD) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Sprite RAM - 16 banks x 128 spr. C00000-C03FFF R/W D00-D15
Sprite bank select C40000 W D00-D03
Rotate colour bank select W D08-D11
Rotate priority level W D12-D14
Rotate/Zoom RAM (ROZ) C80000-CBFFFF R/W D00-D15
Rotate/Zoom - Down dy (8:8) CC0000 R/W D00-D15
Rotate/Zoom - Right dy (8.8) CC0002 R/W D00-D15
Rotate/Zoom - Down dx (8.8) CC0004 R/W D00-D15
Rotate/Zoom - Right dx (8.8) CC0006 R/W D00-D15
Rotate/Zoom - Start Ypos (12.4) CC0008 R/W D00-D15
Rotate/Zoom - Start Xpos (12.4) CC000A R/W D00-D15
Rotate/Zoom control CC000E R/W D00-D15
Key generator/Security device D00000-D0000F R/W D00-D15
#############################################################
# #
# SHARED 68000 MEMORY AREA (GFX PCB) #
# (METAL HAWK PCB - DUAL ROZ PLANES) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Sprite RAM - 16 banks x 128 spr. C00000-C03FFF R/W D00-D15
Rotate/Zoom RAM (ROZ1) C40000-C47FFF R/W D00-D15
Rotate/Zoom RAM (ROZ2) C48000-C4FFFF R/W D00-D15
Rotate/Zoom1 - Down dy (8:8) D00000 R/W D00-D15
Rotate/Zoom1 - Right dy (8.8) D00002 R/W D00-D15
Rotate/Zoom1 - Down dx (8.8) D00004 R/W D00-D15
Rotate/Zoom1 - Right dx (8.8) D00006 R/W D00-D15
Rotate/Zoom1 - Start Ypos (12.4) D00008 R/W D00-D15
Rotate/Zoom1 - Start Xpos (12.4) D0000A R/W D00-D15
Rotate/Zoom1 - control D0000E R/W D00-D15
Rotate/Zoom2 - Down dy (8:8) D00010 R/W D00-D15
Rotate/Zoom2 - Right dy (8.8) D00012 R/W D00-D15
Rotate/Zoom2 - Down dx (8.8) D00014 R/W D00-D15
Rotate/Zoom2 - Right dx (8.8) D00016 R/W D00-D15
Rotate/Zoom2 - Start Ypos (12.4) D00018 R/W D00-D15
Rotate/Zoom2 - Start Xpos (12.4) D0001A R/W D00-D15
Rotate/Zoom2 - control D0001E R/W D00-D15
Sprite bank select ? E00000 W D00-D15
#############################################################
# #
# SHARED 68000 MEMORY AREA (GFX PCB) #
# (FINAL LAP PCB) #
# #
#############################################################
# Function Address R/W DATA #
#############################################################
Sprite RAM - ?? banks x ??? spr. 800000-80FFFF R/W D00-D15
Sprite bank select ? 840000 W D00-D15
Road RAM for tile layout 880000-88FFFF R/W D00-D15
Road RAM for tiles gfx data 890000-897FFF R/W D00-D15
Road Generator controls 89F000-89FFFF R/W D00-D15
Key generator/Security device A00000-A0000F R/W D00-D15
All interrupt handling is done on the 68000s by two identical custom devices (C148),
this device takes the level based signals and encodes them into the 3 bit encoded
form for the 68000 CPU. The master CPU C148 also controls the reset for the slave
CPU and MCU which are common. The C148 only has the lower 3 data bits connected.
C148 Features
-------------
3 Bit output port
3 Bit input port
3 Chip selects
68000 Interrupt encoding/handling
Data strobe control
Bus arbitration
Reset output
Watchdog
C148pin Master CPU Slave CPU
-------------------------------------
YBNK VBLANK VBLANK
IRQ4 SCIRQ SCIRQ (Serial comms IC Interrupt)
IRQ3 POSIRQ POSIRQ (Comes from C116, pixel generator, line based position interrupt?)
IRQ2 EXIRQ EXIRQ (Goes to video board but does not appear to be connected)
IRQ1 SCPUIRQ MCPUIRQ (Master/Slave interrupts)
OP0 SSRES (Sound CPU reset - 6809 only)
OP1
OP2
IP0 EEPROM BUSY
IP1
IP2
Protection
----------
The Chip at $d00000 seems to be heavily involved in protection, some games lock
or reset if it doesn't return the correct values.
rthun2 is sprinkled with reads to $d00006 which look like they are being used as
random numbers. rthun2 also checks the response value after a number is written.
Device takes clock and vblank. Only output is reset.
This chip is based on the graphics board.
Palette
-------
0x800 (2048) colours
Ram test does:
$440000-$442fff Object ???
$444000-$446fff Char ???
$448000-$44afff Roz ???
$44c000-$44efff
$448000-$4487ff Red??
$448800-$448fff Green??
$449000-$4497ff Blue??
Steel Gunner 2
--------------
Again this board has a different graphics layout, also the protection checks
are done at $a00000 as opposed to $d00000 on a standard board. Similar
$a00000 checks have been seen on the Final Lap boards.
Custom Chips Notes (moved to here from Stroff's old namcoic.c)
==================
System 21 here presumably refers to the Winning Run PCB, not the later games?
Custom Chips: Final Lap Assault LuckyWld System21 NA1/2 NB1/2
C45 Land Generator * *
C65 I/O Controller (older) * *
C67 TMS320C25 (DSP int ROM)
C68 I/O Controller (newer) * *
C70 *
C95 * *
C102 ROZ:Memory Access Control *
C106 OBJ:X-Axis Zoom Control * *
C107 Land Line Buffer *
C116 Screen Waveform Generator * * * *
C121 Yamaha YM2151 Sound Gen * * *
C123 GFX:Tile Mem Decoder * * * *
C134 OBJ:Address Generator * *
C135 OBJ:Line matching * *
C137 Clock Generator IC * * * * *
C138 *
C139 Serial I/F Controller * * * *
C140 24 Channel PCM * * *
C145 GFX:Tile Memory Access * * * *
C146 OBJ:Line Buf Steering * *
C148 CPU Bus Manager * * * *
C149 Mouse/Trackball Decoder * * * *
C156 Pixel Stream Combo * * * *
C160 Control *
C165 *
C169 ROZ(B) * *
C187 * * *
C210 *
C215 *
C218 *
C219 *
C329 CPU? *
C347 GfxObj *
C352 PCM *
C355 Motion Obj(B) * * *
C373 LAND-related *
C382 *
C383 *
C384 GFX(3) *
C385 *
C390 Key Custom *
General Support
---------------
C65 - This is the I/O Microcontroller, handles all input/output devices. 63705 uC, CPU4 in Namco System2.
C137 - Takes System clock and generates all sub-system clocks, doesn't need emulation, not accessed via CPU
C139 - Serial Interface Controller
C148 - Does some Memory Decode, Interrupt Handling, 3 bit PIO port, Bus Controller
C149 - Does decoding of mouse/trackball input streams for the I/O Controller. (Offset Square wave)
Tile Fields Static/Scrolled
---------------------------
Combination of these two devices and associated RAM & TileGFX produces a pixel stream that is fed
into the Pixel stream decoder.
C145 - Tile Screen Memory Access controller
C123 - Tile Memory decoder Part 1, converts X,Y,Tile into character ROM address index
Pixel Stream Decode
-------------------
These two devices take the pixel streams from the tilefield generator and the associated graphics board
and combine them to form an RGB data stream that is fed to the monitor.
C156 - Pixel stream combiner
Takes tile field & graphics board streams and generates the prioritized pixel, then does the lookup to
go from palettised to 24bit RGB pixel.
C116 - Screen Waveform Generator
Takes RGB24 pixel stream from C156 and generates the waveform signals for the monitor, also generates
the line interrupt and controls screen blanking,shift, etc.
Object Control
--------------
C106 - Generates memory output clocks to generate X-Axis Zoom for Line Buffer Writes
C134 - Object Memory Address Generator. Sequences the sprite memory contents to the hardware.
C135 - Checks is object is displayed on Current output line.
C146 - Steers the Decode Object Pixel data to the correct line buffer A or B
ROZ
---
C102 - Controls CPU access to ROZ Memory Area.
***************************************************************************/
#include "emu.h"
#include "includes/namcos2.h"
#include "cpu/m68000/m68000.h"
#include "cpu/m6805/m6805.h"
#include "cpu/m6809/m6809.h"
#include "machine/nvram.h"
#include "sound/ym2151.h"
#include "speaker.h"
#include "finallap.lh"
/* Define clocks based on actual OSC on the PCB */
#define MAIN_OSC_CLOCK XTAL(49'152'000)
#define M68K_CPU_CLOCK (MAIN_OSC_CLOCK / 4) /* 12.288MHz clock for 68000 (Master & Slave) */
#define M68B09_CPU_CLOCK (MAIN_OSC_CLOCK / 24) /* 2.048MHz clock for 68B09 sound CPU */
#define C65_CPU_CLOCK (MAIN_OSC_CLOCK / 24) /* 2.048MHz clock for 63705 (or 63B05) I/O CPU */
#define C68_CPU_CLOCK (MAIN_OSC_CLOCK / 6) /* 8.192MHz clock for 37450 I/O CPU */
#define YM2151_SOUND_CLOCK XTAL(3'579'545) /* 3.579545MHz FM clock */
#define C140_SOUND_CLOCK (MAIN_OSC_CLOCK / 384 / 6) /* 21.333kHz C140 clock (was 8000000/374 or 21.390kHz) */
/*************************************************************/
/* 68000/6809/63705 Shared memory area - DUAL PORT Memory */
/*************************************************************/
void namcos2_state::GollyGhostUpdateLED_c4( int data )
{
output().set_value("zip100", data >> 4);
output().set_value("zip10", data & 0x0f);
}
void namcos2_state::GollyGhostUpdateLED_c6( int data )
{
output().set_value("zip1", data >> 4);
output().set_value("time10", data & 0x0f);
}
void namcos2_state::GollyGhostUpdateLED_c8( int data )
{
output().set_value("time1", data >> 4);
output().set_value("zap100", data & 0x0f);
}
void namcos2_state::GollyGhostUpdateLED_ca( int data )
{
output().set_value("zap10", data >> 4);
output().set_value("zap1", data & 0x0f);
}
void namcos2_state::GollyGhostUpdateDiorama_c0( int data )
{
if (data & 0x80)
{
output().set_value("dollhouse", 1); /* diorama is lit up */
/* dollhouse controller; solenoids control physical components */
output().set_value("toybox", (data >> 0) & 1);
output().set_value("bathroom", (data >> 1) & 1);
output().set_value("bureau", (data >> 2) & 1);
output().set_value("refrigerator",(data >> 3) & 1);
output().set_value("porch", (data >> 4) & 1);
/* gun recoils */
output().set_value("Player1_Gun_Recoil",(data & 0x20)>>5);
output().set_value("Player2_Gun_Recoil",(data & 0x40)>>6);
}
else
{
output().set_value("dollhouse",0);
output().set_value("toybox", 0);
output().set_value("bathroom", 0);
output().set_value("bureau", 0);
output().set_value("refrigerator", 0);
output().set_value("porch", 0);
output().set_value("Player1_Gun_Recoil",0);
output().set_value("Player2_Gun_Recoil",0);
}
}
READ16_MEMBER(namcos2_state::dpram_word_r)
{
return m_dpram[offset];
}
WRITE16_MEMBER(namcos2_state::dpram_word_w)
{
if( ACCESSING_BITS_0_7 )
{
m_dpram[offset] = data&0xff;
// TODO : This is a hack! should be output ports MCU side, not probing into DPRAM content
if( m_gametype==NAMCOS2_GOLLY_GHOST )
{
switch( offset )
{
case 0xc0/2: GollyGhostUpdateDiorama_c0(data); break;
case 0xc2/2:
/* unknown; 0x00 or 0x01 - probably lights up guns */
break;
case 0xc4/2: GollyGhostUpdateLED_c4(data); break;
case 0xc6/2: GollyGhostUpdateLED_c6(data); break;
case 0xc8/2: GollyGhostUpdateLED_c8(data); break;
case 0xca/2: GollyGhostUpdateLED_ca(data); break;
default:
break;
}
}
/* Note: Outputs for the other gun games pass through here as well, but I couldn't find the offsets. */
/* Steel Gunner 1 & 2 have 6 "damage lamps" (three on each side) as well as gun recoils. */
}
}
READ8_MEMBER(namcos2_state::dpram_byte_r)
{
return m_dpram[offset];
}
WRITE8_MEMBER(namcos2_state::dpram_byte_w)
{
m_dpram[offset] = data;
}
/*************************************************************/
/* SHARED 68000 CPU Memory declarations */
/*************************************************************/
/* ROM0 = $200000-$2fffff
ROM1 = $300000-$3fffff
SCR = $400000-$41ffff
SCRDT = $420000-$43ffff
PALET = $440000-$45ffff
DPCS = $460000-$47ffff
SCOM = $480000-$49ffff
SCOMDT = $4a0000-$4bffff
0xc00000 ONWARDS are unverified memory locations on the video board
*/
void namcos2_state::namcos2_68k_default_cpu_board_am(address_map &map)
{
map(0x200000, 0x3fffff).rom().region("data_rom", 0);
map(0x400000, 0x40ffff).mirror(0x010000).rw(m_c123tmap, FUNC(namco_c123tmap_device::videoram16_r), FUNC(namco_c123tmap_device::videoram16_w));
map(0x420000, 0x42003f).rw(m_c123tmap, FUNC(namco_c123tmap_device::control16_r), FUNC(namco_c123tmap_device::control16_w));
map(0x440000, 0x44ffff).r(FUNC(namcos2_state::c116_r)).w(m_c116, FUNC(namco_c116_device::write)).umask16(0x00ff).cswidth(16);
map(0x460000, 0x460fff).mirror(0x00f000).rw(FUNC(namcos2_state::dpram_word_r), FUNC(namcos2_state::dpram_word_w));
map(0x480000, 0x483fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w));
map(0x4a0000, 0x4a000f).m(m_sci, FUNC(namco_c139_device::regs_map));
}
/*************************************************************/
void namcos2_state::common_default_am(address_map &map)
{
namcos2_68k_default_cpu_board_am(map);
map(0xc00000, 0xc03fff).ram().share("spriteram");
map(0xc40000, 0xc40001).rw(FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w));
map(0xc80000, 0xc9ffff).ram().w(m_ns2roz, FUNC(namcos2_roz_device::rozram_word_w)).share("rozram");
map(0xcc0000, 0xcc000f).ram().share("rozctrl");
map(0xd00000, 0xd0000f).rw(FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
}
void namcos2_state::master_default_am(address_map &map)
{
common_default_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
}
void namcos2_state::slave_default_am(address_map &map)
{
common_default_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
}
/*************************************************************/
void namcos2_state::common_finallap_am(address_map &map)
{
namcos2_68k_default_cpu_board_am(map);
map(0x300000, 0x33ffff).r(FUNC(namcos2_state::namcos2_finallap_prot_r));
map(0x800000, 0x80ffff).ram().share("spriteram");
map(0x840000, 0x840001).rw(FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w));
map(0x880000, 0x89ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write));
map(0x8c0000, 0x8c0001).nopw();
}
void namcos2_state::master_finallap_am(address_map &map)
{
common_finallap_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
}
void namcos2_state::slave_finallap_am(address_map &map)
{
common_finallap_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
}
/*************************************************************/
void namcos2_state::common_sgunner_am(address_map &map)
{
namcos2_68k_default_cpu_board_am(map);
map(0x800000, 0x8141ff).rw(m_c355spr, FUNC(namco_c355spr_device::spriteram_r), FUNC(namco_c355spr_device::spriteram_w));
map(0x818000, 0x818001).nopw();
map(0xa00000, 0xa0000f).rw(FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
}
void namcos2_state::master_sgunner_am(address_map &map)
{
common_sgunner_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
}
void namcos2_state::slave_sgunner_am(address_map &map)
{
common_sgunner_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
}
/*************************************************************/
void namcos2_state::common_metlhawk_am(address_map &map)
{
namcos2_68k_default_cpu_board_am(map);
map(0xc00000, 0xc03fff).ram().share("spriteram");
map(0xc40000, 0xc4ffff).rw(m_c169roz, FUNC(namco_c169roz_device::videoram_r), FUNC(namco_c169roz_device::videoram_w));
map(0xd00000, 0xd0001f).rw(m_c169roz, FUNC(namco_c169roz_device::control_r), FUNC(namco_c169roz_device::control_w));
map(0xe00000, 0xe00001).rw(FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w)); /* ??? */
}
void namcos2_state::master_metlhawk_am(address_map &map)
{
common_metlhawk_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
}
void namcos2_state::slave_metlhawk_am(address_map &map)
{
common_metlhawk_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
}
/*************************************************************/
void namcos2_state::common_suzuka8h_am(address_map &map)
{
namcos2_68k_default_cpu_board_am(map);
map(0x800000, 0x8141ff).rw(m_c355spr, FUNC(namco_c355spr_device::spriteram_r), FUNC(namco_c355spr_device::spriteram_w));
map(0x818000, 0x818001).noprw(); /* enable? */
map(0x81a000, 0x81a001).nopw(); /* enable? */
map(0x840000, 0x840001).nopr();
map(0x900000, 0x900007).rw(m_c355spr, FUNC(namco_c355spr_device::position_r), FUNC(namco_c355spr_device::position_w));
map(0xa00000, 0xa1ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write));
map(0xf00000, 0xf00007).rw(FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w));
}
void namcos2_state::master_suzuka8h_am(address_map &map)
{
common_suzuka8h_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
map(0xc00000, 0xc0ffff).ram(); // is roz hardware populated?
map(0xd00000, 0xd0001f).ram(); // is roz hardware populated?
}
void namcos2_state::slave_suzuka8h_am(address_map &map)
{
common_suzuka8h_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
map(0xc00000, 0xc0ffff).ram(); // is roz hardware populated?
map(0xd00000, 0xd0001f).ram(); // is roz hardware populated?
}
void namcos2_state::master_luckywld_am(address_map &map)
{
common_suzuka8h_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram();
map(0x180000, 0x183fff).rw(FUNC(namcos2_state::eeprom_r), FUNC(namcos2_state::eeprom_w)).umask16(0x00ff);
map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map));
map(0xc00000, 0xc0ffff).rw(m_c169roz, FUNC(namco_c169roz_device::videoram_r), FUNC(namco_c169roz_device::videoram_w));
map(0xd00000, 0xd0001f).rw(m_c169roz, FUNC(namco_c169roz_device::control_r), FUNC(namco_c169roz_device::control_w));
}
void namcos2_state::slave_luckywld_am(address_map &map)
{
common_suzuka8h_am(map);
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x13ffff).ram();
map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map));
map(0xc00000, 0xc0ffff).rw(m_c169roz, FUNC(namco_c169roz_device::videoram_r), FUNC(namco_c169roz_device::videoram_w));
map(0xd00000, 0xd0001f).rw(m_c169roz, FUNC(namco_c169roz_device::control_r), FUNC(namco_c169roz_device::control_w));
}
/*************************************************************/
/* 6809 SOUND CPU Memory declarations */
/*************************************************************/
void namcos2_state::sound_default_am(address_map &map)
{
map(0x0000, 0x3fff).bankr("audiobank"); /* banked */
map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x5000, 0x6fff).rw(m_c140, FUNC(c140_device::c140_r), FUNC(c140_device::c140_w));
map(0x7000, 0x77ff).rw(FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
map(0x7800, 0x7fff).rw(FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)); /* mirror */
map(0x8000, 0x9fff).ram();
map(0xa000, 0xbfff).nopw(); /* Amplifier enable on 1st write */
map(0xc000, 0xc001).w(FUNC(namcos2_state::sound_bankselect_w));
map(0xd001, 0xd001).nopw(); /* Watchdog */
map(0xe000, 0xe000).nopw();
map(0xd000, 0xffff).rom().region("audiocpu", 0x01000);
}
/*************************************************************/
/* */
/* NAMCO SYSTEM 2 PORT MACROS */
/* */
/* Below are the port defintion macros that should be used */
/* as the basis for defining a port set for a Namco System2 */
/* game. */
/* */
/*************************************************************/
#define NAMCOS2_MCU_PORT_B_DEFAULT \
PORT_START("MCUB") /* 63B05Z0 - PORT B */ \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
#define NAMCOS2_MCU_PORT_C_DEFAULT \
PORT_START("MCUC") /* 63B05Z0 - PORT C & SCI */ \
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service Button") \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
#define NAMCOS2_MCU_ANALOG_PORT_DEFAULT \
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN5") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 5 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN6") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 6 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("AN7") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 7 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
#define NAMCOS2_MCU_PORT_H_DEFAULT \
PORT_START("MCUH") /* 63B05Z0 - PORT H */ \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) \
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) \
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) \
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) \
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
#define NAMCOS2_MCU_DIPSW_DEFAULT \
PORT_START("DSW") /* 63B05Z0 - $2000 DIP SW */ \
PORT_DIPNAME( 0x01, 0x01, "Video Display") \
PORT_DIPSETTING( 0x01, DEF_STR( Normal ) ) \
PORT_DIPSETTING( 0x00, "Frozen" ) \
PORT_DIPNAME( 0x02, 0x02, "$2000-1") \
PORT_DIPSETTING( 0x02, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_DIPNAME( 0x04, 0x04, "$2000-2") \
PORT_DIPSETTING( 0x04, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_DIPNAME( 0x08, 0x08, "$2000-3") \
PORT_DIPSETTING( 0x08, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_DIPNAME( 0x10, 0x10, "$2000-4") \
PORT_DIPSETTING( 0x10, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_DIPNAME( 0x20, 0x20, "$2000-5") \
PORT_DIPSETTING( 0x20, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_DIPNAME( 0x40, 0x40, "$2000-6") \
PORT_DIPSETTING( 0x40, "H" ) \
PORT_DIPSETTING( 0x00, "L" ) \
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
#define NAMCOS2_MCU_DIAL_DEFAULT \
PORT_START("MCUDI0") /* 63B05Z0 - $3000 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("MCUDI1") /* 63B05Z0 - $3001 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("MCUDI2") /* 63B05Z0 - $3002 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) \
PORT_START("MCUDI3") /* 63B05Z0 - $3003 */ \
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
/*************************************************************/
/* */
/* NAMCO SYSTEM 2 PORT DEFINITIONS */
/* */
/* There is a standard port definition defined that will */
/* work for most games, if you wish to produce a special */
/* definition for a particular game then see the assault */
/* and dirtfox definitions for examples of how to construct */
/* a special port definition */
/* */
/* The default definitions includes only the following list */
/* of connections : */
/* 2 Joysticks, 6 Buttons, 1 Service, 1 Advance */
/* 2 Start */
/* */
/*************************************************************/
static INPUT_PORTS_START( base )
NAMCOS2_MCU_PORT_B_DEFAULT
NAMCOS2_MCU_PORT_C_DEFAULT
NAMCOS2_MCU_ANALOG_PORT_DEFAULT
NAMCOS2_MCU_PORT_H_DEFAULT
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( kyukaidk )
PORT_INCLUDE( base )
PORT_MODIFY("DSW")
/* Must be 'L' for correct C140 output */
PORT_DIPNAME( 0x20, 0x00, "$2000-5" )
PORT_DIPSETTING( 0x20, "H" )
PORT_DIPSETTING( 0x00, "L" )
INPUT_PORTS_END
static INPUT_PORTS_START( gollygho )
PORT_START("MCUB")
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_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_REVERSE
PORT_START("AN1")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_REVERSE
PORT_START("AN2")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2) PORT_REVERSE
PORT_START("AN3")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2) PORT_REVERSE
PORT_START("AN4")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN6")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN7")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( bubbletr )
PORT_START("MCUB")
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_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
// crosshair is required for gun calibration (hold 9, press F2)
PORT_START("AN0")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, -1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN1")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN2")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, -1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("AN3")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("AN4")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN6")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN7")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( finallap )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_DIPNAME( 0x01, 0x01, "PortB 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
/**
* Each player can have one of four car types, selected by attaching a
* particular special connector (included with the game) to the PCB.
*
* (see also Car Type(B) below in Port H)
*/
PORT_DIPNAME( 0x02, 0x02, "Car Type(A)")
PORT_DIPSETTING( 0x02, "McLaren/Williams" )
PORT_DIPSETTING( 0x00, "Lotus/March" )
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("MCUC") /* 63B05Z0 - PORT C & SCI */
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_SERVICE(0x40, IP_ACTIVE_LOW)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Steering Wheel */ /* sensitivity, delta, min, max */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
PORT_START("AN6") /* Brake Pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30)
PORT_START("AN7") /* Accelerator Pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(15)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_DIPNAME( 0x01, 0x01, "PortH 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "Automatic Car Select")
PORT_DIPSETTING( 0x02, DEF_STR(No) )
PORT_DIPSETTING( 0x00, DEF_STR(Yes) )
PORT_DIPNAME( 0x04, 0x04, "PortH 0x04")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "Enable Onscreen Diagnostics")
PORT_DIPSETTING( 0x08, DEF_STR(No) )
PORT_DIPSETTING( 0x00, DEF_STR(Yes) )
PORT_DIPNAME( 0x10, 0x10, "PortH 0x10")
PORT_DIPSETTING( 0x10, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_TOGGLE PORT_NAME("Shift Gear")
PORT_DIPNAME( 0x40, 0x40, "PortH 0x40")
PORT_DIPSETTING( 0x40, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x80, 0x80, "Car Type(B)")
PORT_DIPSETTING( 0x00, "McLaren/March" )
PORT_DIPSETTING( 0x80, "Williams/Lotus" )
NAMCOS2_MCU_DIPSW_DEFAULT /* 63B05Z0 - $2000 DIP SW */
NAMCOS2_MCU_DIAL_DEFAULT /* 63B05Z0 - $3000 */
INPUT_PORTS_END
static INPUT_PORTS_START( finalap3 )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_DIPNAME( 0x01, 0x01, "PortB 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "Car Type(A)")
PORT_DIPSETTING( 0x02, "McLaren/Williams" )
PORT_DIPSETTING( 0x00, "Lotus/March" )
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("MCUC") /* 63B05Z0 - PORT C & SCI */
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_SERVICE(0x40, IP_ACTIVE_LOW)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Steering Wheel */ /* sensitivity, delta, min, max */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
PORT_START("AN6") /* Brake Pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30)
PORT_START("AN7") /* Accelerator Pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(15)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_DIPNAME( 0x01, 0x01, "PortH 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "Automatic Car Select")
PORT_DIPSETTING( 0x02, DEF_STR(No) )
PORT_DIPSETTING( 0x00, DEF_STR(Yes) )
PORT_DIPNAME( 0x04, 0x04, "PortH 0x04")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "Enable Onscreen Diagnostics")
PORT_DIPSETTING( 0x08, DEF_STR(No) )
PORT_DIPSETTING( 0x00, DEF_STR(Yes) )
PORT_DIPNAME( 0x10, 0x10, "PortH 0x10")
PORT_DIPSETTING( 0x10, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_TOGGLE PORT_NAME("Shift Gear")
PORT_DIPNAME( 0x40, 0x40, "PortH 0x40")
PORT_DIPSETTING( 0x40, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x80, 0x80, "Car Type(B)")
PORT_DIPSETTING( 0x00, "McLaren/March" )
PORT_DIPSETTING( 0x80, "Williams/Lotus" )
NAMCOS2_MCU_DIPSW_DEFAULT /* 63B05Z0 - $2000 DIP SW */
NAMCOS2_MCU_DIAL_DEFAULT /* 63B05Z0 - $3000 */
INPUT_PORTS_END
static INPUT_PORTS_START( fourtrax )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_DIPNAME( 0x01, 0x01, "PortB 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "PortB 0x02")
PORT_DIPSETTING( 0x02, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x04, 0x04, "PortB 0x04")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "PortB 0x08")
PORT_DIPSETTING( 0x08, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x10, 0x10, "PortB 0x10")
PORT_DIPSETTING( 0x10, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x20, 0x20, "PortB 0x20")
PORT_DIPSETTING( 0x20, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("MCUC") /* 63B05Z0 - PORT C & SCI */
PORT_DIPNAME( 0x01, 0x01, "PortC 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "PortC 0x02")
PORT_DIPSETTING( 0x02, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x04, 0x04, "PortC 0x04")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "PortC 0x08")
PORT_DIPSETTING( 0x08, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service Button")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 6 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Steering Wheel 7 */ /* sensitivity, delta, min, max */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(75) PORT_KEYDELTA(50)
PORT_START("AN6") /* Brake Pedal 8 */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30)
PORT_START("AN7") /* Accelerator Pedal 9 */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(15)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_DIPNAME( 0x01, 0x01, "PortH 0x01")
PORT_DIPSETTING( 0x01, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x02, 0x02, "PortH 0x02")
PORT_DIPSETTING( 0x02, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x04, 0x04, "PortH 0x04")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "PortH 0x08 (onscreen diagnostics)")
PORT_DIPSETTING( 0x08, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x10, 0x10, "PortH 0x10")
PORT_DIPSETTING( 0x10, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_TOGGLE
PORT_DIPNAME( 0x40, 0x40, "PortH 0x40")
PORT_DIPSETTING( 0x40, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x80, 0x80, "PortH 0x80")
PORT_DIPSETTING( 0x80, "H" )
PORT_DIPSETTING( 0x00, "L" )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( assault )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
NAMCOS2_MCU_ANALOG_PORT_DEFAULT
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_4WAY PORT_PLAYER(1)
NAMCOS2_MCU_DIPSW_DEFAULT
/* These are tagged this way to make easier reads by tag */
PORT_START("MCUDI0") /* 63B05Z0 - $3000 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_4WAY PORT_PLAYER(1)
PORT_START("MCUDI1") /* 63B05Z0 - $3001 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MCUDI2") /* 63B05Z0 - $3002 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MCUDI3") /* 63B05Z0 - $3003 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( suzuka )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Steering Wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(100)
PORT_START("AN6") /* Brake pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_MINMAX(0x00,0x7f) PORT_SENSITIVITY(100) PORT_KEYDELTA(30)
PORT_START("AN7") /* Accelerator pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(15)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW") /* 63B05Z0 - $2000 DIP SW */
PORT_DIPNAME( 0x01, 0x01, "Video Display")
PORT_DIPSETTING( 0x01, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, "Frozen" )
PORT_DIPNAME( 0x02, 0x02, "$2000-1")
PORT_DIPSETTING( 0x02, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x04, 0x04, "$2000-2")
PORT_DIPSETTING( 0x04, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x08, 0x08, "$2000-3")
PORT_DIPSETTING( 0x08, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x10, 0x10, "$2000-4")
PORT_DIPSETTING( 0x10, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x20, 0x20, "$2000-5")
PORT_DIPSETTING( 0x20, "H" )
PORT_DIPSETTING( 0x00, "L" )
PORT_DIPNAME( 0x40, 0x40, "System is Status Monitor")
PORT_DIPSETTING( 0x40, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
/* note, even with perfectly calibrated gun settings the on-screen cursor won't align with the MAME cursor
because the game assumes the screen space isn't a linear mapping to the gun. This is especially noticeable
with the P2 cursor. You should turn off the MAME cursor using the 'Crosshair Options' in the MAME internal
TAB menu.
This game has a rather unique control setup, 2 lightguns, plus steering hardware. Defaults have been set
up to avoid a large number of duplicae buttons. Using these settings (with -mouse) the following mapping is
given
Z, X - Steer Car
Ctrl - Accelerate
Alt - Brake
Mouse - Aim Gun
Left Shift - Fire Gun
*/
static INPUT_PORTS_START( luckywld )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("AN2")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN3")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("AN4")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN5") /* Steering Wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_CODE(INPUT_CODE_INVALID) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X)
PORT_START("AN6") /* Brake pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_MINMAX(0x00,0x7f) PORT_SENSITIVITY(100) PORT_KEYDELTA(30)
PORT_START("AN7") /* Accelerator pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_MINMAX(0x00,0x7f) PORT_SENSITIVITY(100) PORT_KEYDELTA(15)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Fire") PORT_CODE(KEYCODE_RSHIFT) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Fire") PORT_CODE(KEYCODE_LSHIFT)
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
PORT_MODIFY("DSW")
// this applies to both the World and Japan sets
PORT_DIPNAME( 0x40, 0x40, "Show Winners Don't Use Drugs")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
INPUT_PORTS_END
static INPUT_PORTS_START( sgunner )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN5")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("AN6")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8)
PORT_START("AN7")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( dirtfox )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Gear Shift Down")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Gear Shift Up")
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Steering Wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(70) PORT_KEYDELTA(50)
PORT_START("AN6") /* Brake pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_MINMAX(0x00,0x7f) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_NAME("Brake")
PORT_START("AN7") /* Accelerator pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_MINMAX(0x00,0x7f) PORT_SENSITIVITY(100) PORT_KEYDELTA(15) PORT_NAME("Accelerator")
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
static INPUT_PORTS_START( metlhawk )
PORT_START("MCUB") /* 63B05Z0 - PORT B */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
NAMCOS2_MCU_PORT_C_DEFAULT
PORT_START("AN0") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN1") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN2") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN3") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN4") /* 63B05Z0 - 8 CHANNEL ANALOG - CHANNEL 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("AN5") /* Joystick Y */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(16)
PORT_START("AN6") /* Joystick X */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(16)
PORT_START("AN7") /* Lever */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x20,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(16) PORT_REVERSE PORT_PLAYER(2)
PORT_START("MCUH") /* 63B05Z0 - PORT H */
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
NAMCOS2_MCU_DIPSW_DEFAULT
NAMCOS2_MCU_DIAL_DEFAULT
INPUT_PORTS_END
/*************************************************************/
/* Namco System II - Graphics Declarations */
/*************************************************************/
static const gfx_layout obj_layout = {
32,32,
0x800, /* number of sprites */
8, /* bits per pixel */
{ /* plane offsets */
(0x400000*3),(0x400000*3)+4,(0x400000*2),(0x400000*2)+4,
(0x400000*1),(0x400000*1)+4,(0x400000*0),(0x400000*0)+4
},
{ /* x offsets */
0*8,0*8+1,0*8+2,0*8+3,1*8,1*8+1,1*8+2,1*8+3,
2*8,2*8+1,2*8+2,2*8+3,3*8,3*8+1,3*8+2,3*8+3,
4*8,4*8+1,4*8+2,4*8+3,5*8,5*8+1,5*8+2,5*8+3,
6*8,6*8+1,6*8+2,6*8+3,7*8,7*8+1,7*8+2,7*8+3,
},
{ /* y offsets */
0x0*128,0x0*128+64,0x1*128,0x1*128+64,0x2*128,0x2*128+64,0x3*128,0x3*128+64,
0x4*128,0x4*128+64,0x5*128,0x5*128+64,0x6*128,0x6*128+64,0x7*128,0x7*128+64,
0x8*128,0x8*128+64,0x9*128,0x9*128+64,0xa*128,0xa*128+64,0xb*128,0xb*128+64,
0xc*128,0xc*128+64,0xd*128,0xd*128+64,0xe*128,0xe*128+64,0xf*128,0xf*128+64
},
0x800 /* sprite offset */
};
static const gfx_layout c355_sprite_layout = /* same as Namco System21 */
{
16,16,
RGN_FRAC(1,4), /* number of tiles */
8, /* bits per pixel */
{ /* plane offsets */
0,1,2,3,4,5,6,7
},
{ /* x offsets */
0*8,RGN_FRAC(1,4)+0*8,RGN_FRAC(2,4)+0*8,RGN_FRAC(3,4)+0*8,
1*8,RGN_FRAC(1,4)+1*8,RGN_FRAC(2,4)+1*8,RGN_FRAC(3,4)+1*8,
2*8,RGN_FRAC(1,4)+2*8,RGN_FRAC(2,4)+2*8,RGN_FRAC(3,4)+2*8,
3*8,RGN_FRAC(1,4)+3*8,RGN_FRAC(2,4)+3*8,RGN_FRAC(3,4)+3*8
},
{ /* y offsets */
0x0*32,0x1*32,0x2*32,0x3*32,
0x4*32,0x5*32,0x6*32,0x7*32,
0x8*32,0x9*32,0xa*32,0xb*32,
0xc*32,0xd*32,0xe*32,0xf*32
},
8*64 /* sprite offset */
};
static const gfx_layout metlhawk_sprite_layout = {
32,32,
RGN_FRAC(1,1), /* number of sprites */
8, /* bits per pixel */
{ STEP8(0,1) },
{ STEP32(0,8) },
{ STEP32(0,8*32) },
32*32*8
};
static const gfx_layout metlhawk_sprite_layout_swapped = {
32,32,
RGN_FRAC(1,1), /* number of sprites */
8, /* bits per pixel */
{ STEP8(0,1) },
{ STEP32(0,8*32) },
{ STEP32(0,8) },
32*32*8
};
static GFXDECODE_START( gfx_metlhawk )
GFXDECODE_ENTRY( "sprite", 0x000000, metlhawk_sprite_layout, 0, 16 )
GFXDECODE_ENTRY( "sprite", 0x000000, metlhawk_sprite_layout_swapped, 0, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_namcos2 )
GFXDECODE_ENTRY( "sprite", 0x000000, obj_layout, 0, 16 )
GFXDECODE_ENTRY( "sprite", 0x200000, obj_layout, 0, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_c355 )
GFXDECODE_ENTRY( "sprite", 0x000000, c355_sprite_layout, 0, 16 )
GFXDECODE_END
/* end */
/******************************************
Master clock = 49.152MHz
68000 Measured at 84ns = 12.4MHz BUT 49.152MHz/4 = 12.288MHz = 81ns
6809 Measured at 343ns = 2.915 MHz BUT 49.152MHz/16 = 3.072MHz = 325ns
63B05 Measured at 120ns = 8.333 MHz BUT 49.152MHz/6 = 8.192MHz = 122ns
I've corrected all frequencies to be multiples of integer divisions of
the 49.152MHz master clock. Additionally the 6305 looks to have an
internal divider.
Soooo;
680000 = 12288000
6809 = 3072000
63B05Z0 = 2048000
The interrupts to CPU4 has been measured at 60Hz (16.5mS period) on a
logic analyser. This interrupt is wired to port PA1 which is configured
via software as INT1
*******************************************/
/*************************************************************/
/* */
/* NAMCO SYSTEM 2 MACHINE DEFINTIONS */
/* */
/*************************************************************/
void namcos2_state::configure_c116_standard(machine_config &config)
{
NAMCO_C116(config, m_c116, 0);
m_c116->enable_shadows();
}
void namcos2_state::configure_c148_standard(machine_config &config)
{
NAMCO_C148(config, m_master_intc, 0, m_maincpu, true);
m_master_intc->link_c148_device(m_slave_intc);
m_master_intc->out_ext1_callback().set(FUNC(namcos2_state::sound_reset_w));
m_master_intc->out_ext2_callback().set(FUNC(namcos2_state::system_reset_w));
NAMCO_C148(config, m_slave_intc, 0, m_slave, false);
m_slave_intc->link_c148_device(m_master_intc);
}
void namcos2_state::configure_c65_standard(machine_config &config)
{
NAMCOC65(config, m_c65, C65_CPU_CLOCK);
m_c65->in_pb_callback().set_ioport("MCUB");
m_c65->in_pc_callback().set_ioport("MCUC");
m_c65->in_ph_callback().set_ioport("MCUH");
m_c65->in_pdsw_callback().set_ioport("DSW");
m_c65->di0_in_cb().set_ioport("MCUDI0");
m_c65->di1_in_cb().set_ioport("MCUDI1");
m_c65->di2_in_cb().set_ioport("MCUDI2");
m_c65->di3_in_cb().set_ioport("MCUDI3");
m_c65->an0_in_cb().set_ioport("AN0");
m_c65->an1_in_cb().set_ioport("AN1");
m_c65->an2_in_cb().set_ioport("AN2");
m_c65->an3_in_cb().set_ioport("AN3");
m_c65->an4_in_cb().set_ioport("AN4");
m_c65->an5_in_cb().set_ioport("AN5");
m_c65->an6_in_cb().set_ioport("AN6");
m_c65->an7_in_cb().set_ioport("AN7");
m_c65->dp_in_callback().set(FUNC(namcos2_state::dpram_byte_r));
m_c65->dp_out_callback().set(FUNC(namcos2_state::dpram_byte_w));
}
void namcos2_state::configure_c68_standard(machine_config &config)
{
NAMCOC68(config, m_c68, C68_CPU_CLOCK);
m_c68->in_pb_callback().set_ioport("MCUB");
m_c68->in_pc_callback().set_ioport("MCUC");
m_c68->in_ph_callback().set_ioport("MCUH");
m_c68->in_pdsw_callback().set_ioport("DSW");
m_c68->di0_in_cb().set_ioport("MCUDI0");
m_c68->di1_in_cb().set_ioport("MCUDI1");
m_c68->di2_in_cb().set_ioport("MCUDI2");
m_c68->di3_in_cb().set_ioport("MCUDI3");
m_c68->an0_in_cb().set_ioport("AN0");
m_c68->an1_in_cb().set_ioport("AN1");
m_c68->an2_in_cb().set_ioport("AN2");
m_c68->an3_in_cb().set_ioport("AN3");
m_c68->an4_in_cb().set_ioport("AN4");
m_c68->an5_in_cb().set_ioport("AN5");
m_c68->an6_in_cb().set_ioport("AN6");
m_c68->an7_in_cb().set_ioport("AN7");
m_c68->dp_in_callback().set(FUNC(namcos2_state::dpram_byte_r));
m_c68->dp_out_callback().set(FUNC(namcos2_state::dpram_byte_w));
}
// TODO: temp
TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline)
{
int scanline = param;
int cur_posirq = get_pos_irq_scanline();
if (scanline == 200) // triggering this a bit before Vblank allows the Assault Plus mode select screen to work without overclocking the IO MCU, exact timings unknown.
{
if (m_c65)
m_c65->ext_interrupt(HOLD_LINE);
if (m_c68)
m_c68->ext_interrupt(ASSERT_LINE);
}
if(scanline == 240)
{
m_master_intc->vblank_irq_trigger();
m_slave_intc->vblank_irq_trigger();
}
if(scanline == cur_posirq)
{
m_master_intc->pos_irq_trigger();
m_slave_intc->pos_irq_trigger();
// TODO: wrong place!
m_screen->update_partial(param);
}
}
void namcos2_state::configure_c123tmap_standard(machine_config &config)
{
NAMCO_C123TMAP(config, m_c123tmap, 0);
m_c123tmap->set_palette(m_c116);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB, this));
m_c123tmap->set_color_base(16*256);
}
void namcos2_state::base_noio(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_default_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_default_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
config.m_minimum_quantum = attotime::from_hz(12000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update));
m_screen->set_palette(m_c116);
configure_c123tmap_standard(config);
NAMCOS2_SPRITE(config, m_ns2sprite, 0);
m_ns2sprite->set_gfxdecode_tag("gfxdecode");
m_ns2sprite->set_spriteram_tag("spriteram");
NAMCOS2_ROZ(config, m_ns2roz, 0);
m_ns2roz->set_palette(m_c116);
m_ns2roz->set_rozram_tag("rozram");
m_ns2roz->set_rozctrl_tag("rozctrl");
configure_c116_standard(config);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::base(machine_config &config)
{
base_noio(config);
configure_c65_standard(config);
}
void namcos2_state::base_c68(machine_config &config)
{
base_noio(config);
configure_c68_standard(config);
}
void namcos2_state::base2(machine_config &config)
{
base(config);
m_c140->reset_routes();
m_c140->add_route(0, "lspeaker", 1.0);
m_c140->add_route(1, "rspeaker", 1.0);
}
void namcos2_state::assaultp(machine_config &config)
{
base2(config);
config.m_minimum_quantum = attotime::from_hz(12000*8); /* CPU slices per frame - boosted (along with MCU speed) so that the Mode Select works */
}
void namcos2_state::base3(machine_config &config)
{
base(config);
m_c140->reset_routes();
m_c140->add_route(0, "lspeaker", 0.45);
m_c140->add_route(1, "rspeaker", 0.45);
YM2151(config.replace(), "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545MHz */
}
void namcos2_state::gollygho(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_default_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_default_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
configure_c65_standard(config);
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
configure_c123tmap_standard(config);
NAMCOS2_SPRITE(config, m_ns2sprite, 0);
m_ns2sprite->set_gfxdecode_tag("gfxdecode");
m_ns2sprite->set_spriteram_tag("spriteram");
NAMCOS2_ROZ(config, m_ns2roz, 0);
m_ns2roz->set_palette(m_c116);
m_ns2roz->set_rozram_tag("rozram");
m_ns2roz->set_rozctrl_tag("rozctrl");
configure_c116_standard(config);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::finallap_noio(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_finallap_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_finallap_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update_finallap));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_namcos2);
configure_c123tmap_standard(config);
NAMCOS2_SPRITE(config, m_ns2sprite, 0);
m_ns2sprite->set_gfxdecode_tag("gfxdecode");
m_ns2sprite->set_spriteram_tag("spriteram");
configure_c116_standard(config);
NAMCO_C45_ROAD(config, m_c45_road, 0);
m_c45_road->set_palette(m_c116);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::finallap(machine_config &config)
{
finallap_noio(config);
configure_c65_standard(config);
}
void namcos2_state::finallap_c68(machine_config &config)
{
finallap_noio(config);
configure_c68_standard(config);
}
// finalap2 has different mangle
void namcos2_state::finalap2(machine_config &config)
{
finallap(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB_finalap2, this));
}
void namcos2_state::finalap3(machine_config &config)
{
finallap_c68(config);
m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_state::TilemapCB_finalap2, this));
}
void namcos2_state::sgunner(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_sgunner_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_sgunner_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
configure_c65_standard(config);
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update_sgunner));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_scroll_offsets(0x26, 0x19);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_palxor(0x0);
m_c355spr->set_gfxregion(0);
configure_c123tmap_standard(config);
configure_c116_standard(config);
MCFG_VIDEO_START_OVERRIDE(namcos2_state, sgunner)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::sgunner2(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_sgunner_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_sgunner_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
configure_c68_standard(config);
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update_sgunner));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_scroll_offsets(0x26, 0x19);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_palxor(0x0);
m_c355spr->set_gfxregion(0);
configure_c123tmap_standard(config);
configure_c116_standard(config);
MCFG_VIDEO_START_OVERRIDE(namcos2_state, sgunner)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::suzuka8h(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_suzuka8h_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_suzuka8h_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
configure_c68_standard(config);
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update_luckywld));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_c355);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
m_c355spr->set_gfxdecode_tag("gfxdecode");
m_c355spr->set_scroll_offsets(0x26, 0x19);
m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_palxor(0x0);
m_c355spr->set_gfxregion(0);
configure_c123tmap_standard(config);
configure_c116_standard(config);
MCFG_VIDEO_START_OVERRIDE(namcos2_state, luckywld)
NAMCO_C45_ROAD(config, m_c45_road, 0);
m_c45_road->set_palette(m_c116);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 0.75);
m_c140->add_route(1, "rspeaker", 0.75);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
}
void namcos2_state::luckywld(machine_config &config)
{
suzuka8h(config);
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_luckywld_am);
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_luckywld_am);
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_palette(m_c116);
m_c169roz->set_is_namcofl(false);
m_c169roz->set_ram_words(0x10000/2);
m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namcos2_state::RozCB_luckywld, this));
m_c169roz->set_color_base(0*256);
}
void namcos2_state::metlhawk(machine_config &config)
{
M68000(config, m_maincpu, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_maincpu->set_addrmap(AS_PROGRAM, &namcos2_state::master_metlhawk_am);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos2_state::screen_scanline), "screen", 0, 1);
M68000(config, m_slave, M68K_CPU_CLOCK); /* 12.288MHz (49.152MHz OSC/4) */
m_slave->set_addrmap(AS_PROGRAM, &namcos2_state::slave_metlhawk_am);
MC6809E(config, m_audiocpu, M68B09_CPU_CLOCK); /* 2.048MHz (49.152MHz OSC/24) - Sound handling */
m_audiocpu->set_addrmap(AS_PROGRAM, &namcos2_state::sound_default_am);
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq0_line_hold), attotime::from_hz(2*60));
m_audiocpu->set_periodic_int(FUNC(namcos2_state::irq1_line_hold), attotime::from_hz(120));
configure_c65_standard(config);
config.m_minimum_quantum = attotime::from_hz(6000); /* CPU slices per frame */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
configure_c148_standard(config);
NAMCO_C139(config, m_sci, 0);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MAIN_OSC_CLOCK/8, 384, 0*8, 36*8, 264, 0*8, 28*8);
m_screen->set_screen_update(FUNC(namcos2_state::screen_update_metlhawk));
m_screen->set_palette(m_c116);
GFXDECODE(config, m_gfxdecode, m_c116, gfx_metlhawk);
NAMCO_C169ROZ(config, m_c169roz, 0);
m_c169roz->set_palette(m_c116);
m_c169roz->set_is_namcofl(false);
m_c169roz->set_ram_words(0x10000/2);
m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namcos2_state::RozCB_metlhawk, this));
m_c169roz->set_color_base(0*256);
configure_c123tmap_standard(config);
NAMCOS2_SPRITE(config, m_ns2sprite, 0);
m_ns2sprite->set_gfxdecode_tag("gfxdecode");
m_ns2sprite->set_spriteram_tag("spriteram");
configure_c116_standard(config);
MCFG_VIDEO_START_OVERRIDE(namcos2_state, metlhawk)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
C140(config, m_c140, C140_SOUND_CLOCK); /* 21.333kHz */
m_c140->set_bank_type(c140_device::C140_TYPE::SYSTEM2);
m_c140->add_route(0, "lspeaker", 1.0);
m_c140->add_route(1, "rspeaker", 1.0);
YM2151(config, "ymsnd", YM2151_SOUND_CLOCK).add_route(0, "lspeaker", 0.80).add_route(1, "rspeaker", 0.80); /* 3.579545MHz */
// ymsnd.irq_handler().set_inputline("audiocpu", 1);
}
/*************************************************************/
/* Namco System II - ROM Declarations */
/*************************************************************/
#define NAMCOS2_GFXROM_LOAD_128K(romname,start,chksum)\
ROM_LOAD( romname , (start + 0x000000), 0x020000, chksum )\
ROM_RELOAD( (start + 0x020000), 0x020000 )\
ROM_RELOAD( (start + 0x040000), 0x020000 )\
ROM_RELOAD( (start + 0x060000), 0x020000 )
#define NAMCOS2_GFXROM_LOAD_256K(romname,start,chksum)\
ROM_LOAD( romname , (start + 0x000000), 0x040000, chksum )\
ROM_RELOAD( (start + 0x040000), 0x040000 )
#define NAMCOS2_DATA_LOAD_E_128K(romname,start,chksum)\
ROM_LOAD16_BYTE(romname , (start + 0x000000), 0x020000, chksum )\
ROM_RELOAD( (start + 0x040000), 0x020000 )\
ROM_RELOAD( (start + 0x080000), 0x020000 )\
ROM_RELOAD( (start + 0x0c0000), 0x020000 )
#define NAMCOS2_DATA_LOAD_O_128K(romname,start,chksum)\
ROM_LOAD16_BYTE( romname, (start + 0x000001), 0x020000, chksum )\
ROM_RELOAD( (start + 0x040001), 0x020000 )\
ROM_RELOAD( (start + 0x080001), 0x020000 )\
ROM_RELOAD( (start + 0x0c0001), 0x020000 )
#define NAMCOS2_DATA_LOAD_E_256K(romname,start,chksum)\
ROM_LOAD16_BYTE(romname , (start + 0x000000), 0x040000, chksum )\
ROM_RELOAD( (start + 0x080000), 0x040000 )
#define NAMCOS2_DATA_LOAD_O_256K(romname,start,chksum)\
ROM_LOAD16_BYTE( romname, (start + 0x000001), 0x040000, chksum )\
ROM_RELOAD( (start + 0x080001), 0x040000 )
#define NAMCOS2_DATA_LOAD_E_512K(romname,start,chksum)\
ROM_LOAD16_BYTE(romname , (start + 0x000000), 0x080000, chksum )
#define NAMCOS2_DATA_LOAD_O_512K(romname,start,chksum)\
ROM_LOAD16_BYTE( romname, (start + 0x000001), 0x080000, chksum )
/* ASSAULT (NAMCO) */
ROM_START( assault )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "at2mp0b.bin", 0x000000, 0x010000, CRC(801f71c5) SHA1(b07366a7b5cc4f3dd12fc0455c55146680f9f3f7) )
ROM_LOAD16_BYTE( "at2mp1b.bin", 0x000001, 0x010000, CRC(72312d4f) SHA1(cbb1d430937dc201293885e177eb18535d8b2884) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "at1sp0.bin", 0x000000, 0x010000, CRC(0de2a0da) SHA1(5f6ce61f2ad1e50f0eac3a115c511151bbb00fd2) )
ROM_LOAD16_BYTE( "at1sp1.bin", 0x000001, 0x010000, CRC(02d15fbe) SHA1(7c1bc845a06188ebe2efdb5880562beae11a7b4f) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "at1snd0.bin", 0x000000, 0x020000, CRC(1d1ffe12) SHA1(5a49bf1eef981df69abac28132af65670ba01118) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
NAMCOS2_GFXROM_LOAD_128K( "atobj1.bin", 0x080000, CRC(2284a8e8) SHA1(80f9143e08f9f8ff3e937312a8ce76855a1929ad) )
NAMCOS2_GFXROM_LOAD_128K( "atobj2.bin", 0x100000, CRC(51425476) SHA1(12a2fb1b61adfa4c21a5af4f206ffe48a045a953) )
NAMCOS2_GFXROM_LOAD_128K( "atobj3.bin", 0x180000, CRC(791f42ce) SHA1(95583130abe2e6f9ad3e96288d811b4abc3d44b3) )
NAMCOS2_GFXROM_LOAD_128K( "atobj4.bin", 0x200000, CRC(4782e1b0) SHA1(3d9f4b9eb711fb47e424cd57f7183f49f5dd6ec4) )
NAMCOS2_GFXROM_LOAD_128K( "atobj5.bin", 0x280000, CRC(f5d158cf) SHA1(f05f44915afe3c17fff0b85a0364f70e79b25428) )
NAMCOS2_GFXROM_LOAD_128K( "atobj6.bin", 0x300000, CRC(12f6a569) SHA1(e3051de0961f34e15b8642fa769deac3cb0c8305) )
NAMCOS2_GFXROM_LOAD_128K( "atobj7.bin", 0x380000, CRC(06a929f2) SHA1(65308972a27ab4a649fd08414a89e6f97a09240e) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atchr0.bin", 0x000000, CRC(6f8e968a) SHA1(b771359a3b08c1aeeb248eff325b19238bb88bf8) )
NAMCOS2_GFXROM_LOAD_128K( "atchr1.bin", 0x080000, CRC(88cf7cbe) SHA1(df7565cb36658311b784d5406dc6f83141af58a9) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atroz0.bin", 0x000000, CRC(8c247a97) SHA1(e06dc0b46fa06f41d2017ec8113baf5c4ba832ab) )
NAMCOS2_GFXROM_LOAD_128K( "atroz1.bin", 0x080000, CRC(e44c475b) SHA1(64768692a8d38377fa1109cd9f7c86b31c01e13c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz2.bin", 0x100000, CRC(770f377f) SHA1(3a7d4f4b9eb01d4366119f34b0d7d7db2f5a2471) )
NAMCOS2_GFXROM_LOAD_128K( "atroz3.bin", 0x180000, CRC(01d93d0b) SHA1(47dfda4720f0d4cd41633fd0291b82a54a4eb310) )
NAMCOS2_GFXROM_LOAD_128K( "atroz4.bin", 0x200000, CRC(f96feab5) SHA1(c861df1f66de046ca714087630f5a1e2f3f30361) )
NAMCOS2_GFXROM_LOAD_128K( "atroz5.bin", 0x280000, CRC(da2f0d9e) SHA1(a7fbe4748c67906a1ab2902d3b75a21219a677c0) )
NAMCOS2_GFXROM_LOAD_128K( "atroz6.bin", 0x300000, CRC(9089e477) SHA1(929d7d81c05aa148212e22969d147296811d433c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz7.bin", 0x380000, CRC(62b2783a) SHA1(d1ba043a2ec9390c2f281f53de6e59bd936ea6f6) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
ROM_END
/* ASSAULT (JAPAN) */
ROM_START( assaultj )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "at1_mp0.bin", 0x000000, 0x010000, CRC(2d3e5c8c) SHA1(e43081a94c0d35fcb9ef48e248be59f0dd390b9b) )
ROM_LOAD16_BYTE( "at1_mp1.bin", 0x000001, 0x010000, CRC(851cec3a) SHA1(75afae79e1b5843d765677b457f38bed8eebf07c) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "at1sp0.bin", 0x000000, 0x010000, CRC(0de2a0da) SHA1(5f6ce61f2ad1e50f0eac3a115c511151bbb00fd2) )
ROM_LOAD16_BYTE( "at1sp1.bin", 0x000001, 0x010000, CRC(02d15fbe) SHA1(7c1bc845a06188ebe2efdb5880562beae11a7b4f) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "at1snd0.bin", 0x000000, 0x020000, CRC(1d1ffe12) SHA1(5a49bf1eef981df69abac28132af65670ba01118) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
NAMCOS2_GFXROM_LOAD_128K( "atobj1.bin", 0x080000, CRC(2284a8e8) SHA1(80f9143e08f9f8ff3e937312a8ce76855a1929ad) )
NAMCOS2_GFXROM_LOAD_128K( "atobj2.bin", 0x100000, CRC(51425476) SHA1(12a2fb1b61adfa4c21a5af4f206ffe48a045a953) )
NAMCOS2_GFXROM_LOAD_128K( "atobj3.bin", 0x180000, CRC(791f42ce) SHA1(95583130abe2e6f9ad3e96288d811b4abc3d44b3) )
NAMCOS2_GFXROM_LOAD_128K( "atobj4.bin", 0x200000, CRC(4782e1b0) SHA1(3d9f4b9eb711fb47e424cd57f7183f49f5dd6ec4) )
NAMCOS2_GFXROM_LOAD_128K( "atobj5.bin", 0x280000, CRC(f5d158cf) SHA1(f05f44915afe3c17fff0b85a0364f70e79b25428) )
NAMCOS2_GFXROM_LOAD_128K( "atobj6.bin", 0x300000, CRC(12f6a569) SHA1(e3051de0961f34e15b8642fa769deac3cb0c8305) )
NAMCOS2_GFXROM_LOAD_128K( "atobj7.bin", 0x380000, CRC(06a929f2) SHA1(65308972a27ab4a649fd08414a89e6f97a09240e) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atchr0.bin", 0x000000, CRC(6f8e968a) SHA1(b771359a3b08c1aeeb248eff325b19238bb88bf8) )
NAMCOS2_GFXROM_LOAD_128K( "atchr1.bin", 0x080000, CRC(88cf7cbe) SHA1(df7565cb36658311b784d5406dc6f83141af58a9) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atroz0.bin", 0x000000, CRC(8c247a97) SHA1(e06dc0b46fa06f41d2017ec8113baf5c4ba832ab) )
NAMCOS2_GFXROM_LOAD_128K( "atroz1.bin", 0x080000, CRC(e44c475b) SHA1(64768692a8d38377fa1109cd9f7c86b31c01e13c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz2.bin", 0x100000, CRC(770f377f) SHA1(3a7d4f4b9eb01d4366119f34b0d7d7db2f5a2471) )
NAMCOS2_GFXROM_LOAD_128K( "atroz3.bin", 0x180000, CRC(01d93d0b) SHA1(47dfda4720f0d4cd41633fd0291b82a54a4eb310) )
NAMCOS2_GFXROM_LOAD_128K( "atroz4.bin", 0x200000, CRC(f96feab5) SHA1(c861df1f66de046ca714087630f5a1e2f3f30361) )
NAMCOS2_GFXROM_LOAD_128K( "atroz5.bin", 0x280000, CRC(da2f0d9e) SHA1(a7fbe4748c67906a1ab2902d3b75a21219a677c0) )
NAMCOS2_GFXROM_LOAD_128K( "atroz6.bin", 0x300000, CRC(9089e477) SHA1(929d7d81c05aa148212e22969d147296811d433c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz7.bin", 0x380000, CRC(62b2783a) SHA1(d1ba043a2ec9390c2f281f53de6e59bd936ea6f6) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
ROM_END
/* ASSAULT PLUS (NAMCO) */
ROM_START( assaultp )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "mpr0.bin", 0x000000, 0x010000, CRC(97519f9f) SHA1(760580c0865931f18f4b0b4f609379c0dbeff977) )
ROM_LOAD16_BYTE( "mpr1.bin", 0x000001, 0x010000, CRC(c7f437c7) SHA1(f56d908ed557192cd6d583eccd5ded33807e73a9) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "at1sp0.bin", 0x000000, 0x010000, CRC(0de2a0da) SHA1(5f6ce61f2ad1e50f0eac3a115c511151bbb00fd2) )
ROM_LOAD16_BYTE( "at1sp1.bin", 0x000001, 0x010000, CRC(02d15fbe) SHA1(7c1bc845a06188ebe2efdb5880562beae11a7b4f) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "at1snd0.bin", 0x000000, 0x020000, CRC(1d1ffe12) SHA1(5a49bf1eef981df69abac28132af65670ba01118) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
NAMCOS2_GFXROM_LOAD_128K( "atobj1.bin", 0x080000, CRC(2284a8e8) SHA1(80f9143e08f9f8ff3e937312a8ce76855a1929ad) )
NAMCOS2_GFXROM_LOAD_128K( "atobj2.bin", 0x100000, CRC(51425476) SHA1(12a2fb1b61adfa4c21a5af4f206ffe48a045a953) )
NAMCOS2_GFXROM_LOAD_128K( "atobj3.bin", 0x180000, CRC(791f42ce) SHA1(95583130abe2e6f9ad3e96288d811b4abc3d44b3) )
NAMCOS2_GFXROM_LOAD_128K( "atobj4.bin", 0x200000, CRC(4782e1b0) SHA1(3d9f4b9eb711fb47e424cd57f7183f49f5dd6ec4) )
NAMCOS2_GFXROM_LOAD_128K( "atobj5.bin", 0x280000, CRC(f5d158cf) SHA1(f05f44915afe3c17fff0b85a0364f70e79b25428) )
NAMCOS2_GFXROM_LOAD_128K( "atobj6.bin", 0x300000, CRC(12f6a569) SHA1(e3051de0961f34e15b8642fa769deac3cb0c8305) )
NAMCOS2_GFXROM_LOAD_128K( "atobj7.bin", 0x380000, CRC(06a929f2) SHA1(65308972a27ab4a649fd08414a89e6f97a09240e) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atchr0.bin", 0x000000, CRC(6f8e968a) SHA1(b771359a3b08c1aeeb248eff325b19238bb88bf8) )
NAMCOS2_GFXROM_LOAD_128K( "atchr1.bin", 0x080000, CRC(88cf7cbe) SHA1(df7565cb36658311b784d5406dc6f83141af58a9) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_128K( "atroz0.bin", 0x000000, CRC(8c247a97) SHA1(e06dc0b46fa06f41d2017ec8113baf5c4ba832ab) )
NAMCOS2_GFXROM_LOAD_128K( "atroz1.bin", 0x080000, CRC(e44c475b) SHA1(64768692a8d38377fa1109cd9f7c86b31c01e13c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz2.bin", 0x100000, CRC(770f377f) SHA1(3a7d4f4b9eb01d4366119f34b0d7d7db2f5a2471) )
NAMCOS2_GFXROM_LOAD_128K( "atroz3.bin", 0x180000, CRC(01d93d0b) SHA1(47dfda4720f0d4cd41633fd0291b82a54a4eb310) )
NAMCOS2_GFXROM_LOAD_128K( "atroz4.bin", 0x200000, CRC(f96feab5) SHA1(c861df1f66de046ca714087630f5a1e2f3f30361) )
NAMCOS2_GFXROM_LOAD_128K( "atroz5.bin", 0x280000, CRC(da2f0d9e) SHA1(a7fbe4748c67906a1ab2902d3b75a21219a677c0) )
NAMCOS2_GFXROM_LOAD_128K( "atroz6.bin", 0x300000, CRC(9089e477) SHA1(929d7d81c05aa148212e22969d147296811d433c) )
NAMCOS2_GFXROM_LOAD_128K( "atroz7.bin", 0x380000, CRC(62b2783a) SHA1(d1ba043a2ec9390c2f281f53de6e59bd936ea6f6) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "atshape.bin", 0x000000, CRC(dfcad82b) SHA1(9c3826b8dc36fa0d71c0de7f8be3479d9a025803) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "at1dat0.bin", 0x000000, CRC(844890f4) SHA1(1be30760acd81fae836301d81d6adbb3e5941373) )
NAMCOS2_DATA_LOAD_O_128K( "at1dat1.bin", 0x000000, CRC(21715313) SHA1(97c6edae6a5f1df434f1dcf7be307b5e006e72a6) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "atvoi1.bin", 0x000000, 0x080000, CRC(d36a649e) SHA1(30173f32c6ec9dda6b8946baa14266e828b0324e) )
ROM_END
/* BURNING FORCE */
ROM_START( burnforc )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "bu1_mpr0c.bin", 0x000000, 0x020000, CRC(cc5864c6) SHA1(278b02b634ca07b066a817ed38a8557bcb13aa78) )
ROM_LOAD16_BYTE( "bu1_mpr1c.bin", 0x000001, 0x020000, CRC(3e6b4b1b) SHA1(c765e1ba5873239c4d440678baaac6e95a410339) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "bu1_spr0.bin", 0x000000, 0x010000, CRC(17022a21) SHA1(331fb1a8e97f21bd5e0a5889fc960b1d187f1ee1) )
ROM_LOAD16_BYTE( "bu1_spr1.bin", 0x000001, 0x010000, CRC(5255f8a5) SHA1(e2253b98a1b7b7c761ea71c201320711dc7d2e32) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "bu1_snd0.bin", 0x000000, 0x020000, CRC(fabb1150) SHA1(61e3133adf8d593419f70a854ff91dd5011de3b3) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "bu_obj-0.bin", 0x000000, 0x80000, CRC(24c919a1) SHA1(ddf5bfbf1bbe2a10d6708b618b77f1d6d7862372) )
ROM_LOAD( "bu_obj-1.bin", 0x080000, 0x80000, CRC(5bcb519b) SHA1(1d2979a4bed7e952ec77d3a5891a6412044d5f49) )
ROM_LOAD( "bu_obj-2.bin", 0x100000, 0x80000, CRC(509dd5d0) SHA1(68a9054fcde7b677f529ef4db6a8b29750649a2a) )
ROM_LOAD( "bu_obj-3.bin", 0x180000, 0x80000, CRC(270a161e) SHA1(e26092b6950e2adba34f0c5c08179b83fcd86949) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-0.bin", 0x000000, CRC(c2109f73) SHA1(5f09aa9afb027850f21175614c24071db8c754b5) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-1.bin", 0x080000, CRC(67d6aa67) SHA1(ac7791e4984c6e736ab12e538d856e4fc63383b4) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-2.bin", 0x100000, CRC(52846eff) SHA1(f925512f382a51040401d5833015cce17b8eb1fd) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-3.bin", 0x180000, CRC(d1326d7f) SHA1(fe2138ce42cf19a214b07f1e7f59cd313c4f7775) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-4.bin", 0x200000, CRC(81a66286) SHA1(650273269cba96f223413ec04928408378170f62) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-5.bin", 0x280000, CRC(629aa67f) SHA1(f626b2faf8a1eed1a59124e74fbc05cd99dfb1d9) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-0.bin", 0x000000, CRC(65fefc83) SHA1(cf11e62476ca41f76b685011f94234769e37bf5f) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-1.bin", 0x080000, CRC(979580c2) SHA1(cac8342fd4c41084ce6f578206a9c20d399babde) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-2.bin", 0x100000, CRC(548b6ad8) SHA1(170113dc6f61ad737f72f58a29ea61347f819ddb) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-3.bin", 0x180000, CRC(a633cea0) SHA1(c729679e95fcb73edd9a309b90c40e0e6a12777e) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-4.bin", 0x200000, CRC(1b1f56a6) SHA1(11164fce62724fdd3074abf1c364e299ad092b8e) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-5.bin", 0x280000, CRC(4b864b0e) SHA1(a0b23f49fc85d39bc9dc950ac763fe12454dcdb1) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-6.bin", 0x300000, CRC(38bd25ba) SHA1(8eb6ba969660ab62102ded2f0c39837fd90f3f7d) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "bu_shape.bin", 0x000000,CRC(80a6b722) SHA1(2c24327a890310c5e8086dc6821627108a88c62e) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.bin", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.bin", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "bu_voi-1.bin", 0x000000, 0x080000, CRC(99d8a239) SHA1(1ebc586048e757ac0ac68dc9cc171f4849e67cef) )
ROM_END
ROM_START( burnforco )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "bu1_mpr0.bin", 0x000000, 0x020000, CRC(096b73e2) SHA1(ed96ca336dd0ce368f6b07cf1a80c55cf16919c9) )
ROM_LOAD16_BYTE( "bu1_mpr1.bin", 0x000001, 0x020000, CRC(7ead4cbf) SHA1(ff8cf722e57fbe9e035cc542180806fe045206f5) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "bu1_spr0.bin", 0x000000, 0x010000, CRC(17022a21) SHA1(331fb1a8e97f21bd5e0a5889fc960b1d187f1ee1) )
ROM_LOAD16_BYTE( "bu1_spr1.bin", 0x000001, 0x010000, CRC(5255f8a5) SHA1(e2253b98a1b7b7c761ea71c201320711dc7d2e32) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "bu1_snd0.bin", 0x000000, 0x020000, CRC(fabb1150) SHA1(61e3133adf8d593419f70a854ff91dd5011de3b3) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "bu_obj-0.bin", 0x000000, 0x80000, CRC(24c919a1) SHA1(ddf5bfbf1bbe2a10d6708b618b77f1d6d7862372) )
ROM_LOAD( "bu_obj-1.bin", 0x080000, 0x80000, CRC(5bcb519b) SHA1(1d2979a4bed7e952ec77d3a5891a6412044d5f49) )
ROM_LOAD( "bu_obj-2.bin", 0x100000, 0x80000, CRC(509dd5d0) SHA1(68a9054fcde7b677f529ef4db6a8b29750649a2a) )
ROM_LOAD( "bu_obj-3.bin", 0x180000, 0x80000, CRC(270a161e) SHA1(e26092b6950e2adba34f0c5c08179b83fcd86949) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-0.bin", 0x000000, CRC(c2109f73) SHA1(5f09aa9afb027850f21175614c24071db8c754b5) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-1.bin", 0x080000, CRC(67d6aa67) SHA1(ac7791e4984c6e736ab12e538d856e4fc63383b4) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-2.bin", 0x100000, CRC(52846eff) SHA1(f925512f382a51040401d5833015cce17b8eb1fd) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-3.bin", 0x180000, CRC(d1326d7f) SHA1(fe2138ce42cf19a214b07f1e7f59cd313c4f7775) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-4.bin", 0x200000, CRC(81a66286) SHA1(650273269cba96f223413ec04928408378170f62) )
NAMCOS2_GFXROM_LOAD_128K( "bu_chr-5.bin", 0x280000, CRC(629aa67f) SHA1(f626b2faf8a1eed1a59124e74fbc05cd99dfb1d9) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-0.bin", 0x000000, CRC(65fefc83) SHA1(cf11e62476ca41f76b685011f94234769e37bf5f) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-1.bin", 0x080000, CRC(979580c2) SHA1(cac8342fd4c41084ce6f578206a9c20d399babde) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-2.bin", 0x100000, CRC(548b6ad8) SHA1(170113dc6f61ad737f72f58a29ea61347f819ddb) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-3.bin", 0x180000, CRC(a633cea0) SHA1(c729679e95fcb73edd9a309b90c40e0e6a12777e) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-4.bin", 0x200000, CRC(1b1f56a6) SHA1(11164fce62724fdd3074abf1c364e299ad092b8e) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-5.bin", 0x280000, CRC(4b864b0e) SHA1(a0b23f49fc85d39bc9dc950ac763fe12454dcdb1) )
NAMCOS2_GFXROM_LOAD_128K( "bu_roz-6.bin", 0x300000, CRC(38bd25ba) SHA1(8eb6ba969660ab62102ded2f0c39837fd90f3f7d) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "bu_shape.bin", 0x000000,CRC(80a6b722) SHA1(2c24327a890310c5e8086dc6821627108a88c62e) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "bu1_dat0.bin", 0x000000, CRC(e0a9d92f) SHA1(15042e6d7b31bec08ccdf36e89fdb4b6fb62fa4b) )
NAMCOS2_DATA_LOAD_O_128K( "bu1_dat1.bin", 0x000000, CRC(5fe54b73) SHA1(a5d4895f0a4523be20de40ccaa74f8fad0d5df7d) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "bu_voi-1.bin", 0x000000, 0x080000, CRC(99d8a239) SHA1(1ebc586048e757ac0ac68dc9cc171f4849e67cef) )
ROM_END
/* COSMO GANG THE VIDEO (USA) */
ROM_START( cosmogng )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "co2mpr0.bin", 0x000000, 0x020000, CRC(2632c209) SHA1(a03136c18eff4e3d69dda955a3c774f2829393ec) )
ROM_LOAD16_BYTE( "co2mpr1.bin", 0x000001, 0x020000, CRC(65840104) SHA1(71dfd379a985779e11e9e321ee998df21d03c30e) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "co1spr0.bin", 0x000000, 0x020000, CRC(bba2c28f) SHA1(5adf4eb9d24833e462a240253ab9ac0205cb6501) )
ROM_LOAD16_BYTE( "co1spr1.bin", 0x000001, 0x020000, CRC(c029b459) SHA1(b92c0d24449b8db352bbbd782dc43af0640479e5) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "co2_s0", 0x000000, 0x020000, CRC(4ca59338) SHA1(95916977ab4e0704216984ceed66df7b9e1fdf44) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "co1obj0.bin", 0x000000, 0x80000, CRC(5df8ce0c) SHA1(afb9fb6e048af5aed8976192b847c0674c5e5ce1) )
ROM_LOAD( "co1obj1.bin", 0x080000, 0x80000, CRC(3d152497) SHA1(70c6725cacf86ba4d4b9dbeed7a1e04df9301228) )
ROM_LOAD( "co1obj2.bin", 0x100000, 0x80000, CRC(4e50b6ee) SHA1(0fd4c19fa77ba6774237c760ac1096d4806248dd) )
ROM_LOAD( "co1obj3.bin", 0x180000, 0x80000, CRC(7beed669) SHA1(92e5eb2a8de3ff71c002807f31581a79a5db5422) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "co1chr0.bin", 0x000000, 0x80000, CRC(ee375b3e) SHA1(e7cc3a137450a79c6068c3bf2c15149f6f6dd18a) )
ROM_LOAD( "co1chr1.bin", 0x080000, 0x80000, CRC(0149de65) SHA1(36d42e56251c850e26ee2253cebf62682ac7516f) )
ROM_LOAD( "co1chr2.bin", 0x100000, 0x80000, CRC(93d565a0) SHA1(c6e993dc77c5a30daee5de4363454e2ccf3bd02d) )
ROM_LOAD( "co1chr3.bin", 0x180000, 0x80000, CRC(4d971364) SHA1(579f7e37bfa37b8b152ac44cdfe712c2ec2cda8b) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
ROM_LOAD( "co1roz0.bin", 0x000000, 0x80000, CRC(2bea6951) SHA1(273e3e8ccb042ec794b1709d6626603c8a39a73a) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
ROM_LOAD( "co1sha0.bin", 0x000000, 0x80000, CRC(063a70cc) SHA1(c3179d55d57c47d3fef49d45e45b88c4d8250548) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "co1dat0.bin", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
NAMCOS2_DATA_LOAD_O_128K( "co1dat1.bin", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "co2voi1.bin", 0x000000, 0x080000, CRC(5a301349) SHA1(e333ea5955a66ac8d7c94cd50047efaf6fa95b15) )
ROM_LOAD( "co2voi2.bin", 0x080000, 0x080000, CRC(a27cb45a) SHA1(08ccaaf43369e8358e31b213877829bdfd61479e) )
ROM_END
/* COSMO GANG THE VIDEO (JAPAN) */
ROM_START( cosmogngj )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "co1mpr0.bin", 0x000000, 0x020000, CRC(d1b4c8db) SHA1(d14974edc458b95cca02defef073804f1af0f5de) )
ROM_LOAD16_BYTE( "co1mpr1.bin", 0x000001, 0x020000, CRC(2f391906) SHA1(d97e58eecaca84127caa3bc55d6aa256628e35d7) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "co1spr0.bin", 0x000000, 0x020000, CRC(bba2c28f) SHA1(5adf4eb9d24833e462a240253ab9ac0205cb6501) )
ROM_LOAD16_BYTE( "co1spr1.bin", 0x000001, 0x020000, CRC(c029b459) SHA1(b92c0d24449b8db352bbbd782dc43af0640479e5) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "co1snd0.bin", 0x000000, 0x020000, CRC(6bfa619f) SHA1(71e57adf320034d6cacd9f4a9e93891c8143542f) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "co1obj0.bin", 0x000000, 0x80000, CRC(5df8ce0c) SHA1(afb9fb6e048af5aed8976192b847c0674c5e5ce1) )
ROM_LOAD( "co1obj1.bin", 0x080000, 0x80000, CRC(3d152497) SHA1(70c6725cacf86ba4d4b9dbeed7a1e04df9301228) )
ROM_LOAD( "co1obj2.bin", 0x100000, 0x80000, CRC(4e50b6ee) SHA1(0fd4c19fa77ba6774237c760ac1096d4806248dd) )
ROM_LOAD( "co1obj3.bin", 0x180000, 0x80000, CRC(7beed669) SHA1(92e5eb2a8de3ff71c002807f31581a79a5db5422) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "co1chr0.bin", 0x000000, 0x80000, CRC(ee375b3e) SHA1(e7cc3a137450a79c6068c3bf2c15149f6f6dd18a) )
ROM_LOAD( "co1chr1.bin", 0x080000, 0x80000, CRC(0149de65) SHA1(36d42e56251c850e26ee2253cebf62682ac7516f) )
ROM_LOAD( "co1chr2.bin", 0x100000, 0x80000, CRC(93d565a0) SHA1(c6e993dc77c5a30daee5de4363454e2ccf3bd02d) )
ROM_LOAD( "co1chr3.bin", 0x180000, 0x80000, CRC(4d971364) SHA1(579f7e37bfa37b8b152ac44cdfe712c2ec2cda8b) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
ROM_LOAD( "co1roz0.bin", 0x000000, 0x80000, CRC(2bea6951) SHA1(273e3e8ccb042ec794b1709d6626603c8a39a73a) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
ROM_LOAD( "co1sha0.bin", 0x000000, 0x80000, CRC(063a70cc) SHA1(c3179d55d57c47d3fef49d45e45b88c4d8250548) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "co1dat0.bin", 0x000000, CRC(b53da2ae) SHA1(a7fe63668d50928d5d2e2249a5f377c7e8dfc6a5) )
NAMCOS2_DATA_LOAD_O_128K( "co1dat1.bin", 0x000000, CRC(d21ad10b) SHA1(dcf2d4cc048ea57507952a9a35390af7de5cfe34) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "co1voi1.bin", 0x000000, 0x080000, CRC(b5ba8f15) SHA1(9e54b9ba1cd44353782adf337376dff9eec4e937) )
ROM_LOAD( "co1voi2.bin", 0x080000, 0x080000, CRC(b566b105) SHA1(b5530b0f3dea0135f28419044aee923d855f382c) )
ROM_END
/* DIRT FOX (JAPAN) */
ROM_START( dirtfoxj )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "df1_mpr0.bin", 0x000000, 0x020000, CRC(8386c820) SHA1(a30f4e1b34d3a8294b42960fee6753c4a157e0a0) )
ROM_LOAD16_BYTE( "df1_mpr1.bin", 0x000001, 0x020000, CRC(51085728) SHA1(04ce7bd625f50bdf8f204d89b873072e5f48de20) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "df1_spr0.bin", 0x000000, 0x020000, CRC(d4906585) SHA1(b205663f60f682f2e645c2a0118c7bf14d2b0651) )
ROM_LOAD16_BYTE( "df1_spr1.bin", 0x000001, 0x020000, CRC(7d76cf57) SHA1(cd13deb8131f87fd9bbf5caa8b3d6f88bc8d4d7d) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "df1_snd0.bin", 0x000000, 0x020000, CRC(66b4f3ab) SHA1(b165b2b222c0ce62a16f09e4a0741ca8459b624d) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "df1_obj0.bin", 0x000000, 0x80000, CRC(b6bd1a68) SHA1(38677b54cd257411db499ba03b9176422797bf64) )
ROM_LOAD( "df1_obj1.bin", 0x080000, 0x80000, CRC(05421dc1) SHA1(d538bb33b1ec1a3ad0feaa75d69a7a327c7dc6fa) )
ROM_LOAD( "df1_obj2.bin", 0x100000, 0x80000, CRC(9390633e) SHA1(91d1a7f2c981c893e4c5d0c6c7199646b86bd1e0) )
ROM_LOAD( "df1_obj3.bin", 0x180000, 0x80000, CRC(c8447b33) SHA1(1f62af3a8b16915adf993ed675cba368f13d4acf) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "df1_chr0.bin", 0x000000, CRC(4b10e4ed) SHA1(b3c56f712b05837590d25dfa7535b0f63cbd61c5) )
NAMCOS2_GFXROM_LOAD_128K( "df1_chr1.bin", 0x080000, CRC(8f63f3d6) SHA1(4432b611550e6890bc351a0db7a90deabe489824) )
NAMCOS2_GFXROM_LOAD_128K( "df1_chr2.bin", 0x100000, CRC(5a1b852a) SHA1(84cbfc04614ed85fdf0efe5ab10d1b6e86bea028) )
NAMCOS2_GFXROM_LOAD_128K( "df1_chr3.bin", 0x180000, CRC(28570676) SHA1(2a0c90839fda6153f6fe42a759d51293998034e2) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
NAMCOS2_GFXROM_LOAD_256K( "df1_roz0.bin", 0x000000, CRC(a6129f94) SHA1(5c6f36dce703d985704676948999c81374ac1856) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz1.bin", 0x080000, CRC(c8e7ce73) SHA1(7e113a56c6c115c251bf8b17d763c8955757edd2) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz2.bin", 0x100000, CRC(c598e923) SHA1(67b8d74c7a44a896d842271842bb5d2b26d565be) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz3.bin", 0x180000, CRC(5a38b062) SHA1(ed80b2abcd8d271a42426f8282a9d413c2329705) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz4.bin", 0x200000, CRC(e196d2e8) SHA1(bc2756c37209766681b31fcef867462a888b2deb) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz5.bin", 0x280000, CRC(1f8a1a3c) SHA1(e0c381685135857fb5b81e5e1259f1bec018e2c1) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz6.bin", 0x300000, CRC(7f3a1ed9) SHA1(df62bc3a236046b73b296cb396f6e7ee6861de09) )
NAMCOS2_GFXROM_LOAD_256K( "df1_roz7.bin", 0x380000, CRC(dd546ae8) SHA1(a5b50b4e8027027ec272ed5c71c7bff4b03e9f92) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "df1_sha.bin", 0x000000, CRC(9a7c9a9b) SHA1(06221ae8d3f6bebbb5a7ab2eaaf35b9922389115) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_256K( "df1_dat0.bin", 0x000000, CRC(f5851c85) SHA1(e99c05891622cdaab394630b7b2678968e6761d7) )
NAMCOS2_DATA_LOAD_O_256K( "df1_dat1.bin", 0x000000, CRC(1a31e46b) SHA1(4be7115893b27d6a3dc38c97dcb41eafebb423cd) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "df1_voi1.bin", 0x000000, 0x080000, CRC(15053904) SHA1(b8ca7e5e53249dbee8284ce1e5c0e6438e64b2cf) )
ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration */
ROM_LOAD( "nvram", 0x000000, 0x2000, CRC(4b9f7b06) SHA1(384496d2d80a48d31084dc316ebae3a5c1aa1ab9) )
ROM_END
/* DRAGON SABER */
ROM_START( dsaber )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "do2 mpr0.mpr0", 0x000000, 0x020000, CRC(a4c9ff34) SHA1(bf9310f1ab2f45ec01d6fa19e7d2e1d2a802dd2a) )
ROM_LOAD16_BYTE( "do2 mpr1.mpr1", 0x000001, 0x020000, CRC(2a89e794) SHA1(d9548e14a915b7bfab87292f03bdfd884438b49b) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "do1 spr0.spr0", 0x000000, 0x010000, CRC(013faf80) SHA1(2cb086e9bb6a551e9fc185c40b976989f758cc57) )
ROM_LOAD16_BYTE( "do1 spr1.spr1", 0x000001, 0x010000, CRC(c36242bb) SHA1(776f0ab4b2798bc7fc293e27a455675c01ff3132) )
ROM_REGION( 0x040000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "do1 snd0.snd0", 0x000000, 0x020000, CRC(af5b1ff8) SHA1(fc2a104788f081e4d2ddd22c586e541d6c5b5d69) )
ROM_LOAD( "do1 snd1.snd1", 0x020000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
ROM_LOAD( "do obj-1a.obj1", 0x080000, 0x80000, CRC(34e0810d) SHA1(679d9b82879cff5197a5098e5dc724c85373b9dc) )
ROM_LOAD( "do obj-2a.obj2", 0x100000, 0x80000, CRC(bccdabf3) SHA1(d079d89083ac6e71ac8926792d0d7cdcebc848a9) )
ROM_LOAD( "do obj-3a.obj3", 0x180000, 0x80000, CRC(2a60a4b8) SHA1(5923e08121ad27629bd917d890e037e888e6d356) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "do chr-0a.chr0", 0x000000, 0x80000, CRC(c6058df6) SHA1(13bacad6d593aa5533161e410e22f351c77f29c4) )
ROM_LOAD( "do chr-1a.chr1", 0x080000, 0x80000, CRC(67aaab36) SHA1(3abb7e226badcfe016325d42c40f06ee020124e3) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
ROM_LOAD( "roz0.bin", 0x000000, 0x80000, CRC(32aab758) SHA1(a3220c2a02b9d8bdd95004d36d2aa5ddf57adfbb) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
ROM_LOAD( "do voi-2a.voice2", 0x080000, 0x080000, CRC(81078e01) SHA1(adc70506b21b9a12eadd2f3fd1e920c2eb27c36e) )
ROM_REGION( 0x0500, "plds", 0 )
ROM_LOAD( "pal16l8a.4g", 0x0000, 0x0104, CRC(660e1655) SHA1(ffb43238c5ffa3fa831975bc3cde72334c4c2540) )
ROM_LOAD( "pal16l8a.5f", 0x0200, 0x0104, CRC(18f43c22) SHA1(72849c5b842678bb9037541d26d4c99cdf879982) )
ROM_LOAD( "pal12l10.8d", 0x0400, 0x0040, CRC(e2379249) SHA1(ad4cdf2e0fd1304a135022eeafa2f61c5f5789cd) )
ROM_END
/* DRAGON SABER */
ROM_START( dsabera )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "mpr0.bin", 0x000000, 0x020000, CRC(45309ddc) SHA1(53b63046b0e5178695c998a0956667f4cf4204f2) )
ROM_LOAD16_BYTE( "mpr1.bin", 0x000001, 0x020000, CRC(cbfc4cba) SHA1(2037119f28af2b6a4af9e2019506ad7fccfa3113) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "do1 spr0.spr0", 0x000000, 0x010000, CRC(013faf80) SHA1(2cb086e9bb6a551e9fc185c40b976989f758cc57) )
ROM_LOAD16_BYTE( "do1 spr1.spr1", 0x000001, 0x010000, CRC(c36242bb) SHA1(776f0ab4b2798bc7fc293e27a455675c01ff3132) )
ROM_REGION( 0x040000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "do1 snd0.snd0", 0x000000, 0x020000, CRC(af5b1ff8) SHA1(fc2a104788f081e4d2ddd22c586e541d6c5b5d69) )
ROM_LOAD( "do1 snd1.snd1", 0x020000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
ROM_LOAD( "do obj-1a.obj1", 0x080000, 0x80000, CRC(34e0810d) SHA1(679d9b82879cff5197a5098e5dc724c85373b9dc) )
ROM_LOAD( "do obj-2a.obj2", 0x100000, 0x80000, CRC(bccdabf3) SHA1(d079d89083ac6e71ac8926792d0d7cdcebc848a9) )
ROM_LOAD( "do obj-3a.obj3", 0x180000, 0x80000, CRC(2a60a4b8) SHA1(5923e08121ad27629bd917d890e037e888e6d356) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "do chr-0a.chr0", 0x000000, 0x80000, CRC(c6058df6) SHA1(13bacad6d593aa5533161e410e22f351c77f29c4) )
ROM_LOAD( "do chr-1a.chr1", 0x080000, 0x80000, CRC(67aaab36) SHA1(3abb7e226badcfe016325d42c40f06ee020124e3) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
ROM_LOAD( "roz0.bin", 0x000000, 0x80000, CRC(32aab758) SHA1(a3220c2a02b9d8bdd95004d36d2aa5ddf57adfbb) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
ROM_LOAD( "do voi-2a.voice2", 0x080000, 0x080000, CRC(81078e01) SHA1(adc70506b21b9a12eadd2f3fd1e920c2eb27c36e) )
ROM_REGION( 0x0500, "plds", 0 )
ROM_LOAD( "pal16l8a.4g", 0x0000, 0x0104, CRC(660e1655) SHA1(ffb43238c5ffa3fa831975bc3cde72334c4c2540) )
ROM_LOAD( "pal16l8a.5f", 0x0200, 0x0104, CRC(18f43c22) SHA1(72849c5b842678bb9037541d26d4c99cdf879982) )
ROM_LOAD( "pal12l10.8d", 0x0400, 0x0040, CRC(e2379249) SHA1(ad4cdf2e0fd1304a135022eeafa2f61c5f5789cd) )
ROM_END
/* DRAGON SABER (JAPAN) */
ROM_START( dsaberj )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "do1 mpr0b.mor0", 0x000000, 0x020000, CRC(2898e791) SHA1(9f4fd4899897cfb7c8f918abc2070e1ac4169f5d) )
ROM_LOAD16_BYTE( "do1 mpr1b.mpr1", 0x000001, 0x020000, CRC(5fa9778e) SHA1(3beeb73a42e6afdf866a88618aa03fe8934ec2aa) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "do1 spr0.spr0", 0x000000, 0x010000, CRC(013faf80) SHA1(2cb086e9bb6a551e9fc185c40b976989f758cc57) )
ROM_LOAD16_BYTE( "do1 spr1.spr1", 0x000001, 0x010000, CRC(c36242bb) SHA1(776f0ab4b2798bc7fc293e27a455675c01ff3132) )
ROM_REGION( 0x040000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "do1 snd0.snd0", 0x000000, 0x020000, CRC(af5b1ff8) SHA1(fc2a104788f081e4d2ddd22c586e541d6c5b5d69) )
ROM_LOAD( "do1 snd1.snd1", 0x020000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
ROM_LOAD( "do obj-1a.obj1", 0x080000, 0x80000, CRC(34e0810d) SHA1(679d9b82879cff5197a5098e5dc724c85373b9dc) )
ROM_LOAD( "do obj-2a.obj2", 0x100000, 0x80000, CRC(bccdabf3) SHA1(d079d89083ac6e71ac8926792d0d7cdcebc848a9) )
ROM_LOAD( "do obj-3a.obj3", 0x180000, 0x80000, CRC(2a60a4b8) SHA1(5923e08121ad27629bd917d890e037e888e6d356) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "do chr-0a.chr0", 0x000000, 0x80000, CRC(c6058df6) SHA1(13bacad6d593aa5533161e410e22f351c77f29c4) )
ROM_LOAD( "do chr-1a.chr1", 0x080000, 0x80000, CRC(67aaab36) SHA1(3abb7e226badcfe016325d42c40f06ee020124e3) )
ROM_REGION( 0x400000, "s2roz", 0 ) /* ROZ Tiles */
ROM_LOAD( "roz0.bin", 0x000000, 0x80000, CRC(32aab758) SHA1(a3220c2a02b9d8bdd95004d36d2aa5ddf57adfbb) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
ROM_LOAD( "shape.bin", 0x000000, 0x80000, CRC(698e7a3e) SHA1(4d41bf0242626ca1448d1f650c84b5987a7f6597) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_128K( "do1 dat0.data0", 0x000000, CRC(3e53331f) SHA1(3dd4c133f587361f30ab1b890f5b05749d5838e3) )
NAMCOS2_DATA_LOAD_O_128K( "do1 dat1.data1", 0x000000, CRC(d5427f11) SHA1(af8d8153dc60044616a6b0571831c53c09fefda1) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "do voi-1a.voice1", 0x000000, 0x080000, CRC(dadf6a57) SHA1(caba21fc6b62d140f6d8231411ce82ae0ad2837a) )
ROM_LOAD( "do voi-2a.voice2", 0x080000, 0x080000, CRC(81078e01) SHA1(adc70506b21b9a12eadd2f3fd1e920c2eb27c36e) )
ROM_REGION( 0x0500, "plds", 0 )
ROM_LOAD( "pal16l8a.4g", 0x0000, 0x0104, CRC(660e1655) SHA1(ffb43238c5ffa3fa831975bc3cde72334c4c2540) )
ROM_LOAD( "pal16l8a.5f", 0x0200, 0x0104, CRC(18f43c22) SHA1(72849c5b842678bb9037541d26d4c99cdf879982) )
ROM_LOAD( "pal12l10.8d", 0x0400, 0x0040, CRC(e2379249) SHA1(ad4cdf2e0fd1304a135022eeafa2f61c5f5789cd) )
ROM_END
/* FINAL LAP (REV E) */
ROM_START( finallap )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fl2mp0e", 0x000000, 0x010000, CRC(ed805674) SHA1(1d3f391a736303677c69438e5dd0919d0df9aec7) )
ROM_LOAD16_BYTE( "fl2mp1e", 0x000001, 0x010000, CRC(4c1d523b) SHA1(2aa096008f115c0c45bc930c8c7d514e824686f1) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fl1-sp0", 0x000000, 0x010000, CRC(2c5ff15d) SHA1(762b49016e8688a3b323b85bc4009b1745f86a3f) )
ROM_LOAD16_BYTE( "fl1-sp1", 0x000001, 0x010000, CRC(ea9d1a2e) SHA1(37f96306c49475bf45157f768c9173a057bade20) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "fl1-s0b", 0x000000, 0x020000, CRC(f5d76989) SHA1(05c45ccc60fe833cee04f8300620bea5fecc110f) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
ROM_LOAD( "obj-0b", 0x200000, 0x80000, CRC(c6986523) SHA1(1a4b0e95ade6314850b6e44f2debda0ab6e91397) )
ROM_LOAD( "obj-1b", 0x280000, 0x80000, CRC(6af7d284) SHA1(c74f975c301ff15040be1b38359624ec9c83ac76) )
ROM_LOAD( "obj-2b", 0x300000, 0x80000, CRC(de45ca8d) SHA1(f476ff1719f60d721d55fd1e40e465f48e7ed019) )
ROM_LOAD( "obj-3b", 0x380000, 0x80000, CRC(dba830a2) SHA1(5bd899b39458978dd419bf01082782a02b2d9c20) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "fl1-c0", 0x000000, CRC(cd9d2966) SHA1(39671f846542ba6ae47764674509127cf73e3d71) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c4", 0x200000, CRC(83c77a50) SHA1(a3c19de25819586bdecae46326836090e80a92ee) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c6", 0x300000, CRC(239bd9a0) SHA1(729abe89bea31b4e21161c69579df775b1cba6fe) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl2-sha", 0x000000, CRC(5fda0b6d) SHA1(92c0410e159977ea73a8e8c0cb1321c3056f6c2f) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data ROMs */
/* No DAT files present in ZIP archive */
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fl1-v1", 0x000000, 0x020000, CRC(86b21996) SHA1(833ffde729199c81e472fb88ed5b7f4ce08a83d6) )
ROM_RELOAD( 0x020000, 0x020000 )
ROM_RELOAD( 0x040000, 0x020000 )
ROM_RELOAD( 0x060000, 0x020000 )
ROM_LOAD( "fl1-v2", 0x080000, 0x020000, CRC(6a164647) SHA1(3162457beccccdb416994ebd32fb83b13eb719e0) )
ROM_RELOAD( 0x0a0000, 0x020000 )
ROM_RELOAD( 0x0c0000, 0x020000 )
ROM_RELOAD( 0x0e0000, 0x020000 )
ROM_END
/* FINAL LAP (revision D) */
ROM_START( finallapd )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fl2-mp0d", 0x000000, 0x010000, CRC(3576d3aa) SHA1(4928cfc5c929de8cc5ec12ea87c678188d314c39) )
ROM_LOAD16_BYTE( "fl2-mp1d", 0x000001, 0x010000, CRC(22d3906d) SHA1(63f3076eeefca57daf427633f82fdea353a52da2) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fl1-sp0", 0x000000, 0x010000, CRC(2c5ff15d) SHA1(762b49016e8688a3b323b85bc4009b1745f86a3f) )
ROM_LOAD16_BYTE( "fl1-sp1", 0x000001, 0x010000, CRC(ea9d1a2e) SHA1(37f96306c49475bf45157f768c9173a057bade20) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "fl1-s0b", 0x000000, 0x020000, CRC(f5d76989) SHA1(05c45ccc60fe833cee04f8300620bea5fecc110f) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
ROM_LOAD( "obj-0b", 0x200000, 0x80000, CRC(c6986523) SHA1(1a4b0e95ade6314850b6e44f2debda0ab6e91397) )
ROM_LOAD( "obj-1b", 0x280000, 0x80000, CRC(6af7d284) SHA1(c74f975c301ff15040be1b38359624ec9c83ac76) )
ROM_LOAD( "obj-2b", 0x300000, 0x80000, CRC(de45ca8d) SHA1(f476ff1719f60d721d55fd1e40e465f48e7ed019) )
ROM_LOAD( "obj-3b", 0x380000, 0x80000, CRC(dba830a2) SHA1(5bd899b39458978dd419bf01082782a02b2d9c20) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "fl1-c0", 0x000000, CRC(cd9d2966) SHA1(39671f846542ba6ae47764674509127cf73e3d71) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c4", 0x200000, CRC(83c77a50) SHA1(a3c19de25819586bdecae46326836090e80a92ee) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c6", 0x300000, CRC(239bd9a0) SHA1(729abe89bea31b4e21161c69579df775b1cba6fe) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl2-sha", 0x000000, CRC(5fda0b6d) SHA1(92c0410e159977ea73a8e8c0cb1321c3056f6c2f) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data ROMs */
/* No DAT files present in ZIP archive */
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fl1-v1", 0x000000, 0x020000, CRC(86b21996) SHA1(833ffde729199c81e472fb88ed5b7f4ce08a83d6) )
ROM_RELOAD( 0x020000, 0x020000 )
ROM_RELOAD( 0x040000, 0x020000 )
ROM_RELOAD( 0x060000, 0x020000 )
ROM_LOAD( "fl1-v2", 0x080000, 0x020000, CRC(6a164647) SHA1(3162457beccccdb416994ebd32fb83b13eb719e0) )
ROM_RELOAD( 0x0a0000, 0x020000 )
ROM_RELOAD( 0x0c0000, 0x020000 )
ROM_RELOAD( 0x0e0000, 0x020000 )
ROM_END
/* FINAL LAP (revision C) */
ROM_START( finallapc )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fl2-mp0c", 0x000000, 0x010000, CRC(f667f2c9) SHA1(79096bd600c001b21020ddf468e55c34dad9f1eb) )
ROM_LOAD16_BYTE( "fl2-mp1c", 0x000001, 0x010000, CRC(b8615d33) SHA1(f72ce75047cf41d47684d6657aa3bd1b00f68056) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fl1-sp0", 0x000000, 0x010000, CRC(2c5ff15d) SHA1(762b49016e8688a3b323b85bc4009b1745f86a3f) )
ROM_LOAD16_BYTE( "fl1-sp1", 0x000001, 0x010000, CRC(ea9d1a2e) SHA1(37f96306c49475bf45157f768c9173a057bade20) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "fl1-s0", 0x000000, 0x020000, CRC(1f8ff494) SHA1(10a90291159e29a905c6d438aa2bc98ccf906a69) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
ROM_LOAD( "obj-0b", 0x200000, 0x80000, CRC(c6986523) SHA1(1a4b0e95ade6314850b6e44f2debda0ab6e91397) )
ROM_LOAD( "obj-1b", 0x280000, 0x80000, CRC(6af7d284) SHA1(c74f975c301ff15040be1b38359624ec9c83ac76) )
ROM_LOAD( "obj-2b", 0x300000, 0x80000, CRC(de45ca8d) SHA1(f476ff1719f60d721d55fd1e40e465f48e7ed019) )
ROM_LOAD( "obj-3b", 0x380000, 0x80000, CRC(dba830a2) SHA1(5bd899b39458978dd419bf01082782a02b2d9c20) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "fl1-c0", 0x000000, CRC(cd9d2966) SHA1(39671f846542ba6ae47764674509127cf73e3d71) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c4", 0x200000, CRC(83c77a50) SHA1(a3c19de25819586bdecae46326836090e80a92ee) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
NAMCOS2_GFXROM_LOAD_128K( "fl2-c6", 0x300000, CRC(239bd9a0) SHA1(729abe89bea31b4e21161c69579df775b1cba6fe) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl2-sha", 0x000000, CRC(5fda0b6d) SHA1(92c0410e159977ea73a8e8c0cb1321c3056f6c2f) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data ROMs */
/* No DAT files present in ZIP archive */
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fl1-v1", 0x000000, 0x020000, CRC(86b21996) SHA1(833ffde729199c81e472fb88ed5b7f4ce08a83d6) )
ROM_RELOAD( 0x020000, 0x020000 )
ROM_RELOAD( 0x040000, 0x020000 )
ROM_RELOAD( 0x060000, 0x020000 )
ROM_LOAD( "fl1-v2", 0x080000, 0x020000, CRC(6a164647) SHA1(3162457beccccdb416994ebd32fb83b13eb719e0) )
ROM_RELOAD( 0x0a0000, 0x020000 )
ROM_RELOAD( 0x0c0000, 0x020000 )
ROM_RELOAD( 0x0e0000, 0x020000 )
ROM_END
/* FINAL LAP (Rev C - Japan) */
ROM_START( finallapjc )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fl1_mp0c.bin", 0x000000, 0x010000, CRC(63cd7304) SHA1(f9342a03b6e3c599946fec1690f34be2d0fe0307) )
ROM_LOAD16_BYTE( "fl1_mp1c.bin", 0x000001, 0x010000, CRC(cc9c5fb6) SHA1(7da82f5c8c1574c92432ee003c8433b7dde9d393) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fl1-sp0", 0x000000, 0x010000, CRC(2c5ff15d) SHA1(762b49016e8688a3b323b85bc4009b1745f86a3f) )
ROM_LOAD16_BYTE( "fl1-sp1", 0x000001, 0x010000, CRC(ea9d1a2e) SHA1(37f96306c49475bf45157f768c9173a057bade20) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "fl1-s0b", 0x000000, 0x020000, CRC(f5d76989) SHA1(05c45ccc60fe833cee04f8300620bea5fecc110f) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
ROM_LOAD( "obj-0b", 0x200000, 0x80000, CRC(c6986523) SHA1(1a4b0e95ade6314850b6e44f2debda0ab6e91397) )
ROM_LOAD( "obj-1b", 0x280000, 0x80000, CRC(6af7d284) SHA1(c74f975c301ff15040be1b38359624ec9c83ac76) )
ROM_LOAD( "obj-2b", 0x300000, 0x80000, CRC(de45ca8d) SHA1(f476ff1719f60d721d55fd1e40e465f48e7ed019) )
ROM_LOAD( "obj-3b", 0x380000, 0x80000, CRC(dba830a2) SHA1(5bd899b39458978dd419bf01082782a02b2d9c20) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "fl1-c0", 0x000000, CRC(cd9d2966) SHA1(39671f846542ba6ae47764674509127cf73e3d71) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c4", 0x200000, CRC(cdc1de2e) SHA1(701dcc4fc25e7b6118947a5accabd43c0475ebe9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c6", 0x300000, CRC(8e78a3c3) SHA1(d1cd7fad038d52430f933b3ee2440554d2aeade9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl1_sha.bin", 0x000000, CRC(b7e1c7a3) SHA1(b82f9b340d95b80a12286647adba8c139b4d081a) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data ROMs */
/* No DAT files present in ZIP archive */
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fl1-v1", 0x000000, 0x020000, CRC(86b21996) SHA1(833ffde729199c81e472fb88ed5b7f4ce08a83d6) )
ROM_RELOAD( 0x020000, 0x020000 )
ROM_RELOAD( 0x040000, 0x020000 )
ROM_RELOAD( 0x060000, 0x020000 )
ROM_LOAD( "fl1-v2", 0x080000, 0x020000, CRC(6a164647) SHA1(3162457beccccdb416994ebd32fb83b13eb719e0) )
ROM_RELOAD( 0x0a0000, 0x020000 )
ROM_RELOAD( 0x0c0000, 0x020000 )
ROM_RELOAD( 0x0e0000, 0x020000 )
ROM_END
/* FINAL LAP (REV B - JAPAN) */
ROM_START( finallapjb )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fl1_mp0b.bin", 0x000000, 0x010000, CRC(870a482a) SHA1(776afe0206385732f9bcad4a75399ad7cc8fcda1) )
ROM_LOAD16_BYTE( "fl1_mp1b.bin", 0x000001, 0x010000, CRC(af52c991) SHA1(23d440cc0f53872739fce1d0837ef906a5e75f98) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fl1-sp0", 0x000000, 0x010000, CRC(2c5ff15d) SHA1(762b49016e8688a3b323b85bc4009b1745f86a3f) )
ROM_LOAD16_BYTE( "fl1-sp1", 0x000001, 0x010000, CRC(ea9d1a2e) SHA1(37f96306c49475bf45157f768c9173a057bade20) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "fl1-s0", 0x000000, 0x020000, CRC(1f8ff494) SHA1(10a90291159e29a905c6d438aa2bc98ccf906a69) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
ROM_LOAD( "obj-0b", 0x200000, 0x80000, CRC(c6986523) SHA1(1a4b0e95ade6314850b6e44f2debda0ab6e91397) )
ROM_LOAD( "obj-1b", 0x280000, 0x80000, CRC(6af7d284) SHA1(c74f975c301ff15040be1b38359624ec9c83ac76) )
ROM_LOAD( "obj-2b", 0x300000, 0x80000, CRC(de45ca8d) SHA1(f476ff1719f60d721d55fd1e40e465f48e7ed019) )
ROM_LOAD( "obj-3b", 0x380000, 0x80000, CRC(dba830a2) SHA1(5bd899b39458978dd419bf01082782a02b2d9c20) )
ROM_REGION( 0x400000, "c123tmap", 0 ) /* Tiles */
NAMCOS2_GFXROM_LOAD_128K( "fl1-c0", 0x000000, CRC(cd9d2966) SHA1(39671f846542ba6ae47764674509127cf73e3d71) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c4", 0x200000, CRC(cdc1de2e) SHA1(701dcc4fc25e7b6118947a5accabd43c0475ebe9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c6", 0x300000, CRC(8e78a3c3) SHA1(d1cd7fad038d52430f933b3ee2440554d2aeade9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl1_sha.bin", 0x000000, CRC(b7e1c7a3) SHA1(b82f9b340d95b80a12286647adba8c139b4d081a) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data ROMs */
/* No DAT files present in ZIP archive */
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "fl1-v1", 0x000000, 0x020000, CRC(86b21996) SHA1(833ffde729199c81e472fb88ed5b7f4ce08a83d6) )
ROM_RELOAD( 0x020000, 0x020000 )
ROM_RELOAD( 0x040000, 0x020000 )
ROM_RELOAD( 0x060000, 0x020000 )
ROM_LOAD( "fl1-v2", 0x080000, 0x020000, CRC(6a164647) SHA1(3162457beccccdb416994ebd32fb83b13eb719e0) )
ROM_RELOAD( 0x0a0000, 0x020000 )
ROM_RELOAD( 0x0c0000, 0x020000 )
ROM_RELOAD( 0x0e0000, 0x020000 )
ROM_END
ROM_START( finalap2 )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fls2mp0b", 0x000000, 0x020000, CRC(97b48aae) SHA1(03774b642c5a8186e443ad4138a9e86a931a2199) )
ROM_LOAD16_BYTE( "fls2mp1b", 0x000001, 0x020000, CRC(c9f3e0e7) SHA1(4127e373239e4ca31b5fa8b71d8f10b7d7ed93c2) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fls2sp0b", 0x000000, 0x020000, CRC(8bf15d9c) SHA1(b6c14a9d06e99d03636fd6eb2163a18e2bbcc4b1) )
ROM_LOAD16_BYTE( "fls2sp1b", 0x000001, 0x020000, CRC(c1a31086) SHA1(55317b72a219ffbfe00bf62ad2a635790d56f84e) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "flss0", 0x000000, 0x020000, CRC(c07cc10a) SHA1(012f19a8014a77fdf0409241c0223b2c0c247357) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) )
ROM_LOAD( "fl2obj2", 0x080000, 0x80000, CRC(8ac933fd) SHA1(b158df2ec55f49ec05861075c8d7bd265361dab0) )
ROM_LOAD( "fl2obj4", 0x100000, 0x80000, CRC(e7b989e6) SHA1(485e8148510edd1645f5b4fbbc9a53e8bf1c3e5f) )
ROM_LOAD( "fl2obj6", 0x180000, 0x80000, CRC(4936583d) SHA1(0145e89fdb5db28cb8f8ce59572729e83d8fad7c) )
ROM_LOAD( "fl2obj1", 0x200000, 0x80000, CRC(3cebf419) SHA1(bfdf1b768920e55850173a5bcd1007608e1a4f56) )
ROM_LOAD( "fl2obj3", 0x280000, 0x80000, CRC(0959ed55) SHA1(00e640d449cb47da0e65baa798743395c7a1f632) )
ROM_LOAD( "fl2obj5", 0x300000, 0x80000, CRC(d74ae0d3) SHA1(96c9798378da7bdc127ed7d02a4dd14dfd142550) )
ROM_LOAD( "fl2obj7", 0x380000, 0x80000, CRC(5ca68c93) SHA1(fa326992338843ccfa458a5b85ba58537da666d0) )
ROM_REGION( 0x200000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "fls2chr0", 0x000000, 0x40000, CRC(7bbda499) SHA1(cf6ff072a40063cbe41eae1f60b29447a0020926) )
ROM_LOAD( "fls2chr1", 0x040000, 0x40000, CRC(ac8940e5) SHA1(449687d38cf830445df713ed4d675ed94ca5b375) )
ROM_LOAD( "fls2chr2", 0x080000, 0x40000, CRC(1756173d) SHA1(c912163979098387aea9a0580e9ca55c1f7275f3) )
ROM_LOAD( "fls2chr3", 0x0c0000, 0x40000, CRC(69032785) SHA1(cfcd12bea730f724444188c206adcdb5e755eb7d) )
ROM_LOAD( "fls2chr4", 0x100000, 0x40000, CRC(8216cf42) SHA1(79820435584d769b63649b554574486dbcd6f468) )
ROM_LOAD( "fls2chr5", 0x140000, 0x40000, CRC(dc3e8e1c) SHA1(a7968cfa0ca2639364507b42526f10cf1b2000f4) )
ROM_LOAD( "fls2chr6", 0x180000, 0x40000, CRC(1ef4bdde) SHA1(ceb36c021450efa4cb0fee278fa0b9d65f7d1f05) )
ROM_LOAD( "fls2chr7", 0x1c0000, 0x40000, CRC(53dafcde) SHA1(f9d9460349b34bda95b8c206af7ce2347c951214) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_256K( "fls2dat0", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
NAMCOS2_DATA_LOAD_O_256K( "fls2dat1", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "flsvoi1", 0x000000, 0x080000, CRC(590be52f) SHA1(9ef2728dd533979b6019b422fc4961a6085428b4) )
ROM_LOAD( "flsvoi2", 0x080000, 0x080000, CRC(204b3c27) SHA1(80cd13bfe2a4b3039b4a120b905674e46b8b3b9c) )
ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration */
ROM_LOAD( "finalap2.nv", 0x000000, 0x2000, CRC(c7ae5d0a) SHA1(9527e44accec0ec9d1990138d1b0bfc71957cc8a) )
ROM_END
/* FINAL LAP 2 (Japan) */
ROM_START( finalap2j )
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "fls1_mp0.bin", 0x000000, 0x020000, CRC(05ea8090) SHA1(edd3d8780e9f849f45fff1593821aed6b7711a57) )
ROM_LOAD16_BYTE( "fls1_mp1.bin", 0x000001, 0x020000, CRC(fb189f50) SHA1(9436aea727adf9e11e8061d0ded4e4b00df90b70) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "fls2sp0b", 0x000000, 0x020000, CRC(8bf15d9c) SHA1(b6c14a9d06e99d03636fd6eb2163a18e2bbcc4b1) )
ROM_LOAD16_BYTE( "fls2sp1b", 0x000001, 0x020000, CRC(c1a31086) SHA1(55317b72a219ffbfe00bf62ad2a635790d56f84e) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "flss0", 0x000000, 0x020000, CRC(c07cc10a) SHA1(012f19a8014a77fdf0409241c0223b2c0c247357) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) )
ROM_LOAD( "fl2obj2", 0x080000, 0x80000, CRC(8ac933fd) SHA1(b158df2ec55f49ec05861075c8d7bd265361dab0) )
ROM_LOAD( "fl2obj4", 0x100000, 0x80000, CRC(e7b989e6) SHA1(485e8148510edd1645f5b4fbbc9a53e8bf1c3e5f) )
ROM_LOAD( "fl2obj6", 0x180000, 0x80000, CRC(4936583d) SHA1(0145e89fdb5db28cb8f8ce59572729e83d8fad7c) )
ROM_LOAD( "fl2obj1", 0x200000, 0x80000, CRC(3cebf419) SHA1(bfdf1b768920e55850173a5bcd1007608e1a4f56) )
ROM_LOAD( "fl2obj3", 0x280000, 0x80000, CRC(0959ed55) SHA1(00e640d449cb47da0e65baa798743395c7a1f632) )
ROM_LOAD( "fl2obj5", 0x300000, 0x80000, CRC(d74ae0d3) SHA1(96c9798378da7bdc127ed7d02a4dd14dfd142550) )
ROM_LOAD( "fl2obj7", 0x380000, 0x80000, CRC(5ca68c93) SHA1(fa326992338843ccfa458a5b85ba58537da666d0) )
// The Japanese version should not be using the same ROMs as the World version here, causes corrupt text in attract mode should probably be fls1
ROM_REGION( 0x200000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "fls2chr0", 0x000000, 0x40000, BAD_DUMP CRC(7bbda499) SHA1(cf6ff072a40063cbe41eae1f60b29447a0020926) )
ROM_LOAD( "fls2chr1", 0x040000, 0x40000, BAD_DUMP CRC(ac8940e5) SHA1(449687d38cf830445df713ed4d675ed94ca5b375) )
ROM_LOAD( "fls2chr2", 0x080000, 0x40000, BAD_DUMP CRC(1756173d) SHA1(c912163979098387aea9a0580e9ca55c1f7275f3) )
ROM_LOAD( "fls2chr3", 0x0c0000, 0x40000, BAD_DUMP CRC(69032785) SHA1(cfcd12bea730f724444188c206adcdb5e755eb7d) )
ROM_LOAD( "fls2chr4", 0x100000, 0x40000, BAD_DUMP CRC(8216cf42) SHA1(79820435584d769b63649b554574486dbcd6f468) )
ROM_LOAD( "fls2chr5", 0x140000, 0x40000, BAD_DUMP CRC(dc3e8e1c) SHA1(a7968cfa0ca2639364507b42526f10cf1b2000f4) )
ROM_LOAD( "fls2chr6", 0x180000, 0x40000, BAD_DUMP CRC(1ef4bdde) SHA1(ceb36c021450efa4cb0fee278fa0b9d65f7d1f05) )
ROM_LOAD( "fls2chr7", 0x1c0000, 0x40000, BAD_DUMP CRC(53dafcde) SHA1(f9d9460349b34bda95b8c206af7ce2347c951214) )
ROM_REGION( 0x080000, "c123tmap:mask", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, BAD_DUMP CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data ROMs */
NAMCOS2_DATA_LOAD_E_256K( "fls2dat0", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
NAMCOS2_DATA_LOAD_O_256K( "fls2dat1", 0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
ROM_LOAD( "flsvoi1", 0x000000, 0x080000, CRC(590be52f) SHA1(9ef2728dd533979b6019b422fc4961a6085428b4) )
ROM_LOAD( "flsvoi2", 0x080000, 0x080000, CRC(204b3c27) SHA1(80cd13bfe2a4b3039b4a120b905674e46b8b3b9c) )
ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration */
ROM_LOAD( "finalap2.nv", 0x000000, 0x2000, CRC(c7ae5d0a) SHA1(9527e44accec0ec9d1990138d1b0bfc71957cc8a) )
ROM_END
/* FINAL LAP 3 WORLD (REV. C) */
ROM_START( finalap3 ) // this set displays MOTION (Ver. 3) in the test mode menu
ROM_REGION( 0x040000, "maincpu", 0 ) /* Master CPU */
ROM_LOAD16_BYTE( "flt2_mpr0c.11d", 0x000000, 0x020000, CRC(9ff361ff) SHA1(0a197f5a3e9a03455cd5afe6979587baf757973f) )
ROM_LOAD16_BYTE( "flt2_mpr1c.13d", 0x000001, 0x020000, CRC(17efb7f2) SHA1(74940950b8b1a3353a130846937c9f651be3f335) )
ROM_REGION( 0x040000, "slave", 0 ) /* Slave CPU */
ROM_LOAD16_BYTE( "flt1_sp0.11k", 0x000000, 0x020000, CRC(e804ced1) SHA1(b31e1fddd202ba503b28455a270e8d45a348dc2e) )
ROM_LOAD16_BYTE( "flt1_sp1.13k", 0x000001, 0x020000, CRC(3a2b24ee) SHA1(e4f16f30516dab13cc8b1cb6c80ec1df129f8851) )
ROM_REGION( 0x020000, "audiocpu", 0 ) /* Sound CPU (Banked) */
ROM_LOAD( "flt1_snd0.7j", 0x000000, 0x020000, CRC(60b72aed) SHA1(f12e157ae5e9f373ba1d75012b869b1c4ad9fb00) )
ROM_REGION( 0x8000, "c68mcu:external", ROMREGION_ERASE00 ) /* C68 (M37450) I/O MCU program */
/* external ROM not populated, unclear how it would map */
ROM_REGION( 0x400000, "sprite", 0 ) /* Sprites */
ROM_LOAD( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
ROM_LOAD( "flt_obj-2.4a", 0x080000, 0x80000, CRC(2a3b7ded) SHA1(455d9d6cf7d497687f93af899fc20bbff6129391) )
ROM_LOAD( "flt_obj-4.8c", 0x100000, 0x80000, CRC(84aa500c) SHA1(087c0089478a270154f50f3b0f001428e80d74c7) )
ROM_LOAD( "flt_obj-6.8a", 0x180000, 0x80000, CRC(33118e63) SHA1(126cc034909e05da953a1a67d6c0f18f5304b407) )
ROM_LOAD( "flt_obj-1.2c", 0x200000, 0x80000, CRC(4ef37a51) SHA1(2f43691cfcd852773ae5e1d879f556f232bae877) )
ROM_LOAD( "flt_obj-3.2a", 0x280000, 0x80000, CRC(b86dc7cd) SHA1(25402d7111c1277a618b313d1244c1a567ce458a) )
ROM_LOAD( "flt_obj-5.5c", 0x300000, 0x80000, CRC(6a53e603) SHA1(6087c694e0e30a98c84227991d9c2e9c39c3e9ca) )
ROM_LOAD( "flt_obj-7.6a", 0x380000, 0x80000, CRC(b52a85e2) SHA1(1eea10eb20ae56309397238a52e9ea0756912412) )
ROM_REGION( 0x200000, "c123tmap", 0 ) /* Tiles */
ROM_LOAD( "flt2_chr-0.11n", 0x000000, 0x40000, CRC(5954f270) SHA1(6f26365d89f38d4ab477908f32823e06f1a84e09) )
ROM_LOAD( "fltchr-1.11p", 0x040000, 0x40000, CRC(2e68d13c) SHA1(46bb0628da1f97e0f6865f37e53a01d2e8391255) )
ROM_LOAD( "flt2_chr-2.11r", 0x080000, 0x40000, CRC(98f3b190) SHA1(4858dab070c0c46d37148312664c6a616765c240) )
ROM_LOAD( "fltchr-3.11s", 0x0c0000, 0x40000, CRC(e9b05a1f) SHA1(6b7e08f4f535fb99692920612f751a49c3cd529e) )
ROM_LOAD( "fltchr-4.9n", 0x100000, 0x40000, CRC(5ae43767) SH