From bdd54aeee3ef9ff31ba419161390737fc623dba4 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 23 Sep 2024 17:28:00 +0100 Subject: [PATCH 01/38] new NOT WORKING machines --------------- Bistro Kids (Japan) [David Haywood, TeamEurope, Peter Wilhelmsen] Excite Stadium DX - Hanshin Tigers (Japan) [David Haywood, TeamEurope, Peter Wilhelmsen] --- src/mame/mame.lst | 2 ++ src/mame/tvgames/xavix.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 8ac906cd07441..94c26d5441ba7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45702,6 +45702,7 @@ trkfldch // (c) 2007 Konami tvgame // 2011 @source:tvgames/xavix.cpp +bistro // ddrfammt // ekara // ekaraa // @@ -45719,6 +45720,7 @@ epo_epp2 epo_epp3 // epo_eppk // epo_esdx // +epo_esht // epo_guru // epo_tenn // epo_tfp2 // diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 5df4e4697101b..c52929b15b34e 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -1910,6 +1910,11 @@ ROM_START( epo_esdx ) ROM_LOAD("baseballdx.bin", 0x000000, 0x400000, CRC(fe2e832e) SHA1(e6343f5e5f52316538d918d0d67c15764aa40f65) ) ROM_END +ROM_START( epo_esht ) // ESTJ-MAIN REV:0 PCB + ROM_REGION(0x400000, "bios", ROMREGION_ERASE00) + ROM_LOAD("tigers.u3", 0x000000, 0x400000, CRC(51a17ef3) SHA1(864190e91775716218be3ac0699570844d67d3e7) ) +ROM_END + ROM_START( epo_epp ) ROM_REGION(0x100000, "bios", ROMREGION_ERASE00) ROM_LOAD("excitepingpong.bin", 0x000000, 0x100000, CRC(1fdb9cbd) SHA1(8ed0c1f6d2708ab6e79f0b9553e587c6446e8338) ) @@ -2023,6 +2028,10 @@ ROM_START( gungunrv ) ROM_LOAD("gungunrevolution.u1", 0x000000, 0x400000, CRC(4e34f624) SHA1(7acdd0991df78ecffd156381817ed4f85f6aef09) ) ROM_END +ROM_START( bistro ) + ROM_REGION(0x200000, "bios", ROMREGION_ERASE00) + ROM_LOAD("bistro.u2", 0x000000, 0x200000, CRC(40865e05) SHA1(597a615c61f29c6f6e7ce997a229175cb151242f) ) +ROM_END /* The e-kara cartridges require the BIOS rom to map into 2nd external bus space as they fetch palette data from @@ -2232,6 +2241,8 @@ CONS( 2002, rad_jcon, 0, 0, xavix, rad_jcon, xavix_state, CONS( 2002, epo_esdx, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Stadium DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2003, epo_esht, 0, 0, xavix_nv, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Stadium DX - Hanshin Tigers (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + // interrupt issues after the title screen cause it to hang CONS( 2002, epo_tenn, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Tennis (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) @@ -2269,6 +2280,8 @@ CONS( 2001, gungunad, 0, 0, xavix_nv, xavix, xavix_state, CONS( 2004, gungunrv, 0, 0, xavix_i2c_24lc04, gungunrv, xavix_i2c_state, init_xavix, "Takara / SSD Company LTD", "Gun Gun Revolution (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2001, bistro, 0, 0, xavix, xavix, xavix_state, init_xavix, "Sega Toys / SSD Company LTD", "Bistro Kids (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + /* Music titles: Emulation note: Timers might not be 100%, PAL stuff uses different ways to do timing. */ From db0ece8c461b9a07054c721e887146b1441fe6f9 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 20:39:39 +0100 Subject: [PATCH 02/38] new NOT WORKING machines ------------- All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio [TeamEurope, David Haywood] --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 94c26d5441ba7..dc2ab31d62590 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45722,6 +45722,7 @@ epo_eppk // epo_esdx // epo_esht // epo_guru // +epo_quiz // epo_tenn // epo_tfp2 // evio // diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index c52929b15b34e..348eecd24cc2a 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -2142,6 +2142,11 @@ ROM_START( tak_daig ) ROM_RELOAD(0x000000, 0x200000) ROM_END +ROM_START( epo_quiz ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "quizmaster.u1", 0x000000, 0x400000, CRC(e91868b8) SHA1(0128603d755731dafe328b142292dc6e5fe00d78) ) +ROM_END + // ガチンコ勝負! パチスロTV ROM_START( gcslottv ) @@ -2261,6 +2266,9 @@ CONS( 2002, epo_dmon, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_sta CONS( 2003, epo_crok, 0, 0, xavix_i2c_24lc04, xavix_i2c,xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Croket! Itada Kinka! Banker Battle!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +// オールスター感謝祭 超豪華!クイズ決定版~赤坂5丁目体感スタジオ~ +CONS( 2004, epo_quiz, 0, 0, xavix, xavix, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + CONS( 2005, has_wamg, 0, 0, xavix, has_wamg, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state, init_xavix, "Takara / SSD Company LTD", "Geigeki Go Go Shooting (Japan)", MACHINE_IMPERFECT_SOUND ) @@ -2282,6 +2290,7 @@ CONS( 2004, gungunrv, 0, 0, xavix_i2c_24lc04, gungunrv, xavix_i2c_sta CONS( 2001, bistro, 0, 0, xavix, xavix, xavix_state, init_xavix, "Sega Toys / SSD Company LTD", "Bistro Kids (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + /* Music titles: Emulation note: Timers might not be 100%, PAL stuff uses different ways to do timing. */ @@ -2311,6 +2320,7 @@ CONS( 2004, jpopira, 0, 0, xavix_i2c_jpopira,jpopira, xavix_i2c_car CONS( 2003, evio, 0, 0, xavix_cart_evio, evio, xavix_evio_cart_state,init_xavix, "Tomy / SSD Company LTD", "Evio (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? it's a violin controller + // 2 ROM expansion cartridges were available for this, in the form of other robots (the heads acts as cartridges) see takara_daigunder_dx_cart.xml // a number of other robots were also available, but those act as controllers and don't plug into the ROM slot (presumably the signal sent is used to determine the character) CONS( 2002, tak_daig, 0, 0, xavix_cart_daig, daig, xavix_daig_cart_state,init_xavix, "Takara / SSD Company LTD", "Bakutou Sengen Daigunder DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? maybe IO interrupt? From 204bd7f357a0854df74d3c620ac245f976387b25 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 21:17:39 +0100 Subject: [PATCH 03/38] add working inputs to epo_quiz --- src/mame/tvgames/xavix.cpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 348eecd24cc2a..d067bbf2ccb14 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -1369,6 +1369,40 @@ static INPUT_PORTS_START( tcarnavi ) INPUT_PORTS_END +static INPUT_PORTS_START( epo_quiz ) + PORT_INCLUDE(xavix) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 A / 1 / Red / Down") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 B / 2 / Blue / Select") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 C / 3 / Yellow / Left") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 D / 4 / Green / Right") + + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 A / 1 / Red / Down") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 B / 2 / Blue / Select") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 C / 3 / Yellow / Left") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 D / 4 / Green / Right") + + PORT_MODIFY("IN1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3) PORT_NAME("P3 A / 1 / Red / Down") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3) PORT_NAME("P3 B / 2 / Blue / Select") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_NAME("P3 C / 3 / Yellow / Left") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(3) PORT_NAME("P3 D / 4 / Green / Right") + + PORT_MODIFY("AN0") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("P4 A / 1 / Red / Down") + PORT_MODIFY("AN6") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME("P4 B / 2 / Blue / Select") + PORT_MODIFY("AN1") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME("P4 C / 3 / Yellow / Left") + PORT_MODIFY("AN4") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(4) PORT_NAME("P4 D / 4 / Green / Right") + + //PORT_MODIFY("AN7") + //PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_BUTTON8 ) // battery status + +INPUT_PORTS_END + /* correct, 4bpp gfxs */ static const gfx_layout char16layout = { @@ -2267,7 +2301,7 @@ CONS( 2002, epo_dmon, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_sta CONS( 2003, epo_crok, 0, 0, xavix_i2c_24lc04, xavix_i2c,xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Croket! Itada Kinka! Banker Battle!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // オールスター感謝祭 超豪華!クイズ決定版~赤坂5丁目体感スタジオ~ -CONS( 2004, epo_quiz, 0, 0, xavix, xavix, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2004, epo_quiz, 0, 0, xavix, epo_quiz, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_IMPERFECT_SOUND ) CONS( 2005, has_wamg, 0, 0, xavix, has_wamg, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From b9baac7d35e7b971d9a3047457172f8ca22d3afa Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 21:34:26 +0100 Subject: [PATCH 04/38] add PCB label to comment --- src/mame/tvgames/xavix.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index d067bbf2ccb14..17a9be193bec2 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -2176,6 +2176,7 @@ ROM_START( tak_daig ) ROM_RELOAD(0x000000, 0x200000) ROM_END +// ASKJ MAIN-09 PCB ROM_START( epo_quiz ) ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) ROM_LOAD( "quizmaster.u1", 0x000000, 0x400000, CRC(e91868b8) SHA1(0128603d755731dafe328b142292dc6e5fe00d78) ) @@ -2301,7 +2302,7 @@ CONS( 2002, epo_dmon, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_sta CONS( 2003, epo_crok, 0, 0, xavix_i2c_24lc04, xavix_i2c,xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Croket! Itada Kinka! Banker Battle!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // オールスター感謝祭 超豪華!クイズ決定版~赤坂5丁目体感スタジオ~ -CONS( 2004, epo_quiz, 0, 0, xavix, epo_quiz, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_IMPERFECT_SOUND ) +CONS( 2004, epo_quiz, 0, 0, xavix, epo_quiz, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_IMPERFECT_SOUND ) CONS( 2005, has_wamg, 0, 0, xavix, has_wamg, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From 2e316de67378398040d9a09b9915ce35511ec0ca Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 23:09:02 +0100 Subject: [PATCH 05/38] some investigation into the lightgun inputs on tomshoot --- src/mame/tvgames/xavix.cpp | 34 ++++++++++++++++++++++++++++++++-- src/mame/tvgames/xavix.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 17a9be193bec2..9b0de9f99620a 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -326,7 +326,7 @@ void xavix_state::xavix_lowbus_map(address_map &map) map(0x6ffb, 0x6ffb).ram().w(FUNC(xavix_state::dispctrl_posirq_y_w)).share("posirq_y"); // increases / decreases when you jump in snowboard (snowboard, used to blank ground) // Lightgun / pen 1 control - // map(0x6ffc, 0x6fff) + map(0x6ffc, 0x6fff).r(FUNC(xavix_state::lightgun_r)); // Sound RAM (tested by Gun Gun Revolution, games don't write here, so it's probably just RAM the sound hardware makes use of directly when mixing) map(0x7400, 0x757f).ram(); @@ -543,6 +543,36 @@ 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 + +INPUT_CHANGED_MEMBER(xavix_i2c_tomshoot_state::gun_fired) +{ + if (newval) + ioevent_trg01(newval); // causes reads from 0x6ffc +} + +INPUT_CHANGED_MEMBER(xavix_i2c_tomshoot_state::gun2_fired) +{ + if (newval) + ioevent_trg02(newval); // causes reads from 0x7b18 +} + +// the 2nd gun probably uses a different ioevent_trg and reads from 0x7b18 (needs checking) + +static INPUT_PORTS_START( tomshoot ) + PORT_INCLUDE(xavix_i2c) + + PORT_MODIFY("IN0") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, xavix_i2c_tomshoot_state, gun_fired, 0) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, xavix_i2c_tomshoot_state, gun2_fired, 0) + + PORT_START("GUN1_0") + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START("GUN1_1") + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1) + +INPUT_PORTS_END + static INPUT_PORTS_START( gungunrv ) PORT_INCLUDE(xavix_i2c) @@ -2311,7 +2341,7 @@ CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state, // was also distributed by Atlus as an arcade cabinet in 2005, ROM almost certainly different (this one will auto-power off after inactivity, an arcade wouldn't do that) CONS( 2003, jarajal, 0, 0, xavix_nv, jarajal, xavix_state, init_xavix, "Takara / SSD Company LTD", "Jara-Ja Land (Japan, home version)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -CONS( 2002, tomshoot, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Shooting King (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2002, tomshoot, 0, 0, xavix_i2c_24c02, tomshoot,xavix_i2c_tomshoot_state, init_xavix, "Tomy / SSD Company LTD", "Shooting King (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) CONS( 2003, tcarnavi, 0, 0, xavix_nv, tcarnavi, xavix_state, init_xavix, "Tomy / SSD Company LTD", "Tomica Carnavi Drive (Japan)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index f838246f71702..954658ecaed3a 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -85,6 +85,7 @@ class xavix_state : public driver_device m_mouse0y(*this, "MOUSE0Y"), m_mouse1x(*this, "MOUSE1X"), m_mouse1y(*this, "MOUSE1Y"), + m_lightgun(*this, "GUN1_%u", 0U), m_maincpu(*this, "maincpu"), m_nvram(*this, "nvram"), m_screen(*this, "screen"), @@ -202,6 +203,7 @@ class xavix_state : public driver_device optional_ioport m_mouse0y; optional_ioport m_mouse1x; optional_ioport m_mouse1y; + optional_ioport_array<2> m_lightgun; required_device m_maincpu; optional_device m_nvram; required_device m_screen; @@ -419,6 +421,24 @@ class xavix_state : public driver_device uint8_t pal_ntsc_r(); + uint8_t lightgun_r(offs_t offset) + { + if (!m_lightgun[offset]) + return 0xff; + + uint16_t ret = m_lightgun[offset>>1]->read(); + + if (offset & 1) + ret >>= 8; + else + ret &= 0xff; + + if (offset == 0) + ret += 0x20; + + return ret; + } + uint8_t xavix_memoryemu_txarray_r(offs_t offset); void xavix_memoryemu_txarray_w(offs_t offset, uint8_t data); uint8_t m_txarray[3]{}; @@ -633,6 +653,18 @@ class xavix_i2c_state : public xavix_state required_device m_i2cmem; }; +class xavix_i2c_tomshoot_state : public xavix_i2c_state +{ +public: + xavix_i2c_tomshoot_state(const machine_config& mconfig, device_type type, const char* tag) + : xavix_i2c_state(mconfig, type, tag) + { } + + DECLARE_INPUT_CHANGED_MEMBER(gun_fired); + DECLARE_INPUT_CHANGED_MEMBER(gun2_fired); + +}; + class xavix_i2c_ltv_tam_state : public xavix_i2c_state { public: From 11f34fd1cab210e03267b116f595f6de98ca32df Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 23:15:13 +0100 Subject: [PATCH 06/38] make this code specific to tomshoot for now --- src/mame/tvgames/xavix.h | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index 954658ecaed3a..960c8133511da 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -421,23 +421,7 @@ class xavix_state : public driver_device uint8_t pal_ntsc_r(); - uint8_t lightgun_r(offs_t offset) - { - if (!m_lightgun[offset]) - return 0xff; - - uint16_t ret = m_lightgun[offset>>1]->read(); - - if (offset & 1) - ret >>= 8; - else - ret &= 0xff; - - if (offset == 0) - ret += 0x20; - - return ret; - } + virtual uint8_t lightgun_r(offs_t offset) { logerror("%s: unhandled lightgun_r %d\n", machine().describe_context(), offset); return 0xff; } uint8_t xavix_memoryemu_txarray_r(offs_t offset); void xavix_memoryemu_txarray_w(offs_t offset, uint8_t data); @@ -663,6 +647,22 @@ class xavix_i2c_tomshoot_state : public xavix_i2c_state DECLARE_INPUT_CHANGED_MEMBER(gun_fired); DECLARE_INPUT_CHANGED_MEMBER(gun2_fired); +private: + virtual uint8_t lightgun_r(offs_t offset) override + { + uint16_t ret = m_lightgun[offset>>1]->read(); + + if (offset & 1) + ret >>= 8; + else + ret &= 0xff; + + if (offset == 0) + ret += 0x20; + + return ret; + } + }; class xavix_i2c_ltv_tam_state : public xavix_i2c_state From 34f567ab8a43b89755d0e9ea96de3784bd31b6e6 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Thu, 26 Sep 2024 23:35:08 +0100 Subject: [PATCH 07/38] these guns are meant to track and generate an extra irq every frame when the gun is pointed at the screen --- src/mame/tvgames/xavix.cpp | 18 ++---------------- src/mame/tvgames/xavix.h | 10 ++++++++-- src/mame/tvgames/xavix_m.cpp | 2 ++ 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 9b0de9f99620a..8374ecbe4a470 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -544,26 +544,12 @@ static INPUT_PORTS_START( xavix_i2c ) INPUT_PORTS_END -INPUT_CHANGED_MEMBER(xavix_i2c_tomshoot_state::gun_fired) -{ - if (newval) - ioevent_trg01(newval); // causes reads from 0x6ffc -} - -INPUT_CHANGED_MEMBER(xavix_i2c_tomshoot_state::gun2_fired) -{ - if (newval) - ioevent_trg02(newval); // causes reads from 0x7b18 -} - -// the 2nd gun probably uses a different ioevent_trg and reads from 0x7b18 (needs checking) - static INPUT_PORTS_START( tomshoot ) PORT_INCLUDE(xavix_i2c) PORT_MODIFY("IN0") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, xavix_i2c_tomshoot_state, gun_fired, 0) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, xavix_i2c_tomshoot_state, gun2_fired, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_START("GUN1_0") PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1) diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index 960c8133511da..6a0d04cef8822 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -135,6 +135,8 @@ class xavix_state : public driver_device void ioevent_trg04(int state); void ioevent_trg08(int state); + virtual void xavix_interrupt_extra() { } + int m_rgnlen = 0; uint8_t* m_rgn = nullptr; @@ -644,8 +646,12 @@ class xavix_i2c_tomshoot_state : public xavix_i2c_state : xavix_i2c_state(mconfig, type, tag) { } - DECLARE_INPUT_CHANGED_MEMBER(gun_fired); - DECLARE_INPUT_CHANGED_MEMBER(gun2_fired); + void xavix_interrupt_extra() override + { + ioevent_trg01(1); // causes reads from the lightgun 1 port + //ioevent_trg02(1); // causes reads from the lightgun 2 port + } + private: virtual uint8_t lightgun_r(offs_t offset) override diff --git a/src/mame/tvgames/xavix_m.cpp b/src/mame/tvgames/xavix_m.cpp index 5e68dbf9b1fcd..7cb9d69371da2 100644 --- a/src/mame/tvgames/xavix_m.cpp +++ b/src/mame/tvgames/xavix_m.cpp @@ -265,6 +265,8 @@ INTERRUPT_GEN_MEMBER(xavix_state::interrupt) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_video_ctrl |= 0x80; } + + xavix_interrupt_extra(); } From 7089739967422a02186f60bc3ca27f432675b6a6 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Fri, 27 Sep 2024 10:35:44 +0100 Subject: [PATCH 08/38] add Mini-Moni Stage! Dance Dapyon! (Japan) as working --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index dc2ab31d62590..9351d66da9bbc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45722,6 +45722,7 @@ epo_eppk // epo_esdx // epo_esht // epo_guru // +epo_mms // epo_quiz // epo_tenn // epo_tfp2 // diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 8374ecbe4a470..ee3e7773fbe6e 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -543,6 +543,16 @@ 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( epo_mms ) + PORT_INCLUDE(xavix_i2c) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pad 1 - Pink") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Pad 2 - Orange") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pad 3 - Purple") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pad 4 - Green") + +INPUT_PORTS_END static INPUT_PORTS_START( tomshoot ) PORT_INCLUDE(xavix_i2c) @@ -2028,6 +2038,11 @@ ROM_START( epo_crok ) ROM_LOAD("sgm3244.u2", 0x000000, 0x400000, CRC(a801779b) SHA1(e6e4235dc7c7db3073737b10ba4bc5b00deca2c3) ) ROM_END +ROM_START( epo_mms ) + ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00) + ROM_LOAD("mmnj-main-4.u4", 0x000000, 0x400000, CRC(22f14ca2) SHA1(122e735eb7c54a22de16f65cd43d2cae788e0102) ) +ROM_END + ROM_START( tak_geig ) ROM_REGION(0x400000, "bios", ROMREGION_ERASE00) ROM_LOAD("geigeki.bin", 0x000000, 0x400000, CRC(bd0c3576) SHA1(06f614dbec0225ce4ed866b98450912986d72faf) ) @@ -2317,6 +2332,9 @@ CONS( 2002, epo_dmon, 0, 0, xavix_i2c_24c02, xavix_i2c,xavix_i2c_sta CONS( 2003, epo_crok, 0, 0, xavix_i2c_24lc04, xavix_i2c,xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Croket! Itada Kinka! Banker Battle!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +// ミニモニ。ステージ!ダンスだぴょん! +CONS( 2002, epo_mms, 0, 0, xavix_i2c_24c02, epo_mms, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Mini-Moni Stage! Dance Dapyon! (Japan)", MACHINE_IMPERFECT_SOUND ) + // オールスター感謝祭 超豪華!クイズ決定版~赤坂5丁目体感スタジオ~ CONS( 2004, epo_quiz, 0, 0, xavix, epo_quiz, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_IMPERFECT_SOUND ) From 8e15c6da705e40ccf8f70e68a83ebdc55cf9c15b Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Fri, 27 Sep 2024 15:10:15 +0100 Subject: [PATCH 09/38] add Gin-gin Boarders (Japan) as working --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.cpp | 19 +++++++++++++++++++ src/mame/tvgames/xavix_v.cpp | 8 ++++++++ 3 files changed, 28 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9351d66da9bbc..49593deeb5c04 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45769,6 +45769,7 @@ taikodp // taitons1 // taitons2 // tak_daig +tak_gin // tak_geig // tcarnavi // tomcpin // diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index ee3e7773fbe6e..49cba0a75483d 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -1076,6 +1076,15 @@ static INPUT_PORTS_START( tak_geig ) INPUT_PORTS_END +static INPUT_PORTS_START( tak_gin ) + PORT_INCLUDE(xavix) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) +INPUT_PORTS_END static INPUT_PORTS_START( rad_bb ) PORT_INCLUDE(xavix) @@ -2241,6 +2250,13 @@ ROM_START( tvpc_dor ) ROM_LOAD( "tvpc_doreamon.u3", 0x000000, 0x400000, CRC(6f2edbb2) SHA1(98fa86f85e00aa40e7a585ff0bc930cb5ca88362) ) ROM_END +ROM_START( tak_gin ) // dumped from a PCB with 1x ROM Glob with TSOP pads, 1x unknown glob, 1x CPU glob. It also exists in a configuration with just 1x ROM glob (no pads) and 1x CPU glob - unknown if code is the same + ROM_REGION(0x200000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "snowboard.bin", 0x000000, 0x200000, CRC(79fdeae3) SHA1(ab08790e95cdccf3541ecbddb87ebf0dedb3718b) ) +ROM_END + + + /* XaviX hardware titles (1st Generation) These use @@ -2342,6 +2358,9 @@ CONS( 2005, has_wamg, 0, 0, xavix, has_wamg, xavix_state, CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state, init_xavix, "Takara / SSD Company LTD", "Geigeki Go Go Shooting (Japan)", MACHINE_IMPERFECT_SOUND ) +// 爆進スノボ ギンギンボーダーズ +CONS( 2001, tak_gin, 0, 0, xavix, tak_gin, xavix_state, init_xavix, "Takara / SSD Company LTD", "Gin-gin Boarders (Japan)", MACHINE_IMPERFECT_SOUND ) + // was also distributed by Atlus as an arcade cabinet in 2005, ROM almost certainly different (this one will auto-power off after inactivity, an arcade wouldn't do that) CONS( 2003, jarajal, 0, 0, xavix_nv, jarajal, xavix_state, init_xavix, "Takara / SSD Company LTD", "Jara-Ja Land (Japan, home version)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_v.cpp b/src/mame/tvgames/xavix_v.cpp index d8817bfb3234a..16e04282b378f 100644 --- a/src/mame/tvgames/xavix_v.cpp +++ b/src/mame/tvgames/xavix_v.cpp @@ -182,6 +182,14 @@ void xavix_state::update_pen(int pen, uint8_t shval, uint8_t lval) double g1 = (g0 - z) * c + y; double b1 = (b0 - z) * c + y; + + // lower overall brightness slightly, or some palette entries in tak_gin end up washed out / with identical colours, losing details + // the darkest colours in certain flags still look wrong however, and appear nearly black + // this might suggest the overall palette conversion needs work + r1 = r1 * 0.96f; + g1 = g1 * 0.96f; + b1 = b1 * 0.96f; + if(r1 < 0) r1 = 0; else if(r1 > 1) From 6dafa6f07b012223b27c812b944d5b357494c189 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Fri, 27 Sep 2024 15:15:22 +0100 Subject: [PATCH 10/38] tag this as imperfect colors as it does highlight some issues with the xavix palette decode --- src/mame/tvgames/xavix.cpp | 2 +- src/mame/tvgames/xavix_v.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 49cba0a75483d..b4d686c011516 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -2359,7 +2359,7 @@ CONS( 2005, has_wamg, 0, 0, xavix, has_wamg, xavix_state, CONS( 2002, tak_geig, 0, 0, xavix_nv, tak_geig, xavix_state, init_xavix, "Takara / SSD Company LTD", "Geigeki Go Go Shooting (Japan)", MACHINE_IMPERFECT_SOUND ) // 爆進スノボ ギンギンボーダーズ -CONS( 2001, tak_gin, 0, 0, xavix, tak_gin, xavix_state, init_xavix, "Takara / SSD Company LTD", "Gin-gin Boarders (Japan)", MACHINE_IMPERFECT_SOUND ) +CONS( 2001, tak_gin, 0, 0, xavix, tak_gin, xavix_state, init_xavix, "Takara / SSD Company LTD", "Gin-gin Boarders (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS ) // was also distributed by Atlus as an arcade cabinet in 2005, ROM almost certainly different (this one will auto-power off after inactivity, an arcade wouldn't do that) CONS( 2003, jarajal, 0, 0, xavix_nv, jarajal, xavix_state, init_xavix, "Takara / SSD Company LTD", "Jara-Ja Land (Japan, home version)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_v.cpp b/src/mame/tvgames/xavix_v.cpp index 16e04282b378f..18f76364e1748 100644 --- a/src/mame/tvgames/xavix_v.cpp +++ b/src/mame/tvgames/xavix_v.cpp @@ -186,9 +186,9 @@ void xavix_state::update_pen(int pen, uint8_t shval, uint8_t lval) // lower overall brightness slightly, or some palette entries in tak_gin end up washed out / with identical colours, losing details // the darkest colours in certain flags still look wrong however, and appear nearly black // this might suggest the overall palette conversion needs work - r1 = r1 * 0.96f; - g1 = g1 * 0.96f; - b1 = b1 * 0.96f; + r1 = r1 * 0.92f; + g1 = g1 * 0.92f; + b1 = b1 * 0.92f; if(r1 < 0) r1 = 0; From 281ceba331bb18cf9bfeb2673d8f75b5cd18cda6 Mon Sep 17 00:00:00 2001 From: DavidHaywood Date: Fri, 27 Sep 2024 17:49:21 +0100 Subject: [PATCH 11/38] add Disney Princess Glitter Magic Lesson (Japan) as NOT WORKING --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.h | 29 ----------------------------- src/mame/tvgames/xavix_2000.cpp | 11 +++++++++++ src/mame/tvgames/xavix_2000.h | 25 +++++++++++++++++++++++++ src/mame/tvgames/xavix_2002.cpp | 5 ----- src/mame/tvgames/xavix_m.cpp | 2 +- 6 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 49593deeb5c04..97a15c7bb9388 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45788,6 +45788,7 @@ duelmast // epo_ebox // epo_bowl // epo_sdb // +tom_dpgm // ttv_sw // ttv_lotr // ttv_mx // diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index 6a0d04cef8822..9dd739428a829 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -690,24 +690,6 @@ class xavix_i2c_ltv_tam_state : public xavix_i2c_state uint8_t tam_anport3_r() { return m_mouse1y->read()^0x7f; } }; - - -class xavix_i2c_lotr_state : public xavix_i2c_state -{ -public: - xavix_i2c_lotr_state(const machine_config &mconfig, device_type type, const char *tag) - : xavix_i2c_state(mconfig, type, tag) - { } - - int camera_r(); - -protected: - //virtual void write_io1(uint8_t data, uint8_t direction) override; -}; - - - - class xavix_mtrk_state : public xavix_state { public: @@ -1049,16 +1031,5 @@ class xavix_hikara_state : public xavix_ekara_state }; -class xavix_duelmast_state : public xavix_i2c_state -{ -public: - xavix_duelmast_state(const machine_config &mconfig, device_type type, const char *tag) - : xavix_i2c_state(mconfig, type, tag) - { } - -protected: - virtual uint8_t read_io1(uint8_t direction) override; -}; - #endif // MAME_TVGAMES_XAVIX_H diff --git a/src/mame/tvgames/xavix_2000.cpp b/src/mame/tvgames/xavix_2000.cpp index 2ac9a48f79e03..3d1a6f67d531d 100644 --- a/src/mame/tvgames/xavix_2000.cpp +++ b/src/mame/tvgames/xavix_2000.cpp @@ -200,6 +200,10 @@ static INPUT_PORTS_START( ttv_mx ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Motion Right") INPUT_PORTS_END +int xavix_i2c_lotr_state::camera_r() // seems to be some kind of camera status bits +{ + return machine().rand(); +} void xavix_state::xavix2000(machine_config &config) { @@ -296,6 +300,10 @@ ROM_START( duelmast ) ROM_LOAD("duelmasters.u4", 0x000000, 0x200000, CRC(2f11fcd7) SHA1(d8849c74833e77b8b309e845523f2cdc7ac68054) ) ROM_END +ROM_START( tom_dpgm ) + ROM_REGION(0x400000, "bios", ROMREGION_ERASE00) + ROM_LOAD("disney.bin", 0x000000, 0x400000, CRC(1dc181b3) SHA1(fa30069d17705f27e4ff45e7f6ccf06986e138f3) ) +ROM_END // doesn't use extra opcodes? CONS( 2002, epo_ebox, 0, 0, xavix2000_nv, epo_ebox, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Excite Boxing (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // doesn't use XaviX2000 extra opcodes, but had that type of CPU @@ -316,3 +324,6 @@ CONS( 2003, drgqst, 0, 0, xavix2000_i2c_24c08, ttv_lotr, xavix_i2c_lotr_sta // hangs after starting a game, check why CONS( 2004, ban_onep, 0, 0, xavix2000_i2c_24c04, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play One Piece Punch Battle (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + +// ディズニープリンセス キラキラ魔法のレッスン +CONS( 2004, tom_dpgm, 0, 0, xavix2000_i2c_24c08, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Tomy / SSD Company LTD", "Disney Princess Glitter Magic Lesson (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2000.h b/src/mame/tvgames/xavix_2000.h index 27492005a587c..66ac157e7468d 100644 --- a/src/mame/tvgames/xavix_2000.h +++ b/src/mame/tvgames/xavix_2000.h @@ -24,4 +24,29 @@ class xavix_2000_nv_sdb_state : public xavix_state uint8_t sdb_anport3_r() { return m_mouse1y->read()^0x7f; } }; +class xavix_i2c_lotr_state : public xavix_i2c_state +{ +public: + xavix_i2c_lotr_state(const machine_config &mconfig, device_type type, const char *tag) + : xavix_i2c_state(mconfig, type, tag) + { } + + int camera_r(); + +protected: + //virtual void write_io1(uint8_t data, uint8_t direction) override; +}; + +class xavix_duelmast_state : public xavix_i2c_state +{ +public: + xavix_duelmast_state(const machine_config &mconfig, device_type type, const char *tag) + : xavix_i2c_state(mconfig, type, tag) + { } + +protected: + virtual uint8_t read_io1(uint8_t direction) override; +}; + + #endif // MAME_TVGAMES_XAVIX_2000_H diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 524c9cf115ffd..b9d2d1436d027 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -309,11 +309,6 @@ void xavix_i2c_jmat_state::write_extended_io2(uint8_t data) LOG("%s: io2_data_w %02x\n", machine().describe_context(), data); } -int xavix_i2c_lotr_state::camera_r() // seems to be some kind of camera status bits -{ - return machine().rand(); -} - int xavix_i2c_bowl_state::camera_r() // seems to be some kind of camera status bits { return machine().rand(); diff --git a/src/mame/tvgames/xavix_m.cpp b/src/mame/tvgames/xavix_m.cpp index 7cb9d69371da2..0684882d9099d 100644 --- a/src/mame/tvgames/xavix_m.cpp +++ b/src/mame/tvgames/xavix_m.cpp @@ -2,7 +2,7 @@ // copyright-holders:David Haywood #include "emu.h" -#include "xavix.h" +#include "xavix_2000.h" // #define VERBOSE 1 #include "logmacro.h" From 9f0a470152c1cc6b3f45c82049cfbaec7dcaff4f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 11:34:19 +0100 Subject: [PATCH 12/38] added Megadrive Play TV 3 --- src/mame/mame.lst | 1 + src/mame/sega/megadriv_rad.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 97a15c7bb9388..5e3db6d83982d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -39336,6 +39336,7 @@ twinktmb @source:sega/megadriv_rad.cpp dgunl3227 mdtvp1j +mdtvp3j msi_sf2 ra145 rad_gen1 // (c)2004 Radica diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index a5d4f1f5d751e..2781f76661563 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -524,6 +524,11 @@ ROM_START( rad_sf2uk ) ROM_LOAD16_WORD_SWAP( "radica_megadrive_streetfighter2_uk.bin", 0x000000, 0x400000, CRC(868afb44) SHA1(f4339e36272c18b1d49aa4095127ed18e0961df6) ) ROM_END +ROM_START( mdtvp3j ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "playtv_vol3.bin", 0x000000, 0x400000, CRC(d2daf376) SHA1(147b88d7aff834146c649077b43312c71b973298) ) +ROM_END + ROM_START( rad_gen1 ) ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol1_blue_usa.bin", 0x000000, 0x400000, CRC(3b4c8438) SHA1(5ed9c053f9ebc8d4bf571d57e562cf347585d158) ) @@ -728,6 +733,7 @@ CONS( 2004, rad_sonicuk,rad_sonic,0, megadriv_radica_3button_pal, radica_3butto CONS( 2004, rad_sf2, 0, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadriv, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (USA)", 0) CONS( 2004, rad_sf2uk, rad_sf2, 0, megadriv_radica_6button_pal, radica_6button, megadriv_radica_state, init_megadrie, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (UK)", 0) // is there a Europe version with Radica Games boot screen and Mega Drive text? +CONS( 2004, mdtvp3j, rad_sf2, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadrij, "Sega Toys", "Mega Drive Play TV 3 (Japan)", 0) // unlike Volume 1, this one does contain the Japanese ROM for SF2 (but the World release of GnG) and runs as Japan region despite menu showing US titles // still branded as Arcade Legends even if none of these were ever arcade games, European exclusive CONS( 2004, rad_ssoc, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "Radica / Sensible Software / Sega", "Sensible Soccer plus [Cannon Fodder, Mega lo Mania] (Radica, Arcade Legends) (UK)", 0) From e9fd4c42839c0128dcc7f2847afc0c8b366e8adc Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 11:46:20 +0100 Subject: [PATCH 13/38] apparently GnG does run in English on these --- src/mame/sega/megadriv_rad.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 2781f76661563..841a4c77f9ef0 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -733,7 +733,7 @@ CONS( 2004, rad_sonicuk,rad_sonic,0, megadriv_radica_3button_pal, radica_3butto CONS( 2004, rad_sf2, 0, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadriv, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (USA)", 0) CONS( 2004, rad_sf2uk, rad_sf2, 0, megadriv_radica_6button_pal, radica_6button, megadriv_radica_state, init_megadrie, "Radica / Capcom / Sega", "Street Fighter II: Special Champion Edition [Ghouls'n Ghosts] (Radica, Arcade Legends) (UK)", 0) // is there a Europe version with Radica Games boot screen and Mega Drive text? -CONS( 2004, mdtvp3j, rad_sf2, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadrij, "Sega Toys", "Mega Drive Play TV 3 (Japan)", 0) // unlike Volume 1, this one does contain the Japanese ROM for SF2 (but the World release of GnG) and runs as Japan region despite menu showing US titles +CONS( 2004, mdtvp3j, rad_sf2, 0, megadriv_radica_6button_ntsc, radica_6button, megadriv_radica_state, init_megadriv, "Sega Toys", "Mega Drive Play TV 3 (Japan)", 0) // This one does contain the Japanese ROM for SF2 (but the World release of GnG) so SF2 runs in Japanese, but GnG runs in English // still branded as Arcade Legends even if none of these were ever arcade games, European exclusive CONS( 2004, rad_ssoc, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "Radica / Sensible Software / Sega", "Sensible Soccer plus [Cannon Fodder, Mega lo Mania] (Radica, Arcade Legends) (UK)", 0) From 55d529d3bab6c4d2d6a96fea02f0e43fdf2872e4 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 12:13:37 +0100 Subject: [PATCH 14/38] added Jpn Vol 2 --- src/mame/mame.lst | 1 + src/mame/sega/megadriv_rad.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5e3db6d83982d..d791940116be0 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -39336,6 +39336,7 @@ twinktmb @source:sega/megadriv_rad.cpp dgunl3227 mdtvp1j +mdtvp2j mdtvp3j msi_sf2 ra145 diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 841a4c77f9ef0..e814122f8b1cc 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -559,6 +559,11 @@ ROM_START( rad_md2uk ) ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol2_red_uk.bin", 0x000000, 0x400000, CRC(b68fd025) SHA1(b8f9c505653d6dd2b62840f078f828360faf8abc) ) ROM_END +ROM_START( mdtvp2j ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "playtv_vol2.bin", 0x000000, 0x400000, CRC(4d887d12) SHA1(b7f70abd12c3a3c68d1ad127a1475b704e898f51) ) +ROM_END + ROM_START( rad_ssoc ) ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "radica_sensiblesoccer_uk.bin", 0x000000, 0x400000, CRC(b8745ab3) SHA1(0ab3f26e5ffd288e5a3a5db676951b9095299eb0) ) // should be byteswapped? @@ -714,7 +719,6 @@ void megadriv_ra145_state::init_ra145() // US versions show 'Genesis' on the menu, show a www.radicagames.com splash screen, and use NTSC versions of the ROMs, sometimes region locked // EU versions show 'Mega Drive' on the menu, show a www.radicagames.com splash screen, and use PAL versions of the ROMs, sometimes region locked // UK versions show "Mega Drive' on the menu, show a www.radicauk.com splash screen, and use PAL versions of the ROMs, sometimes region locked -// Japanese releases have been seen for at least one of these Radica collections (SF2), those presumably have a different ROM too (NTSC, locked to Japan?) CONS( 2004, rad_gen1, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Genesis Collection Volume 1 (Radica, Arcade Legends) (USA)", 0) CONS( 2004, rad_md1, rad_gen1, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Mega Drive Collection Volume 1 (Radica, Arcade Legends) (Europe)", 0) @@ -724,6 +728,7 @@ CONS( 2004, mdtvp1j, rad_gen1, 0, megadriv_radica_3button_ntsc, radica_3button CONS( 2004, rad_gen2, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Genesis Collection Volume 2 (Radica, Arcade Legends) (USA)", 0) CONS( 2004, rad_md2uk, rad_gen2, 0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Mega Drive Collection Volume 2 (Radica, Arcade Legends) (UK)", 0) // is there a Europe version with Radica Games boot screen and Mega Drive text? +CONS( 2004, mdtvp2j, rad_gen2, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Sega Toys", "Mega Drive Play TV 2 (Japan)", 0) // box calls this Volume 3 CONS( 2004, rad_sonic, 0, 0, megadriv_radica_3button_ntsc, radica_3button_1player, megadriv_radica_state, init_megadriv, "Radica / Sega", "Super Sonic Gold (Radica Plug & Play) (USA)", 0) From 7673bcea8b5a3c5bfa88c3dbe52a253e4cf7b8f2 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 12:58:41 +0100 Subject: [PATCH 15/38] 2 hi-kara carts --- hash/hikara.xml | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/hash/hikara.xml b/hash/hikara.xml index e6874b25ce2dc..5ab58f5560df9 100644 --- a/hash/hikara.xml +++ b/hash/hikara.xml @@ -57,10 +57,11 @@ license:CC0-1.0 * Pocket Monsters Special -none- Yellow * Ciao Special CC0907001 Translucent Pink - came with the 2009/06 issue of the Ciao (ちゃお) manga - + * PIZZA-LA PZ0909001 Translucent Pink + 4 User Cartridge (5 Capacity) n/a Translucent Grey/White 2 User Cartridge (10 Capacity) n/a Translucent Pink - 2 User Cartridge (20 Capacity) n/a Translucent Blue + 3 User Cartridge (20 Capacity) n/a Translucent Blue --> - + Hi-kara 20-song capacity user cartridge (used, with 20 songs, set 1) (Japan) 2008 Takara Tomy @@ -222,7 +234,7 @@ license:CC0-1.0 炎神戦隊ゴーオンジャー 高橋秀幸(Project.R) ENGINE SENTAI GO-ONGER Takahashi Hideyuki いつも何度でも 木村弓 Itsumo Nandodemo Kimura Yumi ニホンノミカタ-ネバダカラキマシタ- 矢島美容室 Nihon no Mikata -Nevada kara Kimashita- Yajima Biyōshitsu --> - + Hi-kara 20-song capacity user cartridge (used, with 20 songs, set 2) (Japan) 2008 Takara Tomy @@ -353,4 +365,16 @@ license:CC0-1.0 + + + Hi-kara PIZZA-LA + 2009 + Takara Tomy + + + + + + + From cd9c8d060cef984f4f9646fe7e0a7885bbe3ad9d Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 13:01:35 +0100 Subject: [PATCH 16/38] year note --- hash/hikara.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/hash/hikara.xml b/hash/hikara.xml index 5ab58f5560df9..9415e2eca3659 100644 --- a/hash/hikara.xml +++ b/hash/hikara.xml @@ -366,6 +366,7 @@ license:CC0-1.0 + Hi-kara PIZZA-LA 2009 From 7956bf7fee7a02917ce4cb784b0d7fdddbe892bc Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 13:56:52 +0100 Subject: [PATCH 17/38] 2 more from Team Europe --- src/mame/mame.lst | 2 ++ src/mame/tvgames/generalplus_gpl32612.cpp | 31 ++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d791940116be0..22600e42435d3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45423,6 +45423,8 @@ jak_ddhp jak_prhp kidizmb kidizmp +pocketmp +pocketmr zippity zippityuk diff --git a/src/mame/tvgames/generalplus_gpl32612.cpp b/src/mame/tvgames/generalplus_gpl32612.cpp index af190c1e1413a..d8594059b43ae 100644 --- a/src/mame/tvgames/generalplus_gpl32612.cpp +++ b/src/mame/tvgames/generalplus_gpl32612.cpp @@ -45,6 +45,7 @@ class generalplus_gpl32612_game_state : public driver_device void gpl32612(machine_config &config); void nand_init840(); + void nand_init880(); protected: virtual void machine_start() override; @@ -264,25 +265,34 @@ ROM_END // uncertain hardware type, ARM based, has GPNAND strings ROM_START( zippity ) - ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 ) + ROM_REGION( 0x10800000, "nand", ROMREGION_ERASE00 ) ROM_LOAD( "zippity_mt29f2g08aacwp_2cda8015.bin", 0x0000, 0x10800000, CRC(16248b63) SHA1(3607337588a68052ef5c495b496aa3e0449d3eb6) ) ROM_END ROM_START( zippityuk ) - ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 ) + ROM_REGION( 0x10800000, "nand", ROMREGION_ERASE00 ) ROM_LOAD( "29f2c08aacwp.u2", 0x0000, 0x10800000, CRC(27d172ae) SHA1(9ade19d7aa28fba13581e6879b39e3a7702260b0) ) ROM_END ROM_START( kidizmp ) - ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 ) + ROM_REGION( 0x10800000, "nand", ROMREGION_ERASE00 ) ROM_LOAD( "s34ml02g1_withspare.u13", 0x0000, 0x10800000, CRC(c5d55bdc) SHA1(073fc3fd56c532750b4e2020abe27d3448999d56) ) ROM_END ROM_START( kidizmb ) - ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 ) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASE00 ) ROM_LOAD( "hy27uf081g2a_withspare.bin", 0x0000, 0x8400000, CRC(b87861c4) SHA1(8b5cc2557b54a37928be818430b91c48db98758f) ) ROM_END +ROM_START( pocketmp ) + ROM_REGION( 0x8800000, "nand", ROMREGION_ERASE00 ) + ROM_LOAD( "tc58nvg0s3hta00.u3", 0x0000, 0x8800000, CRC(aabf2deb) SHA1(ee3118377c21b1fb28ff262484c9b587b394bd80) ) +ROM_END + +ROM_START( pocketmr ) + ROM_REGION( 0x8800000, "nand", ROMREGION_ERASE00 ) + ROM_LOAD( "tc58nvg0s3hta00_withspare.u6", 0x0000, 0x8800000, CRC(ec839dde) SHA1(18b77c7e1cf3c66787ccfde9f450671e3d1b0e36) ) +ROM_END void generalplus_gpl32612_game_state::nand_init(int blocksize, int blocksize_stripped) @@ -324,6 +334,12 @@ void generalplus_gpl32612_game_state::nand_init840() bootstrap(); } +void generalplus_gpl32612_game_state::nand_init880() +{ + nand_init(0x880, 0x800); + bootstrap(); +} + } // anonymous namespace @@ -340,6 +356,9 @@ CONS( 201?, zippity, 0, 0, zippity, gpl32612, generalplus_zip CONS( 201?, zippityuk, zippity, 0, zippity, gpl32612, generalplus_zippity_game_state, empty_init, "LeapFrog", "Zippity (UK)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // GP32C01 (maybe, picture is unclear) - Camera for kids -CONS( 2013, kidizmp, 0, 0, zippity, gpl32612, generalplus_zippity_game_state, empty_init, "VTech", "Kidizoom Connect (Germany, pink camera)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS( 2013, kidizmp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "VTech", "Kidizoom Connect (Germany, pink camera)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // seems to be older tech, just glob + ROM, assuming it's a GP32 series based on above and due to having ARM code -CONS( 201?, kidizmb, 0, 0, zippity, gpl32612, generalplus_zippity_game_state, empty_init, "VTech", "Kidizoom (Germany, blue camera)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS( 201?, kidizmb, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "VTech", "Kidizoom (Germany, blue camera)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) + +CONS( 2019, pocketmp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init880, "Takara Tomy", "Pocket Monsters PC", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS( 2019, pocketmr, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init880, "Takara Tomy", "Pocket Monsters Rotom Tablet", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) From 8cb069d48d5e8c2ce1e5fb1ade507b4d43291d2b Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 14:45:38 +0100 Subject: [PATCH 18/38] dumps of 2 handheld things, don't boot, maybe need different internal ROM to the others in here --- src/mame/mame.lst | 10 ++++--- src/mame/tvgames/st2302u_bbl_spi.cpp | 39 ++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 22600e42435d3..a1703dc4c2af1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45679,14 +45679,16 @@ bbl338 dphh8213 @source:tvgames/st2302u_bbl_spi.cpp +arcade10 bbl380 +dgun2953 +dphh8630 mc_cb203 -rhhc152 +pg118 ragc153 -dphh8630 -dgun2953 +rhhc152 supreme -arcade10 +toumapet @source:tvgames/titan_soc.cpp colecofl diff --git a/src/mame/tvgames/st2302u_bbl_spi.cpp b/src/mame/tvgames/st2302u_bbl_spi.cpp index fec017581b5ba..6182c45563dff 100644 --- a/src/mame/tvgames/st2302u_bbl_spi.cpp +++ b/src/mame/tvgames/st2302u_bbl_spi.cpp @@ -367,26 +367,49 @@ ROM_START(supreme) ROM_LOAD("25q32.bin", 0x000000, 0x400000, CRC(93072a3d) SHA1(9f8770839032922e64d5ddd8864441357623c45f)) ROM_END +ROM_START(pg118) + ROM_REGION(0x800000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("st2x_internal.bin", 0x002000, 0x002000, BAD_DUMP CRC(f4dc1fc2) SHA1(bbc11539c48eb612ebae50da45e03b6fde440941)) // internal OTPROM BIOS, dumped from dgun2953 PCB, 6000-7fff range + + ROM_REGION(0x800000, "spi", ROMREGION_ERASEFF) + ROM_LOAD("25vq32.bin", 0x000000, 0x400000, CRC(e99f1621) SHA1(f907c36a1a884d892331b7de294a8fd58f7bf9d5) ) +ROM_END + +ROM_START(toumapet) + ROM_REGION(0x800000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("st2x_internal.bin", 0x002000, 0x002000, BAD_DUMP CRC(f4dc1fc2) SHA1(bbc11539c48eb612ebae50da45e03b6fde440941)) // internal OTPROM BIOS, dumped from dgun2953 PCB, 6000-7fff range + + ROM_REGION(0x800000, "spi", ROMREGION_ERASEFF) + ROM_LOAD("p25d32sh.bin", 0x000000, 0x400000, CRC(25498f00) SHA1(c5c410e29f540d7f1fd4bbb333467f8a3eaccc15) ) +ROM_END + + } // anonymous namespace // older releases (primarily for Asian market?) -CONS( 201?, bbl380, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "BaoBaoLong", "BBL380 - 180 in 1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 201?, bbl380, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "BaoBaoLong", "BBL380 - 180 in 1", MACHINE_NOT_WORKING ) -CONS( 201?, mc_cb203, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Coolboy", "Coolboy RS-17 - 203 in 1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 201?, mc_cb203, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Coolboy", "Coolboy RS-17 - 203 in 1", MACHINE_NOT_WORKING ) // newer releases (more heavily censored, for export markets?) internal ROM was changed for these -CONS( 201?, dphh8630, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "", "Digital Pocket Hand Held System 230-in-1 - Model 8630 / Model 8633", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // sometimes sold as PCP. Model 8630/8633 are same ROM, different case +CONS( 201?, dphh8630, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "", "Digital Pocket Hand Held System 230-in-1 - Model 8630 / Model 8633", MACHINE_NOT_WORKING ) // sometimes sold as PCP. Model 8630/8633 are same ROM, different case + +CONS( 201?, rhhc152, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Orb", "Retro Handheld Console 152-in-1", MACHINE_IMPERFECT_SOUND ) // looks like a mini GameBoy - 'Over 150 games' on box -CONS( 201?, rhhc152, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Orb", "Retro Handheld Console 152-in-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // looks like a mini GameBoy - 'Over 150 games' on box +CONS( 201?, ragc153, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Orb", "Retro Arcade Game Controller 153-in-1", MACHINE_IMPERFECT_SOUND ) // looks like a Game & Watch -CONS( 201?, ragc153, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Orb", "Retro Arcade Game Controller 153-in-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // looks like a Game & Watch +CONS( 201?, dgun2953, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "dreamGEAR", "My Arcade Gamer Mini 160-in-1 (DGUN-2953)", MACHINE_IMPERFECT_SOUND ) -CONS( 201?, dgun2953, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "dreamGEAR", "My Arcade Gamer Mini 160-in-1 (DGUN-2953)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 201?, arcade10, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Fizz Creations", "Mini Arcade Console (Arcade 10-in-1)", MACHINE_IMPERFECT_SOUND ) -CONS( 201?, arcade10, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Fizz Creations", "Mini Arcade Console (Arcade 10-in-1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 201?, supreme, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Fizz Creations", "Arcade Classics Mini Handheld Arcade (Supreme 150)", MACHINE_IMPERFECT_SOUND ) -CONS( 201?, supreme, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Fizz Creations", "Arcade Classics Mini Handheld Arcade (Supreme 150)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// these are for the Japanese market, the ROM is the same between the Pocket Game and Game Computer but the form factor is different. +// they have the 0xE4 XOR on the SPI data like many of the above units, but don't currently boot - need to verify if the internal ROM part should be the same or not +CONS( 2019, pg118, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Pocket Game / Game Computer", "Pocket Game 118-in-1 / Game Computer 118-in-1", MACHINE_NOT_WORKING ) +// also has the 0xE4 XOR, also doesn't currently boot +CONS( 2021, toumapet, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Shenzhen Shiji New Technology", "Tou ma Pet", MACHINE_NOT_WORKING ) From c43e9aa81285c77fe2512335df2a41167a244f09 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 14:53:02 +0100 Subject: [PATCH 19/38] one more --- src/mame/mame.lst | 1 + src/mame/tvgames/st2302u_bbl_rom.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a1703dc4c2af1..492a2b8a01a70 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45676,6 +45676,7 @@ react @source:tvgames/st2302u_bbl_rom.cpp bbl338 +class200 dphh8213 @source:tvgames/st2302u_bbl_spi.cpp diff --git a/src/mame/tvgames/st2302u_bbl_rom.cpp b/src/mame/tvgames/st2302u_bbl_rom.cpp index 14786ec5c3ca0..2a673d22401dd 100644 --- a/src/mame/tvgames/st2302u_bbl_rom.cpp +++ b/src/mame/tvgames/st2302u_bbl_rom.cpp @@ -380,11 +380,20 @@ ROM_START( dphh8213 ) ROM_FILL( 0x00009f, 2, 0xea ) // NOP out SPI check ROM_END +ROM_START( class200 ) + // uncertain if internal area is used + + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD( "m29w320eb.bin", 0x000000, 0x400000, CRC(3067b5f6) SHA1(9a159b16898054a74cfb32b5c597b505132f004e) ) +ROM_END + } // anonymous namespace // this is uses a higher resolution display than the common units, but not as high as the SunPlus based ones -COMP( 201?, bbl338, 0, 0, st22xx_bbl338, dphh8213, st22xx_bbl338_sim_state, empty_init, "BaoBaoLong", "Portable Game Player BBL-338 (BaoBaoLong, 48-in-1)", MACHINE_IS_SKELETON ) +COMP( 201?, bbl338, 0, 0, st22xx_bbl338, dphh8213, st22xx_bbl338_sim_state, empty_init, "BaoBaoLong", "Portable Game Player BBL-338 (BaoBaoLong, 48-in-1)", MACHINE_IS_SKELETON ) +// also appears to be the higher resolution display +COMP( 201?, class200, 0, 0, st22xx_dphh8213, dphh8213, st22xx_bbl338_state, empty_init, "", "Color LCD Classic Game 200-in-1", MACHINE_IS_SKELETON ) // no manufacturer name or product code anywhere // Language controlled by port bit, set at factory, low resolution COMP( 201?, dphh8213, 0, 0, st22xx_dphh8213, dphh8213, st22xx_bbl338_state, empty_init, "", "Digital Pocket Hand Held System 20-in-1 - Model 8213", MACHINE_IS_SKELETON ) From 7f07be8ee09d66878a18e75b19502762a26c29ee Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 15:22:26 +0100 Subject: [PATCH 20/38] some nonsense MD bootled --- src/mame/mame.lst | 7 +++--- src/mame/sega/mdconsole.cpp | 44 +++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 492a2b8a01a70..b2a47c021ca52 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -39296,10 +39296,13 @@ vtennis3 // 32xj // aiwamcd // 1994 AIWA Mega-CD CSD-G1M (Japan) cdx // 1994 Sega CDX (USA) +dcat16 // +gen_nomd // 1995 Sega Genesis Nomad (USA) genesis // 1989 Sega Genesis (USA) genesis_tmss // laseract // 1993 Pioneer LaserActive (USA) laseractj // 1993 Pioneer LaserActive (Japan) +mahg156 megacd // 1993 Sega Mega-CD (Europe) megacd2 // 1993 Sega Mega-CD 2 (Europe) megacd2j // 1993 Sega Mega-CD 2 (Japan) @@ -39307,15 +39310,13 @@ megacda // 1993 Sega Mega-CD (Asia) megacdj // 1991 Sega Mega-CD (Japan) megadrij // 1988 Sega Mega Drive (Japan) megadriv // 1990 Sega Mega Drive (Europe) +megajet // 1993 Sega Mega Jet (Japan) multmega // 1994 Sega Multi-Mega (Europe) segacd // 1992 Sega Sega CD (USA) segacd2 // 1993 Sega Sega CD 2 (USA) wmega // 1992 Sega Wondermega (Japan) wmegam2 // 1993 Victor Wondermega M2 (Japan) xeye // 1993 JVC X'eye (USA) -dcat16 // -gen_nomd // 1995 Sega Genesis Nomad (USA) -megajet // 1993 Sega Mega Jet (Japan) @source:sega/megadriv_acbl.cpp aladmdb diff --git a/src/mame/sega/mdconsole.cpp b/src/mame/sega/mdconsole.cpp index be9f5e38112cf..723d61ecf4557 100644 --- a/src/mame/sega/mdconsole.cpp +++ b/src/mame/sega/mdconsole.cpp @@ -323,6 +323,48 @@ ROM_START(dcat16) ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) ROM_END + +ROM_START(mahg156) + ROM_REGION(0x8000000, "mainrom", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "md156.u3", 0x0000, 0x8000000, CRC(665fc68c) SHA1(6b765f96716c4a0abf3d27252ec82be6b0d9a985) ) + + ROM_REGION(0x8000000, "maincpu", ROMREGION_ERASEFF) +// the Megadrive ROMs for the most part appear to be hacked versions of the games / old scene dumps +// some are region locked to differing regions (not all games present in ROM appear on the menu) +// ROM_COPY( "mainrom", 0x0000000, 0, 0x080000) // FORGOTTEN WORLDS +// ROM_COPY( "mainrom", 0x0080000, 0, 0x080000) // FIRE PRO WRESTLING +// ROM_COPY( "mainrom", 0x0100000, 0, 0x080000) // GHOST BUSTERS +// ROM_COPY( "mainrom", 0x0180000, 0, 0x080000) // DICK TRACY +// ROM_COPY( "mainrom", 0x0200000, 0, 0x080000) // DEVIL CRASH +// ROM_COPY( "mainrom", 0x0280000, 0, 0x080000) // DECAP ATTACK +// ROM_COPY( "mainrom", 0x0300000, 0, 0x080000) // DARWIN 4081 +// ROM_COPY( "mainrom", 0x0380000, 0, 0x080000) // CRACK DOWN +// ROM_COPY( "mainrom", 0x0400000, 0, 0x080000) // CAPTAIN PLANET +// ROM_COPY( "mainrom", 0x0480000, 0, 0x080000) // CALIFORNIA GAMES +// ROM_COPY( "mainrom", 0x0500000, 0, 0x080000) // CADASH +// ROM_COPY( "mainrom", 0x0580000, 0, 0x080000) // BOOGIE WOOGIE BOWLING +// ROM_COPY( "mainrom", 0x0600000, 0, 0x080000) // BIMINI RUN +// ROM_COPY( "mainrom", 0x0700000, 0, 0x080000) // BATTLE TOADS +// ROM_COPY( "mainrom", 0x0780000, 0, 0x080000) // TROUBLE SHOOTER +// ROM_COPY( "mainrom", 0x0800000, 0, 0x080000) // BURNING FORCE +// ROM_COPY( "mainrom", 0x0880000, 0, 0x080000) // FAERY TALE ADVENTURE +// ROM_COPY( "mainrom", 0x0900000, 0, 0x080000) // E-SWAT +// ROM_COPY( "mainrom", 0x0980000, 0, 0x080000) // ELEMENTAL MASTER +// ROM_COPY( "mainrom", 0x0a00000, 0, 0x080000) // EA HOCKEY +// ROM_COPY( "mainrom", 0x0a80000, 0, 0x080000) // DARK CASTLE +// ROM_COPY( "mainrom", 0x0b00000, 0, 0x080000) // CYBORG JUSTICE (CENSOR) +// ROM_COPY( "mainrom", 0x0b80000, 0, 0x080000) // LITTLE MERMAID +// ROM_COPY( "mainrom", 0x0c00000, 0, 0x080000) // DORAEMON +// ROM_COPY( "mainrom", 0x0c80000, 0, 0x080000) // SONIC +// ROM_COPY( "mainrom", 0x0d00000, 0, 0x080000) // WANI WANI WORLD +// ROM_COPY( "mainrom", 0x0d80000, 0, 0x080000) // GOLDEN AXE 2 +// etc. + ROM_COPY( "mainrom", 0x7800000, 0x00000, 0x200000) // DMC RedKid (Menu, requires unusual rendering mode?) + + ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) +ROM_END + + ROM_START(megajet) ROM_REGION(MD_CPU_REGION_SIZE, "maincpu", ROMREGION_ERASEFF) ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) @@ -1043,3 +1085,5 @@ CONS( 1993, laseractj, laseract, 0, mdj_scd, md, md_cons_c /* clone hardware - not sure if this hardware is running some kind of emulator, or enhanced MD clone, or just custom banking */ CONS( 200?, dcat16, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "Firecore", "D-CAT16 (Mega Drive handheld)", MACHINE_NOT_WORKING ) +// seems to be based on the AT games units, requires custom mode for menu? +CONS( 201?, mahg156, 0, 0, dcat16_megadriv, md, md_cons_slot_state, init_genesis, "", "Mini Arcade Handheld Game Console 2.8 Inch Screen Built in 156 Retro Games (Mega Drive handheld)", MACHINE_NOT_WORKING ) From 46a1b0bdab12c97059392d48090f24229c82754e Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 1 Oct 2024 16:30:14 +0100 Subject: [PATCH 21/38] add TV Globe --- src/mame/mame.lst | 3 + src/mame/skeleton/epoch_tv_globe.cpp | 105 +++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/mame/skeleton/epoch_tv_globe.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b2a47c021ca52..082aa9a0bcc3b 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -42108,6 +42108,9 @@ elzet80p // @source:skeleton/epic14e.cpp epic14e // +@source:skeleton/epoch_tv_globe.cpp +eptvglob + @source:skeleton/esprit.cpp esprit // Hazeltine Esprit esprit3 // Hazeltine Esprit III diff --git a/src/mame/skeleton/epoch_tv_globe.cpp b/src/mame/skeleton/epoch_tv_globe.cpp new file mode 100644 index 0000000000000..914e7daf76a7b --- /dev/null +++ b/src/mame/skeleton/epoch_tv_globe.cpp @@ -0,0 +1,105 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/****************************************************************************** + +main SoC is marked + +PONTO +PONTO-1 +QHLL3.03 +TAIWAN 0915 + +main PCB is marked + +LCT REV1.9 +20-K5410100G2 +Tiger-Main +KTG-KZ003-08 + +*******************************************************************************/ + +#include "emu.h" + +#include "cpu/arm7/arm7.h" + +#include "screen.h" +#include "speaker.h" + + +namespace { + +class epoch_tv_globe_state : public driver_device +{ +public: + epoch_tv_globe_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_screen(*this, "screen") + { } + + void epoch_tv_globe(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_maincpu; + required_device m_screen; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void arm_map(address_map &map); +}; + +uint32_t epoch_tv_globe_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void epoch_tv_globe_state::machine_start() +{ + +} + +void epoch_tv_globe_state::machine_reset() +{ +} + +static INPUT_PORTS_START( epoch_tv_globe ) +INPUT_PORTS_END + +void epoch_tv_globe_state::arm_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom().region("maincpu", 0); +} + + +void epoch_tv_globe_state::epoch_tv_globe(machine_config &config) +{ + ARM9(config, m_maincpu, 24000000 * 4); // unknown ARM core, unknown frequency (24Mhz XTAL) + m_maincpu->set_addrmap(AS_PROGRAM, &epoch_tv_globe_state::arm_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(FUNC(epoch_tv_globe_state::screen_update)); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); +} + +ROM_START( eptvglob ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "a25l010.ic4", 0x000000, 0x20000, CRC(2e28c7a6) SHA1(ea26f8ccb9882e21f3d415af59fc04bdde36db6a) ) + + // was also an ATMLH904 device at IC7, but it was empty + + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF ) + ROM_LOAD( "k9f1g08u0b.ic8", 0x000000, 0x8400000, CRC(f1880c56) SHA1(c50f01f799b3296cda56d05a02a59aa78e0c8422) ) +ROM_END + +} // anonymous namespace + +CONS( 201?, eptvglob, 0, 0, epoch_tv_globe, epoch_tv_globe, epoch_tv_globe_state, empty_init, "Epoch", "TV Globe (Japan)", MACHINE_IS_SKELETON ) From 29d322690a9a5ade6d4ab1cff8b15b3450831e69 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 2 Oct 2024 11:54:50 +0100 Subject: [PATCH 22/38] add a 265 game multigame --- src/mame/mame.lst | 9 +++++---- src/mame/tvgames/spg2xx_wiwi.cpp | 12 ++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 082aa9a0bcc3b..b0ce4588186a6 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45658,14 +45658,15 @@ tvgogo // vii // KenSingTon / Jungle Soft / Siatronics Vii @source:tvgames/spg2xx_wiwi.cpp -wiwi18 // +265games +ddmmeg12 +ddmsup foxsport +guitrbus lexifit marc101 marc250 -guitrbus -ddmsup -ddmmeg12 +wiwi18 // @source:tvgames/spg2xx_zone.cpp wirels60 // Wireless 60 diff --git a/src/mame/tvgames/spg2xx_wiwi.cpp b/src/mame/tvgames/spg2xx_wiwi.cpp index e15150261df99..4c56d22fa2847 100644 --- a/src/mame/tvgames/spg2xx_wiwi.cpp +++ b/src/mame/tvgames/spg2xx_wiwi.cpp @@ -818,7 +818,7 @@ void spg2xx_game_marc250_state::init_m527() //rom[((17 * 0x800000) / 2) | 0x015e58] = 0x0003; // cliff overhang / gym dancing //rom[((18 * 0x800000) / 2) | 0x01cab4] = 0x0003; - rom[((18 * 0x800000) / 2) | 0x021e25] = 0xffff; // secondary 'turn off' + rom[((18 * 0x800000) / 2) | 0x021e25] = 0xffff; // secondary 'turn off' on gym dancing // jump chess //rom[((19 * 0x800000) / 2) | 0x012c3a] = 0x0003; // boxing, basketball etc. @@ -969,6 +969,12 @@ ROM_START( marc250 ) ROM_LOAD16_WORD_SWAP( "m527.u6", 0x0000000, 0x10000000, CRC(4b856cab) SHA1(41c66bbdb0bb1442d7e11da18e9e6b20048445ba) ) ROM_END +ROM_START( 265games ) + ROM_REGION( 0x10000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "265games.bin", 0x0000000, 0x10000000, CRC(761c92cb) SHA1(3e32bc6079610861bedafe8703302ed9620c9120) ) +ROM_END + + ROM_START( guitrbus ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "winfunguitar.bin", 0x000000, 0x400000, CRC(17419a27) SHA1(19377fcd18b08d3ae8e20de0244b3aaef1b5a66a) ) @@ -1004,7 +1010,9 @@ CONS( 200?, ddmsup, 0, 0, ddmsup, ddmsup, spg2xx_game_ddmsup_state, CONS( 2007, ddmmeg12, 0, 0, ddmsup, ddmsup, spg2xx_game_ddmsup_state, empty_init, "Senario", "Double Dance Mania: Mega 12", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 2015, marc250, 0, 0, marc101, m489, spg2xx_game_marc250_state, init_m527, "Millennium 2000 GmbH", "Millennium Arcade 250 (M527)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 2015, marc250, 0, 0, marc101, m489, spg2xx_game_marc250_state, init_m527, "Millennium 2000 GmbH", "Millennium Arcade 250 (M527)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) + +CONS( 201?, 265games, 0, 0, marc101, m489, spg2xx_game_marc250_state, init_m527, "", "265-in-1 Handheld Game (SPG2xx based)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // has the following strings at the start of the ROM // "Copyright(C) 2009-2012 ShenZhen Multi-Content Software CO., LTD" From 8e90577aaa3280433f93a4f0c0cc3de42f12a7bc Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 2 Oct 2024 13:49:15 +0100 Subject: [PATCH 23/38] add Anpanman TV not working --- src/mame/mame.lst | 1 + src/mame/tvgames/spg2xx.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b0ce4588186a6..37a9fa75dc672 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45480,6 +45480,7 @@ zone3d @source:tvgames/spg2xx.cpp ablkickb abltenni // +anpantv comil // ddr33v decathln diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index 2954770c4426d..4e695597bbe28 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -2325,6 +2325,14 @@ ROM_START( ddr33v ) ROM_LOAD16_WORD_SWAP( "ddr33v.bin", 0x000000, 0x800000, CRC(56c7015c) SHA1(a1faef2ab6eb191dea1497f8cfd4ccbd8c504e6d) ) ROM_END +ROM_START( anpantv ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + // were the address lines incorrectly connected when this was dumped? + ROM_LOAD16_WORD_SWAP( "anpanman_tv.bin", 0x000000, 0x200000, CRC(760ea2be) SHA1(0a41b986649431b9357826e1828f90c80fd276a6) ) + ROM_CONTINUE(0x400000,0x200000) + ROM_CONTINUE(0x200000,0x200000) + ROM_CONTINUE(0x600000,0x200000) +ROM_END void spg2xx_game_state::init_crc() { @@ -2503,3 +2511,6 @@ CONS( 200?, virtten, 0, 0, spg2xx, virtten, spg2xx_game_state, // 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 ) + +// PCB has 'Anpanman TV 2006 Ver 1.4' printed on it, ROM has SPG260 header. Uses custom built-in keyboard, no display built into the unit. +CONS( 2006, anpantv, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "Bandai", "Anpanman TV (Japan)", MACHINE_NOT_WORKING ) From 4c1cf79c90edadd84e12f9f7736763c11761509f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 2 Oct 2024 14:10:32 +0100 Subject: [PATCH 24/38] use more natural rom order --- src/mame/tvgames/spg2xx.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index 4e695597bbe28..7272b0a3a75ba 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -2327,11 +2327,7 @@ ROM_END ROM_START( anpantv ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) - // were the address lines incorrectly connected when this was dumped? - ROM_LOAD16_WORD_SWAP( "anpanman_tv.bin", 0x000000, 0x200000, CRC(760ea2be) SHA1(0a41b986649431b9357826e1828f90c80fd276a6) ) - ROM_CONTINUE(0x400000,0x200000) - ROM_CONTINUE(0x200000,0x200000) - ROM_CONTINUE(0x600000,0x200000) + ROM_LOAD16_WORD_SWAP( "anpanman_tv.bin", 0x000000, 0x800000, CRC(5e32dc1a) SHA1(bae260ffc56f5315cdafd5bc40966ec6d31e267f) ) ROM_END void spg2xx_game_state::init_crc() From 4b277eedc2893aa6d754a966606967e533d3d94f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 2 Oct 2024 15:55:07 +0100 Subject: [PATCH 25/38] added Doraemon Excite Ping-Pong Super TV-PC cart --- hash/super_tv_pc_cart.xml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hash/super_tv_pc_cart.xml b/hash/super_tv_pc_cart.xml index b795eda095952..8c5589d532cde 100644 --- a/hash/super_tv_pc_cart.xml +++ b/hash/super_tv_pc_cart.xml @@ -4,10 +4,6 @@ license:CC0-1.0 --> - - @@ -71,8 +67,17 @@ license:CC0-1.0 - - + + Doraemon Excite Ping-Pong + 2006 + Epoch + + + + + + + Pet Keitai Link 2006 From 45f242b3e2d8a937ee43030c9263c7203ee3f019 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 2 Oct 2024 19:18:10 +0100 Subject: [PATCH 26/38] add some VT based thing that I can't get to run any valid code --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 37a9fa75dc672..324d60cf61a81 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34685,6 +34685,7 @@ mog_m320 myarccn nubsupmf otrail +pcmx11 q5_500in1 rd5_240 red5mam diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 55e8bfe9d4248..85307cb8ae3c6 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -881,6 +881,10 @@ ROM_START( otrail ) ROM_LOAD( "t24c04a.bin", 0x000, 0x200, CRC(ce1fad6f) SHA1(82878996765739edba42042b6336460d5c8f8096) ) ROM_END +ROM_START( pcmx11 ) + ROM_REGION( 0x800000, "mainrom", 0 ) + ROM_LOAD( "pcmx11.bin", 0x000000, 0x800000, CRC(e1f3590b) SHA1(f78f7fc4f9a4474b5a9717dfbfc3199a5bc994ba) ) +ROM_END void nes_vt369_vtunknown_state::init_lxcmcypp() { @@ -992,6 +996,10 @@ CONS( 201?, 240in1ar, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknow CONS( 2019, unk2019hh, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "unknown VTxx based GameBoy style handheld (2019 PCB)", MACHINE_NOT_WORKING ) CONS( 2020, unk2020hh, unk2019hh,0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "unknown VTxx based GameBoy style handheld (2020 PCB)", MACHINE_NOT_WORKING ) +// might be VT-09 or VT-162, uses a ROM glob on a sub-board, data lines seem scrambled at least? +// NOT the same as the (undumped) vertical handheld console of the same name with Jungletac / Nice Code games, that one has unique games +CONS( 2009, pcmx11, 0, 0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "Premier Portfolio International", "Classic Max Pocket PCMX11 - 12 in 1 Colour Games Console (France)", MACHINE_NOT_WORKING ) + /***************************************************************************** * below are VT369? games that use flash ROM *****************************************************************************/ From 18403f0315e04344a192733549a911b91b4c3115 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 09:43:39 +0100 Subject: [PATCH 27/38] add ham PCTV --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 324d60cf61a81..34b593e0ffe16 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45790,6 +45790,7 @@ tomcpin // tomshoot // tomplc // tvpc_dor +tvpc_ham tvpc_tom @source:tvgames/xavix2.cpp diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index b4d686c011516..359a12ac661c7 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -2250,6 +2250,11 @@ ROM_START( tvpc_dor ) ROM_LOAD( "tvpc_doreamon.u3", 0x000000, 0x400000, CRC(6f2edbb2) SHA1(98fa86f85e00aa40e7a585ff0bc930cb5ca88362) ) ROM_END +ROM_START( tvpc_ham ) + ROM_REGION(0x400000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "hpcj.u3", 0x000000, 0x400000, CRC(76e8c854) SHA1(5998c03292a16107d0d7ae00f77677582680f323) ) +ROM_END + ROM_START( tak_gin ) // dumped from a PCB with 1x ROM Glob with TSOP pads, 1x unknown glob, 1x CPU glob. It also exists in a configuration with just 1x ROM glob (no pads) and 1x CPU glob - unknown if code is the same ROM_REGION(0x200000, "bios", ROMREGION_ERASE00 ) ROM_LOAD( "snowboard.bin", 0x000000, 0x200000, CRC(79fdeae3) SHA1(ab08790e95cdccf3541ecbddb87ebf0dedb3718b) ) @@ -2424,4 +2429,4 @@ CONS( 2003, epo_tfp2, 0, 0, xavix_i2c_24c08, epo_tfp2, xavix_i2c_sta CONS( 2005, tvpc_tom, 0, 0, xavix_i2c_24c16, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Thomas & Friends (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) CONS( 2003, tvpc_dor, 0, 0, xavix_i2c_24c16, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Doraemon (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -// A Hamtaro TV-PC also exists +CONS( 2003, tvpc_ham, 0, 0, xavix_i2c_24c16, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Tottoko Hamutaro (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) From 32b485949c79437dc30a81cb628a10817fbb4b75 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 09:46:10 +0100 Subject: [PATCH 28/38] remove line, this was confused with the regular PC-TV unit --- src/mame/tvgames/xavix_2002.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index b9d2d1436d027..174de67414cb8 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -601,5 +601,4 @@ CONS( 2008, udance, 0, 0, xavix2002, xavix, xavix_state, init_xavix, "Tiger / CONS( 2004, suprtvpc, 0, 0, xavix2002_super_tv_pc, xavix, xavix2002_super_tv_pc_state, init_xavix, "Epoch / SSD Company LTD", "Super TV-PC", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // hangs after 'loading' sequence CONS( 200?, suprtvpchk, suprtvpc, 0, xavix2002_super_tv_pc, xavix, xavix2002_super_tv_pc_state, init_xavix, "Epoch / SSD Company LTD", "Super TV-PC - Hello Kitty", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -// A Doraemon themed Super TV PC units also exist, likely with different internal ROM From dfef2f00b974e159f1752573784e15e309f97760 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 09:47:40 +0100 Subject: [PATCH 29/38] or not, both exist apparently --- src/mame/tvgames/xavix_2002.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 174de67414cb8..b9d2d1436d027 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -601,4 +601,5 @@ CONS( 2008, udance, 0, 0, xavix2002, xavix, xavix_state, init_xavix, "Tiger / CONS( 2004, suprtvpc, 0, 0, xavix2002_super_tv_pc, xavix, xavix2002_super_tv_pc_state, init_xavix, "Epoch / SSD Company LTD", "Super TV-PC", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // hangs after 'loading' sequence CONS( 200?, suprtvpchk, suprtvpc, 0, xavix2002_super_tv_pc, xavix, xavix2002_super_tv_pc_state, init_xavix, "Epoch / SSD Company LTD", "Super TV-PC - Hello Kitty", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +// A Doraemon themed Super TV PC units also exist, likely with different internal ROM From eac9f790f980f51c75f561ecb3079c236ede65cb Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 11:57:47 +0100 Subject: [PATCH 30/38] added GameU+ --- src/mame/mame.lst | 3 + src/mame/tvgames/gameu.cpp | 116 +++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 src/mame/tvgames/gameu.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 34b593e0ffe16..9f7965cb7fae6 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45351,6 +45351,9 @@ rad_baskp spidtt tsbuzz +@source:tvgames/gameu.cpp +gameu50 + @source:tvgames/generalplus_gpl16250_mobigo.cpp mobigo mobigos diff --git a/src/mame/tvgames/gameu.cpp b/src/mame/tvgames/gameu.cpp new file mode 100644 index 0000000000000..9d1224ef814e0 --- /dev/null +++ b/src/mame/tvgames/gameu.cpp @@ -0,0 +1,116 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +#include "emu.h" + +#include "cpu/unsp/unsp.h" + +#include "screen.h" +#include "speaker.h" + + +namespace { + +class gameu_handheld_state : public driver_device +{ +public: + gameu_handheld_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_screen(*this, "screen") + { } + + void gameu_handheld(machine_config &config); + + void init_gameu(); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_maincpu; + required_device m_screen; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void map(address_map &map); +}; + +uint32_t gameu_handheld_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void gameu_handheld_state::machine_start() +{ + +} + +void gameu_handheld_state::machine_reset() +{ +} + +static INPUT_PORTS_START( gameu_handheld ) +INPUT_PORTS_END + + +void gameu_handheld_state::map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().region("maincpu", 0x00000); +} + + +void gameu_handheld_state::gameu_handheld(machine_config &config) +{ + UNSP_20(config, m_maincpu, 96000000); // unknown type of SunPlus + m_maincpu->set_addrmap(AS_PROGRAM, &gameu_handheld_state::map); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(320, 262); // unknown resolution + m_screen->set_visarea(0, 320-1, 0, 240-1); + m_screen->set_screen_update(FUNC(gameu_handheld_state::screen_update)); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); +} + +void gameu_handheld_state::init_gameu() +{ + uint16_t *ROM = (uint16_t*)memregion("maincpu")->base(); + int size = memregion("maincpu")->bytes(); + + for (int i = 0; i < size/2; i++) + { + ROM[i] = ROM[i] ^ 0x3b90; + + ROM[i] = bitswap<16>(ROM[i], 8, 7, 13, 15, 4, 5, 12, 10, + 3, 1, 11, 9, 6, 14, 0, 2); + + ROM[i] = ((ROM[i] & 0xff00) >> 8) | ((ROM[i] & 0x00ff) << 8); + } + + #if 0 + { + FILE *fp; + char filename[256]; + sprintf(filename,"decrypted_%s", machine().system().name); + fp=fopen(filename, "w+b"); + if (fp) + { + fwrite(ROM, size, 1, fp); + fclose(fp); + } + } + #endif +} + +ROM_START( gameu50 ) + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD16_WORD_SWAP( "gameu.bin", 0x000000, 0x2000000, CRC(13c42bce) SHA1(f769ceabb8ab4e60c0d663dffd5cca91c6aec206) ) +ROM_END + +} // anonymous namespace + +CONS( 201?, gameu50, 0, 0, gameu_handheld, gameu_handheld, gameu_handheld_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_IS_SKELETON ) From 59ab1ad1088b1569aaff052b11762ac530d238de Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 11:58:32 +0100 Subject: [PATCH 31/38] comment --- src/mame/tvgames/gameu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/tvgames/gameu.cpp b/src/mame/tvgames/gameu.cpp index 9d1224ef814e0..9a3465f1e98dd 100644 --- a/src/mame/tvgames/gameu.cpp +++ b/src/mame/tvgames/gameu.cpp @@ -113,4 +113,5 @@ ROM_END } // anonymous namespace +// unit looks a bit like a knock-off Wii-U tablet, but much smaller CONS( 201?, gameu50, 0, 0, gameu_handheld, gameu_handheld, gameu_handheld_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_IS_SKELETON ) From d30cc92b4f94096091f3e7a306cce778b5c0aeff Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 12:08:51 +0100 Subject: [PATCH 32/38] add Mini-Moni Stage! Dance Dapyon! Plus (Japan) as working --- src/mame/mame.lst | 1 + src/mame/tvgames/xavix.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9f7965cb7fae6..472c1c5f2661e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45740,6 +45740,7 @@ epo_esdx // epo_esht // epo_guru // epo_mms // +epo_mmsp // epo_quiz // epo_tenn // epo_tfp2 // diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 359a12ac661c7..e4ef74a970191 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -2052,6 +2052,11 @@ ROM_START( epo_mms ) ROM_LOAD("mmnj-main-4.u4", 0x000000, 0x400000, CRC(22f14ca2) SHA1(122e735eb7c54a22de16f65cd43d2cae788e0102) ) ROM_END +ROM_START( epo_mmsp ) + ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00) + ROM_LOAD("mm1j main-00.u1", 0x000000, 0x400000, CRC(65b40a27) SHA1(8f88973122277fe8f31bacb3a070609fde062946) ) +ROM_END + ROM_START( tak_geig ) ROM_REGION(0x400000, "bios", ROMREGION_ERASE00) ROM_LOAD("geigeki.bin", 0x000000, 0x400000, CRC(bd0c3576) SHA1(06f614dbec0225ce4ed866b98450912986d72faf) ) @@ -2356,6 +2361,9 @@ CONS( 2003, epo_crok, 0, 0, xavix_i2c_24lc04, xavix_i2c,xavix_i2c_sta // ミニモニ。ステージ!ダンスだぴょん! CONS( 2002, epo_mms, 0, 0, xavix_i2c_24c02, epo_mms, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Mini-Moni Stage! Dance Dapyon! (Japan)", MACHINE_IMPERFECT_SOUND ) +// ミニモニ。ステージ!ダンスだぴょん!ぷらすっ +CONS( 2003, epo_mmsp, 0, 0, xavix_i2c_24c02, epo_mms, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Mini-Moni Stage! Dance Dapyon! Plus (Japan)", MACHINE_IMPERFECT_SOUND ) + // オールスター感謝祭 超豪華!クイズ決定版~赤坂5丁目体感スタジオ~ CONS( 2004, epo_quiz, 0, 0, xavix, epo_quiz, xavix_state, init_xavix, "Takara / SSD Company LTD", "All-Star Thanksgiving Super Luxurious! Definitive Quiz Edition ~ Akasaka 5-Chome Experience Studio", MACHINE_IMPERFECT_SOUND ) From df87304669c7dedd1baed435712d0cf8144513a2 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 13:05:27 +0100 Subject: [PATCH 33/38] gameu50 seems closest to gpl16250 (at least boots to a display) so put it there --- src/mame/mame.lst | 4 +- src/mame/tvgames/gameu.cpp | 117 ------------------ src/mame/tvgames/generalplus_gpl16250.h | 2 + src/mame/tvgames/generalplus_gpl16250_rom.cpp | 32 +++++ 4 files changed, 35 insertions(+), 120 deletions(-) delete mode 100644 src/mame/tvgames/gameu.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 472c1c5f2661e..8ffad4e61c39c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45351,9 +45351,6 @@ rad_baskp spidtt tsbuzz -@source:tvgames/gameu.cpp -gameu50 - @source:tvgames/generalplus_gpl16250_mobigo.cpp mobigo mobigos @@ -45382,6 +45379,7 @@ beambox @source:tvgames/generalplus_gpl16250_rom.cpp beijuehh +gameu50 gormiti imgame myac220 diff --git a/src/mame/tvgames/gameu.cpp b/src/mame/tvgames/gameu.cpp deleted file mode 100644 index 9a3465f1e98dd..0000000000000 --- a/src/mame/tvgames/gameu.cpp +++ /dev/null @@ -1,117 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood - -#include "emu.h" - -#include "cpu/unsp/unsp.h" - -#include "screen.h" -#include "speaker.h" - - -namespace { - -class gameu_handheld_state : public driver_device -{ -public: - gameu_handheld_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_screen(*this, "screen") - { } - - void gameu_handheld(machine_config &config); - - void init_gameu(); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - -private: - required_device m_maincpu; - required_device m_screen; - - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - - void map(address_map &map); -}; - -uint32_t gameu_handheld_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - return 0; -} - -void gameu_handheld_state::machine_start() -{ - -} - -void gameu_handheld_state::machine_reset() -{ -} - -static INPUT_PORTS_START( gameu_handheld ) -INPUT_PORTS_END - - -void gameu_handheld_state::map(address_map &map) -{ - map(0x000000, 0x00ffff).rom().region("maincpu", 0x00000); -} - - -void gameu_handheld_state::gameu_handheld(machine_config &config) -{ - UNSP_20(config, m_maincpu, 96000000); // unknown type of SunPlus - m_maincpu->set_addrmap(AS_PROGRAM, &gameu_handheld_state::map); - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_size(320, 262); // unknown resolution - m_screen->set_visarea(0, 320-1, 0, 240-1); - m_screen->set_screen_update(FUNC(gameu_handheld_state::screen_update)); - - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); -} - -void gameu_handheld_state::init_gameu() -{ - uint16_t *ROM = (uint16_t*)memregion("maincpu")->base(); - int size = memregion("maincpu")->bytes(); - - for (int i = 0; i < size/2; i++) - { - ROM[i] = ROM[i] ^ 0x3b90; - - ROM[i] = bitswap<16>(ROM[i], 8, 7, 13, 15, 4, 5, 12, 10, - 3, 1, 11, 9, 6, 14, 0, 2); - - ROM[i] = ((ROM[i] & 0xff00) >> 8) | ((ROM[i] & 0x00ff) << 8); - } - - #if 0 - { - FILE *fp; - char filename[256]; - sprintf(filename,"decrypted_%s", machine().system().name); - fp=fopen(filename, "w+b"); - if (fp) - { - fwrite(ROM, size, 1, fp); - fclose(fp); - } - } - #endif -} - -ROM_START( gameu50 ) - ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD16_WORD_SWAP( "gameu.bin", 0x000000, 0x2000000, CRC(13c42bce) SHA1(f769ceabb8ab4e60c0d663dffd5cca91c6aec206) ) -ROM_END - -} // anonymous namespace - -// unit looks a bit like a knock-off Wii-U tablet, but much smaller -CONS( 201?, gameu50, 0, 0, gameu_handheld, gameu_handheld, gameu_handheld_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_IS_SKELETON ) diff --git a/src/mame/tvgames/generalplus_gpl16250.h b/src/mame/tvgames/generalplus_gpl16250.h index f43c61475b541..0a6a70d87e552 100644 --- a/src/mame/tvgames/generalplus_gpl16250.h +++ b/src/mame/tvgames/generalplus_gpl16250.h @@ -45,6 +45,8 @@ class gcm394_game_state : public driver_device void cs_callback(uint16_t cs0, uint16_t cs1, uint16_t cs2, uint16_t cs3, uint16_t cs4); + void init_gameu(); + protected: virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index 17a8f665a237b..0a384733b689d 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -462,6 +462,15 @@ ROM_START( beijuehh ) ROM_LOAD16_WORD_SWAP( "beijeu.bin", 0x0000000, 0x8000000, CRC(e7b968af) SHA1(a39a3a70e6e0827e4395e09e55983eb9e9348e4a) ) // some address lines might be swapped ROM_END + +ROM_START( gameu50 ) + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) + // ROM seems to be divided into 2MByte banks, so could be external banking + ROM_LOAD16_WORD_SWAP( "gameu.bin", 0x000000, 0x2000000, CRC(13c42bce) SHA1(f769ceabb8ab4e60c0d663dffd5cca91c6aec206) ) +ROM_END + + + void tkmag220_game_state::tkmag220(machine_config &config) { gcm394_game_state::base(config); @@ -617,6 +626,26 @@ void gormiti_game_state::machine_reset() } +void gcm394_game_state::init_gameu() +{ + uint16_t *ROM = (uint16_t*)memregion("maincpu")->base(); + int size = memregion("maincpu")->bytes(); + + for (int i = 0; i < size/2; i++) + { + ROM[i] = ROM[i] ^ 0x3b90; + + ROM[i] = bitswap<16>(ROM[i], 8, 7, 13, 15, 4, 5, 12, 10, + 3, 1, 11, 9, 6, 14, 0, 2); + + ROM[i] = ((ROM[i] & 0xff00) >> 8) | ((ROM[i] & 0x00ff) << 8); + } + + m_maincpu->set_alt_tile_addressing_hack(0); +} + + + // the JAKKS ones of these seem to be known as 'Generalplus GPAC500' hardware? CONS(2009, smartfp, 0, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (UK)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) CONS(2009, smartfps, smartfp, 0, base, smartfp, gcm394_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) @@ -641,3 +670,6 @@ CONS(201?, beijuehh, 0, 0, beijuehh, beijuehh, beijuehh_game_state, em CONS(2013, gormiti, 0, 0, base, gormiti, gormiti_game_state, empty_init, "Giochi Preziosi", "Gormiti Game Arena (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // Fun 2 Learn 3-in-1 SMART SPORTS ? + +// unit looks a bit like a knock-off Wii-U tablet, but much smaller +CONS( 201?, gameu50, 0, 0, base, smartfp, gcm394_game_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From f9147c64a1c7cdb3347a1710a66d6d768a40f147 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 13:31:43 +0100 Subject: [PATCH 34/38] improve gameu menu --- src/devices/machine/generalplus_gpl16250soc.h | 1 + .../machine/generalplus_gpl16250soc_video.cpp | 22 ++++++++------ .../machine/generalplus_gpl16250soc_video.h | 2 ++ src/mame/tvgames/generalplus_gpl16250.h | 28 +++++++++++++++-- src/mame/tvgames/generalplus_gpl16250_rom.cpp | 30 +++++++++++++++++-- 5 files changed, 70 insertions(+), 13 deletions(-) diff --git a/src/devices/machine/generalplus_gpl16250soc.h b/src/devices/machine/generalplus_gpl16250soc.h index f50f2eeef604e..b7b5e3796dea5 100644 --- a/src/devices/machine/generalplus_gpl16250soc.h +++ b/src/devices/machine/generalplus_gpl16250soc.h @@ -62,6 +62,7 @@ class sunplus_gcm394_base_device : public unsp_20_device, public device_mixer_in //void set_pal_back_hack(int pal_back) { m_spg_video->set_pal_back(pal_back); } void set_alt_extrasprite_hack(int alt_extrasprite_hack) { m_spg_video->set_alt_extrasprite(alt_extrasprite_hack); } void set_legacy_video_mode() { m_spg_video->set_legacy_video_mode(); } + void set_disallow_resolution_control() { m_spg_video->set_disallow_resolution_control(); } void set_romtype(int romtype) { m_romtype = romtype; } diff --git a/src/devices/machine/generalplus_gpl16250soc_video.cpp b/src/devices/machine/generalplus_gpl16250soc_video.cpp index b9bdc02351a22..1b878ca8e41f4 100644 --- a/src/devices/machine/generalplus_gpl16250soc_video.cpp +++ b/src/devices/machine/generalplus_gpl16250soc_video.cpp @@ -39,6 +39,7 @@ gcm394_base_video_device::gcm394_base_video_device(const machine_config &mconfig m_alt_extrasprite_hack(0), m_alt_tile_addressing(0), m_use_legacy_mode(false), + m_disallow_resolution_control(false), m_renderer(*this, "renderer") { } @@ -379,16 +380,19 @@ uint32_t gcm394_base_video_device::screen_update(screen_device &screen, bitmap_r //const uint16_t bgcol = 0x7c1f; // magenta // const uint16_t bgcol = 0x0000; // black - bool highres; - if (m_707f & 0x0010) + bool highres = false; + if (!m_disallow_resolution_control) { - highres = true; - m_screen->set_visible_area(0, 640-1, 0, 480-1); - } - else - { - highres = false; - m_screen->set_visible_area(0, 320-1, 0, 240-1); + if (m_707f & 0x0010) + { + highres = true; + m_screen->set_visible_area(0, 640 - 1, 0, 480 - 1); + } + else + { + highres = false; + m_screen->set_visible_area(0, 320 - 1, 0, 240 - 1); + } } address_space &mem = m_cpu->space(AS_PROGRAM); diff --git a/src/devices/machine/generalplus_gpl16250soc_video.h b/src/devices/machine/generalplus_gpl16250soc_video.h index e68169898edd1..06d96e89b17b3 100644 --- a/src/devices/machine/generalplus_gpl16250soc_video.h +++ b/src/devices/machine/generalplus_gpl16250soc_video.h @@ -35,6 +35,7 @@ class gcm394_base_video_device : public device_t, public device_video_interface void set_alt_tile_addressing(int alt_tile_addressing) { m_alt_tile_addressing = alt_tile_addressing; } void set_alt_extrasprite(int alt_extrasprite_hack) { m_alt_extrasprite_hack = alt_extrasprite_hack; } void set_legacy_video_mode() { m_use_legacy_mode = true; } + void set_disallow_resolution_control() { m_disallow_resolution_control = true; } void set_video_spaces(address_space& cpuspace, address_space& cs_space, int csbase) { m_cpuspace = &cpuspace; m_cs_space = &cs_space; m_csbase = csbase; } @@ -233,6 +234,7 @@ class gcm394_base_video_device : public device_t, public device_video_interface int m_alt_extrasprite_hack; int m_alt_tile_addressing; bool m_use_legacy_mode; // could be related to the 'unused' bits in the palete bank select being set, but uncertain + bool m_disallow_resolution_control; required_device m_renderer; diff --git a/src/mame/tvgames/generalplus_gpl16250.h b/src/mame/tvgames/generalplus_gpl16250.h index 0a6a70d87e552..2359f06209807 100644 --- a/src/mame/tvgames/generalplus_gpl16250.h +++ b/src/mame/tvgames/generalplus_gpl16250.h @@ -45,8 +45,6 @@ class gcm394_game_state : public driver_device void cs_callback(uint16_t cs0, uint16_t cs1, uint16_t cs2, uint16_t cs3, uint16_t cs4); - void init_gameu(); - protected: virtual void machine_start() override; virtual void machine_reset() override; @@ -143,4 +141,30 @@ class beijuehh_game_state : public gcm394_game_state }; +class gameu_handheld_game_state : public gcm394_game_state +{ +public: + gameu_handheld_game_state(const machine_config& mconfig, device_type type, const char* tag) : + gcm394_game_state(mconfig, type, tag) + { + } + + void gameu(machine_config &config); + + void init_gameu(); + +protected: + + virtual void machine_reset() override; + +private: + + void gameu_portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void gameu_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + + uint16_t m_portb_data = 0U; + uint16_t m_portd_data = 0U; +}; + + #endif // MAME_TVGAMES_SUNPLUS_GCM394_H diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index 0a384733b689d..96294d980492c 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -616,8 +616,15 @@ void beijuehh_game_state::machine_reset() +void gameu_handheld_game_state::gameu(machine_config &config) +{ + gcm394_game_state::base(config); + m_maincpu->portb_out().set(FUNC(gameu_handheld_game_state::gameu_portb_w)); + m_maincpu->portd_out().set(FUNC(gameu_handheld_game_state::gameu_portd_w)); + m_screen->set_visarea(0, (160)-1, 0, (120)-1); +} void gormiti_game_state::machine_reset() { @@ -625,8 +632,26 @@ void gormiti_game_state::machine_reset() m_maincpu->set_alt_tile_addressing_hack(1); } +void gameu_handheld_game_state::gameu_portb_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + logerror("%s: portb write %04x\n", machine().describe_context().c_str(), data); + m_portb_data = data; +} + + +void gameu_handheld_game_state::gameu_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + printf("%s: portd write %04x\n", machine().describe_context().c_str(), data); + m_portd_data = data; +} + +void gameu_handheld_game_state::machine_reset() +{ + gcm394_game_state::machine_reset(); + m_maincpu->set_alt_tile_addressing_hack(1); +} -void gcm394_game_state::init_gameu() +void gameu_handheld_game_state::init_gameu() { uint16_t *ROM = (uint16_t*)memregion("maincpu")->base(); int size = memregion("maincpu")->bytes(); @@ -642,6 +667,7 @@ void gcm394_game_state::init_gameu() } m_maincpu->set_alt_tile_addressing_hack(0); + m_maincpu->set_disallow_resolution_control(); } @@ -672,4 +698,4 @@ CONS(2013, gormiti, 0, 0, base, gormiti, gormiti_game_state, empty_init, "Gio // Fun 2 Learn 3-in-1 SMART SPORTS ? // unit looks a bit like a knock-off Wii-U tablet, but much smaller -CONS( 201?, gameu50, 0, 0, base, smartfp, gcm394_game_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 201?, gameu50, 0, 0, gameu, tkmag220, gameu_handheld_game_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From a9da001884d086a34ad623be52f74d772cf64c0e Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 13:41:40 +0100 Subject: [PATCH 35/38] don't printf --- src/mame/tvgames/generalplus_gpl16250.h | 4 ++++ src/mame/tvgames/generalplus_gpl16250_rom.cpp | 20 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/mame/tvgames/generalplus_gpl16250.h b/src/mame/tvgames/generalplus_gpl16250.h index 2359f06209807..700f149db35cf 100644 --- a/src/mame/tvgames/generalplus_gpl16250.h +++ b/src/mame/tvgames/generalplus_gpl16250.h @@ -159,10 +159,14 @@ class gameu_handheld_game_state : public gcm394_game_state private: + void gameu_porta_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); void gameu_portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void gameu_portc_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); void gameu_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + uint16_t m_porta_data = 0U; uint16_t m_portb_data = 0U; + uint16_t m_portc_data = 0U; uint16_t m_portd_data = 0U; }; diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index 96294d980492c..a2c36ddce254a 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -620,7 +620,12 @@ void gameu_handheld_game_state::gameu(machine_config &config) { gcm394_game_state::base(config); +// m_maincpu->portb_out().set(FUNC(gameu_handheld_game_state::gameu_portb_w)); // portb is very busy on startup + // portd is very busy on startup + + m_maincpu->porta_out().set(FUNC(gameu_handheld_game_state::gameu_porta_w)); m_maincpu->portb_out().set(FUNC(gameu_handheld_game_state::gameu_portb_w)); + m_maincpu->portc_out().set(FUNC(gameu_handheld_game_state::gameu_portc_w)); m_maincpu->portd_out().set(FUNC(gameu_handheld_game_state::gameu_portd_w)); m_screen->set_visarea(0, (160)-1, 0, (120)-1); @@ -632,16 +637,27 @@ void gormiti_game_state::machine_reset() m_maincpu->set_alt_tile_addressing_hack(1); } +void gameu_handheld_game_state::gameu_porta_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + logerror("%s: porta write %04x\n", machine().describe_context(), data); + m_porta_data = data; +} + void gameu_handheld_game_state::gameu_portb_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - logerror("%s: portb write %04x\n", machine().describe_context().c_str(), data); + logerror("%s: portb write %04x\n", machine().describe_context(), data); m_portb_data = data; } +void gameu_handheld_game_state::gameu_portc_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + logerror("%s: portc write %04x\n", machine().describe_context(), data); + m_portc_data = data; +} void gameu_handheld_game_state::gameu_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - printf("%s: portd write %04x\n", machine().describe_context().c_str(), data); + logerror("%s: portd write %04x\n", machine().describe_context(), data); m_portd_data = data; } From f72dd9d909c69af305fa1a785139522c48d5e2bb Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 15:41:57 +0100 Subject: [PATCH 36/38] gameu50 - allow some of the games to be selected, fix resolution --- src/mame/tvgames/generalplus_gpl16250.h | 3 ++ src/mame/tvgames/generalplus_gpl16250_rom.cpp | 35 +++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/mame/tvgames/generalplus_gpl16250.h b/src/mame/tvgames/generalplus_gpl16250.h index 700f149db35cf..c4ced8fed8d79 100644 --- a/src/mame/tvgames/generalplus_gpl16250.h +++ b/src/mame/tvgames/generalplus_gpl16250.h @@ -149,6 +149,8 @@ class gameu_handheld_game_state : public gcm394_game_state { } + virtual uint16_t cs0_r(offs_t offset) override; + void gameu(machine_config &config); void init_gameu(); @@ -158,6 +160,7 @@ class gameu_handheld_game_state : public gcm394_game_state virtual void machine_reset() override; private: + uint32_t m_upperbase = 0U; void gameu_porta_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); void gameu_portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index a2c36ddce254a..973bfdbb0aef1 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -628,7 +628,7 @@ void gameu_handheld_game_state::gameu(machine_config &config) m_maincpu->portc_out().set(FUNC(gameu_handheld_game_state::gameu_portc_w)); m_maincpu->portd_out().set(FUNC(gameu_handheld_game_state::gameu_portd_w)); - m_screen->set_visarea(0, (160)-1, 0, (120)-1); + m_screen->set_visarea(0, (160)-1, 0, (128)-1); } void gormiti_game_state::machine_reset() @@ -637,6 +637,11 @@ void gormiti_game_state::machine_reset() m_maincpu->set_alt_tile_addressing_hack(1); } +uint16_t gameu_handheld_game_state::cs0_r(offs_t offset) +{ + return m_romregion[(offset & 0x00fffff) + m_upperbase]; +} + void gameu_handheld_game_state::gameu_porta_w(offs_t offset, uint16_t data, uint16_t mem_mask) { logerror("%s: porta write %04x\n", machine().describe_context(), data); @@ -657,14 +662,24 @@ void gameu_handheld_game_state::gameu_portc_w(offs_t offset, uint16_t data, uint void gameu_handheld_game_state::gameu_portd_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - logerror("%s: portd write %04x\n", machine().describe_context(), data); + // hacky, maybe we need better direction/attribute handling on the ports in the core? m_portd_data = data; + //int pc = m_maincpu->pc(); + //if ((pc != 0x2b49) && (pc != 0x2b34) && (pc != 0x2b8b) && (pc != 0x2bc0)) + { + printf("%s: portd write %04x %04x\n", machine().describe_context().c_str(), data, mem_mask); + + m_upperbase = (data & 0xfc00) >> 10; + m_upperbase *= 0x40000; + } + } void gameu_handheld_game_state::machine_reset() { gcm394_game_state::machine_reset(); m_maincpu->set_alt_tile_addressing_hack(1); + m_upperbase = 0; } void gameu_handheld_game_state::init_gameu() @@ -684,6 +699,22 @@ void gameu_handheld_game_state::init_gameu() m_maincpu->set_alt_tile_addressing_hack(0); m_maincpu->set_disallow_resolution_control(); + + // why do we need these? it will jump to 0 after the menu selection (prior to fadeout and bank select) otherwise, which can't be correct + + ROM[0x19c9a / 2] = 0xF165; + ROM[0x19c9c / 2] = 0xF165; + ROM[0x19c9e / 2] = 0xF165; + + ROM[0x19cb8 / 2] = 0xF165; + ROM[0x19cba / 2] = 0xF165; + ROM[0x19cbc / 2] = 0xF165; + + ROM[0x19cd4 / 2] = 0xF165; + ROM[0x19cd6 / 2] = 0xF165; + ROM[0x19cd8 / 2] = 0xF165; + + } From 292f62943e425054993f8a65a29740f240751b6f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 15:51:13 +0100 Subject: [PATCH 37/38] better inputs --- src/mame/tvgames/generalplus_gpl16250_rom.cpp | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index 973bfdbb0aef1..9173cb8311abd 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -366,6 +366,25 @@ static INPUT_PORTS_START( tkmag220 ) INPUT_PORTS_END +static INPUT_PORTS_START( gameu ) + PORT_START("IN0") + PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN1") + PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") // P2 inputs are listed in test mode, but unit has no 2nd set of controls + PORT_BIT( 0x001f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END static INPUT_PORTS_START( beijuehh ) PORT_START("IN0") @@ -667,7 +686,7 @@ void gameu_handheld_game_state::gameu_portd_w(offs_t offset, uint16_t data, uint //int pc = m_maincpu->pc(); //if ((pc != 0x2b49) && (pc != 0x2b34) && (pc != 0x2b8b) && (pc != 0x2bc0)) { - printf("%s: portd write %04x %04x\n", machine().describe_context().c_str(), data, mem_mask); + logerror("%s: portd write %04x %04x\n", machine().describe_context(), data, mem_mask); m_upperbase = (data & 0xfc00) >> 10; m_upperbase *= 0x40000; @@ -745,4 +764,4 @@ CONS(2013, gormiti, 0, 0, base, gormiti, gormiti_game_state, empty_init, "Gio // Fun 2 Learn 3-in-1 SMART SPORTS ? // unit looks a bit like a knock-off Wii-U tablet, but much smaller -CONS( 201?, gameu50, 0, 0, gameu, tkmag220, gameu_handheld_game_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 201?, gameu50, 0, 0, gameu, gameu, gameu_handheld_game_state, init_gameu, "YSN", "Play Portable Color GameU+ (50-in-1) (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From eed0cab8ed5c7afef319081992ea689a7dd25887 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 3 Oct 2024 16:09:25 +0100 Subject: [PATCH 38/38] run at 30hz, not 60, although maybe this is controlled in some other way --- src/mame/tvgames/generalplus_gpl16250_rom.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mame/tvgames/generalplus_gpl16250_rom.cpp b/src/mame/tvgames/generalplus_gpl16250_rom.cpp index 9173cb8311abd..30af9ca34be35 100644 --- a/src/mame/tvgames/generalplus_gpl16250_rom.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_rom.cpp @@ -647,7 +647,8 @@ void gameu_handheld_game_state::gameu(machine_config &config) m_maincpu->portc_out().set(FUNC(gameu_handheld_game_state::gameu_portc_w)); m_maincpu->portd_out().set(FUNC(gameu_handheld_game_state::gameu_portd_w)); - m_screen->set_visarea(0, (160)-1, 0, (128)-1); + m_screen->set_refresh_hz(30); // too fast at 60, but maybe it's for other reasons? + m_screen->set_visarea(0, (160)-1, 0, (128)-1); // appears to be the correct resolution for the LCD panel } void gormiti_game_state::machine_reset()