From e1cf01ee591a546d56601d89cf9cfaab7ca6d01a Mon Sep 17 00:00:00 2001 From: David Haywood Date: Fri, 23 Nov 2018 14:38:58 +0000 Subject: XaviX - cheap hack to get epo_efdx to show a title screen + dumps of the remaining US e-kara carts (#4322) * cheap hack to get epo_efdx to show a title screen * ekara.xml: added e-kara US volumes 4,5,6,7 [Team Europe + contributors] ekara:us_vol4 e-kara US Volume 4 (US-E004) ekara:us_vol5 e-kara US Volume 5 (US-E005) ekara:us_vol6 e-kara US Volume 6 (US-E006) ekara:us_vol7 e-kara US Volume 7 (US-E007) (and verified starter,1,2,3) * shows 2002 * notes (nw) --- hash/ekara.xml | 102 ++++++++++++++++++++++++++++++++++++++++++--- src/mame/audio/xavix.cpp | 2 +- src/mame/drivers/xavix.cpp | 18 ++++---- src/mame/includes/xavix.h | 18 ++++++-- src/mame/machine/xavix.cpp | 7 ++++ 5 files changed, 129 insertions(+), 18 deletions(-) diff --git a/hash/ekara.xml b/hash/ekara.xml index 8cd9c5e4f55..486613fe345 100644 --- a/hash/ekara.xml +++ b/hash/ekara.xml @@ -262,7 +262,7 @@ --> e-kara US Volume 1 (US-E001) - 2000 + 2001 Takara @@ -285,7 +285,7 @@ --> e-kara US Volume 2 (US-E002) - 2000 + 2001 Takara @@ -308,7 +308,7 @@ --> e-kara US Volume 3 (US-E003) - 2000 + 2001 Takara @@ -317,6 +317,98 @@ + + + e-kara US Volume 4 (US-E004) + 2001 + Takara + + + + + + + + + + e-kara US Volume 5 (US-E005) + 2001 + Takara + + + + + + + + + + e-kara US Volume 6 (US-E006) + 2001 + Takara + + + + + + + + + + e-kara US Volume 7 (US-E007) + 2002 + Takara + + + + + + + e-kara US Volume 8 'No Boys Allowed' (US-E008) - 2002 + 2002 Takara @@ -354,7 +446,7 @@ --> e-kara US Volume 9 'No Boys Allowed' (US-E009) - 2002 + 2002 Takara diff --git a/src/mame/audio/xavix.cpp b/src/mame/audio/xavix.cpp index 2dd8ecae8d8..481ecf65741 100644 --- a/src/mame/audio/xavix.cpp +++ b/src/mame/audio/xavix.cpp @@ -4,7 +4,7 @@ #include "emu.h" #include "includes/xavix.h" -#define VERBOSE 1 +// #define VERBOSE 1 #include "logmacro.h" // 16 stereo voices? diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index 4be27cc6d78..3f641e81cdb 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -1076,13 +1076,13 @@ ROM_END /* XaviX hardware titles */ -CONS( 2006, taitons1, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +CONS( 2006, taitons1, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1 (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -CONS( 2006, taitons2, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +CONS( 2006, taitons2, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 2 (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -CONS( 2006, namcons1, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Namco", "Let's! TV Play Classic - Namco Nostalgia 1", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +CONS( 2006, namcons1, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Namco", "Let's! TV Play Classic - Namco Nostalgia 1 (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -CONS( 2006, namcons2, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Namco", "Let's! TV Play Classic - Namco Nostalgia 2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +CONS( 2006, namcons2, 0, 0, xavix_i2c_24lc04, namcons2, xavix_i2c_state, init_xavix, "Bandai / SSD Company LTD / Namco", "Let's! TV Play Classic - Namco Nostalgia 2 (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) CONS( 2000, rad_ping, 0, 0, xavix, rad_ping, xavix_state, init_xavix, "Radica / SSD Company LTD / Simmer Technology", "Play TV Ping Pong (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) // "Simmer Technology" is also known as "Hummer Technology Co., Ltd" CONS( 2000, rad_pingp, rad_ping, 0, xavixp, rad_pingp,xavix_state, init_xavix, "Radica / SSD Company LTD / Simmer Technology", "ConnecTV Table Tennis (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) @@ -1096,7 +1096,7 @@ CONS( 200?, rad_boxp, rad_box, 0, xavixp, rad_boxp, xavix_state, init_xavix CONS( 200?, rad_crdn, 0, 0, xavix, rad_crdn, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Card Night (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) CONS( 200?, rad_crdnp, rad_crdn, 0, xavixp, rad_crdnp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Card Night (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) -CONS( 2002, rad_bb2, 0, 0, xavix, rad_bb2, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Baseball 2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) // contains string "Radica RBB2 V1.0" +CONS( 2002, rad_bb2, 0, 0, xavix, rad_bb2, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Baseball 2 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) // contains string "Radica RBB2 V1.0" CONS( 2001, rad_bass, 0, 0, xavix, rad_bass, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Bass Fishin' (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) CONS( 2001, rad_bassp, rad_bass, 0, xavixp, rad_bassp,xavix_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Bass Fishin' (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) @@ -1109,13 +1109,13 @@ CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_stat CONS( 200?, rad_fb, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "Play TV Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) // USA only release? doesn't change logo for PAL. -CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radioa / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radioa / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) -CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, xavix, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, xavix, xavix_i2c_state, init_epo_efdx, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) -CONS( 200?, has_wamg, 0, 0, xavix, xavix, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +CONS( 200?, has_wamg, 0, 0, xavix, xavix, xavix_state, init_xavix, "Hasbro / Milton Bradley / SSD Company LTD", "TV Wild Adventure Mini Golf (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) -CONS( 200?, ekara, 0, 0, xavix_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / Hasbro / SSD Company LTD", "e-kara (US?)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND|MACHINE_IS_BIOS_ROOT) +CONS( 200?, ekara, 0, 0, xavix_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / Hasbro / SSD Company LTD", "e-kara (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND|MACHINE_IS_BIOS_ROOT) /* SuperXaviX hardware titles */ diff --git a/src/mame/includes/xavix.h b/src/mame/includes/xavix.h index fd112a95455..b9272738331 100644 --- a/src/mame/includes/xavix.h +++ b/src/mame/includes/xavix.h @@ -68,8 +68,8 @@ public: : driver_device(mconfig, type, tag), m_in0(*this, "IN0"), m_in1(*this, "IN1"), - m_sprite_xhigh_ignore_hack(true), m_maincpu(*this, "maincpu"), + m_sprite_xhigh_ignore_hack(true), m_screen(*this, "screen"), m_mainram(*this, "mainram"), m_fragment_sprite(*this, "fragment_sprite"), @@ -113,6 +113,7 @@ protected: virtual void write_io1(uint8_t data, uint8_t direction); required_ioport m_in0; required_ioport m_in1; + required_device m_maincpu; private: @@ -405,7 +406,6 @@ private: DECLARE_READ8_MEMBER(mult_param_r); DECLARE_WRITE8_MEMBER(mult_param_w); - required_device m_maincpu; required_device m_screen; void update_irqs(); @@ -514,7 +514,9 @@ class xavix_i2c_state : public xavix_state public: xavix_i2c_state(const machine_config &mconfig, device_type type, const char *tag) : xavix_state(mconfig, type, tag), - m_i2cmem(*this, "i2cmem") + m_i2cmem(*this, "i2cmem"), + hackaddress1(-1), + hackaddress2(-1) { } void xavix_i2c_24lc04(machine_config &config); @@ -523,11 +525,21 @@ public: void xavix2000_i2c_24c04(machine_config &config); void xavix2000_i2c_24c02(machine_config &config); + void init_epo_efdx() + { + init_xavix(); + hackaddress1 = 0x958a; + hackaddress2 = 0x8524; + } protected: virtual uint8_t read_io1(uint8_t direction) override; virtual void write_io1(uint8_t data, uint8_t direction) override; required_device m_i2cmem; + +private: + int hackaddress1; + int hackaddress2; }; class xavix_i2c_lotr_state : public xavix_i2c_state diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp index a454cc955c2..c45e8c89574 100644 --- a/src/mame/machine/xavix.cpp +++ b/src/mame/machine/xavix.cpp @@ -410,6 +410,13 @@ uint8_t xavix_i2c_state::read_io1(uint8_t direction) void xavix_i2c_state::write_io1(uint8_t data, uint8_t direction) { + // ignore these writes so that epo_edfx can send read requests to the ee-prom and doesn't just report an error + // TODO: check if these writes shouldn't be happening (the first is a direct write, the 2nd is from a port direction change) + // or if the i2cmem code is oversensitive, or if something else is missing to reset the state + if (hackaddress1 != -1) + if ((m_maincpu->pc() == hackaddress1) || (m_maincpu->pc() == hackaddress2)) + return; + if (direction & 0x08) { m_i2cmem->write_sda((data & 0x08) >> 3); -- cgit v1.2.3