diff options
author | 2020-02-02 04:21:51 +0000 | |
---|---|---|
committer | 2020-02-02 15:21:51 +1100 | |
commit | 36bea6591548ef73bad8bcf0c6291322e0751b90 (patch) | |
tree | 0f2b96ae5783ecd5cdcaa8f10d144ecc2ad992bd | |
parent | e15251ffb8e5b13d02af575d208ab0d460eec722 (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.xml | 14 | ||||
-rw-r--r-- | src/devices/bus/nes_ctrl/ctrl.cpp | 10 | ||||
-rw-r--r-- | src/devices/bus/nes_ctrl/ctrl.h | 2 | ||||
-rw-r--r-- | src/devices/bus/nes_ctrl/joypad.cpp | 25 | ||||
-rw-r--r-- | src/devices/bus/nes_ctrl/joypad.h | 12 | ||||
-rw-r--r-- | src/mame/drivers/mastboyo.cpp | 25 | ||||
-rw-r--r-- | src/mame/drivers/nes_vt.cpp | 420 | ||||
-rw-r--r-- | src/mame/drivers/spg2xx_lexibook.cpp | 8 | ||||
-rw-r--r-- | src/mame/drivers/xavix.cpp | 24 | ||||
-rw-r--r-- | src/mame/includes/nes.h | 1 | ||||
-rw-r--r-- | src/mame/mame.lst | 3 |
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 // |