mirror of
https://github.com/holub/mame
synced 2025-06-08 22:03:55 +03:00
bus/nes_ctrl: Added support for Exciting Boxing air bag controller. (#8817)
Software list items promoted to working (nes.xml) --------------------------------------- Exciting Boxing (Japan)
This commit is contained in:
parent
eac8c16a58
commit
2b3337f90b
@ -11312,8 +11312,7 @@ license:CC0
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- This game uses an unemulated punching bag controller -->
|
<software name="exboxing" supported="partial">
|
||||||
<software name="exboxing" supported="no">
|
|
||||||
<description>Exciting Boxing (Japan)</description>
|
<description>Exciting Boxing (Japan)</description>
|
||||||
<year>1987</year>
|
<year>1987</year>
|
||||||
<publisher>Konami</publisher>
|
<publisher>Konami</publisher>
|
||||||
@ -11323,6 +11322,7 @@ license:CC0
|
|||||||
<part name="cart" interface="nes_cart">
|
<part name="cart" interface="nes_cart">
|
||||||
<feature name="slot" value="vrc1" />
|
<feature name="slot" value="vrc1" />
|
||||||
<feature name="pcb" value="KONAMI-VRC-1" />
|
<feature name="pcb" value="KONAMI-VRC-1" />
|
||||||
|
<feature name="peripheral" value="konami_airbag" />
|
||||||
<dataarea name="prg" size="131072">
|
<dataarea name="prg" size="131072">
|
||||||
<rom name="rc250j0p" size="131072" crc="786148b6" sha1="20cba7316cb907d7a6245c598640ce7aca56f30a" offset="00000" />
|
<rom name="rc250j0p" size="131072" crc="786148b6" sha1="20cba7316cb907d7a6245c598640ce7aca56f30a" offset="00000" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
|
@ -2998,6 +2998,8 @@ if (BUSES["NES_CTRL"]~=null) then
|
|||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/fcmat.h",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/fcmat.h",
|
||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/hori.cpp",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/hori.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/hori.h",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/hori.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/nes_ctrl/konamibag.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/nes_ctrl/konamibag.h",
|
||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.cpp",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.h",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/konamihs.h",
|
||||||
MAME_DIR .. "src/devices/bus/nes_ctrl/miracle.cpp",
|
MAME_DIR .. "src/devices/bus/nes_ctrl/miracle.cpp",
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
#include "fcmat.h"
|
#include "fcmat.h"
|
||||||
#include "hori.h"
|
#include "hori.h"
|
||||||
#include "joypad.h"
|
#include "joypad.h"
|
||||||
|
#include "konamibag.h"
|
||||||
#include "konamihs.h"
|
#include "konamihs.h"
|
||||||
#include "miracle.h"
|
#include "miracle.h"
|
||||||
#include "mjpanel.h"
|
#include "mjpanel.h"
|
||||||
@ -205,6 +206,7 @@ void fc_expansion_devices(device_slot_interface &device)
|
|||||||
device.option_add("bandaihs", NES_BANDAIHS);
|
device.option_add("bandaihs", NES_BANDAIHS);
|
||||||
device.option_add("vaus", NES_ARKPADDLE_FC);
|
device.option_add("vaus", NES_ARKPADDLE_FC);
|
||||||
device.option_add("family_trainer", NES_FTRAINER);
|
device.option_add("family_trainer", NES_FTRAINER);
|
||||||
|
device.option_add("konamibag", NES_KONAMIBAG);
|
||||||
device.option_add("konamihs", NES_KONAMIHS);
|
device.option_add("konamihs", NES_KONAMIHS);
|
||||||
device.option_add("konami_piano", NES_DOREPIANO);
|
device.option_add("konami_piano", NES_DOREPIANO);
|
||||||
device.option_add("mj_panel", NES_MJPANEL);
|
device.option_add("mj_panel", NES_MJPANEL);
|
||||||
|
88
src/devices/bus/nes_ctrl/konamibag.cpp
Normal file
88
src/devices/bus/nes_ctrl/konamibag.cpp
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:kmg, Fabio Priuli
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Nintendo Family Computer - Konami Exciting Boxing Air Bag
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "konamibag.h"
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(NES_KONAMIBAG, nes_konamibag_device, "nes_konamibag", "Konami Exciting Boxing Air Bag")
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( nes_konamibag )
|
||||||
|
PORT_START("BAG.0")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Left Hook")
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // opponent dodges right, unclear how this is triggered
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // opponent dodges left, unclear how this is triggered
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Right Hook")
|
||||||
|
|
||||||
|
PORT_START("BAG.1")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Left Jab")
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Body")
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Right Jab")
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Straight")
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// input_ports - device-specific input ports
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
ioport_constructor nes_konamibag_device::device_input_ports() const
|
||||||
|
{
|
||||||
|
return INPUT_PORTS_NAME( nes_konamibag );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// nes_konamibag_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
nes_konamibag_device::nes_konamibag_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||||
|
: device_t(mconfig, NES_KONAMIBAG, tag, owner, clock)
|
||||||
|
, device_nes_control_port_interface(mconfig, *this)
|
||||||
|
, m_sensor(*this, "BAG.%u", 0)
|
||||||
|
, m_cur_sensor(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void nes_konamibag_device::device_start()
|
||||||
|
{
|
||||||
|
save_item(NAME(m_cur_sensor));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// read
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
u8 nes_konamibag_device::read_exp(offs_t offset)
|
||||||
|
{
|
||||||
|
return (offset == 1) ? m_sensor[m_cur_sensor]->read() << 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// write
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void nes_konamibag_device::write(u8 data)
|
||||||
|
{
|
||||||
|
m_cur_sensor = BIT(data, 1);
|
||||||
|
}
|
52
src/devices/bus/nes_ctrl/konamibag.h
Normal file
52
src/devices/bus/nes_ctrl/konamibag.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:kmg, Fabio Priuli
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Nintendo Family Computer - Konami Exciting Boxing Air Bag
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_NES_CTRL_KONAMIBAG_H
|
||||||
|
#define MAME_BUS_NES_CTRL_KONAMIBAG_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ctrl.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// ======================> nes_konamibag_device
|
||||||
|
|
||||||
|
class nes_konamibag_device :
|
||||||
|
public device_t,
|
||||||
|
public device_nes_control_port_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr feature_type imperfect_features() { return feature::CONTROLS; }
|
||||||
|
|
||||||
|
// construction/destruction
|
||||||
|
nes_konamibag_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||||
|
|
||||||
|
virtual ioport_constructor device_input_ports() const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
virtual u8 read_exp(offs_t offset) override;
|
||||||
|
virtual void write(u8 data) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_ioport_array<2> m_sensor;
|
||||||
|
u8 m_cur_sensor;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
DECLARE_DEVICE_TYPE(NES_KONAMIBAG, nes_konamibag_device)
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAME_BUS_NES_CTRL_KONAMIBAG_H
|
Loading…
Reference in New Issue
Block a user