From f1bd005fd3d512e8073ec177fce2ad16603701d6 Mon Sep 17 00:00:00 2001
From: mamehaze <140764005+mamehaze@users.noreply.github.com>
Date: Wed, 22 Nov 2023 16:33:27 +0000
Subject: [PATCH] Added various TV games and associated software (mostly not
working). (#11755)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Moved zone3d from tvgames/spg29x.cpp to tvgames/spg29x_lexibook_jg7425.cpp.
* sega/megadriv_rad.cpp: Changed short name suffix on UK releases from "p" (PAL) to "uk".
New working clones
--------------------
Radica / Sega Mega Drive Collection Volume 1 (Radica, Arcade Legends) (UK) [TeamEurope, David Haywood]
VTech Dora the Explorer - Dora TV Explorer Phone / L'anniversaire de Babouche (France) [TeamEurope, David Haywood]
New systems marked not working
--------------------
Konami Marimba Tengoku (Japan) [TeamEurope, David Haywood]
Lexibook Disney Frozen TV Game Console (32-bit, Lexibook, JG7420FZ) [TeamEurope, David Haywood]
New clones marked not working
--------------------
IVL Technologies (Lexibook license) KaraokeMicro Star (France) [TeamEurope, David Haywood]
Taikee / V-Tac Jeu Intéractif TV (France) [TeamEurope, David Haywood]
New software list items marked not working (easy_karaoke_cart.xml)
--------------------
KaraokeMicro Star Cartouche 1 [TeamEurope, David Haywood]
KaraokeMicro Star Cartouche 2 [TeamEurope, David Haywood]
KaraokeMicro Star Cartouche 3 [TeamEurope, David Haywood]
---
hash/easy_karaoke_cart.xml | 78 ++++++++++++++
src/mame/mame.lst | 18 +++-
src/mame/sega/megadriv_rad.cpp | 23 ++--
src/mame/skeleton/easy_karaoke.cpp | 110 +++++++++++++++++---
src/mame/skeleton/hudson_poems.cpp | 96 +++++++++++++++++
src/mame/tvgames/spg29x.cpp | 81 +-------------
src/mame/tvgames/spg29x_lexibook_jg7425.cpp | 110 +++++++++++++++++---
src/mame/tvgames/spg2xx.cpp | 36 ++++++-
src/mame/tvgames/spg2xx.h | 2 +
9 files changed, 425 insertions(+), 129 deletions(-)
create mode 100644 src/mame/skeleton/hudson_poems.cpp
diff --git a/hash/easy_karaoke_cart.xml b/hash/easy_karaoke_cart.xml
index 66444c631f2..d778169db97 100644
--- a/hash/easy_karaoke_cart.xml
+++ b/hash/easy_karaoke_cart.xml
@@ -186,4 +186,82 @@ license:CC0-1.0
+
+
+ KaraokeMicro Star Cartouche 1
+ 2003
+ IVL Technologies / Lexibook
+
+
+
+
+
+
+
+
+
+
+
+
+ KaraokeMicro Star Cartouche 2
+ 2003
+ IVL Technologies / Lexibook
+
+
+
+
+
+
+
+
+
+
+
+
+ KaraokeMicro Star Cartouche 3
+ 2004
+ IVL Technologies / Lexibook
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 0700c04aa1a..d66982df929 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -38716,14 +38716,15 @@ twinktmb
@source:sega/megadriv_rad.cpp
rad_sf2 // (c)2004 Radica
-rad_sf2p // (c)2004 Radica
+rad_sf2uk // (c)2004 Radica
rad_gen1 // (c)2004 Radica
rad_gen2 // (c)2004 Radica
rad_md1
-rad_md2
+rad_md1uk
+rad_md2uk
rad_ssoc // (c)2004 Radica
rad_sonic
-rad_sonicp
+rad_sonicuk
rad_orun
msi_sf2
dgunl3227
@@ -41412,6 +41413,7 @@ e100 //
@source:skeleton/easy_karaoke.cpp
easykara
+karams
@source:skeleton/elcirculo.cpp
elcirculo // (c) 1980 Inder
@@ -41497,6 +41499,9 @@ hprotr8a //
@source:skeleton/ht68k.cpp
ht68k //
+@source:skeleton/hudson_poems.cpp
+marimba //
+
@source:skeleton/i7000.cpp
i7000 //
@@ -44657,12 +44662,13 @@ sstarkar
hyprscan //
jak_bbh
jak_bbsf
-zone3d
zonefamf
@source:tvgames/spg29x_lexibook_jg7425.cpp
-lx_jg7425
lx_aven
+lx_frozen
+lx_jg7425
+zone3d
@source:tvgames/spg2xx.cpp
ablkickb
@@ -44673,6 +44679,7 @@ decathlna
doraglob // (c) 2007 VTech
doraglobg
doraphon // (c) 2006 VTech
+doraphonf
dreamlss
fordrace
gssytts
@@ -44681,6 +44688,7 @@ guitarss
guitarssa
hotwhl2p
itvphone
+jeuint
jjstrip
jouet
knd
diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp
index fbf991c7ceb..3a46189daff 100644
--- a/src/mame/sega/megadriv_rad.cpp
+++ b/src/mame/sega/megadriv_rad.cpp
@@ -519,7 +519,7 @@ ROM_START( rad_sf2 )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_streetfighter2_usa.bin", 0x000000, 0x400000, CRC(a4426df8) SHA1(091f2a95ebd091141de5bcb83562c6087708cb32) )
ROM_END
-ROM_START( rad_sf2p )
+ROM_START( rad_sf2uk )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_streetfighter2_uk.bin", 0x000000, 0x400000, CRC(868afb44) SHA1(f4339e36272c18b1d49aa4095127ed18e0961df6) )
ROM_END
@@ -534,12 +534,17 @@ ROM_START( rad_md1 )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol1_blue_europe.bin", 0x000000, 0x400000, CRC(85867db1) SHA1(ddc596e2e68dc872bc0679a2de7a295b4c6d6b8e) )
ROM_END
+ROM_START( rad_md1uk )
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "radicauk.u2", 0x000000, 0x400000, CRC(03a6734b) SHA1(255048d46b593bc975b3a6c44e8b8e35917511c7) )
+ROM_END
+
ROM_START( rad_gen2 )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_genesis_vol2_red_usa.bin", 0x000000, 0x400000, CRC(7c1a0f0e) SHA1(a6441f75a4cd48f1563aeafdfbdde00202d4067c) )
ROM_END
-ROM_START( rad_md2 )
+ROM_START( rad_md2uk )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_megadrive_vol2_red_uk.bin", 0x000000, 0x400000, CRC(b68fd025) SHA1(b8f9c505653d6dd2b62840f078f828360faf8abc) )
ROM_END
@@ -554,7 +559,7 @@ ROM_START( rad_sonic )
ROM_LOAD16_WORD_SWAP( "radica_supersonicgold_usa.bin", 0x000000, 0x400000, CRC(853c9140) SHA1(cf70a9cdd3be4d8d1b6195698db3a941f4908791) )
ROM_END
-ROM_START( rad_sonicp )
+ROM_START( rad_sonicuk )
ROM_REGION( 0x400000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "radica_supersonicgold_uk.bin", 0x000000, 0x400000, CRC(ed774018) SHA1(cc2f7183e128c947463e3a43a0184b835ea16db8) )
ROM_END
@@ -699,23 +704,23 @@ 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)
-// A UK version exists, showing the Radica UK boot screen
+CONS( 2004, rad_md1uk, 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) (UK)", 0)
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_md2, 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)
+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?
// 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)
-CONS( 2004, rad_sonicp,rad_sonic,0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Super Sonic Gold (Radica Plug & Play) (UK)", 0)
+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)
+CONS( 2004, rad_sonicuk,rad_sonic,0, megadriv_radica_3button_pal, radica_3button_1player, megadriv_radica_state, init_megadrie, "Radica / Sega", "Super Sonic Gold (Radica Plug & Play) (UK)", 0)
// is there a Europe version with Radica Games boot screen and Mega Drive text?
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_sf2p, 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)
+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?
// still branded as Arcade Legends even if none of these were ever arcade games, European exclusive
diff --git a/src/mame/skeleton/easy_karaoke.cpp b/src/mame/skeleton/easy_karaoke.cpp
index 96a20dc7326..54e03bf4039 100644
--- a/src/mame/skeleton/easy_karaoke.cpp
+++ b/src/mame/skeleton/easy_karaoke.cpp
@@ -51,6 +51,23 @@
presumably manages a serial protocol to send data to the main unit
+
+ -----------------
+
+ Lexibook's KaraokeMicro Star version uses
+
+ Clarity 4.1 ARM
+ SV11180
+ NV0093 0246
+ Sound Vision Inc.
+
+ ------------------
+
+ Packaging also shows 'On-Key Karaoke' logo on box, maybe this is the original US / Canada product name?
+
+ "Karaoke TV Star" appears to be a US product using this technology - advertises 50 built in songs, but
+ also a downloadable service. It has a 2002 date on the box / product. Another version offers 35 songs
+
*******************************************************************************/
#include "emu.h"
@@ -142,7 +159,7 @@ uint32_t easy_karaoke_state::a000004_r()
void easy_karaoke_state::arm_map(address_map &map)
{
map(0x00000000, 0x007fffff).ram();
- map(0x04000000, 0x043fffff).rom().region("maincpu", 0);
+ map(0x04000000, 0x047fffff).rom().region("maincpu", 0);
map(0x0a000004, 0x0a000007).r(FUNC(easy_karaoke_state::a000004_r));
}
@@ -174,29 +191,88 @@ void easy_karaoke_state::easy_karaoke(machine_config &config)
}
/*
-The 'easykara' set has the following songs built in.
+The 'easykara' set has the following 10 songs built in.
-One Step Closer S Club Juniors
-S Club Party S Club 7
-Automatic High S Club Juniors
-Don't Stop Movin' S Club 7
-Get the Party Started Pink
-Feel Robbie Williams
-Complicated Avril Lavigne
-One love Blue
-If you're not the one Daniel Bedingfield
-Sound of the Underground Girls Aloud
-
-There are regional variants of the product sold under different names, for example
-there appears to be a French Lexibook unit based on this tech with different songs.
+One Step Closer S Club Juniors
+S Club Party S Club 7
+Automatic High S Club Juniors
+Don't Stop Movin' S Club 7
+Get the Party Started Pink
+Feel Robbie Williams
+Complicated Avril Lavigne
+One love Blue
+If you're not the one Daniel Bedingfield
+Sound of the Underground Girls Aloud
*/
ROM_START( easykara )
- ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "ics0303-b.bin", 0x000000, 0x400000, CRC(43d86ae8) SHA1(219dcbf72b92d1b7e00f78f237194ab47dc08f1b) )
ROM_END
+/*
+The 'karams' set has the following 50 songs built in.
+
+...Baby One More Time Britney Spears
+Alexandrie Alexandra Claude François
+All By Myself Celine Dion
+Allumer le feu Johnny Hallyday
+Alors regarde Patrick Bruel
+Always On My Mind Elvis Presley (R)
+Au soleil Jennifer
+Auprès de ma blonde Enfant
+Believe Cher
+Bye Bye Bye 'N Sync
+Can't Get You Out Of My Head Kylie Minogue
+Cette année là Claude François
+Don't Let Me Get Me Pink
+Déshabillez-moi Juliette Greco
+Elle te rend dingue Nuttea
+Embrasse-moi idiot Forban
+Fallin' Alicia Keys
+Fame Irene Cara
+Femmes je vous aime Julien Clerc
+Frère Jacques Enfant
+I Love Rock and Roll Joan Jett
+I Will Survive Gloria Gaynor
+I'll Be There Mariah Carey
+Il était un petit navire Enfant
+It's Raining Men Geri Halliwell
+Juste quelqu'un de bien Enzo Enzo
+La Bohème Charles Aznavour
+La Cucaracha Standard
+La Marseillaise Popular
+La musique Star Academy 1
+Lady Marmalade Christina Aguilera
+Laissons entrer le soleil A la recherche de la Nouvelle Star
+Le bon roi Dagobert Enfant
+Le pénitencier Johnny Halliday
+London Bridge Children
+Magnolias forever Claude François
+My Girl Temptations
+New York New York Frank Sinatra
+Noir c'est noir Johnny Hallyday
+Oops!...I Did It Again Britney Spears
+Pour le plaisir Herbert Léonard
+Qui est l'exemple? Rohf
+Silent Night Christmas
+That's The Way (I Like It) KC And The Sunshine Band
+That's The Way It Is Celine Dion
+The Loco-Motion Kylie Minogue
+Toute seule Lorie
+Vieille canaille Gainsbourg
+We Wish You A Merry Christmas Standard
+When The Saints Go Marchin' In Louis Armstrong
+
+*/
+
+ROM_START( karams )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "ics0300-a.u9", 0x000000, 0x800000, CRC(32a7a429) SHA1(ed219bc9201b45f67c5e7dbe3fb3db70823c59f0) )
+ROM_END
+
} // anonymous namespace
-CONS( 2004, easykara, 0, 0, easy_karaoke, easy_karaoke, easy_karaoke_state, empty_init, "IVL Technologies", "Easy Karaoke Groove Station", MACHINE_IS_SKELETON )
+CONS( 2004, easykara, 0, 0, easy_karaoke, easy_karaoke, easy_karaoke_state, empty_init, "IVL Technologies", "Easy Karaoke Groove Station (UK)", MACHINE_IS_SKELETON )
+CONS( 2003, karams, easykara, 0, easy_karaoke, easy_karaoke, easy_karaoke_state, empty_init, "IVL Technologies (Lexibook license)", "KaraokeMicro Star (France)", MACHINE_IS_SKELETON )
diff --git a/src/mame/skeleton/hudson_poems.cpp b/src/mame/skeleton/hudson_poems.cpp
new file mode 100644
index 00000000000..e0617978461
--- /dev/null
+++ b/src/mame/skeleton/hudson_poems.cpp
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+
+/* Based on the "POEMS ES1 Flash ROM Writer Version 0.24 (C)2003-2004 HUDSON SOFT" string
+ found in ROM this is assumed to be 'POEMS' hardware.
+
+ https://game.watch.impress.co.jp/docs/20041209/toy166.htm
+ https://forum.beyond3d.com/threads/hudson-softs-32-bit-cpu-poems-for-new-system.14358/
+ https://web.archive.org/web/20021207035427/http://www.tensilica.com/html/pr_2002_10_15.html
+
+ The above links mention Konami using this hardware for a PLAY-POEMS plug and play sports
+ devices, and indicate it is based around the Xtensa instruction set, which has been confirmed
+ for the single dumped device.
+
+ https://0x04.net/~mwk/doc/xtensa.pdf
+
+ Known PLAY-POEMS devices (all from Konami)
+
+ 2004/11/11 熱血パワプロチャンプ (Baseball game)
+ 2004/11/11 爽快ゴルフチャンプ (Golf game)
+ 2004/12/09 絶体絶命でんぢゃらすじーさん ミニゲームで対決じゃっ! (Mini-Game Collection)
+ 2005/09/15 マリンバ天国 (Marimba Tengoku)
+ 2005/11/17 絶体絶命でんぢゃらすじーさん パーティーじゃっ!全員集合!! (Mini-Game Collection)
+ 2005/11/24 ぐ〜チョコランタン スプーだいすき!プレイマット (Kid's Floor Mat)
+
+ */
+
+#include "emu.h"
+
+#include "screen.h"
+#include "speaker.h"
+
+
+namespace {
+
+class hudsom_poems : public driver_device
+{
+public:
+ hudsom_poems(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag)
+ { }
+
+ void hudson_poems(machine_config &config);
+
+private:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+};
+
+void hudsom_poems::machine_start()
+{
+}
+
+void hudsom_poems::machine_reset()
+{
+}
+
+static INPUT_PORTS_START( hudson_poems )
+INPUT_PORTS_END
+
+
+uint32_t hudsom_poems::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+void hudsom_poems::hudson_poems(machine_config &config)
+{
+ // 27Mhz XTAL
+
+ // Xtensa based CPU?
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(320, 240); // resolution not confirmed
+ screen.set_visarea(0, 320-1, 0, 240-1);
+ screen.set_screen_update(FUNC(hudsom_poems::screen_update));
+
+ SPEAKER(config, "speaker").front_center();
+}
+
+ROM_START( marimba )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD( "marimbatengoku.u2", 0x000000, 0x800000, CRC(b2ac0c5b) SHA1(48f3cdf399b032d86234125eeac3fb1cdc73538a) ) // glob with TSOP pads
+
+ ROM_REGION( 0x400, "nv", 0 )
+ ROM_LOAD( "at24c08a.u4", 0x000000, 0x400, CRC(e128a679) SHA1(73fb551d87ed911bd469899343fd36d9d579af39) )
+ROM_END
+
+} // anonymous namespace
+
+
+CONS( 2005, marimba, 0, 0, hudson_poems, hudson_poems, hudsom_poems, empty_init, "Konami", "Marimba Tengoku (Japan)", MACHINE_IS_SKELETON )
diff --git a/src/mame/tvgames/spg29x.cpp b/src/mame/tvgames/spg29x.cpp
index 1b16ab1e2a2..d7fc9cbbb81 100644
--- a/src/mame/tvgames/spg29x.cpp
+++ b/src/mame/tvgames/spg29x.cpp
@@ -164,21 +164,6 @@ private:
int m_firstvector = 0;
};
-class spg29x_zone3d_game_state : public spg29x_game_state
-{
-public:
- spg29x_zone3d_game_state(const machine_config& mconfig, device_type type, const char* tag) :
- spg29x_game_state(mconfig, type, tag)
- { }
-
- void init_zone3d();
-
-protected:
- void machine_reset() override;
-
-private:
-};
-
class spg29x_zonefamf_game_state : public spg29x_nand_game_state
{
public:
@@ -428,25 +413,6 @@ void spg29x_nand_game_state::machine_reset()
m_maincpu->set_state_int(SCORE_PC, bootstrap_ram_boot);
}
-
-void spg29x_zone3d_game_state::machine_reset()
-{
- spg29x_game_state::machine_reset();
-
- uint8_t* rom = memregion("spi")->base();
- int size = memregion("spi")->bytes();
-
- uint32_t destaddr = 0x1dc;
- for (uint32_t addr = 0; addr < size; addr++)
- {
- address_space& mem = m_maincpu->space(AS_PROGRAM);
- uint8_t byte = rom[addr];
- mem.write_byte(addr+destaddr, byte);
- }
-
- m_maincpu->set_state_int(SCORE_PC, 0x1000);
-}
-
void spg29x_zonefamf_game_state::machine_reset()
{
spg29x_game_state::machine_reset();
@@ -580,15 +546,9 @@ void spg29x_nand_game_state::nand_jak_bbsf()
void spg29x_zonefamf_game_state::nand_zonefamf()
{
nand_init(0x840, 0x800);
-// m_firstvector = 0x8;
+// m_firstvector = 0x8;
}
-void spg29x_zone3d_game_state::init_zone3d()
-{
-
-}
-
-
/* ROM definition */
ROM_START( hyprscan )
ROM_REGION( 0x100000, "bios", ROMREGION_32BIT | ROMREGION_LE )
@@ -626,39 +586,6 @@ ROM_START( zonefamf )
//has 1x 48LC8M16A2 (128Mbit/16MByte SDRAM) for loading game into
ROM_END
-
-ROM_START( zone3d )
- ROM_REGION( 0x100000, "spi", 0 )
- ROM_LOAD("zone_25l8006e_c22014.bin", 0x000000, 0x100000, CRC(8c571771) SHA1(cdb46850286d31bf58d45b75ffc396ed774ac4fd) )
-
- /*
- model: Lexar SD
- revision: LX01
- serial number: 00000000XL10
-
- size: 362.00 MiB (741376 sectors * 512 bytes)
- unk1: 0000000000000007
- unk2: 00000000000000fa
- unk3: 01
-
- The SD card has no label, but there's some printing on the back:
- MMAGF0380M3085-WY
- TC00201106 by Taiwan
-
- --
- Dumped with hardware write blocker, so this image is correct, and hasn't been corrupted by Windows
-
- Image contains a FAT filesystem with a number of compressed? programs that presumably get loaded into RAM by
- the bootloader in the serial flash ROM
- */
-
- DISK_REGION( "cfcard" )
- DISK_IMAGE( "zone3d", 0, SHA1(77971e2dbfb2ceac12f482d72539c2e042fd9108) )
-
- ROM_REGION( 0x008000, "spg290", ROMREGION_32BIT | ROMREGION_LE )
- ROM_LOAD32_DWORD("internal.rom", 0x000000, 0x008000, NO_DUMP)
-ROM_END
-
} // anonymous namespace
@@ -672,12 +599,6 @@ COMP( 2006, hyprscan, 0, 0, hyperscan, hyperscan, spg29x_game_state,
COMP( 2009, jak_bbh, 0, 0, spg29x, hyperscan, spg29x_nand_game_state, nand_jak_bbh, "JAKKS Pacific Inc", "Big Buck Hunter Pro (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) //has ISSI 404A (24C04)
COMP( 2011, jak_bbsf, 0, 0, spg29x, hyperscan, spg29x_nand_game_state, nand_jak_bbsf,"JAKKS Pacific Inc", "Big Buck Safari (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // has ISSI 416A (24C16)
-// ends up doing the following, which causes a jump to 0xbf000024, where we have nothing mapped (internal ROM related, or thinks it's loaded code there? This is the area Hyperscan uses as 'BIOS' not Internal ROM so could be RAM here)
-// 000011D4: ldis r8, 0xbf00
-// 000011D8: ori r8, 0x0024
-// 000011DC: br r8
-COMP( 201?, zone3d, 0, 0, spg29x, hyperscan, spg29x_zone3d_game_state, init_zone3d,"Zone", "Zone 3D", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-
COMP( 201?, zonefamf, 0, 0, spg29x, hyperscan, spg29x_zonefamf_game_state, nand_zonefamf,"Zone", "Zone Family Fit", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
// see also spg29x_lexibook_jg7425.cpp which may or may not belong here
diff --git a/src/mame/tvgames/spg29x_lexibook_jg7425.cpp b/src/mame/tvgames/spg29x_lexibook_jg7425.cpp
index 26d201f403f..1c97d8e09e7 100644
--- a/src/mame/tvgames/spg29x_lexibook_jg7425.cpp
+++ b/src/mame/tvgames/spg29x_lexibook_jg7425.cpp
@@ -33,7 +33,7 @@ public:
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
m_mainram(*this, "mainram"),
- m_romregion(*this, "maincpu")
+ m_romregion(*this, "extrom")
{ }
void lexibook_jg7425(machine_config &config);
@@ -50,25 +50,53 @@ private:
required_device m_maincpu;
required_device m_screen;
required_shared_ptr m_mainram;
- required_region_ptr m_romregion;
+ required_region_ptr m_romregion;
};
void lexibook_jg7425_state::machine_start()
{
- // I think this code should be running from RAM at least, probably some kind of bootstrap / internal ROM to copy it? (hyperscan.cpp indicates that SoC can have internal ROM at least)
-
- // first 0x20 bytes are probably pointers, code starts at 0x20 and is offset, maps at 0x500000
-
- for (int i = 0; i < 0x80000 / 4; i++)
- {
- m_mainram[i+(0x500000/4) - (0x20/4)] = m_romregion[i];
- }
}
void lexibook_jg7425_state::machine_reset()
{
+ // I think this code should be running from RAM at least, probably some kind of bootstrap / internal ROM to copy it? (hyperscan.cpp indicates that SoC can have internal ROM at least)
+
+ /*
+
+ the first 0x20 bytes of the ROM seem to be some pointers
+
+ F7 FF FE FF
+ FF FF FF FF
+ FF FF FF FF
+ FC 01 50 A0 (address A05001FC) - load address for the main program
+ FC 01 70 A0 (address A07001FC) - maybe top of program to copy?
+ 00 10 50 A0 (address A0501000) - entry point??
+ 20 00 00 98 (address 98000020)
+ 00 00 00 00
+
+ then there is a program which loads at A05001FC between 0x20 - 0x6DBD3
+ this program is then partially repeated until it is abruptly cut off
+ with a block of 00 at 0x7ff20
+ the 2nd half of the ROM (0x80000+) is just 0xff fill
+
+ */
+
+ uint32_t loadaddr = (m_romregion[0x0c] << 0) | (m_romregion[0x0d] << 8) | (m_romregion[0x0e] << 16) | (m_romregion[0x0f] << 24);
+ uint32_t endaddr = (m_romregion[0x10] << 0) | (m_romregion[0x11] << 8) | (m_romregion[0x12] << 16) | (m_romregion[0x13] << 24);
+ uint32_t entry = (m_romregion[0x14] << 0) | (m_romregion[0x15] << 8) | (m_romregion[0x16] << 16) | (m_romregion[0x17] << 24);
+
+ uint8_t* rom = (uint8_t*)&m_romregion[0];
+
+ for (int i = 0; i < endaddr-loadaddr; i++)
+ {
+ uint32_t data = rom[0x20 + i];
+
+ m_maincpu->space(AS_PROGRAM).write_byte(loadaddr+i, data);
+ }
+
+ m_maincpu->set_state_int(SCORE_PC, entry);
}
static INPUT_PORTS_START( lexibook_jg7425 )
@@ -82,9 +110,13 @@ uint32_t lexibook_jg7425_state::screen_update(screen_device &screen, bitmap_rgb3
void lexibook_jg7425_state::map(address_map &map)
{
- map(0x00000000, 0x00ffffff).ram().share("mainram");
+
+ map(0xa0000000, 0xa0ffffff).ram().share("mainram");
map(0x9f000000, 0x9fffffff).ram().share("mainram");
+ map(0xbf000000, 0xbfffffff).ram().share("mainram");
+
+ // it quickly ends up jumping to BF000024, which is probably internal ROM - can we simulate what it wants?
}
@@ -102,23 +134,67 @@ void lexibook_jg7425_state::lexibook_jg7425(machine_config &config)
}
ROM_START( lx_jg7425 )
- ROM_REGION( 0x200000, "maincpu", ROMREGION_32BIT | ROMREGION_LE )
- ROM_LOAD32_DWORD( "mx29lv160.u6", 0x000000, 0x200000, CRC(43c90080) SHA1(4c9e5c8f880d40bd684357ce67ae45c3f5d24b62) )
+ ROM_REGION( 0x200000, "extrom", ROMREGION_ERASEFF )
+ ROM_LOAD( "mx29lv160.u6", 0x000000, 0x200000, CRC(43c90080) SHA1(4c9e5c8f880d40bd684357ce67ae45c3f5d24b62) )
DISK_REGION( "ata:0:hdd" ) /* 4GB SD Card */
DISK_IMAGE( "lexibook_jg7425_4gbsd", 0, SHA1(dc0985103edec3992efdd493feef6185daedb3fd) )
ROM_END
ROM_START( lx_aven )
- ROM_REGION( 0x200000, "maincpu", ROMREGION_32BIT | ROMREGION_LE )
- ROM_LOAD32_DWORD( "29lv800.bin", 0x000000, 0x100000, CRC(7b107f6c) SHA1(3a8e37e51dab5cab9977261e0ac17ba5194a9370) )
+ ROM_REGION( 0x200000, "extrom", ROMREGION_ERASEFF )
+ ROM_LOAD( "29lv800.bin", 0x000000, 0x100000, CRC(7b107f6c) SHA1(3a8e37e51dab5cab9977261e0ac17ba5194a9370) )
DISK_REGION( "ata:0:hdd" ) /* 4GB SD Card */
DISK_IMAGE( "sd-card", 0, SHA1(911da7bf7dac391e3329e17e3f411caafac52f0f) )
ROM_END
+ROM_START( lx_frozen )
+ ROM_REGION( 0x200000, "extrom", ROMREGION_ERASEFF )
+ ROM_LOAD( "29lv800.bin", 0x000000, 0x100000, CRC(7b107f6c) SHA1(3a8e37e51dab5cab9977261e0ac17ba5194a9370) )
+
+ DISK_REGION( "ata:0:hdd" ) /* 4GB SD Card */
+ DISK_IMAGE( "sdcard", 0, SHA1(0d727815ba06d7bfe8e092007e24d4931b302ef9) )
+ROM_END
+
+ROM_START( zone3d )
+ ROM_REGION( 0x100000, "extrom", 0 ) // SPI ROM in this case
+ ROM_LOAD("zone_25l8006e_c22014.bin", 0x000000, 0x100000, CRC(8c571771) SHA1(cdb46850286d31bf58d45b75ffc396ed774ac4fd) )
+
+ /*
+ model: Lexar SD
+ revision: LX01
+ serial number: 00000000XL10
+
+ size: 362.00 MiB (741376 sectors * 512 bytes)
+ unk1: 0000000000000007
+ unk2: 00000000000000fa
+ unk3: 01
+
+ The SD card has no label, but there's some printing on the back:
+ MMAGF0380M3085-WY
+ TC00201106 by Taiwan
+
+ --
+ Dumped with hardware write blocker, so this image is correct, and hasn't been corrupted by Windows
+
+ Image contains a FAT filesystem with a number of compressed? programs that presumably get loaded into RAM by
+ the bootloader in the serial flash ROM
+ */
+
+ DISK_REGION( "cfcard" )
+ DISK_IMAGE( "zone3d", 0, SHA1(77971e2dbfb2ceac12f482d72539c2e042fd9108) )
+
+ ROM_REGION( 0x008000, "spg290", ROMREGION_32BIT | ROMREGION_LE )
+ ROM_LOAD32_DWORD("internal.rom", 0x000000, 0x008000, NO_DUMP)
+ROM_END
+
} // anonymous namespace
-CONS( 2015, lx_jg7425, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Lexibook", "Lexibook JG7425 221-in-1", MACHINE_IS_SKELETON )
-CONS( 201?, lx_aven, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Lexibook", "Marvel Avengers TV Game Console (32-bit) (Lexibook)", MACHINE_IS_SKELETON )
+CONS( 2015, lx_jg7425, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Lexibook", "Lexibook JG7425 221-in-1", MACHINE_IS_SKELETON )
+CONS( 2016, lx_aven, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Lexibook", "Marvel Avengers TV Game Console (32-bit, Lexibook)", MACHINE_IS_SKELETON )
+CONS( 2016, lx_frozen, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Lexibook", "Disney Frozen TV Game Console (32-bit, Lexibook, JG7420FZ)", MACHINE_IS_SKELETON )
+
+// slightly different, but same basic structure of the external ROM
+COMP( 201?, zone3d, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init,"Zone", "Zone 3D", MACHINE_IS_SKELETON )
diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp
index fd94b34e454..b2ca87205b9 100644
--- a/src/mame/tvgames/spg2xx.cpp
+++ b/src/mame/tvgames/spg2xx.cpp
@@ -1187,6 +1187,13 @@ static INPUT_PORTS_START( doraphone )
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( doraphonep )
+ PORT_INCLUDE( doraphone )
+
+ PORT_MODIFY("P1")
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_CUSTOM ) // PAL mode
+INPUT_PORTS_END
+
static INPUT_PORTS_START( doraglobe )
PORT_START("P1")
@@ -1920,6 +1927,14 @@ void spg2xx_game_doraphone_state::doraphone(machine_config &config)
m_maincpu->portc_in().set(FUNC(spg2xx_game_doraphone_state::base_portc_r));
}
+void spg2xx_game_doraphone_state::doraphonep(machine_config &config)
+{
+ doraphone(config);
+
+ m_maincpu->set_pal(true);
+ m_screen->set_refresh_hz(50);
+}
+
ROM_START( rad_skat )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
@@ -2095,6 +2110,11 @@ ROM_START( doraphon )
ROM_LOAD16_WORD_SWAP( "doraphone.bin", 0x000000, 0x800000, CRC(a79c154b) SHA1(f5b9bf63ea52d058252ab6702508b519fbdee0cc) )
ROM_END
+ROM_START( doraphonf )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "doraphone_fr.u4", 0x000000, 0x800000, CRC(216632a1) SHA1(b2bd81656a261e09814792f52428eead2ea7ce1f) )
+ROM_END
+
ROM_START( doraglob )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "doraglobe.bin", 0x000000, 0x800000, CRC(6f454c50) SHA1(201e2de3d90abe017a8dc141613cbf6383423d13) )
@@ -2125,6 +2145,10 @@ ROM_START( tiktokmm )
ROM_LOAD16_WORD_SWAP( "webcamthingy.bin", 0x000000, 0x800000, CRC(54c0d4a9) SHA1(709ee607ca447baa6f7e686268df1998372fe617) )
ROM_END
+ROM_START( jeuint )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "jeuinteractiftv.bin", 0x000000, 0x800000, CRC(27103086) SHA1(d1313f416ae8ec85e523fefd523d6f4b7970eaf3) )
+ROM_END
ROM_START( hotwhl2p )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
@@ -2187,6 +2211,13 @@ void spg2xx_game_ordentv_state::init_ordentv()
rom[0x4fef8] = 0xee07;
}
+void spg2xx_game_ordentv_state::init_jeuint()
+{
+ // the game will die by jumping to an infinite loop if this check fails, what is it checking?
+ uint16_t* rom = (uint16_t*)memregion("maincpu")->base();
+ rom[0x53376] = 0xee07;
+}
+
void spg2xx_game_state::init_itvphone()
{
// the game will die by jumping to an infinite loop if this check fails, what is it checking?
@@ -2243,7 +2274,8 @@ CONS( 2006, vtechtvsgr, 0, 0, spg2xx, spg2xx, spg2xx_game_state,
CONS( 2007, itvphone, 0, 0, spg2xx_pal, itvphone, spg2xx_game_state, init_itvphone, "Taikee / Oregon Scientific / V-Tac Technology Co Ltd.", u8"Teléfono interactivo de TV (Spain)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// "Boots's" is used on the title screen and in the manual, even if "Boots'" is usually used outside of this game.
-CONS( 2006, doraphon, 0, 0, doraphone, doraphone, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Explorer Phone / Boots's Special Day", MACHINE_IMPERFECT_SOUND )
+CONS( 2006, doraphon, 0, 0, doraphone, doraphone, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Explorer Phone / Boots's Special Day (US)", MACHINE_IMPERFECT_SOUND )
+CONS( 2006, doraphonf, doraphon, 0, doraphonep,doraphonep,spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Explorer Phone / L'anniversaire de Babouche (France)", MACHINE_IMPERFECT_SOUND )
// This was from a 'cost reduced' unit with the 'non-TV' mode switch and internal speaker removed, however it looks like the code was not disabled or removed as the mode is fully functional.
// The ZC-Infinity video for this on YouTube shows the map scrolling to center the continent, there doesn't appear to be an input for this, different revision?
// Dutch and French localized versions also exists, which again must be different code
@@ -2279,7 +2311,9 @@ CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state,
// there's also a single player Hot Wheels Plug and Play that uses a wheel style controller
CONS( 2006, hotwhl2p, 0, 0, hotwheels, hotwheels, spg2xx_game_hotwheels_state,empty_init, "Mattel", "Hot Wheels (2 player, pad controllers)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+// there was also an English release of this, simply titled "Interactive TV Computer"
CONS( 2007, ordentv, 0, 0, ordentv, ordentv, spg2xx_game_ordentv_state, init_ordentv, "Taikee / V-Tac", "Ordenador-TV (Spain)", MACHINE_NOT_WORKING )
+CONS( 2007, jeuint, ordentv, 0, ordentv, ordentv, spg2xx_game_ordentv_state, init_jeuint, "Taikee / V-Tac", u8"Jeu Intéractif TV (France)", MACHINE_NOT_WORKING)
CONS( 200?, wfcentro, 0, 0, wfcentro, spg2xx, spg2xx_game_wfcentro_state, empty_init, "WinFun", "Centro TV de Diseno Artistico (Spain)", MACHINE_NOT_WORKING )
diff --git a/src/mame/tvgames/spg2xx.h b/src/mame/tvgames/spg2xx.h
index 67618304f22..2aad7984a9c 100644
--- a/src/mame/tvgames/spg2xx.h
+++ b/src/mame/tvgames/spg2xx.h
@@ -307,6 +307,7 @@ public:
void ordentv(machine_config &config);
void init_ordentv();
+ void init_jeuint();
protected:
@@ -346,6 +347,7 @@ public:
{ }
void doraphone(machine_config &config);
+ void doraphonep(machine_config &config);
private:
uint16_t porta_r(offs_t offset, uint16_t mem_mask = ~0);