mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
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]
This commit is contained in:
parent
b442d7d243
commit
1a4287925e
@ -41456,6 +41456,7 @@ e100 //
|
||||
@source:skeleton/easy_karaoke.cpp
|
||||
easykara
|
||||
karams
|
||||
karatvst
|
||||
|
||||
@source:skeleton/elcirculo.cpp
|
||||
elcirculo // (c) 1980 Inder
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<generic_slot_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<generic_slot_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();
|
||||
}
|
||||
|
||||
void easy_karaoke_cartslot_state::easy_karaoke(machine_config &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_state::cart_load));
|
||||
|
||||
}
|
||||
|
||||
void easy_karaoke_state::easy_karaoke(machine_config &config)
|
||||
{
|
||||
easy_karaoke_base(config);
|
||||
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 )
|
||||
|
Loading…
Reference in New Issue
Block a user