diff --git a/hash/jpopira_jp.xml b/hash/jpopira_jp.xml index e37e8b367c2..8e2d26067a8 100644 --- a/hash/jpopira_jp.xml +++ b/hash/jpopira_jp.xml @@ -23,7 +23,7 @@ 2004 Takara - + @@ -35,7 +35,7 @@ 2004 Takara - + diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 26371ff641c..fa6087e3333 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -9,49 +9,67 @@ die markings show "SunPlus QL8041" ( also known as Sunplus SPG240 & PAC300 ) - (all GameKeyReady units?) - Disney Princess (GKR) - Wheel of Fortune (GKR) - JAKKS WWE (GKR) - Fantastic 4 (GKR) - Justice League (GKR) - Dora the Explorer Nursery Rhyme (GKR) - Dora the Explorer Play Park (GKR) - Spiderman 5-in-1 (GKR) - etc. + (all GameKeyReady units?) + Disney Princess (GKR) + Wheel of Fortune (GKR) + JAKKS WWE (GKR) + Fantastic 4 (GKR) + Justice League (GKR) + Dora the Explorer Nursery Rhyme (GKR) + Dora the Explorer Play Park (GKR) + Spiderman 5-in-1 (GKR) + etc. - (other non GKR JAKKS games) - X-Men (Wolverine pad) - Avatar: The Last Airbender + (other non GKR JAKKS games) + X-Men (Wolverine pad) + Avatar: The Last Airbender - (other games) - Mattel Classic Sports + (other games) + 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 + + 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 + Mortal Kombat + "Sunplus PU7799-P680?" (difficult to read) - Mission Paintball + + 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) + 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 ) diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index f68ab35d8c9..e5f3630d937 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -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 @@ -2020,7 +2056,7 @@ CONS( 2006, ltv_tam, 0, 0, xavix_i2c_24lc04, ltv_tam,xavix_i2c_ltv_ these use the SSD 2000 NEC 85605-621 type CPU XavixPort Golf is "SSD 2003 SuperXaviX MXIC 2003 3009" (not dumped yet, but actually marked as SuperXaviX unlike the others!) - + This CPU type adds extra opcodes that don't appear to be present in the 97/98 types It does not appear to support the bitmap modes or 16-bit ROMs found in the 2002 type */ diff --git a/src/mame/includes/xavix.h b/src/mame/includes/xavix.h index b37185ec0c5..9bcd83ac4cc 100644 --- a/src/mame/includes/xavix.h +++ b/src/mame/includes/xavix.h @@ -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); diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp index db535016a88..2745b98b078 100644 --- a/src/mame/machine/xavix.cpp +++ b/src/mame/machine/xavix.cpp @@ -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) { - m_i2cmem->write_sda((data & 0x08) >> 3); - m_i2cmem->write_scl((data & 0x10) >> 4); + 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); } diff --git a/src/mame/mame.lst b/src/mame/mame.lst index fee4b9978fd..4e370156594 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -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 //