From ce6c7e3d44e11cd8431546e4b90f88805e85b4a4 Mon Sep 17 00:00:00 2001
From: mamehaze <140764005+mamehaze@users.noreply.github.com>
Date: Sat, 13 Jan 2024 21:01:03 +0000
Subject: [PATCH] tvgames/xavix.cpp: Added Hi-kara. Also added more e-kara and
evio cartridge dumps. (#11920)
* tvgames/xavix_m.cpp: Removed obsolete I2C I/O hack for Excite Fishing.
* ekara_japan_s.xml: Verified dump of Saiten Cartridge: Challenge Idol vol.2 (Japan) (SC0008-SAI) from a second cartridge.
* ekara_japan.xml: Fixed copy/paste errors in Enkamichi cartridge titles.
New systems marked not working
-------------------------
Takara Tomy / SSD Company LTD Hi-Kara (Japan) [David Haywood, Team Europe]
New working software list items
-------------------------
ekara_japan: Enkamichi Volume 9 (Japan) (EC0064-ENK) [David Haywood, Team Europe]
ekara_japan_ac: Misora Hibari PR-06 (Japan) [David Haywood, Team Europe]
ekara_japan_g: TV Pop Junior Volume 3 (Japan) (GC0009-TPJ) [David Haywood, Team Europe]
ekara_japan_m: Kids Song Mini Volume 2 (Japan) (MC0008-KSM) [David Haywood, Team Europe]
ekara_japan_sp: Super Cartridge: Best Hit (Japan) (SP-01) [David Haywood, Team Europe]
evio: Concerto Selection [David Haywood, Team Europe]
hikara: Best Hit Collection Volume 1: J-Pop 1 [David Haywood, Team Europe]
hikara: Best Hit Collection Volume 2: J-Pop 2 [David Haywood, Team Europe]
hikara: Best Hit Collection Volume 4: Anime 1 [David Haywood, Team Europe]
hikara: Hi-kara 5-song capacity user cartridge (used, with 5 songs) [David Haywood, Team Europe]
---
hash/ekara_japan.xml | 28 +++++---
hash/ekara_japan_ac.xml | 23 ++++++-
hash/ekara_japan_g.xml | 14 +++-
hash/ekara_japan_m.xml | 14 +++-
hash/ekara_japan_s.xml | 6 +-
hash/ekara_japan_sp.xml | 15 ++++-
hash/evio.xml | 15 ++++-
hash/hikara.xml | 111 ++++++++++++++++++++++++++++++++
src/mame/mame.lst | 1 +
src/mame/tvgames/xavix.cpp | 72 +++++++++++++++++++--
src/mame/tvgames/xavix.h | 46 +++++++------
src/mame/tvgames/xavix_2000.cpp | 6 +-
src/mame/tvgames/xavix_2002.cpp | 5 +-
src/mame/tvgames/xavix_m.cpp | 28 ++++++--
14 files changed, 326 insertions(+), 58 deletions(-)
create mode 100644 hash/hikara.xml
diff --git a/hash/ekara_japan.xml b/hash/ekara_japan.xml
index 9f52bd132d3..492e2051d64 100644
--- a/hash/ekara_japan.xml
+++ b/hash/ekara_japan.xml
@@ -145,7 +145,7 @@ license:CC0-1.0
61 *EC0061-JPM J-Pop Mix Volume 27
62 *EC0062-JPM J-Pop Mix Volume 28
63 *EC0063-JPM J-Pop Mix Volume 29
- 64 EC0064-ENK Enkamichi Volume 9
+ 64 *EC0064-ENK Enkamichi Volume 9
65 *EC0065-JPM J-Pop Mix Volume 30
66 *EC0066-JPM J-Pop Mix Volume 31
67 *EC0067-JPM J-Pop Mix Volume 32
@@ -263,7 +263,7 @@ license:CC0-1.0
Enkamichi Volume 1 (Japan) (EC0006-ENK)
2000
Takara
-
+
@@ -378,7 +378,7 @@ license:CC0-1.0
Enkamichi Volume 2 (Japan) (EC0016-ENK)
2000
Takara
-
+
@@ -538,7 +538,7 @@ license:CC0-1.0
Enkamichi Volume 3 (Japan) (EC0030-ENK)
2000
Takara
-
+
@@ -621,7 +621,7 @@ license:CC0-1.0
Enkamichi Volume 4 (Japan) (EC0037-ENK)
2001
Takara
-
+
@@ -691,7 +691,7 @@ license:CC0-1.0
Enkamichi Volume 5 (Japan) (EC0043-ENK)
2001
Takara
-
+
@@ -753,7 +753,7 @@ license:CC0-1.0
Enkamichi Volume 6 (Japan) (EC0048-ENK)
2001
Takara
-
+
@@ -801,7 +801,7 @@ license:CC0-1.0
Enkamichi Volume 7 (Japan) (EC0052-ENK)
2001
Takara
-
+
@@ -923,7 +923,17 @@ license:CC0-1.0
-
+
+ Enkamichi Volume 9 (Japan) (EC0064-ENK)
+ 2001
+ Takara
+
+
+
+
+
+
+
J-Pop Mix Volume 30 (Japan) (EC0065-JPM)
diff --git a/hash/ekara_japan_ac.xml b/hash/ekara_japan_ac.xml
index 11831681235..bac9e311b83 100644
--- a/hash/ekara_japan_ac.xml
+++ b/hash/ekara_japan_ac.xml
@@ -7,6 +7,8 @@ license:CC0-1.0
-
- Kirarin Revolution KR-1 (Japan) (AC0009-KIR)
+
+ Kirarin Revolution KR-1 (Japan)
2007
Takara
@@ -32,4 +37,16 @@ license:CC0-1.0
+
+ Misora Hibari PR-06 (Japan)
+ 2006
+ Takara
+
+
+
+
+
+
+
+
diff --git a/hash/ekara_japan_g.xml b/hash/ekara_japan_g.xml
index e8ea96268d5..4e83b8498b7 100644
--- a/hash/ekara_japan_g.xml
+++ b/hash/ekara_japan_g.xml
@@ -23,7 +23,7 @@ license:CC0-1.0
G-6 *GC0006-BHT Best Hit Volume 3
G-7 *GC0007-BAT Best Artist Volume 3
G-8 *GC0008-MIN mini-moni
- G-9 GC0009-TPJ TV Pop Junior Volume 3 (Volume 2 is 'P-2' in 'P' series)
+ G-9 *GC0009-TPJ TV Pop Junior Volume 3 (Volume 2 is 'P-2' in 'P' series)
G-10 *GC0010-BAT Best Artist Volume 4
G-11 *GC0011-TPJ TV Pop Junior Volume 4
G-12 GC0012-BHT Best Hit Volume 5 (Volume 4 is 'P-1' in 'P' series)
@@ -146,6 +146,18 @@ license:CC0-1.0
+
+ TV Pop Junior Volume 3 (Japan) (GC0009-TPJ)
+ 2000
+ Takara
+
+
+
+
+
+
+
+
+
- Saiten Cartridge: Challenge Idol vol.2 (Japan) (SC0008-SAI)
+ Saiten Cartridge: Challenge Idol vol.2 (Japan) (SC0008-SAI) (broken master)
2001
Takara
-
+
diff --git a/hash/ekara_japan_sp.xml b/hash/ekara_japan_sp.xml
index 03f6d6adf8e..f4912c1c544 100644
--- a/hash/ekara_japan_sp.xml
+++ b/hash/ekara_japan_sp.xml
@@ -25,7 +25,7 @@ license:CC0-1.0
"please play this cartridge on e-kara series, popira, popira 2, taiko de popira or jumping popira"
- SP-01 'Super Cartridge' SP-01 Best Hit
+ *SP-01 'Super Cartridge' SP-01 Best Hit
*SP-02 'Super Cartridge' SP-02 Best Hit
*SP-03 'Super Cartridge' SP-03 TV Pop Junior
*SP-04 'Super Cartridge' SP-04 Best Hit
@@ -37,6 +37,19 @@ license:CC0-1.0
-->
+
+ Super Cartridge: Best Hit (Japan) (SP-01)
+ 2004
+ Takara
+
+
+
+
+
+
+
+
+
Super Cartridge: Best Hit (Japan) (SP-02)
2004
diff --git a/hash/evio.xml b/hash/evio.xml
index ef96540d051..63d21a343dd 100644
--- a/hash/evio.xml
+++ b/hash/evio.xml
@@ -25,7 +25,7 @@ license:CC0-1.0
*eM10 - Anime Special - Pocket Monsters (yellow)
eM11 - Anime Mix 2
*eM12 - I Love Classic 2 (brown)
- eM13 - Concerto Selection
+ *eM13 - Concerto Selection (dark blue)
eM14 - Disney Special 1
*eM15 - evio Selection 04 (translucent red)
*eM16 - Chisako Takashima Selection (cream/gold)
@@ -179,6 +179,19 @@ license:CC0-1.0
+
+ Concerto Selection
+ 2003
+ Tomy
+
+
+
+
+
+
+
+
+
evio Selection 04
2003
diff --git a/hash/hikara.xml b/hash/hikara.xml
new file mode 100644
index 00000000000..caff1773d0c
--- /dev/null
+++ b/hash/hikara.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+ Hi-kara 5-song capacity user cartridge (used, with 5 songs) (Japan)
+ 2008
+ Takara Tomy
+
+
+
+
+
+
+
+
+
+
+
+ Best Hit Collection Volume 1: J-Pop 1 (Japan)
+ 2008
+ Takara Tomy
+
+
+
+
+
+
+
+
+
+
+
+
+ Best Hit Collection Volume 2: J-Pop 2 (Japan)
+ 2008
+ Takara Tomy
+
+
+
+
+
+
+
+
+
+
+
+
+ Best Hit Collection Volume 4: Anime Song 1
+ 2008
+ Takara Tomy
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 4524ccfd24b..18ae8b9c980 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -45035,6 +45035,7 @@ evio //
gcslottv //
gungunad //
has_wamg //
+hikara //
jarajal //
jpopira //
ltv_tam //
diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp
index 023068f16b5..ee48aa9fb9e 100644
--- a/src/mame/tvgames/xavix.cpp
+++ b/src/mame/tvgames/xavix.cpp
@@ -808,6 +808,41 @@ static INPUT_PORTS_START( ekara )
// no 40/80 due to multiplexer code
INPUT_PORTS_END
+static INPUT_PORTS_START( hikara )
+ PORT_INCLUDE(xavix)
+
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xavix_hikara_state, ekara_multi0_r)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xavix_hikara_state, ekara_multi1_r)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xavix_hikara_state, ekara_multi2_r)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xavix_hikara_state, ekara_multi3_r)
+
+ PORT_START("EXTRA0")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Select")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Key Down")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Key Up")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Brightness Up")
+
+ PORT_START("EXTRA1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("BGM Down")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Brightness Down")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("BGM Up")
+
+ PORT_START("EXTRA2")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Cancel")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Tempo Up")
+
+ PORT_START("EXTRA3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Tempo Down")
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( ddrfammt )
PORT_INCLUDE(xavix)
@@ -1304,16 +1339,20 @@ static GFXDECODE_START( gfx_xavix )
GFXDECODE_ENTRY( "bios", 0, char16layout8bpp, 0, 1 )
GFXDECODE_END
-
-void xavix_state::xavix(machine_config &config)
+void xavix_state::set_xavix_cpumaps(machine_config &config)
{
- /* basic machine hardware */
- XAVIX(config, m_maincpu, MAIN_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &xavix_state::xavix_map);
m_maincpu->set_addrmap(5, &xavix_state::xavix_lowbus_map);
m_maincpu->set_addrmap(6, &xavix_state::xavix_extbus_map);
m_maincpu->set_vblank_int("screen", FUNC(xavix_state::interrupt));
m_maincpu->set_vector_callback(FUNC(xavix_state::get_vectors));
+}
+
+void xavix_state::xavix(machine_config &config)
+{
+ /* basic machine hardware */
+ XAVIX(config, m_maincpu, MAIN_CLOCK);
+ set_xavix_cpumaps(config);
TIMER(config, "scantimer").configure_scanline(FUNC(xavix_state::scanline_cb), "screen", 0, 1);
@@ -1517,6 +1556,19 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_ac").set_original("ekara_japan_ac");
}
+void xavix_cart_state::xavix_cart_hikara(machine_config &config)
+{
+ xavix_cart(config);
+
+ // The songs seem too slow at regular clock. It is speculated that the later
+ // CPU types run at ~43Mhz, so maybe this is really a XaviX 2000/2003 type chip
+ // with a higher clock, even if no extra opcodes are used.
+ m_maincpu->set_clock(MAIN_CLOCK * 2);
+
+ /* software lists */
+ SOFTWARE_LIST(config, "cart_list").set_original("hikara");
+}
+
void xavix_cart_state::xavix_cart_popira(machine_config &config)
{
xavix_cart(config);
@@ -1886,6 +1938,14 @@ ROM_START( ekaramix )
ROM_RELOAD(0x000000, 0x200000)
ROM_END
+ROM_START( hikara )
+ ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "hikara.u3", 0x000000, 0x100000, CRC(6b91102a) SHA1(684dcfeaa8ac2888da2055617603494ce5fed93c) )
+ ROM_RELOAD(0x600000, 0x100000)
+ ROM_FILL(0xed19, 1, 0xf0) // temp, bypass unknown boot check
+ ROM_FILL(0xed1e, 1, 0xd0)
+ROM_END
+
ROM_START( ddrfammt )
ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 )
ROM_LOAD( "ekara_ddr_ha010_81947.bin", 0x600000, 0x200000, CRC(737d5d1a) SHA1(a1043047056dd27bca69767ee2044461ec549465) )
@@ -2013,7 +2073,7 @@ CONS( 2000, epo_eppk, epo_epp, 0, xavix, epo_epp, xavix_state,
CONS( 2006, epo_epp3, 0, 0, xavix, epo_epp, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Challenge Ai-chan! Excite Ping Pong (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, epo_efdx, xavix_i2c_state, init_epo_efdx, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, epo_efdx, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2005, epo_guru, 0, 0, xavix_guru, epo_guru, xavix_guru_state, init_xavix, "Epoch / SSD Company LTD", "Gururin World (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
@@ -2068,3 +2128,5 @@ CONS( 2002, gcslottv, 0, 0, xavix_cart_gcslottv, gcslottv, xavix
// Let’s!TVプレイ 超にんきスポット!ころがしほーだい たまごっちりぞーと (Let's! TV Play Chou Ninki Spot! Korogashi-Houdai Tamagotchi Resort) (only on the Japanese list? http://test.shinsedai.co.jp/english/products/Applied/list.html ) This also allows you to use an IR reciever to import a Tamagotchi from compatible games
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*/ )
diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h
index 02d56642bfe..10a1539d14d 100644
--- a/src/mame/tvgames/xavix.h
+++ b/src/mame/tvgames/xavix.h
@@ -189,6 +189,9 @@ protected:
virtual uint8_t read_io1(uint8_t direction);
virtual void write_io0(uint8_t data, uint8_t direction);
virtual void write_io1(uint8_t data, uint8_t direction);
+
+ void set_xavix_cpumaps(machine_config &config);
+
required_ioport m_in0;
required_ioport m_in1;
required_ioport_array<8> m_an_in;
@@ -607,9 +610,7 @@ 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"),
- hackaddress1(-1),
- hackaddress2(-1)
+ m_i2cmem(*this, "i2cmem")
{ }
void xavix_i2c_24lc04(machine_config &config);
@@ -624,21 +625,10 @@ public:
void xavix2002_i2c_24c04(machine_config &config);
void xavix2002_i2c_mrangbat(machine_config& config);
- void init_epo_efdx()
- {
- init_xavix();
- hackaddress1 = 0x958a;
- hackaddress2 = 0x8524;
- }
-
protected:
virtual void write_io1(uint8_t data, uint8_t direction) override;
required_device m_i2cmem;
-
-private:
- int hackaddress1;
- int hackaddress2;
};
class xavix_i2c_ltv_tam_state : public xavix_i2c_state
@@ -725,6 +715,7 @@ public:
void xavix_cart_popira(machine_config &config);
void xavix_cart_ddrfammt(machine_config &config);
void xavix_cart_evio(machine_config &config);
+ void xavix_cart_hikara(machine_config &config);
protected:
@@ -969,10 +960,8 @@ public:
m_extraiowrite(0)
{ }
- int ekara_multi0_r();
- int ekara_multi1_r();
-
-// void xavix_ekara(machine_config &config);
+ virtual int ekara_multi0_r();
+ virtual int ekara_multi1_r();
protected:
@@ -986,5 +975,26 @@ protected:
uint8_t m_extraiowrite;
};
+class xavix_hikara_state : public xavix_ekara_state
+{
+public:
+ xavix_hikara_state(const machine_config &mconfig, device_type type, const char *tag)
+ : xavix_ekara_state(mconfig, type, tag),
+ m_extra2(*this, "EXTRA2"),
+ m_extra3(*this, "EXTRA3")
+ { }
+
+ virtual int ekara_multi0_r() override;
+ virtual int ekara_multi1_r() override;
+ int ekara_multi2_r();
+ int ekara_multi3_r();
+
+protected:
+
+ required_ioport m_extra2;
+ required_ioport m_extra3;
+
+};
+
#endif // MAME_TVGAMES_XAVIX_H
diff --git a/src/mame/tvgames/xavix_2000.cpp b/src/mame/tvgames/xavix_2000.cpp
index 76f9ae14dbb..8938811eb01 100644
--- a/src/mame/tvgames/xavix_2000.cpp
+++ b/src/mame/tvgames/xavix_2000.cpp
@@ -189,11 +189,7 @@ void xavix_state::xavix2000(machine_config &config)
xavix(config);
XAVIX2000(config.replace(), m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &xavix_state::xavix_map);
- m_maincpu->set_addrmap(5, &xavix_state::xavix_lowbus_map);
- m_maincpu->set_addrmap(6, &xavix_state::xavix_extbus_map);
- m_maincpu->set_vblank_int("screen", FUNC(xavix_state::interrupt));
- m_maincpu->set_vector_callback(FUNC(xavix_state::get_vectors));
+ set_xavix_cpumaps(config);
m_palette->set_entries(512);
}
diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp
index 7edb605b4ca..43661581063 100644
--- a/src/mame/tvgames/xavix_2002.cpp
+++ b/src/mame/tvgames/xavix_2002.cpp
@@ -324,11 +324,8 @@ void xavix_state::xavix2002(machine_config &config)
xavix(config);
XAVIX2002(config.replace(), m_maincpu, MAIN_CLOCK);
- m_maincpu->set_addrmap(AS_PROGRAM, &xavix_state::xavix_map);
+ set_xavix_cpumaps(config);
m_maincpu->set_addrmap(5, &xavix_state::superxavix_lowbus_map); // has extra video, io etc.
- m_maincpu->set_addrmap(6, &xavix_state::xavix_extbus_map);
- m_maincpu->set_vblank_int("screen", FUNC(xavix_state::interrupt));
- m_maincpu->set_vector_callback(FUNC(xavix_state::get_vectors));
m_palette->set_entries(512);
diff --git a/src/mame/tvgames/xavix_m.cpp b/src/mame/tvgames/xavix_m.cpp
index db0107dacba..6d9ed194ad9 100644
--- a/src/mame/tvgames/xavix_m.cpp
+++ b/src/mame/tvgames/xavix_m.cpp
@@ -416,6 +416,27 @@ int xavix_ekara_state::ekara_multi1_r()
return 0x00;
}
+int xavix_hikara_state::ekara_multi0_r()
+{
+ return (m_extraioselect & m_extra0->read() & 0x0e) ? 0x01 : 0x00;
+}
+
+int xavix_hikara_state::ekara_multi1_r()
+{
+ return (m_extraioselect & m_extra1->read() & 0x0e) ? 0x01 : 0x00;
+}
+
+int xavix_hikara_state::ekara_multi2_r()
+{
+ return (m_extraioselect & m_extra2->read() & 0x0e) ? 0x01 : 0x00;
+}
+
+int xavix_hikara_state::ekara_multi3_r()
+{
+ return (m_extraioselect & m_extra3->read() & 0x0e) ? 0x01 : 0x00;
+}
+
+
uint8_t xavix_state::read_io0(uint8_t direction)
{
// LOG("%s: read_io0\n", machine().describe_context());
@@ -444,13 +465,6 @@ void xavix_state::write_io1(uint8_t data, 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);