From cf988598a55e4cb2cd6cd3be75b6beac37160ec3 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 21 Feb 2019 21:09:22 +0000 Subject: [PATCH] new NOT WORKING machines (XaviX / eKara) (#4663) * initial checkin, improved commit message to follow (nw) * naming improvements (nw) * naming improvements (nw) * note what is changed (nw) * new NOT WORKING machines --- Popira 2 (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] (technically it works for single player stuff, but my timer emulation, which is used for the ADC, means the 2nd player inputs lag about 10 frames behind, making it unplayable for 2 player use either co-op or vs.) new software list entries --- ekara_japan_d:dc0003 BHT Volume 9 (Japan) (DC0003-BHT) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_d:dc0001 BHT Volume 8 (Japan) (DC0001-BHT) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_g:gc0017 TV Pop Volume 6 (Japan) (GC0017-TPJ) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_web:ekaraweb12a e-kara Web cartridge 12M (used, with 7 Songs) (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_gk:gk1 GK-1 - Detective Conan (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_sp:sp04 SP-04 Super Cartridge (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_sp:sp03 SP-03 Super Cartridge (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_g:gc0014 MIN Volume 2 (GC0014-MIN) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_s:sc0003 unknown(1) Volume 1 (Japan) (SC0003-xxx) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_g:gc0008a MIN Volume 1 (Japan) (GC0008-MIN) (set 2) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_g:gc0008 MIN Volume 1 (Japan) (GC0008-MIN) (set 1) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_p:pc0002 TV Pop Volume 2 (Japan) (PC0002-TPJ) (set 1) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_p:pc0002a TV Pop Volume 2 (Japan) (PC0002-TPJ) ('World Trade Center' image removed) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_s:sc0018 (unknown) Volume 1 (SC0018-SAI) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_g:gc0007 BAT Volume 3 (Japan) (GC0007-BAT) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] new NOT WORKING software list entries --- jpopira_jp:jp02 JP-02 (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] jpopira_jp:jp01 JP-01 (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] (how well these work depends on what you expect from them / use them with, for Karaoke you can listen to all the songs, as you'd expect, for voice controller minigames you can't do much, the ones compatible with Popira are fully playable. The 2 for Jumping Popira can't be used with any current set as they require a Jumping Popira base, so those are marked as NOT WORKING) * better names (nw) * new software list additions -- ekara_japan_bh:bh06 BH-06 Best Hit Collection (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_bh:bh05 BH-05 Best Hit Collection (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_bh:bh03 BH-03 Best Hit Collection (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_bh:bh02 BH-02 Best Hit Collection (Japan) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_m:mc0014 Artist Mini Volume 8 (BoA) (Japan) (MC0014-ATM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_m:mc0006 KSM Mini Volume 2 (Japan) (MC0006-KSM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan_m:mc0004 Artist Mini Volume 4 (w-inds) (Japan) (MC0004-ATM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] * new software list entries --- ekara_japan_m:mc0012 Artist Mini Volume 7 (untranslated artist) (Japan) (MC0012-ATM) [Sean Riddle, Peter Wilhelmsen, David Haywood, ShouTime] * more 'I Can Play Guitar' cart ROM to software list * new software list entries --- ekara_japan:ec0060 J-Pop Mix Volume 26 (Japan) (EC0060-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0062 J-Pop Mix Volume 28 (Japan) (EC0062-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0065 J-Pop Mix Volume 30 (Japan) (EC0065-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0066 J-Pop Mix Volume 31 (Japan) (EC0066-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0067 J-Pop Mix Volume 32 (Japan) (EC0067-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0069 ETZ (Japan) (EC0069-ETZ) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0071 J-Pop Mix Volume 35 (Japan) (EC0071-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0073 untranslated volume 1 (Japan) (EC0073-) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0074 J-Pop Mix Volume 37 (Japan) (EC0074-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0075 J-Pop Mix Volume 38 (Japan) (EC0075-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0077 Artist Selection Volume 15 - unknown artist (Japan) (EC0077-ATS) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0078 J-Pop Mix Volume 40 (Japan) (EC0078-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] ekara_japan:ec0080 J-Pop Mix Volume 41 (Japan) (EC0080-JPM) [Sean Riddle, Peter Wilhelmsen. David Haywood, ShouTime] * minor fixes / corrections to names (nw) * (nw) * comment updates (nw) --- hash/ekara_japan.xml | 191 +++++++++++++++++++++------ hash/ekara_japan_bh.xml | 70 ++++++++++ hash/ekara_japan_d.xml | 28 +++- hash/ekara_japan_g.xml | 74 +++++++++-- hash/ekara_japan_gk.xml | 32 +++++ hash/ekara_japan_m.xml | 56 +++++++- hash/ekara_japan_p.xml | 24 +++- hash/ekara_japan_s.xml | 32 ++++- hash/ekara_japan_sp.xml | 38 ++++-- hash/ekara_japan_web.xml | 13 ++ hash/icanguit.xml | 14 ++ hash/jpopira_jp.xml | 45 +++++++ src/devices/bus/ekara/rom.cpp | 52 ++++++++ src/devices/bus/ekara/rom.h | 21 +++ src/devices/bus/ekara/slot.cpp | 17 +++ src/devices/bus/ekara/slot.h | 10 ++ src/mame/drivers/vii.cpp | 231 +++++++++++++++++++++++++++++++- src/mame/drivers/xavix.cpp | 233 ++++++++++++++++++++++++++++++++- src/mame/includes/xavix.h | 20 ++- src/mame/machine/xavix.cpp | 19 +++ src/mame/mame.lst | 2 + 21 files changed, 1152 insertions(+), 70 deletions(-) create mode 100644 hash/ekara_japan_bh.xml create mode 100644 hash/ekara_japan_gk.xml create mode 100644 hash/icanguit.xml create mode 100644 hash/jpopira_jp.xml diff --git a/hash/ekara_japan.xml b/hash/ekara_japan.xml index 61198c2eff6..580c23e2c6f 100644 --- a/hash/ekara_japan.xml +++ b/hash/ekara_japan.xml @@ -125,33 +125,33 @@ 58 EC0058-ENK ENK Volume 8 59 EC0059-JPM J-Pop Mix Volume 25 - 60 EC0060-JPM J-Pop Mix Volume 26 + 60 *EC0060-JPM J-Pop Mix Volume 26 61 *EC0061-JPM J-Pop Mix Volume 27 - 62 EC0062-JPM J-Pop Mix Volume 28 + 62 *EC0062-JPM J-Pop Mix Volume 28 63 *EC0063-JPM J-Pop Mix Volume 29 64 EC0064-ENK ENK 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 + 65 *EC0065-JPM J-Pop Mix Volume 30 + 66 *EC0066-JPM J-Pop Mix Volume 31 + 67 *EC0067-JPM J-Pop Mix Volume 32 68 *EC0068-JPM J-Pop Mix Volume 33 - 69 EC0069- untranslated + 69 *EC0069-ETZ ETZ (custom presentation etc.) 70 *EC0070-JPM J-Pop Mix Volume 34 - 71 EC0071-JPM J-Pop Mix Volume 35 + 71 *EC0071-JPM J-Pop Mix Volume 35 72 *EC0072-JPM J-Pop Mix Volume 36 - 73 EC0073- untranslated volume 1 - 74 EC0074-JPM J-Pop Mix Volume 37 - 75 EC0075-JPM J-Pop Mix Volume 38 + 73 *EC0073-MKC MKC volume 1 (Japan) + 74 *EC0074-JPM J-Pop Mix Volume 37 + 75 *EC0075-JPM J-Pop Mix Volume 38 76 *EC0076-JPM J-Pop Mix Volume 39 - 77 EC0077-ATS Artist Selection Volume 15 - unknown artist (should be Vol 15? sales sheet lists 5?) - 78 EC0078- (unknown) - 79 *EC0079-ETZ ETZ (custom presentation etc.) - 80 EC0080- (unknown) + 77 *EC0077-ATS Artist Selection Volume 15 - unknown artist (should be Vol 15? sales sheet lists 5?) + 78 *EC0078-JPM J-Pop Mix Volume 40 + 79 *EC0079-ETZ ETZ 2 (custom presentation etc.) + 80 *EC0080-JPM J-Pop Mix Volume 41 81 EC0081-JPM J-Pop Mix Volume 42 82 *EC0082-MBH Matthew's Best Hit Selection 83 EC0083-JPM J-Pop Mix Volume 43 84 EC0084- (unknown, seen) - 85 EC0085- (unknown, seen) + 85 EC0085-ETZ ETZ 3 (custom presentation etc.) (guess) (more? what's the highest regular number?) @@ -711,8 +711,17 @@ - - + + J-Pop Mix Volume 26 (Japan) (EC0060-JPM) + 2001 + Takara + + + + + + + J-Pop Mix Volume 27 (Japan) (EC0061-JPM) 2001 @@ -724,8 +733,17 @@ - - + + J-Pop Mix Volume 28 (Japan) (EC0062-JPM) + 2001 + Takara + + + + + + + J-Pop Mix Volume 29 (Japan) (EC0063-JPM) 2001 @@ -739,11 +757,38 @@ - - - - - + + J-Pop Mix Volume 30 (Japan) (EC0065-JPM) + 2001 + Takara + + + + + + + + + J-Pop Mix Volume 31 (Japan) (EC0066-JPM) + 2001 + Takara + + + + + + + + + J-Pop Mix Volume 32 (Japan) (EC0067-JPM) + 2001 + Takara + + + + + + J-Pop Mix Volume 33 (Japan) (EC0068-JPM) @@ -756,8 +801,17 @@ - - + + ETZ (Japan) (EC0069-ETZ) + 2001 + Takara + + + + + + + J-Pop Mix Volume 34 (Japan) (EC0070-JPM) 2001 @@ -769,7 +823,16 @@ - + + J-Pop Mix Volume 35 (Japan) (EC0071-JPM) + 2001 + Takara + + + + + + J-Pop Mix Volume 36 (Japan) (EC0072-JPM) @@ -782,11 +845,38 @@ - + + MKC volume 1 (Japan) (EC0073-MKC) + 2001 + Takara + + + + + + - - - + + J-Pop Mix Volume 37 (Japan) (EC0074-JPM) + 2001 + Takara + + + + + + + + + J-Pop Mix Volume 38 (Japan) (EC0075-JPM) + 2001 + Takara + + + + + + J-Pop Mix Volume 39 (Japan) (EC0076-JPM) @@ -798,13 +888,31 @@ - - - - + + + Artist Selection Volume 15 - unknown artist (Japan) (EC0077-ATS) + 2001 + Takara + + + + + + + + + J-Pop Mix Volume 40 (Japan) (EC0078-JPM) + 2001 + Takara + + + + + + - ETZ (Japan) (EC0079-ETZ) + ETZ 2 (Japan) (EC0079-ETZ) 2002 Takara @@ -814,7 +922,16 @@ - + + J-Pop Mix Volume 41 (Japan) (EC0080-JPM) + 2001 + Takara + + + + + + diff --git a/hash/ekara_japan_bh.xml b/hash/ekara_japan_bh.xml new file mode 100644 index 00000000000..a35b13a7c70 --- /dev/null +++ b/hash/ekara_japan_bh.xml @@ -0,0 +1,70 @@ + + + + + + + + BH-02 Best Hit Collection (Japan) + 2005 + Takara + + + + + + + + + BH-03 Best Hit Collection (Japan) + 2005 + Takara + + + + + + + + + BH-05 Best Hit Collection (Japan) + 2005 + Takara + + + + + + + + + BH-06 Best Hit Collection (Japan) + 2005 + Takara + + + + + + + + diff --git a/hash/ekara_japan_d.xml b/hash/ekara_japan_d.xml index 4b978607b12..117e86adab7 100644 --- a/hash/ekara_japan_d.xml +++ b/hash/ekara_japan_d.xml @@ -16,9 +16,9 @@ note BAT and BHT aren't the same series - D-1 DC0001-BHT BHT (Best Artists?) Volume 8 (most other BHT carts are in G series, or P series) + *D-1 DC0001-BHT BHT (Best Artists?) Volume 8 (most other BHT carts are in G series, or P series) *D-2 DC0002-BAT BAT Volume 6 - D-3 DC0003-BHT BHT (Best Artists?) Volume 9 + *D-3 DC0003-BHT BHT (Best Artists?) Volume 9 D-4 DC0004-TPJ TV Pop Volume 8 *D-5 DC0005-TPJ TV Pop Volume 9 D-6 DC0006-BHT BHT (Best Artists?) Volume 10 @@ -29,6 +29,18 @@ --> + + BHT Volume 8 (Japan) (DC0001-BHT) + 2003 + Takara + + + + + + + + BAT Volume 6 (Japan) (DC0002-BAT) 2003 @@ -41,6 +53,18 @@ + + BHT Volume 9 (Japan) (DC0003-BHT) + 2003 + Takara + + + + + + + + TV Pop Volume 9 (Japan) (DC0005-TPJ) 2004 diff --git a/hash/ekara_japan_g.xml b/hash/ekara_japan_g.xml index 2ba3ed3c38c..6a0e12cfdaf 100644 --- a/hash/ekara_japan_g.xml +++ b/hash/ekara_japan_g.xml @@ -9,7 +9,7 @@ These are for use with 2 different units 1. e-Kara - 2. Popira (and Popira 2?) + 2. Popira (and Popira 2? - earlier carts will run it as regular Popira, later carts have full Popira 2 support) G-1 *GC0001-BAT BAT Volume 1 (Artist Selection?) G-2 *GC0002-BHT BHT Volume 1 (Best Artists?) @@ -17,17 +17,17 @@ G-4 *GC0004-BHT BHT Volume 2 (Best Artists?) G-5 GC0005-TPJ TV Pop Volume 1 G-6 *GC0006-BHT BHT Volume 3 (Best Artists?) - G-7 GC0007-BAT BAT Volume 3 (Artist Selection?) - G-8 GC0008-MIN? untranslated (no volume) + G-7 *GC0007-BAT BAT Volume 3 (Artist Selection?) + G-8 *GC0008-MIN? untranslated (no volume) G-9 GC0009-TPJ TV Pop Volume 3 (Volume 2 is 'P-2' in 'P' series) G-10 *GC0010-BAT BAT Volume 4 (Artist Selection?) G-11 GC0011-TPJ TV Pop Volume 4 G-12 GC0012-BHT BHT Volume 5 (Best Artists?) (Volume 4 is 'P-1' in 'P' series) G-13 GC0013- (unknown) Volume 6 - G-14 GC0014-MIN? (unknown) Volume 2 + G-14 *GC0014-MIN? (unknown) Volume 2 G-15 *GC0015-BAT BAT Volume 5 (Artist Selection?) G-16 *GC0016-TPJ TV Pop Volume 5 - G-17 GC0017-TPJ TV Pop Volume 6 + G-17 *GC0017-TPJ TV Pop Volume 6 G-18 GC0018-TPJ TV Pop Volume 7 (more? what's the G highest number?) @@ -62,7 +62,7 @@ Takara - + @@ -89,6 +89,39 @@ + + BAT Volume 3 (Japan) (GC0007-BAT) + 2000 + Takara + + + + + + + + + Mini Moni Volume 1 (Japan) (GC0008-MIN) (set 1) + 2001 + Takara + + + + + + + + + MIN Volume 1 (Japan) (GC0008-MIN) (set 2) + 2001 + Takara + + + + + + + + Popira 2 however can make use of these pins --> + BAT Volume 4 (Japan) (GC0010-BAT) 2002 Takara - + @@ -113,6 +147,18 @@ + + Mini Moni Volume 2 (GC0014-MIN) + 2002 + Takara + + + + + + + + BAT Volume 5 (Japan) (GC0015-BAT) @@ -137,5 +183,17 @@ + + + TV Pop Volume 6 (Japan) (GC0017-TPJ) + 2002 + Takara + + + + + + + diff --git a/hash/ekara_japan_gk.xml b/hash/ekara_japan_gk.xml new file mode 100644 index 00000000000..bc3bd45d46c --- /dev/null +++ b/hash/ekara_japan_gk.xml @@ -0,0 +1,32 @@ + + + + + + + + GK-1 - Detective Conan (Japan) + 2004 + Takara + + + + + + + + diff --git a/hash/ekara_japan_m.xml b/hash/ekara_japan_m.xml index a550d05c143..f46f458b793 100644 --- a/hash/ekara_japan_m.xml +++ b/hash/ekara_japan_m.xml @@ -8,17 +8,17 @@ M-1 *MC0001-ATM Artist Mini Volume 1 (untranslated artist) M-2 MC0002-ATM Artist Mini Volume 2 (untranslated artist) M-3 MC0003-ATM Artist Mini Volume 3 (untranslated artist) - M-4 MC0004-ATM Artist Mini Volume 4 (w-inds) + M-4 *MC0004-ATM Artist Mini Volume 4 (w-inds) M-5 MC0005- KSM? unknown Vol 1 - M-6 MC0006- KSM? TPM? unknown Vol 2 (TV) + M-6 *MC0006-KSM KSM Mini Volume 2 M-7 MC0007-ATM Artist Mini Volume 5 (SMAP, KinKi Kids) M-8 MC0008- KSM? TPM? unknown Vol 3 (TV) M-9 MC0009-KSM JPop Mix Mini Vol 1 M-10 MC0010-ATM Artist Mini Volume 6 (untranslated artist) M-11 MC0011- KSM? unknown Vol 4 - M-12 MC0012-ATM Artist Mini Volume 7 (untranslated artist) + M-12 *MC0012-ATM Artist Mini Volume 7 (untranslated artist) M-13 *MC0013-KSM KSM Mini Volume 5 - M-14 MC0014-ATM Artist Mini Volume 8 (BoA) + M-14 *MC0014-ATM Artist Mini Volume 8 (BoA) M-15 MC0015- KSM? TPM? unknown Vol 6 (TV Pop) M-16 MC0016-ATM Artist Mini Volume 9 (untranslated artist) M-17 MC0017- KSM? TPM? TV Pop Mini Vol 7 (TV Pop) @@ -34,7 +34,7 @@ - ATM Mini Volume 1 (Japan) (MC0001-ATM) + Artist Mini Volume 1 (untranslated artist) (Japan) (MC0001-ATM) 2003 Takara @@ -44,8 +44,41 @@ + + Artist Mini Volume 4 (w-inds) (Japan) (MC0004-ATM) + 2003 + Takara + + + + + + + + + KSM Mini Volume 2 (Japan) (MC0006-KSM) + 2003 + Takara + + + + + + + + + Artist Mini Volume 7 (untranslated artist) (Japan) (MC0012-ATM) + 2003 + Takara + + + + + + + - KSM Mini Volume 5 (Japan) (MC0005-KSM) + KSM Mini Volume 5 (Japan) (MC0013-KSM) 2003 Takara @@ -54,5 +87,16 @@ + + + Artist Mini Volume 8 (BoA) (Japan) (MC0014-ATM) + 2003 + Takara + + + + + + diff --git a/hash/ekara_japan_p.xml b/hash/ekara_japan_p.xml index 66698518502..2995bb8d5b6 100644 --- a/hash/ekara_japan_p.xml +++ b/hash/ekara_japan_p.xml @@ -13,7 +13,7 @@ 3. Konami DDR Family Mat *P-1 BHT Volume 4 (Best Artists?) (1,2,3, 5 in G series) - P-2 TV Pop Volume 2 (1,3,4 in G series) + *P-2 TV Pop Volume 2 (1,3,4 in G series) *P-3 ENB Volume 1 *P-4 BHT Volume 7 --> @@ -29,6 +29,28 @@ + + TV Pop Volume 2 (Japan) (PC0002-TPJ) (set 1) + 2001 + Takara + + + + + + + + + TV Pop Volume 2 (Japan) (PC0002-TPJ) ('World Trade Center' image removed) + 2001 + Takara + + + + + + + ENB Volume 1 (Japan) (PC0003-ENB) 2001 diff --git a/hash/ekara_japan_s.xml b/hash/ekara_japan_s.xml index 0d8343e9ce8..38640f6e99d 100644 --- a/hash/ekara_japan_s.xml +++ b/hash/ekara_japan_s.xml @@ -12,7 +12,7 @@ S-1 SC0001- Hello Kitty Special S-2 SC0002-SAI SAI (series 3) Volume 1 - S-3 SC0003- unknown(1) Volume 1 + S-3 *SC0003- unknown(1) Volume 1 S-4 *SC0004-SAI SAI (series 1) Volume 1 S-5 *SC0005-SAI SAI (series 2) Volume 1 (same series as 6,9,19,21,22) S-6 *SC0006-SAI SAI (series 2) Volume 2 (same series as 5,9,19,21,22) @@ -27,7 +27,7 @@ S-15 SC0015- unknown(2) Volume 2 S-16 SC0016-SAI SAI (series 2) Volume 5 S-17 SC0017- unknown(1) Volume 2 - S-18 SC0018-SAI (unknown) Volume 1 + S-18 *SC0018-SAI (unknown) Volume 1 S-19 *SC0019-SAI SAI (series 2) Volume 6 (same series as 5,6,9,21,22) S-20 SC0020- SAI (series 3) Volume 5 S-21 *SC0021-SAI SAI (series 2) Volume 7 (same series as 5,6,9,19,22) @@ -40,6 +40,17 @@ + + unknown(1) Volume 1 (Japan) (SC0003-xxx) + 2001 + Takara + + + + + + + SAI (series 1) Volume 1 (Japan) (SC0004-SAI) 2001 @@ -106,9 +117,20 @@ + + (unknown) Volume 1 (SC0018-SAI) + 2002 + Takara + + + + + + + SAI (series 2) Volume 6 (Japan) (SC0019-SAI) - 2001 + 2002 Takara @@ -119,7 +141,7 @@ SAI (series 2) Volume 7 (Japan) (SC0021-SAI) - 2001 + 2002 Takara @@ -130,7 +152,7 @@ SAI (series 2) Volume 8 (Japan) (SC0022-SAI) - 2001 + 2003 Takara diff --git a/hash/ekara_japan_sp.xml b/hash/ekara_japan_sp.xml index d9e1bc16492..e5f67af4a96 100644 --- a/hash/ekara_japan_sp.xml +++ b/hash/ekara_japan_sp.xml @@ -8,7 +8,7 @@ Japanese cart listing (by SP code) * = dumped - These don't seem to have a secondary numbering scheme (eg SPxxxx-xxx) + A secondary 4-digit naming scheme SPxxxx (no extension) appears on a sticker on the cartridge PCB only These are for use with 5 different units 1. e-Kara @@ -21,13 +21,10 @@ "please play this cartridge on e-kara series, popira, popira 2, taiko de popira or jumping popira" - gives 'memory error' if plugged into Popira (needs cartridge SEEPROM emulating) - gives 'eep-rom error' if plugged into Taiko de Popira (same reason) - SP-01 (unknown) *SP-02 'Super Cartridge' SP-2 - SP-03 (unknown) - SP-04 (unknown) + *SP-03 'Super Cartridge' SP-3 + *SP-04 'Super Cartridge' SP-4 SP-05 SP-06 (seen) SP-07 (seen) @@ -36,9 +33,9 @@ --> - + SP-02 Super Cartridge (Japan) - 2000 + 2004 Takara @@ -47,4 +44,29 @@ + + + SP-03 Super Cartridge (Japan) + 2004 + Takara + + + + + + + + + + SP-04 Super Cartridge (Japan) + 2004 + Takara + + + + + + + + diff --git a/hash/ekara_japan_web.xml b/hash/ekara_japan_web.xml index d0c1a75fd51..34e7103c6e6 100644 --- a/hash/ekara_japan_web.xml +++ b/hash/ekara_japan_web.xml @@ -27,5 +27,18 @@ + + + + + e-kara Web cartridge 12M (used, with 7 Songs) (Japan) + 2003 + Takara + + + + + + diff --git a/hash/icanguit.xml b/hash/icanguit.xml new file mode 100644 index 00000000000..5734a9cbda9 --- /dev/null +++ b/hash/icanguit.xml @@ -0,0 +1,14 @@ + + + + + Guitar Favorites + 2007 + Fisher-Price / Mattel + + + + + + + diff --git a/hash/jpopira_jp.xml b/hash/jpopira_jp.xml new file mode 100644 index 00000000000..f3dade22f25 --- /dev/null +++ b/hash/jpopira_jp.xml @@ -0,0 +1,45 @@ + + + + + + + JP-01 (Japan) + 2004 + Takara + + + + + + + + + + JP-02 (Japan) + 2004 + Takara + + + + + + + + + diff --git a/src/devices/bus/ekara/rom.cpp b/src/devices/bus/ekara/rom.cpp index c167e07c546..9ebc85452eb 100644 --- a/src/devices/bus/ekara/rom.cpp +++ b/src/devices/bus/ekara/rom.cpp @@ -13,6 +13,7 @@ DEFINE_DEVICE_TYPE(EKARA_ROM_I2C_BASE, ekara_rom_i2c_base_device, "ekara DEFINE_DEVICE_TYPE(EKARA_ROM_I2C_24C08_EPITCH, ekara_rom_i2c_24c08_epitch_device, "ekara_rom_i2c_24c08", "EKARA Cartridge with I2C 24C08 (e-pitch)") DEFINE_DEVICE_TYPE(EKARA_ROM_I2C_24LC04, ekara_rom_i2c_24lc04_device, "ekara_rom_i2c_24lc04", "EKARA Cartridge with I2C 24LC04") DEFINE_DEVICE_TYPE(EKARA_ROM_I2C_24LC02, ekara_rom_i2c_24lc02_device, "ekara_rom_i2c_24lc02", "EKARA Cartridge with I2C 24LC02") +DEFINE_DEVICE_TYPE(EKARA_ROM_I2C_24LC02_GC0010, ekara_rom_i2c_24lc02_gc0010_device, "ekara_rom_i2c_24lc02_gc0010", "EKARA Cartridge with I2C 24LC02 (GC0010 direct access)") ekara_rom_plain_device::ekara_rom_plain_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : @@ -54,6 +55,11 @@ ekara_rom_i2c_24lc02_device::ekara_rom_i2c_24lc02_device(const machine_config &m { } +ekara_rom_i2c_24lc02_gc0010_device::ekara_rom_i2c_24lc02_gc0010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + ekara_rom_i2c_base_device(mconfig, EKARA_ROM_I2C_24LC02_GC0010, tag, owner, clock) +{ +} + /*------------------------------------------------- mapper specific handlers -------------------------------------------------*/ @@ -159,6 +165,50 @@ void ekara_rom_i2c_24lc02_device::device_add_mconfig(machine_config &config) I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x100); // 24LC02 } +// i2c 24lc02 with direct IO port access + +bool ekara_rom_i2c_24lc02_gc0010_device::is_read_access_not_rom(void) +{ + return false; +} + +bool ekara_rom_i2c_24lc02_gc0010_device::is_write_access_not_rom(void) +{ + return false; +} + +READ8_MEMBER(ekara_rom_i2c_24lc02_gc0010_device::read_extra) +{ + return 0; +} + +WRITE8_MEMBER(ekara_rom_i2c_24lc02_gc0010_device::write_extra) +{ +} + + +WRITE_LINE_MEMBER(ekara_rom_i2c_24lc02_gc0010_device::write_sda) +{ + m_i2cmem->write_sda(state); +} + +WRITE_LINE_MEMBER(ekara_rom_i2c_24lc02_gc0010_device::write_scl) +{ + m_i2cmem->write_scl(state); +} + +READ_LINE_MEMBER(ekara_rom_i2c_24lc02_gc0010_device::read_sda ) +{ + return m_i2cmem->read_sda(); +} + + + +void ekara_rom_i2c_24lc02_gc0010_device::device_add_mconfig(machine_config &config) +{ + I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x100); // 24LC02 +} + /*------------------------------------------------- slot interface @@ -170,4 +220,6 @@ void ekara_cart(device_slot_interface &device) device.option_add_internal("rom_24c08_epitch", EKARA_ROM_I2C_24C08_EPITCH); device.option_add_internal("rom_24lc04", EKARA_ROM_I2C_24LC04); device.option_add_internal("rom_24lc02", EKARA_ROM_I2C_24LC02); + device.option_add_internal("rom_24lc02_gc0010", EKARA_ROM_I2C_24LC02_GC0010); + } diff --git a/src/devices/bus/ekara/rom.h b/src/devices/bus/ekara/rom.h index 29487b2921c..76c5ed45e46 100644 --- a/src/devices/bus/ekara/rom.h +++ b/src/devices/bus/ekara/rom.h @@ -105,11 +105,32 @@ protected: }; +// ======================> ekara_rom_i2c_24lc02_gc0010_device + +class ekara_rom_i2c_24lc02_gc0010_device : public ekara_rom_i2c_base_device +{ +public: + // construction/destruction + ekara_rom_i2c_24lc02_gc0010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual void device_add_mconfig(machine_config &config) override; + + bool is_read_access_not_rom(void) override; + bool is_write_access_not_rom(void) override; + DECLARE_READ8_MEMBER(read_extra) override; + DECLARE_WRITE8_MEMBER(write_extra) override; + DECLARE_WRITE_LINE_MEMBER(write_sda) override; + DECLARE_WRITE_LINE_MEMBER(write_scl) override; + DECLARE_READ_LINE_MEMBER(read_sda ) override; +}; + // device type definition DECLARE_DEVICE_TYPE(EKARA_ROM_PLAIN, ekara_rom_plain_device) DECLARE_DEVICE_TYPE(EKARA_ROM_I2C_BASE, ekara_rom_i2c_base_device) DECLARE_DEVICE_TYPE(EKARA_ROM_I2C_24C08_EPITCH, ekara_rom_i2c_24c08_epitch_device) DECLARE_DEVICE_TYPE(EKARA_ROM_I2C_24LC04, ekara_rom_i2c_24lc04_device) DECLARE_DEVICE_TYPE(EKARA_ROM_I2C_24LC02, ekara_rom_i2c_24lc02_device) +DECLARE_DEVICE_TYPE(EKARA_ROM_I2C_24LC02_GC0010, ekara_rom_i2c_24lc02_gc0010_device) #endif // MAME_BUS_EKARA_ROM_H diff --git a/src/devices/bus/ekara/slot.cpp b/src/devices/bus/ekara/slot.cpp index 26a72ab18f3..6748ee935cc 100644 --- a/src/devices/bus/ekara/slot.cpp +++ b/src/devices/bus/ekara/slot.cpp @@ -257,4 +257,21 @@ bool ekara_cart_slot_device::is_write_access_not_rom(void) return m_cart->is_write_access_not_rom(); } +/*------------------------------------------------- + direct seeprom access (popira2, gc0010) + -------------------------------------------------*/ +WRITE_LINE_MEMBER(ekara_cart_slot_device::write_sda) +{ + m_cart->write_sda(state); +} + +WRITE_LINE_MEMBER(ekara_cart_slot_device::write_scl) +{ + m_cart->write_scl(state); +} + +READ_LINE_MEMBER(ekara_cart_slot_device::read_sda ) +{ + return m_cart->read_sda(); +} diff --git a/src/devices/bus/ekara/slot.h b/src/devices/bus/ekara/slot.h index d0bba77efaa..5a619b7d800 100644 --- a/src/devices/bus/ekara/slot.h +++ b/src/devices/bus/ekara/slot.h @@ -36,6 +36,11 @@ public: virtual DECLARE_READ8_MEMBER(read_extra) { return 0xff; } virtual DECLARE_WRITE8_MEMBER(write_extra) { } + virtual DECLARE_WRITE_LINE_MEMBER(write_sda) { } + virtual DECLARE_WRITE_LINE_MEMBER(write_scl) { } + //virtual DECLARE_WRITE_LINE_MEMBER( write_wc ) + virtual DECLARE_READ_LINE_MEMBER( read_sda ) { return 0; } + virtual DECLARE_WRITE8_MEMBER(write_bus_control) { } virtual bool is_read_access_not_rom(void) { return false; } @@ -102,6 +107,11 @@ public: virtual DECLARE_READ8_MEMBER(read_extra); virtual DECLARE_WRITE8_MEMBER(write_extra); + virtual DECLARE_WRITE_LINE_MEMBER(write_sda); + virtual DECLARE_WRITE_LINE_MEMBER(write_scl); + //virtual DECLARE_WRITE_LINE_MEMBER( write_wc ); + virtual DECLARE_READ_LINE_MEMBER( read_sda ); + virtual DECLARE_WRITE8_MEMBER(write_bus_control); virtual bool is_read_access_not_rom(void); diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 8e039393e9e..fa8140eaa7d 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -261,6 +261,28 @@ private: uint8_t m_controller_input[8]; }; +class icanguit_state : public spg2xx_game_state +{ +public: + icanguit_state(const machine_config &mconfig, device_type type, const char *tag) + : spg2xx_game_state(mconfig, type, tag) + , m_cart(*this, "cartslot") + , m_cart_region(nullptr) + { } + + void icanguit(machine_config &config); + +private: + virtual void machine_start() override; + //virtual void machine_reset() override; + + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(icanguit_cart); + + required_device m_cart; + memory_region *m_cart_region; +}; + + /************************* * Machine Hardware * *************************/ @@ -952,6 +974,155 @@ static INPUT_PORTS_START( rad_crik ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( icanguit ) // this has something like 55 buttons, and some strings to map, must be multiplexed somehow? + PORT_START("P1") + PORT_DIPNAME( 0x0001, 0x0001, "P1" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_START("P2") + PORT_DIPNAME( 0x0001, 0x0001, "P2" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_START("P3") + PORT_DIPNAME( 0x0001, 0x0001, "P3" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) // Enter? + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // presumably power, kils the game + PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + + static INPUT_PORTS_START( rad_fb2 ) // controls must be multiplexed somehow, as there's no room for P2 controls otherwise (unless P2 controls were never finished and it was only sold in a single mat version, Radica left useless P2 menu options in the mini Genesis consoles) PORT_START("P1") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) // 'left' @@ -1104,6 +1275,37 @@ static INPUT_PORTS_START( lexizeus ) // how many buttons does this have? I acci PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END +void icanguit_state::machine_start() +{ + spg2xx_game_state::machine_start(); + + // if there's a cart, override the standard banking + if (m_cart && m_cart->exists()) + { + std::string region_tag; + m_cart_region = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); + m_bank->configure_entries(0, (m_cart_region->bytes() + 0x7fffff) / 0x800000, m_cart_region->base(), 0x800000); + m_bank->set_entry(0); + } +} + +DEVICE_IMAGE_LOAD_MEMBER(icanguit_state, icanguit_cart) +{ + uint32_t size = m_cart->common_get_size("rom"); + + if (size < 0x800000) + { + image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); + return image_init_result::FAIL; + } + + m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + + void vii_state::machine_start() { @@ -1255,6 +1457,25 @@ void vii_state::vii(machine_config &config) SOFTWARE_LIST(config, "vii_cart").set_original("vii"); } +void icanguit_state::icanguit(machine_config &config) +{ + SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen); + + spg2xx_base(config); + + m_spg->porta_in().set_ioport("P1"); + m_spg->portb_in().set_ioport("P2"); + m_spg->portc_in().set_ioport("P3"); + + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "icanguit_cart"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_device_load(device_image_load_delegate(&icanguit_state::device_image_load_icanguit_cart, this)); + m_cart->set_must_be_loaded(true); + + SOFTWARE_LIST(config, "icanguit_cart").set_original("icanguit"); +} + + void spg2xx_game_state::wireless60(machine_config &config) { SPG24X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen); @@ -1627,6 +1848,12 @@ ROM_START( dreamlif ) ROM_LOAD16_WORD_SWAP( "dreamlife.bin", 0x000000, 0x800000, CRC(632e0237) SHA1(a8586e8a626d75cf7782f13cfd9f1b938af23d56) ) ROM_END +ROM_START( icanguit ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + // no internal ROM, requires a cartridge +ROM_END + + /* Wireless Air 60 (info provided with dump) @@ -1842,7 +2069,9 @@ CONS( 2007, rad_fb2, 0, 0, rad_skat, rad_fb2, spg2xx_game_state, ini CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND ) // 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, 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 ) // 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 diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index 0cb1a28880c..27ba1996c21 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -270,6 +270,9 @@ void xavix_state::xavix_map(address_map &map) { map(0x000000, 0x7fffff).r(FUNC(xavix_state::opcodes_000000_r)); map(0x800000, 0xffffff).r(FUNC(xavix_state::opcodes_800000_r)); + + map(0x000000, 0x003fff).w(FUNC(xavix_state::debug_mem_w)); + } // this is used by data reads / writes after some processing in the core to decide if data reads can see lowbus, zeropage, stack, bank registers etc. and only falls through to here on a true external bus access @@ -851,6 +854,225 @@ static INPUT_PORTS_START( popira ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( popira2 ) // player 2 buttons have heavy latency, probably due to incorrect timer emulation, hence NOT WORKING flag right now + PORT_INCLUDE(xavix) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Pad 1") PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pad 2") PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Pad 3") PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Pad 4") PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Select Previous") PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Select Next") PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") PORT_PLAYER(1) + + PORT_MODIFY("IN1") + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xavix_popira2_cart_state,i2c_r, nullptr) + PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_NAME("Power Switch") // pressing this will turn the game off. + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_MODIFY("AN0") // 00 + PORT_DIPNAME( 0x0001, 0x0001, "AN0" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // buttons respond in a strange way if these are high + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P2 Pad 1") PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P2 Pad 2") PORT_PLAYER(2) + + PORT_MODIFY("AN1") // 01 + PORT_DIPNAME( 0x0001, 0x0001, "AN1" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // buttons respond in a strange way if these are high + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P2 Pad 3") PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P2 Pad 4") PORT_PLAYER(2) + + PORT_MODIFY("AN2") // 02 + PORT_DIPNAME( 0x0001, 0x0001, "AN2" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + + PORT_MODIFY("AN3") // 03 + PORT_DIPNAME( 0x0001, 0x0001, "AN3" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + + + PORT_MODIFY("AN4") // 10 + PORT_DIPNAME( 0x0001, 0x0001, "AN4" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + + PORT_MODIFY("AN5") // 11 + PORT_DIPNAME( 0x0001, 0x0001, "AN5" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_MODIFY("AN6") // 12 + PORT_DIPNAME( 0x0001, 0x0001, "AN6" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + + PORT_MODIFY("AN7") // 13 + PORT_DIPNAME( 0x0001, 0x0001, "AN7" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + + static INPUT_PORTS_START( rad_bassp ) PORT_INCLUDE(rad_bass) @@ -1321,6 +1543,9 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config) SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp"); SOFTWARE_LIST(config, "cart_list_japan_web").set_original("ekara_japan_web"); 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) @@ -1606,6 +1831,12 @@ ROM_START( popira ) ROM_RELOAD(0x000000, 0x100000) ROM_END +ROM_START( popira2 ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "popira2.bin", 0x600000, 0x200000, CRC(6acd8be0) SHA1(8b6c812d37e2dc2f2531b0e47d84ad8485729dc5) ) + ROM_RELOAD(0x000000, 0x200000) +ROM_END + ROM_START( taikodp ) ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) ROM_LOAD( "taikodepopira.bin", 0x600000, 0x200000, CRC(037a8472) SHA1(03cae465965935fc084fb906f8f5de7679f42dd1) ) @@ -1713,7 +1944,7 @@ CONS( 2001, ddrfammt, 0, 0, xavix_cart_ddrfammt,ddrfammt, xavix_cart_ CONS( 2000, popira, 0, 0, xavix_cart_popira,popira, xavix_cart_state, init_xavix, "Takara / SSD Company LTD", "Popira (Japan)", MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ ) // The original Popira is a single yellow unit -// Popira 2 is a Green unit and a Blue Unit linked together +CONS( 2002, popira2, 0, 0, xavix_cart_popira,popira2, xavix_popira2_cart_state, init_xavix, "Takara / SSD Company LTD", "Popira 2 (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ ) // Popira 2 is a set of 2 blue & green linked units (2nd unit is just a controller, no CPU or TV out) 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? diff --git a/src/mame/includes/xavix.h b/src/mame/includes/xavix.h index d8004c00817..4bb1084ec1a 100644 --- a/src/mame/includes/xavix.h +++ b/src/mame/includes/xavix.h @@ -122,7 +122,6 @@ public: DECLARE_WRITE_LINE_MEMBER(ioevent_trg04); DECLARE_WRITE_LINE_MEMBER(ioevent_trg08); - int m_rgnlen; uint8_t* m_rgn; @@ -211,6 +210,11 @@ private: virtual void video_start() override; + DECLARE_WRITE8_MEMBER(debug_mem_w) + { + m_mainram[offset] = data; + }; + virtual uint8_t opcodes_000000_r(offs_t offset) { if (offset & 0x8000) @@ -909,6 +913,20 @@ protected: required_device m_i2cmem; }; +class xavix_popira2_cart_state : public xavix_cart_state +{ +public: + xavix_popira2_cart_state(const machine_config &mconfig, device_type type, const char *tag) + : xavix_cart_state(mconfig,type,tag) + { } + + DECLARE_CUSTOM_INPUT_MEMBER(i2c_r); + +protected: + virtual void write_io1(uint8_t data, uint8_t direction) override; + +}; + class xavix_ekara_state : public xavix_cart_state { diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp index a3bdb7994e0..ce8cac39de5 100644 --- a/src/mame/machine/xavix.cpp +++ b/src/mame/machine/xavix.cpp @@ -663,6 +663,25 @@ WRITE8_MEMBER(xavix_i2c_jmat_state::write_extended_io2) LOG("%s: io2_data_w %02x\n", machine().describe_context(), data); } +// the cart pins Popira 2 uses for IO with cart gc0010 are not controllable by the CPU on other ekara systems + +CUSTOM_INPUT_MEMBER(xavix_popira2_cart_state::i2c_r) +{ + if (m_cartslot->has_cart()) + return m_cartslot->read_sda(); + else + return 0x0; +} + +void xavix_popira2_cart_state::write_io1(uint8_t data, uint8_t direction) +{ + if (m_cartslot->has_cart()) + { + m_cartslot->write_sda((data & 0x08) >> 3); + m_cartslot->write_scl((data & 0x10) >> 4); + } +} + /* General IO port handling */ diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 58794f5e61a..88edddcdcd7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -38741,6 +38741,7 @@ rad_crik // rad_fb2 // mattelcs // dreamlif // +icanguit // @source:vsmile.cpp vsmile // @@ -39919,6 +39920,7 @@ ekaraphs // epitch // ddrfammt // popira // +popira2 // taikodp // ttv_sw // ttv_lotr //