summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-03-30 02:31:23 +1100
committer Vas Crabb <vas@vastheman.com>2018-03-30 02:31:23 +1100
commit811b159b83900b693aea764807a48afd396fb185 (patch)
tree83c6ab77fd7045ebfd0cf77f2d1b8b51c9dd2376 /src
parent16125666f732199946c9634b399980f7783fc752 (diff)
neogeo: Further improvements:
* Removed LEDs/lamps from configurations that lack them. * Hooked up coin lockouts. * Improved I/O register mapping. * Added controller detection connections for AES. * Hooked up SPI-like outputs on SIT board used by irrmaze. * Added layout for irrmaze showing most lamps. * Irrmaze still missing card dispenser, air compressor and colour lamps.
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.cpp25
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.h1
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.cpp40
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.h10
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.cpp23
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.h10
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.cpp56
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.h16
-rw-r--r--src/mame/drivers/neogeo.cpp1009
-rw-r--r--src/mame/includes/neogeo.h1
-rw-r--r--src/mame/layout/irrmaze.lay118
11 files changed, 742 insertions, 567 deletions
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.cpp b/src/devices/bus/neogeo_ctrl/ctrl.cpp
index 4fb9914adb8..1f36549fe17 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.cpp
+++ b/src/devices/bus/neogeo_ctrl/ctrl.cpp
@@ -115,18 +115,12 @@ void neogeo_control_port_device::device_start()
uint8_t neogeo_control_port_device::read_ctrl()
{
- uint8_t data = 0xff;
- if (m_device)
- data &= m_device->read_ctrl();
- return data;
+ return m_device ? m_device->read_ctrl() : 0xff;
}
uint8_t neogeo_control_port_device::read_start_sel()
{
- uint8_t data = 0xff;
- if (m_device)
- data &= m_device->read_start_sel();
- return data;
+ return m_device ? m_device->read_start_sel() : 0xff;
}
@@ -170,26 +164,17 @@ void neogeo_ctrl_edge_port_device::device_start()
READ8_MEMBER(neogeo_ctrl_edge_port_device::in0_r)
{
- uint8_t data = 0xff;
- if (m_device)
- data &= m_device->in0_r(space, offset, mem_mask);
- return data;
+ return m_device ? m_device->in0_r(space, offset, mem_mask) : 0xff;
}
READ8_MEMBER(neogeo_ctrl_edge_port_device::in1_r)
{
- uint8_t data = 0xff;
- if (m_device)
- data &= m_device->in1_r(space, offset, mem_mask);
- return data;
+ return m_device ? m_device->in1_r(space, offset, mem_mask) : 0xff;
}
uint8_t neogeo_ctrl_edge_port_device::read_start_sel()
{
- uint8_t data = 0xff;
- if (m_device)
- data &= m_device->read_start_sel();
- return data;
+ return m_device ? m_device->read_start_sel() : 0xff;
}
void neogeo_ctrl_edge_port_device::write_ctrlsel(uint8_t data)
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.h b/src/devices/bus/neogeo_ctrl/ctrl.h
index 53ee9c53713..ea133f30b79 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.h
+++ b/src/devices/bus/neogeo_ctrl/ctrl.h
@@ -5,7 +5,6 @@
SNK Neo Geo controller port emulation
**********************************************************************/
-
#ifndef MAME_BUS_NEOGEO_CTRL_CTRL_H
#define MAME_BUS_NEOGEO_CTRL_CTRL_H
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.cpp b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
index 04d70294e5a..49379d02c47 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.cpp
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
@@ -9,6 +9,7 @@
#include "emu.h"
#include "irrmaze.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
@@ -32,16 +33,6 @@ static INPUT_PORTS_START( neogeo_irrmaze )
INPUT_PORTS_END
-//-------------------------------------------------
-// input_ports - device-specific input ports
-//-------------------------------------------------
-
-ioport_constructor neogeo_irrmaze_device::device_input_ports() const
-{
- return INPUT_PORTS_NAME( neogeo_irrmaze );
-}
-
-
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -55,28 +46,34 @@ neogeo_irrmaze_device::neogeo_irrmaze_device(const machine_config &mconfig, cons
device_neogeo_ctrl_edge_interface(mconfig, *this),
m_tx(*this, "TRACK_X"),
m_ty(*this, "TRACK_Y"),
- m_buttons(*this, "BUTTONS")
+ m_buttons(*this, "BUTTONS"),
+ m_spi_outputs(*this, "sit%u", 0U),
+ m_spi_sr(0U),
+ m_ctrl_sel(0U)
{
}
//-------------------------------------------------
-// device_start - device-specific startup
+// input_ports - device-specific input ports
//-------------------------------------------------
-void neogeo_irrmaze_device::device_start()
+ioport_constructor neogeo_irrmaze_device::device_input_ports() const
{
- save_item(NAME(m_ctrl_sel));
+ return INPUT_PORTS_NAME( neogeo_irrmaze );
}
//-------------------------------------------------
-// device_reset - device-specific reset
+// device_start - device-specific startup
//-------------------------------------------------
-void neogeo_irrmaze_device::device_reset()
+void neogeo_irrmaze_device::device_start()
{
- m_ctrl_sel = 0;
+ m_spi_outputs.resolve();
+
+ save_item(NAME(m_spi_sr));
+ save_item(NAME(m_ctrl_sel));
}
@@ -110,5 +107,14 @@ READ8_MEMBER(neogeo_irrmaze_device::in1_r)
void neogeo_irrmaze_device::write_ctrlsel(uint8_t data)
{
+ if (BIT(data & ~m_ctrl_sel, 3) && BIT(m_ctrl_sel, 1))
+ {
+ for (unsigned i = 0; 16U > i; ++i)
+ m_spi_outputs[i] = BIT(m_spi_sr, i);
+ }
+
+ if (BIT(data & ~m_ctrl_sel, 2))
+ m_spi_sr = (m_spi_sr >> 1) | (uint16_t(BIT(m_ctrl_sel, 1)) << 15);
+
m_ctrl_sel = data;
}
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.h b/src/devices/bus/neogeo_ctrl/irrmaze.h
index 855c936ff5c..4980a488098 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.h
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.h
@@ -5,15 +5,14 @@
SNK Neo Geo Irritating Maze Trackball Controller emulation
**********************************************************************/
-
#ifndef MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
#define MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
#pragma once
-
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -26,13 +25,10 @@ public:
// construction/destruction
neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual ioport_constructor device_input_ports() const override;
-
protected:
// device-level overrides
+ virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
- virtual void device_reset() override;
// device_neogeo_control_port_interface overrides
virtual DECLARE_READ8_MEMBER( in0_r ) override;
@@ -43,6 +39,8 @@ private:
required_ioport m_tx;
required_ioport m_ty;
required_ioport m_buttons;
+ output_finder<16> m_spi_outputs;
+ uint16_t m_spi_sr;
uint8_t m_ctrl_sel;
};
diff --git a/src/devices/bus/neogeo_ctrl/joystick.cpp b/src/devices/bus/neogeo_ctrl/joystick.cpp
index e854330a452..83c0513be95 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.cpp
+++ b/src/devices/bus/neogeo_ctrl/joystick.cpp
@@ -39,6 +39,7 @@ static INPUT_PORTS_START( neogeo_joy )
PORT_START("START_SELECT")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -64,7 +65,8 @@ neogeo_joystick_device::neogeo_joystick_device(const machine_config &mconfig, co
device_t(mconfig, NEOGEO_JOY, tag, owner, clock),
device_neogeo_control_port_interface(mconfig, *this),
m_joy(*this, "JOY"),
- m_ss(*this, "START_SELECT")
+ m_ss(*this, "START_SELECT"),
+ m_ctrl_sel(0x00)
{
}
@@ -75,34 +77,35 @@ neogeo_joystick_device::neogeo_joystick_device(const machine_config &mconfig, co
void neogeo_joystick_device::device_start()
{
+ save_item(NAME(m_ctrl_sel));
}
//-------------------------------------------------
-// device_reset - device-specific reset
+// read_ctrl
//-------------------------------------------------
-void neogeo_joystick_device::device_reset()
+uint8_t neogeo_joystick_device::read_ctrl()
{
+ return m_joy->read() & (BIT(m_ctrl_sel, 2) ? 0x7f : 0xff);
}
-
//-------------------------------------------------
-// read_ctrl
+// read_start_sel
//-------------------------------------------------
-uint8_t neogeo_joystick_device::read_ctrl()
+uint8_t neogeo_joystick_device::read_start_sel()
{
- return m_joy->read();
+ return m_ss->read();
}
//-------------------------------------------------
-// read_start_sel
+// write_ctrlsel
//-------------------------------------------------
-uint8_t neogeo_joystick_device::read_start_sel()
+void neogeo_joystick_device::write_ctrlsel(uint8_t data)
{
- return m_ss->read();
+ m_ctrl_sel = data;
}
diff --git a/src/devices/bus/neogeo_ctrl/joystick.h b/src/devices/bus/neogeo_ctrl/joystick.h
index 9be443077d9..605ea8d8d90 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.h
+++ b/src/devices/bus/neogeo_ctrl/joystick.h
@@ -5,15 +5,14 @@
SNK Neo Geo Joystick emulation
**********************************************************************/
-
#ifndef MAME_BUS_NEOGEO_CTRL_JOYSTICK_H
#define MAME_BUS_NEOGEO_CTRL_JOYSTICK_H
#pragma once
-
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -26,21 +25,20 @@ public:
// construction/destruction
neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual ioport_constructor device_input_ports() const override;
-
protected:
// device-level overrides
+ virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
- virtual void device_reset() override;
// device_neogeo_control_port_interface overrides
virtual uint8_t read_ctrl() override;
virtual uint8_t read_start_sel() override;
+ virtual void write_ctrlsel(uint8_t data) override;
private:
required_ioport m_joy;
required_ioport m_ss;
+ uint8_t m_ctrl_sel;
};
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.cpp b/src/devices/bus/neogeo_ctrl/mahjong.cpp
index 9c818abf4b3..7bb111f4779 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.cpp
+++ b/src/devices/bus/neogeo_ctrl/mahjong.cpp
@@ -9,6 +9,7 @@
#include "emu.h"
#include "mahjong.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
@@ -26,7 +27,7 @@ static INPUT_PORTS_START( neogeo_mj_ac )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_G )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ.1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_H )
@@ -36,28 +37,15 @@ static INPUT_PORTS_START( neogeo_mj_ac )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_N )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
- // is this actually connected?
PORT_START("MJ.2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- 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_BUTTON4 )
-
- PORT_START("MJ.3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -65,8 +53,9 @@ static INPUT_PORTS_START( neogeo_mj )
PORT_INCLUDE( neogeo_mj_ac )
PORT_START("START_SELECT")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -97,6 +86,7 @@ ioport_constructor neogeo_mjctrl_device::device_input_ports() const
neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, device_neogeo_control_port_interface(mconfig, *this)
+ , m_ctrl_sel(0x00)
, m_mjpanel(*this, "MJ.%u", 0)
{
}
@@ -124,31 +114,19 @@ void neogeo_mjctrl_ac_device::device_start()
//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void neogeo_mjctrl_ac_device::device_reset()
-{
- m_ctrl_sel = 0;
-}
-
-
-//-------------------------------------------------
// read_ctrl
//-------------------------------------------------
uint8_t neogeo_mjctrl_ac_device::read_ctrl()
{
- uint8_t res = 0;
- switch (m_ctrl_sel)
- {
- default:
- case 0x00: res = 0xff; break;
- case 0x09: res = m_mjpanel[0]->read(); break;
- case 0x12: res = m_mjpanel[1]->read(); break;
- case 0x1b: res = m_mjpanel[2]->read(); break;
- case 0x24: res = m_mjpanel[3]->read(); break;
- }
+ uint8_t res(0xff);
+
+ if (BIT(m_ctrl_sel, 0))
+ res &= m_mjpanel[0]->read();
+ if (BIT(m_ctrl_sel, 1))
+ res &= m_mjpanel[1]->read();
+ if (BIT(m_ctrl_sel, 2))
+ res &= m_mjpanel[2]->read();
return res;
}
@@ -168,5 +146,5 @@ void neogeo_mjctrl_ac_device::write_ctrlsel(uint8_t data)
uint8_t neogeo_mjctrl_device::read_start_sel()
{
- return m_ss->read();
+ return m_ss->read() & (BIT(m_ctrl_sel, 2) ? 0xfd : 0xff);
}
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.h b/src/devices/bus/neogeo_ctrl/mahjong.h
index ff59891dd59..d8f1c0ca41a 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.h
+++ b/src/devices/bus/neogeo_ctrl/mahjong.h
@@ -5,15 +5,14 @@
SNK Neo Geo Mahjong controller emulation
**********************************************************************/
-
#ifndef MAME_BUS_NEOGEO_CTRL_MAHJONG_H
#define MAME_BUS_NEOGEO_CTRL_MAHJONG_H
#pragma once
-
#include "ctrl.h"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -26,23 +25,21 @@ public:
// construction/destruction
neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual ioport_constructor device_input_ports() const override;
-
protected:
neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
+ virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
- virtual void device_reset() override;
// device_neogeo_control_port_interface overrides
virtual uint8_t read_ctrl() override;
virtual void write_ctrlsel(uint8_t data) override;
-private:
- required_ioport_array<4> m_mjpanel;
uint8_t m_ctrl_sel;
+
+private:
+ required_ioport_array<3> m_mjpanel;
};
// ======================> neogeo_mjctrl_device
@@ -53,11 +50,10 @@ public:
// construction/destruction
neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
-protected:
-
// device_neogeo_control_port_interface overrides
virtual uint8_t read_start_sel() override;
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 7ab701eb542..7824c053efc 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -63,36 +63,52 @@
Known motherboards:
===================
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+ | Model | Year | Slots | Generation | Video chipset | Notes |
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+ | MV-1 | 1990 | 1 | 1 | PRO-B0/PRO-C0/LSPC-A0 | Original full-featured 1-slot board |
+ | MV-1F | | 1 | 2 | NEO-B1/LSPC2-A2 | 2nd-generation 1-slot board, no memory card headers |
+ | MV-1FZ | | 1 | 2 | NEO-B1/LSPC2-A2 | Cost-reduced MV-1F without LED displays/mahjong inputs/stereo output |
+ | MV-1FZS | | 1 | 2 | NEO-B1/LSPC2-A2 | Spanish MV-1FZ |
+ | MV-1A | 1995 | 1 | 3 | NEO-MGA/NEO-GRC | 3rd-generation 1-slot board, removes coin lockouts |
+ | MV-1ACH | 1995 | 1 | 3 | NEO-MGA/NEO-GRC | Chinese MV-1A |
+ | MV-1AX | | 1 | 3 | NEO-MGA/NEO-GRC | MV-1A with soldered BIOS |
+ | MV-1B | | 1 | 4 | NEO-GRC2 | 4th-generation 1-slot board, soldered BIOS, no SM1 ROM, 8-pin SIT header |
+ | MV-1C | 1999 | 1 | 5 | NEO-GRZ | Final iteration, vertical cartridge slot |
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+ | MV-2B | | 2 | 1 | PRO-B0/PRO-C0/LSPC-A0 | Original full-featured 2-slot board |
+ | MV-2F | | 2 | 2 | NEO-B1/LSPC2-A2 | 2nd-geneation 2-slot board, onboard PCMCIA slot and 3.5mm jacks |
+ | MV-2FS | | 2 | 2 | NEO-B1/LSPC2-A2 | Spanish MV-2F |
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+ | MV-4 | 1990 | 4 | 1 | PRO-B0/PRO-C0/LSPC-A0 | Original 4-slot board |
+ | MV-4F | | 4 | 2 | NEO-B1/LSPC2-A2 | 2nd-generation 4-slot board |
+ | MV-4FS | | 4 | 2 | NEO-B1/LSPC2-A2 | Spanish MV-4 |
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+ | MV-6 | 1990 | 6 | 1 | PRO-B0/PRO-C0/LSPC-A0 | 2-board stack - mainboard and slot board |
+ +---------+------+-------+------------+-----------------------+--------------------------------------------------------------------------+
+
+ Other mainboards:
1 Slot:
- NEO-MVH MV1
NEO-MVH MV1-1
- NEO-MVH MV1A
. NEO-MVH MV1A CHX ??
- NEO-MVH MV1B (1996.1.19)
+ NEO-MVH MV1B (1996.1.19) (miniaturised, 8-pin header for irrmaze/kizuna4p)
. NEO-MVH MV1B CHX (1996.1.19) ??
NEO-MVH MV1B1 (1998.6.17)
NEO-MVH MV1C (1999.4.30)
- NEO-MVH MV1F
- NEO-MVH MV1FS
- NEO-MVH MV1FT
- NEO-MVH MV1FZ
- NEO-MVH MV1FZS
+ NEO-MVH MV1FT (cost-reduced MV1T without memory card headers)
+ NEO-MVH MV1T
2 Slot:
NEO-MVH MV2
- NEO-MVH MV2F
NEO-MVH MV2F-01
4 Slot:
- NEO-MVH MV4
- NEO-MVH MV4F
- NEO-MVH MV4FS
+ NEO-MVH MV4-25 (US MV4?)
NEO-MVH MV4FT
NEO-MVH MV4FT2
6 Slot:
- NEO-MVH MV6
NEO-MVH MV6F
@@ -132,28 +148,32 @@
Mainboard features
==================
- +------+-----+-----+-----+--------+--------+-------+-------+-------+-----+---+--------+-------+------+
- | |Slots|Edge |Coins|Counters|Lockouts|Mahjong|Mono/St|Memcard|7-seg|EL | BIOS |Data In|Orient|
- +------+-----+-----+-----+--------+--------+-------+-------+-------+-----+---+--------+-------+------+
- |MV-1 | 1 |JAMMA| 2 | 2 | 2 | 2 |switch |header | yes |no | socket | yes |horiz |
- |MV-1A | 1 |JAMMA| 2 | 2 | 0 | 0 | mono | none | no |no | socket | no |horiz |
- |MV-1AX| 1 |JAMMA| 2 | 2 | 0 | 0 | mono | none | no |no |soldered| no |horiz |
- |MV-1B | 1 |JAMMA| 2 | 2 | 0 | 0 | mono | none | no |no |soldered| no |horiz |
- |MV-1C | 1 |JAMMA| 2 | 2 | 0 | 0 | mono | none | no |no |soldered| no | vert |
- |MV-1F | 1 |JAMMA| 2 | 2 | 2 | 2 |switch | none | yes |no | socket | no |horiz |
- |MV-1FZ| 1 |JAMMA| 2 | 2 | 2 | 0 | mono | none | no |no | socket | yes |horiz |
- |MV-1T | 1 |JAMMA| 2 | 2 | 0 | 2 |switch | none | yes |no | socket | no |horiz |
- |MV-2F | 2 | MVS | 4 | 2 | 2 | 2 | both |onboard| yes |yes| socket | no | vert |
- |MV-4F | 4 | MVS | 4 | 2 | 2 | 2 | both |header | yes |yes| socket | no | vert |
- |MV-6F | 6 | MVS | 4 | 2 | 2 | 2 | both |header | yes |yes| socket | no | vert |
- +------+-----+-----+-----+--------+--------+-------+-------+-------+-----+---+--------+-------+------+
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
+ | |Vid |Slots|Edge |Coins|Counters|Lockouts|Mahjong|8-pin|Memcard|Mono/St|Phones|7-seg|EL | BIOS |Data In|Orient|
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
+ |MV-1 | B0 | 1 |JAMMA| 2 | 2 | 2 | 2 | no |header |switch |header| yes |no | socket | yes |horiz |
+ |MV-1F | B1 | 1 |JAMMA| 2 | 2 | 2 | 2 | no | none |switch |header| yes |no | socket | no |horiz |
+ |MV-1FZ | B1 | 1 |JAMMA| 2 | 2 | 2 | 0 | no | none | mono | none | no |no | socket | yes |horiz |
+ |MV-1A |MGA | 1 |JAMMA| 2 | 2 | 0 | 0 | no | none | mono | none | no |no | socket | no |horiz |
+ |MV-1AX |MGA | 1 |JAMMA| 2 | 2 | 0 | 0 | no | none | mono | none | no |no |soldered| no |horiz |
+ |MV-1B |GRC2| 1 |JAMMA| 2 | 2 | 0 | 0 | yes | none | mono | none | no |no |soldered| no |horiz |
+ |MV-1C |GRZ | 1 |JAMMA| 2 | 2 | 0 | 0 | yes | none | mono | none | no |no |soldered| no | vert |
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
+ |MV-2B | B0 | 2 | MVS | 4 | 2 | 2 | 2 | no |header | both |header| yes |yes| socket | no | vert |
+ |MV-2F | B1 | 2 | MVS | 4 | 2 | 2 | 2 | no |onboard| both |jacks | yes |yes| socket | no | vert |
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
+ |MV-4-25| B0 | 4 | MVS | 4 | 2 | 2 | 2 | no |header | both |header| yes |yes| socket | no | vert |
+ |MV-4F | B1 | 4 | MVS | 4 | 2 | 2 | 2 | no |header | both |header| yes |yes| socket | no | vert |
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
+ |MV-6 | B0 | 6 | MVS | 4 | 2 | 2 | 2 | no |header | both |header| yes |yes| socket | no | vert |
+ +-------+----+-----+-----+-----+--------+--------+-------+-----+-------+-------+------+-----+---+--------+-------+------+
* Function of the data input switch is unknown
* MVS connector has high-level single-ended stereo outputs and low-level mono output
* JAMMA connector has high-level balanced mono output
* Single-slot boards with stereo capability have a 4-pin stereo speaker header
* Boards with stereo support have headphone connectors or headers for them
- * Newer single-slot boards have an 8-pin header for the trackball or 4-player interface
+ * Newer single-slot boards have an 8-pin header for the trackball or 4-player interface (SIT)
*****************************************************************************
@@ -495,6 +515,7 @@
#include "softlist.h"
#include "speaker.h"
+#include "irrmaze.lh"
#include "neogeo.lh"
@@ -529,20 +550,41 @@ class mvs_state : public ngarcade_base_state
public:
mvs_state(const machine_config &mconfig, device_type type, const char *tag)
: ngarcade_base_state(mconfig, type, tag)
- , m_digits(*this, "digit%u", 1U)
- , m_lamps(*this, "lamp%u", 1U)
{
}
DECLARE_CUSTOM_INPUT_MEMBER(kizuna4p_start_r);
// mainboard configurations
+ void mv1fz(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+ virtual void neogeo_postload() override;
+ virtual void output_strobe(uint8_t bits, uint8_t data) { }
+ virtual void set_outputs() { }
+
+ virtual DECLARE_WRITE8_MEMBER(io_control_w) override;
+
+private:
+ uint8_t m_output_data;
+ uint8_t m_output_latch;
+};
+
+
+class mvs_led_state : public mvs_state
+{
+public:
+ mvs_led_state(const machine_config &mconfig, device_type type, const char *tag)
+ : mvs_state(mconfig, type, tag)
+ , m_digits(*this, "digit%u", 1U)
+ {
+ }
+
+ // mainboard configurations
void mv1(machine_config &config);
void mv1f(machine_config &config);
- void mv1fz(machine_config &config);
- void mv2f(machine_config &config);
- void mv4f(machine_config &config);
- void mv6f(machine_config &config);
// fixed software configurations
void neobase(machine_config &config);
@@ -614,28 +656,46 @@ public:
protected:
virtual void machine_start() override;
- virtual void neogeo_postload() override;
-
- virtual DECLARE_WRITE8_MEMBER(io_control_w) override;
+ virtual void output_strobe(uint8_t bits, uint8_t data) override;
+ virtual void set_outputs() override;
void mv1_fixed(machine_config &config);
private:
- void set_output_latch(uint8_t data);
- void set_output_data(uint8_t data);
- void set_outputs();
-
output_finder<4> m_digits;
- output_finder<6> m_lamps;
- uint8_t m_output_data;
- uint8_t m_output_latch;
- uint8_t m_el_value;
uint8_t m_led1_value;
uint8_t m_led2_value;
};
+class mvs_led_el_state : public mvs_led_state
+{
+public:
+ mvs_led_el_state(const machine_config &mconfig, device_type type, const char *tag)
+ : mvs_led_state(mconfig, type, tag)
+ , m_lamps(*this, "lamp%u", 1U)
+ {
+ }
+
+ // mainboard configurations
+ void mv2f(machine_config &config);
+ void mv4f(machine_config &config);
+ void mv6f(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+ virtual void output_strobe(uint8_t bits, uint8_t data) override;
+ virtual void set_outputs() override;
+
+private:
+ output_finder<6> m_lamps;
+
+ uint8_t m_el_value;
+};
+
+
class aes_state : public aes_base_state
{
public:
@@ -821,67 +881,63 @@ CUSTOM_INPUT_MEMBER(mvs_state::kizuna4p_start_r)
WRITE8_MEMBER(neogeo_base_state::io_control_w)
{
- switch (offset)
+ if ((offset & 0x38) == 0x00) // TODO: the mask is supposedly less restrictive on AES?
+ {
+ if (m_ctrl1) m_ctrl1->write_ctrlsel(data & 0x07);
+ if (m_ctrl2) m_ctrl2->write_ctrlsel((data >> 3) & 0x07);
+ if (m_edge) m_edge->write_ctrlsel(data & 0x3f); // FIXME: only MV-1B and MV-1C have this output
+ }
+ else
{
- case 0x00:
- if (m_ctrl1) m_ctrl1->write_ctrlsel(data);
- if (m_ctrl2) m_ctrl2->write_ctrlsel(data);
- if (m_edge) m_edge->write_ctrlsel(data);
- break;
-
- case 0x10:
- case 0x18:
- case 0x20:
- case 0x28:
- case 0x30:
- case 0x31:
-// case 0x32: break; // coin lockout
-// case 0x33: break; // coin lockout
- // arcade peripherals
- break;
-
- default:
logerror("PC: %x Unmapped I/O control write. Offset: %x Data: %x\n", m_maincpu->pc(), offset, data);
}
}
WRITE8_MEMBER(ngarcade_base_state::io_control_w)
{
- switch (offset)
+ switch (offset & 0x78)
{
+ case 0x00:
+ neogeo_base_state::io_control_w(space, offset, data, mem_mask);
+ break;
+
case 0x28:
m_upd4990a->data_in_w(BIT(data, 0));
m_upd4990a->clk_w(BIT(data, 1));
m_upd4990a->stb_w(BIT(data, 2));
break;
- case 0x30: // coin 1 counter
- case 0x31: // coin 2/3/4 counter
- machine().bookkeeping().coin_counter_w(BIT(offset, 0), BIT(data, 4));
+ case 0x30:
+ case 0x70:
+ if (BIT(offset, 1))
+ machine().bookkeeping().coin_lockout_w(BIT(offset, 0), BIT(offset, 6));
+ else
+ machine().bookkeeping().coin_counter_w(BIT(offset, 0), BIT(offset, 6));
break;
-// case 0x32: break; // coin lockout
-// case 0x33: break; // coin lockout
-
default:
- neogeo_base_state::io_control_w(space, offset, data, mem_mask);
+ logerror("PC: %x Unmapped I/O control write. Offset: %x Data: %x\n", m_maincpu->pc(), offset, data);
}
}
WRITE8_MEMBER(mvs_state::io_control_w)
{
- switch (offset)
+ switch (offset & 0x78)
{
case 0x10:
- if (m_slots[data] != nullptr) set_slot_idx(data);
+ if (m_slots[data])
+ set_slot_idx(data);
break;
case 0x18:
- set_output_latch(data);
+ // strobe on falling edge
+ output_strobe(m_output_latch & ~data, m_output_data);
+ m_output_latch = data;
+ set_outputs();
break;
case 0x20:
- set_output_data(data);
+ m_output_data = data;
break;
default:
@@ -1055,14 +1111,9 @@ WRITE16_MEMBER(neogeo_base_state::write_banksel)
*
*************************************/
-void mvs_state::set_outputs()
+void mvs_led_state::set_outputs()
{
- static constexpr uint8_t led_map[0x10] =
- { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 };
-
- // EL
- for (unsigned i = 0; 6U > i; ++i)
- m_lamps[i] = (m_el_value & 0x07) == (i + 1);
+ static constexpr uint8_t led_map[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 };
// LED1
m_digits[0] = led_map[m_led1_value >> 4];
@@ -1071,36 +1122,37 @@ void mvs_state::set_outputs()
// LED2
m_digits[2] = led_map[m_led2_value >> 4];
m_digits[3] = led_map[m_led2_value & 0x0f];
-}
+ mvs_state::set_outputs();
+}
-void mvs_state::set_output_latch(uint8_t data)
+void mvs_led_el_state::set_outputs()
{
- /* looks like the LEDs are set on the
- falling edge */
- uint8_t falling_bits = m_output_latch & ~data;
-
- if (falling_bits & 0x08)
- m_el_value = 16 - (m_output_data & 0x0f);
+ // EL
+ for (unsigned i = 0; 6U > i; ++i)
+ m_lamps[i] = m_el_value == i;
- if (falling_bits & 0x10)
- m_led1_value = ~m_output_data;
+ mvs_led_state::set_outputs();
+}
- if (falling_bits & 0x20)
- m_led2_value = ~m_output_data;
- if (falling_bits & 0xc7)
- logerror("%s Unmaped LED write. Data: %x\n", machine().describe_context(), falling_bits);
+void mvs_led_state::output_strobe(uint8_t bits, uint8_t data)
+{
+ if (BIT(bits, 4))
+ m_led1_value = ~data;
- m_output_latch = data;
+ if (BIT(bits, 5))
+ m_led2_value = ~data;
- set_outputs();
+ mvs_state::output_strobe(bits, data);
}
-
-void mvs_state::set_output_data(uint8_t data)
+void mvs_led_el_state::output_strobe(uint8_t bits, uint8_t data)
{
- m_output_data = data;
+ if (BIT(bits, 3))
+ m_el_value = ~data & 0x07;
+
+ mvs_led_state::output_strobe(bits, data);
}
@@ -1507,9 +1559,6 @@ void mvs_state::machine_start()
{
ngarcade_base_state::machine_start();
- m_digits.resolve();
- m_lamps.resolve();
-
m_sprgen->m_fixed_layer_bank_type = 0;
m_sprgen->set_screen(m_screen);
@@ -1518,11 +1567,27 @@ void mvs_state::machine_start()
save_item(NAME(m_output_data));
save_item(NAME(m_output_latch));
- save_item(NAME(m_el_value));
+}
+
+void mvs_led_state::machine_start()
+{
+ mvs_state::machine_start();
+
+ m_digits.resolve();
+
save_item(NAME(m_led1_value));
save_item(NAME(m_led2_value));
}
+void mvs_led_el_state::machine_start()
+{
+ mvs_led_state::machine_start();
+
+ m_lamps.resolve();
+
+ save_item(NAME(m_el_value));
+}
+
void neogeo_base_state::neogeo_postload()
{
@@ -1562,6 +1627,14 @@ void neogeo_base_state::machine_reset()
m_recurse = false;
}
+void ngarcade_base_state::machine_reset()
+{
+ neogeo_base_state::machine_reset();
+
+ machine().bookkeeping().coin_lockout_w(0, 1);
+ machine().bookkeeping().coin_lockout_w(1, 1);
+}
+
/*************************************
*
@@ -1594,7 +1667,7 @@ void neogeo_base_state::base_main_map(address_map &map)
{
map(0x320000, 0x320000).mirror(0x01fffe).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x360000, 0x37ffff).r(this, FUNC(aes_base_state::unmapped_r));
- map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(neogeo_base_state::io_control_w)).umask16(0x00ff);
+ map(0x380000, 0x3800ff).mirror(0x01ff00).w(this, FUNC(neogeo_base_state::io_control_w)).umask16(0x00ff);
map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(neogeo_base_state::unmapped_r));
map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff); // BITW1 (system control registers)
map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(neogeo_base_state::video_register_r));
@@ -1735,14 +1808,14 @@ INPUT_PORTS_START( neogeo )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) // coin 2 (combined) or P2 coin 1 (separate) for BIOS that supports it
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0018, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* what is this? When ACTIVE_HIGH + IN4 bit 6 ACTIVE_LOW MVS-4 slot is detected */
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_SPECIAL ) // sense: 4-slot
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, tp_r)
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, data_out_r)
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_base_state,get_audio_result, nullptr)
PORT_START("TEST")
PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* what is this? If ACTIVE_LOW, MVS-6 slot detected, when ACTIVE_HIGH MVS-1 slot (AES) detected */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) // sense: JAMMA
PORT_SERVICE_NO_TOGGLE( 0x0080, IP_ACTIVE_LOW )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -1759,7 +1832,14 @@ static INPUT_PORTS_START( neogeo_mvs )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN4 ) // P2 coin 2 (separate) for BIOS that supports it
PORT_MODIFY("TEST")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SPECIAL )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SPECIAL ) // sense: MVS
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( neogeo_mvs6 )
+ PORT_INCLUDE( neogeo_mvs )
+
+ PORT_MODIFY("AUDIO/COIN")
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) // sense: 6-slot
INPUT_PORTS_END
@@ -1893,7 +1973,7 @@ MACHINE_CONFIG_END
MCFG_NEOGEO_CARTRIDGE_ADD("cslot1", neogeo_cart, _default) \
MCFG_SET_IMAGE_LOADABLE(false)
-MACHINE_CONFIG_START(mvs_state::mv1)
+MACHINE_CONFIG_START(mvs_led_state::mv1)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -1909,7 +1989,7 @@ MACHINE_CONFIG_START(mvs_state::mv1)
MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mv1f)
+MACHINE_CONFIG_START(mvs_led_state::mv1f)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -1934,7 +2014,7 @@ MACHINE_CONFIG_START(mvs_state::mv1fz)
MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mv2f)
+MACHINE_CONFIG_START(mvs_led_el_state::mv2f)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -1951,7 +2031,7 @@ MACHINE_CONFIG_START(mvs_state::mv2f)
MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mv4f)
+MACHINE_CONFIG_START(mvs_led_el_state::mv4f)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -1970,7 +2050,7 @@ MACHINE_CONFIG_START(mvs_state::mv4f)
MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mv6f)
+MACHINE_CONFIG_START(mvs_led_el_state::mv6f)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -1991,7 +2071,7 @@ MACHINE_CONFIG_START(mvs_state::mv6f)
MCFG_SOFTWARE_LIST_ADD("cart_list", "neogeo")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mv1_fixed)
+MACHINE_CONFIG_START(mvs_led_state::mv1_fixed)
neogeo_arcade(config);
neogeo_stereo(config);
@@ -2293,14 +2373,14 @@ ROM_END
-// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT
-CONS( 1990, neogeo, 0, 0, mv6f, neogeo_mvs, mvs_state, 0, "SNK", "Neo-Geo MV-6F", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE )
-CONS( 1990, ng_mv4f, neogeo, 0, mv4f, neogeo_mvs, mvs_state, 0, "SNK", "Neo-Geo MV-4F", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, ng_mv2f, neogeo, 0, mv2f, neogeo_mvs, mvs_state, 0, "SNK", "Neo-Geo MV-2F", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, ng_mv1, neogeo, 0, mv1, neogeo, mvs_state, 0, "SNK", "Neo-Geo MV-1", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, ng_mv1f, neogeo, 0, mv1f, neogeo, mvs_state, 0, "SNK", "Neo-Geo MV-1F", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, ng_mv1fz, neogeo, 0, mv1fz, neogeo, mvs_state, 0, "SNK", "Neo-Geo MV-1FZ", MACHINE_SUPPORTS_SAVE )
-CONS( 1990, aes, 0, 0, aes, aes, aes_state, 0, "SNK", "Neo-Geo AES", MACHINE_SUPPORTS_SAVE )
+// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT
+CONS( 1990, neogeo, 0, 0, mv6f, neogeo_mvs6, mvs_led_el_state, 0, "SNK", "Neo-Geo MV-6F", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE )
+CONS( 1990, ng_mv4f, neogeo, 0, mv4f, neogeo_mvs, mvs_led_el_state, 0, "SNK", "Neo-Geo MV-4F", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, ng_mv2f, neogeo, 0, mv2f, neogeo_mvs, mvs_led_el_state, 0, "SNK", "Neo-Geo MV-2F", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, ng_mv1, neogeo, 0, mv1, neogeo, mvs_led_state, 0, "SNK", "Neo-Geo MV-1", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, ng_mv1f, neogeo, 0, mv1f, neogeo, mvs_led_state, 0, "SNK", "Neo-Geo MV-1F", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, ng_mv1fz, neogeo, 0, mv1fz, neogeo, mvs_state, 0, "SNK", "Neo-Geo MV-1FZ", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, aes, 0, 0, aes, aes, aes_state, 0, "SNK", "Neo-Geo AES", MACHINE_SUPPORTS_SAVE )
@@ -2314,18 +2394,18 @@ CONS( 1990, aes, 0, 0, aes, aes, aes_state, 0, "
// machine config for one-game fixed config, loaded without using softlists
-MACHINE_CONFIG_START(mvs_state::neobase)
+MACHINE_CONFIG_START(mvs_led_state::neobase)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
MACHINE_CONFIG_END
// used by fatfury2 & ssideki
-MACHINE_CONFIG_START(mvs_state::fatfur2)
+MACHINE_CONFIG_START(mvs_led_state::fatfur2)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_fatfur2")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kizuna4p)
+MACHINE_CONFIG_START(mvs_led_state::kizuna4p)
mv1_fixed(config);
MCFG_DEVICE_REMOVE("edge")
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "kiz4p", true)
@@ -2333,236 +2413,240 @@ MACHINE_CONFIG_START(mvs_state::kizuna4p)
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof97oro)
+MACHINE_CONFIG_START(mvs_led_state::kof97oro)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kof97oro")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kog)
+MACHINE_CONFIG_START(mvs_led_state::kog)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kog")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::irrmaze)
+MACHINE_CONFIG_START(mvs_led_state::irrmaze)
mv1_fixed(config);
+
MCFG_DEVICE_REMOVE("edge")
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "irrmaze", true)
+ MCFG_DEFAULT_LAYOUT(layout_irrmaze)
+
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof98)
+MACHINE_CONFIG_START(mvs_led_state::kof98)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_kof98")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslugx)
+MACHINE_CONFIG_START(mvs_led_state::mslugx)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_mslugx")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof99)
+MACHINE_CONFIG_START(mvs_led_state::kof99)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_kof99")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof99k)
+MACHINE_CONFIG_START(mvs_led_state::kof99k)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_kof99k")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::garou)
+MACHINE_CONFIG_START(mvs_led_state::garou)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_garou")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::garouh)
+MACHINE_CONFIG_START(mvs_led_state::garouh)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_garouh")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::garoubl)
+MACHINE_CONFIG_START(mvs_led_state::garoubl)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_garoubl")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslug3)
+MACHINE_CONFIG_START(mvs_led_state::mslug3)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_mslug3")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslug3h)
+MACHINE_CONFIG_START(mvs_led_state::mslug3h)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_mslug3h")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslug3b6)
+MACHINE_CONFIG_START(mvs_led_state::mslug3b6)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_mslug3b6")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2000)
+MACHINE_CONFIG_START(mvs_led_state::kof2000)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_kof2k")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2000n)
+MACHINE_CONFIG_START(mvs_led_state::kof2000n)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_kof2000n")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::zupapa)
+MACHINE_CONFIG_START(mvs_led_state::zupapa)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_zupapa")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::sengoku3)
+MACHINE_CONFIG_START(mvs_led_state::sengoku3)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_sengoku3")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2001)
+MACHINE_CONFIG_START(mvs_led_state::kof2001)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_kof2001")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::cthd2k3)
+MACHINE_CONFIG_START(mvs_led_state::cthd2k3)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_cthd2k3")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::ct2k3sp)
+MACHINE_CONFIG_START(mvs_led_state::ct2k3sp)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ct2k3sp")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::ct2k3sa)
+MACHINE_CONFIG_START(mvs_led_state::ct2k3sa)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ct2k3sa")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2002)
+MACHINE_CONFIG_START(mvs_led_state::kof2002)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_kof2k2")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2002b)
+MACHINE_CONFIG_START(mvs_led_state::kof2002b)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2b")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k2pls)
+MACHINE_CONFIG_START(mvs_led_state::kf2k2pls)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_kf2k2p")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k2mp)
+MACHINE_CONFIG_START(mvs_led_state::kf2k2mp)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2mp")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k2mp2)
+MACHINE_CONFIG_START(mvs_led_state::kf2k2mp2)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k2mp2")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof10th)
+MACHINE_CONFIG_START(mvs_led_state::kof10th)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf10th")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf10thep)
+MACHINE_CONFIG_START(mvs_led_state::kf10thep)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf10thep")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k5uni)
+MACHINE_CONFIG_START(mvs_led_state::kf2k5uni)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k5uni")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2k4se)
+MACHINE_CONFIG_START(mvs_led_state::kof2k4se)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k4se")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslug5)
+MACHINE_CONFIG_START(mvs_led_state::mslug5)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_mslug5")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::ms5plus)
+MACHINE_CONFIG_START(mvs_led_state::ms5plus)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_ms5plus")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::svc)
+MACHINE_CONFIG_START(mvs_led_state::svc)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_svc")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::svcboot)
+MACHINE_CONFIG_START(mvs_led_state::svcboot)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcboot")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::svcplus)
+MACHINE_CONFIG_START(mvs_led_state::svcplus)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcplus")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::svcplusa)
+MACHINE_CONFIG_START(mvs_led_state::svcplusa)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcplusa")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::svcsplus)
+MACHINE_CONFIG_START(mvs_led_state::svcsplus)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_svcsplus")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::samsho5)
+MACHINE_CONFIG_START(mvs_led_state::samsho5)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_samsh5")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::samsho5b)
+MACHINE_CONFIG_START(mvs_led_state::samsho5b)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_samsho5b")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2003)
+MACHINE_CONFIG_START(mvs_led_state::kof2003)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_kf2k3")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kof2003h)
+MACHINE_CONFIG_START(mvs_led_state::kof2003h)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pvc_kf2k3h")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k3bl)
+MACHINE_CONFIG_START(mvs_led_state::kf2k3bl)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3bl")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k3pl)
+MACHINE_CONFIG_START(mvs_led_state::kf2k3pl)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3pl")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::kf2k3upl)
+MACHINE_CONFIG_START(mvs_led_state::kf2k3upl)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kf2k3upl")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::samsh5sp)
+MACHINE_CONFIG_START(mvs_led_state::samsh5sp)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_sams5s")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::neogeo_mj)
+MACHINE_CONFIG_START(mvs_led_state::neogeo_mj)
mv1_fixed(config);
+
//no joystick panel
MCFG_DEVICE_REMOVE("edge")
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "", true)
@@ -2576,32 +2660,32 @@ MACHINE_CONFIG_START(mvs_state::neogeo_mj)
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::preisle2)
+MACHINE_CONFIG_START(mvs_led_state::preisle2)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_preisle2")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::nitd)
+MACHINE_CONFIG_START(mvs_led_state::nitd)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_nitd")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::s1945p)
+MACHINE_CONFIG_START(mvs_led_state::s1945p)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_s1945p")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::lans2004)
+MACHINE_CONFIG_START(mvs_led_state::lans2004)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_lans2004")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::pnyaa)
+MACHINE_CONFIG_START(mvs_led_state::pnyaa)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_pnyaa")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::popbounc)
+MACHINE_CONFIG_START(mvs_led_state::popbounc)
mv1_fixed(config);
MCFG_DEVICE_REMOVE("edge")
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "dial", true)
@@ -2609,47 +2693,47 @@ MACHINE_CONFIG_START(mvs_state::popbounc)
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::ganryu)
+MACHINE_CONFIG_START(mvs_led_state::ganryu)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_ganryu")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::bangbead)
+MACHINE_CONFIG_START(mvs_led_state::bangbead)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_bangbead")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::mslug4)
+MACHINE_CONFIG_START(mvs_led_state::mslug4)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_mslug4")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::ms4plus)
+MACHINE_CONFIG_START(mvs_led_state::ms4plus)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_ms4p")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::rotd)
+MACHINE_CONFIG_START(mvs_led_state::rotd)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("pcm2_rotd")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::matrim)
+MACHINE_CONFIG_START(mvs_led_state::matrim)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("k2k2_matrim")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::matrimbl)
+MACHINE_CONFIG_START(mvs_led_state::matrimbl)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_matrimbl")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::jockeygp)
+MACHINE_CONFIG_START(mvs_led_state::jockeygp)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc50_jockeygp")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::vliner)
+MACHINE_CONFIG_START(mvs_led_state::vliner)
mv1_fixed(config);
// input handlers are installed at DRIVER_INIT...
MCFG_DEVICE_REMOVE("edge")
@@ -2659,7 +2743,7 @@ MACHINE_CONFIG_START(mvs_state::vliner)
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_vliner")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(mvs_state::sbp)
+MACHINE_CONFIG_START(mvs_led_state::sbp)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_sbp")
MACHINE_CONFIG_END
@@ -2773,6 +2857,15 @@ MACHINE_CONFIG_END
// Game specific input definitions
+static INPUT_PORTS_START( neogeo_mj )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Joystick ) )
+ PORT_DIPSETTING( 0x00, "Mahjong Panel" )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( kizuna4p )
PORT_INCLUDE( neogeo )
@@ -2782,7 +2875,7 @@ static INPUT_PORTS_START( kizuna4p )
PORT_DIPSETTING( 0x00, "4" )
PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mvs_state, kizuna4p_start_r, nullptr)
+ PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, mvs_led_state, kizuna4p_start_r, nullptr)
INPUT_PORTS_END
static INPUT_PORTS_START( vliner )
@@ -11172,329 +11265,329 @@ ROM_END
NEOGEO ROM-cart:2004/07/15
****************************************************************************/
-// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR
+// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR
// SNK
-GAME( 1990, nam1975, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "NAM-1975 (NGM-001 ~ NGH-001)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, bstars, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Baseball Stars Professional (NGM-002)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, bstarsh, bstars, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Baseball Stars Professional (NGH-002)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, tpgolf, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Top Player's Golf (NGM-003 ~ NGH-003)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, mahretsu, neogeo, neogeo_mj, neogeo, mvs_state, 0, ROT0, "SNK", "Mahjong Kyo Retsuden (NGM-004 ~ NGH-004)", MACHINE_SUPPORTS_SAVE ) // does not support mahjong panel in MVS mode <- it actually works fine???
-GAME( 1990, ridhero, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Riding Hero (NGM-006 ~ NGH-006)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
-GAME( 1990, ridheroh, ridhero, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Riding Hero (set 2)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
-GAME( 1991, alpham2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, alpham2p, alpham2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, cyberlip, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Cyber-Lip (NGM-010)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, superspy, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Super Spy (NGM-011 ~ NGH-011)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, mutnat, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Mutation Nation (NGM-014 ~ NGH-014)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, kotm, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "King of the Monsters (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, kotmh, kotm, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "King of the Monsters (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, sengoku, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGM-017 ~ NGH-017)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, sengokuh, sengoku, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGH-017, US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, burningf, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Burning Fight (NGM-018 ~ NGH-018)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, burningfh, burningf, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Burning Fight (NGH-018, US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, burningfpa, burningf, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Burning Fight (prototype, ver 23.3, 910326)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, burningfp, burningf, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Burning Fight (prototype, older)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, lbowling, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "League Bowling (NGM-019 ~ NGH-019)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
-GAME( 1991, gpilots, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Ghost Pilots (NGM-020 ~ NGH-020)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, gpilotsh, gpilots, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Ghost Pilots (NGH-020, US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, joyjoy, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, quizdais, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, quizdaisk, quizdais, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (Korean release)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, lresort, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Last Resort", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, lresortp, lresort, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Last Resort (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, eightman, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK / Pallas", "Eight Man (NGM-025 ~ NGH-025)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, legendos, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Legend of Success Joe / Ashita no Joe Densetsu", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, 2020bb, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, 2020bba, 2020bb, neobase, neogeo, mvs_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, 2020bbh, 2020bb, neobase, neogeo, mvs_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, socbrawl, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Soccer Brawl (NGM-031)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, socbrawlh, socbrawl, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Soccer Brawl (NGH-031)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, fatfury1, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (NGM-033 ~ NGH-033)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, roboarmy, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Robo Army", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, roboarma, roboarmy, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Robo Army (NGM-032 ~ NGH-032)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, fbfrenzy, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Football Frenzy (NGM-034 ~ NGH-034)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, kotm2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (NGM-039 ~ NGH-039)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, kotm2a, kotm2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (older)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, kotm2p, kotm2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, sengoku2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Sengoku 2 / Sengoku Denshou 2", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, bstars2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Baseball Stars 2", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, quizdai2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042 ~ NGH-042)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, 3countb, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "3 Count Bout / Fire Suplex (NGM-043 ~ NGH-043)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, aof, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Art of Fighting / Ryuuko no Ken (NGM-044 ~ NGH-044)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, samsho, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGM-045)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, samshoh, samsho, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGH-045)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, tophuntr, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGM-046)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, tophuntrh, tophuntr, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGH-046)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, fatfury2, neogeo, fatfur2, neogeo, mvs_state, 0, ROT0, "SNK", "Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, ssideki, neogeo, fatfur2, neogeo, mvs_state, 0, ROT0, "SNK", "Super Sidekicks / Tokuten Ou", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, kof94, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '94 (NGM-055 ~ NGH-055)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, aof2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, aof2a, aof2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, fatfursp, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, fatfurspa, fatfursp, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, savagere, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Savage Reign / Fu'un Mokushiroku - Kakutou Sousei", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, ssideki2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - Real Fight Football (NGM-061 ~ NGH-061)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, samsho2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (NGM-063 ~ NGH-063)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, samsho2k, samsho2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, samsho2ka, samsho2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, fatfury3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (NGM-069 ~ NGH-069)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, ssideki3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Michi", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, kof95, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGM-084)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, kof95a, kof95, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGM-084, alt board)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, kof95h, kof95, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGH-084)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, samsho3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, samsho3h, samsho3, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, fswords, samsho3, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Fighters Swords (Korean release of Samurai Shodown III)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, rbff1, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095 ~ NGH-095)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, rbff1a, rbff1, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, rbff1k, rbff1, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, aof3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, aof3k, aof3, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
-GAME( 1996, kof96, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '96 (NGM-214)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, kof96h, kof96, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '96 (NGH-214)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ssideki4, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, kizuna, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, kizuna4p, kizuna, kizuna4p, kizuna4p, mvs_state, 0, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, samsho4, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, samsho4k, samsho4, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, rbffspec, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, rbffspeck, rbffspec, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kof97, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '97 (NGM-2320)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kof97h, kof97, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '97 (NGH-2320)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kof97k, kof97, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '97 (Korean release)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kof97pls, kof97, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters '97 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kof97oro, kof97, kof97oro, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters '97 Chongchu Jianghu Plus 2003 (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, kog, kof97, kog, neogeo, mvs_state, 0, ROT0, "bootleg", "King of Gladiator (The King of Fighters '97 bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // protected bootleg
-GAME( 1997, lastblad, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, lastbladh, lastblad, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, lastsold, lastblad, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Last Soldier (Korean release of The Last Blade)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, irrmaze, neogeo, irrmaze, neogeo, mvs_state, 0, ROT0, "SNK / Saurus", "The Irritating Maze / Ultra Denryu Iraira Bou", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, rbff2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGM-2400)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, rbff2h, rbff2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGH-2400)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, rbff2k, rbff2, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
-GAME( 1998, mslug2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Metal Slug 2 - Super Vehicle-001/II (NGM-2410 ~ NGH-2410)", MACHINE_SUPPORTS_SAVE )
-GAME( 2015, mslug2t, mslug2, neobase, neogeo, mvs_state, 0, ROT0, "hack (trap15)", "Metal Slug 2 Turbo (NGM-9410) (hack)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, kof98, neogeo, kof98, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, kof98a, kof98, kof98, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420, alt board)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, kof98k, kof98, kof98, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, kof98ka, kof98, kof98, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, kof98h, kof98, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGH-2420)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, lastbld2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430 ~ NGH-2430)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, neocup98, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Neo-Geo Cup '98 - The Road to the Victory", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, mslugx, neogeo, mslugx, neogeo, mvs_state, 0, ROT0, "SNK", "Metal Slug X - Super Vehicle-001 (NGM-2500 ~ NGH-2500)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, kof99, neogeo, kof99, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGM-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 1999, kof99h, kof99, kof99, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGH-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX, crashes going into attract demo */
-GAME( 1999, kof99e, kof99, kof99, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (earlier)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 1999, kof99k, kof99, kof99, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (Korean release)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 1999, kof99ka, kof99, kof99k, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (Korean release, non-encrypted program)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 1999, kof99p, kof99, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, garou, neogeo, garou, neogeo, mvs_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 1999, garouh, garou, garouh, neogeo, mvs_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530 ~ NGH-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 1999, garoup, garou, neobase, neogeo, mvs_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, garoubl, garou, garoubl, neogeo, mvs_state, 0, ROT0, "bootleg", "Garou - Mark of the Wolves (bootleg)", MACHINE_SUPPORTS_SAVE ) /* Bootleg of garoup */
-GAME( 2000, mslug3, neogeo, mslug3, neogeo, mvs_state, 0, ROT0, "SNK", "Metal Slug 3 (NGM-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 2000, mslug3h, mslug3, mslug3h, neogeo, mvs_state, 0, ROT0, "SNK", "Metal Slug 3 (NGH-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2000, mslug3b6, mslug3, mslug3b6, neogeo, mvs_state, 0, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.c ;-) */
-GAME( 2000, kof2000, neogeo, kof2000, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters 2000 (NGM-2570 ~ NGH-2570)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
-GAME( 2000, kof2000n, kof2000, kof2000n, neogeo, mvs_state, 0, ROT0, "SNK", "The King of Fighters 2000 (not encrypted)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2001, zupapa, neogeo, zupapa, neogeo, mvs_state, 0, ROT0, "SNK", "Zupapa!" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2001, sengoku3, neogeo, sengoku3, neogeo, mvs_state, 0, ROT0, "Noise Factory / SNK", "Sengoku 3 / Sengoku Densho 2001" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2001, kof2001, neogeo, kof2001, neogeo, mvs_state, 0, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGM-262?)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2001, kof2001h, kof2001, kof2001, neogeo, mvs_state, 0, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGH-2621)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2003, cthd2003, kof2001, cthd2k3, neogeo, mvs_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
-GAME( 2003, ct2k3sp, kof2001, ct2k3sp, neogeo, mvs_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
-GAME( 2003, ct2k3sa, kof2001, ct2k3sa, neogeo, mvs_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus alternate (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2001 */
-GAME( 2002, kof2002, neogeo, kof2002, neogeo, mvs_state, 0, ROT0, "Eolith / Playmore", "The King of Fighters 2002 (NGM-2650 ~ NGH-2650)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2002, kof2002b, kof2002, kof2002b, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2002 (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, kf2k2pls, kof2002, kf2k2pls, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 1)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2002, kf2k2pla, kof2002, kf2k2pls, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 2)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2002, kf2k2mp, kof2002, kf2k2mp, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2002, kf2k2mp2, kof2002, kf2k2mp2, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus II (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2002, kof10th, kof2002, kof10th, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
-GAME( 2005, kf10thep, kof2002, kf10thep, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
-GAME( 2004, kf2k5uni, kof2002, kf2k5uni, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
-GAME( 2004, kof2k4se, kof2002, kof2k4se, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2002 */
-GAME( 2003, mslug5, neogeo, mslug5, neogeo, mvs_state, 0, ROT0, "SNK Playmore", "Metal Slug 5 (NGM-2680)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, mslug5h, mslug5, mslug5, neogeo, mvs_state, 0, ROT0, "SNK Playmore", "Metal Slug 5 (NGH-2680)", MACHINE_SUPPORTS_SAVE ) /* Also found in later MVS carts */
-GAME( 2003, ms5plus, mslug5, ms5plus, neogeo, mvs_state, 0, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svc, neogeo, svc, neogeo, mvs_state, 0, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcboot, svc, svcboot, neogeo, mvs_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcplus, svc, svcplus, neogeo, mvs_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcplusa, svc, svcplusa, neogeo, mvs_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, svcsplus, svc, svcsplus, neogeo, mvs_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Super Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, samsho5, neogeo, samsho5, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, samsho5a, samsho5, samsho5, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, samsho5h, samsho5, samsho5, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGH-2700)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, samsho5b, samsho5, samsho5b, neogeo, mvs_state, 0, ROT0, "bootleg", "Samurai Shodown V / Samurai Spirits Zero (bootleg)", MACHINE_SUPPORTS_SAVE ) // different program scrambling
-GAME( 2003, kof2003, neogeo, kof2003, neogeo, mvs_state, 0, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGM-2710)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, kof2003h, kof2003, kof2003h, neogeo, mvs_state, 0, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGH-2710)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, kf2k3bl, kof2003, kf2k3bl, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart (unless it was a bootleg pcb with the new bios?)
-GAME( 2003, kf2k3bla, kof2003, kf2k3pl, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
-GAME( 2003, kf2k3pl, kof2003, kf2k3pl, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
-GAME( 2003, kf2k3upl, kof2003, kf2k3upl, neogeo, mvs_state, 0, ROT0, "bootleg", "The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
-GAME( 2004, samsh5sp, neogeo, samsh5sp, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720)", MACHINE_SUPPORTS_SAVE )
-GAME( 2004, samsh5sph, samsh5sp, samsh5sp, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 2nd release, less censored)", MACHINE_SUPPORTS_SAVE )
-GAME( 2004, samsh5spho, samsh5sp, samsh5sp, neogeo, mvs_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 1st release, censored)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, nam1975, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "NAM-1975 (NGM-001 ~ NGH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bstars, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Baseball Stars Professional (NGM-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bstarsh, bstars, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Baseball Stars Professional (NGH-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, tpgolf, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Top Player's Golf (NGM-003 ~ NGH-003)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mahretsu, neogeo, neogeo_mj, neogeo_mj, mvs_led_state, 0, ROT0, "SNK", "Mahjong Kyo Retsuden (NGM-004 ~ NGH-004)", MACHINE_SUPPORTS_SAVE ) // does not support mahjong panel in MVS mode <- it actually works fine???
+GAME( 1990, ridhero, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Riding Hero (NGM-006 ~ NGH-006)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ridheroh, ridhero, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Riding Hero (set 2)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, alpham2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, alpham2p, alpham2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cyberlip, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Cyber-Lip (NGM-010)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, superspy, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Super Spy (NGM-011 ~ NGH-011)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutnat, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Mutation Nation (NGM-014 ~ NGH-014)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kotm, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "King of the Monsters (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kotmh, kotm, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "King of the Monsters (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sengoku, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGM-017 ~ NGH-017)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sengokuh, sengoku, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGH-017, US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningf, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Burning Fight (NGM-018 ~ NGH-018)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfh, burningf, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Burning Fight (NGH-018, US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfpa, burningf, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Burning Fight (prototype, ver 23.3, 910326)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfp, burningf, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Burning Fight (prototype, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, lbowling, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "League Bowling (NGM-019 ~ NGH-019)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilots, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Ghost Pilots (NGM-020 ~ NGH-020)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilotsh, gpilots, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Ghost Pilots (NGH-020, US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, joyjoy, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, quizdais, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, quizdaisk, quizdais, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresort, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Last Resort", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresortp, lresort, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Last Resort (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, eightman, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK / Pallas", "Eight Man (NGM-025 ~ NGH-025)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, legendos, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Legend of Success Joe / Ashita no Joe Densetsu", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bb, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bba, 2020bb, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bbh, 2020bb, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK / Pallas", "2020 Super Baseball (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, socbrawl, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Soccer Brawl (NGM-031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, socbrawlh, socbrawl, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Soccer Brawl (NGH-031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, fatfury1, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (NGM-033 ~ NGH-033)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, roboarmy, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Robo Army", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, roboarma, roboarmy, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Robo Army (NGM-032 ~ NGH-032)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, fbfrenzy, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Football Frenzy (NGM-034 ~ NGH-034)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, kotm2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (NGM-039 ~ NGH-039)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, kotm2a, kotm2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, kotm2p, kotm2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, sengoku2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Sengoku 2 / Sengoku Denshou 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, bstars2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Baseball Stars 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, quizdai2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042 ~ NGH-042)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, 3countb, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "3 Count Bout / Fire Suplex (NGM-043 ~ NGH-043)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, aof, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Art of Fighting / Ryuuko no Ken (NGM-044 ~ NGH-044)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samsho, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGM-045)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samshoh, samsho, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGH-045)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tophuntr, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGM-046)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tophuntrh, tophuntr, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGH-046)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, fatfury2, neogeo, fatfur2, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ssideki, neogeo, fatfur2, neogeo, mvs_led_state, 0, ROT0, "SNK", "Super Sidekicks / Tokuten Ou", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '94 (NGM-055 ~ NGH-055)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2a, aof2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfursp, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfurspa, fatfursp, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, savagere, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Savage Reign / Fu'un Mokushiroku - Kakutou Sousei", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssideki2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - Real Fight Football (NGM-061 ~ NGH-061)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (NGM-063 ~ NGH-063)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2k, samsho2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2ka, samsho2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fatfury3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (NGM-069 ~ NGH-069)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, ssideki3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Michi", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGM-084)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95a, kof95, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGM-084, alt board)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95h, kof95, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '95 (NGH-084)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3h, samsho3, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fswords, samsho3, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Fighters Swords (Korean release of Samurai Shodown III)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rbff1, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095 ~ NGH-095)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rbff1a, rbff1, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rbff1k, rbff1, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3k, aof3, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
+GAME( 1996, kof96, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '96 (NGM-214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96h, kof96, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '96 (NGH-214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ssideki4, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kizuna, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kizuna4p, kizuna, kizuna4p, kizuna4p, mvs_led_state, 0, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4k, samsho4, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspec, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspeck, rbffspec, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '97 (NGM-2320)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97h, kof97, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '97 (NGH-2320)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97k, kof97, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '97 (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97pls, kof97, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters '97 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97oro, kof97, kof97oro, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters '97 Chongchu Jianghu Plus 2003 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kog, kof97, kog, neogeo, mvs_led_state, 0, ROT0, "bootleg", "King of Gladiator (The King of Fighters '97 bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // protected bootleg
+GAME( 1997, lastblad, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lastbladh, lastblad, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lastsold, lastblad, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Last Soldier (Korean release of The Last Blade)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, irrmaze, neogeo, irrmaze, neogeo, mvs_led_state, 0, ROT0, "SNK / Saurus", "The Irritating Maze / Ultra Denryu Iraira Bou", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGM-2400)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2h, rbff2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGH-2400)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2k, rbff2, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
+GAME( 1998, mslug2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Metal Slug 2 - Super Vehicle-001/II (NGM-2410 ~ NGH-2410)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, mslug2t, mslug2, neobase, neogeo, mvs_led_state, 0, ROT0, "hack (trap15)", "Metal Slug 2 Turbo (NGM-9410) (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98, neogeo, kof98, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98a, kof98, kof98, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420, alt board)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98k, kof98, kof98, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ka, kof98, kof98, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98h, kof98, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGH-2420)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lastbld2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430 ~ NGH-2430)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, neocup98, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Neo-Geo Cup '98 - The Road to the Victory", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugx, neogeo, mslugx, neogeo, mvs_led_state, 0, ROT0, "SNK", "Metal Slug X - Super Vehicle-001 (NGM-2500 ~ NGH-2500)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99, neogeo, kof99, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGM-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, kof99h, kof99, kof99, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGH-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX, crashes going into attract demo */
+GAME( 1999, kof99e, kof99, kof99, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (earlier)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, kof99k, kof99, kof99, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (Korean release)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, kof99ka, kof99, kof99k, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (Korean release, non-encrypted program)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 1999, kof99p, kof99, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garou, neogeo, garou, neogeo, mvs_led_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, garouh, garou, garouh, neogeo, mvs_led_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530 ~ NGH-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, garoup, garou, neobase, neogeo, mvs_led_state, 0, ROT0, "SNK", "Garou - Mark of the Wolves (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoubl, garou, garoubl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Garou - Mark of the Wolves (bootleg)", MACHINE_SUPPORTS_SAVE ) /* Bootleg of garoup */
+GAME( 2000, mslug3, neogeo, mslug3, neogeo, mvs_led_state, 0, ROT0, "SNK", "Metal Slug 3 (NGM-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 2000, mslug3h, mslug3, mslug3h, neogeo, mvs_led_state, 0, ROT0, "SNK", "Metal Slug 3 (NGH-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2000, mslug3b6, mslug3, mslug3b6, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.c ;-) */
+GAME( 2000, kof2000, neogeo, kof2000, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters 2000 (NGM-2570 ~ NGH-2570)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 2000, kof2000n, kof2000, kof2000n, neogeo, mvs_led_state, 0, ROT0, "SNK", "The King of Fighters 2000 (not encrypted)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, zupapa, neogeo, zupapa, neogeo, mvs_led_state, 0, ROT0, "SNK", "Zupapa!" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, sengoku3, neogeo, sengoku3, neogeo, mvs_led_state, 0, ROT0, "Noise Factory / SNK", "Sengoku 3 / Sengoku Densho 2001" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, kof2001, neogeo, kof2001, neogeo, mvs_led_state, 0, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGM-262?)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, kof2001h, kof2001, kof2001, neogeo, mvs_led_state, 0, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGH-2621)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2003, cthd2003, kof2001, cthd2k3, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
+GAME( 2003, ct2k3sp, kof2001, ct2k3sp, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
+GAME( 2003, ct2k3sa, kof2001, ct2k3sa, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus alternate (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2001 */
+GAME( 2002, kof2002, neogeo, kof2002, neogeo, mvs_led_state, 0, ROT0, "Eolith / Playmore", "The King of Fighters 2002 (NGM-2650 ~ NGH-2650)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kof2002b, kof2002, kof2002b, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2002 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kf2k2pls, kof2002, kf2k2pls, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 1)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2pla, kof2002, kf2k2pls, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 2)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2mp, kof2002, kf2k2mp, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2mp2, kof2002, kf2k2mp2, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus II (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kof10th, kof2002, kof10th, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2005, kf10thep, kof2002, kf10thep, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2004, kf2k5uni, kof2002, kf2k5uni, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2004, kof2k4se, kof2002, kof2k4se, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2002 */
+GAME( 2003, mslug5, neogeo, mslug5, neogeo, mvs_led_state, 0, ROT0, "SNK Playmore", "Metal Slug 5 (NGM-2680)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5h, mslug5, mslug5, neogeo, mvs_led_state, 0, ROT0, "SNK Playmore", "Metal Slug 5 (NGH-2680)", MACHINE_SUPPORTS_SAVE ) /* Also found in later MVS carts */
+GAME( 2003, ms5plus, mslug5, ms5plus, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svc, neogeo, svc, neogeo, mvs_led_state, 0, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcboot, svc, svcboot, neogeo, mvs_led_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplus, svc, svcplus, neogeo, mvs_led_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusa, svc, svcplusa, neogeo, mvs_led_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcsplus, svc, svcsplus, neogeo, mvs_led_state, 0, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Super Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5, neogeo, samsho5, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5a, samsho5, samsho5, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5h, samsho5, samsho5, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGH-2700)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5b, samsho5, samsho5b, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Samurai Shodown V / Samurai Spirits Zero (bootleg)", MACHINE_SUPPORTS_SAVE ) // different program scrambling
+GAME( 2003, kof2003, neogeo, kof2003, neogeo, mvs_led_state, 0, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGM-2710)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2003h, kof2003, kof2003h, neogeo, mvs_led_state, 0, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGH-2710)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kf2k3bl, kof2003, kf2k3bl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart (unless it was a bootleg pcb with the new bios?)
+GAME( 2003, kf2k3bla, kof2003, kf2k3pl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2003, kf2k3pl, kof2003, kf2k3pl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2003, kf2k3upl, kof2003, kf2k3upl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2004, samsh5sp, neogeo, samsh5sp, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sph, samsh5sp, samsh5sp, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 2nd release, less censored)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spho, samsh5sp, samsh5sp, neogeo, mvs_led_state, 0, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 1st release, censored)", MACHINE_SUPPORTS_SAVE )
// Alpha Denshi Co. / ADK (changed name in 1993)
-GAME( 1990, maglord, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Magician Lord (NGM-005)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, maglordh, maglord, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Magician Lord (NGH-005)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, ncombat, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGM-009)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, ncombath, ncombat, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGH-009)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, bjourney, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALM-001 ~ ALH-001)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, bjourneyh, bjourney, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALH-001)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, crsword, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Crossed Swords (ALM-002 ~ ALH-002)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, trally, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Thrash Rally (ALM-003 ~ ALH-003)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
-GAME( 1992, ncommand, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Commando", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, wh1, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (ALM-005)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, wh1h, wh1, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (ALH-005)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, wh1ha, wh1, neobase, neogeo, mvs_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, wh2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK", "World Heroes 2 (ALM-006 ~ ALH-006)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, wh2j, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "World Heroes 2 Jet (ADM-007 ~ ADH-007)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, aodk, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, whp, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "World Heroes Perfect", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, moshougi, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "Shougi No Tatsujin - Master of Shougi", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, overtop, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK", "Over Top", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ninjamas, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "Ninja Master's - Haoh-ninpo-cho", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, twinspri, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "ADK / SNK", "Twinkle Star Sprites", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, zintrckb, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "Zintrick / Oshidashi Zentrix (bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, crswd2bl, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "bootleg (Razoola)","Crossed Swords 2 (bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, maglord, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Magician Lord (NGM-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, maglordh, maglord, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Magician Lord (NGH-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ncombat, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGM-009)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ncombath, ncombat, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGH-009)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bjourney, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALM-001 ~ ALH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bjourneyh, bjourney, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, crsword, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Crossed Swords (ALM-002 ~ ALH-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, trally, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Thrash Rally (ALM-003 ~ ALH-003)", MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ncommand, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "Ninja Commando", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (ALM-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1h, wh1, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (ALH-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1ha, wh1, neobase, neogeo, mvs_led_state, 0, ROT0, "Alpha Denshi Co.", "World Heroes (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wh2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK", "World Heroes 2 (ALM-006 ~ ALH-006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wh2j, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "World Heroes 2 Jet (ADM-007 ~ ADH-007)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aodk, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whp, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "World Heroes Perfect", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, moshougi, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "Shougi No Tatsujin - Master of Shougi", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, overtop, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK", "Over Top", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamas, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "Ninja Master's - Haoh-ninpo-cho", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, twinspri, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "ADK / SNK", "Twinkle Star Sprites", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, zintrckb, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Zintrick / Oshidashi Zentrix (bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, crswd2bl, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg (Razoola)","Crossed Swords 2 (bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
// Aicom (was a part of Sammy) / Yumekobo (changed name in 1996)
-GAME( 1992, viewpoin, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Sammy / Aicom", "Viewpoint", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, janshin, neogeo, neogeo_mj, neogeo, mvs_state, 0, ROT0, "Aicom", "Janshin Densetsu - Quest of Jongmaster", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, pulstar, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Aicom", "Pulstar", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, blazstar, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Yumekobo", "Blazing Star", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, preisle2, neogeo, preisle2, neogeo, mvs_state, 0, ROT0, "Yumekobo", "Prehistoric Isle 2" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 1992, viewpoin, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Sammy / Aicom", "Viewpoint", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, janshin, neogeo, neogeo_mj, neogeo_mj, mvs_led_state, 0, ROT0, "Aicom", "Janshin Densetsu - Quest of Jongmaster", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pulstar, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Aicom", "Pulstar", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, blazstar, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Yumekobo", "Blazing Star", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, preisle2, neogeo, preisle2, neogeo, mvs_led_state, 0, ROT0, "Yumekobo", "Prehistoric Isle 2" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
// Data East Corporation
-GAME( 1993, spinmast, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Spin Master / Miracle Adventure", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, wjammers, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Windjammers / Flying Power Disc", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, karnovr, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Karnov's Revenge / Fighter's History Dynamite", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, strhoop, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Street Hoop / Street Slam / Dunk Dream (DEM-004 ~ DEH-004)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ghostlop, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Ghostlop (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, magdrop2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Magical Drop II", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, magdrop3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Data East Corporation", "Magical Drop III", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, spinmast, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Spin Master / Miracle Adventure", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wjammers, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Windjammers / Flying Power Disc", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, karnovr, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Karnov's Revenge / Fighter's History Dynamite", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, strhoop, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Street Hoop / Street Slam / Dunk Dream (DEM-004 ~ DEH-004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ghostlop, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Ghostlop (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, magdrop2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Magical Drop II", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, magdrop3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Data East Corporation", "Magical Drop III", MACHINE_SUPPORTS_SAVE )
// Eleven
-GAME( 2000, nitd, neogeo, nitd, neogeo, mvs_state, 0, ROT0, "Eleven / Gavaking", "Nightmare in the Dark" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2001, nitdbl, nitd, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "Nightmare in the Dark (bootleg)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2000, nitd, neogeo, nitd, neogeo, mvs_led_state, 0, ROT0, "Eleven / Gavaking", "Nightmare in the Dark" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, nitdbl, nitd, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Nightmare in the Dark (bootleg)" , MACHINE_SUPPORTS_SAVE )
// Face
-GAME( 1994, gururin, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Face", "Gururin", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, miexchng, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Face", "Money Puzzle Exchanger / Money Idol Exchanger", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, dragonsh, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Face", "Dragon's Heaven (development board)", MACHINE_IS_INCOMPLETE | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // same ID code as Voltage Fighter Gowkaizer, developed by ex-Technos staff
+GAME( 1994, gururin, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Face", "Gururin", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, miexchng, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Face", "Money Puzzle Exchanger / Money Idol Exchanger", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dragonsh, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Face", "Dragon's Heaven (development board)", MACHINE_IS_INCOMPLETE | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // same ID code as Voltage Fighter Gowkaizer, developed by ex-Technos staff
// Hudson Soft
-GAME( 1994, panicbom, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Eighting / Hudson", "Panic Bomber", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, kabukikl, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Hudson", "Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, neobombe, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Hudson", "Neo Bomberman", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, panicbom, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Eighting / Hudson", "Panic Bomber", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukikl, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Hudson", "Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, neobombe, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Hudson", "Neo Bomberman", MACHINE_SUPPORTS_SAVE )
// Monolith Corp.
-GAME( 1990, minasan, neogeo, neogeo_mj, neogeo, mvs_state, 0, ROT0, "Monolith Corp.", "Minasan no Okagesamadesu! Dai Sugoroku Taikai (MOM-001 ~ MOH-001)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, bakatono, neogeo, neogeo_mj, neogeo, mvs_state, 0, ROT0, "Monolith Corp.", "Bakatonosama Mahjong Manyuuki (MOM-002 ~ MOH-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, minasan, neogeo, neogeo_mj, neogeo_mj, mvs_led_state, 0, ROT0, "Monolith Corp.", "Minasan no Okagesamadesu! Dai Sugoroku Taikai (MOM-001 ~ MOH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, bakatono, neogeo, neogeo_mj, neogeo_mj, mvs_led_state, 0, ROT0, "Monolith Corp.", "Bakatonosama Mahjong Manyuuki (MOM-002 ~ MOH-002)", MACHINE_SUPPORTS_SAVE )
// Nazca (later acquired by SNK)
-GAME( 1996, turfmast, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Nazca", "Neo Turf Masters / Big Tournament Golf", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, mslug, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Nazca", "Metal Slug - Super Vehicle-001", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, turfmast, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Nazca", "Neo Turf Masters / Big Tournament Golf", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, mslug, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Nazca", "Metal Slug - Super Vehicle-001", MACHINE_SUPPORTS_SAVE )
// NMK
-GAME( 1994, zedblade, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "NMK", "Zed Blade / Operation Ragnarok", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, zedblade, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "NMK", "Zed Blade / Operation Ragnarok", MACHINE_SUPPORTS_SAVE )
// Psikyo
-GAME( 1999, s1945p, neogeo, s1945p, neogeo, mvs_state, 0, ROT0, "Psikyo", "Strikers 1945 Plus" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 1999, s1945p, neogeo, s1945p, neogeo, mvs_led_state, 0, ROT0, "Psikyo", "Strikers 1945 Plus" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
// Saurus
-GAME( 1995, quizkof, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Quiz King of Fighters (SAM-080 ~ SAH-080)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, quizkofk, quizkof, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Quiz King of Fighters (Korean release)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, stakwin, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ragnagrd, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Ragnagard / Shin-Oh-Ken", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, pgoal, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ironclad, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Choutetsu Brikin'ger - Iron Clad (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ironclado, ironclad, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "Choutetsu Brikin'ger - Iron Clad (prototype, bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, stakwin2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Stakes Winner 2", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, shocktro, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Shock Troopers (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, shocktroa, shocktro, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Shock Troopers (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, shocktr2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Saurus", "Shock Troopers - 2nd Squad", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, lans2004, shocktr2, lans2004, neogeo, mvs_state, 0, ROT0, "bootleg", "Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, quizkof, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Quiz King of Fighters (SAM-080 ~ SAH-080)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, quizkofk, quizkof, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Quiz King of Fighters (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, stakwin, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ragnagrd, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Ragnagard / Shin-Oh-Ken", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, pgoal, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclad, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Choutetsu Brikin'ger - Iron Clad (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclado, ironclad, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Choutetsu Brikin'ger - Iron Clad (prototype, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, stakwin2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Stakes Winner 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, shocktro, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Shock Troopers (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, shocktroa, shocktro, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Shock Troopers (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, shocktr2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Saurus", "Shock Troopers - 2nd Squad", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lans2004, shocktr2, lans2004, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg)", MACHINE_SUPPORTS_SAVE )
// Sunsoft
-GAME( 1995, galaxyfg, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Sunsoft", "Galaxy Fight - Universal Warriors", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, wakuwak7, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Sunsoft", "Waku Waku 7", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, galaxyfg, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Sunsoft", "Galaxy Fight - Universal Warriors", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, wakuwak7, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Sunsoft", "Waku Waku 7", MACHINE_SUPPORTS_SAVE )
// Taito
-GAME( 1994, pbobblen, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Taito", "Puzzle Bobble / Bust-A-Move (Neo-Geo, NGM-083)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, pbobblenb, pbobblen, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "Puzzle Bobble / Bust-A-Move (Neo-Geo, bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, pbobbl2n, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Taito (SNK license)", "Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, pnyaa, neogeo, pnyaa, neogeo, mvs_state, 0, ROT0, "Aiky / Taito", "Pochi and Nyaa", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pbobblen, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Taito", "Puzzle Bobble / Bust-A-Move (Neo-Geo, NGM-083)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pbobblenb, pbobblen, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Puzzle Bobble / Bust-A-Move (Neo-Geo, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, pbobbl2n, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Taito (SNK license)", "Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, pnyaa, neogeo, pnyaa, neogeo, mvs_led_state, 0, ROT0, "Aiky / Taito", "Pochi and Nyaa", MACHINE_SUPPORTS_SAVE )
// Takara
-GAME( 1995, marukodq, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Takara", "Chibi Marukochan Deluxe Quiz", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, marukodq, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Takara", "Chibi Marukochan Deluxe Quiz", MACHINE_SUPPORTS_SAVE )
// Technos Japan
-GAME( 1995, doubledr, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Technos Japan", "Double Dragon (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, gowcaizr, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Technos Japan", "Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, sdodgeb, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Technos Japan", "Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, doubledr, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Technos Japan", "Double Dragon (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gowcaizr, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Technos Japan", "Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sdodgeb, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Technos Japan", "Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu", MACHINE_SUPPORTS_SAVE )
// Tecmo
-GAME( 1996, twsoc96, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Tecmo", "Tecmo World Soccer '96", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, twsoc96, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Tecmo", "Tecmo World Soccer '96", MACHINE_SUPPORTS_SAVE )
// Viccom
-GAME( 1994, fightfev, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Viccom", "Fight Fever (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, fightfeva, fightfev, neobase, neogeo, mvs_state, 0, ROT0, "Viccom", "Fight Fever (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfev, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Viccom", "Fight Fever (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfeva, fightfev, neobase, neogeo, mvs_led_state, 0, ROT0, "Viccom", "Fight Fever (set 2)", MACHINE_SUPPORTS_SAVE )
// Video System Co.
-GAME( 1994, pspikes2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Video System Co.", "Power Spikes II (NGM-068)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, sonicwi2, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Video System Co.", "Aero Fighters 2 / Sonic Wings 2", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, sonicwi3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Video System Co.", "Aero Fighters 3 / Sonic Wings 3", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, popbounc, neogeo, popbounc, neogeo, mvs_state, 0, ROT0, "Video System Co.", "Pop 'n Bounce / Gapporin", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, froman2b, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "bootleg", "Idol Mahjong Final Romance 2 (Neo-Geo, bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pspikes2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Video System Co.", "Power Spikes II (NGM-068)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, sonicwi2, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Video System Co.", "Aero Fighters 2 / Sonic Wings 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sonicwi3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Video System Co.", "Aero Fighters 3 / Sonic Wings 3", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, popbounc, neogeo, popbounc, neogeo, mvs_led_state, 0, ROT0, "Video System Co.", "Pop 'n Bounce / Gapporin", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, froman2b, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Idol Mahjong Final Romance 2 (Neo-Geo, bootleg of CD version)", MACHINE_SUPPORTS_SAVE )
// Visco
-GAME( 1992, androdun, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Andro Dunos (NGM-049 ~ NGH-049)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, puzzledp, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Taito (Visco license)", "Puzzle De Pon!", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, neomrdo, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Neo Mr. Do!", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, goalx3, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Goal! Goal! Goal!", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, neodrift, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Neo Drift Out - New Technology", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, breakers, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Breakers", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, puzzldpr, puzzledp, neobase, neogeo, mvs_state, 0, ROT0, "Taito (Visco license)", "Puzzle De Pon! R!", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, breakrev, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Breakers Revenge", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, flipshot, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Battle Flip Shot", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, ctomaday, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Captain Tomaday", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, ganryu, neogeo, ganryu, neogeo, mvs_state, 0, ROT0, "Visco", "Ganryu / Musashi Ganryuki" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
-GAME( 2000, bangbead, neogeo, bangbead, neogeo, mvs_state, 0, ROT0, "Visco", "Bang Bead", MACHINE_SUPPORTS_SAVE )
-GAME( 2000, b2b, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Visco", "Bang Bang Busters (2010 NCI release)" , MACHINE_SUPPORTS_SAVE )
+GAME( 1992, androdun, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Andro Dunos (NGM-049 ~ NGH-049)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, puzzledp, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Taito (Visco license)", "Puzzle De Pon!", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, neomrdo, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Neo Mr. Do!", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, goalx3, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Goal! Goal! Goal!", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, neodrift, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Neo Drift Out - New Technology", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, breakers, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Breakers", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, puzzldpr, puzzledp, neobase, neogeo, mvs_led_state, 0, ROT0, "Taito (Visco license)", "Puzzle De Pon! R!", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, breakrev, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Breakers Revenge", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, flipshot, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Battle Flip Shot", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, ctomaday, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Captain Tomaday", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, ganryu, neogeo, ganryu, neogeo, mvs_led_state, 0, ROT0, "Visco", "Ganryu / Musashi Ganryuki" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2000, bangbead, neogeo, bangbead, neogeo, mvs_led_state, 0, ROT0, "Visco", "Bang Bead", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, b2b, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Visco", "Bang Bang Busters (2010 NCI release)" , MACHINE_SUPPORTS_SAVE )
// Mega Enterprise
-GAME( 2002, mslug4, neogeo, mslug4, neogeo, mvs_state, 0, ROT0, "Mega / Playmore", "Metal Slug 4 (NGM-2630)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, mslug4h, mslug4, mslug4, neogeo, mvs_state, 0, ROT0, "Mega / Playmore", "Metal Slug 4 (NGH-2630)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, ms4plus, mslug4, ms4plus, neogeo, mvs_state, 0, ROT0, "bootleg", "Metal Slug 4 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4, neogeo, mslug4, neogeo, mvs_led_state, 0, ROT0, "Mega / Playmore", "Metal Slug 4 (NGM-2630)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4h, mslug4, mslug4, neogeo, mvs_led_state, 0, ROT0, "Mega / Playmore", "Metal Slug 4 (NGH-2630)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, ms4plus, mslug4, ms4plus, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Metal Slug 4 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
// Evoga
-GAME( 2002, rotd, neogeo, rotd, neogeo, mvs_state, 0, ROT0, "Evoga / Playmore", "Rage of the Dragons (NGM-2640?)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, rotdh, rotd, rotd, neogeo, mvs_state, 0, ROT0, "Evoga / Playmore", "Rage of the Dragons (NGH-2640?)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotd, neogeo, rotd, neogeo, mvs_led_state, 0, ROT0, "Evoga / Playmore", "Rage of the Dragons (NGM-2640?)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdh, rotd, rotd, neogeo, mvs_led_state, 0, ROT0, "Evoga / Playmore", "Rage of the Dragons (NGH-2640?)", MACHINE_SUPPORTS_SAVE )
// Atlus
-GAME( 2002, matrim, neogeo, matrim, neogeo, mvs_state, 0, ROT0, "Noise Factory / Atlus", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660 ~ NGH-2660)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, matrimbl, matrim, matrimbl, neogeo, mvs_state, 0, ROT0, "bootleg", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrim, neogeo, matrim, neogeo, mvs_led_state, 0, ROT0, "Noise Factory / Atlus", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660 ~ NGH-2660)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimbl, matrim, matrimbl, neogeo, mvs_led_state, 0, ROT0, "bootleg", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg)", MACHINE_SUPPORTS_SAVE )
/***** Unlicensed commercial releases *****/
// BrezzaSoft
-GAME( 2001, jockeygp, neogeo, jockeygp, jockeygp, mvs_state, 0, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 2001, jockeygpa, jockeygp, jockeygp, jockeygp, mvs_state, 0, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 2001, vliner, neogeo, vliner, vliner, mvs_state, 0, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 2001, vlinero, vliner, vliner, vliner, mvs_state, 0, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, jockeygp, neogeo, jockeygp, jockeygp, mvs_led_state, 0, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, jockeygpa, jockeygp, jockeygp, jockeygp, mvs_led_state, 0, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, vliner, neogeo, vliner, vliner, mvs_led_state, 0, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, vlinero, vliner, vliner, vliner, mvs_led_state, 0, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 2)", MACHINE_SUPPORTS_SAVE )
// Kyle Hodgetts
-GAME( 2000, diggerma, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "Kyle Hodgetts", "Digger Man (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, diggerma, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "Kyle Hodgetts", "Digger Man (prototype)", MACHINE_SUPPORTS_SAVE )
// Vektorlogic
-GAME( 2004, sbp, neogeo, sbp, neogeo, mvs_state, 0, ROT0, "Vektorlogic", "Super Bubble Pop", MACHINE_NOT_WORKING )
+GAME( 2004, sbp, neogeo, sbp, neogeo, mvs_led_state, 0, ROT0, "Vektorlogic", "Super Bubble Pop", MACHINE_NOT_WORKING )
// NG:DEV.TEAM
-GAME( 2005, lasthope, neogeo, neobase, neogeo, mvs_state, 0, ROT0, "NG:DEV.TEAM", "Last Hope (bootleg AES to MVS conversion, no coin support)", MACHINE_SUPPORTS_SAVE ) // wasn't actually released on MVS but bootleg carts have been sold, this doesn't accept coins, runs like a console game
+GAME( 2005, lasthope, neogeo, neobase, neogeo, mvs_led_state, 0, ROT0, "NG:DEV.TEAM", "Last Hope (bootleg AES to MVS conversion, no coin support)", MACHINE_SUPPORTS_SAVE ) // wasn't actually released on MVS but bootleg carts have been sold, this doesn't accept coins, runs like a console game
// Last Hope Pink Bullets (c)2008 - MVS/AES
// Fast Striker (c)2010 - MVS/AES
// Fast Striker 1.5 (c)2010 - MVS/AES
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index 883b707ec2f..430b55008e8 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -217,6 +217,7 @@ protected:
}
virtual void machine_start() override;
+ virtual void machine_reset() override;
virtual DECLARE_WRITE8_MEMBER(io_control_w) override;
DECLARE_WRITE_LINE_MEMBER(set_save_ram_unlock);
diff --git a/src/mame/layout/irrmaze.lay b/src/mame/layout/irrmaze.lay
new file mode 100644
index 00000000000..b158ccf8881
--- /dev/null
+++ b/src/mame/layout/irrmaze.lay
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+copyright-holders:Vas Crabb
+-->
+<mamelayout version="2">
+ <!--
+ sit0...sit9 TIMER LAMP *0x10fe1c & 0x03ff
+ sit10 TRACK BALL LAMP *0x10fe1f != 0
+ sit11 SIDE LAMP *0x10fe20 != 0
+ sit12...sit13 COLOR LAMP *0x10fe21 & 0x0003
+ sit14 FLASH LAMP *0x10fe22 != 0
+ sit15 ??? *0x10fe29 != 0
+ -->
+
+ <element name="blank">
+ <rect><color red="0" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="marquee">
+ <rect><color red="0.5" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="timerlamp">
+ <disk state="0"><color red="0.3" green="0" blue="0" /></disk>
+ <disk state="1"><color red="1" green="0.3" blue="0.1" /></disk>
+ </element>
+
+ <element name="sidelamp">
+ <rect state="0"><color red="0.5" green="0.5" blue="0.1" /></rect>
+ <rect state="1"><color red="1" green="1" blue="0.5" /></rect>
+ </element>
+
+ <element name="flashstick" defstate="1">
+ <rect state="0"><color red="1" green="1" blue="1" /></rect>
+ <rect state="1"><color red="0" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="flashgrille" defstate="1">
+ <disk state="0"><color red="1" green="1" blue="1" /></disk>
+ <disk state="1"><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="cpanel">
+ <rect><color red="0.4" green="0.4" blue="0.4" /></rect>
+ </element>
+
+ <element name="trackball">
+ <disk state="0"><color red="0.6" green="0" blue="0" /></disk>
+ <disk state="1"><color red="0.8" green="0.7" blue="0.1" /></disk>
+ </element>
+
+ <element name="redbtn">
+ <disk state="0"><color red="0.7" green="0" blue="0" /></disk>
+ <disk state="1"><color red="0.35" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="bluebtn">
+ <disk state="0"><color red="0.2" green="0.5" blue="1" /></disk>
+ <disk state="1"><color red="0.1" green="0.25" blue="0.5" /></disk>
+ </element>
+
+ <view name="Cabinet Lamps">
+ <screen index="0"><bounds x="4.5" y="4.5" width="14" height="10.5" /></screen>
+
+ <bezel element="marquee"><bounds x="0" y="0" width="23" height="2" /></bezel>
+ <bezel element="timerlamp" name="sit0"><bounds x="2" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit1"><bounds x="4" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit2"><bounds x="6" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit3"><bounds x="8" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit4"><bounds x="10" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit5"><bounds x="12" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit6"><bounds x="14" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit7"><bounds x="16" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit8"><bounds x="18" y="0.25" width="1" height="1" /></bezel>
+ <bezel element="timerlamp" name="sit9"><bounds x="20" y="0.25" width="1" height="1" /></bezel>
+
+ <bezel element="flashstick" name="sit14"><bounds x="0.75" y="6.5" width="1.5" height="6" /></bezel>
+ <bezel element="sidelamp" name="sit11"><bounds x="0.5" y="12.5" width="2" height="4.5" /></bezel>
+ <bezel element="flashstick" name="sit14"><bounds x="20.75" y="6.5" width="1.5" height="6" /></bezel>
+ <bezel element="sidelamp" name="sit11"><bounds x="20.5" y="12.5" width="2" height="4.5" /></bezel>
+ <bezel element="flashgrille" name="sit14"><bounds x="7" y="17.25" width="2.5" height="2.5" /></bezel>
+ <bezel element="flashgrille" name="sit14"><bounds x="13.5" y="17.25" width="2.5" height="2.5" /></bezel>
+
+ <cpanel element="cpanel"><bounds x="4.5" y="20" width="14" height="7" /></cpanel>
+ <cpanel element="trackball" name="sit10"><bounds x="10" y="22" width="3" height="3" /></cpanel>
+ <cpanel element="bluebtn" inputtag="SYSTEM" inputmask="0x0100"><bounds x="11.125" y="20.125" width="0.75" height="0.75" /></cpanel>
+ <cpanel element="redbtn" inputtag="edge:irrmaze:BUTTONS" inputmask="0x10"><bounds x="7" y="23" width="1" height="1" /></cpanel>
+ <cpanel element="bluebtn" inputtag="edge:irrmaze:BUTTONS" inputmask="0x20"><bounds x="5" y="22.5" width="1" height="1" /></cpanel>
+ <cpanel element="redbtn" inputtag="edge:irrmaze:BUTTONS" inputmask="0x40"><bounds x="15" y="23" width="1" height="1" /></cpanel>
+ <cpanel element="bluebtn" inputtag="edge:irrmaze:BUTTONS" inputmask="0x80"><bounds x="17" y="22.5" width="1" height="1" /></cpanel>
+ </view>
+
+ <view name="Screen 0 Standard (4:3)">
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+ </view>
+
+ <view name="Screen 0 Cropped (304x224)">
+ <bezel name="blank" element="blank">
+ <bounds left="0" top="0" right="0.1" bottom="3" />
+ </bezel>
+ <bezel name="blank" element="blank">
+ <bounds left="3.9" top="0" right="4" bottom="3" />
+ </bezel>
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+ </view>
+
+ <view name="Screen 0 Stretched (304x224)">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ <screen index="0">
+ <bounds left="-0.105263" top="0" right="4.105263" bottom="3" />
+ </screen>
+ </view>
+</mamelayout>