summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--language/Chinese_Simplified/strings.po78
-rw-r--r--language/Chinese_Traditional/strings.po74
-rw-r--r--src/devices/bus/neogeo_ctrl/ctrl.cpp2
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.cpp14
-rw-r--r--src/devices/bus/neogeo_ctrl/irrmaze.h3
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.cpp27
-rw-r--r--src/devices/bus/neogeo_ctrl/joystick.h10
-rw-r--r--src/devices/bus/neogeo_ctrl/kizuna4p.cpp63
-rw-r--r--src/devices/bus/neogeo_ctrl/kizuna4p.h16
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.cpp19
-rw-r--r--src/devices/bus/neogeo_ctrl/mahjong.h5
-rw-r--r--src/mame/drivers/dkong.cpp27
-rw-r--r--src/mame/drivers/duet16.cpp66
-rw-r--r--src/mame/drivers/fmtowns.cpp29
-rw-r--r--src/mame/drivers/grchamp.cpp101
-rw-r--r--src/mame/drivers/neogeo.cpp85
-rw-r--r--src/mame/includes/neogeo.h3
-rw-r--r--src/mame/mame.lst3
18 files changed, 397 insertions, 228 deletions
diff --git a/language/Chinese_Simplified/strings.po b/language/Chinese_Simplified/strings.po
index 8c926ab63e6..76044cebd42 100644
--- a/language/Chinese_Simplified/strings.po
+++ b/language/Chinese_Simplified/strings.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: MAME\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-28 15:32+1000\n"
-"PO-Revision-Date: 2018-03-25 00:47+0800\n"
+"PO-Revision-Date: 2018-04-28 19:01+0800\n"
"Last-Translator: YuiFAN\n"
"Language-Team: MAME Language Team\n"
"Language: zh_CN\n"
@@ -693,7 +693,7 @@ msgstr "切换项目顺序"
#: src/frontend/mame/ui/swlist.cpp:259
#, c-format
msgid "Switched Order: entries now ordered by %s"
-msgstr "切换顺序:目前项目依照 %s 排序"
+msgstr "切换顺序:当前项目依照 %s 排序"
#: src/frontend/mame/ui/swlist.cpp:259
msgid "shortname"
@@ -2474,6 +2474,12 @@ msgid ""
"\n"
"The selected option enables the following items:\n"
msgstr ""
+"[ 此选项当前已挂载於运行中的系统 ]\n"
+"\n"
+"选项: %1$s\n"
+"装置: %1$s\n"
+"\n"
+"已选用的选项启用下列项目:\n"
#: src/frontend/mame/ui/devopt.cpp:40
#, c-format
@@ -2485,59 +2491,65 @@ msgid ""
"\n"
"If you select this option, the following items will be enabled:\n"
msgstr ""
+"[ 此选项当前「尚未」挂载於运行中的系统 ]\n"
+"\n"
+"选项: %1$s\n"
+"装置: %1$s\n"
+"\n"
+"如选用此选项,下列项目將启用:\n"
#: src/frontend/mame/ui/devopt.cpp:48
msgid "* CPU:\n"
-msgstr ""
+msgstr "* CPU:\n"
#: src/frontend/mame/ui/devopt.cpp:72 src/frontend/mame/ui/devopt.cpp:133
#, c-format
msgid " %1$d×%2$s %3$d.%4$06d MHz\n"
-msgstr ""
+msgstr " %1$d×%2$s %3$d.%4$06d MHz\n"
#: src/frontend/mame/ui/devopt.cpp:72 src/frontend/mame/ui/devopt.cpp:133
msgid " %1$d×%2$s %5$d.%6$03d kHz\n"
-msgstr ""
+msgstr " %1$d×%2$s %5$d.%6$03d kHz\n"
#: src/frontend/mame/ui/devopt.cpp:73 src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s %3$d.%4$06d MHz\n"
-msgstr ""
+msgstr " %2$s %3$d.%4$06d MHz\n"
#: src/frontend/mame/ui/devopt.cpp:73 src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s %5$d.%6$03d kHz\n"
-msgstr ""
+msgstr " %2$s %5$d.%6$03d kHz\n"
#: src/frontend/mame/ui/devopt.cpp:85
msgid "* Video:\n"
-msgstr ""
+msgstr "* 視訊:\n"
#: src/frontend/mame/ui/devopt.cpp:90
#, c-format
msgid " Screen '%1$s': Vector\n"
-msgstr ""
+msgstr " 画面 '%1$s': 向量\n"
#: src/frontend/mame/ui/devopt.cpp:99
#, c-format
msgid " Screen '%1$s': %2$d × %3$d (V) %4$f Hz\n"
-msgstr ""
+msgstr " 画面 '%1$s': %2$d × %3$d (V) %4$f Hz\n"
#: src/frontend/mame/ui/devopt.cpp:100
#, c-format
msgid " Screen '%1$s': %2$d × %3$d (H) %4$f Hz\n"
-msgstr ""
+msgstr " 画面 '%1$s': %2$d × %3$d (H) %4$f Hz\n"
#: src/frontend/mame/ui/devopt.cpp:113
msgid "* Sound:\n"
-msgstr ""
+msgstr "* 声音:\n"
#: src/frontend/mame/ui/devopt.cpp:133
#, c-format
msgid " %1$d×%2$s\n"
-msgstr ""
+msgstr " %1$d×%2$s\n"
#: src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s\n"
-msgstr ""
+msgstr " %2$s\n"
#: src/frontend/mame/ui/devopt.cpp:164
#, c-format
@@ -2545,90 +2557,92 @@ msgid ""
"* BIOS settings:\n"
" %1$d options [default: %2$s]\n"
msgstr ""
+"* BIOS 设定:\n"
+" %1$d 选项 [缺省: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:204 src/frontend/mame/ui/devopt.cpp:220
#: src/frontend/mame/ui/devopt.cpp:265
#, c-format
msgid " %1$s [default: %2$s]\n"
-msgstr ""
+msgstr " %1$s [缺省: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:209 src/frontend/mame/ui/devopt.cpp:225
#, c-format
msgid " %1$s\n"
-msgstr ""
+msgstr " %1$s\n"
#: src/frontend/mame/ui/devopt.cpp:230
msgid "* DIP switch settings:\n"
-msgstr ""
+msgstr "* 指拨开关设定:\n"
#: src/frontend/mame/ui/devopt.cpp:232
msgid "* Configuration settings:\n"
-msgstr ""
+msgstr "* 配置设定:\n"
#: src/frontend/mame/ui/devopt.cpp:234
msgid "* Input device(s):\n"
-msgstr ""
+msgstr "* 输入装置:"
#: src/frontend/mame/ui/devopt.cpp:236
#, c-format
msgid " User inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 使用者输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:238
#, c-format
msgid " Mahjong inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 麻将输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:240
#, c-format
msgid " Hanafuda inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 花牌输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:242
#, c-format
msgid " Gambling inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 博奕输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:244
#, c-format
msgid " Analog inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 类比输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:246
#, c-format
msgid " Adjuster inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 调节器输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:248
#, c-format
msgid " Keypad inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 数字键盘输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:250
#, c-format
msgid " Keyboard inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 键盘输入 [%1$d 输入]\n"
#: src/frontend/mame/ui/devopt.cpp:255
msgid "* Media Options:\n"
-msgstr ""
+msgstr "* 媒体选项:\n"
#: src/frontend/mame/ui/devopt.cpp:257
#, c-format
msgid " %1$s [tag: %2$s]\n"
-msgstr ""
+msgstr " %1$s [標籤: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:263
msgid "* Slot Options:\n"
-msgstr ""
+msgstr "* 插槽选项:\n"
#: src/frontend/mame/ui/devopt.cpp:270
msgid "[None]\n"
-msgstr ""
+msgstr "[無]\n"
#: plugins/timer/init.lua:94
msgid "Current time"
-msgstr "目前时数"
+msgstr "当前时数"
#: plugins/timer/init.lua:96
msgid "Total time"
diff --git a/language/Chinese_Traditional/strings.po b/language/Chinese_Traditional/strings.po
index 42e50f054c1..35407157e40 100644
--- a/language/Chinese_Traditional/strings.po
+++ b/language/Chinese_Traditional/strings.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: MAME\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-28 15:32+1000\n"
-"PO-Revision-Date: 2018-03-25 00:48+0800\n"
+"PO-Revision-Date: 2018-04-28 18:50+0800\n"
"Last-Translator: YuiFAN\n"
"Language-Team: MAME Language Team\n"
"Language: zh_TW\n"
@@ -2474,6 +2474,12 @@ msgid ""
"\n"
"The selected option enables the following items:\n"
msgstr ""
+"[ 此選項目前已掛載於執行中的系統 ]\n"
+"\n"
+"選項: %1$s\n"
+"裝置: %1$s\n"
+"\n"
+"已選用的選項啟用下列項目:\n"
#: src/frontend/mame/ui/devopt.cpp:40
#, c-format
@@ -2485,59 +2491,65 @@ msgid ""
"\n"
"If you select this option, the following items will be enabled:\n"
msgstr ""
+"[ 此選項目前「尚未」掛載於執行中的系統 ]\n"
+"\n"
+"選項: %1$s\n"
+"裝置: %1$s\n"
+"\n"
+"如選用此選項,下列項目將啟用:\n"
#: src/frontend/mame/ui/devopt.cpp:48
msgid "* CPU:\n"
-msgstr ""
+msgstr "* CPU:\n"
#: src/frontend/mame/ui/devopt.cpp:72 src/frontend/mame/ui/devopt.cpp:133
#, c-format
msgid " %1$d×%2$s %3$d.%4$06d MHz\n"
-msgstr ""
+msgstr " %1$d×%2$s %3$d.%4$06d MHz\n"
#: src/frontend/mame/ui/devopt.cpp:72 src/frontend/mame/ui/devopt.cpp:133
msgid " %1$d×%2$s %5$d.%6$03d kHz\n"
-msgstr ""
+msgstr " %1$d×%2$s %5$d.%6$03d kHz\n"
#: src/frontend/mame/ui/devopt.cpp:73 src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s %3$d.%4$06d MHz\n"
-msgstr ""
+msgstr " %2$s %3$d.%4$06d MHz\n"
#: src/frontend/mame/ui/devopt.cpp:73 src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s %5$d.%6$03d kHz\n"
-msgstr ""
+msgstr " %2$s %5$d.%6$03d kHz\n"
#: src/frontend/mame/ui/devopt.cpp:85
msgid "* Video:\n"
-msgstr ""
+msgstr "* 視訊:\n"
#: src/frontend/mame/ui/devopt.cpp:90
#, c-format
msgid " Screen '%1$s': Vector\n"
-msgstr ""
+msgstr " 畫面 '%1$s': 向量\n"
#: src/frontend/mame/ui/devopt.cpp:99
#, c-format
msgid " Screen '%1$s': %2$d × %3$d (V) %4$f Hz\n"
-msgstr ""
+msgstr " 畫面 '%1$s': %2$d × %3$d (V) %4$f Hz\n"
#: src/frontend/mame/ui/devopt.cpp:100
#, c-format
msgid " Screen '%1$s': %2$d × %3$d (H) %4$f Hz\n"
-msgstr ""
+msgstr " 畫面 '%1$s': %2$d × %3$d (H) %4$f Hz\n"
#: src/frontend/mame/ui/devopt.cpp:113
msgid "* Sound:\n"
-msgstr ""
+msgstr "* 聲音:\n"
#: src/frontend/mame/ui/devopt.cpp:133
#, c-format
msgid " %1$d×%2$s\n"
-msgstr ""
+msgstr " %1$d×%2$s\n"
#: src/frontend/mame/ui/devopt.cpp:134
msgid " %2$s\n"
-msgstr ""
+msgstr " %2$s\n"
#: src/frontend/mame/ui/devopt.cpp:164
#, c-format
@@ -2545,86 +2557,88 @@ msgid ""
"* BIOS settings:\n"
" %1$d options [default: %2$s]\n"
msgstr ""
+"* BIOS 設定:\n"
+" %1$d 選項 [預設值: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:204 src/frontend/mame/ui/devopt.cpp:220
#: src/frontend/mame/ui/devopt.cpp:265
#, c-format
msgid " %1$s [default: %2$s]\n"
-msgstr ""
+msgstr " %1$s [預設值: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:209 src/frontend/mame/ui/devopt.cpp:225
#, c-format
msgid " %1$s\n"
-msgstr ""
+msgstr " %1$s\n"
#: src/frontend/mame/ui/devopt.cpp:230
msgid "* DIP switch settings:\n"
-msgstr ""
+msgstr "* 指撥開關設定:\n"
#: src/frontend/mame/ui/devopt.cpp:232
msgid "* Configuration settings:\n"
-msgstr ""
+msgstr "* 配置設定:\n"
#: src/frontend/mame/ui/devopt.cpp:234
msgid "* Input device(s):\n"
-msgstr ""
+msgstr "* 輸入裝置:"
#: src/frontend/mame/ui/devopt.cpp:236
#, c-format
msgid " User inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 使用者輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:238
#, c-format
msgid " Mahjong inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 麻將輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:240
#, c-format
msgid " Hanafuda inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 花牌輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:242
#, c-format
msgid " Gambling inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 博奕輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:244
#, c-format
msgid " Analog inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 類比輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:246
#, c-format
msgid " Adjuster inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 調節器輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:248
#, c-format
msgid " Keypad inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 數字鍵盤輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:250
#, c-format
msgid " Keyboard inputs [%1$d inputs]\n"
-msgstr ""
+msgstr " 鍵盤輸入 [%1$d 輸入]\n"
#: src/frontend/mame/ui/devopt.cpp:255
msgid "* Media Options:\n"
-msgstr ""
+msgstr "* 媒體選項:\n"
#: src/frontend/mame/ui/devopt.cpp:257
#, c-format
msgid " %1$s [tag: %2$s]\n"
-msgstr ""
+msgstr " %1$s [標籤: %2$s]\n"
#: src/frontend/mame/ui/devopt.cpp:263
msgid "* Slot Options:\n"
-msgstr ""
+msgstr "* 插槽選項:\n"
#: src/frontend/mame/ui/devopt.cpp:270
msgid "[None]\n"
-msgstr ""
+msgstr "[無]\n"
#: plugins/timer/init.lua:94
msgid "Current time"
diff --git a/src/devices/bus/neogeo_ctrl/ctrl.cpp b/src/devices/bus/neogeo_ctrl/ctrl.cpp
index 1f36549fe17..745bcc58cf6 100644
--- a/src/devices/bus/neogeo_ctrl/ctrl.cpp
+++ b/src/devices/bus/neogeo_ctrl/ctrl.cpp
@@ -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
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.cpp b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
index 49379d02c47..d6020244ca7 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.cpp
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.cpp
@@ -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)
@@ -102,6 +107,15 @@ READ8_MEMBER(neogeo_irrmaze_device::in1_r)
}
//-------------------------------------------------
+// read_start_sel
+//-------------------------------------------------
+
+uint8_t neogeo_irrmaze_device::read_start_sel()
+{
+ return m_ss->read();
+}
+
+//-------------------------------------------------
// write_ctrlsel
//-------------------------------------------------
diff --git a/src/devices/bus/neogeo_ctrl/irrmaze.h b/src/devices/bus/neogeo_ctrl/irrmaze.h
index 4980a488098..bc00b4eeb2e 100644
--- a/src/devices/bus/neogeo_ctrl/irrmaze.h
+++ b/src/devices/bus/neogeo_ctrl/irrmaze.h
@@ -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
diff --git a/src/devices/bus/neogeo_ctrl/joystick.cpp b/src/devices/bus/neogeo_ctrl/joystick.cpp
index 83c0513be95..045e593895c 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.cpp
+++ b/src/devices/bus/neogeo_ctrl/joystick.cpp
@@ -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")
{
}
@@ -182,28 +187,28 @@ void neogeo_joy_ac_device::device_start()
//-------------------------------------------------
-// device_reset - device-specific reset
+// in0_r
//-------------------------------------------------
-void neogeo_joy_ac_device::device_reset()
+READ8_MEMBER(neogeo_joy_ac_device::in0_r)
{
+ return m_joy[0]->read();
}
-
//-------------------------------------------------
-// in0_r
+// in1_r
//-------------------------------------------------
-READ8_MEMBER(neogeo_joy_ac_device::in0_r)
+READ8_MEMBER(neogeo_joy_ac_device::in1_r)
{
- return m_joy1->read();
+ return m_joy[1]->read();
}
//-------------------------------------------------
-// in1_r
+// read_start_sel
//-------------------------------------------------
-READ8_MEMBER(neogeo_joy_ac_device::in1_r)
+uint8_t neogeo_joy_ac_device::read_start_sel()
{
- return m_joy2->read();
+ return m_ss->read();
}
diff --git a/src/devices/bus/neogeo_ctrl/joystick.h b/src/devices/bus/neogeo_ctrl/joystick.h
index 605ea8d8d90..bf07ec90b9b 100644
--- a/src/devices/bus/neogeo_ctrl/joystick.h
+++ b/src/devices/bus/neogeo_ctrl/joystick.h
@@ -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;
};
diff --git a/src/devices/bus/neogeo_ctrl/kizuna4p.cpp b/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
index 0c0420b6f3a..4ef3e3d78fe 100644
--- a/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
+++ b/src/devices/bus/neogeo_ctrl/kizuna4p.cpp
@@ -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)
{
}
@@ -104,17 +110,8 @@ 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();
}
diff --git a/src/devices/bus/neogeo_ctrl/kizuna4p.h b/src/devices/bus/neogeo_ctrl/kizuna4p.h
index 6f7fd6fcbb9..c48f0078a81 100644
--- a/src/devices/bus/neogeo_ctrl/kizuna4p.h
+++ b/src/devices/bus/neogeo_ctrl/kizuna4p.h
@@ -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;
};
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.cpp b/src/devices/bus/neogeo_ctrl/mahjong.cpp
index 7bb111f4779..1ac8d1e2d20 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.cpp
+++ b/src/devices/bus/neogeo_ctrl/mahjong.cpp
@@ -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")
{
}
@@ -132,6 +134,15 @@ uint8_t neogeo_mjctrl_ac_device::read_ctrl()
}
//-------------------------------------------------
+// read_start_sel
+//-------------------------------------------------
+
+uint8_t neogeo_mjctrl_ac_device::read_start_sel()
+{
+ return m_ss->read();
+}
+
+//-------------------------------------------------
// write_ctrlsel
//-------------------------------------------------
diff --git a/src/devices/bus/neogeo_ctrl/mahjong.h b/src/devices/bus/neogeo_ctrl/mahjong.h
index d8f1c0ca41a..d4fd1646ece 100644
--- a/src/devices/bus/neogeo_ctrl/mahjong.h
+++ b/src/devices/bus/neogeo_ctrl/mahjong.h
@@ -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;
};
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index 7a3fb34c4e1..b5d8ddb2392 100644
--- a/src/mame/drivers/dkong.cpp
+++ b/src/mame/drivers/dkong.cpp
@@ -2439,6 +2439,32 @@ ROM_START( dkongjr )
ROM_LOAD( "djr1-v-2n.2n", 0x0200, 0x0100, CRC(dbf185bf) SHA1(2697a991a4afdf079dd0b7e732f71c7618f43b70) ) /* character color codes on a per-column basis */
ROM_END
+ROM_START( dkongjr2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "0", 0x0000, 0x2000, CRC(dc1f1d12) SHA1(d0faac0310b0273429ccb3387b914792d1a312eb) )
+ ROM_LOAD( "1", 0x2000, 0x2000, CRC(f1f286d0) SHA1(cd87770c968d10623f312f651955ad9b1f85c6df) )
+ ROM_LOAD( "2", 0x4000, 0x2000, CRC(4cb856c4) SHA1(e5ac7155b13cac2c201fa733f5061fb4a0ceafa4) )
+ ROM_LOAD( "diag.bin", 0x8000, 0x1000, NO_DUMP )
+
+ ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound */
+ ROM_LOAD( "8", 0x0000, 0x1000, CRC(715da5f8) SHA1(f708c3fd374da65cbd9fe2e191152f5d865414a0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "9", 0x0000, 0x1000, CRC(8d51aca9) SHA1(64887564b079d98e98aafa53835e398f34fe4e3f) )
+ ROM_LOAD( "10", 0x1000, 0x1000, CRC(4ef64ba5) SHA1(41a7a4005087951f57f62c9751d62a8c495e6bb3) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 ) // not dumped for this set
+ ROM_LOAD( "v_7c.bin", 0x0000, 0x0800, CRC(dc7f4164) SHA1(07a6242e95b5c3b8dfdcd4b4950f463dba16dd77) )
+ ROM_LOAD( "v_7d.bin", 0x0800, 0x0800, CRC(0ce7dcf6) SHA1(0654b77526c49f0dfa077ac4f1f69cf5cb2e2f64) )
+ ROM_LOAD( "v_7e.bin", 0x1000, 0x0800, CRC(24d1ff17) SHA1(696854bf3dc5447d33b4815db357e6ce3834d867) )
+ ROM_LOAD( "v_7f.bin", 0x1800, 0x0800, CRC(0f8c083f) SHA1(0b688ae9da296b2447fffa5e135fd6a56ec3e790) )
+
+ ROM_REGION( 0x0300, "proms", 0 ) // not dumped for this set
+ ROM_LOAD( "c-2e.bpr", 0x0000, 0x0100, CRC(463dc7ad) SHA1(b2c9f22facc8885be2d953b056eb8dcddd4f34cb) ) /* palette low 4 bits (inverted) */
+ ROM_LOAD( "c-2f.bpr", 0x0100, 0x0100, CRC(47ba0042) SHA1(dbec3f4b8013628c5b8f83162e5f8b1f82f6ee5f) ) /* palette high 4 bits (inverted) */
+ ROM_LOAD( "v-2n.bpr", 0x0200, 0x0100, CRC(dbf185bf) SHA1(2697a991a4afdf079dd0b7e732f71c7618f43b70) ) /* character color codes on a per-column basis */
+ROM_END
+
ROM_START( dkongjrj )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "c_5ba.bin", 0x0000, 0x1000, CRC(50a015ce) SHA1(edcafdf8f989dd25bb142817084d270a6942577a) )
@@ -3675,6 +3701,7 @@ GAME( 2006, dkongx11, dkong, dk_braze, dkongx, dkong_state, dkongx, ROT
GAME( 2013, dkongpe, dkong, dkong2b, dkong, dkong_state, 0, ROT270, "hack (Clay Cowgill and Mike Mika)", "Donkey Kong: Pauline Edition Rev 5 (2013-04-22)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, dkongjr, 0, dkongjr, dkongjr, dkong_state, 0, ROT270, "Nintendo of America", "Donkey Kong Junior (US set F-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjr2, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT270, "Nintendo of America", "Donkey Kong Junior (US, bootleg?)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, dkongjrj, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT270, "Nintendo", "Donkey Kong Jr. (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, dkongjnrj, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT270, "Nintendo", "Donkey Kong Junior (Japan set F-1)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, dkongjrb, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT270, "bootleg", "Donkey Kong Jr. (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index 22c7810dff3..2ba24b6bd45 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -32,6 +32,7 @@ public:
m_pal(*this, "palette"),
m_chrpal(*this, "chrpal"),
m_rtc(*this, "rtc"),
+ m_tmint(*this, "tmint"),
m_screen(*this, "screen"),
m_chrrom(*this, "char"),
m_cvram(*this, "cvram"),
@@ -62,7 +63,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(rtc_d2_w);
DECLARE_WRITE_LINE_MEMBER(rtc_d3_w);
DECLARE_WRITE_LINE_MEMBER(rtc_busy_w);
- DECLARE_WRITE_LINE_MEMBER(itm_irq_w);
+ void rtc_irq_reset();
MC6845_UPDATE_ROW(crtc_update_row);
void duet16_io(address_map &map);
void duet16_mem(address_map &map);
@@ -74,19 +75,20 @@ private:
required_device<palette_device> m_pal;
required_device<palette_device> m_chrpal;
required_device<msm58321_device> m_rtc;
+ required_device<input_merger_device> m_tmint;
required_device<screen_device> m_screen;
required_memory_region m_chrrom;
required_shared_ptr<u16> m_cvram;
required_shared_ptr<u16> m_gvram;
u8 m_dmapg, m_dispctrl;
u8 m_rtc_d;
- bool m_rtc_busy, m_rtc_irq, m_itm_irq;
+ bool m_rtc_busy, m_rtc_irq;
};
void duet16_state::machine_reset()
{
m_rtc->cs1_w(ASSERT_LINE);
- m_itm_irq = m_rtc_irq = false;
+ rtc_irq_reset();
}
READ8_MEMBER(duet16_state::pic_r)
@@ -234,37 +236,40 @@ MC6845_UPDATE_ROW(duet16_state::crtc_update_row)
}
}
-WRITE_LINE_MEMBER(duet16_state::itm_irq_w)
-{
- m_itm_irq = state == ASSERT_LINE ? true : false;
- m_pic->ir0_w(m_rtc_irq || m_itm_irq ? ASSERT_LINE : CLEAR_LINE);
-}
-
WRITE_LINE_MEMBER(duet16_state::rtc_d0_w)
{
- m_rtc_d = (m_rtc_d & ~1) | (state == ASSERT_LINE ? 1 : 0);
+ m_rtc_d = (m_rtc_d & ~1) | (state ? 1 : 0);
}
WRITE_LINE_MEMBER(duet16_state::rtc_d1_w)
{
- m_rtc_d = (m_rtc_d & ~2) | (state == ASSERT_LINE ? 2 : 0);
+ m_rtc_d = (m_rtc_d & ~2) | (state ? 2 : 0);
}
WRITE_LINE_MEMBER(duet16_state::rtc_d2_w)
{
- m_rtc_d = (m_rtc_d & ~4) | (state == ASSERT_LINE ? 4 : 0);
+ m_rtc_d = (m_rtc_d & ~4) | (state ? 4 : 0);
}
WRITE_LINE_MEMBER(duet16_state::rtc_d3_w)
{
- m_rtc_d = (m_rtc_d & ~8) | (state == ASSERT_LINE ? 8 : 0);
+ m_rtc_d = (m_rtc_d & ~8) | (state ? 8 : 0);
}
WRITE_LINE_MEMBER(duet16_state::rtc_busy_w)
{
- m_rtc_busy = state == ASSERT_LINE ? true : false;
- m_rtc_irq = m_rtc_busy || m_rtc_irq;
- m_pic->ir0_w(m_rtc_irq || m_itm_irq ? ASSERT_LINE : CLEAR_LINE);
+ if (state && !m_rtc_busy && !m_rtc_irq)
+ {
+ m_rtc_irq = true;
+ m_tmint->in_w<1>(1);
+ }
+ m_rtc_busy = state;
+}
+
+void duet16_state::rtc_irq_reset()
+{
+ m_rtc_irq = false;
+ m_tmint->in_w<1>(0);
}
READ8_MEMBER(duet16_state::rtc_r)
@@ -280,10 +285,10 @@ READ8_MEMBER(duet16_state::rtc_r)
WRITE8_MEMBER(duet16_state::rtc_w)
{
- m_rtc->d0_w(data & 1 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d1_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d2_w(data & 4 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d3_w(data & 8 ? ASSERT_LINE : CLEAR_LINE);
+ m_rtc->d0_w(BIT(data, 0));
+ m_rtc->d1_w(BIT(data, 1));
+ m_rtc->d2_w(BIT(data, 2));
+ m_rtc->d3_w(BIT(data, 3));
m_rtc->cs2_w(ASSERT_LINE);
m_rtc->write_w(ASSERT_LINE);
m_rtc->write_w(CLEAR_LINE);
@@ -292,18 +297,18 @@ WRITE8_MEMBER(duet16_state::rtc_w)
READ8_MEMBER(duet16_state::rtc_stat_r)
{
- m_rtc_irq = false;
- if(!m_itm_irq)
- m_pic->ir0_w(CLEAR_LINE);
- return (m_rtc_busy ? 0x80 : 0);
+ u8 status = m_rtc_irq ? 0x80 : 0;
+ if (!machine().side_effects_disabled())
+ rtc_irq_reset();
+ return status;
}
WRITE8_MEMBER(duet16_state::rtc_addr_w)
{
- m_rtc->d0_w(data & 1 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d1_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d2_w(data & 4 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d3_w(data & 8 ? ASSERT_LINE : CLEAR_LINE);
+ m_rtc->d0_w(BIT(data, 0));
+ m_rtc->d1_w(BIT(data, 1));
+ m_rtc->d2_w(BIT(data, 2));
+ m_rtc->d3_w(BIT(data, 3));
m_rtc->cs2_w(ASSERT_LINE);
m_rtc->address_write_w(ASSERT_LINE);
m_rtc->address_write_w(CLEAR_LINE);
@@ -378,7 +383,7 @@ MACHINE_CONFIG_START(duet16_state::duet16)
MCFG_PTM6840_EXTERNAL_CLOCKS(0.0, 0.0, (8_MHz_XTAL / 8).dvalue()) // C3 = 1MHz
MCFG_PTM6840_O3_CB(DEVWRITELINE("itm", ptm6840_device, set_c1)) // C1 = C2 = O3
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("itm", ptm6840_device, set_c2))
- MCFG_PTM6840_IRQ_CB(WRITELINE(duet16_state, itm_irq_w)) // INT6
+ MCFG_PTM6840_IRQ_CB(DEVWRITELINE("tmint", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD("sio", UPD7201_NEW, 8_MHz_XTAL / 2)
MCFG_Z80SIO_OUT_INT_CB(DEVWRITELINE("pic", pic8259_device, ir1_w)) // INT5
@@ -396,6 +401,9 @@ MACHINE_CONFIG_START(duet16_state::duet16)
MCFG_INPUT_MERGER_ANY_HIGH("kbint")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(DEVWRITELINE("pic", pic8259_device, ir5_w)) // INT2
+ MCFG_INPUT_MERGER_ANY_HIGH("tmint")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(DEVWRITELINE("pic", pic8259_device, ir0_w)) // INT6
+
MCFG_UPD765A_ADD("fdc", true, false)
MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE("dmac", am9517a_device, dreq0_w))
MCFG_UPD765_INTRQ_CALLBACK(DEVWRITELINE("pic", pic8259_device, ir3_w)) // INT4
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index b1567692ea2..45d2601a147 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -1936,44 +1936,45 @@ READ8_MEMBER(towns_state::towns_rtc_r)
WRITE8_MEMBER(towns_state::towns_rtc_w)
{
- m_rtc->d0_w(data & 1 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d1_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d2_w(data & 4 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->d3_w(data & 8 ? ASSERT_LINE : CLEAR_LINE);
+ m_rtc->d0_w(BIT(data, 0));
+ m_rtc->d1_w(BIT(data, 1));
+ m_rtc->d2_w(BIT(data, 2));
+ m_rtc->d3_w(BIT(data, 3));
}
WRITE8_MEMBER(towns_state::towns_rtc_select_w)
{
- m_rtc->cs1_w(data & 0x80 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->cs2_w(data & 0x80 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->read_w(data & 4 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->write_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
- m_rtc->address_write_w(data & 1 ? ASSERT_LINE : CLEAR_LINE);
+ m_rtc->cs1_w(BIT(data, 7));
+ m_rtc->cs2_w(BIT(data, 7));
+ m_rtc->read_w(BIT(data, 2));
+ m_rtc->write_w(BIT(data, 1));
+ m_rtc->address_write_w(BIT(data, 0));
}
WRITE_LINE_MEMBER(towns_state::rtc_d0_w)
{
- m_rtc_d = (m_rtc_d & ~1) | (state == ASSERT_LINE ? 1 : 0);
+ m_rtc_d = (m_rtc_d & ~1) | (state ? 1 : 0);
}
WRITE_LINE_MEMBER(towns_state::rtc_d1_w)
{
- m_rtc_d = (m_rtc_d & ~2) | (state == ASSERT_LINE ? 2 : 0);
+ m_rtc_d = (m_rtc_d & ~2) | (state ? 2 : 0);
}
WRITE_LINE_MEMBER(towns_state::rtc_d2_w)
{
- m_rtc_d = (m_rtc_d & ~4) | (state == ASSERT_LINE ? 4 : 0);
+ m_rtc_d = (m_rtc_d & ~4) | (state ? 4 : 0);
}
WRITE_LINE_MEMBER(towns_state::rtc_d3_w)
{
- m_rtc_d = (m_rtc_d & ~8) | (state == ASSERT_LINE ? 8 : 0);
+ m_rtc_d = (m_rtc_d & ~8) | (state ? 8 : 0);
}
WRITE_LINE_MEMBER(towns_state::rtc_busy_w)
{
- m_rtc_busy = state == ASSERT_LINE ? true : false;
+ // active low output
+ m_rtc_busy = !state;
}
// SCSI controller - I/O ports 0xc30 and 0xc32
diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp
index 902cae411cd..7f1e1b7180e 100644
--- a/src/mame/drivers/grchamp.cpp
+++ b/src/mame/drivers/grchamp.cpp
@@ -849,6 +849,103 @@ ROM_START( grchamp )
ROM_LOAD( "gr09.bpr", 0x20, 0x20, CRC(260fb2b9) SHA1(db0bf49f12a944613d113317d7dfea25bd7469fc) ) /* sprite/text colors */
ROM_END
+ROM_START( grchampa )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "gr05a", 0x0000, 0x1000, CRC(4e54eeeb) SHA1(e8327e2a4596233f5f4a4dbf7cdf90f67447fc2a) )
+ ROM_LOAD( "gr06", 0x1000, 0x1000, CRC(4afd9fb2) SHA1(93b6829b5196cbeb37925bda29722f02a9ef83be) )
+ ROM_LOAD( "gr07-1", 0x2000, 0x1000, CRC(4deed8a1) SHA1(4616e1467bc696272117ad3f55cbff420c7e1deb) )
+ ROM_LOAD( "gr08", 0x3000, 0x1000, CRC(2e0670ab) SHA1(b9a39133d60f1d8316005f9d029db63f4e486174) )
+
+ ROM_REGION( 0x8000, "sub", 0 )
+ ROM_LOAD( "gr18", 0x0000, 0x1000, CRC(becd0e81) SHA1(a5469711efab6c4befed7a5ecdccf5d14e6e0aa9) )
+ ROM_LOAD( "gr17", 0x1000, 0x1000, CRC(aeba2f28) SHA1(c3efe5fede642465d42a1317d114bddd0b961884) )
+ ROM_LOAD( "gr16", 0x5000, 0x1000, CRC(885d708e) SHA1(d5d2978a0eeca167ec1fb9f6f981388de46fbf81) )
+ ROM_LOAD( "gr15", 0x6000, 0x1000, CRC(a822430b) SHA1(4d29612489362d2dc3f3a9eab609902a50c34aff) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "gr24", 0x0000, 0x0800, CRC(66621fa8) SHA1(957f60fbf4bc0a36931a8c2bde05aea1f9e6671f) )
+ ROM_LOAD( "gr25", 0x0800, 0x0800, CRC(9b8cdbf1) SHA1(e96af63896b8af0e2ed5a94172c6efdaaf56f678) )
+ ROM_LOAD( "gr26", 0x1000, 0x0800, CRC(335b0f73) SHA1(790c31cda27efd149ddaab695852cad121fa1586) )
+ ROM_LOAD( "gr27", 0x1800, 0x0800, CRC(3bad8c2e) SHA1(0a429c687f95b995979f995a44238f44c00a5a63) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 ) /* characters/sprites */
+ ROM_LOAD( "gr04", 0x0000, 0x0800, CRC(7617e65c) SHA1(c83c15cff14a9d7acc2696807b3f0c1b83d095c8) )
+ ROM_LOAD( "gr03", 0x0800, 0x0800, CRC(e7bdf2ee) SHA1(343d8a2b9e11cbe47d66f698150036f4a7d51c84) )
+ ROM_LOAD( "gr02", 0x1000, 0x0800, CRC(7d60dd41) SHA1(9021ad635acc65341532280f9ba1f349ac3a5af0) )
+ ROM_LOAD( "gr01", 0x1800, 0x0800, CRC(5f13ae33) SHA1(b9c05c9e3f5676c6bcd4019f6ac82277d56d253e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 ) /* left tiles */
+ ROM_LOAD( "gr20", 0x0000, 0x1000, CRC(88ba2c03) SHA1(4dfd136f122663223043c6cd79566f8eeec72681) )
+ ROM_LOAD( "gr19", 0x1000, 0x1000, CRC(ff34b444) SHA1(51c67a1691da3a2d8ddcff5fd8fa816b1f9c60c0) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 ) /* right tiles */
+ ROM_LOAD( "gr21", 0x0000, 0x1000, CRC(2f77a9f3) SHA1(9e20a776c5e8c7577c3e8467d4f8ac7ac909901f) )
+ ROM_LOAD( "gr22", 0x1000, 0x1000, CRC(31bb5fc7) SHA1(9f638e632e7c72461bedecb710ac9b30f015eebf) )
+
+ ROM_REGION( 0x2000, "gfx4", 0 ) /* center tiles */
+ ROM_LOAD( "gr13", 0x0000, 0x1000, CRC(d5e19ebd) SHA1(d0ca553eec87619ec489f7ba6238f1fdde7c480b) )
+ ROM_LOAD( "gr14", 0x1000, 0x1000, CRC(d129b8e4) SHA1(db25bfde2a48e14d38a43133d88d479c3cc1397a) )
+
+ ROM_REGION( 0x0800, "gfx5", 0 ) /* rain */
+ ROM_LOAD( "gr10", 0x0000, 0x0800, CRC(b1f0a873) SHA1(f7ef1a16556ae3e7d70209bcb38ea3ae94208789) )
+
+ ROM_REGION( 0x0800, "gfx6", 0 ) /* headlights */
+ ROM_LOAD( "gr12", 0x0000, 0x0800, CRC(f3bc599e) SHA1(3ec19584896a0bf10b9c5750f3c78ad3e722cc49) )
+
+ ROM_REGION( 0x1000, "gfx7", 0 ) /* player */
+ ROM_LOAD( "gr11", 0x0000, 0x1000, CRC(54eb3ec9) SHA1(22739240f53c708d8e53094d96916778e12beeed) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "gr23.bpr", 0x00, 0x20, CRC(41c6c48d) SHA1(8bd14b5f02f9da0a68e3125955be18462b57401d) ) /* background colors */
+ ROM_LOAD( "gr09.bpr", 0x20, 0x20, CRC(260fb2b9) SHA1(db0bf49f12a944613d113317d7dfea25bd7469fc) ) /* sprite/text colors */
+ROM_END
+
+ROM_START( grchampb )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "gg01-a", 0x0000, 0x1000, CRC(9a815139) SHA1(0f4ea577c12dd13da9fa114d6a1653cb516324f3) )
+ ROM_LOAD( "gg02-a", 0x1000, 0x1000, CRC(e35ac684) SHA1(202899f1b55f68ea6017b18b149f254735661bea) )
+ ROM_LOAD( "gg03", 0x2000, 0x1000, CRC(feb0ad96) SHA1(1335725d25777f9c462b4c97f7a268378dc7753d) )
+ ROM_LOAD( "gg04", 0x3000, 0x1000, CRC(afabfe96) SHA1(d265595522ccf94395f2235c02d8c37f1ada9950) )
+
+ ROM_REGION( 0x8000, "sub", 0 )
+ ROM_LOAD( "gm09", 0x0000, 0x1000, CRC(d57bd109) SHA1(d1cb5ba783eaceda45893f6404fe9dbac740a2de) )
+ ROM_LOAD( "gm10", 0x1000, 0x1000, CRC(41ba07f1) SHA1(103eeacdd36b4347fc62debb6b5f4163083313f4) )
+ ROM_LOAD( "gr16", 0x5000, 0x1000, CRC(885d708e) SHA1(d5d2978a0eeca167ec1fb9f6f981388de46fbf81) )
+ ROM_LOAD( "gr15", 0x6000, 0x1000, CRC(a822430b) SHA1(4d29612489362d2dc3f3a9eab609902a50c34aff) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "gm07", 0x0000, 0x1000, CRC(65dcc572) SHA1(c9b19af365fa7ade2698be0bb892591ba281ecb0) )
+ ROM_LOAD( "gm08", 0x1000, 0x1000, CRC(224d880c) SHA1(68aaaa0213d09cf34ba50c91d8c031d041f8a76f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 ) /* characters/sprites */
+ ROM_LOAD( "gm02", 0x0000, 0x1000, CRC(5911948d) SHA1(6f3a9a7f8d6a04b8e6d83756764c9c4185983d9b) )
+ ROM_LOAD( "gm01", 0x1000, 0x1000, CRC(846f8e89) SHA1(346bfd69268606fde27643b4d135b481536b73b1) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 ) /* left tiles */
+ ROM_LOAD( "gr20", 0x0000, 0x1000, CRC(88ba2c03) SHA1(4dfd136f122663223043c6cd79566f8eeec72681) )
+ ROM_LOAD( "gr19", 0x1000, 0x1000, CRC(ff34b444) SHA1(51c67a1691da3a2d8ddcff5fd8fa816b1f9c60c0) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 ) /* right tiles */
+ ROM_LOAD( "gr21", 0x0000, 0x1000, CRC(2f77a9f3) SHA1(9e20a776c5e8c7577c3e8467d4f8ac7ac909901f) )
+ ROM_LOAD( "gr22", 0x1000, 0x1000, CRC(31bb5fc7) SHA1(9f638e632e7c72461bedecb710ac9b30f015eebf) )
+
+ ROM_REGION( 0x2000, "gfx4", 0 ) /* center tiles */
+ ROM_LOAD( "gr13", 0x0000, 0x1000, CRC(d5e19ebd) SHA1(d0ca553eec87619ec489f7ba6238f1fdde7c480b) )
+ ROM_LOAD( "gr14", 0x1000, 0x1000, CRC(d129b8e4) SHA1(db25bfde2a48e14d38a43133d88d479c3cc1397a) )
+
+ ROM_REGION( 0x0800, "gfx5", 0 ) /* rain */
+ ROM_LOAD( "gr10", 0x0000, 0x0800, CRC(b1f0a873) SHA1(f7ef1a16556ae3e7d70209bcb38ea3ae94208789) )
+
+ ROM_REGION( 0x0800, "gfx6", 0 ) /* headlights */
+ ROM_LOAD( "gr12", 0x0000, 0x0800, CRC(f3bc599e) SHA1(3ec19584896a0bf10b9c5750f3c78ad3e722cc49) )
+
+ ROM_REGION( 0x1000, "gfx7", 0 ) /* player */
+ ROM_LOAD( "gr11", 0x0000, 0x1000, CRC(54eb3ec9) SHA1(22739240f53c708d8e53094d96916778e12beeed) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "gr23.bpr", 0x00, 0x20, CRC(41c6c48d) SHA1(8bd14b5f02f9da0a68e3125955be18462b57401d) ) /* background colors */
+ ROM_LOAD( "gr09.bpr", 0x20, 0x20, CRC(260fb2b9) SHA1(db0bf49f12a944613d113317d7dfea25bd7469fc) ) /* sprite/text colors */
+ROM_END
/*************************************
@@ -857,4 +954,6 @@ ROM_END
*
*************************************/
-GAMEL( 1981, grchamp, 0, grchamp, grchamp, grchamp_state, 0, ROT270, "Taito", "Grand Champion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp )
+GAMEL( 1981, grchamp, 0, grchamp, grchamp, grchamp_state, 0, ROT270, "Taito", "Grand Champion (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp )
+GAMEL( 1981, grchampa, grchamp, grchamp, grchamp, grchamp_state, 0, ROT270, "Taito", "Grand Champion (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp )
+GAMEL( 1981, grchampb, grchamp, grchamp, grchamp, grchamp_state, 0, ROT270, "Taito", "Grand Champion (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp )
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 430e5267071..16a4e50a4af 100644
--- a/src/mame/drivers/neogeo.cpp
+++ b/src/mame/drivers/neogeo.cpp
@@ -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
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index ab3d35d8073..c42a1fdef8b 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -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)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 423534f3160..66b7a0c83f8 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -11435,6 +11435,7 @@ dkongjnrj // (c) 1982 Nintendo
dkongjo // (c) 1981 Nintendo
dkongjo1 // (c) 1981 Nintendo
dkongjr // (c) 1982 Nintendo of America
+dkongjr2 // (c) 1982 Nintendo of America / bootleg ?
dkongjrb // bootleg
dkongjre // (c) 1982 Nintendo of America
dkongjrj // (c) 1982 Nintendo
@@ -14312,6 +14313,8 @@ gradius3js // GX945 (c) 1989 (Japan, split)
@source:grchamp.cpp
grchamp // GM (c) 1981 Taito Corporation
+grchampa // GM (c) 1981 Taito Corporation
+grchampb // GM (c) 1981 Taito Corporation
@source:grfd2301.cpp
grfd2301 //