summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2020-02-02 04:21:51 +0000
committer GitHub <noreply@github.com>2020-02-02 15:21:51 +1100
commit36bea6591548ef73bad8bcf0c6291322e0751b90 (patch)
tree0f2b96ae5783ecd5cdcaa8f10d144ecc2ad992bd
parente15251ffb8e5b13d02af575d208ab0d460eec722 (diff)
new WORKING machines (#6252)
----- Disney Game It! Classic Pals [Sean Riddle, David Haywood] Champiyon Pinball (Japan) [Sean Riddle, Peter Wilhelmsen, ShouTime, David Haywood] new WORKING clone ----- Master Boy (1987, Z80 hardware, Ichi-Funtel) [Juan Romero, ClawGrip] new NOT WORKING software list entry ----- buzztime_cart.xml: Series 1 - Everything [Sean Riddle, David Haywood] - start refactoring some nes_vt stuff (don't force non-nes controllers through the nes controller bus, and thus untangle nes_vt from nes.cpp, the controllers don't comform to the standard anyway)
-rw-r--r--hash/buzztime_cart.xml14
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.cpp10
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h2
-rw-r--r--src/devices/bus/nes_ctrl/joypad.cpp25
-rw-r--r--src/devices/bus/nes_ctrl/joypad.h12
-rw-r--r--src/mame/drivers/mastboyo.cpp25
-rw-r--r--src/mame/drivers/nes_vt.cpp420
-rw-r--r--src/mame/drivers/spg2xx_lexibook.cpp8
-rw-r--r--src/mame/drivers/xavix.cpp24
-rw-r--r--src/mame/includes/nes.h1
-rw-r--r--src/mame/mame.lst3
11 files changed, 293 insertions, 251 deletions
diff --git a/hash/buzztime_cart.xml b/hash/buzztime_cart.xml
index 38fd947a6c7..0e9d20c1c5a 100644
--- a/hash/buzztime_cart.xml
+++ b/hash/buzztime_cart.xml
@@ -1,6 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+<!-- Only 4 cartridges were released for this system, all in 'Series 1' -->
<softwarelist name="buzztime_cart" description="Cadaco Buzztime Trivia Cartridges">
<software name="s1tv" supported="no">
@@ -23,6 +24,17 @@
<rom name="buzztimeseries1history.bin" size="0x200000" crc="384b0c0e" sha1="c359e69b5c91ba98ebf477aee1bb5f62b721b427"/>
</dataarea>
</part>
- </software>
+ </software>
+
+ <software name="s1every" supported="no">
+ <description>Series 1 - Everything</description>
+ <year>200?</year>
+ <publisher>Cadaco</publisher>
+ <part name="cart" interface="buzztime_cart">
+ <dataarea name="rom" size="0x200000">
+ <rom name="buzztimeseries1everything.bin" size="0x200000" crc="84acabd9" sha1="cbbda9134bd899a3ec0b91664a3db0f986d5636b"/>
+ </dataarea>
+ </part>
+ </software>
</softwarelist>
diff --git a/src/devices/bus/nes_ctrl/ctrl.cpp b/src/devices/bus/nes_ctrl/ctrl.cpp
index 7ef1da0850f..991191a1f0c 100644
--- a/src/devices/bus/nes_ctrl/ctrl.cpp
+++ b/src/devices/bus/nes_ctrl/ctrl.cpp
@@ -212,13 +212,3 @@ void fc_expansion_devices(device_slot_interface &device)
device.option_add("barcode_battler", NES_BARCODE_BATTLER);
device.option_add("subor_keyboard", NES_SUBORKEYBOARD);
}
-
-void majesco_control_port1_devices(device_slot_interface &device)
-{
- device.option_add("ddr", NES_VT_MAJESCO_DDR);
-}
-
-void majesco_control_port2_devices(device_slot_interface &device)
-{
- // nothing?
-}
diff --git a/src/devices/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index 7991a549c93..6e9e05aac17 100644
--- a/src/devices/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
@@ -91,8 +91,6 @@ void nes_control_port2_devices(device_slot_interface &device);
void fc_control_port1_devices(device_slot_interface &device);
void fc_control_port2_devices(device_slot_interface &device);
void fc_expansion_devices(device_slot_interface &device);
-void majesco_control_port1_devices(device_slot_interface &device);
-void majesco_control_port2_devices(device_slot_interface &device);
#endif // MAME_BUS_NES_CTRL_CTRL_H
diff --git a/src/devices/bus/nes_ctrl/joypad.cpp b/src/devices/bus/nes_ctrl/joypad.cpp
index 1027340cf63..f6c8116c72c 100644
--- a/src/devices/bus/nes_ctrl/joypad.cpp
+++ b/src/devices/bus/nes_ctrl/joypad.cpp
@@ -39,8 +39,6 @@ DEFINE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device, "nes_fcpad2", "Ninten
DEFINE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device, "nes_ccpadl", "FC Crazy Climber Left Pad")
DEFINE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device, "nes_ccpadr", "FC Crazy Climber Right Pad")
DEFINE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device, "nes_arcstick", "Nintendo Family Computer Arcade Stick")
-// for the standalone TV Plug and Play
-DEFINE_DEVICE_TYPE(NES_VT_MAJESCO_DDR, nes_vt_majesco_ddr_device, "nes_ddr", "Majesco DDR Pad")
static INPUT_PORTS_START( nes_joypad )
PORT_START("JOYPAD")
@@ -78,18 +76,6 @@ static INPUT_PORTS_START( nes_ccpad_left )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
INPUT_PORTS_END
-static INPUT_PORTS_START( nes_ddr )
- PORT_START("JOYPAD")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Up Arrow") // these can't be treated as a joystick as opposing directions are often required
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Down Arrow")
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Left Arrow")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Right Arrow")
-INPUT_PORTS_END
-
static INPUT_PORTS_START( nes_ccpad_right )
PORT_START("JOYPAD")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -155,12 +141,6 @@ ioport_constructor nes_arcstick_device::device_input_ports() const
return INPUT_PORTS_NAME( nes_arcstick );
}
-ioport_constructor nes_vt_majesco_ddr_device::device_input_ports() const
-{
- return INPUT_PORTS_NAME( nes_ddr );
-}
-
-
static void arcstick_daisy(device_slot_interface &device)
{
device.option_add("arcstick", NES_ARCSTICK);
@@ -215,11 +195,6 @@ nes_ccpadr_device::nes_ccpadr_device(const machine_config &mconfig, const char *
{
}
-nes_vt_majesco_ddr_device::nes_vt_majesco_ddr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- nes_joypad_device(mconfig, NES_VT_MAJESCO_DDR, tag, owner, clock)
-{
-}
-
nes_arcstick_device::nes_arcstick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
nes_joypad_device(mconfig, NES_ARCSTICK, tag, owner, clock),
m_daisychain(*this, "subexp"),
diff --git a/src/devices/bus/nes_ctrl/joypad.h b/src/devices/bus/nes_ctrl/joypad.h
index 46cfd854756..76acd478906 100644
--- a/src/devices/bus/nes_ctrl/joypad.h
+++ b/src/devices/bus/nes_ctrl/joypad.h
@@ -80,17 +80,6 @@ public:
virtual ioport_constructor device_input_ports() const override;
};
-// ======================> nes_vt_majesco_ddr_device
-
-class nes_vt_majesco_ddr_device : public nes_joypad_device
-{
-public:
- // construction/destruction
- nes_vt_majesco_ddr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual ioport_constructor device_input_ports() const override;
-};
-
// ======================> nes_arcstick_device
class nes_arcstick_device : public nes_joypad_device
@@ -118,6 +107,5 @@ DECLARE_DEVICE_TYPE(NES_FCPAD_P2, nes_fcpad2_device)
DECLARE_DEVICE_TYPE(NES_CCPAD_LEFT, nes_ccpadl_device)
DECLARE_DEVICE_TYPE(NES_CCPAD_RIGHT, nes_ccpadr_device)
DECLARE_DEVICE_TYPE(NES_ARCSTICK, nes_arcstick_device)
-DECLARE_DEVICE_TYPE(NES_VT_MAJESCO_DDR, nes_vt_majesco_ddr_device)
#endif // MAME_BUS_NES_CTRL_JOYPAD_H
diff --git a/src/mame/drivers/mastboyo.cpp b/src/mame/drivers/mastboyo.cpp
index f07e63ac0cd..6e92db86a6f 100644
--- a/src/mame/drivers/mastboyo.cpp
+++ b/src/mame/drivers/mastboyo.cpp
@@ -300,6 +300,27 @@ ROM_START( mastboyoa )
ROM_LOAD( "masterboy-1987-82s129-l-ic40.bin", 0x000, 0x100, CRC(4d061216) SHA1(1abf9320da75a3fd23c6bdbcc4088d18e133c4e5) ) // Identical to the parent set.
ROM_END
+ROM_START( mastboyob )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "mb_p1.ic14", 0x0000, 0x4000, CRC(9ff8d386) SHA1(4bf0df6d5cb605f2a4c9ef3cf0ece229ce8cbb40) ) // masterboy-1987-27128-ic14.bin 43.347168%
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "fij.c36", 0x0000, 0x4000, CRC(bdd0f821) SHA1(63f607bccf1eded92531b2a10605d0578d371f77) ) // masterboy-1987-27128-mbfij-ic36.bin 97.308350%
+
+ ROM_REGION( 0x80000, "questions", ROMREGION_ERASEFF )
+ ROM_LOAD( "mb_3.ic9", 0x60000, 0x08000, CRC(b92ffd4f) SHA1(34431d6771e58f2ec083756f07e8b2a02bdb0e5a) ) // mastboy_27256.ic10 IDENTICAL
+ ROM_LOAD( "mb_4.ic8", 0x68000, 0x08000, CRC(c4844264) SHA1(e8a45b87878f95ad4590ad5e19c15339fde1a762) ) // mastboy_27256.ic9 99.996948%
+ ROM_LOAD( "mb_1.ic11", 0x70000, 0x08000, CRC(f5a9bf63) SHA1(53890e615cd73809c950a302bb423ec111ee493b) ) // mastboy_27256.ic12 99.996948%
+ ROM_LOAD( "mb_2.ic10", 0x78000, 0x08000, CRC(f2611186) SHA1(05860fecc23014c39cb28762763e94bc91412b34) ) // mastboy_27256.ic11 IDENTICAL
+
+ ROM_REGION( 0x100, "proms", 0 ) // timing or memory mapping?
+ ROM_LOAD( "d_82s129.ic23", 0x000, 0x100, CRC(d5fd2dfd) SHA1(66e3afa9e73507db0647d125c0be992b27d08adc) )
+
+ ROM_REGION( 0x200, "palette", 0 )
+ ROM_LOAD( "h_82s129.ic39", 0x100, 0x100, CRC(8e965fc3) SHA1(b52c8e505438937c7a5d3e1393d54f0ad0425e78) )
+ ROM_LOAD( "l_82s129.ic40", 0x000, 0x100, CRC(4d061216) SHA1(1abf9320da75a3fd23c6bdbcc4088d18e133c4e5) )
+ROM_END
-GAME( 1987, mastboyo, 0, mastboyo, mastboyo, mastboyo_state, empty_init, ROT0, "Gaelco (Covielsa license)", "Master Boy (1987, Z80 hardware, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, mastboyoa, mastboyo, mastboyo, mastboyo, mastboyo_state, empty_init, ROT0, "Gaelco (Covielsa license)", "Master Boy (1987, Z80 hardware, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mastboyo, 0, mastboyo, mastboyo, mastboyo_state, empty_init, ROT0, "Gaelco (Covielsa license)", "Master Boy (1987, Z80 hardware, Covielsa, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mastboyoa, mastboyo, mastboyo, mastboyo, mastboyo_state, empty_init, ROT0, "Gaelco (Covielsa license)", "Master Boy (1987, Z80 hardware, Covielsa, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mastboyob, mastboyo, mastboyo, mastboyo, mastboyo_state, empty_init, ROT0, "Gaelco (Ichi-Funtel license)", "Master Boy (1987, Z80 hardware, Ichi-Funtel)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index 187bc4ebc9b..ae343acb51b 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -67,7 +67,6 @@
***************************************************************************/
#include "emu.h"
-#include "includes/nes.h"
#include "cpu/m6502/n2a03.h"
#include "machine/bankdev.h"
#include "video/ppu2c0x_vt.h"
@@ -76,16 +75,18 @@
#include "screen.h"
#include "speaker.h"
-
-class nes_vt_state : public nes_base_state
+class nes_vt_state : public driver_device
{
public:
nes_vt_state(const machine_config& mconfig, device_type type, const char* tag) :
- nes_base_state(mconfig, type, tag),
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_io0(*this, "IO0"),
+ m_io1(*this, "IO1"),
m_screen(*this, "screen"),
m_ppu(*this, "ppu"),
m_apu(*this, "apu"),
- m_csel(*this, "CARTSEL"),
+ m_cartsel(*this, "CARTSEL"),
m_exin0(*this, "EXTRAIN0"),
m_exin1(*this, "EXTRAIN1"),
m_exin2(*this, "EXTRAIN2"),
@@ -104,9 +105,8 @@ public:
void nes_vt_base(machine_config& config);
void nes_vt(machine_config& config);
- void nes_vt_ddr(machine_config& config);
- void nes_vt_xx(machine_config& config);
+ void nes_vt_4k_ram(machine_config& config);
void nes_vt_sudopptv(machine_config& config);
/* OneBus read callbacks for getting sprite and tile data during rendering */
@@ -125,10 +125,20 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
+ virtual DECLARE_READ8_MEMBER(in0_r);
+ virtual DECLARE_READ8_MEMBER(in1_r);
+ virtual DECLARE_WRITE8_MEMBER(in0_w);
+
uint32_t screen_update(screen_device& screen, bitmap_rgb32& bitmap, const rectangle& cliprect);
void nes_vt_map(address_map& map);
+ required_device<cpu_device> m_maincpu;
+ optional_ioport m_io0;
+ optional_ioport m_io1;
+ uint8_t m_latch0;
+ uint8_t m_latch1;
+
required_device<screen_device> m_screen;
required_device<ppu_vt03_device> m_ppu;
required_device<nesapu_device> m_apu;
@@ -160,7 +170,7 @@ protected:
DECLARE_WRITE8_MEMBER(vt03_8000_w);
DECLARE_WRITE8_MEMBER(vt03_4034_w);
- optional_ioport m_csel;
+ optional_ioport m_cartsel;
optional_ioport m_exin0;
optional_ioport m_exin1;
optional_ioport m_exin2;
@@ -168,7 +178,7 @@ protected:
required_device<address_map_bank_device> m_prg;
- void nes_vt_xx_map(address_map& map);
+ void nes_vt_4k_ram_map(address_map& map);
/* Misc */
DECLARE_READ8_MEMBER(rs232flags_region_r);
@@ -219,7 +229,6 @@ private:
int calculate_real_video_address(int addr, int extended, int readtype);
-
required_memory_bank m_prgbank0;
required_memory_bank m_prgbank1;
required_memory_bank m_prgbank2;
@@ -338,6 +347,28 @@ private:
DECLARE_READ8_MEMBER(vt03_415c_r);
};
+class nes_vt_cy_lexibook_state : public nes_vt_cy_state
+{
+public:
+ nes_vt_cy_lexibook_state(const machine_config& mconfig, device_type type, const char* tag) :
+ nes_vt_cy_state(mconfig, type, tag),
+ m_previous_port0(0),
+ m_latch0_bit(0),
+ m_latch1_bit(0)
+ { }
+
+protected:
+ virtual DECLARE_READ8_MEMBER(in0_r) override;
+ virtual DECLARE_READ8_MEMBER(in1_r) override;
+ virtual DECLARE_WRITE8_MEMBER(in0_w) override;
+
+private:
+ int m_previous_port0;
+ uint8_t m_latch0_bit;
+ uint8_t m_latch1_bit;
+};
+
+
class nes_vt_dg_state : public nes_vt_state
{
public:
@@ -393,8 +424,6 @@ public:
nes_vt_ablpinb_state(const machine_config& mconfig, device_type type, const char* tag) :
nes_vt_state(mconfig, type, tag),
m_ablpinb_in0_val(0),
- m_io0(*this, "IO0"),
- m_io1(*this, "IO1"),
m_plunger(*this, "PLUNGER")
{ }
@@ -405,19 +434,15 @@ protected:
virtual void machine_reset() override;
private:
- DECLARE_READ8_MEMBER(ablpinb_in0_r);
- DECLARE_READ8_MEMBER(ablpinb_in1_r);
- DECLARE_WRITE8_MEMBER(ablpinb_in0_w);
- DECLARE_READ8_MEMBER(ablpinb_410f_r);
+ virtual DECLARE_READ8_MEMBER(in0_r) override;
+ virtual DECLARE_READ8_MEMBER(in1_r) override;
+ virtual DECLARE_WRITE8_MEMBER(in0_w) override;
- void nes_vt_ablpinb_map(address_map& map);
uint8_t m_ablpinb_in0_val;
int m_plunger_off;
int m_plunger_state_count;
- required_ioport m_io0;
- required_ioport m_io1;
required_ioport m_plunger;
};
@@ -425,9 +450,7 @@ class nes_vt_sudoku_state : public nes_vt_state
{
public:
nes_vt_sudoku_state(const machine_config& mconfig, device_type type, const char* tag) :
- nes_vt_state(mconfig, type, tag),
- m_io0(*this, "IO0"),
- m_io1(*this, "IO1")
+ nes_vt_state(mconfig, type, tag)
{ }
void init_sudoku();
@@ -439,23 +462,16 @@ protected:
//virtual void machine_reset() override;
private:
- DECLARE_READ8_MEMBER(in0_r);
- DECLARE_READ8_MEMBER(in1_r);
- DECLARE_WRITE8_MEMBER(in0_w);
-
- void nes_vt_sudoku_map(address_map& map);
-
- required_ioport m_io0;
- required_ioport m_io1;
+ virtual DECLARE_READ8_MEMBER(in0_r) override;
+ virtual DECLARE_READ8_MEMBER(in1_r) override;
+ virtual DECLARE_WRITE8_MEMBER(in0_w) override;
};
class nes_vt_majgnc_state : public nes_vt_state
{
public:
nes_vt_majgnc_state(const machine_config& mconfig, device_type type, const char* tag) :
- nes_vt_state(mconfig, type, tag),
- m_io0(*this, "IO0"),
- m_io1(*this, "IO1")
+ nes_vt_state(mconfig, type, tag)
{ }
void nes_vt_majgnc(machine_config& config);
@@ -463,15 +479,74 @@ public:
protected:
private:
- DECLARE_READ8_MEMBER(in0_r);
- DECLARE_READ8_MEMBER(in1_r);
- DECLARE_WRITE8_MEMBER(in0_w);
+};
- void nes_vt_majgnc_map(address_map& map);
+/* Standard I/O handlers (NES Controller clone) */
+
+READ8_MEMBER(nes_vt_state::in0_r)
+{
+ //logerror("%s: in0_r\n", machine().describe_context());
+ uint8_t ret = 0x40;
+ ret |= m_latch0 & 1;
+ m_latch0 >>= 1;
+ return ret;
+}
+
+READ8_MEMBER(nes_vt_state::in1_r)
+{
+ //logerror("%s: in1_r\n", machine().describe_context());
+ uint8_t ret = 0x40;
+ ret |= m_latch1 & 1;
+ m_latch1 >>= 1;
+ return ret;
+}
+
+WRITE8_MEMBER(nes_vt_state::in0_w)
+{
+ //logerror("%s: in0_w %02x\n", machine().describe_context(), data);
+ if (data & 0x01)
+ return;
+
+ m_latch0 = m_io0->read();
+ m_latch1 = m_io1->read();
+}
+
+/* Lexibook I/O handlers */
+
+READ8_MEMBER(nes_vt_cy_lexibook_state::in0_r)
+{
+ //logerror("%s: in0_r\n", machine().describe_context());
+ uint8_t ret = m_latch0_bit;
+ return ret;
+}
+
+READ8_MEMBER(nes_vt_cy_lexibook_state::in1_r)
+{
+ //logerror("%s: in1_r\n", machine().describe_context());
+ uint8_t ret = m_latch1_bit;
+ return ret;
+}
+
+WRITE8_MEMBER(nes_vt_cy_lexibook_state::in0_w)
+{
+ //logerror("%s: in0_w %02x\n", machine().describe_context(), data);
+ if ((!(data & 0x01)) && (m_previous_port0 & 0x01)) // 0x03 -> 0x02 transition
+ {
+ m_latch0 = m_io0->read();
+ m_latch1 = m_io1->read();
+ }
+
+ if ((!(data & 0x02)) && (m_previous_port0 & 0x02)) // 0x02 -> 0x00 transition
+ {
+ m_latch0_bit = m_latch0 & 0x01;
+ m_latch0 >>= 1;
+ m_latch1_bit = m_latch1 & 0x01;
+ m_latch1 >>= 1;
+ }
+
+ m_previous_port0 = data;
+}
- required_ioport m_io0;
- required_ioport m_io1;
-};
uint32_t nes_vt_state::get_banks(uint8_t bnk)
{
@@ -708,22 +783,22 @@ WRITE8_MEMBER(nes_vt_dg_state::vtfa_412c_w)
m_ahigh |= (data & 0x01) ? (1 << 25) : 0x0;
m_ahigh |= (data & 0x02) ? (1 << 24) : 0x0;
- //m_ahigh |= (m_csel->read() == 0x01) ? (1 << 25) : 0x0;
+ //m_ahigh |= (m_cartsel->read() == 0x01) ? (1 << 25) : 0x0;
update_banks();
}
READ8_MEMBER(nes_vt_dg_state::vtfa_412c_r)
{
- if (m_csel)
- return m_csel->read();
+ if (m_cartsel)
+ return m_cartsel->read();
else
return 0;
}
READ8_MEMBER(nes_vt_hh_state::vtfp_412d_r)
{
- if (m_csel)
- return m_csel->read();
+ if (m_cartsel)
+ return m_cartsel->read();
else
return 0;
}
@@ -968,8 +1043,8 @@ void nes_vt_state::machine_reset()
m_411d = 0x00;
m_4242 = 0x00;
- if (m_csel)
- m_ahigh = (m_csel->read() == 0x01) ? (1 << 25) : 0x0;
+ if (m_cartsel)
+ m_ahigh = (m_cartsel->read() == 0x01) ? (1 << 25) : 0x0;
else
m_ahigh = 0;
@@ -1473,7 +1548,7 @@ WRITE8_MEMBER(nes_vt_state::extra_io_control_w)
0x80 Extra I/O port 3 enable (1 = enable, 0 = disable)
*/
- logerror("%s: extra_io_control_w %02x\n", data);
+ logerror("%s: extra_io_control_w %02x\n", machine().describe_context(), data);
}
READ8_MEMBER(nes_vt_state::extrain_01_r)
@@ -1557,7 +1632,7 @@ void nes_vt_ablpinb_state::machine_reset()
}
-READ8_MEMBER(nes_vt_ablpinb_state::ablpinb_in0_r)
+READ8_MEMBER(nes_vt_ablpinb_state::in0_r)
{
if (m_plunger_off)
{
@@ -1586,7 +1661,7 @@ READ8_MEMBER(nes_vt_ablpinb_state::ablpinb_in0_r)
}
-READ8_MEMBER(nes_vt_ablpinb_state::ablpinb_in1_r)
+READ8_MEMBER(nes_vt_ablpinb_state::in1_r)
{
uint8_t i = machine().rand() & 0x10;
@@ -1598,14 +1673,14 @@ READ8_MEMBER(nes_vt_ablpinb_state::ablpinb_in1_r)
return i | ret;
}
-WRITE8_MEMBER(nes_vt_ablpinb_state::ablpinb_in0_w)
+WRITE8_MEMBER(nes_vt_ablpinb_state::in0_w)
{
// write 0x04 to 0x4016 sets bit 0x08 in 0x4017
// write 0x00 to 0x4016 clears bit 0x08 in 0x4017
// could be related to vibration motor?
m_ablpinb_in0_val = data;
- logerror("ablpinb_in0_w %02x\n", data);
+ logerror("in0_w %02x\n", data);
}
READ8_MEMBER(nes_vt_sudoku_state::in0_r)
@@ -1622,20 +1697,6 @@ WRITE8_MEMBER(nes_vt_sudoku_state::in0_w)
{
}
-READ8_MEMBER(nes_vt_majgnc_state::in0_r)
-{
- return 0x00;// machine().rand();
-}
-
-READ8_MEMBER(nes_vt_majgnc_state::in1_r)
-{
- return 0x00;// machine().rand();
-}
-
-WRITE8_MEMBER(nes_vt_majgnc_state::in0_w)
-{
-}
-
void nes_vt_state::nes_vt_map(address_map &map)
{
map(0x0000, 0x07ff).ram();
@@ -1644,8 +1705,8 @@ void nes_vt_state::nes_vt_map(address_map &map)
map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
map(0x4014, 0x4014).r(FUNC(nes_vt_state::psg1_4014_r)).w(FUNC(nes_vt_state::vt_dma_w));
map(0x4015, 0x4015).rw(FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */
- map(0x4016, 0x4016).rw(FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_state::nes_in1_r)).w(FUNC(nes_vt_state::psg1_4017_w));
+ map(0x4016, 0x4016).rw(FUNC(nes_vt_state::in0_r), FUNC(nes_vt_state::in0_w));
+ map(0x4017, 0x4017).r(FUNC(nes_vt_state::in1_r)).w(FUNC(nes_vt_state::psg1_4017_w));
map(0x4034, 0x4034).w(FUNC(nes_vt_state::vt03_4034_w));
@@ -1668,36 +1729,8 @@ void nes_vt_state::nes_vt_map(address_map &map)
map(0x6000, 0x7fff).ram();
}
-void nes_vt_ablpinb_state::nes_vt_ablpinb_map(address_map& map)
-{
- nes_vt_map(map);
-
- // override the inputs as specific non-standard 'controller' behavior is needed here and adding it to the generic NES controller bus wouldn't make sense.
- map(0x4016, 0x4016).rw(FUNC(nes_vt_ablpinb_state::ablpinb_in0_r), FUNC(nes_vt_ablpinb_state::ablpinb_in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_ablpinb_state::ablpinb_in1_r));
-}
-
-void nes_vt_sudoku_state::nes_vt_sudoku_map(address_map& map)
-{
- nes_vt_map(map);
-
- // override the inputs as specific non-standard 'controller' behavior is needed here and adding it to the generic NES controller bus wouldn't make sense.
- map(0x4016, 0x4016).rw(FUNC(nes_vt_sudoku_state::in0_r),FUNC(nes_vt_sudoku_state::in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_sudoku_state::in1_r));
-}
-
-void nes_vt_majgnc_state::nes_vt_majgnc_map(address_map& map)
-{
- nes_vt_map(map);
-
- map(0x4014, 0x4014).w(FUNC(nes_vt_majgnc_state::vt_dma_w));
-
- map(0x4016, 0x4016).rw(FUNC(nes_vt_majgnc_state::in0_r),FUNC(nes_vt_majgnc_state::in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_majgnc_state::in1_r));
-}
-
/* Some later VT models have more RAM */
-void nes_vt_state::nes_vt_xx_map(address_map &map)
+void nes_vt_state::nes_vt_4k_ram_map(address_map &map)
{
nes_vt_map(map);
map(0x0800, 0x0fff).ram();
@@ -1711,7 +1744,7 @@ void nes_vt_ablping_state::nes_vt_ablping_map(address_map &map)
void nes_vt_cy_state::nes_vt_cy_map(address_map &map)
{
- nes_vt_xx_map(map);
+ nes_vt_4k_ram_map(map);
map(0x41b0, 0x41bf).r(FUNC(nes_vt_cy_state::vt03_41bx_r)).w(FUNC(nes_vt_cy_state::vt03_41bx_w));
map(0x48a0, 0x48af).r(FUNC(nes_vt_cy_state::vt03_48ax_r)).w(FUNC(nes_vt_cy_state::vt03_48ax_w));
map(0x4130, 0x4136).r(FUNC(nes_vt_cy_state::vt03_413x_r)).w(FUNC(nes_vt_cy_state::vt03_413x_w));
@@ -1722,7 +1755,7 @@ void nes_vt_cy_state::nes_vt_cy_map(address_map &map)
void nes_vt_cy_state::nes_vt_bt_map(address_map &map)
{
- nes_vt_xx_map(map);
+ nes_vt_4k_ram_map(map);
map(0x412c, 0x412c).w(FUNC(nes_vt_cy_state::vt03_412c_w));
}
@@ -1734,8 +1767,8 @@ void nes_vt_hh_state::nes_vt_hh_map(address_map &map)
map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
map(0x4015, 0x4015).rw(FUNC(nes_vt_hh_state::psg1_4015_r), FUNC(nes_vt_hh_state::psg1_4015_w)); /* PSG status / first control register */
- map(0x4016, 0x4016).rw(FUNC(nes_vt_hh_state::nes_in0_r), FUNC(nes_vt_hh_state::nes_in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_hh_state::nes_in1_r)).w(FUNC(nes_vt_hh_state::psg1_4017_w));
+ map(0x4016, 0x4016).rw(FUNC(nes_vt_hh_state::in0_r), FUNC(nes_vt_hh_state::in0_w));
+ map(0x4017, 0x4017).r(FUNC(nes_vt_hh_state::in1_r)).w(FUNC(nes_vt_hh_state::psg1_4017_w));
map(0x4100, 0x410b).r(FUNC(nes_vt_hh_state::vt03_410x_r)).w(FUNC(nes_vt_hh_state::vt03_410x_w));
@@ -1784,8 +1817,8 @@ void nes_vt_dg_state::nes_vt_dg_map(address_map &map)
map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write));
map(0x4015, 0x4015).rw(FUNC(nes_vt_dg_state::psg1_4015_r), FUNC(nes_vt_dg_state::psg1_4015_w)); /* PSG status / first control register */
- map(0x4016, 0x4016).rw(FUNC(nes_vt_dg_state::nes_in0_r), FUNC(nes_vt_dg_state::nes_in0_w));
- map(0x4017, 0x4017).r(FUNC(nes_vt_dg_state::nes_in1_r)).w(FUNC(nes_vt_dg_state::psg1_4017_w));
+ map(0x4016, 0x4016).rw(FUNC(nes_vt_dg_state::in0_r), FUNC(nes_vt_dg_state::in0_w));
+ map(0x4017, 0x4017).r(FUNC(nes_vt_dg_state::in1_r)).w(FUNC(nes_vt_dg_state::psg1_4017_w));
map(0x4100, 0x410b).r(FUNC(nes_vt_dg_state::vt03_410x_r)).w(FUNC(nes_vt_dg_state::vt03_410x_w));
@@ -1926,42 +1959,22 @@ void nes_vt_ablpinb_state::nes_vt_ablpinb(machine_config &config)
(ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL - ppu2c0x_device::VBLANK_FIRST_SCANLINE_PALC + 1 + 2)));
m_screen->set_size(32 * 8, 312);
m_screen->set_visarea(0 * 8, 32 * 8 - 1, 0 * 8, 30 * 8 - 1);
-
- // override for controllers
- m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_ablpinb_state::nes_vt_ablpinb_map);
}
void nes_vt_sudoku_state::nes_vt_sudoku(machine_config &config)
{
nes_vt_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_sudoku_state::nes_vt_sudoku_map);
}
void nes_vt_majgnc_state::nes_vt_majgnc(machine_config &config)
{
nes_vt_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_majgnc_state::nes_vt_majgnc_map);
m_ppu->set_palette_mode(PAL_MODE_NEW_VG);
}
void nes_vt_state::nes_vt(machine_config &config)
{
nes_vt_base(config);
-
- NES_CONTROL_PORT(config, m_ctrl1, nes_control_port1_devices, "joypad");
- NES_CONTROL_PORT(config, m_ctrl2, nes_control_port2_devices, "joypad");
- m_ctrl1->set_screen_tag(m_screen);
- m_ctrl2->set_screen_tag(m_screen);
-}
-
-void nes_vt_state::nes_vt_ddr(machine_config &config)
-{
- nes_vt_base(config);
-
- NES_CONTROL_PORT(config, m_ctrl1, majesco_control_port1_devices, "ddr");
- NES_CONTROL_PORT(config, m_ctrl2, majesco_control_port2_devices, nullptr);
- m_ctrl1->set_screen_tag(m_screen);
- m_ctrl2->set_screen_tag(m_screen);
}
void nes_vt_state::nes_vt_sudopptv(machine_config &config)
@@ -2002,27 +2015,27 @@ void nes_vt_ablping_state::nes_vt_ablping(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_ablping_state::nes_vt_ablping_map);
}
-void nes_vt_state::nes_vt_xx(machine_config &config)
+void nes_vt_state::nes_vt_4k_ram(machine_config &config)
{
nes_vt(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_xx_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_state::nes_vt_4k_ram_map);
}
void nes_vt_cy_state::nes_vt_cy(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_cy_state::nes_vt_cy_map);
}
void nes_vt_cy_state::nes_vt_bt(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_cy_state::nes_vt_bt_map);
}
void nes_vt_dg_state::nes_vt_dg(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_dg_state::nes_vt_dg_map);
m_screen->set_refresh_hz(50.0070);
@@ -2052,7 +2065,7 @@ void nes_vt_hh_state::nes_vt_vg_baddma(machine_config &config)
// New mystery handheld architecture, VTxx derived
void nes_vt_hh_state::nes_vt_hh(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_hh_state::nes_vt_hh_map);
m_ppu->set_palette_mode(PAL_MODE_NEW_RGB);
@@ -2065,12 +2078,45 @@ void nes_vt_hh_state::nes_vt_hh(machine_config &config)
}
static INPUT_PORTS_START( nes_vt )
- PORT_START("CARTSEL")
+ PORT_START("IO0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("A")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("B")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
+
+ PORT_START("IO1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("A")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("B")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( nes_vt_ddr )
+ PORT_START("IO0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Up Arrow") PORT_16WAY // NOT A JOYSTICK!!
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Down Arrow") PORT_16WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Left Arrow") PORT_16WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Right Arrow") PORT_16WAY
+
+ PORT_START("IO1")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
void nes_vt_hh_state::nes_vt_fp(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_hh_state::nes_vt_fp_map);
m_ppu->set_palette_mode(PAL_MODE_NEW_RGB12);
@@ -2078,7 +2124,7 @@ void nes_vt_hh_state::nes_vt_fp(machine_config &config)
void nes_vt_dg_state::nes_vt_fa(machine_config &config)
{
- nes_vt_xx(config);
+ nes_vt_4k_ram(config);
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_dg_state::nes_vt_fa_map);
}
@@ -2100,9 +2146,9 @@ void nes_vt_ts_state::nes_vt_ts(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt_ts_state::nes_vt_ts_map);
}
-
-
static INPUT_PORTS_START( nes_vt_fp )
+ PORT_INCLUDE(nes_vt)
+
PORT_START("CARTSEL")
PORT_DIPNAME( 0x06, 0x00, "Cartridge Select" ) PORT_CODE(KEYCODE_3) PORT_TOGGLE
PORT_DIPSETTING( 0x00, "472-in-1" )
@@ -2110,6 +2156,8 @@ static INPUT_PORTS_START( nes_vt_fp )
INPUT_PORTS_END
static INPUT_PORTS_START( nes_vt_fa )
+ PORT_INCLUDE(nes_vt)
+
PORT_START("CARTSEL")
PORT_DIPNAME( 0x01, 0x00, "Cartridge Select" ) PORT_CODE(KEYCODE_3) PORT_TOGGLE
PORT_DIPSETTING( 0x00, "508-in-1" )
@@ -2140,62 +2188,41 @@ static INPUT_PORTS_START( ablpinb )
INPUT_PORTS_END
static INPUT_PORTS_START( sudoku )
- PORT_START("IO0")
- PORT_START("IO1")
+ PORT_INCLUDE(nes_vt)
INPUT_PORTS_END
+// the test mode shows 2 gamepads, however this is not the control scheme the game uses
+// there is a reset button too but it doesn't seem to be a software switch
static INPUT_PORTS_START( majgnc )
- PORT_START("IO0")
- PORT_DIPNAME( 0x01, 0x01, "0" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_INCLUDE(nes_vt)
- PORT_START("IO1")
- PORT_DIPNAME( 0x01, 0x01, "1" )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_MODIFY("IO0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("2")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+
+ PORT_MODIFY("IO1")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("EXTRAIN0")
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("EXTRAIN1")
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("EXTRAIN2")
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("EXTRAIN3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("3")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("5 / BET")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("4")
INPUT_PORTS_END
void nes_vt_sudoku_state::init_sudoku()
@@ -2301,8 +2328,9 @@ ROM_START( lxcmcy )
ROM_END
ROM_START( lxcmcysw )
- ROM_REGION( 0x4000000, "mainrom", 0 )
- ROM_LOAD( "jl2365swr-1.u2", 0x00000, 0x4000000, CRC(60ece391) SHA1(655de6b36ba596d873de2839522b948ccf45e006) )
+ ROM_REGION( 0x2000000, "mainrom", 0 )
+ ROM_LOAD( "jl2365swr-1.u2", 0x00000, 0x2000000, CRC(60ece391) SHA1(655de6b36ba596d873de2839522b948ccf45e006) )
+ ROM_CONTINUE(0x0000000, 0x2000000)
ROM_END
ROM_START( lxcmcyfz )
@@ -2665,11 +2693,11 @@ CONS( 200?, vgpmini, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "
CONS( 200?, dgun2500, 0, 0, nes_vt_dg, nes_vt, nes_vt_dg_state, empty_init, "dreamGEAR", "dreamGEAR Wireless Motion Control with 130 games (DGUN-2500)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
// don't even get to menu. very enhanced chipset, VT368/9?
-CONS( 2012, dgun2561, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "dreamGEAR", "dreamGEAR My Arcade Portable Gaming System (DGUN-2561)", MACHINE_NOT_WORKING )
-CONS( 200?, lxcmcy, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING )
-CONS( 200?, lxcmc250, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING )
-CONS( 200?, lxcmcysw, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING )
-CONS( 200?, lxcmcyfz, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING )
+CONS( 2012, dgun2561, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "dreamGEAR", "dreamGEAR My Arcade Portable Gaming System (DGUN-2561)", MACHINE_NOT_WORKING )
+CONS( 200?, lxcmcy, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING )
+CONS( 200?, lxcmc250, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING )
+CONS( 200?, lxcmcysw, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING )
+CONS( 200?, lxcmcyfz, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING )
// Also Lexibook Compact Cyber Arcade - Disney Princesses
// Lexibook Compact Cyber Arcade - Cars
// Lexibook Compact Cyber Arcade - Paw Patrol
@@ -2732,8 +2760,8 @@ CONS( 200?, gprnrs16, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_ini
// Notes about the DDR games:
// * Missing PCM sounds (unsupported in NES VT APU code right now)
// * Console has stereo output (dual RCA connectors).
-CONS( 2006, ddrdismx, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami, Disney)", "Dance Dance Revolution Disney Mix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // shows (c)2001 Disney onscreen, but that's recycled art from the Playstation release, actual release was 2006
-CONS( 2006, ddrstraw, 0, 0, nes_vt_ddr, nes_vt, nes_vt_state, empty_init, "Majesco (licensed from Konami)", "Dance Dance Revolution Strawberry Shortcake", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2006, ddrdismx, 0, 0, nes_vt, nes_vt_ddr, nes_vt_state, empty_init, "Majesco (licensed from Konami, Disney)", "Dance Dance Revolution Disney Mix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // shows (c)2001 Disney onscreen, but that's recycled art from the Playstation release, actual release was 2006
+CONS( 2006, ddrstraw, 0, 0, nes_vt, nes_vt_ddr, nes_vt_state, empty_init, "Majesco (licensed from Konami)", "Dance Dance Revolution Strawberry Shortcake", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
@@ -2765,7 +2793,7 @@ CONS( 201?, mc_89in1, 0, 0, nes_vt, nes_vt, nes_vt_state, empty_ini
CONS( 201?, mc_pg150, 0, 0, nes_vt_bt, nes_vt, nes_vt_cy_state, empty_init, "<unknown>", "Pocket Games 150 in 1", MACHINE_NOT_WORKING )
// No title screen, but press start and menu and games run fine. Makes odd
// memory accesses which probably explain broken title screen
-CONS( 201?, mc_hh210, 0, 0, nes_vt_xx, nes_vt, nes_vt_state, empty_init, "<unknown>", "Handheld 210 in 1", MACHINE_NOT_WORKING )
+CONS( 201?, mc_hh210, 0, 0, nes_vt_4k_ram, nes_vt, nes_vt_state, empty_init, "<unknown>", "Handheld 210 in 1", MACHINE_NOT_WORKING )
// First half of games don't work, probably bad dump
CONS( 201?, dvnimbus, 0, 0, nes_vt_vg, nes_vt, nes_vt_hh_state, empty_init, "<unknown>", "DVTech Nimbus 176 in 1", MACHINE_NOT_WORKING )
// Works fine, VT02 based
diff --git a/src/mame/drivers/spg2xx_lexibook.cpp b/src/mame/drivers/spg2xx_lexibook.cpp
index cf61f2c4aee..3257dc86bc3 100644
--- a/src/mame/drivers/spg2xx_lexibook.cpp
+++ b/src/mame/drivers/spg2xx_lexibook.cpp
@@ -254,10 +254,14 @@ ROM_START( lexiseal )
ROM_LOAD16_WORD_SWAP( "lexibook_seal.bin", 0x0000, 0x1000000, CRC(3529f154) SHA1(f5f142600c6b2d037b97e007364ea2fa228e0163) )
ROM_END
-
+ROM_START( discpal )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "disneyhh.bin", 0x0000, 0x400000, CRC(5fb7f32e) SHA1(795c992826ad4ac66d5438207f1c9b48f9fadc44) )
+ROM_END
// Similar, SPG260?, scrambled
CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_lexiseal_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad sound and some corrupt bg tilemap entries in Tiger Rescue, verify ROM data (same game runs in Zone 60 without issue)
CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap
-
+CONS( 200?, discpal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products / Disney / Jungle Soft", "Disney Game It! Classic Pals", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+// there was also a Game It! Princess Pals \ No newline at end of file
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index 6e3eb53624a..8f3191d6d6b 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -546,6 +546,24 @@ static INPUT_PORTS_START( xavix_i2c )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", i2cmem_device, read_sda)
INPUT_PORTS_END
+
+static INPUT_PORTS_START( tomcpin )
+ PORT_INCLUDE(xavix_i2c)
+
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Right Flipper")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Left Flipper")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Launch Ball")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Nudge")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Right Flipper")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Left Flipper")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Launch Ball")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Nudge")
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
+INPUT_PORTS_END
+
static INPUT_PORTS_START( epo_bowl )
PORT_INCLUDE(xavix)
@@ -1934,6 +1952,11 @@ ROM_START( tcarnavi )
ROM_LOAD("navi.bin", 0x000000, 0x400000, CRC(f4e693fb) SHA1(be37b35f1e1e661e10187253c2c3aa9858a90812) )
ROM_END
+ROM_START( tomcpin )
+ ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
+ ROM_LOAD("championpinball.bin", 0x000000, 0x400000, CRC(24f6d753) SHA1(3d3b39692bef8156da9e350b456c4e2f0af74484) )
+ROM_END
+
/*
The e-kara cartridges require the BIOS rom to map into 2nd external bus space as they fetch palette data from
it etc.
@@ -2128,6 +2151,7 @@ CONS( 2003, jarajal, 0, 0, xavix_nv, jarajal, xavix_state,
CONS( 2003, tcarnavi, 0, 0, xavix_nv, jarajal, xavix_state, init_xavix, "Tomy / SSD Company LTD", "Tomica Carnavi Drive (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 2003, tomcpin, 0, 0, xavix_i2c_24c02, tomcpin, xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Champiyon Pinball (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
/* Music titles: Emulation note:
SEEPROM write appears to work (save NVRAM file looks valid) but game fails to read it back properly, fails backup data checksum, and blanks it again.
diff --git a/src/mame/includes/nes.h b/src/mame/includes/nes.h
index b0717a6ad19..ee38c919a26 100644
--- a/src/mame/includes/nes.h
+++ b/src/mame/includes/nes.h
@@ -48,7 +48,6 @@
#define NES_BATTERY 0
#define NES_WRAM 1
-// so that the NES and Famiclones (VT03 for example) can use some common functionality
class nes_base_state : public driver_device
{
public:
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 55bd29c2d43..a6c077a6ea0 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -19632,6 +19632,7 @@ mastboyia // (c) 1991 - No Ref on the PCB
@source:mastboyo.cpp
mastboyo // (c) 1987 - No Ref on the PCB
mastboyoa // (c) 1987 - No Ref on the PCB
+mastboyob
@source:matmania.cpp
excthour // TA-0015 (c) 1985 + Taito license
@@ -36980,6 +36981,7 @@ jak_sbfc //
@source:spg2xx_lexibook.cpp
lexizeus // Lexibook
lexiseal //
+discpal
@source:spg2xx_pdc.cpp
pdc100
@@ -41133,6 +41135,7 @@ ltv_tam //
tak_geig //
jarajal //
tcarnavi //
+tomcpin
ban_onep //
ekara //
ekaraa //