From 135df12a819889a29527ae4e8008312ebcfa5a2b Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 26 Oct 2025 00:06:00 +0100 Subject: [PATCH 01/18] fix ordering of some ROMs where address lines were connected incorrectly when dumping (as confirmed by further research) --- src/mame/nintendo/nes_vt369_vtunknown.cpp | 49 +++-------------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 61b573cba3a2d..7b1eb3256a820 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -626,15 +626,7 @@ ROM_END ROM_START( rtvgc300 ) ROM_REGION( 0x8000000, "mainrom", 0 ) - // some of the higher address lines might be swapped - ROM_LOAD( "lexibook300.bin", 0x00000, 0x0800000, CRC(015c4067) SHA1(a12986c4a366a23c4c7ca7b3d33e421a8dfdffc0) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "jg7800.bin", 0x00000, 0x8000000, CRC(44f50d4c) SHA1(39ad63220ddd72c5a77f125614efa77501efe59f) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END @@ -683,29 +675,15 @@ ROM_END ROM_START( lxcmcysw ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - ROM_LOAD( "jl2365swr-1.u2", 0x0000000, 0x0800000, CRC(60ece391) SHA1(655de6b36ba596d873de2839522b948ccf45e006) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "starwars_jl2365swr-1.u2", 0x00000, 0x4000000, CRC(a34669db) SHA1(fc5c432492473cd0896ef95a67832d422294925a) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END ROM_START( lxcmcyfz ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip - ROM_LOAD( "jl2365_frozen.u1", 0x00000, 0x0800000, CRC(64d4c708) SHA1(1bc2d161326ce3039ab9ba46ad62695060cfb2e1) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip/ + ROM_LOAD( "frozen_jl2365.u1", 0x00000, 0x4000000, CRC(41c64019) SHA1(17ec755d5f4afc39c2863b75367e6368c039f347) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END @@ -735,15 +713,7 @@ ROM_END ROM_START( lxcmcypj ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - // sub-board was marked for 1GB capacity (A0-A25 address lines), but only address lines A0-A24 are connected to the chip - ROM_LOAD( "cob66-1g-new02.u4", 0x00000, 0x0800000, CRC(78149671) SHA1(00dab8c0919e909e910525c18142e6a195b364f8) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "pjmasks_cob66-1g-new02.u4", 0x00000, 0x4000000, CRC(d4380394) SHA1(d2b467db12ef541ab5e102ac095a84a64e66d4fe) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END @@ -822,14 +792,7 @@ ROM_END ROM_START( lxcmc250 ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip - ROM_LOAD( "cca250in1.u1", 0x00000, 0x0800000, CRC(6ccd6ad6) SHA1(fafed339097c3d1538faa306021a8373c1b799b3) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "250in1_cca250in1.u1", 0x00000, 0x4000000, CRC(54335d7c) SHA1(ecddc74b751806a61551d495dc733a642515f719) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END From 9118654ebbde8d96e7b86e67adf36b639cfde214 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 26 Oct 2025 00:11:25 +0100 Subject: [PATCH 02/18] added a clone --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 14a7f8202d65c..d623d909652eb 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35797,6 +35797,7 @@ lxcmcydp lxcmcydpn lxcmcyfd lxcmcyfz +lxcmcyfza lxcmcypj lxcmcypp lxcmcyppa diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 7b1eb3256a820..e2d5a9f368175 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -682,12 +682,20 @@ ROM_END ROM_START( lxcmcyfz ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip/ + // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip ROM_LOAD( "frozen_jl2365.u1", 0x00000, 0x4000000, CRC(41c64019) SHA1(17ec755d5f4afc39c2863b75367e6368c039f347) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcmcyfza ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl2365fz-6.u2", 0x00000, 0x4000000, CRC(8d365623) SHA1(1484295264601113c2edd31a7b673266f10157d7) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + + ROM_START( lxcmcydp ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip @@ -1206,11 +1214,12 @@ CONS( 2012, lxcmcydp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_s // JL2365 models (150-in-1 versions) CONS( 200?, lxcmcysw, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Star Wars Rebels (JL2365SW)", MACHINE_NOT_WORKING ) CONS( 200?, lxcmcyfz, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ)", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcyfza, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ-6)", MACHINE_NOT_WORKING ) // reissue in older case style, with bitswapping CONS( 2018, lxcmcypj, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - PJ Masks (JL2365PJM)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyba, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Barbie (JL2365BB)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcycr, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars (JL2365DC)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyfd, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Finding Dory", MACHINE_NOT_WORKING ) -CONS( 2018, lxcmcyppa, lxcmcypp, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2365PA-5)", MACHINE_NOT_WORKING ) // yes, it has the bitswap even if it's a JL2365 unit +CONS( 2018, lxcmcyppa, lxcmcypp, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2365PA-5)", MACHINE_NOT_WORKING ) // also has the bitswap even if it's a JL2365 unit // JL2367 models (150-in-1 versions, newer case style) CONS( 2018, lxcmcypp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2367PA)", MACHINE_NOT_WORKING ) CONS( 2020, lxcmcybt, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Batman (JL2367BAT)", MACHINE_NOT_WORKING ) From 6cc2caa86e646d9343f000fda75c3460810542ce Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 26 Oct 2025 13:16:47 +0000 Subject: [PATCH 03/18] another Frozen set --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d623d909652eb..7cc19c7e8a780 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35798,6 +35798,7 @@ lxcmcydpn lxcmcyfd lxcmcyfz lxcmcyfza +lxcmcyfzb lxcmcypj lxcmcypp lxcmcyppa diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index e2d5a9f368175..8b6b41773b87c 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -695,6 +695,12 @@ ROM_START( lxcmcyfza ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcmcyfzb ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl2367fz.u2", 0x00000, 0x4000000, CRC(c6fee0f2) SHA1(55ece7cebeda87eb0a7461073192e25944ffacc8) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END ROM_START( lxcmcydp ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) @@ -1214,17 +1220,19 @@ CONS( 2012, lxcmcydp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_s // JL2365 models (150-in-1 versions) CONS( 200?, lxcmcysw, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Star Wars Rebels (JL2365SW)", MACHINE_NOT_WORKING ) CONS( 200?, lxcmcyfz, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ)", MACHINE_NOT_WORKING ) -CONS( 200?, lxcmcyfza, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ-6)", MACHINE_NOT_WORKING ) // reissue in older case style, with bitswapping CONS( 2018, lxcmcypj, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - PJ Masks (JL2365PJM)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyba, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Barbie (JL2365BB)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcycr, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars (JL2365DC)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyfd, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Finding Dory", MACHINE_NOT_WORKING ) -CONS( 2018, lxcmcyppa, lxcmcypp, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2365PA-5)", MACHINE_NOT_WORKING ) // also has the bitswap even if it's a JL2365 unit +// later JL2365 models (with added bitswap) +CONS( 200?, lxcmcyfza, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ-6)", MACHINE_NOT_WORKING ) +CONS( 2018, lxcmcyppa, lxcmcypp, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2365PA-5)", MACHINE_NOT_WORKING ) // JL2367 models (150-in-1 versions, newer case style) CONS( 2018, lxcmcypp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2367PA)", MACHINE_NOT_WORKING ) CONS( 2020, lxcmcybt, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Batman (JL2367BAT)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcydpn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Disney Princess (JL2367DP, 150-in-1)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyspn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Spider-Man (JL2367SP, 150-in-1)", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcyfzb, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Frozen (JL2367FZ)", MACHINE_NOT_WORKING ) // JL1895 models, Cyber Arcade Pocket. This make strange use of the LCDC, the menus are vertical (so must be copied to the LCD rotated) but the games are horizontal as usual CONS( 201?, lxcypkdp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Cyber Arcade Pocket - Disney Princess (JL1895DP)", MACHINE_NOT_WORKING ) @@ -1235,7 +1243,7 @@ CONS( 200?, lxccminn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty CONS( 200?, lxccplan, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Console Colour - Disney's Planes (JL2800PL)", MACHINE_NOT_WORKING ) // similar menus to the lxccminn/lxccplan sets CONS( 2013, lxcmcy, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - 200 in 1 (JL2355)", MACHINE_NOT_WORKING ) -CONS( 2012, dgun2561, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "dreamGEAR", "My Arcade Portable Gaming System with 140 Games (DGUN-2561)", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme +CONS( 2012, dgun2561, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "dreamGEAR", "My Arcade Portable Gaming System with 140 Games (DGUN-2561)", MACHINE_NOT_WORKING ) // GB-NO13-Main-VT389-2 on PCBs - uses higher resolution mode (twice usual h-res?) CONS( 2016, rtvgc300, 0, 0, vt36x_32mb_2banks_lexi300, vt369, vt36x_state, empty_init, "Lexibook", "Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING ) From 3f4ffecce47aa26eb4ada261a997a1237ba51e6f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 26 Oct 2025 15:25:05 +0000 Subject: [PATCH 04/18] micro arcade 250-in-1 --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt32.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 7cc19c7e8a780..7a4ec8ed9b159 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35751,6 +35751,7 @@ lxpcsp matet100 matet220 matet300 +micac250 myaasa myaass mymman diff --git a/src/mame/nintendo/nes_vt32.cpp b/src/mame/nintendo/nes_vt32.cpp index fd8b8e138a59d..0550eeb612d27 100644 --- a/src/mame/nintendo/nes_vt32.cpp +++ b/src/mame/nintendo/nes_vt32.cpp @@ -459,6 +459,11 @@ ROM_START( k10_2l ) ROM_LOAD( "s29gl128n10tfi01.u4", 0x00000, 0x1000000, CRC(3ca75ab7) SHA1(a4e4f939c26b4a2f361261fa8b5303c6eeee9c41) ) ROM_END +ROM_START( micac250 ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "250in1microarcade.u2", 0x000000, 0x1000000, CRC(3bb2a65c) SHA1(294eb2165466981a79e1d4ec535038e73fbca4de) ) +ROM_END + } // anonymous namespace @@ -518,3 +523,4 @@ CONS( 2020, lxpcpp, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empt CONS( 201?, k10_5l, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "Games Power 500-in-1 Ultra Thin Handheld Game (K10) (5 languages)", MACHINE_NOT_WORKING ) CONS( 201?, k10_2l, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "Games Power 500-in-1 Ultra Thin Handheld Game (K10) (2 languages)", MACHINE_NOT_WORKING ) +CONS( 202?, micac250, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "Micro Arcade 250-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) From 3af6aacac4d2c623c75c7c71040fc4a5b35c8b4a Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 26 Oct 2025 22:29:38 +0000 Subject: [PATCH 05/18] added jl2377 --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 7a4ec8ed9b159..4a417500625a2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35783,6 +35783,7 @@ h12p1000 hkb502 hkb502a jl2050 +jl2377 lexi30 lpgm240 lxcap diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 8b6b41773b87c..a68dc539c9631 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -673,6 +673,13 @@ ROM_START( lxcmcy ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( jl2377 ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl2377.u2", 0x00000, 0x4000000, CRC(cb3643c8) SHA1(c0d6211eddf28d1541e791d0bd3e5aef9f1d4d46) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + ROM_START( lxcmcysw ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) ROM_LOAD( "starwars_jl2365swr-1.u2", 0x00000, 0x4000000, CRC(a34669db) SHA1(fc5c432492473cd0896ef95a67832d422294925a) ) @@ -1245,6 +1252,9 @@ CONS( 200?, lxccplan, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty CONS( 2013, lxcmcy, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - 200 in 1 (JL2355)", MACHINE_NOT_WORKING ) CONS( 2012, dgun2561, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "dreamGEAR", "My Arcade Portable Gaming System with 140 Games (DGUN-2561)", MACHINE_NOT_WORKING ) +// JL2367-V1.03 20200228 on PCB, JL2377 on case +CONS( 2020, jl2377, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - 250 in 1 (JL2377)", MACHINE_NOT_WORKING ) + // GB-NO13-Main-VT389-2 on PCBs - uses higher resolution mode (twice usual h-res?) CONS( 2016, rtvgc300, 0, 0, vt36x_32mb_2banks_lexi300, vt369, vt36x_state, empty_init, "Lexibook", "Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING ) CONS( 2017, rtvgc300fz,0, 0, vt36x_32mb_2banks_lexi300, vt369, vt36x_state, empty_init, "Lexibook", "Retro TV Game Console - Frozen - 300 Games", MACHINE_NOT_WORKING ) From 20a357584c405f97db4e82f66bfc1c714eea96be Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 27 Oct 2025 12:24:13 +0000 Subject: [PATCH 06/18] added Compact Cyber Arcade - Cars (JL2360DC-1, 120-in-1) --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4a417500625a2..b53a2999c149b 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35794,6 +35794,7 @@ lxcmc250 lxcmcy lxcmcyba lxcmcybt +lxcmcyco lxcmcycr lxcmcydp lxcmcydpn diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index a68dc539c9631..cb026eeaf5c3c 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -717,6 +717,22 @@ ROM_START( lxcmcydp ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcmcyco ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + // TODO: check if address lines really are meant to be like this for these 120-in-1 units + ROM_LOAD( "jl2360dc-1.u1", 0x00000, 0x0800000, CRC(30178eaf) SHA1(f9f4b48b192d3fc84dc7e1385b36096c342015aa) ) + ROM_CONTINUE(0x1000000, 0x0800000) + ROM_CONTINUE(0x0800000, 0x0800000) + ROM_CONTINUE(0x1800000, 0x0800000) + ROM_CONTINUE(0x2000000, 0x0800000) + ROM_CONTINUE(0x3000000, 0x0800000) + ROM_CONTINUE(0x2800000, 0x0800000) + ROM_CONTINUE(0x3800000, 0x0800000) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + + ROM_START( lxcmcysp ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip @@ -1222,8 +1238,8 @@ CONS( 2012, lxccatv, 0, 0, vt36x_32mb, vt369, vt36x_state, empty_init, "L // All Lexibook units below have 64Mbyte ROMs, must be externally banked, or different addressing scheme CONS( 2012, lxcmcysp, 0, 0, vt36x_32mb_2banks_lexi, vt369_rot, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Spider-Man (120-in-1)", MACHINE_NOT_WORKING | ROT270) // renders vertically, but screen stretches it to horizontal -CONS( 200?, lxcmc250, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING ) CONS( 2012, lxcmcydp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Disney Princess (120-in-1)", MACHINE_NOT_WORKING ) +CONS( 2014, lxcmcyco, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars (JL2360DC-1, 120-in-1)", MACHINE_NOT_WORKING ) // JL2365 models (150-in-1 versions) CONS( 200?, lxcmcysw, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Star Wars Rebels (JL2365SW)", MACHINE_NOT_WORKING ) CONS( 200?, lxcmcyfz, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Frozen (JL2365FZ)", MACHINE_NOT_WORKING ) @@ -1252,6 +1268,8 @@ CONS( 200?, lxccplan, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty CONS( 2013, lxcmcy, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - 200 in 1 (JL2355)", MACHINE_NOT_WORKING ) CONS( 2012, dgun2561, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "dreamGEAR", "My Arcade Portable Gaming System with 140 Games (DGUN-2561)", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmc250, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING ) + // JL2367-V1.03 20200228 on PCB, JL2377 on case CONS( 2020, jl2377, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - 250 in 1 (JL2377)", MACHINE_NOT_WORKING ) From 17b1a283559a91bfad275cb6e079af1917756cba Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 27 Oct 2025 13:39:03 +0000 Subject: [PATCH 07/18] added Spider-Man (JL2350SP, 120-in-1) --- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b53a2999c149b..27965bd476710 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35806,6 +35806,7 @@ lxcmcypj lxcmcypp lxcmcyppa lxcmcysp +lxcmcyspa lxcmcyspn lxcmcysw lxcyber diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index cb026eeaf5c3c..74339801b3761 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -719,7 +719,6 @@ ROM_END ROM_START( lxcmcyco ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - // TODO: check if address lines really are meant to be like this for these 120-in-1 units ROM_LOAD( "jl2360dc-1.u1", 0x00000, 0x0800000, CRC(30178eaf) SHA1(f9f4b48b192d3fc84dc7e1385b36096c342015aa) ) ROM_CONTINUE(0x1000000, 0x0800000) ROM_CONTINUE(0x0800000, 0x0800000) @@ -741,6 +740,20 @@ ROM_START( lxcmcysp ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcmcyspa ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl2350sp.u2", 0x00000, 0x0800000, CRC(e7159f25) SHA1(92a168f178dcc5cecae60d504d6d329ce1b66b01) ) + ROM_CONTINUE(0x1000000, 0x0800000) + ROM_CONTINUE(0x0800000, 0x0800000) + ROM_CONTINUE(0x1800000, 0x0800000) + ROM_CONTINUE(0x2000000, 0x0800000) + ROM_CONTINUE(0x3000000, 0x0800000) + ROM_CONTINUE(0x2800000, 0x0800000) + ROM_CONTINUE(0x3800000, 0x0800000) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + ROM_START( lxcmcycr ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) ROM_LOAD( "lexibook cars.bin", 0x00000, 0x4000000, CRC(198fe11b) SHA1(5e35caa3fc319ec69812c187a3ec89f01749f749) ) @@ -1238,6 +1251,7 @@ CONS( 2012, lxccatv, 0, 0, vt36x_32mb, vt369, vt36x_state, empty_init, "L // All Lexibook units below have 64Mbyte ROMs, must be externally banked, or different addressing scheme CONS( 2012, lxcmcysp, 0, 0, vt36x_32mb_2banks_lexi, vt369_rot, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Spider-Man (120-in-1)", MACHINE_NOT_WORKING | ROT270) // renders vertically, but screen stretches it to horizontal +CONS( 2012, lxcmcyspa, lxcmcysp, 0, vt36x_32mb_2banks_lexi, vt369_rot, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Spider-Man (JL2350SP, 120-in-1)", MACHINE_NOT_WORKING | ROT270) CONS( 2012, lxcmcydp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Disney Princess (120-in-1)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyco, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars (JL2360DC-1, 120-in-1)", MACHINE_NOT_WORKING ) // JL2365 models (150-in-1 versions) From 14f3e6f35c717466c1f28873167e574a89070488 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 27 Oct 2025 16:31:53 +0000 Subject: [PATCH 08/18] Team Europe confirmed these sub-boards have a slightly different pinout, so use correct ROMs --- src/mame/nintendo/nes_vt369_vtunknown.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 74339801b3761..389ab338bf323 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -719,14 +719,7 @@ ROM_END ROM_START( lxcmcyco ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - ROM_LOAD( "jl2360dc-1.u1", 0x00000, 0x0800000, CRC(30178eaf) SHA1(f9f4b48b192d3fc84dc7e1385b36096c342015aa) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "jl2360dc-1.u1", 0x00000, 0x4000000, CRC(710fcafc) SHA1(bfd7dba546b62f1ea337d6f7f8f32ffccffa0a0d) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END @@ -742,14 +735,7 @@ ROM_END ROM_START( lxcmcyspa ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) - ROM_LOAD( "jl2350sp.u2", 0x00000, 0x0800000, CRC(e7159f25) SHA1(92a168f178dcc5cecae60d504d6d329ce1b66b01) ) - ROM_CONTINUE(0x1000000, 0x0800000) - ROM_CONTINUE(0x0800000, 0x0800000) - ROM_CONTINUE(0x1800000, 0x0800000) - ROM_CONTINUE(0x2000000, 0x0800000) - ROM_CONTINUE(0x3000000, 0x0800000) - ROM_CONTINUE(0x2800000, 0x0800000) - ROM_CONTINUE(0x3800000, 0x0800000) + ROM_LOAD( "jl2350sp.u2", 0x00000, 0x4000000, CRC(54c66fe0) SHA1(44d71881c0edb2c913f144fe0da8026958c6cfbb) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END @@ -1202,6 +1188,7 @@ void vt369_state::init_lxcmcypp() void vt369_state::init_dgun2572() { + // this might simply be due to an incorrect pinout when dumping u8 *rom = memregion("mainrom")->base(); for (offs_t base = 0; base < 0x2000000; base += 0x200) { From c930e4639f4b5aa1a7d0b08676ecf93c432bf18a Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 27 Oct 2025 21:33:57 +0000 Subject: [PATCH 09/18] added Cyber Arcade TV - Ferrari (JL2500FE) --- src/mame/mame.lst | 1 + src/mame/tvgames/spg2xx_lexibook.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 27965bd476710..4d73f369e90eb 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -47413,6 +47413,7 @@ tvtchsb @source:tvgames/spg2xx_lexibook.cpp arcade3d +cybrtvfe lexizeus lexiseal discpal diff --git a/src/mame/tvgames/spg2xx_lexibook.cpp b/src/mame/tvgames/spg2xx_lexibook.cpp index 71c486b64a4ad..5f39840384f7c 100644 --- a/src/mame/tvgames/spg2xx_lexibook.cpp +++ b/src/mame/tvgames/spg2xx_lexibook.cpp @@ -44,6 +44,18 @@ class spg2xx_lexiseal_game_state : public spg2xx_lexizeus_game_state virtual void portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override; }; +class spg2xx_cybrtvfe_game_state : public spg2xx_lexiseal_game_state +{ +public: + spg2xx_cybrtvfe_game_state(const machine_config &mconfig, device_type type, const char *tag) : + spg2xx_lexiseal_game_state(mconfig, type, tag) + { } + +protected: + virtual void portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override; +}; + + class spg2xx_vsplus_game_state : public spg2xx_lexizeus_game_state { public: @@ -258,6 +270,12 @@ void spg2xx_lexiseal_game_state::portb_w(offs_t offset, uint16_t data, uint16_t switch_bank(2); } +void spg2xx_cybrtvfe_game_state::portb_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + int bank = data & mem_mask; + logerror("%s: portb_w %04x %04x - %04x\n", machine().describe_context(), data, mem_mask, bank); + switch_bank(bank & 0x07); +} void spg2xx_vsplus_game_state::portb_w(offs_t offset, uint16_t data, uint16_t mem_mask) { @@ -368,6 +386,11 @@ ROM_START( disppal ) ROM_LOAD16_WORD_SWAP( "vgpocketdisney.u3", 0x0000, 0x400000, CRC(051bd073) SHA1(e453677437206e11fb50b8b86853e466978338a2) ) ROM_END +ROM_START( cybrtvfe ) + ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "jl2500fe.u6", 0x0000, 0x4000000, CRC(2fce6685) SHA1(6fc329204fdb401c72884349f29201fb783fe2ea) ) +ROM_END + /* VG Caplet ROM pinout from Sean Riddle (2 ROMs in single package) @@ -437,6 +460,7 @@ CONS( 200?, arcade3d, 0, 0, lexizeus, lexiseal, spg2xx_lexizeu CONS( 200?, vsplus, 0, 0, vsplus, vsplus, spg2xx_vsplus_game_state, init_vsplus, " / JungleTac", "Vs Power Plus 30-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 2010, cybrtvfe, 0, 0, lexiseal, lexiseal, spg2xx_cybrtvfe_game_state, init_zeus, "Lexibook", "Cyber Arcade TV - Ferrari (JL2500FE)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited / JungleTac", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap // There are versions of the Seal 50-in-1 that actually show Lexibook on the boot screen rather than it just being on the unit. The Seal name was also used for some VT systems From a4925ad13835564d8e50215a643b56462190a724 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 27 Oct 2025 21:34:51 +0000 Subject: [PATCH 10/18] forgot to save --- src/mame/tvgames/spg2xx_lexibook.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/tvgames/spg2xx_lexibook.cpp b/src/mame/tvgames/spg2xx_lexibook.cpp index 5f39840384f7c..d0659ac6b34ea 100644 --- a/src/mame/tvgames/spg2xx_lexibook.cpp +++ b/src/mame/tvgames/spg2xx_lexibook.cpp @@ -460,6 +460,7 @@ CONS( 200?, arcade3d, 0, 0, lexizeus, lexiseal, spg2xx_lexizeu CONS( 200?, vsplus, 0, 0, vsplus, vsplus, spg2xx_vsplus_game_state, init_vsplus, " / JungleTac", "Vs Power Plus 30-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +// marked as SPG260 CONS( 2010, cybrtvfe, 0, 0, lexiseal, lexiseal, spg2xx_cybrtvfe_game_state, init_zeus, "Lexibook", "Cyber Arcade TV - Ferrari (JL2500FE)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited / JungleTac", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap From 6010d8cdf6dfbd911cdfe1786c999c7ad9f8750f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 29 Oct 2025 20:17:40 +0000 Subject: [PATCH 11/18] added jl1810gr --- src/devices/video/ppu2c0x_vt.cpp | 5 +++-- src/mame/mame.lst | 1 + src/mame/nintendo/nes_vt369_vtunknown.cpp | 13 +++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/devices/video/ppu2c0x_vt.cpp b/src/devices/video/ppu2c0x_vt.cpp index d2e10b9683990..7ae95c59321bc 100644 --- a/src/devices/video/ppu2c0x_vt.cpp +++ b/src/devices/video/ppu2c0x_vt.cpp @@ -746,8 +746,9 @@ void ppu_vt3xx_device::lcdc_regs_w(offs_t offset, u8 data) static const vid_mode mode_table[] = { // configurations used for lower resolution output { 0, 159, 0, 127, { 0xa0, 0xff, 0x00, 0x40, 0xff, 0x04, 0x00, 0xa8, 0x04, 0x0f }, }, - { 0, 199, 0, 199, { 0xdc, 0xff, 0x00, 0x58, 0xff, 0x04, 0x10, 0xa8, 0x04, 0x00 }, }, // hkb502 menu, uncertain dimensions - { 0, 127, 0, 159, { 0x80, 0x80, 0x00, 0x50, 0xff, 0x04, 0x00, 0xaa, 0x08, 0x00 }, }, // lexi30 menu + { 0, 199, 0, 199, { 0xdc, 0xff, 0x00, 0x58, 0xff, 0x04, 0x10, 0xa8, 0x04, 0x00 }, }, // hkb502 menu, uncertain dimensions + { 0, 127, 0, 159, { 0x80, 0x80, 0x00, 0x50, 0xff, 0x04, 0x00, 0xaa, 0x08, 0x00 }, }, // lexi30 menu + { 0, 127, 0, 159, { 0x80, 0xff, 0x00, 0x50, 0xff, 0x04, 0x00, 0xa6, 0x04, 0x00 }, }, // jl1810gr { 0, 127, 0, 159, { 0x80, 0x3f, 0x00, 0x50, 0xff, 0x69, 0x00, 0x54, 0x08, 0x00 }, }, // gcs2mgp // lxcypkdp uses this on the menus, they must rotate the rendering somehow as this is vertical and the games are horizontal! diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4d73f369e90eb..f84c1005e1f08 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35782,6 +35782,7 @@ gtct885 h12p1000 hkb502 hkb502a +jl1810gr jl2050 jl2377 lexi30 diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 389ab338bf323..2a40a6fcbeacc 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -1057,6 +1057,13 @@ ROM_START( lexi30 ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( jl1810gr ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "jl1810gr.u3", 0x00000, 0x1000000, CRC(c0a62d05) SHA1(1d5536e96d65ee9a0aab2fd5b155ee87d5eb2938) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + ROM_START( matet10 ) ROM_REGION( 0x200000, "mainrom", 0 ) ROM_LOAD( "tetriskeychain_p25q16sh_856015.bin", 0x00000, 0x200000, CRC(7a7251ea) SHA1(7ace8482a54f6b06982a90328779c21266d864fa) ) @@ -1231,10 +1238,12 @@ CONS( 201?, dvnimbus, 0, 0, vt369_unk_16mb, vt369, vt36x_state, empty_ ****************************************************************************************************************/ -CONS( 2012, lexi30, 0,0, vt36x_8mb, vt369_rot, vt36x_state, empty_init, "Lexibook", "Arcade Center (JL1800_01)", MACHINE_NOT_WORKING | ROT270 ) +CONS( 2012, lexi30, 0, 0, vt36x_8mb, vt369_rot, vt36x_state, empty_init, "Lexibook", "Arcade Center - 30-in-1 (JL1800_01)", MACHINE_NOT_WORKING | ROT270 ) +// Q2 1.8 VER1.2 2012.03.18 on PCB +CONS( 2012, jl1810gr, 0, 0, vt36x_16mb, vt369_rot, vt36x_state, empty_init, "Lexibook", "Arcade Center - 60-in-1 (JL1810GR)", MACHINE_NOT_WORKING | ROT270 ) -CONS( 2012, lxccatv, 0, 0, vt36x_32mb, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade TV - 120 in 1 (JL2370)", MACHINE_NOT_WORKING ) // 32MByte ROM, 2011 on case, 2012 on PCB +CONS( 2012, lxccatv, 0, 0, vt36x_32mb, vt369, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade TV - 120 in 1 (JL2370)", MACHINE_NOT_WORKING ) // 32MByte ROM, 2011 on case, 2012 on PCB // All Lexibook units below have 64Mbyte ROMs, must be externally banked, or different addressing scheme CONS( 2012, lxcmcysp, 0, 0, vt36x_32mb_2banks_lexi, vt369_rot, vt36x_state, empty_init, "Lexibook", "Compact Cyber Arcade - Spider-Man (120-in-1)", MACHINE_NOT_WORKING | ROT270) // renders vertically, but screen stretches it to horizontal From bb548495e7032ae5d0aa330c3271d1bed1880875 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 30 Oct 2025 12:17:45 +0000 Subject: [PATCH 12/18] these have been seen with ROMs of the expected size too, so seems Lexibook just used whatever was lying around, even if it was bigger than needed, then only half-programmed some of them. --- src/mame/nintendo/nes_vt369_vtunknown.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index 2a40a6fcbeacc..c38ee030c6d78 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -834,17 +834,17 @@ ROM_START( lxcmc250 ) // all games selectable ROM_END ROM_START( lxccminn ) // all games selectable - ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was hardwired to only be able to address the lower 64MByte, was rewired to also dump upper half when dumping, upper half contains only garbage, hence ROM_IGNORE - ROM_LOAD( "minnie_lexibook.bin", 0x00000, 0x4000000, CRC(3f8e5a69) SHA1(c9f11f3e5f9b73832a191f4d1620a85c1b70f79e) ) - ROM_IGNORE(0x4000000) + ROM_REGION( 0x4000000, "mainrom", 0 ) + // has also been seen with double sized ROM, but 2nd half only contained garbage and upper pin wasn't connected + ROM_LOAD( "minnie_lexibook.bin", 0x00000, 0x4000000, CRC(1434460c) SHA1(9a0951f630d5412172e0a912d043897e4b8e9007) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END ROM_START( lxccplan ) // all games selectable - ROM_REGION( 0x4000000, "mainrom", 0 ) // sub-board was hardwired to only be able to address the lower 64MByte, was rewired to also dump upper half when dumping, upper half contains only garbage, hence ROM_IGNORE - ROM_LOAD( "planes_lexibook.bin", 0x00000, 0x4000000, CRC(76e1a962) SHA1(83b801c0e0e941ceb1c93e565e833b07c09412c3)) - ROM_IGNORE(0x4000000) + ROM_REGION( 0x4000000, "mainrom", 0 ) + // has also been seen with double sized ROM, but 2nd half only contained garbage and upper pin wasn't connected + ROM_LOAD( "planes_lexibook.bin", 0x00000, 0x4000000, CRC(f9ba6cfc) SHA1(e0f83f286653fb410638c01b928b391c5868d14f) ) VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END From 268930e620939f0e934bcefbbd846a561211adb0 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 1 Nov 2025 21:58:24 +0000 Subject: [PATCH 13/18] add a few more sets --- src/mame/handheld/st2302u_bbl_spi.cpp | 18 +++++- src/mame/handheld/tama_id.cpp | 71 +++++++++++++++++++++++ src/mame/mame.lst | 6 ++ src/mame/nintendo/nes_vt369_vtunknown.cpp | 8 +++ 4 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 src/mame/handheld/tama_id.cpp diff --git a/src/mame/handheld/st2302u_bbl_spi.cpp b/src/mame/handheld/st2302u_bbl_spi.cpp index 09a0731e12f80..4fa3488d96540 100644 --- a/src/mame/handheld/st2302u_bbl_spi.cpp +++ b/src/mame/handheld/st2302u_bbl_spi.cpp @@ -466,6 +466,20 @@ ROM_START(toumapet) ROM_LOAD("p25d32sh.bin", 0x000000, 0x400000, CRC(25498f00) SHA1(c5c410e29f540d7f1fd4bbb333467f8a3eaccc15) ) ROM_END +ROM_START(touma560) + INTERNAL_ROM_TYPE2 // still does't boot with this one, is it different internal ROM again, or just different mappings? + + ROM_REGION(0x800000, "spi", ROMREGION_ERASEFF) + ROM_LOAD("py25q64ha.bin", 0x000000, 0x800000, CRC(7974bf3c) SHA1(8467f869f86b51a86eb115e1408b30daa8f148e7) ) +ROM_END + +ROM_START(touma568) + INTERNAL_ROM_TYPE2 // still does't boot with this one, is it different internal ROM again, or just different mappings? + + ROM_REGION(0x800000, "spi", ROMREGION_ERASEFF) + ROM_LOAD("p25q64sh.bin", 0x000000, 0x800000, CRC(32f6d834) SHA1(c0dc5b4792a6d86822a666a0f8de7380d1905505) ) +ROM_END + ROM_START(qpet) INTERNAL_ROM_TYPE2 // not checked if it uses this ROM type @@ -513,7 +527,9 @@ CONS( 201?, dphh8633, 0, 0, bbl380_menuprot, bbl380_prot, bbl3 CONS( 2016, dphh8661, 0, 0, bbl380_menuprot, bbl380_prot, bbl380_state, empty_init, "", "Digital Pocket Hand Held System 268-in-1 - Model 8661", MACHINE_NOT_WORKING ) // from PCP? (logo on back of console) 2016 date on PCB // also has the 0xE4 XOR, also doesn't currently boot, could be yet another internal ROM -// there are also OK-560 and OK-568 models which may have different ROM or be on different hardware CONS( 2021, toumapet, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Shenzhen Shiji New Technology", "Tou ma Pet (OK-550)", MACHINE_NOT_WORKING ) +CONS( 2021, touma560, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Shenzhen Shiji New Technology", "Tou ma Pet (OK-560)", MACHINE_NOT_WORKING ) +CONS( 2021, touma568, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "Shenzhen Shiji New Technology", "Tou ma Pet (OK-568)", MACHINE_NOT_WORKING ) + CONS( 2020, qpet, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "M&D", "Q Pet (2nd version)", MACHINE_NOT_WORKING ) diff --git a/src/mame/handheld/tama_id.cpp b/src/mame/handheld/tama_id.cpp new file mode 100644 index 0000000000000..41fc30741b9a2 --- /dev/null +++ b/src/mame/handheld/tama_id.cpp @@ -0,0 +1,71 @@ +// license:BSD-3-Clause +// copyright-holders: + +// TODO: identify CPU type + +#include "emu.h" + +#include "screen.h" +#include "speaker.h" + + +namespace { + +class tama_id_state : public driver_device +{ +public: + tama_id_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_screen(*this, "screen") + { + } + + void tamaid(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + required_device m_screen; +}; + +u32 tama_id_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void tama_id_state::machine_start() +{ +} + + +static INPUT_PORTS_START(tamaid) +INPUT_PORTS_END + + +void tama_id_state::tamaid(machine_config &config) +{ + // unknown CPU + + // wrong, just so it's clear this has a screen + SCREEN(config, m_screen, SCREEN_TYPE_LCD); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(128, 128); + m_screen->set_visarea(0, 128 - 1, 0, 128 - 1); + m_screen->set_screen_update(FUNC(tama_id_state::screen_update)); + + SPEAKER(config, "speaker").front_center(); +} + +ROM_START( tamaid ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD( "mx29lb320dt.ic4", 0x000000, 0x400000, CRC(6272c24d) SHA1(f4d67409fa15873961bda684c68f3febf501218f) ) +ROM_END + +} // anonymous namespace + +// 2010/2/5 on PCB, 2009 on case +GAME( 2010, tamaid, 0, tamaid, tamaid, tama_id_state, empty_init, ROT0, "Bandai", "Tamagotchi iD (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e308bace05dd3..4353e5d877169 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19460,6 +19460,8 @@ rhhc152 supreme table108 throwbck +touma560 +touma568 toumapet @source:handheld/chessking.cpp @@ -20005,6 +20007,9 @@ talkingbb @source:handheld/talkingfb.cpp talkingfb +@source:handheld/tama_id.cpp +tamaid + @source:handheld/teammate.cpp teammate @@ -35804,6 +35809,7 @@ lxcmcyfd lxcmcyfz lxcmcyfza lxcmcyfzb +lxcmcyls lxcmcypj lxcmcypp lxcmcyppa diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index c38ee030c6d78..247c1d5ac03f1 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -768,6 +768,13 @@ ROM_START( lxcmcybt ) // all games selectable VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing ROM_END +ROM_START( lxcmcyls ) // all games selectable + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "lexibook_stitch.bin", 0x00000, 0x4000000, CRC(f15f6a2d) SHA1(b92dbf0ce12aea0b58c7a873a3c72afcae11cde5) ) + + VT3XX_INTERNAL_NO_SWAP // not verified for this set, used for testing +ROM_END + ROM_START( lxcmcyfd ) // all games selectable ROM_REGION( 0x4000000, "mainrom", 0 ) ROM_LOAD( "dory.u2", 0x00000, 0x4000000, CRC(315bf615) SHA1(3b8b9c6428084ae82a38b7bcfe029180501f1488) ) @@ -1263,6 +1270,7 @@ CONS( 2018, lxcmcyppa, lxcmcypp, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_s // JL2367 models (150-in-1 versions, newer case style) CONS( 2018, lxcmcypp, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol (JL2367PA)", MACHINE_NOT_WORKING ) CONS( 2020, lxcmcybt, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Batman (JL2367BAT)", MACHINE_NOT_WORKING ) +CONS( 2021, lxcmcyls, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Lilo & Stitch (JL2367D)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcydpn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Disney Princess (JL2367DP, 150-in-1)", MACHINE_NOT_WORKING ) CONS( 2014, lxcmcyspn, 0, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Spider-Man (JL2367SP, 150-in-1)", MACHINE_NOT_WORKING ) CONS( 200?, lxcmcyfzb, lxcmcyfz, 0, vt36x_32mb_2banks_lexi, vt369, vt36x_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Frozen (JL2367FZ)", MACHINE_NOT_WORKING ) From 0e3114bc2e6fc448c265fb2b2f754fc41309ce69 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 1 Nov 2025 22:20:50 +0000 Subject: [PATCH 14/18] 2 more --- src/mame/handheld/tama_4u.cpp | 72 ++++++++++++++++++++++++++++++++++ src/mame/handheld/tama_id.cpp | 2 +- src/mame/handheld/tama_mix.cpp | 71 +++++++++++++++++++++++++++++++++ src/mame/mame.lst | 6 +++ 4 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 src/mame/handheld/tama_4u.cpp create mode 100644 src/mame/handheld/tama_mix.cpp diff --git a/src/mame/handheld/tama_4u.cpp b/src/mame/handheld/tama_4u.cpp new file mode 100644 index 0000000000000..30886e1e5e6f9 --- /dev/null +++ b/src/mame/handheld/tama_4u.cpp @@ -0,0 +1,72 @@ +// license:BSD-3-Clause +// copyright-holders: + +// TODO: identify CPU type + +#include "emu.h" + +#include "screen.h" +#include "speaker.h" + + +namespace { + +class tama_4u_state : public driver_device +{ +public: + tama_4u_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_screen(*this, "screen") + { + } + + void tama4u(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + required_device m_screen; +}; + +u32 tama_4u_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void tama_4u_state::machine_start() +{ +} + + +static INPUT_PORTS_START(tama4u) +INPUT_PORTS_END + + +void tama_4u_state::tama4u(machine_config &config) +{ + // unknown CPU + + // wrong, just so it's clear this has a screen + SCREEN(config, m_screen, SCREEN_TYPE_LCD); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(128, 128); + m_screen->set_visarea(0, 128 - 1, 0, 128 - 1); + m_screen->set_screen_update(FUNC(tama_4u_state::screen_update)); + + SPEAKER(config, "speaker").front_center(); +} + +ROM_START( tama4u ) + ROM_REGION( 0x800000, "maincpu", 0 ) + // vector table(?) at 0x400000, similar to tamaid + ROM_LOAD( "mx29lb640eb.u4", 0x000000, 0x800000, CRC(f9dcc04a) SHA1(5f5d738357219b2a4a1452835455abef25fe7dcb) ) +ROM_END + +} // anonymous namespace + +// 2014/06/10 MODEL:WIZ245 on PCB +GAME( 2014, tama4u, 0, tama4u, tama4u, tama_4u_state, empty_init, ROT0, "Bandai", "Tamagotchi 4U (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/handheld/tama_id.cpp b/src/mame/handheld/tama_id.cpp index 41fc30741b9a2..3e17f10f5cd52 100644 --- a/src/mame/handheld/tama_id.cpp +++ b/src/mame/handheld/tama_id.cpp @@ -67,5 +67,5 @@ ROM_END } // anonymous namespace -// 2010/2/5 on PCB, 2009 on case +// 2010/2/5 MODEL: WIZ229 on PCB, 2009 on case GAME( 2010, tamaid, 0, tamaid, tamaid, tama_id_state, empty_init, ROT0, "Bandai", "Tamagotchi iD (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/handheld/tama_mix.cpp b/src/mame/handheld/tama_mix.cpp new file mode 100644 index 0000000000000..a0e4e084f58d2 --- /dev/null +++ b/src/mame/handheld/tama_mix.cpp @@ -0,0 +1,71 @@ +// license:BSD-3-Clause +// copyright-holders: + +// TODO: identify CPU type + +#include "emu.h" + +#include "screen.h" +#include "speaker.h" + + +namespace { + +class tama_mix_state : public driver_device +{ +public: + tama_mix_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_screen(*this, "screen") + { + } + + void tama_mix(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + required_device m_screen; +}; + +u32 tama_mix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void tama_mix_state::machine_start() +{ +} + + +static INPUT_PORTS_START(tama_mix) +INPUT_PORTS_END + + +void tama_mix_state::tama_mix(machine_config &config) +{ + // unknown CPU + + // wrong, just so it's clear this has a screen + SCREEN(config, m_screen, SCREEN_TYPE_LCD); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(128, 128); + m_screen->set_visarea(0, 128 - 1, 0, 128 - 1); + m_screen->set_screen_update(FUNC(tama_mix_state::screen_update)); + + SPEAKER(config, "speaker").front_center(); +} + +ROM_START( tamamixm ) + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD( "mx29lv640et.u4", 0x000000, 0x800000, CRC(6e9301d2) SHA1(25a0df83da441d18467f82e8854e195139cce4a1) ) +ROM_END + +} // anonymous namespace + +// 2016/03/14 MODEL: WIZ249 on PCB +GAME( 2016, tamamixm, 0, tama_mix, tama_mix, tama_mix_state, empty_init, ROT0, "Bandai", "Tamagotchi m!x Melody Blue (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4353e5d877169..497aef7424751 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20007,9 +20007,15 @@ talkingbb @source:handheld/talkingfb.cpp talkingfb +@source:handheld/tama_4u.cpp +tama4u + @source:handheld/tama_id.cpp tamaid +@source:handheld/tama_mix.cpp +tamamixm + @source:handheld/teammate.cpp teammate From ebb12a7892cd323ccd7c261bd74bb1316bb1cde3 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 1 Nov 2025 22:31:39 +0000 Subject: [PATCH 15/18] 2 more --- src/mame/mame.lst | 2 ++ src/mame/tvgames/generalplus_gpl16250_spi.cpp | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 497aef7424751..e90bc23e87f9d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -47121,6 +47121,8 @@ anpanbd anpanm15 bk139in1 bkrankp +lxcympp +lxcymsm lxcyrace pokegac2 pokegac2y diff --git a/src/mame/tvgames/generalplus_gpl16250_spi.cpp b/src/mame/tvgames/generalplus_gpl16250_spi.cpp index bb964cd2160f9..b9046b7d03d73 100644 --- a/src/mame/tvgames/generalplus_gpl16250_spi.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_spi.cpp @@ -202,6 +202,21 @@ ROM_START( lxcyrace ) ROM_LOAD( "25q128.u2", 0x0000, 0x1000000, CRC(4489c99d) SHA1(792d6d224584fe1f3349c64a59aa79a587dd8c17) ) ROM_END +ROM_START( lxcymsm ) + ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) + //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only (if it exists at all) + + ROM_REGION(0x2000000, "maincpu", ROMREGION_ERASE00) + ROM_LOAD( "25q256.bin", 0x0000, 0x2000000, CRC(96b3ee5c) SHA1(f1e6bf46a4503877074310506d1acc4607dac331) ) +ROM_END + +ROM_START( lxcympp ) + ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) + //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only (if it exists at all) + + ROM_REGION(0x2000000, "maincpu", ROMREGION_ERASE00) + ROM_LOAD( "25q256.bin", 0x0000, 0x2000000, CRC(570b669c) SHA1(e7fcae662c8c8cae18cf1151d6caefacfe1e9fda) ) +ROM_END void generalplus_gpspispi_game_state::init_spi() { @@ -281,3 +296,5 @@ CONS(2015, pokegac2y, pokegach, 0, generalplus_gpspispi_bkrankp, gcm394, general CONS(202?, bk139in1, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, empty_init, "", "BornKid 32 Bit Preloaded 139-in-1 Handheld Game Console", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // same unknown hardware as above, fewer games CONS(2021, lxcyrace, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, empty_init, "Lexibook", "Cyber Arcade Racing (JL3150)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +CONS(2021, lxcymsm, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, empty_init, "Lexibook", "Cyber Arcade Motion - Superman (JL3180SU)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +CONS(2021, lxcympp, 0, 0, generalplus_gpspispi, gcm394, generalplus_gpspispi_game_state, empty_init, "Lexibook", "Cyber Arcade Motion - Paw Patrol (JL3180PA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) From 94761c80661fd0460d8ef54a861cb7b81934191a Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 2 Nov 2025 01:07:28 +0000 Subject: [PATCH 16/18] 2 more again --- src/mame/mame.lst | 2 ++ src/mame/nintendo/nes_vt32.cpp | 16 ++++++++++++++++ src/mame/tvgames/generalplus_gpl951xx.cpp | 7 +++++++ 3 files changed, 25 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e90bc23e87f9d..02ee67933bf75 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35769,6 +35769,7 @@ myaass mymman retror30 rminitv +tvkunio1 typo240 @source:nintendo/nes_vt369_vtunknown.cpp @@ -47147,6 +47148,7 @@ punij1pk punij1pu punij2pk punirune +punistar segapet1 segapet1a segapet2 diff --git a/src/mame/nintendo/nes_vt32.cpp b/src/mame/nintendo/nes_vt32.cpp index 0550eeb612d27..33db8d7873077 100644 --- a/src/mame/nintendo/nes_vt32.cpp +++ b/src/mame/nintendo/nes_vt32.cpp @@ -92,6 +92,7 @@ class nes_vt32_unk_state : public nes_vt32_state { } void nes_vt32_fp(machine_config& config); + void nes_vt32_2mb(machine_config& config); void nes_vt32_8mb(machine_config& config); void nes_vt32_16mb(machine_config& config); void nes_vt32_32mb(machine_config& config); @@ -329,6 +330,12 @@ void nes_vt32_unk_state::nes_vt32_4x16mb(machine_config& config) dynamic_cast(*m_soc).upper_read_412d_callback().set(FUNC(nes_vt32_unk_state::fcpocket_412d_r)); } +void nes_vt32_unk_state::nes_vt32_2mb(machine_config& config) +{ + nes_vt32_fp(config); + m_soc->set_addrmap(AS_PROGRAM, &nes_vt32_unk_state::vt_external_space_map_2mbyte); +} + void nes_vt32_unk_state::nes_vt32_8mb(machine_config& config) { nes_vt32_fp(config); @@ -464,6 +471,12 @@ ROM_START( micac250 ) ROM_LOAD( "250in1microarcade.u2", 0x000000, 0x1000000, CRC(3bb2a65c) SHA1(294eb2165466981a79e1d4ec535038e73fbca4de) ) ROM_END +ROM_START( tvkunio1 ) + ROM_REGION( 0x200000, "mainrom", 0 ) + ROM_LOAD( "mx29lv160dt.u3", 0x00000, 0x200000, CRC(4f502bff) SHA1(5c91c46c8b3b837cf98a5519d71117164c23a721) ) +ROM_END + + } // anonymous namespace @@ -524,3 +537,6 @@ CONS( 201?, k10_5l, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empt CONS( 201?, k10_2l, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "Games Power 500-in-1 Ultra Thin Handheld Game (K10) (2 languages)", MACHINE_NOT_WORKING ) CONS( 202?, micac250, 0, 0, nes_vt32_16mb, nes_vt32, nes_vt32_unk_state, empty_init, "", "Micro Arcade 250-in-1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) + +CONS( 2022, tvkunio1, 0, 0, nes_vt32_2mb, nes_vt32, nes_vt32_unk_state, empty_init, "Arc System Works", "Kunio-kun TV! Bikkuri Nekketsu Shin Kiroku! Harukanaru Kin Medal (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // yellow unit + diff --git a/src/mame/tvgames/generalplus_gpl951xx.cpp b/src/mame/tvgames/generalplus_gpl951xx.cpp index 6935df025896b..61140bbfcc15d 100644 --- a/src/mame/tvgames/generalplus_gpl951xx.cpp +++ b/src/mame/tvgames/generalplus_gpl951xx.cpp @@ -241,6 +241,11 @@ ROM_START( punifrnd ) ROM_LOAD16_WORD_SWAP( "25oh64.ic3", 0x0000, 0x800000, CRC(622ca9b3) SHA1(4206393a4458ffcdb63352e743481865532fe8b5) ) ROM_END +ROM_START( punistar ) + ROM_REGION16_BE(0x800000, "maincpu:spidirect", ROMREGION_ERASE00) + ROM_LOAD16_WORD_SWAP( "xm25qh64c.ic3", 0x0000, 0x800000, CRC(72f54f23) SHA1(902955764d0b61decc057eb3afaf2960cf2134c6) ) +ROM_END + ROM_START( pokgoget ) ROM_REGION16_BE(0x2000000, "maincpu:spidirect", ROMREGION_ERASE00) ROM_LOAD16_WORD_SWAP( "mx25l25645g.u1", 0x0000, 0x2000000, CRC(a76ae22f) SHA1(3fa5eeedb3fe343a7707d76710298377b22b0681) ) @@ -350,6 +355,8 @@ CONS(2021, punij2pk, punirune, 0, generalplus_gpspi_direct, bfspyhnt, generalplu // has a link feature CONS(2021, punifrnd, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplus_gpspi_direct_game_state, empty_init, "Takara Tomy", "Punirunes Punitomo Tsuushin (hot pink, Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +CONS(2021, punistar, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplus_gpspi_direct_game_state, empty_init, "Takara Tomy", "Punirunes Punistarz (pink, Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) + // Pocket Monsters ガチッとゲットだぜ! モンスターボールゴー! - Pocket Monsters is printed on the inner shell, but not the box? CONS(2021, pokgoget, 0, 0, generalplus_gpspi_direct, bfspyhnt, generalplus_gpspi_direct_game_state, empty_init, "Takara Tomy", "Gachitto Get da ze! Monster Ball Go! (210406, Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // ガチッとゲットだぜ! モンスターボール From 090184fb5cf3ef3ace73be5eb1745761ec74e0c9 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 2 Nov 2025 01:32:50 +0000 Subject: [PATCH 17/18] another 2 --- src/mame/handheld/evolution_handheld.cpp | 22 ++++++++++++++++++++++ src/mame/mame.lst | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/mame/handheld/evolution_handheld.cpp b/src/mame/handheld/evolution_handheld.cpp index 67a4fc175f4ca..2069e331c54fb 100644 --- a/src/mame/handheld/evolution_handheld.cpp +++ b/src/mame/handheld/evolution_handheld.cpp @@ -100,11 +100,28 @@ ROM_START( pokexyqz ) // also has an SD card slot (was empty) ROM_END +ROM_START( pokesmqz ) + ROM_REGION( 0x1000000, "maincpu", 0 ) + ROM_LOAD( "mx25l12845e.u3", 0x000000, 0x1000000, CRC(c9b79adf) SHA1(fd0180529166ed6daf73ae6734183031c42257a5) ) + + ROM_REGION( 0x800, "i2cmem", 0 ) + ROM_LOAD( "24c16.u4", 0x000, 0x800, CRC(1b4058f2) SHA1(813961f0afd1b36d78563074ddc796cf8826c6ff) ) +ROM_END + ROM_START( yuleyuan ) ROM_REGION( 0x1000000, "maincpu", 0 ) ROM_LOAD( "25l128.bin", 0x0000000, 0x1000000, CRC(51ab49e2) SHA1(ecad532d27efea55031ffd31ac4479c9c4eceae6) ) ROM_END + +ROM_START( tomyspt ) + ROM_REGION( 0x1000000, "maincpu", 0 ) + ROM_LOAD( "mx25l12845e.u3", 0x000000, 0x1000000, CRC(3c8685ed) SHA1(289948c3d9a06db184397bc6a31ea594c404449d) ) + + // there was also a FT24C16.u4, blank on dumped unit +ROM_END + + void evolution_handheldgame_state::init_yuleyuan() { u16 *spi = &memregion("maincpu")->as_u16(); @@ -124,5 +141,10 @@ CONS( 2020, buttdtct, 0, 0, evolhh, evolhh, evolution_handheldgame CONS( 2015, pokexyqz, 0, 0, evolhh, evolhh, evolution_handheldgame_state, empty_init, "Takara Tomy", "Pokemon Encyclopedia Z Pokemon XY Quiz Game Rotom (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// ロトム図鑑 サン&ムーン ポケモン クイズ +CONS( 2015, pokesmqz, 0, 0, evolhh, evolhh, evolution_handheldgame_state, empty_init, "Takara Tomy", "Pokedex Sun & Moon Pokemon Quiz Rotom (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) + +CONS( 201?, tomyspt, 0, 0, evolhh, evolhh, evolution_handheldgame_state, empty_init, "Takara Tomy", "Pretty Rhythm Smart Pod Touch (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) + // 星座电子宠物机 (virtual pet by 育乐元) CONS( 2022, yuleyuan, 0, 0, evolhh, evolhh, evolution_handheldgame_state, init_yuleyuan, "Yule Yuan", "Xingzuo Dianzi Chongwu Ji", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // dumped from yellow model diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 02ee67933bf75..ad215452a2fb1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19473,8 +19473,10 @@ dbridgec @source:handheld/evolution_handheld.cpp buttdtct evolhh +pokesmqz pokexyqz smkatsum +tomyspt yuleyuan @source:handheld/gameking.cpp From e7c6f3a1457d3514653e37d8a65358529087ec0f Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 2 Nov 2025 01:46:33 +0000 Subject: [PATCH 18/18] another pair --- src/mame/handheld/evolution_handheld.cpp | 8 +++++++- src/mame/mame.lst | 2 ++ src/mame/tvgames/generalplus_gpl951xx.cpp | 11 +++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/mame/handheld/evolution_handheld.cpp b/src/mame/handheld/evolution_handheld.cpp index 2069e331c54fb..067ad4393b98e 100644 --- a/src/mame/handheld/evolution_handheld.cpp +++ b/src/mame/handheld/evolution_handheld.cpp @@ -113,7 +113,6 @@ ROM_START( yuleyuan ) ROM_LOAD( "25l128.bin", 0x0000000, 0x1000000, CRC(51ab49e2) SHA1(ecad532d27efea55031ffd31ac4479c9c4eceae6) ) ROM_END - ROM_START( tomyspt ) ROM_REGION( 0x1000000, "maincpu", 0 ) ROM_LOAD( "mx25l12845e.u3", 0x000000, 0x1000000, CRC(3c8685ed) SHA1(289948c3d9a06db184397bc6a31ea594c404449d) ) @@ -121,6 +120,10 @@ ROM_START( tomyspt ) // there was also a FT24C16.u4, blank on dumped unit ROM_END +ROM_START( hoppech ) + ROM_REGION( 0x1000000, "maincpu", 0 ) + ROM_LOAD( "25l128.u3", 0x000000, 0x1000000, CRC(4a983ab2) SHA1(d5571cf0f3fcf872826a2ff8b45be69336b117dd) ) +ROM_END void evolution_handheldgame_state::init_yuleyuan() { @@ -146,5 +149,8 @@ CONS( 2015, pokesmqz, 0, 0, evolhh, evolhh, evolution_handheldgame CONS( 201?, tomyspt, 0, 0, evolhh, evolhh, evolution_handheldgame_state, empty_init, "Takara Tomy", "Pretty Rhythm Smart Pod Touch (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// ほっぺちゃん スイ☆コレ ホワイト +CONS( 201?, hoppech, 0, 0, evolhh, evolhh, evolution_handheldgame_state, empty_init, "Takara Tomy", "Hoppe-chan Sweet Collection (white, Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) + // 星座电子宠物机 (virtual pet by 育乐元) CONS( 2022, yuleyuan, 0, 0, evolhh, evolhh, evolution_handheldgame_state, init_yuleyuan, "Yule Yuan", "Xingzuo Dianzi Chongwu Ji", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // dumped from yellow model diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ad215452a2fb1..7ebcf52f65c7b 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19473,6 +19473,7 @@ dbridgec @source:handheld/evolution_handheld.cpp buttdtct evolhh +hoppech pokesmqz pokexyqz smkatsum @@ -47158,6 +47159,7 @@ segapet2a segapet3 segapet3a smkcatch +smkgacha smkguras smkgurasa wiwcs diff --git a/src/mame/tvgames/generalplus_gpl951xx.cpp b/src/mame/tvgames/generalplus_gpl951xx.cpp index 61140bbfcc15d..0d72f1f6b2f87 100644 --- a/src/mame/tvgames/generalplus_gpl951xx.cpp +++ b/src/mame/tvgames/generalplus_gpl951xx.cpp @@ -271,6 +271,11 @@ ROM_START( smkgurasa ) // code is the same, some data area differs, could be dif ROM_LOAD16_WORD_SWAP( "xm25qh64c.u3", 0x0000, 0x800000, CRC(2c9e82af) SHA1(8c475783eafbeaeb88d62b145758ad3487410222) ) ROM_END +ROM_START( smkgacha ) + ROM_REGION16_BE(0x800000, "maincpu:spidirect", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "kg25l64.u2", 0x0000, 0x800000, CRC(eb461d92) SHA1(7481e8b3f2eaa9c8d992f3d9c58c1c7e3f27b380) ) +ROM_END + ROM_START( dsgnpal ) ROM_REGION16_BE(0x800000, "maincpu:spidirect", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "gpr25l64.ic2", 0x0000, 0x800000, CRC(a1017ea8) SHA1(bd4b553ff71e763cd3fd726c49f5408eac3b7984) ) @@ -368,8 +373,10 @@ CONS( 2021, smkcatch, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_ // or Sumikko Gurashi - Sumikko Catch DX (すみっコぐらし すみっコキャッチDX) = Sumikko Catch with pouch and strap // is there a subtitle for this one? it's different to the others -CONS( 201?, smkguras, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gurashi (Japan, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -CONS( 201?, smkgurasa, smkguras, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gurashi (Japan, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS( 201?, smkguras, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gurashi DX (Japan, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS( 201?, smkgurasa, smkguras, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gurashi DX (Japan, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) + +CONS( 2021, smkgacha, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "San-X / Tomy", "Sumikko Gacha (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // there seem to be different versions of this available, is the software the same? CONS( 201?, dsgnpal, 0, 0, generalplus_gpspi_direct, bfmpac, generalplus_gpspi_direct_game_state, empty_init, "Tomy", "Kiratto Pri-Chan Design Palette (Japan)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)