Added various TV games and cartridges: (#12072)

* nintendo/nes_clone.cpp: Added Croaky Karaoke 16-in-1.
* skeleton/hudson_poems.cpp: Implemented tile flip enable flag and added Spoo Daisuki! Playmat.
* tvgames/spg2xx.cpp: Added Dora TV Globe-Trotter (France) and Lexibook Junior My 1st Drawing Studio.
* tvgames/xavix.cpp: Added Tokyo Friend Park 2.
* gcslottv.xml: Added Juu-ou Junior cartridge.

New working systems
-------------
Epoch / SSD Company LTD Tokyo Friend Park 2 (Japan) [David Haywood, TeamEurope]

New working clones
--------------
VTech Dora the Explorer - Dora TV Globe-Trotter (France) [David Haywood, TeamEurope]

New systems marked not working
------------
Croaky Karaoke 16-in-1 [David Haywood, TeamEurope]
Konami Goo Choco Lantan Spoo Daisuki! Playmat [David Haywood, TeamEurope]
Lexibook Junior My 1st Drawing Studio [David Haywood, TeamEurope]

New software list items marked not working
---------------
gcslottv.xml: Jū-ō Junior [David Haywood, TeamEurope]
This commit is contained in:
mamehaze 2024-03-01 15:51:54 +00:00 committed by GitHub
parent af6cef00fa
commit 2208d6f74e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 167 additions and 16 deletions

View File

@ -21,7 +21,7 @@ license:CC0-1.0
</part>
</software>
<software name="ginginma" supported="no">
<software name="ginginma" supported="no"> <!-- inputs do not respond on this one -->
<description>Ginginmaru TV</description>
<year>2002</year>
<publisher>Sammy</publisher>
@ -45,6 +45,19 @@ license:CC0-1.0
</part>
</software>
<!-- green cartridge -->
<software name="juojr" supported="no">
<description>Jū-ō Junior</description>
<year>2002</year>
<publisher>Sammy</publisher>
<info name="alt_title" value="獣王 Junior"/>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x200000">
<rom name="beastkingjr.u1" size="0x200000" crc="3e940c19" sha1="34bb55d8b8a574478d2e3646b73b6fe5d4ca46a9"/>
</dataarea>
</part>
</software>
<software name="mojuotv" supported="no">
<description>Mōjū-ō TV</description>
<year>2002</year>

View File

@ -34237,6 +34237,7 @@ smb3bl
@source:nintendo/nes_clone.cpp
afbm7800
croaky
dancexpt
digezlg
dnce2000
@ -41729,6 +41730,7 @@ ht68k //
marimba //
poembase
poemgolf
poemspoo
poemzet
poemzet2
@ -44934,6 +44936,7 @@ comil //
decathln
decathlna
doraglob // (c) 2007 VTech
doraglobf
doraglobg
doraphon // (c) 2006 VTech
doraphonf
@ -44949,6 +44952,7 @@ jeuint
jjstrip
jouet
knd
lexiart
lxairjet
lxspidaj
mattelcs //
@ -45167,6 +45171,7 @@ epo_epp3 //
epo_eppk //
epo_esdx //
epo_guru //
epo_tfp2 //
evio //
gcslottv //
gungunad //

View File

@ -1311,6 +1311,11 @@ ROM_START( dnce2000 ) // use Mapper 241 if you want to run this in a NES emulato
ROM_LOAD( "dance.bin", 0x00000, 0x40000, CRC(0982bb50) SHA1(bd608159d7e624ea345f2a188de51cb1aa116421) )
ROM_END
ROM_START( croaky )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "croakykaraoke_16in1.bin", 0x00000, 0x80000, CRC(5f939fd6) SHA1(9dd56b1ee5f27a7d9b42c2638c6a06fac5554c9b) )
ROM_END
ROM_START( vtvppong )
ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 ) // high bit is never set in the first 0x28000 bytes of this ROM, probably 7-bit sound data? code might need opcode bits swapping
ROM_LOAD( "vtvpongcpu.bin", 0x00000, 0x40000, CRC(52df95fa) SHA1(3015bcc90eee862b3568f122b402c9defa566aab) )
@ -1369,6 +1374,8 @@ CONS( 2004, afbm7800, 0, 0, nes_clone_afbm7800, nes_clone, nes_clone_afbm7
CONS( 200?, dnce2000, 0, 0, nes_clone_dnce2000, dnce2000, nes_clone_dnce2000_state, init_nes_clone, "Shenzhen Soyin Electric Appliance Ind. Co., Ltd.", "Dance 2000 / Hot 2000 (Jin Bao TV Dancing Carpet, SY-2000-04)", 0 )
CONS( 2002, croaky, 0, 0, nes_clone_dnce2000, nes_clone, nes_clone_dnce2000_state, init_nes_clone, "<unknown>", "Croaky Karaoke 16-in-1", MACHINE_NOT_WORKING ) // no inputs
// Black pad marked 'SUDOKU' with tails on the S and U characters looping over the logo. Box says "Plug and Play Sudoku"
// Has 2 sets of 4 buttons in circular 'direction pad' layouts (on the left for directions, on the right for functions) and 9 red numbered buttons with red power LED on left of them, and reset button on right
// Alt. version was released with 'New York Times' titlescreen

View File

@ -71,8 +71,8 @@ protected:
private:
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_tile(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal);
void draw_tile8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal);
void draw_tile(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal, bool use_flips);
void draw_tile8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal, bool use_flips);
void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_tilemap(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int which, int priority);
@ -228,6 +228,11 @@ static INPUT_PORTS_START( poemzet )
PORT_START( "IN1" )
INPUT_PORTS_END
static INPUT_PORTS_START( poemspoo )
PORT_START( "IN1" )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
void hudson_poems_state::draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int spritebase = (m_spritelistbase & 0x0003ffff) / 4;
@ -314,6 +319,8 @@ void hudson_poems_state::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitma
{
int width, base, bpp, gfxbase, extrapal;
bool use_flips;
// guess, could be more/less bits, or somewhere else entirely, works for the 2 scenes that need it
const int thispriority = (m_tilemapcfg[which] & 0x01f00000) >> 20;
@ -336,6 +343,14 @@ void hudson_poems_state::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitma
else
bpp = 4;
// this might not be the correct enable flag
// marimba needs 2 of the tile bits to act as flip, while poemspoo, poembase, poemgolf use them as tile number bits
if (m_tilemapcfg[which] & 0x10000000)
use_flips = false;
else
use_flips = true;
if (m_tilemapcfg[which] & 0x00080000)
extrapal = 1;
else
@ -388,13 +403,13 @@ void hudson_poems_state::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitma
if (bpp == 4)
{
draw_tile(screen, bitmap, cliprect, (tiles & 0xffff), xpos, ypos, gfxbase, extrapal);
draw_tile(screen, bitmap, cliprect, ((tiles >> 16) & 0xffff), xpos + 8, ypos, gfxbase, extrapal);
draw_tile(screen, bitmap, cliprect, (tiles & 0xffff), xpos, ypos, gfxbase, extrapal, use_flips);
draw_tile(screen, bitmap, cliprect, ((tiles >> 16) & 0xffff), xpos + 8, ypos, gfxbase, extrapal, use_flips);
}
else if (bpp == 8)
{
draw_tile8(screen, bitmap, cliprect, (tiles & 0xffff), xpos, ypos, gfxbase, extrapal);
draw_tile8(screen, bitmap, cliprect, ((tiles >> 16) & 0xffff), xpos + 8, ypos, gfxbase, extrapal);
draw_tile8(screen, bitmap, cliprect, (tiles & 0xffff), xpos, ypos, gfxbase, extrapal, use_flips);
draw_tile8(screen, bitmap, cliprect, ((tiles >> 16) & 0xffff), xpos + 8, ypos, gfxbase, extrapal, use_flips);
}
}
}
@ -426,26 +441,48 @@ template<int Layer> u32 hudson_poems_state::tilemap_cfg_r(offs_t offset, u32 mem
template<int Layer> u32 hudson_poems_state::tilemap_scr_r(offs_t offset, u32 mem_mask) { return m_tilemapscr[Layer]; }
void hudson_poems_state::draw_tile(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal)
void hudson_poems_state::draw_tile(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal, bool use_flips)
{
gfx_element *gfx = m_gfxdecode->gfx(2);
const int flipx = tile & 0x0800;
const int flipy = tile & 0x0400;
int flipx = 0;
int flipy = 0;
int pal = (tile & 0xf000)>>12;
if (use_flips)
{
flipx = tile & 0x0800;
flipy = tile & 0x0400;
tile &= 0x3ff;
}
else
{
tile &= 0xfff;
}
pal += extrapal * 0x10;
tile &= 0x3ff;
tile += gfxbase / 32;
gfx->transpen(bitmap,cliprect,tile,pal,flipx,flipy,xx,yy, 0);
}
void hudson_poems_state::draw_tile8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal)
void hudson_poems_state::draw_tile8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u32 tile, int xx, int yy, int gfxbase, int extrapal, bool use_flips)
{
gfx_element *gfx = m_gfxdecode->gfx(3);
const int flipx = tile & 0x0800;
const int flipy = tile & 0x0400;
int flipx = 0;
int flipy = 0;
int pal = 0;//(tile & 0xf000)>>8;
if (use_flips)
{
flipx = tile & 0x0800;
flipy = tile & 0x0400;
tile &= 0x3ff;
}
else
{
tile &= 0xfff;
}
pal += extrapal;
tile &= 0x3ff;
tile += gfxbase / 64;
gfx->transpen(bitmap,cliprect,tile,pal,flipx,flipy,xx,yy, 0);
}
@ -893,6 +930,14 @@ ROM_START( poemzet2 )
ROM_LOAD( "at24c08a.u3", 0x000000, 0x400, CRC(5f3d5352) SHA1(94386f5703751e66d6a62e23c344ab7711aad769) )
ROM_END
ROM_START(poemspoo)
ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
ROM_LOAD( "poems_spoo.u2", 0x000000, 0x400000, CRC(1ebc473a) SHA1(6ebc33f274f71183bcd4a93d06e565eff71e2f47) ) // glob with TSOP pads
// seeprom position not populated
ROM_END
} // anonymous namespace
@ -906,3 +951,5 @@ CONS( 2004, poembase, 0, 0, hudson_poems, poemgolf, hudson_po
CONS( 2004, poemzet, 0, 0, hudson_poems, poemzet, hudson_poems_state, init_marimba, "Konami", "Zettai Zetsumei Dangerous Jiisan - Mini Game de Taiketsu ja!", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
CONS( 2005, poemzet2, 0, 0, hudson_poems, poemzet, hudson_poems_state, init_marimba, "Konami", "Zettai Zetsumei Dangerous Jiisan Party ja! Zen-in Shuugou!!", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
CONS( 2005, poemspoo, 0, 0, hudson_poems, poemspoo, hudson_poems_state, init_marimba, "Konami", "Goo Choco Lantan Spoo Daisuki! Playmat", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND)

View File

@ -325,6 +325,14 @@ void spg2xx_game_wfcentro_state::mem_map_wfcentro(address_map &map)
}
void spg2xx_game_lexiart_state::mem_map_lexiart(address_map &map)
{
map(0x000000, 0x3fffff).bankr("cartbank");
map(0x3f0000, 0x3f7fff).ram(); // 2 * 32Kb RAMs on PCB
}
static INPUT_PORTS_START( spg2xx ) // base structure for easy debugging / figuring out of inputs
PORT_START("P1")
PORT_DIPNAME( 0x0001, 0x0001, "P1:0001" )
@ -477,6 +485,15 @@ static INPUT_PORTS_START( spg2xx ) // base structure for easy debugging / figuri
PORT_DIPSETTING( 0x8000, "8000" )
INPUT_PORTS_END
static INPUT_PORTS_START( lexiart )
PORT_INCLUDE( spg2xx )
PORT_MODIFY("P1")
PORT_DIPNAME( 0x0100, 0x0000, "Battery State" )
PORT_DIPSETTING( 0x0000, "Ok" )
PORT_DIPSETTING( 0x0100, "Low" )
INPUT_PORTS_END
static INPUT_PORTS_START( itvphone ) // hold 8 and ENTER for Diagnostics mode
PORT_START("P1") // note, the physical inputs are in 'phone' order, so 1 is top left, not bottom left like a PC Keypad
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 1") PORT_CODE(KEYCODE_1_PAD)
@ -1745,6 +1762,17 @@ void spg2xx_game_wfcentro_state::wfcentro(machine_config &config)
m_maincpu->portc_in().set(FUNC(spg2xx_game_wfcentro_state::base_portc_r));
}
void spg2xx_game_lexiart_state::lexiart(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_lexiart_state::mem_map_lexiart);
spg2xx_base(config);
m_maincpu->porta_in().set(FUNC(spg2xx_game_lexiart_state::base_porta_r));
m_maincpu->portb_in().set(FUNC(spg2xx_game_lexiart_state::base_portb_r));
m_maincpu->portc_in().set(FUNC(spg2xx_game_lexiart_state::base_portc_r));
}
void spg2xx_game_senwfit_state::portc_w(offs_t offset, uint16_t data, uint16_t mem_mask)
@ -2120,6 +2148,11 @@ ROM_START( doraglob )
ROM_LOAD16_WORD_SWAP( "doraglobe.bin", 0x000000, 0x800000, CRC(6f454c50) SHA1(201e2de3d90abe017a8dc141613cbf6383423d13) )
ROM_END
ROM_START( doraglobf )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "doraglobefrance.bin", 0x000000, 0x800000, CRC(7124edc1) SHA1(b144fc1f13a28299ef14f1d01f7acd2677e4ebb9) )
ROM_END
ROM_START( doraglobg )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "doraglobegerman.bin", 0x000000, 0x800000, CRC(538aa197) SHA1(e97e0641df04074a0e45d02cecb43fbec91a4ce6) )
@ -2140,6 +2173,11 @@ ROM_START( wfcentro )
ROM_LOAD16_WORD_SWAP( "winfuncentro.bin", 0x000000, 0x800000, CRC(fd6ad052) SHA1(78af844729bf4843dc70531349e38a8c25caf748) )
ROM_END
ROM_START( lexiart )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "lexibookartstudio.u3", 0x000000, 0x800000, CRC(fc417abb) SHA1(c0a18a2cf11c47086722f0ec88410614fed7c6f7) )
ROM_END
ROM_START( tiktokmm )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "webcamthingy.bin", 0x000000, 0x800000, CRC(54c0d4a9) SHA1(709ee607ca447baa6f7e686268df1998372fe617) )
@ -2278,8 +2316,9 @@ CONS( 2006, doraphon, 0, 0, doraphone, doraphone, spg2xx_game_doraphone
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
// a Dutch localized version also exists, which again must be different code
CONS( 2007, doraglob, 0, 0, doraphone, doraglobe, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Adventure Globe", MACHINE_IMPERFECT_SOUND )
CONS( 2007, doraglobf, doraglob, 0, doraphone, doraglobe, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Globe-Trotter (France)", MACHINE_IMPERFECT_SOUND )
CONS( 2007, doraglobg, doraglob, 0, doraphone, doraglobe, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Doras Abenteuer-Globus (Germany)", MACHINE_IMPERFECT_SOUND )
@ -2317,5 +2356,7 @@ CONS( 2007, jeuint, ordentv, 0, ordentv, ordentv, spg2xx_game_ordentv_s
CONS( 200?, wfcentro, 0, 0, wfcentro, spg2xx, spg2xx_game_wfcentro_state, empty_init, "WinFun", "Centro TV de Diseno Artistico (Spain)", MACHINE_NOT_WORKING )
CONS( 200?, lexiart, 0, 0, lexiart, lexiart, spg2xx_game_lexiart_state, empty_init, "Lexibook", "Lexibook Junior My 1st Drawing Studio", MACHINE_NOT_WORKING )
// set 2862 to 0003 (irq enable) when it stalls on boot to show something (doesn't turn on IRQs again otherwise?) needs camera emulating
CONS( 200?, tiktokmm, 0, 0, spg2xx, spg2xx, spg2xx_game_wfcentro_state, empty_init, "TikTokTech Ltd. / 3T Games / Senario", "Moving Music (MM-TV110)", MACHINE_NOT_WORKING )

View File

@ -297,6 +297,24 @@ private:
void mem_map_wfcentro(address_map& map);
};
class spg2xx_game_lexiart_state : public spg2xx_game_state
{
public:
spg2xx_game_lexiart_state(const machine_config &mconfig, device_type type, const char *tag) :
spg2xx_game_state(mconfig, type, tag)
{ }
void lexiart(machine_config &config);
protected:
private:
void mem_map_lexiart(address_map& map);
};
class spg2xx_game_ordentv_state : public spg2xx_game_state
{
public:

View File

@ -1178,6 +1178,18 @@ static INPUT_PORTS_START( epo_efdx )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
INPUT_PORTS_END
static INPUT_PORTS_START( epo_tfp2 )
PORT_INCLUDE(xavix_i2c)
PORT_MODIFY("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Player 1 Left / Red") PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Player 1 Right / Blue") PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Player 1 Start / Orange")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Player 2 Left / Green") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Player 2 Right / Pink") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("Player 2 Start / Blue")
INPUT_PORTS_END
static INPUT_PORTS_START( has_wamg )
PORT_INCLUDE(xavix)
@ -1993,6 +2005,12 @@ ROM_START( gcslottv )
ROM_LOAD( "sammyslotunit.bin", 0x000000, 0x200000, CRC(2ba6f3ab) SHA1(1c7fc0c85d817db1550d40c0258f424770e0bd81) )
ROM_END
ROM_START( epo_tfp2 )
ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "funpark2.u1", 0x000000, 0x400000, CRC(97ad5183) SHA1(77310b42d0a015838a1cef4eb5e74cc8335284d1) )
ROM_END
@ -2131,3 +2149,5 @@ CONS( 2002, gcslottv, 0, 0, xavix_cart_gcslottv, gcslottv, xavix
CONS( 2006, ltv_tam, 0, 0, xavix_i2c_24lc04_tam, ltv_tam,xavix_i2c_ltv_tam_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Chou Ninki Spot! Korogashi-Houdai Tamagotchi Resort (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2008, hikara, 0, 0, xavix_cart_hikara, hikara, xavix_hikara_state, init_xavix, "Takara Tomy / SSD Company LTD", "Hi-kara (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ )
CONS( 2003, epo_tfp2, 0, 0, xavix_i2c_24c08, epo_tfp2, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Tokyo Friend Park 2 (Japan)", MACHINE_IMPERFECT_SOUND) // uses in24lc08b