From 1a4287925e3982e2f782dee6f62b198984b839de Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Sun, 10 Dec 2023 23:45:41 +0000 Subject: skeleton/easy_karaoke.cpp: Added the original IVL release of Easy Karaoke (KaraokeTV Star). (#11794) [Sean Riddle, David Haywood] * This system used a (now long defunct) download service rather than cartridges for adding songs. * Current dump does not appear to contain any downloaded songs. * Also listed built-in songs in comments. New systems marked not working ------------------- IVL Technologies KaraokeTV Star (US, with 50 songs) [Sean Riddle, David Haywood] --- src/mame/mame.lst | 1 + src/mame/skeleton/easy_karaoke.cpp | 170 +++++++++++++++++++++++++++++-------- 2 files changed, 135 insertions(+), 36 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index cc6218f40bc..dede1eed35d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -41456,6 +41456,7 @@ e100 // @source:skeleton/easy_karaoke.cpp easykara karams +karatvst @source:skeleton/elcirculo.cpp elcirculo // (c) 1980 Inder diff --git a/src/mame/skeleton/easy_karaoke.cpp b/src/mame/skeleton/easy_karaoke.cpp index 54e03bf4039..d893891fa45 100644 --- a/src/mame/skeleton/easy_karaoke.cpp +++ b/src/mame/skeleton/easy_karaoke.cpp @@ -2,12 +2,19 @@ // copyright-holders:David Haywood /****************************************************************************** - Easy Karaoke (c)IVL Technologies + IVL Technologies Karaoke systems - A version of this was also released in France by Lexibook, with French songs + KaraokeTV Star (c) IVL Technologies + licensed out as - This uses + KaraokeStation (Japan) (c) Bandai + Easy Karaoke Groove Station (UK) (c) Easy Karaoke + KaraokeMicro Star (France) (c) Lexibook + + ------------------------------------- + + Easy Karaoke uses Clarity 4.3 ARM SVI1186 @@ -63,6 +70,8 @@ ------------------ + KaraokeTV Star also uses the Clarity 4.1 but with "JVR043 0225" numbering + 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 @@ -85,32 +94,24 @@ namespace { -class easy_karaoke_state : public driver_device +class ivl_karaoke_state : public driver_device { public: - easy_karaoke_state(const machine_config &mconfig, device_type type, const char *tag) + ivl_karaoke_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_screen(*this, "screen") - , m_cart(*this, "cartslot") - , m_cart_region(nullptr) { } - void easy_karaoke(machine_config &config); + void ivl_karaoke_base(machine_config &config); -private: +protected: virtual void machine_start() override; virtual void machine_reset() override; - void easy_karaoke_base(machine_config &config); - - DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); - +private: required_device m_maincpu; - required_device m_screen; - required_device m_cart; - memory_region *m_cart_region; uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -119,13 +120,41 @@ private: void arm_map(address_map &map); }; -uint32_t easy_karaoke_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +class easy_karaoke_cartslot_state : public ivl_karaoke_state +{ +public: + easy_karaoke_cartslot_state(const machine_config &mconfig, device_type type, const char *tag) + : ivl_karaoke_state(mconfig, type, tag) + , m_cart(*this, "cartslot") + , m_cart_region(nullptr) + { } + + void easy_karaoke(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); + + required_device m_cart; + memory_region *m_cart_region; +}; + +uint32_t ivl_karaoke_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; } -void easy_karaoke_state::machine_start() +void ivl_karaoke_state::machine_start() +{ + +} + +void easy_karaoke_cartslot_state::machine_start() { + ivl_karaoke_state::machine_start(); + // if there's a cart, override the standard mapping if (m_cart && m_cart->exists()) { @@ -133,12 +162,12 @@ void easy_karaoke_state::machine_start() } } -void easy_karaoke_state::machine_reset() +void ivl_karaoke_state::machine_reset() { m_maincpu->set_state_int(ARM7_R15, 0x04000000); } -DEVICE_IMAGE_LOAD_MEMBER(easy_karaoke_state::cart_load) +DEVICE_IMAGE_LOAD_MEMBER(easy_karaoke_cartslot_state::cart_load) { uint32_t const size = m_cart->common_get_size("rom"); @@ -148,48 +177,110 @@ DEVICE_IMAGE_LOAD_MEMBER(easy_karaoke_state::cart_load) return std::make_pair(std::error_condition(), std::string()); } -static INPUT_PORTS_START( easy_karaoke ) +static INPUT_PORTS_START( ivl_karaoke ) INPUT_PORTS_END -uint32_t easy_karaoke_state::a000004_r() +uint32_t ivl_karaoke_state::a000004_r() { return machine().rand(); } -void easy_karaoke_state::arm_map(address_map &map) +void ivl_karaoke_state::arm_map(address_map &map) { map(0x00000000, 0x007fffff).ram(); map(0x04000000, 0x047fffff).rom().region("maincpu", 0); - map(0x0a000004, 0x0a000007).r(FUNC(easy_karaoke_state::a000004_r)); + map(0x0a000004, 0x0a000007).r(FUNC(ivl_karaoke_state::a000004_r)); } -void easy_karaoke_state::easy_karaoke_base(machine_config &config) +void ivl_karaoke_state::ivl_karaoke_base(machine_config &config) { ARM9(config, m_maincpu, 72000000); // ARM 720 core - m_maincpu->set_addrmap(AS_PROGRAM, &easy_karaoke_state::arm_map); + m_maincpu->set_addrmap(AS_PROGRAM, &ivl_karaoke_state::arm_map); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_size(320, 262); m_screen->set_visarea(0, 320-1, 0, 240-1); - m_screen->set_screen_update(FUNC(easy_karaoke_state::screen_update)); + m_screen->set_screen_update(FUNC(ivl_karaoke_state::screen_update)); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - - GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "easy_karaoke_cart"); - m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(easy_karaoke_state::cart_load)); - } -void easy_karaoke_state::easy_karaoke(machine_config &config) +void easy_karaoke_cartslot_state::easy_karaoke(machine_config &config) { - easy_karaoke_base(config); + ivl_karaoke_base(config); + + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "easy_karaoke_cart"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_device_load(FUNC(easy_karaoke_cartslot_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("easy_karaoke_cart"); } +/* +The 'karatvst' set has the following 50 songs built in, there don't appear to be any downloaded songs in this NAND dump + +ABC Jackson 5 +All I Have To Give Backstreet Boys +Always On My Mind Elvis Presley +America The Beautiful Standard +Baby Love Supremes +...Baby One More Time Britney Spears +Born To Make You Happy Britney Spears +Brick House The Commodores +Bye Bye Bye N'Sync +Dancing Queen Abba +Don't Let Me Get Me pink +Drive (For Daddy Gene) Alan Jackson +Fallin' Alicia Keys +Girlfriend N'Sync +Goodbye Earl Dixie Chicks +Hit 'Em Up Style Blu Cantrell +I Believe I Can Fly R. Kelly +I Heard It Through the Grapevine Marvin Gaye +I Should Be Sleeping Emerson Drive +I Wanna Know Joe +I Want It That Way Backstreet Boys +If You're Gone Matchbox 20 +It's A Great Day To Be Alive Travis Tritt +Lady Marmalade Christina Aguilera +Love Shack B52's +Me And Bobby McGee Kris Kristofferson +My Girl Temptations +My Guy Mary Wells +New York New York Frank Sinatra +No More Drama Mary J. Blige +One Fine Day Chiffons +Oops...I Did It Again Britney Spears +Over The Rainbow Judy Garland +Overprotected Britney Spears +Stand By Your Man Tammy Wynette +Star Spangled Banner Public Domain +Stop In The Name Of Love Supremes +Stronger Britney Spears +Super Freak Rick James +Superman Five For Fighting +That's The Way (I Like It) KC And The Sunshine Band +The Greatest Love Of All Whitney Houston +The Loco-Motion Kylie Minogue +The One Backstreet Boys +There Is No Arizona Jamie O'Neal +We Wish You A Merry Xmas Traditional +What's Going On Marvin Gaye +Wild Thing The Troggs +Wrapped Around Brad Paisley +You Can't Hurry Love The Supremes + +*/ +ROM_START( karatvst ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD16_WORD_SWAP( "karaoke37vf010.bin", 0x000000, 0x20000, CRC(9d3020e4) SHA1(bce5d42ecff88b310a43599c9e47cba920c6b6e1) ) // bootloader + + ROM_REGION( 0x840000, "nand", ROMREGION_ERASEFF ) // NAND with main program, graphics, built in songs (and potentially user downloads) + ROM_LOAD( "karaoketc58v64bft.bin", 0x000000, 0x840000, CRC(8cf42f20) SHA1(fae09ab08035e8c894fe00dcb23746ea78391d7f) ) +ROM_END + /* The 'easykara' set has the following 10 songs built in. @@ -273,6 +364,13 @@ ROM_END } // anonymous namespace +// This is the original US release, there's no cartridge slot, but it has a NAND Flash inside, and in addition to 50 built-in songs, advertises +// use of a (now defunct) www.onkeysongs.com service for downloading additional songs to the microphone via bundled PC software. +CONS( 2002, karatvst, 0, 0, ivl_karaoke_base, ivl_karaoke, ivl_karaoke_state, empty_init, "IVL Technologies", "KaraokeTV Star (US, with 50 songs)", MACHINE_IS_SKELETON ) +// There is also a 35 song US version +// The "Memorex Star Singer Karaoke / MKS4001" is also made by IVL and boasts 50 built in songs, the casing is different, so it could differ from the standard version. +// There is a Japanese version, KaraokeStation, put out by Bandai in 2002 with similar internals to the US version ( http://www.akihito.spawn.jp/20021026.karaokestation/ ) -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 ) +// The European releases take cartridges rather than relying on a download service +CONS( 2004, easykara, karatvst, 0, easy_karaoke, ivl_karaoke, easy_karaoke_cartslot_state, empty_init, "IVL Technologies (Easy Karaoke license)", "Easy Karaoke Groove Station (UK)", MACHINE_IS_SKELETON ) +CONS( 2003, karams, karatvst, 0, easy_karaoke, ivl_karaoke, easy_karaoke_cartslot_state, empty_init, "IVL Technologies (Lexibook license)", "KaraokeMicro Star (France)", MACHINE_IS_SKELETON ) -- cgit v1.2.3