new WORKING machines (Jumping Popira) (#4752)

* new NOT WORKING machines
---
Jumping Popira [Sean Riddle, Peter Wilhelmsen, ShouTime, David Haywood]

(seeprom? troubles, i've documented a hack to bypass them right now, but then it boots in an invalid state thinking you've cleared all songs with some corruption due to that)

* new NOT WORKING machines
---
Fun 2 Learn Smart Fit Park [Sean Riddle, Clawgrip]

* (nw)

* promote jumping popira (nw)

* preinit for now (nw)
This commit is contained in:
David Haywood 2019-03-11 20:20:03 +00:00 committed by ajrhacker
parent a4d666aa08
commit 1c8b595998
6 changed files with 120 additions and 40 deletions

View File

@ -23,7 +23,7 @@
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<!--<feature name="slot" value="rom_24lc04"/>-->
<feature name="slot" value="rom_24lc04"/>
<dataarea name="rom" size="0x200000">
<rom name="jp1.bin" size="0x200000" crc="106544c5" sha1="1bff363ce13c0eaf344a8f36ed004c78e0ddd007" offset="0" />
</dataarea>
@ -35,7 +35,7 @@
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<!--<feature name="slot" value="rom_24lc04"/>-->
<feature name="slot" value="rom_24lc04"/>
<dataarea name="rom" size="0x200000">
<rom name="jp2.bin" size="0x200000" crc="f66d8ee8" sha1="3624c89197b1579fc60d5c40ff30bca248428a6c" offset="0" />
</dataarea>

View File

@ -28,30 +28,48 @@
Mattel Classic Sports
"SunPlus QL8041C" ( known as Sunplus SPG2??, seems to be compatible with above, so probably just a chip revision )
Clickstart ( see clickstart.cpp instead)
Wheel of Fortune 2nd Edition
Spider-man - Villain Roundup
"SunPlus PA7801" ( known as Sunplus SPG110? ) see spg110.cpp instead
Classic Arcade Pinball
EA Sports (NHL95 + Madden 95)
Spiderman 5-in-1 (original release)
"SunPlus QU7074-P69A"
The Batman
---
It is unknown if the following are close to this architecture or not (no dumps yet)
"SunPlus QU7073-P69A"
Mortal Kombat
"Sunplus PU7799-P680?" (difficult to read)
Mission Paintball
"Sunplus QL8167"
Disney Princess (newer?)
Go Diego Go
Shrek - Over the Hedge (this unit shows a GameKey Unlock More Games' on startup, but has no port, not even on the internal PCB)
Marvel Heroes (Spider-man)
Spiderman 3 (Movie - black)
---
These are definitely different
"SunPlus PA7801" ( known as Sunplus SPG110? ) see spg110.cpp instead
Classic Arcade Pinball
EA Sports (NHL95 + Madden 95)
Spiderman 5-in-1 (original release)
"GCM394" (this is clearly newer, has extra opcodes, different internal map etc.)
Smart Fit Park
Status:
@ -2244,6 +2262,13 @@ ROM_START( dreamlif )
ROM_LOAD16_WORD_SWAP( "dreamlife.bin", 0x000000, 0x800000, CRC(632e0237) SHA1(a8586e8a626d75cf7782f13cfd9f1b938af23d56) )
ROM_END
ROM_START( smartfp )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "smartfitpark.bin", 0x000000, 0x800000, CRC(ada84507) SHA1(a3a80bf71fae62ebcbf939166a51d29c24504428) )
ROM_END
ROM_START( icanguit )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
// no internal ROM, requires a cartridge
@ -2474,8 +2499,10 @@ CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, emp
// Hasbro games
CONS( 2007, dreamlif, 0, 0, rad_skat, rad_crik, spg2xx_game_state, empty_init, "Hasbro", "Dream Life", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2007, icanguit, 0, 0, icanguit, icanguit, icanguit_state, empty_init, "Mattel / Fisher-Price", "I Can Play Guitar", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2007, icanpian, 0, 0, icanpian, icanpian, icanguit_state, empty_init, "Mattel / Fisher-Price", "I Can Play Piano", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2007, icanguit, 0, 0, icanguit, icanguit, icanguit_state, empty_init, "Fisher-Price", "I Can Play Guitar", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2007, icanpian, 0, 0, icanpian, icanpian, icanguit_state, empty_init, "Fisher-Price", "I Can Play Piano", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// might not fit here. First 0x8000 bytes are blank (not too uncommon for these) then rest of rom looks like it's probably encrypted at least
// could be later model VT based instead? even after decrypting (simple word xor) the vectors have a different format and are at a different location to the SunPlus titles
@ -2487,6 +2514,9 @@ CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_game_stat
// valid looking code, but extended periperhal area (twice the size?) makes use of unemulated opcode 0xfe00 ?
CONS( 2011, wrlshunt, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Hamy / Kids Station Toys Inc", "Wireless Hunting Video Game System", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
// extended opcodes different internal map?
CONS( 2009, smartfp, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Fisher-Price", "Fun 2 Learn Smart Fit Park", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// Fun 2 Learn 3-in-1 SMART SPORTS ?
// NAND dumps w/ internal bootstrap. Almost certainly do not fit in this driver, as the SPG2xx can only address up to 4Mwords. These are 'GeneralPlus' instead?
CONS( 2010, wlsair60, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Jungle Soft / Kids Station Toys Inc", "Wireless Air 60", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )

View File

@ -634,6 +634,21 @@ static INPUT_PORTS_START( taikodp )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_cart_state,i2c_r, nullptr)
INPUT_PORTS_END
static INPUT_PORTS_START( jpopira )
PORT_INCLUDE(xavix)
PORT_MODIFY("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pad 1")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Pad 2")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pad 3")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Pad 4")
PORT_MODIFY("IN1")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_i2c_cart_state,i2c_r, nullptr)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off.
INPUT_PORTS_END
static INPUT_PORTS_START( xavixp )
PORT_INCLUDE(xavix)
@ -1559,8 +1574,18 @@ void xavix_i2c_cart_state::xavix_i2c_taiko(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_d").set_original("ekara_japan_d");
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
}
// do any of the later G/P series carts with SEEPROM work with this too? check
void xavix_i2c_cart_state::xavix_i2c_jpopira(machine_config &config)
{
xavix_cart(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(0x100); // 24LC02
SOFTWARE_LIST(config, "cart_list_jpopira_jp").set_original("jpopira_jp"); // NOTE, these are for Jumping Popira only, they don't work with the karaoke or regular popira units
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
}
void xavix_cart_state::xavix_cart_ekara(machine_config &config)
@ -1582,7 +1607,6 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_a").set_original("ekara_japan_a");
SOFTWARE_LIST(config, "cart_list_japan_gk").set_original("ekara_japan_gk");
SOFTWARE_LIST(config, "cart_list_japan_bh").set_original("ekara_japan_bh");
SOFTWARE_LIST(config, "cart_list_jpopira_jp").set_original("jpopira_jp"); // NOTE, these are for Jumping Popira only, they don't work with the karaoke or regular popira units
}
void xavix_cart_state::xavix_cart_popira(machine_config &config)
@ -1891,6 +1915,15 @@ ROM_START( taikodp )
ROM_RELOAD(0x000000, 0x200000)
ROM_END
ROM_START( jpopira )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "jumpingpopira.bin", 0x600000, 0x200000, CRC(a7bedbd2) SHA1(d62d4ca660c8df14891217fb7b7a2b4a931ff35f) )
ROM_RELOAD(0x000000, 0x200000)
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 ) // maybe we can remove this eventually, but for now it won't init without a reset between
ROM_LOAD( "i2cmem.bin", 0x000, 0x100, CRC(70a05af1) SHA1(e8f4ab51445777fe459f9ff09333f548c4e3507c) )
ROM_END
ROM_START( evio )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "evio.bin", 0x600000, 0x200000, CRC(ee22c764) SHA1(f2b7e213eb78065a63ef484a619bcfc61299e30e))
@ -2008,6 +2041,9 @@ CONS( 2002, popira2, 0, 0, xavix_cart_popira,popira2, xavix_popira2
CONS( 2003, taikodp, 0, 0, xavix_i2c_taiko, taikodp, xavix_i2c_cart_state, init_xavix, "Takara / SSD Company LTD", "Taiko De Popira (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? are the drums analog?
CONS( 2004, jpopira, 0, 0, xavix_i2c_jpopira,jpopira, xavix_i2c_cart_state, init_xavix, "Takara / SSD Company LTD", "Jumping Popira (Japan)", MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ )
CONS( 2003, evio, 0, 0, xavix_nv, evio, xavix_state, init_xavix, "Tomy / SSD Company LTD", "Evio (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*|MACHINE_IS_BIOS_ROOT*/ ) // inputs? it's a violin controller

View File

@ -903,6 +903,7 @@ public:
{ }
void xavix_i2c_taiko(machine_config &config);
void xavix_i2c_jpopira(machine_config &config);
DECLARE_CUSTOM_INPUT_MEMBER(i2c_r);

View File

@ -547,12 +547,16 @@ CUSTOM_INPUT_MEMBER(xavix_ekara_state::ekara_multi1_r)
uint8_t xavix_state::read_io0(uint8_t direction)
{
// LOG("%s: read_io0\n", machine().describe_context());
// no special handling
return m_in0->read();
}
uint8_t xavix_state::read_io1(uint8_t direction)
{
// LOG("%s: read_io1\n", machine().describe_context());
// no special handling
return m_in1->read();
}
@ -605,8 +609,15 @@ void xavix_i2c_ltv_tam_state::write_io1(uint8_t data, uint8_t direction)
// for taikodp
void xavix_i2c_cart_state::write_io1(uint8_t data, uint8_t direction)
{
if (direction & 0x08)
{
m_i2cmem->write_sda((data & 0x08) >> 3);
}
if (direction & 0x10)
{
m_i2cmem->write_scl((data & 0x10) >> 4);
}
}
void xavix_ekara_state::write_io0(uint8_t data, uint8_t direction)
@ -713,14 +724,14 @@ READ8_MEMBER(xavix_state::io1_direction_r)
WRITE8_MEMBER(xavix_state::io0_data_w)
{
m_io0_data = data;
write_io0(data, m_io0_direction);
write_io0((data & m_io0_direction) | (read_io0(m_io0_direction) & ~m_io0_direction), m_io0_direction);
LOG("%s: io0_data_w %02x\n", machine().describe_context(), data);
}
WRITE8_MEMBER(xavix_state::io1_data_w)
{
m_io1_data = data;
write_io1(data, m_io1_direction);
write_io1((data & m_io1_direction) | (read_io1(m_io1_direction) & ~m_io1_direction), m_io1_direction);
LOG("%s: io1_data_w %02x\n", machine().describe_context(), data);
}

View File

@ -38762,6 +38762,7 @@ rad_crik //
rad_fb2 //
mattelcs //
dreamlif //
smartfp //
icanguit //
icanpian //
@ -39949,6 +39950,7 @@ ddrfammt //
popira //
popira2 //
taikodp //
jpopira //
evio //
ttv_sw //
ttv_lotr //