summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/namconb1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/namconb1.cpp')
-rw-r--r--src/mame/drivers/namconb1.cpp1981
1 files changed, 1981 insertions, 0 deletions
diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp
new file mode 100644
index 00000000000..2aa577bef7d
--- /dev/null
+++ b/src/mame/drivers/namconb1.cpp
@@ -0,0 +1,1981 @@
+// license:BSD-3-Clause
+// copyright-holders:Phil Stroffolino
+/*
+Namco System NB-1
+
+Notes:
+- tilemap system is identical to Namco System2
+
+ToDo:
+- improve interrupts
+- gunbulet force feedback
+- music tempo is too fast in Nebulas Ray, JLS V-Shoot and the Great Sluggers games
+
+Main CPU : Motorola 68020 32-bit processor @ 25MHz
+Secondary CPUs : C329 + 137 (both custom)
+Custom Graphics Chips : GFX:123,145,156,C116 - Motion Objects:C355,187,C347
+Sound CPU : C75 (Mitsu M37702 with internal ROM)
+PCM Sound chip : C352 (custom)
+I/O Chip : 160 (custom)
+Board composition : Single board
+
+Known games using this hardware:
+- Great Sluggers '93
+- Great Sluggers '94
+- Gun Bullet / Point Blank
+- Nebulas Ray
+- Super World Stadium '95
+- Super World Stadium '96
+- Super World Stadium '97
+- The Outfoxies
+- Mach Breakers
+
+*****************************************************
+
+Gun Bullet (JPN Ver.)
+(c)1994 Namco
+KeyCus.:C386
+
+Note: CPU - Main PCB (NB-1)
+ MEM - MEMEXT OBJ8 PCB at J103 on the main PCB
+ SPR - MEMEXT SPR PCB at location 5B on the main PCB
+
+ - Namco main PCB: NB-1 8634961101, (8634963101)
+ - MEMEXT OBJ8 PCB: 8635902201, (8635902301)
+
+ * - Surface mounted ROMs
+ # - 32 pin DIP Custom IC (16bytes x 16-bit)
+
+Brief hardware overview
+-----------------------
+
+Main processor - MC68EC020FG25 25MHz (100 pin PQFP)
+ - C329 custom (100 pin PQFP)
+ - 137 custom PLD (28 pin NDIP)
+ - C366 Key Custom
+
+Sound processor - C75 custom
+ (PCM) - C352 custom (100 pin PQFP)
+ (control inputs) - 160 custom (80 pin PQFP)
+
+GFX - 123 custom (80 pin PQFP)
+ - 145 custom (80 pin PQFP)
+ - 156 custom (64 pin PQFP)
+ - C116 custom (80 pin PQFP)
+
+Motion Objects - C355 custom (160 pin PQFP)
+ - 187 custom (160 pin PQFP)
+ - C347 custom (80 pin PQFP)
+
+PCB Jumper Settings
+-------------------
+
+Location Setting Alt. Setting
+----------------------------------------
+ JP1 1M 4M
+ JP2 4M 1M
+ JP5 <1M 1M
+ JP6 8M >8M
+ JP7 4M 1M
+ JP8 4M 1M
+ JP9 cON cOFF
+ JP10 24M (MHz) 12M (MHz)
+ JP11 24M (MHz) 28M (MHz)
+ JP12 355 F32
+
+*****************************************************
+
+Super World Stadium '95 (JPN Ver.)
+(c)1986-1993 1995 Namco
+
+Namco NB-1 system
+
+KeyCus.:C393
+
+*****************************************************
+
+Super World Stadium '96 (JPN Ver.)
+(c)1986-1993 1995 1996 Namco
+
+Namco NB-1 system
+
+KeyCus.:C426
+
+*****************************************************
+
+Super World Stadium '97 (JPN Ver.)
+(c)1986-1993 1995 1996 1997 Namco
+
+Namco NB-1 system
+
+KeyCus.:C434
+
+*****************************************************
+
+Great Sluggers Featuring 1994 Team Rosters
+(c)1993 1994 Namco / 1994 MLBPA
+
+Namco NB-1 system
+
+KeyCus.:C359
+
+*****************************************************
+
+--------------------------
+Nebulasray by NAMCO (1994)
+--------------------------
+Location Device File ID Checksum
+-------------------------------------------------
+CPU 13B 27C402 NR1-MPRU B0ED [ MAIN PROG ]
+CPU 15B 27C240 NR1-MPRL 90C4 [ MAIN PROG ]
+SPR 27C1024 NR1-SPR0 99A6 [ SOUND PRG ]
+CPU 5M MB834000B NR1-SHA0 DD59 [ SHAPE ]
+CPU 8J MB838000B NR1-CHR0 22A4 [ CHARACTER ]
+CPU 9J MB838000B NR1-CHR1 19D0 [ CHARACTER ]
+CPU 10J MB838000B NR1-CHR2 B524 [ CHARACTER ]
+CPU 11J MB838000B NR1-CHR3 0AF4 [ CHARACTER ]
+CPU 5J KM2316000 NR1-VOI0 8C41 [ VOICE ]
+MEM IC1 MT26C1600 * NR1-OBJ0L FD7C [ MOTION OBJL ]
+MEM IC3 MT26C1600 * NR1-OBJ1L 7069 [ MOTION OBJL ]
+MEM IC5 MT26C1600 * NR1-OBJ2L 07DC [ MOTION OBJL ]
+MEM IC7 MT26C1600 * NR1-OBJ3L A61E [ MOTION OBJL ]
+MEM IC2 MT26C1600 * NR1-OBJ0U 44D3 [ MOTION OBJU ]
+MEM IC4 MT26C1600 * NR1-OBJ1U F822 [ MOTION OBJU ]
+MEM IC6 MT26C1600 * NR1-OBJ2U DD24 [ MOTION OBJU ]
+MEM IC8 MT26C1600 * NR1-OBJ3U F750 [ MOTION OBJU ]
+CPU 11D Custom # C366.BIN 1C93 [ KEYCUSTUM ]
+
+Note: CPU - Main PCB (NB-1)
+ MEM - MEMEXT OBJ8 PCB at J103 on the main PCB
+ SPR - MEMEXT SPR PCB at location 5B on the main PCB
+
+ - Namco main PCB: NB-1 8634961101, (8634963101)
+ - MEMEXT OBJ8 PCB: 8635902201, (8635902301)
+
+ * - Surface mounted ROMs
+ # - 32 pin DIP Custom IC (16bytes x 16-bit)
+
+Brief hardware overview
+-----------------------
+
+Main processor - MC68EC020FG25 25MHz (100 pin PQFP)
+ - C329 custom (100 pin PQFP)
+ - 137 custom PLD (28 pin NDIP)
+ - C366 Key Custom
+
+Sound processor - C75 custom
+ (PCM) - C352 custom (100 pin PQFP)
+ (control inputs) - 160 custom (80 pin PQFP)
+
+GFX - 123 custom (80 pin PQFP)
+ - 145 custom (80 pin PQFP)
+ - 156 custom (64 pin PQFP)
+ - C116 custom (80 pin PQFP)
+
+Motion Objects - C355 custom (160 pin PQFP)
+ - 187 custom (160 pin PQFP)
+ - C347 custom (80 pin PQFP)
+
+PCB Jumper Settings
+-------------------
+
+Location Setting Alt. Setting
+----------------------------------------
+ JP1 1M 4M
+ JP2 4M 1M
+ JP5 <1M 1M
+ JP6 8M >8M
+ JP7 4M 1M
+ JP8 4M 1M
+ JP9 cON cOFF
+ JP10 24M (MHz) 12M (MHz)
+ JP11 24M (MHz) 28M (MHz)
+ JP12 355 F32
+
+
+Namco System NB2
+
+Games running on this hardware:
+- The Outfoxies
+- Mach Breakers
+
+Changes from Namcon System NB1 include:
+- different memory map
+- more complex sprite and tile banking
+- 2 additional ROZ layers
+
+-----------------------------
+The Outfoxies by NAMCO (1994)
+-----------------------------
+Location Device File ID Checksum
+----------------------------------------------------
+CPU 11C PRGL 27C4002 OU2-MPRL 166F
+CPU 11D PRGU 27C4002 OU2-MPRU F4C1
+CPU 5B SPR0 27C240 OU1-SPR0 7361
+CPU 20A DAT0 27C4002 OU1-DAT0 FCD1
+CPU 20B DAT1 27C4002 OU1-DAT1 0973
+CPU 18S SHAPE-R MB83800 OU1-SHAR C922
+CPU 12S SHAPE-S MB83400 OU1-SHAS 2820
+CPU 6N VOICE0 MB831600 OU1-VOI0 4132
+ROM 4C OBJ0L 16Meg SMD OU1-OBJ0L 171B
+ROM 8C OBJ0U 16Meg SMD OU1-OBJ0U F961
+ROM 4B OBJ1L 16Meg SMD OU1-OBJ1L 1579
+ROM 8B OBJ1U 16Meg SMD OU1-OBJ1U E8DF
+ROM 4A OBJ2L 16Meg SMD OU1-OBJ2L AE7B
+ROM 8A OBJ2U 16Meg SMD OU1-OBJ2U 6588
+ROM 6C OBJ3L 16Meg SMD OU1-OBJ3L 9ED3
+ROM 9C OBJ3U 16Meg SMD OU1-OBJ3U ED3B
+ROM 6B OBJ4L 16Meg SMD OU1-OBJ4L 59D4
+ROM 9B OBJ4U 16Meg SMD OU1-OBJ4U 56CA
+ROM 3D ROT0 16Meg SMD OU1-ROT0 A615
+ROM 3C ROT1 16Meg SMD OU1-ROT1 6C0A
+ROM 3B ROT2 16Meg SMD OU1-ROT2 313E
+ROM 1D SCR0 16Meg SMD OU1-SCR0 751A
+
+CPU 8B DEC75 PAL16L8A NB1-2
+CPU 16N MIXER PAL16V8H NB2-1
+CPU 11E SIZE PAL16L8A NB2-2
+CPU 22C KEYCUS KeyCustom C390
+
+CPU - Namco NB-2 Main PCB 8639960102 (8639970102)
+ROM - Namco NB-2 Mask ROM PCB 8639969800 (8639979800)
+
+ - Audio out is Stereo
+
+Jumper Settings:
+
+ Setting Alternate
+JP1 4M 1M
+JP2 GND A20
+JP3 GND A20
+JP6 4M 1M
+JP8 GND A20
+JP9 CON COFF
+JP10 GND A20
+
+Hardware info:
+
+Main CPU: MC68EC020FG25
+ Custom C383 (100 pin PQFP)
+ Custom C385 (144 pin PQFP)
+
+Slave CPU: ?Custom C382 (160 pin PQFP)
+ Custom 160 ( 80 pin PQFP)
+ Custom C352 (100 pin PQFP)
+
+GFX: Custom 145 ( 80 pin PQFP)
+ Custom 156 ( 64 pin PQFP)
+ Custom 123 ( 64 pin PQFP)
+ 3x Custom 384 ( 48 pin PQFP)
+ Custom C355 (160 pin PQFP)
+ Custom 187 (120 pin PQFP)
+ Custom 169 (120 pin PQFP)
+*/
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+#include "includes/namconb1.h"
+#include "includes/namcoic.h"
+#include "machine/namcomcu.h"
+#include "sound/c352.h"
+
+#define MASTER_CLOCK XTAL_48_384MHz
+
+
+/****************************************************************************/
+
+TIMER_DEVICE_CALLBACK_MEMBER(namconb1_state::namconb_scantimer)
+{
+ int scanline = param;
+
+ // Handle VBLANK
+ if (scanline == NAMCONB1_VBSTART)
+ {
+ if (m_vbl_irq_level != 0)
+ m_maincpu->set_input_line(m_vbl_irq_level, ASSERT_LINE);
+ }
+
+ // Handle POSIRQ
+ UINT32 posirq_scanline = m_c116->get_reg(5) - 32;
+
+ if (scanline == posirq_scanline)
+ {
+ m_screen->update_partial(posirq_scanline);
+
+ if (m_pos_irq_level != 0)
+ m_maincpu->set_input_line(m_pos_irq_level, ASSERT_LINE);
+ }
+
+ // TODO: Real sources of these
+ if (scanline == 224)
+ m_mcu->set_input_line(M37710_LINE_IRQ0, HOLD_LINE);
+ else if (scanline == 0)
+ m_mcu->set_input_line(M37710_LINE_IRQ2, HOLD_LINE);
+ else if (scanline == 128)
+ m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE);
+}
+
+
+
+/****************************************************************************/
+
+WRITE8_MEMBER(namconb1_state::namconb1_cpureg_w)
+{
+ /**
+ * 400000 0x00
+ * 400001 POS IRQ enable/level
+ * 400002 ??? IRQ enable/level
+ * 400003 0x00
+ * 400004 VBL IRQ enable/level
+ * 400005 0x00
+ * 400006 POS IRQ ack
+ * 400007 ??? IRQ ack
+ * 400008 0x00
+ * 400009 VBL IRQ ack
+ * 40000a ??? (0x00)
+ * 40000b ??? (0x03)
+ * 40000c ??? (0x07)
+ * 40000d ??? (0x01)
+ * 40000e ??? (0x10)
+ * 40000f ??? (0x03)
+ * 400010 ??? (0x00)
+ * 400011 ??? (0x07)
+ * 400012 ??? (0x10)
+ * 400013 ??? (0x10)
+ * 400014 ??? (0x00)
+ * 400015 ??? (0x01)
+ * 400016 Watchdog
+ * 400017 ??? (0x00)
+ * 400018 C75 Control
+ * 400019 ??? (0x00)
+ * 40001a ??? (0x00)
+ * 40001b ??? (0x00)
+ * 40001c ??? (0x00)
+ * 40001d ??? (0x00)
+ * 40001e ??? (0x00)
+ * 40001f ??? (0x00)
+ */
+ switch (offset)
+ {
+ case 0x01:
+ // Bits 5-4 unknown
+ m_maincpu->set_input_line(m_pos_irq_level, CLEAR_LINE);
+ m_pos_irq_level = data & 0x0f;
+ break;
+
+ case 0x02:
+ m_maincpu->set_input_line(m_unk_irq_level, CLEAR_LINE);
+ m_unk_irq_level = data & 0x0f;
+ break;
+
+ case 0x04:
+ m_maincpu->set_input_line(m_vbl_irq_level, CLEAR_LINE);
+ m_vbl_irq_level = data & 0x0f;
+ break;
+
+ case 0x06:
+ m_maincpu->set_input_line(m_pos_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x07:
+ m_maincpu->set_input_line(m_unk_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x09:
+ m_maincpu->set_input_line(m_vbl_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x16:
+ break;
+
+ case 0x18:
+ if (data & 1)
+ {
+ m_mcu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ m_mcu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+ }
+ else
+ m_mcu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ break;
+
+ default:
+ logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
+ }
+}
+
+
+WRITE8_MEMBER(namconb1_state::namconb2_cpureg_w)
+{
+ /**
+ * f00000 VBL IRQ enable/level
+ * f00001 ??? IRQ enable/level
+ * f00002 POS IRQ enable/level
+ * f00003 ??? (0x00)
+ * f00004 VBL IRQ ack
+ * f00005 ??? IRQ ack
+ * f00006 POS IRQ ack
+ * f00007
+ * f00008
+ * f00009 ??? (0x62)
+ * f0000a ??? (0x0f)
+ * f0000b ??? (0x41)
+ * f0000c ??? (0x70)
+ * f0000d ??? (0x70)
+ * f0000e ??? (0x23)
+ * f0000f ??? (0x50)
+ * f00010 ??? (0x00)
+ * f00011 ??? (0x64)
+ * f00012 ??? (0x18)
+ * f00013 ??? (0xe7)
+ * f00014 Watchdog
+ * f00015
+ * f00016 C75 Control
+ * f00017
+ * f00018
+ * f00019
+ * f0001a
+ * f0001b
+ * f0001c
+ * f0001d
+ * f0001e ??? (0x00)
+ * f0001f ??? (0x01)
+ */
+ switch (offset)
+ {
+ case 0x00:
+ m_maincpu->set_input_line(m_vbl_irq_level, CLEAR_LINE);
+ m_vbl_irq_level = data & 0x0f;
+ break;
+
+ case 0x01:
+ m_maincpu->set_input_line(m_unk_irq_level, CLEAR_LINE);
+ m_unk_irq_level = data & 0x0f;
+ break;
+
+ case 0x02:
+ m_maincpu->set_input_line(m_pos_irq_level, CLEAR_LINE);
+ m_pos_irq_level = data & 0x0f;
+ break;
+
+ case 0x04:
+ m_maincpu->set_input_line(m_vbl_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x05:
+ m_maincpu->set_input_line(m_unk_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x06:
+ m_maincpu->set_input_line(m_pos_irq_level, CLEAR_LINE);
+ break;
+
+ case 0x14:
+ break;
+
+ case 0x16:
+ if (data & 1)
+ {
+ m_mcu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ m_mcu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+ }
+ else
+ {
+ m_mcu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ }
+ break;
+
+ default:
+ logerror("Unhandled CPU reg write to [0x%.2x] with 0x%.2x (PC=0x%x)\n", offset, data, space.device().safe_pc());
+ }
+}
+
+
+READ8_MEMBER(namconb1_state::namconb1_cpureg_r)
+{
+ // 16: Watchdog
+ if (offset != 0x16)
+ logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
+
+ return 0xff;
+}
+
+
+READ8_MEMBER(namconb1_state::namconb2_cpureg_r)
+{
+ // 14: Watchdog
+ if (offset != 0x14)
+ logerror("Unhandled CPU reg read from [0x%.2x] (PC=0x%x)\n", offset, space.device().safe_pc());
+
+ return 0xff;
+}
+
+
+/****************************************************************************/
+
+READ32_MEMBER(namconb1_state::custom_key_r)
+{
+ UINT16 old_count = m_count;
+
+ do
+ { /* pick a random number, but don't pick the same twice in a row */
+ m_count = machine().rand();
+ } while( m_count==old_count );
+
+ switch (m_gametype)
+ {
+ /*
+ Gunbullet/Point Blank keycus notes (thanks Guru):
+
+ These games use the keycus in an unconventional way. Instead of reading it for a PRNG or a
+ magic value, it writes a scratch value to the keycus once per frame.
+
+ On hardware, if there is no keycus or the wrong keycus is present, this write will stall the
+ 68000 (probably nothing completes the bus cycle in that case) and the game will hang instead
+ of booting.
+
+ Patching these writes out causes the game to run fine with no keycus present.
+ */
+ case NAMCONB1_GUNBULET:
+ return 0;
+
+ case NAMCONB1_SWS95:
+ switch (offset)
+ {
+ case 0: return 0x0189;
+ case 1: return m_count<<16;
+ }
+ break;
+
+ case NAMCONB1_SWS96:
+ switch (offset)
+ {
+ case 0: return 0x01aa<<16;
+ case 4: return m_count<<16;
+ }
+ break;
+
+ case NAMCONB1_SWS97:
+ switch (offset)
+ {
+ case 2: return 0x1b2<<16;
+ case 5: return m_count<<16;
+ }
+ break;
+
+ case NAMCONB1_GSLGR94U:
+ switch (offset)
+ {
+ case 0: return 0x0167;
+ case 1: return m_count<<16;
+ }
+ break;
+
+ case NAMCONB1_GSLGR94J:
+ switch (offset)
+ {
+ case 1: return 0;
+ case 3: return (0x0171<<16) | m_count;
+ }
+ break;
+
+ case NAMCONB1_NEBULRAY:
+ switch (offset)
+ {
+ case 1: return 0x016e;
+ case 3: return m_count;
+ }
+ break;
+
+ case NAMCONB1_VSHOOT:
+ switch (offset)
+ {
+ case 2: return m_count<<16;
+ case 3: return 0x0170<<16;
+ }
+ break;
+
+ case NAMCONB2_OUTFOXIES:
+ switch (offset)
+ {
+ case 0: return 0x0186;
+ case 1: return m_count<<16;
+ }
+ break;
+
+ case NAMCONB2_MACH_BREAKERS:
+ break; /* no protection? */
+ }
+
+ logerror( "custom_key_r(%d); pc=%08x\n", offset, space.device().safe_pc() );
+ return 0;
+} /* custom_key_r */
+
+/***************************************************************/
+
+
+READ32_MEMBER(namconb1_state::gunbulet_gun_r)
+{
+ int result = 0;
+
+ switch (offset)
+ {
+ case 0: case 1: result = (UINT8)(0x0f + ioport("LIGHT1_Y")->read() * 224/255); break; /* Y (p2) */
+ case 2: case 3: result = (UINT8)(0x26 + ioport("LIGHT1_X")->read() * 288/314); break; /* X (p2) */
+ case 4: case 5: result = (UINT8)(0x0f + ioport("LIGHT0_Y")->read() * 224/255); break; /* Y (p1) */
+ case 6: case 7: result = (UINT8)(0x26 + ioport("LIGHT0_X")->read() * 288/314); break; /* X (p1) */
+ }
+ return result<<24;
+} /* gunbulet_gun_r */
+
+READ32_MEMBER(namconb1_state::randgen_r)
+{
+ return machine().rand();
+} /* randgen_r */
+
+WRITE32_MEMBER(namconb1_state::srand_w)
+{
+ /**
+ * Used to seed the hardware random number generator.
+ * We don't yet know the algorithm that is used, so for now this is a NOP.
+ */
+} /* srand_w */
+
+READ32_MEMBER(namconb1_state::namconb_share_r)
+{
+ return (m_namconb_shareram[offset*2] << 16) | m_namconb_shareram[offset*2+1];
+}
+
+WRITE32_MEMBER(namconb1_state::namconb_share_w)
+{
+ COMBINE_DATA(m_namconb_shareram+offset*2+1);
+ data >>= 16;
+ mem_mask >>= 16;
+ COMBINE_DATA(m_namconb_shareram+offset*2);
+}
+
+static ADDRESS_MAP_START( namconb1_am, AS_PROGRAM, 32, namconb1_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x10001f) AM_READ(gunbulet_gun_r)
+ AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
+ AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
+ AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
+ AM_RANGE(0x208000, 0x2fffff) AM_RAM
+ AM_RANGE(0x400000, 0x40001f) AM_READWRITE8(namconb1_cpureg_r, namconb1_cpureg_w, 0xffffffff)
+ AM_RANGE(0x580000, 0x5807ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
+ AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
+ AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
+ AM_RANGE(0x640000, 0x64ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff)
+ AM_RANGE(0x660000, 0x66003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff)
+ AM_RANGE(0x680000, 0x68000f) AM_RAM AM_SHARE("spritebank32")
+ AM_RANGE(0x6e0000, 0x6e001f) AM_READ(custom_key_r) AM_WRITENOP
+ AM_RANGE(0x700000, 0x707fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( namconb2_am, AS_PROGRAM, 32, namconb1_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
+ AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
+ AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
+ AM_RANGE(0x208000, 0x2fffff) AM_RAM
+ AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("data", 0)
+ AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram")
+ AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff)
+ AM_RANGE(0x640000, 0x64000f) AM_RAM /* unknown xy offset */
+ AM_RANGE(0x680000, 0x68ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff)
+ AM_RANGE(0x6c0000, 0x6c003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff)
+ AM_RANGE(0x700000, 0x71ffff) AM_READWRITE16(c169_roz_videoram_r,c169_roz_videoram_w,0xffffffff) AM_SHARE("rozvideoram")
+ AM_RANGE(0x740000, 0x74001f) AM_READWRITE16(c169_roz_control_r,c169_roz_control_w,0xffffffff)
+ AM_RANGE(0x800000, 0x807fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff)
+ AM_RANGE(0x900008, 0x90000f) AM_RAM AM_SHARE("spritebank32")
+ AM_RANGE(0x940000, 0x94000f) AM_RAM AM_SHARE("tilebank32")
+ AM_RANGE(0x980000, 0x98000f) AM_READWRITE16(c169_roz_bank_r,c169_roz_bank_w,0xffffffff)
+ AM_RANGE(0xa00000, 0xa007ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff)
+ AM_RANGE(0xc00000, 0xc0001f) AM_READ(custom_key_r) AM_WRITENOP
+ AM_RANGE(0xf00000, 0xf0001f) AM_READWRITE8(namconb1_cpureg_r, namconb2_cpureg_w, 0xffffffff)
+ADDRESS_MAP_END
+
+WRITE16_MEMBER(namconb1_state::nbmcu_shared_w)
+{
+ // HACK! Many games data ROM routines redirect the vector from the sound command read to an RTS.
+ // This needs more investigation. nebulray and vshoot do NOT do this.
+ // Timers A2 and A3 are set up in "external input counter" mode, this may be related.
+#if 0
+ if ((offset == 0x647c/2) && (data != 0))
+ {
+ data = 0xd2f6;
+ }
+#endif
+
+ COMBINE_DATA(&m_namconb_shareram[offset]);
+
+ // C74 BIOS has a very short window on the CPU sync signal, so immediately let the '020 at it
+ if ((offset == 0x6000/2) && (data & 0x80))
+ {
+ space.device().execute().spin_until_time(downcast<cpu_device *>(&space.device())->cycles_to_attotime(300)); // was 300
+ }
+}
+
+static ADDRESS_MAP_START( namcoc75_am, AS_PROGRAM, 16, namconb1_state )
+ AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write)
+ AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(nbmcu_shared_w) AM_SHARE("namconb_share")
+ AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0)
+ADDRESS_MAP_END
+
+
+READ8_MEMBER(namconb1_state::port6_r)
+{
+ return m_nbx_port6;
+}
+
+WRITE8_MEMBER(namconb1_state::port6_w)
+{
+ m_nbx_port6 = data;
+}
+
+READ8_MEMBER(namconb1_state::port7_r)
+{
+ switch (m_nbx_port6 & 0xf0)
+ {
+ case 0x00:
+ return read_safe(ioport("P4"), 0xff);
+
+ case 0x20:
+ return ioport("MISC")->read();
+
+ case 0x40:
+ return ioport("P1")->read();
+
+ case 0x60:
+ return ioport("P2")->read();
+
+ default:
+ break;
+ }
+
+ return 0xff;
+}
+
+// Is this madness? No, this is Namco. They didn't have enough digital ports for all 4 players,
+// so the 8 bits of player 3 got routed to the 8 analog inputs. +5V on the analog input will
+// register full scale, so it works...
+READ8_MEMBER(namconb1_state::dac7_r)// bit 7
+{
+ return read_safe(ioport("P3"), 0xff)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac6_r)// bit 3
+{
+ return (read_safe(ioport("P3"), 0xff)<<1)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac5_r)// bit 2
+{
+ return (read_safe(ioport("P3"), 0xff)<<2)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac4_r)// bit 1
+{
+ return (read_safe(ioport("P3"), 0xff)<<3)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac3_r)// bit 0
+{
+ return (read_safe(ioport("P3"), 0xff)<<4)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac2_r)// bit 4
+{
+ return (read_safe(ioport("P3"), 0xff)<<5)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac1_r)// bit 5
+{
+ return (read_safe(ioport("P3"), 0xff)<<6)&0x80;
+}
+
+READ8_MEMBER(namconb1_state::dac0_r)// bit 6
+{
+ return (read_safe(ioport("P3"), 0xff)<<7)&0x80;
+}
+
+static ADDRESS_MAP_START( namcoc75_io, AS_IO, 8, namconb1_state )
+ AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w)
+ AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READ(port7_r)
+ AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ(dac7_r)
+ AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ(dac6_r)
+ AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ(dac5_r)
+ AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ(dac4_r)
+ AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ(dac3_r)
+ AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ(dac2_r)
+ AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ(dac1_r)
+ AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ(dac0_r)
+ADDRESS_MAP_END
+
+
+/****************************************************************************/
+
+static INPUT_PORTS_START( gunbulet )
+ PORT_START("MISC")
+ PORT_DIPUNUSED_DIPLOC(0x01, 0x01, "SW1: 2")
+ PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
+
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_DIPNAME( 0x40, 0x40, "Test switch" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START("P1")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
+
+ PORT_START("LIGHT0_X")
+ PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(4)
+ PORT_START("LIGHT0_Y")
+ PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(4)
+ PORT_START("LIGHT1_X")
+ PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(4) PORT_PLAYER(2)
+ PORT_START("LIGHT1_Y")
+ PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(4) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( outfxies )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
+
+ PORT_START("MISC")
+ PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( nbsports )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
+
+ PORT_START("MISC")
+ PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( namconb1 )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
+
+ PORT_START("P3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START("P4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
+
+ PORT_START("MISC")
+ PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_DIPNAME( 0x40, 0x40, "Test switch" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+INPUT_PORTS_END
+
+
+/****************************************************************************/
+
+DRIVER_INIT_MEMBER(namconb1_state,nebulray)
+{
+ m_gametype = NAMCONB1_NEBULRAY;
+} /* nebulray */
+
+DRIVER_INIT_MEMBER(namconb1_state,gslgr94u)
+{
+ m_gametype = NAMCONB1_GSLGR94U;
+} /* gslgr94u */
+
+DRIVER_INIT_MEMBER(namconb1_state,gslgr94j)
+{
+ m_gametype = NAMCONB1_GSLGR94J;
+} /* gslgr94j */
+
+DRIVER_INIT_MEMBER(namconb1_state,sws95)
+{
+ m_gametype = NAMCONB1_SWS95;
+} /* sws95 */
+
+DRIVER_INIT_MEMBER(namconb1_state,sws96)
+{
+ m_gametype = NAMCONB1_SWS96;
+} /* sws96 */
+
+DRIVER_INIT_MEMBER(namconb1_state,sws97)
+{
+ m_gametype = NAMCONB1_SWS97;
+} /* sws97 */
+
+DRIVER_INIT_MEMBER(namconb1_state,gunbulet)
+{
+ m_gametype = NAMCONB1_GUNBULET;
+} /* gunbulet */
+
+DRIVER_INIT_MEMBER(namconb1_state,vshoot)
+{
+ m_gametype = NAMCONB1_VSHOOT;
+} /* vshoot */
+
+DRIVER_INIT_MEMBER(namconb1_state,machbrkr)
+{
+ m_gametype = NAMCONB2_MACH_BREAKERS;
+}
+
+DRIVER_INIT_MEMBER(namconb1_state,outfxies)
+{
+ m_gametype = NAMCONB2_OUTFOXIES;
+}
+
+/***************************************************************/
+
+static const gfx_layout obj_layout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 8, /* bits per pixel */
+ {
+ /* plane offsets */
+ 0,1,2,3,4,5,6,7,
+ },
+ {
+ 0*16+8,1*16+8,0*16,1*16,
+ 2*16+8,3*16+8,2*16,3*16,
+ 4*16+8,5*16+8,4*16,5*16,
+ 6*16+8,7*16+8,6*16,7*16
+ },
+ {
+ 0x0*128,0x1*128,0x2*128,0x3*128,0x4*128,0x5*128,0x6*128,0x7*128,
+ 0x8*128,0x9*128,0xa*128,0xb*128,0xc*128,0xd*128,0xe*128,0xf*128
+ },
+ 16*128
+}; /* obj_layout */
+
+static const gfx_layout tile_layout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 8,
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
+ { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
+ 8*64
+}; /* tile_layout */
+
+static const gfx_layout roz_layout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 8,
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8 },
+ {
+ 0*128,1*128,2*128,3*128,4*128,5*128,6*128,7*128,8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128
+ },
+ 16*128
+}; /* roz_layout */
+
+static GFXDECODE_START( namconb1 )
+ GFXDECODE_ENTRY( NAMCONB1_TILEGFXREGION, 0, tile_layout, 0x1000, 0x10 )
+ GFXDECODE_ENTRY( NAMCONB1_SPRITEGFXREGION, 0, obj_layout, 0x0000, 0x10 )
+GFXDECODE_END /* gfxdecodeinfo */
+
+static GFXDECODE_START( 2 )
+ GFXDECODE_ENTRY( NAMCONB1_TILEGFXREGION, 0, tile_layout, 0x1000, 0x08 )
+ GFXDECODE_ENTRY( NAMCONB1_SPRITEGFXREGION, 0, obj_layout, 0x0000, 0x10 )
+ GFXDECODE_ENTRY( NAMCONB1_ROTGFXREGION, 0, roz_layout, 0x1800, 0x08 )
+GFXDECODE_END /* gfxdecodeinfo2 */
+
+
+/***************************************************************/
+
+MACHINE_RESET_MEMBER(namconb1_state, namconb)
+{
+ m_pos_irq_level = 0;
+ m_unk_irq_level = 0;
+ m_vbl_irq_level = 0;
+}
+
+
+/***************************************************************/
+
+static MACHINE_CONFIG_START( namconb1, namconb1_state )
+ MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK/2)
+ MCFG_CPU_PROGRAM_MAP(namconb1_am)
+
+ MCFG_CPU_ADD("mcu", NAMCO_C75, MASTER_CLOCK/3)
+ MCFG_CPU_PROGRAM_MAP(namcoc75_am)
+ MCFG_CPU_IO_MAP(namcoc75_io)
+
+ MCFG_EEPROM_2816_ADD("eeprom")
+ MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
+
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, namconb_scantimer, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.7)
+ MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
+ MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
+ MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb1)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", namconb1)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_DEVICE_ADD("c116", NAMCO_C116, 0)
+ MCFG_GFX_PALETTE("palette")
+
+ MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb1)
+
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_C352_ADD("c352", MASTER_CLOCK/2, 288)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(3, "lspeaker", 1.00)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( namconb2, namconb1_state )
+ MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK/2)
+ MCFG_CPU_PROGRAM_MAP(namconb2_am)
+
+ MCFG_CPU_ADD("mcu", NAMCO_C75, MASTER_CLOCK/3)
+ MCFG_CPU_PROGRAM_MAP(namcoc75_am)
+ MCFG_CPU_IO_MAP(namcoc75_io)
+
+ MCFG_EEPROM_2816_ADD("eeprom")
+ MCFG_MACHINE_RESET_OVERRIDE(namconb1_state, namconb)
+
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namconb1_state, namconb_scantimer, "screen", 0, 1)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(59.7)
+ MCFG_SCREEN_SIZE(NAMCONB1_HTOTAL, NAMCONB1_VTOTAL)
+ MCFG_SCREEN_VISIBLE_AREA(0, NAMCONB1_HBSTART-1, 0, NAMCONB1_VBSTART-1)
+ MCFG_SCREEN_UPDATE_DRIVER(namconb1_state, screen_update_namconb2)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", 2)
+ MCFG_PALETTE_ADD("palette", 0x2000)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_DEVICE_ADD("c116", NAMCO_C116, 0)
+ MCFG_GFX_PALETTE("palette")
+
+ MCFG_VIDEO_START_OVERRIDE(namconb1_state,namconb2)
+
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_C352_ADD("c352", MASTER_CLOCK/2, 288)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(2, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(3, "lspeaker", 1.00)
+MACHINE_CONFIG_END
+
+
+/***************************************************************/
+
+ROM_START( ptblank ) /* World set using 4Mb sound data rom (verified) */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gn2_mprlb.15b", 0x00002, 0x80000, CRC(fe2d9425) SHA1(51b166a629cbb522720d63720558816b496b6b76) )
+ ROM_LOAD32_WORD( "gn2_mprub.13b", 0x00000, 0x80000, CRC(3bf4985a) SHA1(f559e0d5f55d23d886fe61bd7d5ca556acc7f87c) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data - JP1 jumper selectable between 1Mb (27C1024) or 4Mb (27C4096) either rom is correct */
+// ROM_LOAD( "gn1_spr0.5b", 0, 0x20000, CRC(6836ba38) SHA1(6ea17ea4bbb59be108e8887acd7871409580732f) ) /* 1Megabit, same data as the 4Mb rom at 0x00000-0x1ffff */
+ ROM_LOAD( "gn1-spr0.5b", 0, 0x80000, CRC(71773811) SHA1(e482784d9b9ebf8c2e4a2a3f6f6c4dc8304d2251) ) /* 4Megabit, same data at 0x00000-0x1ffff, 0x20000-0x7ffff is 0xff filled */
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
+ ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
+ ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
+ ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
+ ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
+ ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
+ ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
+
+ ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
+ ROM_LOAD( "eeprom", 0x0000, 0x0800, CRC(95760d0f) SHA1(94ac5a261d9afc77c2a163a50950b0e86b1f8041) )
+ROM_END
+
+ROM_START( ptblanka ) /* World set using non standard ROM labels (NR is Namco's prefix for Nebulas Ray, but NOT here!!), verified on 2 seperate PCBs */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "nr3_spr0.15b", 0x00002, 0x80000, CRC(fe2d9425) SHA1(51b166a629cbb522720d63720558816b496b6b76) ) // == gn2_mprlb.15b
+ ROM_LOAD32_WORD( "nr2_spr0.13b", 0x00000, 0x80000, CRC(3bf4985a) SHA1(f559e0d5f55d23d886fe61bd7d5ca556acc7f87c) ) // == gn2_mprub.12b
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data - JP1 jumper selectable between 1Mb (27C1024) or 4Mb (27C4096) either rom is correct */
+// ROM_LOAD( "nr1_spr0.5b", 0, 0x20000, CRC(6836ba38) SHA1(6ea17ea4bbb59be108e8887acd7871409580732f) ) /* 1Megabit, same data as the 4Mb rom at 0x00000-0x1ffff */
+ ROM_LOAD( "nr1_spr0.5b", 0, 0x80000, CRC(a0bde3fb) SHA1(b5fac1d0339b1df6b8880fcd7aa2725a774765a4) ) /* 4Megabit, same data at 0x00000-0x1ffff repeated 4 time */
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "nr4_spr0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) ) // == gn1-voi0.5j
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
+ ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
+ ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
+ ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "nr5_spr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) ) // == gn1_chr0.8j
+ ROM_LOAD( "nr6_spr0.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) ) // == gn1_chr1.8j
+ ROM_LOAD( "nr7_spr0.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) ) // == gn1_chr2.10j
+ ROM_LOAD( "nr8_spr0.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) ) // == gn1_chr3.11j
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "nr9_spr0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) ) // == gn1-sha0.5m
+
+ ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
+ ROM_LOAD( "eeprom", 0x0000, 0x0800, CRC(95760d0f) SHA1(94ac5a261d9afc77c2a163a50950b0e86b1f8041) )
+ROM_END
+
+ROM_START( gunbuletw ) /* World set using 4Mb sound data rom (verified) */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gn3_mprlb.15b", 0x00002, 0x80000, CRC(9260fce5) SHA1(064579be1ac90e04082a8b403c6adf35dbb46a7e) )
+ ROM_LOAD32_WORD( "gn3_mprub.13b", 0x00000, 0x80000, CRC(6c1ac697) SHA1(7b52b5ef8154a5d741ac24673f3e6bbfa246a494) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data - JP1 jumper selectable between 1Mb (27C1024) or 4Mb (27C4096) either rom is correct */
+// ROM_LOAD( "gn1_spr0.5b", 0, 0x20000, CRC(6836ba38) SHA1(6ea17ea4bbb59be108e8887acd7871409580732f) ) /* 1Megabit, same data as the 4Mb rom at 0x00000-0x1ffff */
+ ROM_LOAD( "gn1-spr0.5b", 0, 0x80000, CRC(71773811) SHA1(e482784d9b9ebf8c2e4a2a3f6f6c4dc8304d2251) ) /* 4Megabit, same data at 0x00000-0x1ffff, 0x20000-0x7ffff is 0xff filled */
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
+ ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
+ ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
+ ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
+ ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
+ ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
+ ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
+
+ ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
+ ROM_LOAD( "eeprom", 0x0000, 0x0800, CRC(95760d0f) SHA1(94ac5a261d9afc77c2a163a50950b0e86b1f8041) )
+ROM_END
+
+ROM_START( gunbuletj ) /* Japanese set using 1Mb sound data rom (verified) */
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gn1_mprl.15b", 0x00002, 0x80000, CRC(f99e309e) SHA1(3fe0ddf756e6849f8effc7672456cbe32f65c98a) )
+ ROM_LOAD32_WORD( "gn1_mpru.13b", 0x00000, 0x80000, CRC(72a4db07) SHA1(8c5e1e51cd961b311d03f7b21f36a5bd5e8e9104) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data - JP1 jumper selectable between 1Mb (27C1024) or 4Mb (27C4096) either rom is correct */
+ ROM_LOAD( "gn1_spr0.5b", 0, 0x20000, CRC(6836ba38) SHA1(6ea17ea4bbb59be108e8887acd7871409580732f) ) /* 1Megabit, same data as the 4Mb rom at 0x00000-0x1ffff */
+// ROM_LOAD( "gn1-spr0.5b", 0, 0x80000, CRC(71773811) SHA1(e482784d9b9ebf8c2e4a2a3f6f6c4dc8304d2251) ) /* 4Megabit, same data at 0x00000-0x1ffff, 0x20000-0x7ffff is 0xff filled */
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gn1-voi0.5j", 0, 0x200000, CRC(05477eb7) SHA1(f2eaacb5dbac06c37c56b9b131230c9cf6602221) )
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gn1obj0l.ic1", 0x000001, 0x200000, CRC(06722dc8) SHA1(56fee4e17ed707fa6dbc6bad0d0281fc8cdf72d1) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
+ ROM_LOAD16_BYTE( "gn1obj0u.ic2", 0x000000, 0x200000, CRC(fcefc909) SHA1(48c19b6032096dd80777aa6d5eb5f90463095cbe) )
+ ROM_LOAD16_BYTE( "gn1obj1l.ic3", 0x400001, 0x200000, CRC(48468df7) SHA1(c5fb9082c84ac2ffceb6f5f4cbc1d40047c55e3d) )
+ ROM_LOAD16_BYTE( "gn1obj1u.ic4", 0x400000, 0x200000, CRC(3109a071) SHA1(4bb16df5a3aecdf37baf843edfc82952d46f5227) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gn1-chr0.8j", 0x000000, 0x100000, CRC(a5c61246) SHA1(d1d9f286b93b5b9880160029c53384d13c08dd8a) )
+ ROM_LOAD( "gn1-chr1.9j", 0x100000, 0x100000, CRC(c8c59772) SHA1(91de633a300e3b25a919579eaada5549640ab6f0) )
+ ROM_LOAD( "gn1-chr2.10j", 0x200000, 0x100000, CRC(dc96d999) SHA1(d006a401762b57fef6716f56eb3a7edcb3d3c00e) )
+ ROM_LOAD( "gn1-chr3.11j", 0x300000, 0x100000, CRC(4352c308) SHA1(785c13df219dceac2f940519141665b630a29f86) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gn1-sha0.5m", 0, 0x80000, CRC(86d4ff85) SHA1(a71056b2bcbba50c834fe28269ebda9719df354a) )
+
+ ROM_REGION( 0x0800, "eeprom", 0 ) // default gun calibration and settings
+ ROM_LOAD( "eeprom", 0x0000, 0x0800, CRC(95760d0f) SHA1(94ac5a261d9afc77c2a163a50950b0e86b1f8041) )
+ROM_END
+
+ROM_START( nebulray )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "nr2_mprl.15b", 0x00002, 0x80000, CRC(0431b6d4) SHA1(54c96e8ac9e753956c31bdef79d390f1c20e10ff) )
+ ROM_LOAD32_WORD( "nr2_mpru.13b", 0x00000, 0x80000, CRC(049b97cb) SHA1(0e344b29a4d4bdc854fa9849589772df2eeb0a05) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "nr1-spr0", 0, 0x20000, CRC(1cc2b44b) SHA1(161f4ed39fabe89d7ee1d539f8b9f08cd0ff3111) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "nr1-voi0", 0, 0x200000, CRC(332d5e26) SHA1(9daddac3fbe0709e25ed8e0b456bac15bfae20d7) )
+
+ ROM_REGION( 0x1000000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "nr1obj0u", 0x000000, 0x200000, CRC(fb82a881) SHA1(c9fa0728a37376a5c85bff1f6e8400c13ce15769) )
+ ROM_LOAD16_BYTE( "nr1obj0l", 0x000001, 0x200000, CRC(0e99ef46) SHA1(450fe61e448270b633f312361bd5ca89bb9684dd) )
+ ROM_LOAD16_BYTE( "nr1obj1u", 0x400000, 0x200000, CRC(49d9dbd7) SHA1(2dbd842c192d65888f931cdb5c9387127b1ab632) )
+ ROM_LOAD16_BYTE( "nr1obj1l", 0x400001, 0x200000, CRC(f7a898f0) SHA1(a25a134a42adeb9088019bde42a96d120f20407e) )
+ ROM_LOAD16_BYTE( "nr1obj2u", 0x800000, 0x200000, CRC(8c8205b1) SHA1(2c5fb9392d8cd5f8d1f9aba6ddbbafd061271cd4) )
+ ROM_LOAD16_BYTE( "nr1obj2l", 0x800001, 0x200000, CRC(b39871d1) SHA1(a8f910702bb88a001f2bfd1b33ad355aa3b0f429) )
+ ROM_LOAD16_BYTE( "nr1obj3u", 0xc00000, 0x200000, CRC(d5918c9e) SHA1(530781fb44d7bbf01669bb265b658cb60e27bcd7) )
+ ROM_LOAD16_BYTE( "nr1obj3l", 0xc00001, 0x200000, CRC(c90d13ae) SHA1(675f7b8b3325aac91b2bae1cbebe274a65aedc43) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "nr1-chr0", 0x000000, 0x100000,CRC(8d5b54ea) SHA1(616d5729f474da91da19a8246066280652da998c) )
+ ROM_LOAD( "nr1-chr1", 0x100000, 0x100000,CRC(cd21630c) SHA1(9974c0eb1051ca52f001e6631264a1936bb50620) )
+ ROM_LOAD( "nr1-chr2", 0x200000, 0x100000,CRC(70a11023) SHA1(bead486a86bd96c6fdfd2ea4d4d37c38bbe9bfbb) )
+ ROM_LOAD( "nr1-chr3", 0x300000, 0x100000,CRC(8f4b1d51) SHA1(b48fb2c8ccd9105a5b48be44dd3fe4309769efa4) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "nr1-sha0", 0, 0x80000,CRC(ca667e13) SHA1(685032603224cb81bcb85361921477caec570d5e) )
+
+ ROM_REGION( 0x20, "proms", 0 ) /* custom key data? */
+ ROM_LOAD( "c366.bin", 0, 0x20, CRC(8c96f31d) SHA1(d186859cfc19a63266084372080d0a5bee687ae2) )
+ROM_END
+
+ROM_START( nebulrayj )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "nr1_mprl.15b", 0x00002, 0x80000, CRC(fae5f62c) SHA1(143d716abbc834aac6270db3bbb89ec71ea3804d) )
+ ROM_LOAD32_WORD( "nr1_mpru.13b", 0x00000, 0x80000, CRC(42ef71f9) SHA1(20e3cb63e1fde293c60c404b378d901d635c4b79) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "nr1-spr0", 0, 0x20000, CRC(1cc2b44b) SHA1(161f4ed39fabe89d7ee1d539f8b9f08cd0ff3111) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "nr1-voi0", 0, 0x200000, CRC(332d5e26) SHA1(9daddac3fbe0709e25ed8e0b456bac15bfae20d7) )
+
+ ROM_REGION( 0x1000000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "nr1obj0u", 0x000000, 0x200000, CRC(fb82a881) SHA1(c9fa0728a37376a5c85bff1f6e8400c13ce15769) )
+ ROM_LOAD16_BYTE( "nr1obj0l", 0x000001, 0x200000, CRC(0e99ef46) SHA1(450fe61e448270b633f312361bd5ca89bb9684dd) )
+ ROM_LOAD16_BYTE( "nr1obj1u", 0x400000, 0x200000, CRC(49d9dbd7) SHA1(2dbd842c192d65888f931cdb5c9387127b1ab632) )
+ ROM_LOAD16_BYTE( "nr1obj1l", 0x400001, 0x200000, CRC(f7a898f0) SHA1(a25a134a42adeb9088019bde42a96d120f20407e) )
+ ROM_LOAD16_BYTE( "nr1obj2u", 0x800000, 0x200000, CRC(8c8205b1) SHA1(2c5fb9392d8cd5f8d1f9aba6ddbbafd061271cd4) )
+ ROM_LOAD16_BYTE( "nr1obj2l", 0x800001, 0x200000, CRC(b39871d1) SHA1(a8f910702bb88a001f2bfd1b33ad355aa3b0f429) )
+ ROM_LOAD16_BYTE( "nr1obj3u", 0xc00000, 0x200000, CRC(d5918c9e) SHA1(530781fb44d7bbf01669bb265b658cb60e27bcd7) )
+ ROM_LOAD16_BYTE( "nr1obj3l", 0xc00001, 0x200000, CRC(c90d13ae) SHA1(675f7b8b3325aac91b2bae1cbebe274a65aedc43) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "nr1-chr0", 0x000000, 0x100000,CRC(8d5b54ea) SHA1(616d5729f474da91da19a8246066280652da998c) )
+ ROM_LOAD( "nr1-chr1", 0x100000, 0x100000,CRC(cd21630c) SHA1(9974c0eb1051ca52f001e6631264a1936bb50620) )
+ ROM_LOAD( "nr1-chr2", 0x200000, 0x100000,CRC(70a11023) SHA1(bead486a86bd96c6fdfd2ea4d4d37c38bbe9bfbb) )
+ ROM_LOAD( "nr1-chr3", 0x300000, 0x100000,CRC(8f4b1d51) SHA1(b48fb2c8ccd9105a5b48be44dd3fe4309769efa4) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "nr1-sha0", 0, 0x80000,CRC(ca667e13) SHA1(685032603224cb81bcb85361921477caec570d5e) )
+
+ ROM_REGION( 0x20, "proms", 0 ) /* custom key data? */
+ ROM_LOAD( "c366.bin", 0, 0x20, CRC(8c96f31d) SHA1(d186859cfc19a63266084372080d0a5bee687ae2) )
+ROM_END
+
+ROM_START( gslgr94u )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gse2mprl.15b", 0x00002, 0x80000, CRC(a514349c) SHA1(1f7ec81cd6193410d2f01e6f0f84878561fc8035) )
+ ROM_LOAD32_WORD( "gse2mpru.13b", 0x00000, 0x80000, CRC(b6afd238) SHA1(438a3411ac8ce3d22d5da8c0800738cb8d2994a9) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "gse2spr0.bin", 0, 0x20000, CRC(17e87cfc) SHA1(9cbeadb6dfcb736e8c80eab344f70fc2f58469d6) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gse-voi0.bin", 0, 0x200000, CRC(d3480574) SHA1(0c468ed060769b36b7e41cf4919cb6d8691d64f6) )
+
+ ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gseobj0l.bin", 0x000001, 0x200000, CRC(531520ca) SHA1(2a1a5282549c6f7a37d5fb8c0b342edb9dc45315) )
+ ROM_LOAD16_BYTE( "gseobj0u.bin", 0x000000, 0x200000, CRC(fcc1283c) SHA1(fb44ed742f362e6737412cabf3f67d9506456a9e) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gse-chr0.bin", 0x000000, 0x100000, CRC(9314085d) SHA1(150e8ea908861337f9be2749aa7f9e1d52570586) )
+ ROM_LOAD( "gse-chr1.bin", 0x100000, 0x100000, CRC(c128a887) SHA1(4faf78064dd48ec50684a7dc8d120f8c5985bf2a) )
+ ROM_LOAD( "gse-chr2.bin", 0x200000, 0x100000, CRC(48f0a311) SHA1(e39adcce835542e64ca87f6019d4a85fcbe388c2) )
+ ROM_LOAD( "gse-chr3.bin", 0x300000, 0x100000, CRC(adbd1f88) SHA1(3c7bb1a9a398412bd3c98cadf8ce63a16e2bfed5) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gse-sha0.bin", 0, 0x80000, CRC(6b2beabb) SHA1(815f7aef44735584edd4a9ca7e672471d07f225e) )
+ROM_END
+
+ROM_START( gslgr94j )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gs41mprl.15b", 0x00002, 0x80000, CRC(5759bdb5) SHA1(a0fb332c484e168369a69cd9dd8ea72e5f4565df) )
+ ROM_LOAD32_WORD( "gs41mpru.13b", 0x00000, 0x80000, CRC(78bde1e7) SHA1(911d33897f03c59c6505f5f755d80471ff019812) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "gs41spr0.5b", 0, 0x80000, CRC(3e2b6d55) SHA1(f6a1ecaee3a9a7a535850084e469aa7f873f301e) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gs4voi0.5j", 0, 0x200000, CRC(c3053a90) SHA1(e76799b33b2457421255b03786bc24266d59c7dd) )
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gs4obj0l.bin", 0x000001, 0x200000, CRC(3b499da0) SHA1(91ad5f68dbda64dd07e1133eb09ee69da3da3103) )
+ ROM_LOAD16_BYTE( "gs4obj0u.bin", 0x000000, 0x200000, CRC(80016b50) SHA1(9f7604c196835d31894ba4db1de43d7d2614da84) )
+ ROM_LOAD16_BYTE( "gs4obj1l.bin", 0x400001, 0x200000, CRC(1f4847a7) SHA1(908e419e42fa8bd786cc3bc96d5ccb3a47c8e2dc) )
+ ROM_LOAD16_BYTE( "gs4obj1u.bin", 0x400000, 0x200000, CRC(49bc48cd) SHA1(6bcc41546f3bd609e3aa962e5ce3bf5bc6b9229a) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gs4chr0.8j", 0x000000, 0x100000, CRC(8c6c682e) SHA1(ecf21035d5af28299c9cdb98d5d811b4d52857b8) )
+ ROM_LOAD( "gs4chr1.9j", 0x100000, 0x100000, CRC(523989f7) SHA1(fae0e2f58e9a8d0ddc7297b567579849e24e0a40) )
+ ROM_LOAD( "gs4chr2.10j", 0x200000, 0x100000, CRC(37569559) SHA1(ce31673f51c6302f4fb4e4c377e6693a40874f81) )
+ ROM_LOAD( "gs4chr3.11j", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gs4sha0.5m", 0, 0x80000, CRC(40e7e6a5) SHA1(70af76b6034e0d6e1b96bf54c973ab411e5907ab) )
+ROM_END
+
+/*
+Great Sluggers (Japan)
+Namco, 1993
+
+This game runs on Namco NB-1 hardware.
+
+PCB Layout
+----------
+NB-1 MAIN PCB MEMEXT OBJ2 PCB
+8634961101 (8634963101) 8635901201 (8635901301)
+|------------------------------------------------------|---------|
+| 62256 62256 | |
+|LA4705 VOL M5M5178 62256 62256 |GS1OBJ-0 |
+| M5M5178 C347 | |
+| 4558 M5M5178 62256 62256 | |
+| 62256 62256 | |
+| LC78815 C116 156 | |
+|JP3 62256 62256 62256 | |
+| 145 62256 62256 62256 |GS1OBJ-1 |
+| GS1SHA-0 | |
+|J JP2 62256 62256 C355|---------|
+|A 62256 62256 62256 |
+|M 123 62256 |
+|M JP12 |
+|A %3 JP11 |
+| JP5 GS1CHR-0 GS1CHR-2 JP10 137 187 M3771|
+| GS1VOI-0 JP6 GS1CHR-1 GS1CHR-3 48.384MHz |
+| |
+| C352 |
+|SW1 75 |
+| |
+| TC551001 %1 |
+| KM28C16 GS1MPRU JP9 |
+| TC551001 PAL2 %2 GS1MPRL |
+| JP1 JP7 JP8 |
+| GS1SPR0 PAL1 C329 68EC020 |
+| |
+|----------------------------------------------------------------|
+Notes:
+
+CLOCKs
+------
+MASTER clock : 48.384 MHz
+68020 clock : 24.192MHz (MASTER / 2)
+HSYNC : 15.75kHz
+VSYNC : 59.7Hz
+
+DIPs
+----
+SW1: 2 position, both are OFF. Position 1 toggles TEST mode, position 2 is freeze.
+
+RAM
+---
+TC551001AFL x 2 (SOP32, 128k x8 SRAM)
+62256 x 20 (SOP28, 32k x8 SRAM)
+M5M5178 x 3 (SOP28, 8k x8 SRAM)
+
+NAMCO CUSTOM CHIPS
+------------------
+75 (QFP80, M37702 in disguise; sound CPU with internal BIOS)
+123 (QFP80)
+137 (NDIP28)
+145 (QFP80)
+156 (QFP64)
+187 (QFP120)
+C116 (QFP64)
+C329 (QFP100)
+C347 (QFP80)
+C351 (QFP160)
+C352 (QFP100)
+C355 (QFP160)
+
+OTHER
+-----
+KM28C16 2K x8 EEPROM (DIP24)
+%1 Unpopulated KEYCUS socket
+%2 Unpopulated DATA ROM socket
+%3 Unpopulated position for 28MHz OSC
+
+PALs
+----
+PAL1 PALCE16V8 (NAMCO CODE = NB1-1)
+PAL2 PAL16L8 (NAMCO CODE = NB1-2)
+
+JUMPERs
+-------
+JP1 4M O-O O 1M Config jumper for ROM size, 4M = 27C4096, 1M = 27C1024
+JP2 4M O-O O 1M Config jumper for ROM size, 4M = 27C4096, 1M = 27C1024
+JP3 O-O (2 pins shorted, hardwired on PCB)
+JP5 /1M O-O O 1M Config jumper for ROM size (hardwired on PCB)
+JP6 8M O-O O /8M Config jumper for ROM size (hardwired on PCB)
+JP7 4M O-O O 1M Config jumper for ROM size (hardwired on PCB), 4M = 27C4096, 1M = 27C1024
+JP8 4M O-O O 1M Config jumper for ROM size (hardwired on PCB), 4M = 27C4096, 1M = 27C1024
+JP9 CON O-O O COFF (hardwired on PCB)
+JP10 24M O-O O 28M Config jumper for 28MHz OSC (hardwired on PCB)
+JP11 24M O-O O 12M Config jumper for 28MHz OSC (hardwired on PCB)
+JP12 F32 O O-O 355 (hardwired on PCB)
+
+ROMs, MAIN PCB
+--------------
+Filename / PCB ROM
+ROM Label Label Type
+------------------------------------------------------------------------------
+GS1MPRU.13B PRGU 27C240 \ Main program
+GS1MPRL.15B PRGL 27C240 /
+GS1SPR0.5B SPRG 27C240 Sound program, linked to 75, C351 and C352
+GS1VOI-0.5J VOICE 16M MASK Sound voices
+GS1CHR-0.8J CHR0 8M MASK Character
+GS1CHR-1.9J CHR1 8M MASK Character
+GS1CHR-2.10J CHR2 8M MASK Character
+GS1CHR-3.11J CHR3 8M MASK Character
+GS1SHA-0.5M SHAPE 4M MASK Shape
+
+ROMs, MEMEXT OBJ2 PCB (All ROMs surface mounted)
+---------------------
+Filename / PCB ROM
+ROM Label Label Type
+----------------------------------------
+GS1OBJ-0.IC1 OBJL 16M MASK SOP44
+GS1OBJ-1.IC2 OBJU 16M MASK SOP44
+
+Note! All ROMs are different to the Great Sluggers '94 set.
+
+*/
+
+ROM_START( gslugrsj )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "gs1mprl.15b", 0x00002, 0x80000, CRC(1e6c3626) SHA1(56abe21884fd87df10996db19c49ce14214d4b73) )
+ ROM_LOAD32_WORD( "gs1mpru.13b", 0x00000, 0x80000, CRC(ef355179) SHA1(0ab0ef4301a318681bb5827d35734a0732b35484) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "gs1spr0.5b", 0, 0x80000, CRC(561ea20f) SHA1(adac6b77effc3a82079a9b228bafca0fcef72ba5) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "gs1voi-0.5j", 0, 0x200000, CRC(6f8262aa) SHA1(beea98d9f8b927a572eb0bfcf678e9d6e40fc68d) )
+
+ ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "gs1obj-0.ic1", 0x000001, 0x200000, CRC(9a55238f) SHA1(fc3fd4b8b6322bbe343edbcad7815b597562266b) )
+ ROM_LOAD16_BYTE( "gs1obj-1.ic2", 0x000000, 0x200000, CRC(31c66f76) SHA1(8903e6586dff6f34a6ffca2d7c75343c0a5bff56) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "gs1chr-0.8j", 0x000000, 0x100000, CRC(e7ced86a) SHA1(de90c2e3870b317431d3910f581660681b46ff9d) )
+ ROM_LOAD( "gs1chr-1.9j", 0x100000, 0x100000, CRC(1fe46749) SHA1(f4c0ea666d52cb1c8b1da93e7486ade5eae336cc) )
+ ROM_LOAD( "gs1chr-2.10j", 0x200000, 0x100000, CRC(f53afa20) SHA1(5c317e276ca2355e9737c1e8114dccbb5e11058a) )
+ ROM_LOAD( "gs1chr-3.11j", 0x300000, 0x100000, CRC(b149d7da) SHA1(d50c6258db0ccdd69b563e880d1711aae811fbe3) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "gs1sha-0.5m", 0, 0x80000, CRC(8a2832fe) SHA1(a1f54754fb01bbbc87274b1a0a4127fa9296ad1a) )
+ROM_END
+
+ROM_START( sws95 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "ss51mprl.bin", 0x00002, 0x80000, CRC(c9e0107d) SHA1(0f10582416023a86ea1ef2679f3f06016c086e08) )
+ ROM_LOAD32_WORD( "ss51mpru.bin", 0x00000, 0x80000, CRC(0d93d261) SHA1(5edef26e2c86dbc09727d910af92747d022e4fed) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "ss51spr0.bin", 0, 0x80000, CRC(71cb12f5) SHA1(6e13bd16a5ba14d6e47a21875db3663ada3c06a5) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "ss51voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
+
+
+ ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "ss51ob0l.bin", 0x000001, 0x200000, CRC(e0395694) SHA1(e52045a7af4c4b0f9935695cfc5ff729bf9bd7c1) )
+ ROM_LOAD16_BYTE( "ss51ob0u.bin", 0x000000, 0x200000, CRC(b0745ca0) SHA1(579ea7fd7b9a181fd9d08c50c6c5941264aa0b6d) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "ss51chr0.bin", 0x000000, 0x100000, CRC(86dd3280) SHA1(07ba6d3edc5c38bf82ddaf8f6de7ef0f5d0788b2) )
+ ROM_LOAD( "ss51chr1.bin", 0x100000, 0x100000, CRC(2ba0fb9e) SHA1(39ceddad7bc0073b361eb776762002a9fc61b337) )
+ ROM_LOAD( "ss51chr2.bin", 0x200000, 0x100000, CRC(ca0e6c1a) SHA1(1221cd30894e97e2f7d456509c7b6732ec3d06a5) )
+ ROM_LOAD( "ss51chr3.bin", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "ss51sha0.bin", 0, 0x80000, CRC(3bf4d081) SHA1(7b07b86f753ea6bcd90eb7d152c12884a6fe785a) )
+ROM_END
+
+ROM_START( sws96 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "ss61mprl.bin", 0x00002, 0x80000, CRC(06f55e73) SHA1(6be26f8a2ef600bf07c580f210d7b265ac464002) )
+ ROM_LOAD32_WORD( "ss61mpru.bin", 0x00000, 0x80000, CRC(0abdbb83) SHA1(67e8b712291f9bcf2c3a52fbc451fad54679cab8) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "ss61spr0.bin", 0, 0x80000, CRC(71cb12f5) SHA1(6e13bd16a5ba14d6e47a21875db3663ada3c06a5) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "ss61voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
+
+ ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "ss61ob0l.bin", 0x000001, 0x200000, CRC(579b19d4) SHA1(7f18097c683d2b1c532f54ee514dd499f5965165) )
+ ROM_LOAD16_BYTE( "ss61ob0u.bin", 0x000000, 0x200000, CRC(a69bbd9e) SHA1(8f4c44e2caa31d25433a04c19c51904ec9461e2f) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "ss61chr0.bin", 0x000000, 0x100000, CRC(9d2ae07b) SHA1(7d268f6c7d8145c913f80049369ae3106d69e939) )
+ ROM_LOAD( "ss61chr1.bin", 0x100000, 0x100000, CRC(4dc75da6) SHA1(a29932b4fb39648e2c02df668f46cafb80c53619) )
+ ROM_LOAD( "ss61chr2.bin", 0x200000, 0x100000, CRC(1240704b) SHA1(a24281681053cc6649f00ec5a31c7249101eaee1) )
+ ROM_LOAD( "ss61chr3.bin", 0x300000, 0x100000, CRC(066581d4) SHA1(999cd478d9da452bb57793cd276c6c0d87e2825e) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "ss61sha0.bin", 0, 0x80000, CRC(fceaa19c) SHA1(c9303a755ac7af19c4804a264d1a09d987f39e74) )
+ROM_END
+
+ROM_START( sws97 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "ss71mprl.bin", 0x00002, 0x80000, CRC(bd60b50e) SHA1(9e00bacd506182ab2af2c0efdd5cc401b3e46485) )
+ ROM_LOAD32_WORD( "ss71mpru.bin", 0x00000, 0x80000, CRC(3444f5a8) SHA1(8d0f35b3ba8f65dbc67c3b2d273833227a8b8b2a) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "ss71spr0.bin", 0, 0x80000, CRC(71cb12f5) SHA1(6e13bd16a5ba14d6e47a21875db3663ada3c06a5) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "ss71voi0.bin", 0, 0x200000, CRC(2740ec72) SHA1(9694a7378ea72771d2b1d43db6d74ed347ba27d3) )
+
+ ROM_REGION( 0x400000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "ss71ob0l.bin", 0x000001, 0x200000, CRC(9559ad44) SHA1(fd56a8620f6958cc090f783d74cb38bba46d2423) )
+ ROM_LOAD16_BYTE( "ss71ob0u.bin", 0x000000, 0x200000, CRC(4df4a722) SHA1(07eb94628ceeb7cbce2d39d479f33c37583a346a) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "ss71chr0.bin", 0x000000, 0x100000, CRC(bd606356) SHA1(a62c55600e46f8821db0b84d79fc2588742ad7ad) )
+ ROM_LOAD( "ss71chr1.bin", 0x100000, 0x100000, CRC(4dc75da6) SHA1(a29932b4fb39648e2c02df668f46cafb80c53619) )
+ ROM_LOAD( "ss71chr2.bin", 0x200000, 0x100000, CRC(1240704b) SHA1(a24281681053cc6649f00ec5a31c7249101eaee1) )
+ ROM_LOAD( "ss71chr3.bin", 0x300000, 0x100000, CRC(066581d4) SHA1(999cd478d9da452bb57793cd276c6c0d87e2825e) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "ss71sha0.bin", 0, 0x80000, CRC(be8c2758) SHA1(0a1b6c03cdaec6103ae8483b67faf3840234f825) )
+ROM_END
+
+ROM_START( vshoot )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "vsj1mprl.15b", 0x00002, 0x80000, CRC(83a60d92) SHA1(c3db0c79f772a79418914353a3d6ecc4883ea54e) )
+ ROM_LOAD32_WORD( "vsj1mpru.13b", 0x00000, 0x80000, CRC(c63eb92d) SHA1(f93bd4b91daee645677955020dc8df14dc9bfd27) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "vsj1spr0.5b", 0, 0x80000, CRC(b0c71aa6) SHA1(a94fae02b46a645ff728d2f98827c85ff155892b) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "vsjvoi-0.5j", 0, 0x200000, CRC(0528c9ed) SHA1(52b67978fdeb97b77065575774a7ddeb49fe1d81) )
+
+ ROM_REGION( 0x800000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "vsjobj0l.ic1", 0x000001, 0x200000, CRC(e134faa7) SHA1(a844c8a5bd6d8907f9e5c7ba9e2ee8e9a886cd1e) ) /* These four located on MEMEXT OBJ8 PCB daughter-card */
+ ROM_LOAD16_BYTE( "vsjobj0u.ic2", 0x000000, 0x200000, CRC(974d0714) SHA1(976050eaf82d4b66e13c1c579e5521eb867527fb) )
+ ROM_LOAD16_BYTE( "vsjobj1l.ic3", 0x400001, 0x200000, CRC(ba46f967) SHA1(ddfb0ac7fba7369869e4df9a66d465a662eba2e6) )
+ ROM_LOAD16_BYTE( "vsjobj1u.ic4", 0x400000, 0x200000, CRC(09da7e9c) SHA1(e98e07a886a4fe369748fc97f3cee6a4bb668385) )
+
+ ROM_REGION( 0x400000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "vsjchr-0.8j", 0x000000, 0x100000, CRC(2af8ba7c) SHA1(74f5a382425974a9b2167bb01672dd13dea882f5) )
+ ROM_LOAD( "vsjchr-1.9j", 0x100000, 0x100000, CRC(b789d53e) SHA1(48b4cf956f9025e3c2b6f59b317596dfe0b6b142) )
+ ROM_LOAD( "vsjchr-2.10j", 0x200000, 0x100000, CRC(7ef80758) SHA1(c7e6d14f0823607dfd8a13ea6f164ffa85b5563e) )
+ ROM_LOAD( "vsjchr-3.11j", 0x300000, 0x100000, CRC(73ca58f6) SHA1(44bdc943fb10dc53279662cd528169a27d57e478) )
+
+ ROM_REGION( 0x80000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "vsjsha-0.5m", 0, 0x80000, CRC(78335ea4) SHA1(d4b9f179b1b456a866354ea308664c036de6414d) )
+ROM_END
+
+/*
+
+The Outfoxies
+Namco, 1994
+
+This game runs on Namco NB-2 hardware.
+
+
+Main Board
+----------
+
+NB-2 MAIN PCB 8639960102 (8639970102)
+|------------------------------------------------------------------------|
+||----------------------------------------------------------------------||
+|| J103 J104 J105 ||
+||VOL CY7C185 ||
+||458 CY7C185 156 123 C384 C384 C384 LH52250 C355 ||
+||JP5 CY7C185 JP11 LH52250 ||
+||LA4705 ||
+||LC78815 C116 LH52250 OU1SHAS.12S OU1SHAR.18S ||
+|| LH52250 JP8 JP10 ||
+|| JP4 ||
+|| ||
+||--------------------NB-2-MASK-ROM-PCB-(ON-TOP)------------------------||
+|J |
+| JP3 |
+|A JP2 145 PAL1 187 |
+| OU1VOI0.6N VSYNC LH52250 |
+|M HSYNC LH52250 |
+| C352 169 LH52250 TC511632 (x4) |
+|M 137 48.384MHz LH52250 |
+| |
+|A SW1 75 |
+| JP7 TC511632 (x4) |
+| PAL3 C383 |
+| C382 |
+| M5M1008 OU2MPRU.11D JP9 BR28C16 C390 |
+| M5M1008 PAL2 OU2MPRL.11C 68EC020 C385 |
+| OU1SPR0.5B JP6 OU1DAT1.20B |
+| JP1 |
+| OU1DAT0.20A |
+|------------------------------------------------------------------------|
+
+ROM Board
+---------
+
+NB-2 MASK ROM PCB 8639969800 (8639979800)
+-------------------------------------------------------------------------|
+| J103 J104 J105 |
+|OU1SCR0.1D OU1ROT0.3D |
+| |
+| OU1ROT1.3C OU1OBJ0L.4C OU1OBJ3L.6C OU1OBJ0U.8C OU1OBJ3U.9C |
+| |
+| OU1ROT2.3B OU1OBJ1L.4B OU1OBJ4L.6B OU1OBJ1U.8B OU1OBJ4U.9B |
+| |
+| OU1OBJ2L.4A OU1OBJ2U.8A |
+|------------------------------------------------------------------------|
+
+Notes:
+
+CLOCKs
+------
+MASTER clock 48.384 MHz
+68020 clock: 24.192MHz (MASTER / 2)
+HSYNC: 15.75kHz
+VSYNC: 59.7Hz
+
+DIPs
+----
+SW1: 2 position, both are OFF. Position 1 toggles TEST mode, position 2 is freeze.
+
+RAM
+---
+TC511632FL x 8 (SOP40, 32k x16)
+M5M51008AFP x 2 (SOP32, 128k x8)
+LH52250AN x 8 (SOP28, 32k x8)
+CY7C185 x 3 (SOP28, 8k x8)
+
+NAMCO CUSTOM CHIPS
+------------------
+75 (QFP80)
+123 (QFP80)
+137 (NDIP28)
+145 (QFP80)
+156 (QFP64)
+169 (QFP120)
+187 (QFP120)
+C116 (QFP64)
+C352 (QFP100)
+C355 (QFP160)
+C382 (QFP120)
+C383 (QFP100)
+C384 x 3 (QFP48)
+C385 (QFP144)
+C390 (DIP32, KEYCUS)
+
+OTHER
+-----
+BR28C16 (DIP24, EEPROM)
+2 gold pins labelled HSYNC & VSYNC, connected to Namco custom chip 145
+3 connectors for ROM PCB, labelled J103 (SCROLL), J104 (ROTATE), J105 (OBJECT)
+
+PALs
+----
+PAL1 PALCE16V8 (NAMCO CODE = NB2-1, PCB says "MIXER")
+PAL2 PAL16L8 (NAMCO CODE = NB1-2, PCB says "DEC75") (note! PAL is NB1-2)
+PAL3 PAL16L8 (NAMCO CODE = NB2-2, PCB says "SIZE")
+
+JUMPERs
+-------
+JP1 4M O-O O 1M Config jumper for ROM size, 4M = 27C4002, 1M = 27C1024
+JP2 A20 O O-O GND Config jumper for ROM size, GND = 16M, A20 = 32M
+JP3 A20 O O-O GND Config jumper for ROM size, GND = 16M, A20 = 32M
+JP4 O-O (2 pins shorted, hardwired on PCB)
+JP5 1 O O O L (hardwired on PCB, not shorted)
+JP6 1M O O-O 4M Config jumper for ROM size, 1M = 27C1024, 4M = 27C240
+JP7 O O-O /WDR (hardwired on PCB)
+JP8 GND O-O O A20 Config jumper for ROM size, GND = 16M, A20 = 32M
+JP9 CON O-O O COFF (hardwired on PCB)
+JP10 GND O-O O A20 Config jumper for ROM size, GND = 16M, A20 = 32M
+JP11 355 O O-O F32 (hardwired on PCB)
+
+ROMs, Main PCB
+--------------
+Filename / PCB ROM
+ROM Label Label Type
+------------------------------------------------------------------------------
+ou1dat0.20a DATA0 27C4002 Shared Data
+ou1dat1.20b DATA1 27C4002 Shared Data
+ou2mprl.11c PRGL 27C4002 \ Main program
+ou2mpru.11d PRGU 27C4002 /
+ou1spr0.5b SPRG 27C240 Sound program, linked to C352 and C382
+ou1voi0.6n VOICE0 MB8316200B Sound voices
+ou1shas.12s SHAPE-S 16M MASK Shape
+ou1shar.18s SHAPE-R 16M MASK Shape
+
+ROMs, MASK ROM PCB (All ROMs surface mounted)
+------------------
+Filename / PCB ROM
+ROM Label Label Type
+------------------------------------------------
+ou1scr0.1d SCR0 MB8316200B (16M SOP44)
+ou1rot0.3d ROT0 MB8316200B (16M SOP44)
+ou1rot1.3c ROT1 MB8316200B (16M SOP44)
+ou1rot2.3b ROT2 MB8316200B (16M SOP44)
+ou1obj0l.4c OBJ0L MB8316200B (16M SOP44)
+ou1obj1l.4b OBJ1L MB8316200B (16M SOP44)
+ou1obj2l.4a OBJ2L MB8316200B (16M SOP44)
+ou1obj3l.6c OBJ3L MB8316200B (16M SOP44)
+ou1obj4l.6b OBJ4L MB8316200B (16M SOP44)
+ou1obj0u.8c OBJ0U MB8316200B (16M SOP44)
+ou1obj1u.8b OBJ1U MB8316200B (16M SOP44)
+ou1obj2u.8a OBJ2U MB8316200B (16M SOP44)
+ou1obj3u.9c OBJ3U MB8316200B (16M SOP44)
+ou1obj4u.9b OBJ4U MB8316200B (16M SOP44)
+
+*/
+
+ROM_START( outfxies )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "ou2_mprl.11c", 0x00002, 0x80000, CRC(f414a32e) SHA1(9733ab087cfde1b8fb5b676d8a2eb5325ebdbb56) )
+ ROM_LOAD32_WORD( "ou2_mpru.11d", 0x00000, 0x80000, CRC(ab5083fb) SHA1(cb2e7a4838c2b80057edb83ea63116bccb1394d3) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "ou1spr0.5b", 0, 0x80000, CRC(60cee566) SHA1(2f3b96793816d90011586e0f9f71c58b636b6d4c) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "ou1voi0.6n", 0, 0x200000, CRC(2d8fb271) SHA1(bde9d45979728f5a2cd8ec89f5f81bf16b694cc2) )
+
+ ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "ou1shas.12s", 0, 0x200000,CRC(9bcb0397) SHA1(54a32b6394d0e6f51bfd281f8a4bafce6ddf6246) )
+
+ ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
+ ROM_LOAD( "ou1shar.18s", 0, 0x200000, CRC(fbb48194) SHA1(2d3ec5bc519fad2b755018f83fadfe0cba13c292) )
+
+ ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "ou1obj0l.4c", 0x0000001, 0x200000, CRC(1b4f7184) SHA1(a05d67842fce92f321d1fdd3bd30aa3427775a0c) )
+ ROM_LOAD16_BYTE( "ou1obj0u.8c", 0x0000000, 0x200000, CRC(d0a69794) SHA1(07d449e54e9971abeb9cd5bb7b372270fafa8bac) )
+ ROM_LOAD16_BYTE( "ou1obj1l.4b", 0x0400001, 0x200000, CRC(48a93e84) SHA1(6935ec161a12237d4cec732d42070f381c23b47c) )
+ ROM_LOAD16_BYTE( "ou1obj1u.8b", 0x0400000, 0x200000, CRC(999de386) SHA1(d4780ab1929a3e2c2df464363d6451a2bcecb2a2) )
+ ROM_LOAD16_BYTE( "ou1obj2l.4a", 0x0800001, 0x200000, CRC(30386cd0) SHA1(3563c5378288da58136f102381373bd6fcaeec21) )
+ ROM_LOAD16_BYTE( "ou1obj2u.8a", 0x0800000, 0x200000, CRC(ccada5f8) SHA1(75ed95bb295780126879d67bba4d0ae1da63c928) )
+ ROM_LOAD16_BYTE( "ou1obj3l.6c", 0x0c00001, 0x200000, CRC(5f41b44e) SHA1(3f5376fcd3e15af772df65b8eda4d5ee07ee5664) )
+ ROM_LOAD16_BYTE( "ou1obj3u.9c", 0x0c00000, 0x200000, CRC(bc852c8e) SHA1(4863302c45ee16aaf2c36dac07aceaf287959c53) )
+ ROM_LOAD16_BYTE( "ou1obj4l.6b", 0x1000001, 0x200000, CRC(99a5f9d7) SHA1(b0f46f4ac357918137031a19c36a56a47b7aefd6) )
+ ROM_LOAD16_BYTE( "ou1obj4u.9b", 0x1000000, 0x200000, CRC(70ecaabb) SHA1(521c6849526fb271e6447f6c4f5bfa081f96b91e) )
+
+ ROM_REGION( 0x600000, NAMCONB1_ROTGFXREGION, 0 )
+ ROM_LOAD( "ou1-rot0.3d", 0x000000, 0x200000, CRC(a50c67c8) SHA1(432b8451eb9eaa3078134fce1e5e2d58a8b64be3) )
+ ROM_LOAD( "ou1-rot1.3c", 0x200000, 0x200000, CRC(14866780) SHA1(4a54151fada4dfba7232e53e40623e5697eeb7db) )
+ ROM_LOAD( "ou1-rot2.3b", 0x400000, 0x200000, CRC(55ccf3af) SHA1(d98489aaa840cbffb21c47609961c1163b0336f3) )
+
+ ROM_REGION( 0x200000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "ou1-scr0.1d", 0x000000, 0x200000, CRC(b3b3f2e9) SHA1(541bd7e9ba12aff4ec4033bd9c6bb19476acb3c4) )
+
+ ROM_REGION32_BE( 0x100000, "data", 0 )
+ ROM_LOAD16_WORD_SWAP( "ou1dat0.20a", 0x00000, 0x80000, CRC(1a49aead) SHA1(df243aff1a6fb5bcf4d5d883c5af2374a4aff477) )
+ ROM_LOAD16_WORD_SWAP( "ou1dat1.20b", 0x80000, 0x80000, CRC(63bb119d) SHA1(d4c2820243b84c3f5cdf7f9e66bb50f53d0efed2) )
+ROM_END
+
+ROM_START( outfxiesj )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "ou1_mprl.11c", 0x00002, 0x80000, CRC(d3b9e530) SHA1(3f5fe5eea817a23dfe42e76f32912ce94d4c49c9) )
+ ROM_LOAD32_WORD( "ou1_mpru.11d", 0x00000, 0x80000, CRC(d98308fb) SHA1(fdefeebf56464a20e3aaefd88df4eee9f7b5c4f3) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "ou1spr0.5b", 0, 0x80000, CRC(60cee566) SHA1(2f3b96793816d90011586e0f9f71c58b636b6d4c) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) // Samples
+ ROM_LOAD( "ou1voi0.6n", 0, 0x200000, CRC(2d8fb271) SHA1(bde9d45979728f5a2cd8ec89f5f81bf16b694cc2) )
+
+ ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "ou1shas.12s", 0, 0x200000,CRC(9bcb0397) SHA1(54a32b6394d0e6f51bfd281f8a4bafce6ddf6246) )
+
+ ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
+ ROM_LOAD( "ou1shar.18s", 0, 0x200000, CRC(fbb48194) SHA1(2d3ec5bc519fad2b755018f83fadfe0cba13c292) )
+
+ ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "ou1obj0l.4c", 0x0000001, 0x200000, CRC(1b4f7184) SHA1(a05d67842fce92f321d1fdd3bd30aa3427775a0c) )
+ ROM_LOAD16_BYTE( "ou1obj0u.8c", 0x0000000, 0x200000, CRC(d0a69794) SHA1(07d449e54e9971abeb9cd5bb7b372270fafa8bac) )
+ ROM_LOAD16_BYTE( "ou1obj1l.4b", 0x0400001, 0x200000, CRC(48a93e84) SHA1(6935ec161a12237d4cec732d42070f381c23b47c) )
+ ROM_LOAD16_BYTE( "ou1obj1u.8b", 0x0400000, 0x200000, CRC(999de386) SHA1(d4780ab1929a3e2c2df464363d6451a2bcecb2a2) )
+ ROM_LOAD16_BYTE( "ou1obj2l.4a", 0x0800001, 0x200000, CRC(30386cd0) SHA1(3563c5378288da58136f102381373bd6fcaeec21) )
+ ROM_LOAD16_BYTE( "ou1obj2u.8a", 0x0800000, 0x200000, CRC(ccada5f8) SHA1(75ed95bb295780126879d67bba4d0ae1da63c928) )
+ ROM_LOAD16_BYTE( "ou1obj3l.6c", 0x0c00001, 0x200000, CRC(5f41b44e) SHA1(3f5376fcd3e15af772df65b8eda4d5ee07ee5664) )
+ ROM_LOAD16_BYTE( "ou1obj3u.9c", 0x0c00000, 0x200000, CRC(bc852c8e) SHA1(4863302c45ee16aaf2c36dac07aceaf287959c53) )
+ ROM_LOAD16_BYTE( "ou1obj4l.6b", 0x1000001, 0x200000, CRC(99a5f9d7) SHA1(b0f46f4ac357918137031a19c36a56a47b7aefd6) )
+ ROM_LOAD16_BYTE( "ou1obj4u.9b", 0x1000000, 0x200000, CRC(70ecaabb) SHA1(521c6849526fb271e6447f6c4f5bfa081f96b91e) )
+
+ ROM_REGION( 0x600000, NAMCONB1_ROTGFXREGION, 0 )
+ ROM_LOAD( "ou1-rot0.3d", 0x000000, 0x200000, CRC(a50c67c8) SHA1(432b8451eb9eaa3078134fce1e5e2d58a8b64be3) )
+ ROM_LOAD( "ou1-rot1.3c", 0x200000, 0x200000, CRC(14866780) SHA1(4a54151fada4dfba7232e53e40623e5697eeb7db) )
+ ROM_LOAD( "ou1-rot2.3b", 0x400000, 0x200000, CRC(55ccf3af) SHA1(d98489aaa840cbffb21c47609961c1163b0336f3) )
+
+ ROM_REGION( 0x200000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "ou1-scr0.1d", 0x000000, 0x200000, CRC(b3b3f2e9) SHA1(541bd7e9ba12aff4ec4033bd9c6bb19476acb3c4) )
+
+ ROM_REGION32_BE( 0x100000, "data", 0 )
+ ROM_LOAD16_WORD_SWAP( "ou1dat0.20a", 0x00000, 0x80000, CRC(1a49aead) SHA1(df243aff1a6fb5bcf4d5d883c5af2374a4aff477) )
+ ROM_LOAD16_WORD_SWAP( "ou1dat1.20b", 0x80000, 0x80000, CRC(63bb119d) SHA1(d4c2820243b84c3f5cdf7f9e66bb50f53d0efed2) )
+ROM_END
+
+
+ROM_START( machbrkr )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */
+ ROM_LOAD32_WORD( "mb1_mprl.11c", 0x00002, 0x80000, CRC(86cf0644) SHA1(07eeadda1d94c9be2f882edb6f2eb0b98292e500) )
+ ROM_LOAD32_WORD( "mb1_mpru.11d", 0x00000, 0x80000, CRC(fb1ff916) SHA1(e0ba96c1f26a60f87d8050e582e164d91e132183) )
+
+ ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */
+ ROM_LOAD( "mb1_spr0.5b", 0, 0x80000, CRC(d10f6272) SHA1(cb99e06e050dbf86998ea51ef2ca130b2acfb2f6) )
+
+ ROM_REGION( 0x1000000, "c352", 0 )
+ ROM_LOAD( "mb1_voi0.6n", 0x000000, 0x200000, CRC(d363ca3b) SHA1(71650b66ca3eb00f6ad7d3f1df0f37210b77b942) )
+ ROM_RELOAD( 0x400000, 0x200000)
+ ROM_LOAD( "mb1_voi1.6p", 0x800000, 0x200000, CRC(7e1c2603) SHA1(533098a54fb897931f1d75be9e69a5c047e4c446) )
+ ROM_RELOAD( 0xc00000, 0x200000)
+
+ ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 )
+ ROM_LOAD( "mb1_shas.12s", 0, 0x100000, CRC(c51c614b) SHA1(519ecad2e4543c05ec35a727f4c875ab006291af) )
+
+ ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 )
+ ROM_LOAD( "mb1_shar.18s", 0, 0x080000, CRC(d9329b10) SHA1(149c8804c07350f47af36bc7902371f1dfbed272) )
+
+ ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 )
+ ROM_LOAD16_BYTE( "mb1obj0l.4c", 0x0000001, 0x200000, CRC(056e6b1c) SHA1(44e49de80c925c8fbe04bf9328a77a50a305a5a7) )
+ ROM_LOAD16_BYTE( "mb1obj0u.8c", 0x0000000, 0x200000, CRC(e19b1714) SHA1(ff43bf3c8e8698934c4057c7b4c72db73929e2af) )
+ ROM_LOAD16_BYTE( "mb1obj1l.4b", 0x0400001, 0x200000, CRC(af69f7f1) SHA1(414544ec1a9aaffb751beaf63d937ce78d0cf9c6) )
+ ROM_LOAD16_BYTE( "mb1obj1u.8b", 0x0400000, 0x200000, CRC(e8ff9082) SHA1(a8c7feb33f6243f1f3bda00deffa695ac2b19171) )
+ ROM_LOAD16_BYTE( "mb1obj2l.4a", 0x0800001, 0x200000, CRC(3a5c7379) SHA1(ffe9a229eb04a894e5f3bb8ac2fc4617b5413ac3) )
+ ROM_LOAD16_BYTE( "mb1obj2u.8b", 0x0800000, 0x200000, CRC(b59cf5e0) SHA1(eee7511f117a4c1a24e4187e3f30e4d66f914a81) )
+ ROM_LOAD16_BYTE( "mb1obj3l.6c", 0x0c00001, 0x200000, CRC(9a765d58) SHA1(2e9ea0f76f80383fcf093e947e1fe161743e33fb) )
+ ROM_LOAD16_BYTE( "mb1obj3u.9c", 0x0c00000, 0x200000, CRC(5329c693) SHA1(955b3b8b9813826347a1211f71fa0a294b759ccd) )
+ ROM_LOAD16_BYTE( "mb1obj4l.6b", 0x1000001, 0x200000, CRC(a650b05e) SHA1(b247699433c7bf4b6ae990fc06255cfd48a248dd) )
+ ROM_LOAD16_BYTE( "mb1obj4u.9b", 0x1000000, 0x200000, CRC(6d0c37e9) SHA1(3a3feb74b890e0a933dcc791e5eee1fb4bdcbb69) )
+
+ ROM_REGION( 0x400000, NAMCONB1_ROTGFXREGION, 0 )
+ ROM_LOAD( "mb1_rot0.3d", 0x000000, 0x200000, CRC(bc353630) SHA1(2bbddda632298899716394ddcfe51412576ca74a) )
+ ROM_LOAD( "mb1_rot1.3c", 0x200000, 0x200000, CRC(cf7688cb) SHA1(29a040ce2c4e3bf671cff1a7a1ade06103db236a) )
+
+ ROM_REGION( 0x600000, NAMCONB1_TILEGFXREGION, 0 )
+ ROM_LOAD( "mb1_scr0.1d", 0x000000, 0x200000, CRC(c678d5f3) SHA1(98d1523bef50d444be9485c4e7f6932cccbea191) )
+ ROM_LOAD( "mb1_scr1.1c", 0x200000, 0x200000, CRC(fb2b1939) SHA1(bf9d7b93205e7012aa86693f3d2ba8f4d729bc97) )
+ ROM_LOAD( "mb1_scr2.1b", 0x400000, 0x200000, CRC(0e6097a5) SHA1(b6c64b3e34ba913138b6b7c3d99d2be4f3ceda08) )
+
+ ROM_REGION32_BE( 0x100000, "data", 0 )
+ ROM_LOAD16_WORD_SWAP( "mb1_dat0.20a", 0x00000, 0x80000, CRC(fb2e3cd1) SHA1(019b1d645a07619036522f42e0b9a537f39b6b93) )
+ROM_END
+
+
+/***************************************************************/
+
+GAME( 1994, nebulray, 0, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (World, NR2)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, nebulrayj,nebulray, namconb1, namconb1, namconb1_state, nebulray, ROT90, "Namco", "Nebulas Ray (Japan, NR1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_IMPERFECT_SOUND )
+GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_IMPERFECT_SOUND )
+
+/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
+GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_IMPERFECT_SOUND )
+GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_IMPERFECT_SOUND )