diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua index 4e74fd9e6c3..14a2050c3a5 100644 --- a/scripts/src/machine.lua +++ b/scripts/src/machine.lua @@ -2622,6 +2622,8 @@ if (MACHINES["SPG2XX"]~=null) then files { MAME_DIR .. "src/devices/machine/spg2xx.cpp", MAME_DIR .. "src/devices/machine/spg2xx.h", + MAME_DIR .. "src/devices/machine/spg110.cpp", + MAME_DIR .. "src/devices/machine/spg110.h", } end diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index c323d53837e..16ba825d265 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3487,6 +3487,7 @@ files { MAME_DIR .. "src/mame/machine/rad_eu3a05gpio.h", MAME_DIR .. "src/mame/drivers/trkfldch.cpp", MAME_DIR .. "src/mame/drivers/tvgame.cpp", + MAME_DIR .. "src/mame/drivers/spg110.cpp", MAME_DIR .. "src/mame/drivers/vii.cpp", MAME_DIR .. "src/mame/drivers/xavix.cpp", MAME_DIR .. "src/mame/video/xavix.cpp", diff --git a/src/devices/machine/spg110.cpp b/src/devices/machine/spg110.cpp new file mode 100644 index 00000000000..f8b16b3700e --- /dev/null +++ b/src/devices/machine/spg110.cpp @@ -0,0 +1,51 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/***************************************************************************** + + SunPlus SPG110-series SoC peripheral emulation + + It is possible this shares some video features with spg110 and + can be made a derived device + +**********************************************************************/ + +#include "emu.h" +#include "spg110.h" + +DEFINE_DEVICE_TYPE(SPG110, spg110_device, "spg110", "SPG110 System-on-a-Chip") + +spg110_device::spg110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) +{ +} + +spg110_device::spg110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : spg110_device(mconfig, SPG110, tag, owner, clock) +{ +} + +void spg110_device::map(address_map &map) +{ + map(0x000000, 0x000fff).ram(); + // vregs are at 2000? +} + +void spg110_device::device_start() +{ +} + +void spg110_device::device_reset() +{ +} + + +uint32_t spg110_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +WRITE_LINE_MEMBER(spg110_device::vblank) +{ + if (!state) + return; +} diff --git a/src/devices/machine/spg110.h b/src/devices/machine/spg110.h new file mode 100644 index 00000000000..d9e8810baf0 --- /dev/null +++ b/src/devices/machine/spg110.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +#ifndef MAME_MACHINE_SPG110_H +#define MAME_MACHINE_SPG110_H + +#pragma once + +//#include "spg2xx.h" + +class spg110_device : public device_t +{ +public: + spg110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + spg110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + void map(address_map &map); + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(vblank); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + + +DECLARE_DEVICE_TYPE(SPG110, spg110_device) + +#endif // MAME_MACHINE_SPG110_H diff --git a/src/devices/machine/spg2xx.h b/src/devices/machine/spg2xx.h index e34c5261533..8f00ea167c9 100644 --- a/src/devices/machine/spg2xx.h +++ b/src/devices/machine/spg2xx.h @@ -27,12 +27,6 @@ ND - unknown - Wireless Air 60 ND - Likely many more - Also on this hardware: - - name PCB ID ROM width TSOP pads ROM size SEEPROM die markings - Radica Play TV Football 2 L7278 x16 48 not dumped no Sunplus - Dream Life ? x16 48 not dumped no Sunplus - **********************************************************************/ #ifndef MAME_MACHINE_SPG2XX_H diff --git a/src/mame/drivers/clickstart.cpp b/src/mame/drivers/clickstart.cpp index 1bea488df1c..6d27a5ba248 100644 --- a/src/mame/drivers/clickstart.cpp +++ b/src/mame/drivers/clickstart.cpp @@ -4,6 +4,9 @@ Leapfrog Clickstart Emulation + die markings show + "SunPlus QL8041C" ( known as Sunplus SPG2?? ) + Status: Some games have Checksums listed in the header area that appear to be diff --git a/src/mame/drivers/spg110.cpp b/src/mame/drivers/spg110.cpp new file mode 100644 index 00000000000..3e865b52322 --- /dev/null +++ b/src/mame/drivers/spg110.cpp @@ -0,0 +1,82 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/****************************************************************************** + + Short Description: + + die markings show + + "SunPlus PA7801" ( known as Sunplus SPG110? ) + Classic Arcade Pinball + +*******************************************************************************/ + +#include "emu.h" + +#include "cpu/unsp/unsp.h" +#include "machine/spg110.h" +#include "screen.h" +#include "speaker.h" + +class spg110_game_state : public driver_device +{ +public: + spg110_game_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_screen(*this, "screen") + , m_spg(*this, "spg") + { } + + void spg110_base(machine_config &config); + +protected: + + required_device m_maincpu; + required_device m_screen; + required_device m_spg; + + virtual void mem_map(address_map &map); +}; + +/************************* +* Machine Hardware * +*************************/ + +void spg110_game_state::mem_map(address_map &map) +{ + map(0x004000, 0x0fffff).rom().region("maincpu", 0x8000); + map(0x000000, 0x003fff).m(m_spg, FUNC(spg110_device::map)); +} + +static INPUT_PORTS_START( spg110 ) +INPUT_PORTS_END + + +void spg110_game_state::spg110_base(machine_config &config) +{ + UNSP(config, m_maincpu, XTAL(27'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &spg110_game_state::mem_map); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(320, 262); + m_screen->set_visarea(0, 320-1, 0, 240-1); + m_screen->set_screen_update("spg", FUNC(spg110_device::screen_update)); + m_screen->screen_vblank().set(m_spg, FUNC(spg110_device::vblank)); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); +// m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5); +// m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5); + + SPG110(config, m_spg, XTAL(27'000'000)); +} + +ROM_START( jak_capb ) + ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "classicarcadepinball.bin", 0x000000, 0x200000, CRC(b643dab0) SHA1(f57d546758ba442e28b5f0f48b3819b2fc2eb7f7) ) +ROM_END + +// JAKKS Pacific Inc TV games +CONS( 2004, jak_capb, 0, 0, spg110_base, spg110, spg110_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Classic Arcade Pinball (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 4187a834596..874bff3dcb5 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -6,8 +6,18 @@ Systems which run on the SPG243 SoC - ( die markings show "SunPlus QL8041" on JAKKS WWE / Fantastic 4 / Justice League, Dora the Explorer, Mattel Classic Sports ) + die markings show + "SunPlus QL8041" ( known as Sunplus SPG240? ) + JAKKS WWE + Fantastic 4 + Justice League + Dora the Explorer + Mattel Classic Sports + "SunPlus QL8041C" ( known as Sunplus SPG2?? ) see clickstart.cpp instead + + "SunPlus PA7801" ( known as Sunplus SPG110? ) see spg110.cpp instead + Status: Mostly working @@ -47,6 +57,11 @@ TODO: Work out how to access the hidden TEST menus for all games (most JAKKS games should have one at least) + Also on this hardware: + + name PCB ID ROM width TSOP pads ROM size SEEPROM die markings + Dream Life ? x16 48 not dumped no Sunplus + *******************************************************************************/ #include "emu.h" @@ -284,17 +299,7 @@ WRITE16_MEMBER(spg2xx_game_state::walle_portc_w) READ16_MEMBER(spg2xx_game_state::jakks_porta_r) { - const uint16_t temp = m_io_p1->read(); - uint16_t value = 0; - value |= (temp & 0x0001) ? 0x8000 : 0; - value |= (temp & 0x0002) ? 0x4000 : 0; - value |= (temp & 0x0004) ? 0x2000 : 0; - value |= (temp & 0x0008) ? 0x1000 : 0; - value |= (temp & 0x0010) ? 0x0800 : 0; - value |= (temp & 0x0020) ? 0x0400 : 0; - value |= (temp & 0x0040) ? 0x0200 : 0; - value |= (temp & 0x0080) ? 0x0100 : 0; - return value; + return m_io_p1->read(); } void spg2xx_game_state::mem_map(address_map &map) @@ -326,40 +331,41 @@ INPUT_PORTS_END static INPUT_PORTS_START( batman ) PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Menu") - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("B Button") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("X Button") + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button") + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Menu") + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("B Button") + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("X Button") INPUT_PORTS_END static INPUT_PORTS_START( walle ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button") - PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button") + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button") + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button") PORT_START("C") PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, spg2xx_game_state,i2c_r, nullptr) PORT_BIT( 0xfffe, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END + static INPUT_PORTS_START( jak_gkr ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_START("C") PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, spg2xx_game_state,i2c_r, nullptr) @@ -559,156 +565,35 @@ static INPUT_PORTS_START( rad_sktv ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( mattelcs ) // TODO: inputs once it boots (this is just for debug) +static INPUT_PORTS_START( mattelcs ) // there is a 'secret test mode' that previously got activated before inputs were mapped, might need unused inputs to active? there also needs to be 'difficult' selection somewhere PORT_START("P1") - PORT_DIPNAME( 0x0001, 0x0001, "IN0" ) + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) // must be IP_ACTIVE_LOW or you can't switch to Football properly? + PORT_DIPNAME( 0x0018, 0x0000, "Game Select Slider" ) // technically not a dipswitch, a 3 position slider, but how best map it? + PORT_DIPSETTING( 0x0008, "Baseball (Left)" ) + PORT_DIPSETTING( 0x0010, "Basketball (Middle)" ) + PORT_DIPSETTING( 0x0000, "Football (Right)" ) + // no 4th position possible + PORT_BIT( 0xffe0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("P2") - PORT_DIPNAME( 0x0001, 0x0001, "IN1" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Joypad Up") + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Joypad Down") + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Joypad Left") + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Joypad Right") + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Sound") // toggles between sound+music, sound only, and no sound + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Hike / Pitch") + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Shoot / Run") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Kick / Hit") + PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("P3") - PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END /* hold 'Console Down' while powering up to get the test menu, including input tests diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a25fee8fba1..cdb98a4e4c3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -38550,6 +38550,9 @@ vigilantd // (c) 1988 (Japan Rev D) vigilantg // (c) 1988 (US Rev G) vigilanto // (c) 1988 (US) +@source:spg110.cpp +jak_capb // + @source:vii.cpp jak_batm // The Batman, 2004 jak_wall //