mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
neogeo updates:
* move start buttons to controllers, clean up FTC1B a little * SIT and FTC1B are only compatible with MV-1B/MV-1C cost-reduced boards
This commit is contained in:
parent
f2568bb918
commit
69ab2c544b
@ -206,5 +206,5 @@ SLOT_INTERFACE_START( neogeo_arc_edge_fixed )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
SLOT_INTERFACE_START( neogeo_arc_pin15 )
|
||||
SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL)
|
||||
SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL_AC)
|
||||
SLOT_INTERFACE_END
|
||||
|
@ -25,6 +25,10 @@ static INPUT_PORTS_START( neogeo_irrmaze )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
|
||||
PORT_START("START")
|
||||
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
|
||||
|
||||
PORT_START("TRACK_X")
|
||||
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(20) PORT_REVERSE
|
||||
|
||||
@ -47,6 +51,7 @@ neogeo_irrmaze_device::neogeo_irrmaze_device(const machine_config &mconfig, cons
|
||||
m_tx(*this, "TRACK_X"),
|
||||
m_ty(*this, "TRACK_Y"),
|
||||
m_buttons(*this, "BUTTONS"),
|
||||
m_ss(*this, "START"),
|
||||
m_spi_outputs(*this, "sit%u", 0U),
|
||||
m_spi_sr(0U),
|
||||
m_ctrl_sel(0U)
|
||||
@ -101,6 +106,15 @@ READ8_MEMBER(neogeo_irrmaze_device::in1_r)
|
||||
return m_buttons->read();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// read_start_sel
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t neogeo_irrmaze_device::read_start_sel()
|
||||
{
|
||||
return m_ss->read();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// write_ctrlsel
|
||||
//-------------------------------------------------
|
||||
|
@ -33,12 +33,14 @@ protected:
|
||||
// device_neogeo_control_port_interface overrides
|
||||
virtual DECLARE_READ8_MEMBER( in0_r ) override;
|
||||
virtual DECLARE_READ8_MEMBER( in1_r ) override;
|
||||
virtual uint8_t read_start_sel() override;
|
||||
virtual void write_ctrlsel(uint8_t data) override;
|
||||
|
||||
private:
|
||||
required_ioport m_tx;
|
||||
required_ioport m_ty;
|
||||
required_ioport m_buttons;
|
||||
required_ioport m_ss;
|
||||
output_finder<16> m_spi_outputs;
|
||||
uint16_t m_spi_sr;
|
||||
uint8_t m_ctrl_sel;
|
||||
@ -48,5 +50,4 @@ private:
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(NEOGEO_IRRMAZE, neogeo_irrmaze_device)
|
||||
|
||||
|
||||
#endif // MAME_BUS_NEOGEO_CTRL_IRRMAZE_H
|
||||
|
@ -144,6 +144,11 @@ static INPUT_PORTS_START( neogeo_joy_ac )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
||||
|
||||
PORT_START("START")
|
||||
PORT_BIT( 0xfa, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -167,8 +172,8 @@ ioport_constructor neogeo_joy_ac_device::device_input_ports() const
|
||||
neogeo_joy_ac_device::neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, NEOGEO_JOY_AC, tag, owner, clock),
|
||||
device_neogeo_ctrl_edge_interface(mconfig, *this),
|
||||
m_joy1(*this, "JOY1"),
|
||||
m_joy2(*this, "JOY2")
|
||||
m_joy(*this, "JOY%u", 1U),
|
||||
m_ss(*this, "START")
|
||||
{
|
||||
}
|
||||
|
||||
@ -181,22 +186,13 @@ void neogeo_joy_ac_device::device_start()
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void neogeo_joy_ac_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// in0_r
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER(neogeo_joy_ac_device::in0_r)
|
||||
{
|
||||
return m_joy1->read();
|
||||
return m_joy[0]->read();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -205,5 +201,14 @@ READ8_MEMBER(neogeo_joy_ac_device::in0_r)
|
||||
|
||||
READ8_MEMBER(neogeo_joy_ac_device::in1_r)
|
||||
{
|
||||
return m_joy2->read();
|
||||
return m_joy[1]->read();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// read_start_sel
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t neogeo_joy_ac_device::read_start_sel()
|
||||
{
|
||||
return m_ss->read();
|
||||
}
|
||||
|
@ -50,21 +50,19 @@ public:
|
||||
// construction/destruction
|
||||
neogeo_joy_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:
|
||||
// device-level overrides
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// device_neogeo_ctrl_edge_interface overrides
|
||||
virtual DECLARE_READ8_MEMBER( in0_r ) override;
|
||||
virtual DECLARE_READ8_MEMBER( in1_r ) override;
|
||||
virtual uint8_t read_start_sel() override;
|
||||
|
||||
private:
|
||||
required_ioport m_joy1;
|
||||
required_ioport m_joy2;
|
||||
required_ioport_array<2> m_joy;
|
||||
required_ioport m_ss;
|
||||
};
|
||||
|
||||
|
||||
|
@ -4,6 +4,14 @@
|
||||
|
||||
SNK Neo Geo Kizuna 4Players Controller emulation
|
||||
|
||||
The NEO-FTC1B board is a JAMMA splitter, including input
|
||||
multiplexing, video buffering, and audio amplification. It
|
||||
requires an MV-1B or MV-1C system for the output header.
|
||||
There are unpopulated locations for four 15-pin D connectors,
|
||||
so it could theoretically be used with AES joysticks. It
|
||||
won't work with mahjong panels because the outputs aren't
|
||||
demultiplexed.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -13,7 +21,7 @@
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(NEOGEO_KIZ4P, neogeo_kizuna4p_device, "neogeo_kiz4p", "SNK Neo Geo Kizuna 4P Controller")
|
||||
DEFINE_DEVICE_TYPE(NEOGEO_KIZ4P, neogeo_kizuna4p_device, "neogeo_kiz4p", "SNK NEO-FTC1B JAMMA Splitter")
|
||||
|
||||
|
||||
static INPUT_PORTS_START( neogeo_kiz4p )
|
||||
@ -57,13 +65,15 @@ static INPUT_PORTS_START( neogeo_kiz4p )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4)
|
||||
|
||||
PORT_START("START13")
|
||||
PORT_START("START1")
|
||||
PORT_BIT( 0xfa, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START3 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
|
||||
|
||||
PORT_START("START24")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START4 )
|
||||
PORT_START("START2")
|
||||
PORT_BIT( 0xfa, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START3 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START4 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -88,12 +98,8 @@ ioport_constructor neogeo_kizuna4p_device::device_input_ports() const
|
||||
neogeo_kizuna4p_device::neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, NEOGEO_KIZ4P, tag, owner, clock),
|
||||
device_neogeo_ctrl_edge_interface(mconfig, *this),
|
||||
m_joy1(*this, "JOY1"),
|
||||
m_joy2(*this, "JOY2"),
|
||||
m_joy3(*this, "JOY3"),
|
||||
m_joy4(*this, "JOY4"),
|
||||
m_ss1(*this, "START13"),
|
||||
m_ss2(*this, "START24")
|
||||
m_joy(*this, "JOY%u", 1U),
|
||||
m_ss(*this, "START%u", 1U)
|
||||
{
|
||||
}
|
||||
|
||||
@ -103,18 +109,9 @@ neogeo_kizuna4p_device::neogeo_kizuna4p_device(const machine_config &mconfig, co
|
||||
//-------------------------------------------------
|
||||
|
||||
void neogeo_kizuna4p_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_ctrl_sel));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void neogeo_kizuna4p_device::device_reset()
|
||||
{
|
||||
m_ctrl_sel = 0;
|
||||
save_item(NAME(m_ctrl_sel));
|
||||
}
|
||||
|
||||
|
||||
@ -124,15 +121,7 @@ void neogeo_kizuna4p_device::device_reset()
|
||||
|
||||
READ8_MEMBER(neogeo_kizuna4p_device::in0_r)
|
||||
{
|
||||
uint8_t res = 0;
|
||||
if (m_ctrl_sel & 0x01)
|
||||
res = m_joy3->read();
|
||||
else
|
||||
res = m_joy1->read();
|
||||
|
||||
if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10);
|
||||
|
||||
return res;
|
||||
return m_joy[BIT(m_ctrl_sel, 0) << 1]->read() & ~(BIT(m_ctrl_sel, 2) << (BIT(m_ctrl_sel, 0) | 4));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -141,15 +130,7 @@ READ8_MEMBER(neogeo_kizuna4p_device::in0_r)
|
||||
|
||||
READ8_MEMBER(neogeo_kizuna4p_device::in1_r)
|
||||
{
|
||||
uint8_t res = 0;
|
||||
if (m_ctrl_sel & 0x01)
|
||||
res = m_joy4->read();
|
||||
else
|
||||
res = m_joy2->read();
|
||||
|
||||
if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10);
|
||||
|
||||
return res;
|
||||
return m_joy[(BIT(m_ctrl_sel, 0) << 1) | 1]->read() & ~(BIT(m_ctrl_sel, 2) << (BIT(m_ctrl_sel, 0) | 4));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -158,7 +139,7 @@ READ8_MEMBER(neogeo_kizuna4p_device::in1_r)
|
||||
|
||||
uint8_t neogeo_kizuna4p_device::read_start_sel()
|
||||
{
|
||||
return (BIT(m_ss1->read(), m_ctrl_sel & 0x01)) | (BIT(m_ss2->read(), m_ctrl_sel & 0x01) << 2);
|
||||
return m_ss[BIT(m_ctrl_sel, 0)]->read();
|
||||
}
|
||||
|
||||
|
||||
|
@ -20,20 +20,16 @@
|
||||
|
||||
// ======================> neogeo_kizuna4p_device
|
||||
|
||||
class neogeo_kizuna4p_device : public device_t,
|
||||
public device_neogeo_ctrl_edge_interface
|
||||
class neogeo_kizuna4p_device : public device_t, public device_neogeo_ctrl_edge_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
neogeo_kizuna4p_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;
|
||||
@ -42,12 +38,8 @@ protected:
|
||||
virtual void write_ctrlsel(uint8_t data) override;
|
||||
|
||||
private:
|
||||
required_ioport m_joy1;
|
||||
required_ioport m_joy2;
|
||||
required_ioport m_joy3;
|
||||
required_ioport m_joy4;
|
||||
required_ioport m_ss1;
|
||||
required_ioport m_ss2;
|
||||
required_ioport_array<4> m_joy;
|
||||
required_ioport_array<2> m_ss;
|
||||
uint8_t m_ctrl_sel;
|
||||
};
|
||||
|
||||
|
@ -46,16 +46,18 @@ static INPUT_PORTS_START( neogeo_mj_ac )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
|
||||
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("START_SELECT")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
|
||||
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( neogeo_mj )
|
||||
PORT_INCLUDE( neogeo_mj_ac )
|
||||
|
||||
PORT_START("START_SELECT")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
|
||||
PORT_MODIFY("START_SELECT")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT )
|
||||
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -87,6 +89,7 @@ neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig,
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, device_neogeo_control_port_interface(mconfig, *this)
|
||||
, m_ctrl_sel(0x00)
|
||||
, m_ss(*this, "START_SELECT")
|
||||
, m_mjpanel(*this, "MJ.%u", 0)
|
||||
{
|
||||
}
|
||||
@ -98,7 +101,6 @@ neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig,
|
||||
|
||||
neogeo_mjctrl_device::neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL, tag, owner, clock)
|
||||
, m_ss(*this, "START_SELECT")
|
||||
{
|
||||
}
|
||||
|
||||
@ -131,6 +133,15 @@ uint8_t neogeo_mjctrl_ac_device::read_ctrl()
|
||||
return res;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// read_start_sel
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t neogeo_mjctrl_ac_device::read_start_sel()
|
||||
{
|
||||
return m_ss->read();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// write_ctrlsel
|
||||
//-------------------------------------------------
|
||||
|
@ -30,6 +30,7 @@ protected:
|
||||
|
||||
// device-level overrides
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
virtual uint8_t read_start_sel() override;
|
||||
virtual void device_start() override;
|
||||
|
||||
// device_neogeo_control_port_interface overrides
|
||||
@ -37,6 +38,7 @@ protected:
|
||||
virtual void write_ctrlsel(uint8_t data) override;
|
||||
|
||||
uint8_t m_ctrl_sel;
|
||||
required_ioport m_ss;
|
||||
|
||||
private:
|
||||
required_ioport_array<3> m_mjpanel;
|
||||
@ -56,9 +58,6 @@ protected:
|
||||
|
||||
// device_neogeo_control_port_interface overrides
|
||||
virtual uint8_t read_start_sel() override;
|
||||
|
||||
private:
|
||||
required_ioport m_ss;
|
||||
};
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
Confirmed non-bugs:
|
||||
|
||||
* Bad zooming in the Kof2003 bootlegs - this is what happens
|
||||
if you try and use the normal bios with a pcb set, it
|
||||
if you try and use the normal bios with a PCB set, it
|
||||
looks like the bootleggers didn't care.
|
||||
* Glitches at the edges of the screen - the real hardware
|
||||
can display 320x224 but most of the games seem designed
|
||||
@ -48,12 +48,12 @@
|
||||
*****************************************************************************
|
||||
|
||||
The Neo-Geo Multi Video System (MVS), is an arcade system board, being
|
||||
the first product in the Neo-Geo family, designed by Alpha Denshi(ADK)
|
||||
and released in 1990 by SNK. It was known to the coin-op industry, and
|
||||
the first product in the Neo-Geo family, designed by Alpha Denshi (ADK)
|
||||
and released in 1990 by SNK. It was known to the coin-op industry, and
|
||||
offered arcade operators the ability to put up to 6 different arcade
|
||||
titles into a single cabinet, a key economic consideration for operators
|
||||
with limited floorspace (games for the Neo-Geo are cartridge based and are
|
||||
easily exchangeable). It comes in many different cabinets but basically
|
||||
easily exchangeable). It comes in many different cabinets but basically
|
||||
consists of an add on board that can be linked to a standard Jamma system.
|
||||
The system was discontinued in 2004.
|
||||
Source (modified): http://en.wikipedia.org/wiki/Neo_Geo
|
||||
@ -411,8 +411,8 @@
|
||||
VCC = 30A | 30B = VCC VCC = 30A | 30B = VCC
|
||||
VCC = 31A | 31B = VCC VCC = 31A | 31B = VCC
|
||||
VCC = 32A | 32B = VCC VCC = 32A | 32B = VCC
|
||||
CR20 = 33A | 33B = CR21 PORTADRS = 33A | 33B = 4MB
|
||||
CR22 = 34A | 34B = CR23 NC = 34A | 34B = ROMOE
|
||||
CR20 = 33A | 33B = CR21 PORTADRS = 33A | 33B = ROMOE
|
||||
CR22 = 34A | 34B = CR23 NC = 34A | 34B = 4MB
|
||||
CR24 = 35A | 35B = CR25 NC = 35A | 35B = RESET
|
||||
CR26 = 36A | 36B = CR27 NC = 36A | 36B = NC
|
||||
CR28 = 37A | 37B = CR29 NC = 37A | 37B = NC
|
||||
@ -420,21 +420,21 @@
|
||||
NC = 39A | 39B = FIX00 NC = 39A | 39B = NC
|
||||
NC = 40A | 40B = FIX01 NC = 40A | 40B = NC
|
||||
NC = 41A | 41B = FIX02 NC = 41A | 41B = SDPAD0
|
||||
SYSTEMB = 42A | 42B = FIX03 SYSTEMB = 42A | 42B = SDPAD1
|
||||
SLOTCS = 42A | 42B = FIX03 SLOTCS = 42A | 42B = SDPAD1
|
||||
SDA0 = 43A | 43B = FIX04 SDPA8 = 43A | 43B = SDPAD2
|
||||
SDA1 = 44A | 44B = FIX05 SDPA9 = 44A | 44B = SDPAD3
|
||||
SDA2 = 45A | 45B = FIX06 SDPA10 = 45A | 45B = SDPAD4
|
||||
SDA3 = 46A | 46B = FIX07 SDPA11 = 46A | 46B = SDPAD5
|
||||
SDA4 = 47A | 47B = SDRD0 SDPMPX = 47A | 47B = SDPAD6
|
||||
SDA5 = 48A | 48B = SDRD1 SDPOE = 48A | 48B = SDPAD7
|
||||
SDA6 = 49A | 49B = SDROM SDRA8 = 49A | 49B = SDRA00
|
||||
SDA7 = 50A | 50B = SDMRD SDRA9 = 50A | 50B = SDRA01
|
||||
SDA8 = 51A | 51B = SDDO SDRA20 = 51A | 51B = SDRA02
|
||||
SDA9 = 52A | 52B = SDD1 SDRA21 = 52A | 52B = SDRA03
|
||||
SDA10 = 53A | 53B = SDD2 SDRA22 = 53A | 53B = SDRA04
|
||||
SDA11 = 54A | 54B = SDD3 SDRA23 = 54A | 54B = SDRA05
|
||||
SDA12 = 55A | 55B = SDD4 SDRMPX = 55A | 55B = SDRA06
|
||||
SDA13 = 56A | 56B = SDD5 SDROE = 56A | 56B = SDRA07
|
||||
SDA6 = 49A | 49B = SDROM SDRA8 = 49A | 49B = SDRAD0
|
||||
SDA7 = 50A | 50B = SDMRD SDRA9 = 50A | 50B = SDRAD1
|
||||
SDA8 = 51A | 51B = SDD0 SDRA20 = 51A | 51B = SDRAD2
|
||||
SDA9 = 52A | 52B = SDD1 SDRA21 = 52A | 52B = SDRAD3
|
||||
SDA10 = 53A | 53B = SDD2 SDRA22 = 53A | 53B = SDRAD4
|
||||
SDA11 = 54A | 54B = SDD3 SDRA23 = 54A | 54B = SDRAD5
|
||||
SDA12 = 55A | 55B = SDD4 SDRMPX = 55A | 55B = SDRAD6
|
||||
SDA13 = 56A | 56B = SDD5 SDROE = 56A | 56B = SDRAD7
|
||||
SDA14 = 57A | 57B = SDD6 GND = 57A | 57B = GND
|
||||
SDA15 = 58A | 58B = SDD7 GND = 58A | 58B = GND
|
||||
GND = 59A | 59B = GND GND = 59A | 59B = GND
|
||||
@ -553,11 +553,13 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(kizuna4p_start_r);
|
||||
|
||||
// mainboard configurations
|
||||
void mv1fz(machine_config &config);
|
||||
|
||||
// fixed software configurations
|
||||
void kizuna4p(machine_config &config);
|
||||
void irrmaze(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
@ -589,10 +591,8 @@ public:
|
||||
// fixed software configurations
|
||||
void neobase(machine_config &config);
|
||||
void fatfur2(machine_config &config);
|
||||
void kizuna4p(machine_config &config);
|
||||
void kof97oro(machine_config &config);
|
||||
void kog(machine_config &config);
|
||||
void irrmaze(machine_config &config);
|
||||
void kof98(machine_config &config);
|
||||
void mslugx(machine_config &config);
|
||||
void kof99(machine_config &config);
|
||||
@ -874,9 +874,14 @@ READ16_MEMBER(ngarcade_base_state::in1_edge_joy_r)
|
||||
return ((m_edge->in1_r(space, offset) & m_ctrl2->ctrl_r(space, offset)) << 8) | 0xff;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(mvs_state::kizuna4p_start_r)
|
||||
CUSTOM_INPUT_MEMBER(ngarcade_base_state::startsel_edge_joy_r)
|
||||
{
|
||||
return (m_edge->read_start_sel() & 0x05) | ~0x05;
|
||||
uint32_t ret = m_edge->read_start_sel() | ~0x05;
|
||||
if (m_ctrl1)
|
||||
ret &= (m_ctrl1->read_start_sel() << 0) | ~0x01;
|
||||
if (m_ctrl2)
|
||||
ret &= (m_ctrl2->read_start_sel() << 0) | ~0x04;
|
||||
return ret;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(neogeo_base_state::io_control_w)
|
||||
@ -1621,7 +1626,7 @@ void mvs_state::neogeo_postload()
|
||||
|
||||
void neogeo_base_state::machine_reset()
|
||||
{
|
||||
// disable audiocpu nmi
|
||||
// disable audiocpu NMI
|
||||
m_audionmi->in_w<1>(0);
|
||||
m_soundlatch->acknowledge_r(machine().dummy_space(), 0);
|
||||
|
||||
@ -1803,13 +1808,10 @@ INPUT_PORTS_START( neogeo )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0aff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0500, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ngarcade_base_state, startsel_edge_joy_r, nullptr)
|
||||
PORT_BIT( 0x7000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_base_state, get_memcard_status, nullptr)
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_CUSTOM ) /* Hardware type (AES=0, MVS=1). Some games check this and show a piracy warning screen if the hardware and BIOS don't match */
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_CUSTOM ) // Hardware type (AES=0, MVS=1). Some games check this and show a piracy warning screen if the hardware and BIOS don't match
|
||||
|
||||
PORT_START("AUDIO/COIN")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) // coin 1 (combined) or P1 coin 1 (separate) for BIOS that supports it
|
||||
@ -1903,8 +1905,6 @@ MACHINE_CONFIG_START(neogeo_base_state::neogeo_base)
|
||||
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(NOOP) // memory card: register select enable/set to normal (what does it mean?)
|
||||
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(neogeo_base_state, set_palette_bank))
|
||||
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEFAULT_LAYOUT(layout_neogeo)
|
||||
|
||||
@ -1953,8 +1953,9 @@ MACHINE_CONFIG_START(ngarcade_base_state::neogeo_arcade)
|
||||
MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(ngarcade_base_state, set_use_cart_audio))
|
||||
MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(ngarcade_base_state, set_save_ram_unlock))
|
||||
|
||||
MCFG_WATCHDOG_MODIFY("watchdog")
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
MCFG_WATCHDOG_TIME_INIT(attotime::from_ticks(3244030, NEOGEO_MASTER_CLOCK))
|
||||
|
||||
MCFG_UPD4990A_ADD("upd4990a", XTAL(32'768), NOOP, NOOP)
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("saveram")
|
||||
@ -2422,9 +2423,10 @@ MACHINE_CONFIG_START(mvs_led_state::fatfur2)
|
||||
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom_fatfur2")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(mvs_led_state::kizuna4p)
|
||||
mv1_fixed(config);
|
||||
MCFG_DEVICE_REMOVE("edge")
|
||||
MACHINE_CONFIG_START(mvs_state::kizuna4p)
|
||||
neogeo_arcade(config);
|
||||
neogeo_mono(config);
|
||||
|
||||
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "kiz4p", true)
|
||||
|
||||
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("rom")
|
||||
@ -2440,10 +2442,10 @@ MACHINE_CONFIG_START(mvs_led_state::kog)
|
||||
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("boot_kog")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(mvs_led_state::irrmaze)
|
||||
mv1_fixed(config);
|
||||
MACHINE_CONFIG_START(mvs_state::irrmaze)
|
||||
neogeo_arcade(config);
|
||||
neogeo_mono(config);
|
||||
|
||||
MCFG_DEVICE_REMOVE("edge")
|
||||
MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "irrmaze", true)
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_irrmaze)
|
||||
@ -2890,9 +2892,6 @@ static INPUT_PORTS_START( kizuna4p )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Players ) ) PORT_DIPLOCATION("SW:2")
|
||||
PORT_DIPSETTING( 0x02, "2" )
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
|
||||
PORT_MODIFY("SYSTEM")
|
||||
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 )
|
||||
@ -6948,7 +6947,7 @@ ROM_START( kizuna )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( kizuna4p ) /* same cartridge as kizuna - 4-player mode is enabled by an extension board that plugs into a compatible MVS */
|
||||
ROM_START( kizuna4p ) /* same cartridge as kizuna - 4-player mode is enabled by FTC1B JAMMA splitter board that plugs into MV-1B/MV-1C */
|
||||
ROM_REGION( 0x200000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
|
||||
ROM_LOAD16_WORD_SWAP( "216-p1.p1", 0x100000, 0x100000, CRC(75d2b3de) SHA1(ee778656c26828935ee2a2bfd0ce5a22aa681c10) ) /* mask rom TC5316200 */
|
||||
ROM_CONTINUE( 0x000000, 0x100000 )
|
||||
@ -11490,7 +11489,7 @@ GAME( 1996, kof96, neogeo, neobase, neogeo, mvs_led_state, 0, RO
|
||||
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, 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_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 )
|
||||
@ -11504,7 +11503,7 @@ GAME( 1997, kog, kof97, kog, neogeo, mvs_led_state, 0, RO
|
||||
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( 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_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
|
||||
|
@ -208,6 +208,9 @@ private:
|
||||
|
||||
class ngarcade_base_state : public neogeo_base_state
|
||||
{
|
||||
public:
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(startsel_edge_joy_r);
|
||||
|
||||
protected:
|
||||
ngarcade_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: neogeo_base_state(mconfig, type, tag)
|
||||
|
Loading…
Reference in New Issue
Block a user