From 2de274c1a2e1a045348ecd2fcbed4bad7bc00ec7 Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Fri, 20 Sep 2024 02:07:59 +0100 Subject: new WORKING machine (DDRGame) (#12702) * new WORKING machine -------- 16-bit TV Dance Pad with 15 songs (DDRGame) [David Haywood, Sean Riddle] --- src/mame/mame.lst | 1 + src/mame/tvgames/spg2xx.cpp | 39 ++++++++++++++++++++++++++++++++++++++- src/mame/tvgames/spg2xx.h | 12 ++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 634acf3be15..d67fbc55d14 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45461,6 +45461,7 @@ zone3d ablkickb abltenni // comil // +ddr33v decathln decathlna doraglob // (c) 2007 VTech diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index c8900c23795..2954770c442 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -1334,6 +1334,28 @@ static INPUT_PORTS_START( virtten ) PORT_MODIFY("P3") INPUT_PORTS_END + +static INPUT_PORTS_START( ddr33v ) + PORT_INCLUDE( spg2xx ) + + PORT_MODIFY("P1") + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // quits out of songs + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_MODIFY("P2") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_MODIFY("P3") + PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED ) + +INPUT_PORTS_END + + void spg2xx_game_state::machine_start() { if (m_bank) @@ -1850,7 +1872,6 @@ void spg2xx_game_lexiart_state::lexiart(machine_config &config) m_maincpu->portc_in().set(FUNC(spg2xx_game_lexiart_state::base_portc_r)); } - void spg2xx_game_senwfit_state::portc_w(offs_t offset, uint16_t data, uint16_t mem_mask) { int bank = 0; @@ -2039,6 +2060,12 @@ void spg2xx_game_doraphone_state::doraphonep(machine_config &config) m_screen->set_refresh_hz(50); } +void spg2xx_game_ddr33v_state::init_ddr33v() +{ + // what is this checking? timer? battery state? protection? it goes to a blank screen after the boot logo otherwise + uint16_t* rom = (uint16_t*)memregion("maincpu")->base(); + rom[0x208055] = 0x4440; +} ROM_START( rad_skat ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) @@ -2293,6 +2320,12 @@ ROM_START( virtten ) ROM_LOAD16_WORD_SWAP( "virttennis.bin", 0x000000, 0x400000, CRC(e665bea9) SHA1(8c2c9f879c929e224cd885165ed60aed8baeb19d) ) ROM_END +ROM_START( ddr33v ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "ddr33v.bin", 0x000000, 0x800000, CRC(56c7015c) SHA1(a1faef2ab6eb191dea1497f8cfd4ccbd8c504e6d) ) +ROM_END + + void spg2xx_game_state::init_crc() { // several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match. @@ -2466,3 +2499,7 @@ CONS( 2005, doyousud, 0, 0, spg2xx, doyousud, spg2xx_game_state, CONS( 200?, virtbb, 0, 0, spg2xx, virtbb, spg2xx_game_state, empty_init, "VTG Interactive", "Virtual Baseball (VTG)", MACHINE_NOT_WORKING ) // motion controls not fully understood CONS( 200?, virtten, 0, 0, spg2xx, virtten, spg2xx_game_state, empty_init, "VTG Interactive", "Virtual Tennis (VTG)", MACHINE_NOT_WORKING ) // motion controls not fully understood + +// 2007 ingame, 2008 on box. Hyperkin is mentioned as being the registered trademark holder alongside DDRGame on the box. +// Songs "composed by Kenneth Baylon" +CONS( 2008, ddr33v, 0, 0, spg2xx, ddr33v, spg2xx_game_ddr33v_state, init_ddr33v, "DDRGame / Hyperkin", "16-bit TV Dance Pad with 15 songs / Dance Dance Party Mix (DDRGame)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/spg2xx.h b/src/mame/tvgames/spg2xx.h index 18d0150be75..11aaf07e874 100644 --- a/src/mame/tvgames/spg2xx.h +++ b/src/mame/tvgames/spg2xx.h @@ -377,6 +377,18 @@ private: required_ioport_array<6> m_io_p1_rows; }; +class spg2xx_game_ddr33v_state : public spg2xx_game_state +{ +public: + spg2xx_game_ddr33v_state(const machine_config &mconfig, device_type type, const char *tag) : + spg2xx_game_state(mconfig, type, tag) + { } + + void init_ddr33v(); + +protected: +private: +}; #endif // MAME_TVGAMES_SPG2XX_H -- cgit v1.2.3