From aa32b6e89b9183aed1bcfc1c5d84f6e107c39072 Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Sat, 22 Feb 2025 16:23:05 +0000 Subject: [PATCH] Added 11 TV games/handheld games (one working) and four i-Singer cartridges. (#13342) nintendo/rp2a03_vtscr.cpp: Use RP2A03 CPU core rather than 6502 as some games seem to need it. New working clones ------------------ Sonokong / SSD Company LTD PoPiRa - Finger Sports (Korea) [David Haywood, TeamEurope, Taksangs] New systems marked not working ---------------------------- Bandai / SSD Company LTD Let's! TV Play Narikiri Fight Ultraman - Ute! Hissatsu Kousen!! (Japan) [David Haywood, TeamEurope] dreamGEAR My Arcade Tetris (DGUNL-7028, Pocket Player Pro) [Sean Riddle] dreamGEAR My Arcade Tetris (DGUNL-7029, Go Gamer, with 300 bonus games) [Sean Riddle] dreamGEAR My Arcade Tetris (DGUNL-7083, Pixel Pocket, with 10 bonus games) [Sean Riddle] Epoch / SSD Company LTD TV Mail PC mail*cot (Japan) [David Haywood, TeamEurope] Epoch / SSD Company LTD TV-PC Hello Kitty (Japan) [David Haywood, TeamEurope] Lexibook Compact Cyber Arcade - Barbie [David Haywood, TeamEurope] Nissin / SSD Company LTD Dontore da bei - Donbei-kun to Training (Japan) [David Haywood, TeamEurope] NubSup TV Interactive Extreme u-box / Extreme u-box Game Station 32Bit Interactive System - New 30 [David Haywood, TeamEurope] New clones marked not working ------------------------- Sonokong / SSD Company LTD i-Singer (Korea) [David Haywood, TeamEurope, Taksangs] New working software list items (ekara_cart.xml) -------------------------------- i-Singer Volume 2 (Korea) [David Haywood, TeamEurope, Taksangs] i-Singer Volume 3 (Korea) [David Haywood, TeamEurope, Taksangs] i-Singer Volume 11 (Korea) [David Haywood, TeamEurope, Taksangs] i-Singer Volume 14 (Korea) [David Haywood, TeamEurope, Taksangs] --- hash/ekara_cart.xml | 48 +++++ src/mame/mame.lst | 11 + src/mame/nintendo/m6502_vtscr.cpp | 97 --------- src/mame/nintendo/nes_vt09_soc.h | 1 - src/mame/nintendo/nes_vt32.cpp | 8 +- src/mame/nintendo/nes_vt32_soc.cpp | 8 +- src/mame/nintendo/nes_vt32_soc.h | 11 +- src/mame/nintendo/nes_vt369_vtunknown.cpp | 50 +++-- src/mame/nintendo/nes_vt369_vtunknown_soc.h | 1 - src/mame/nintendo/nes_vt_soc.h | 1 - src/mame/nintendo/rp2a03_vtscr.cpp | 92 +++++++++ .../{m6502_vtscr.h => rp2a03_vtscr.h} | 22 +- src/mame/sega/megadriv_rad.cpp | 9 + src/mame/tvgames/spg29x_lexibook_jg7425.cpp | 24 +++ src/mame/tvgames/xavix.cpp | 71 ++++++- src/mame/tvgames/xavix.h | 25 ++- src/mame/tvgames/xavix_2000.cpp | 19 +- src/mame/tvgames/xavix_2002.cpp | 194 ++++++++++++------ src/mame/tvgames/xavix_2002.h | 2 - 19 files changed, 459 insertions(+), 235 deletions(-) delete mode 100644 src/mame/nintendo/m6502_vtscr.cpp create mode 100644 src/mame/nintendo/rp2a03_vtscr.cpp rename src/mame/nintendo/{m6502_vtscr.h => rp2a03_vtscr.h} (67%) diff --git a/hash/ekara_cart.xml b/hash/ekara_cart.xml index d94b9b25b71..66cf8e642b5 100644 --- a/hash/ekara_cart.xml +++ b/hash/ekara_cart.xml @@ -3741,4 +3741,52 @@ license:CC0-1.0 + + i-Singer Volume 2 (Korea) + 2002 + Takara / Sonokong + + + + + + + + + + i-Singer Volume 3 (Korea) + 2002 + Takara / Sonokong + + + + + + + + + + i-Singer Volume 11 (Korea) + 2002 + Takara / Sonokong + + + + + + + + + + i-Singer Volume 14 (Korea) + 2002 + Takara / Sonokong + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 03cd2de2312..2520b51b0f2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35038,6 +35038,7 @@ dgun2573a dgunl3201 dgunl3202 fcpocket +matet300 rminitv @source:nintendo/nes_vt369_vtunknown.cpp @@ -35063,6 +35064,7 @@ lxccminn lxccplan lxcmc250 lxcmcy +lxcmcyba lxcmcycr lxcmcydp lxcmcyfz @@ -35071,6 +35073,7 @@ lxcmcypp lxcmcysp lxcmcysw lxcyber +matet10 mc_cb280 mc_hh210 mog_m320 @@ -39789,6 +39792,7 @@ twinktmb atgame40 dgunl3227 dgunl3227a +matet mdtvp1j mdtvp2j mdtvp3j @@ -46135,6 +46139,7 @@ fundr200 lx_aven lx_frozen lx_jg7425 +ubox30 zone3d @source:tvgames/spg2xx.cpp @@ -46411,6 +46416,7 @@ epo_esht epo_fish epo_guru epo_hamd +epo_mail epo_mj epo_mms epo_mmsp @@ -46428,12 +46434,14 @@ gungunad gungunrv has_wamg hikara +isinger jarajal jpopira ltv_tam namcons1 namcons2 popira +popirak popira2 rad_bass rad_bassp @@ -46483,6 +46491,7 @@ tomthr tomplc tvpc_dor tvpc_ham +tvpc_hk tvpc_tom @source:tvgames/xavix2.cpp @@ -46519,6 +46528,7 @@ apmj2009 ban_bkgj ban_dn1j ban_kksj +ban_ult ban_utmj epo_ntpj epo_rgfj @@ -46532,6 +46542,7 @@ epo_doka epo_tfit maxheart mrangbat +ndpbj suprtvpc suprtvpcdo suprtvpchk diff --git a/src/mame/nintendo/m6502_vtscr.cpp b/src/mame/nintendo/m6502_vtscr.cpp deleted file mode 100644 index 5cb7decf55f..00000000000 --- a/src/mame/nintendo/m6502_vtscr.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Shah -/*************************************************************************** - - m6502_vtscr.cpp - - 6502 with VRT VTxx instruction scrambling - - Scrambling in newer NES-based VTxx systems (FC pocket, etc) seems to be - enabled with a write of 5 to 0x411E, then is activated at the next jump? - When enabled, opcodes are to be XORed with 0xA1 - - Another form of scrambling is used in the VRT VT1682, this is not yet - implemented at all in MAME (it's used for the MiWi2 and InterAct consoles). - This is simpler, permanently activated and consists of swapping opcode bits - 7 and 2. - -***************************************************************************/ - -#include "emu.h" -#include "m6502_vtscr.h" - -DEFINE_DEVICE_TYPE(M6502_VTSCR, m6502_vtscr, "m6502_vtscr", "M6502 with VTxx scrambling") - -m6502_vtscr::m6502_vtscr(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, M6502_VTSCR, tag, owner, clock) -{ -} - -void m6502_vtscr::device_start() -{ - mintf = std::make_unique(); - set_scramble(false); - init(); -} - -void m6502_vtscr::set_next_scramble(bool scr) -{ - downcast(*mintf).m_next_scramble = scr; -} - -void m6502_vtscr::set_scramble(bool scr) -{ - downcast(*mintf).m_next_scramble = scr; - downcast(*mintf).m_scramble_en = scr; -} - - -void m6502_vtscr::device_reset() -{ - set_scramble(false); - m6502_device::device_reset(); -} - -bool m6502_vtscr::mi_decrypt::toggle_scramble(uint8_t op) { - return (op == 0x4C) || (op == 0x00) || (op == 0x6C); -} - - -uint8_t m6502_vtscr::mi_decrypt::read_sync(uint16_t adr) -{ - uint8_t res = cprogram.read_byte(adr); - if(m_scramble_en) - { - res = descramble(res); - } - - if(toggle_scramble(res)) - { - m_scramble_en = m_next_scramble; - } - return res; -} - -uint8_t m6502_vtscr::mi_decrypt::descramble(uint8_t op) -{ - return op ^ 0xA1; -} - -std::unique_ptr m6502_vtscr::create_disassembler() -{ - return std::make_unique(downcast(mintf.get())); -} - -m6502_vtscr::disassembler::disassembler(mi_decrypt *mi) : mintf(mi) -{ -} - -u32 m6502_vtscr::disassembler::interface_flags() const -{ - return SPLIT_DECRYPTION; -} - -u8 m6502_vtscr::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const -{ - return opcode && mintf->m_scramble_en ? mintf->descramble(value) : value; -} diff --git a/src/mame/nintendo/nes_vt09_soc.h b/src/mame/nintendo/nes_vt09_soc.h index fbaabbca229..36a27d7c306 100644 --- a/src/mame/nintendo/nes_vt09_soc.h +++ b/src/mame/nintendo/nes_vt09_soc.h @@ -8,7 +8,6 @@ #include "nes_vt_soc.h" #include "cpu/m6502/rp2a03.h" #include "sound/nes_apu_vt.h" -#include "m6502_vtscr.h" #include "m6502_swap_op_d5_d6.h" #include "video/ppu2c0x_vt.h" #include "screen.h" diff --git a/src/mame/nintendo/nes_vt32.cpp b/src/mame/nintendo/nes_vt32.cpp index 9bed633dccd..19b87054110 100644 --- a/src/mame/nintendo/nes_vt32.cpp +++ b/src/mame/nintendo/nes_vt32.cpp @@ -366,6 +366,11 @@ ROM_START( fcpocket ) ROM_LOAD( "s29gl01gp.bin", 0x00000, 0x8000000, CRC(8703b18a) SHA1(07943443294e80ca93f83181c8bdbf950b87c52f) ) // 2nd half = 0x00 (so 64MByte of content) ROM_END +ROM_START( matet300 ) + ROM_REGION( 0x2000000, "mainrom", 0 ) + ROM_LOAD( "tetris.bin", 0x00000, 0x2000000, CRC(73cbd40a) SHA1(5996c97cebd6cec42a0ba1fba9517adf1af00098) ) +ROM_END + } // anonymous namespace @@ -380,8 +385,9 @@ CONS( 2015, rminitv, 0, 0, nes_vt32_pal_32mb, nes_vt32, nes_vt32_unk_state, // However, sometimes the different models use the same background as this one (confirmed on one Pixel Classic at least), so there doesn't appear to be a clear way of knowing without powering them on CONS( 201?, dgunl3201, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Data East Classics - Pixel Classic (308-in-1) (DGUNL-3201)", MACHINE_NOT_WORKING ) // from a UK unit, single 32Mbyte bank! CONS( 201?, dgunl3202, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Data East Classics - Pixel Player (308-in-1) (DGUNL-3202)", MACHINE_NOT_WORKING ) // from a US unit single 32Mbyte bank! - // There was also a 34-in-1 version of the Data East Classics in a mini-cabinet, NOT running on VT hardware, but using proper arcade ROMs, that one is reportedly running an old MAME build on an ARM SoC (although some sources say FBA) +CONS( 2021, matet300, 0, 0, nes_vt32_32mb, nes_vt32, nes_vt32_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7029, Go Gamer, with 300 bonus games)", MACHINE_NOT_WORKING ) + // Use DIP switch to select console or cartridge, as cartridge is fake and just toggles a GPIO CONS( 2016, fcpocket, 0, 0, nes_vt32_4x16mb, nes_vt32_fp, nes_vt32_unk_state, empty_init, "", "FC Pocket 600 in 1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has external banking (2x 32mbyte banks) diff --git a/src/mame/nintendo/nes_vt32_soc.cpp b/src/mame/nintendo/nes_vt32_soc.cpp index f56dbfac07b..5bcab4b1c0b 100644 --- a/src/mame/nintendo/nes_vt32_soc.cpp +++ b/src/mame/nintendo/nes_vt32_soc.cpp @@ -29,7 +29,7 @@ void nes_vt32_soc_device::device_add_mconfig(machine_config& config) { nes_vt02_vt03_soc_device::device_add_mconfig(config); - M6502_VTSCR(config.replace(), m_maincpu, NTSC_APU_CLOCK); // are these later chips RP2A03 core, or 6502 core derived? + RP2A03_VTSCR(config.replace(), m_maincpu, NTSC_APU_CLOCK); m_maincpu->set_addrmap(AS_PROGRAM, &nes_vt32_soc_device::nes_vt_fp_map); } @@ -50,16 +50,16 @@ void nes_vt32_soc_device::vtfp_411e_w(uint8_t data) { logerror("411e_w %02x\n", data); if (data == 0x05) - downcast(*m_maincpu).set_next_scramble(true); + downcast(*m_maincpu).set_next_scramble(true); else if (data == 0x00) - downcast(*m_maincpu).set_next_scramble(false); + downcast(*m_maincpu).set_next_scramble(false); } void nes_vt32_soc_device::vtfp_4a00_w(uint8_t data) { logerror("4a00_w %02x\n", data); //if(data == 0x80) - // downcast(*m_maincpu).set_scramble(false); + // downcast(*m_maincpu).set_scramble(false); } diff --git a/src/mame/nintendo/nes_vt32_soc.h b/src/mame/nintendo/nes_vt32_soc.h index 861a6295487..e2180767521 100644 --- a/src/mame/nintendo/nes_vt32_soc.h +++ b/src/mame/nintendo/nes_vt32_soc.h @@ -5,15 +5,18 @@ #pragma once +#include "m6502_swap_op_d5_d6.h" #include "nes_vt09_soc.h" +#include "rp2a03_vtscr.h" + #include "cpu/m6502/rp2a03.h" #include "sound/nes_apu_vt.h" -#include "m6502_vtscr.h" -#include "m6502_swap_op_d5_d6.h" #include "video/ppu2c0x_vt.h" + #include "screen.h" #include "speaker.h" + class nes_vt32_soc_device : public nes_vt09_soc_device { public: @@ -22,7 +25,7 @@ public: protected: nes_vt32_soc_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock); - virtual void device_add_mconfig(machine_config& config) override; + virtual void device_add_mconfig(machine_config& config) override ATTR_COLD; void nes_vt_fp_map(address_map &map) ATTR_COLD; @@ -42,7 +45,7 @@ public: nes_vt32_soc_pal_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock); protected: - virtual void device_add_mconfig(machine_config& config) override; + virtual void device_add_mconfig(machine_config& config) override ATTR_COLD; }; diff --git a/src/mame/nintendo/nes_vt369_vtunknown.cpp b/src/mame/nintendo/nes_vt369_vtunknown.cpp index d416bf43f4b..d2290c63ea0 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown.cpp +++ b/src/mame/nintendo/nes_vt369_vtunknown.cpp @@ -170,6 +170,7 @@ public: void nes_vt369_vtunknown_unk(machine_config& config); void nes_vt369_vtunknown_unk_1mb(machine_config& config); + void nes_vt369_vtunknown_unk_2mb(machine_config& config); void nes_vt369_vtunknown_unk_4mb(machine_config& config); void nes_vt369_vtunknown_unk_16mb(machine_config& config); @@ -449,6 +450,12 @@ void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_unk_1mb(machine_config& m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_1mbyte); } +void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_unk_2mb(machine_config& config) +{ + nes_vt369_vtunknown_unk(config); + m_soc->set_addrmap(AS_PROGRAM, &nes_vt369_vtunknown_unk_state::vt_external_space_map_2mbyte); +} + void nes_vt369_vtunknown_unk_state::nes_vt369_vtunknown_unk_4mb(machine_config& config) { nes_vt369_vtunknown_unk(config); @@ -672,6 +679,11 @@ ROM_START( lxcmcypj ) ROM_LOAD( "cob66-1g-new02.u4", 0x00000, 0x4000000, CRC(78149671) SHA1(00dab8c0919e909e910525c18142e6a195b364f8) ) ROM_END +ROM_START( lxcmcyba ) + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "barbie.bin", 0x00000, 0x4000000, CRC(e38af9d0) SHA1(a978a4da61f007c152c70233e9628dbebb427743) ) +ROM_END + ROM_START( lxcmcypp ) ROM_REGION( 0x4000000, "mainrom", 0 ) // marked 512mbit, possible A22 / A23 are swapped as they were marked on the board in a different way. @@ -920,6 +932,11 @@ ROM_START( lexi30 ) ROM_LOAD( "lexi30.u3", 0x00000, 0x800000, CRC(0d4307ea) SHA1(0d7cf492f796b0bb871deebaca38a3ff3b2ed1e6) ) ROM_END +ROM_START( matet10 ) + ROM_REGION( 0x200000, "mainrom", 0 ) + ROM_LOAD( "tetriskeychain_p25q16sh_856015.bin", 0x00000, 0x200000, CRC(7a7251ea) SHA1(7ace8482a54f6b06982a90328779c21266d864fa) ) + ROM_IGNORE(0x300) +ROM_END void nes_vt369_vtunknown_state::init_lxcmcypp() { @@ -968,25 +985,25 @@ CONS( 2012, lexi30, 0,0, nes_vt369_vtunknown_hh_8mb, nes_vt369_vtunknown, nes_ CONS( 2012, dgun2561, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "dreamGEAR", "My Arcade Portable Gaming System with 140 Games (DGUN-2561)", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme CONS( 2012, lxccatv, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade TV - 120 in 1 (JL2370)", MACHINE_NOT_WORKING ) // 32MByte ROM, 2011 on case, 2012 on PCB -CONS( 200?, lxcmcy, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmc250, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcysw, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcyfz, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcydp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Disney Princess", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcysp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Marvel Ultimate Spider-Man", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcycr, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxcmcypj, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - PJ Masks", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme +// All Lexibook units below have 64Mbyte ROMs, must be externally banked, or different addressing scheme +CONS( 200?, lxcmcy, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmc250, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - 250-in-1 (JL2375)", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcysw, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcyfz, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcydp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Disney Princess", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcysp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Marvel Ultimate Spider-Man", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcycr, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Cars", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcypj, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - PJ Masks", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcyba, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Compact Cyber Arcade - Barbie", MACHINE_NOT_WORKING ) // the data order is swapped for this one, maybe other internal differences? -CONS( 200?, lxcmcypp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme - - -CONS( 200?, lxccminn, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Console Colour - Minnie Mouse", MACHINE_NOT_WORKING ) // 64Mbyte (used) ROM, must be externally banked, or different addressing scheme -CONS( 200?, lxccplan, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Console Colour - Disney's Planes", MACHINE_NOT_WORKING ) // 64Mbyte (used) ROM, must be externally banked, or different addressing scheme +CONS( 200?, lxcmcypp, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, init_lxcmcypp, "Lexibook", "Compact Cyber Arcade - Paw Patrol", MACHINE_NOT_WORKING ) +CONS( 200?, lxccminn, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Console Colour - Minnie Mouse", MACHINE_NOT_WORKING ) +CONS( 200?, lxccplan, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Console Colour - Disney's Planes", MACHINE_NOT_WORKING ) // GB-NO13-Main-VT389-2 on PCBs -CONS( 2016, rtvgc300, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme -CONS( 2017, rtvgc300fz,0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Retro TV Game Console - Frozen - 300 Games", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme +CONS( 2016, rtvgc300, 0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Retro TV Game Console - 300 Games", MACHINE_NOT_WORKING ) +CONS( 2017, rtvgc300fz,0, 0, nes_vt369_vtunknown_cy_bigger, nes_vt369_vtunknown, nes_vt369_vtunknown_cy_state, empty_init, "Lexibook", "Retro TV Game Console - Frozen - 300 Games", MACHINE_NOT_WORKING ) /* The following are also confirmed to be NES/VT derived units, most having a standard set of games with a handful of lazy graphic mods thrown in to fit the unit theme @@ -1109,3 +1126,6 @@ CONS( 2021, tetrtin, 0, 0, nes_vt369_vtunknown_unk_1mb, nes_vt369_vtu // boots, has a lower resolution screen. menu is natively in low resolution, other games should be scaled down CONS( 2021, unk128vt, 0, 0, nes_vt369_vtunknown_unk_4mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "", "unknown VT369 based 128-in-1 (GC31-369-20210702-V2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) + +// uses a low res display like the above +CONS( 2021, matet10, 0, 0, nes_vt369_vtunknown_unk_2mb, nes_vt369_vtunknown, nes_vt369_vtunknown_unk_state, empty_init, "dreamGEAR", "My Arcade Tetris (DGUNL-7083, Pixel Pocket, with 10 bonus games)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/nintendo/nes_vt369_vtunknown_soc.h b/src/mame/nintendo/nes_vt369_vtunknown_soc.h index e3959e14352..021b9925157 100644 --- a/src/mame/nintendo/nes_vt369_vtunknown_soc.h +++ b/src/mame/nintendo/nes_vt369_vtunknown_soc.h @@ -8,7 +8,6 @@ #include "nes_vt09_soc.h" #include "cpu/m6502/rp2a03.h" #include "sound/nes_apu_vt.h" -#include "m6502_vtscr.h" #include "m6502_swap_op_d5_d6.h" #include "vt1682_alu.h" #include "video/ppu2c0x_vt.h" diff --git a/src/mame/nintendo/nes_vt_soc.h b/src/mame/nintendo/nes_vt_soc.h index 2ba8e52d688..52026197219 100644 --- a/src/mame/nintendo/nes_vt_soc.h +++ b/src/mame/nintendo/nes_vt_soc.h @@ -7,7 +7,6 @@ #include "cpu/m6502/rp2a03.h" #include "sound/nes_apu_vt.h" -#include "m6502_vtscr.h" #include "m6502_swap_op_d5_d6.h" #include "video/ppu2c0x_vt.h" #include "screen.h" diff --git a/src/mame/nintendo/rp2a03_vtscr.cpp b/src/mame/nintendo/rp2a03_vtscr.cpp new file mode 100644 index 00000000000..33da5eb9732 --- /dev/null +++ b/src/mame/nintendo/rp2a03_vtscr.cpp @@ -0,0 +1,92 @@ +// license:BSD-3-Clause +// copyright-holders:David Shah +/*************************************************************************** + + rp2a03_vtscr.cpp + + RP2A03 with VRT VTxx instruction scrambling + + Scrambling in newer NES-based VTxx systems (FC pocket, etc) seems to be + enabled with a write of 5 to 0x411E, then is activated at the next jump? + When enabled, opcodes are to be XORed with 0xA1 + +***************************************************************************/ + +#include "emu.h" +#include "rp2a03_vtscr.h" + +DEFINE_DEVICE_TYPE(RP2A03_VTSCR, rp2a03_vtscr, "rp2a03_vtscr", "RP2A03 with VTxx scrambling") + +rp2a03_vtscr::rp2a03_vtscr(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + rp2a03_core_device(mconfig, RP2A03_VTSCR, tag, owner, clock) +{ +} + +void rp2a03_vtscr::device_start() +{ + mintf = std::make_unique(); + set_scramble(false); + init(); +} + +void rp2a03_vtscr::set_next_scramble(bool scr) +{ + downcast(*mintf).m_next_scramble = scr; +} + +void rp2a03_vtscr::set_scramble(bool scr) +{ + downcast(*mintf).m_next_scramble = scr; + downcast(*mintf).m_scramble_en = scr; +} + + +void rp2a03_vtscr::device_reset() +{ + set_scramble(false); + rp2a03_core_device::device_reset(); +} + +bool rp2a03_vtscr::mi_decrypt::toggle_scramble(uint8_t op) { + return (op == 0x4c) || (op == 0x00) || (op == 0x6c); +} + + +uint8_t rp2a03_vtscr::mi_decrypt::read_sync(uint16_t adr) +{ + uint8_t res = cprogram.read_byte(adr); + if(m_scramble_en) + { + res = descramble(res); + } + + if(toggle_scramble(res)) + { + m_scramble_en = m_next_scramble; + } + return res; +} + +uint8_t rp2a03_vtscr::mi_decrypt::descramble(uint8_t op) +{ + return op ^ 0xa1; +} + +std::unique_ptr rp2a03_vtscr::create_disassembler() +{ + return std::make_unique(downcast(mintf.get())); +} + +rp2a03_vtscr::disassembler::disassembler(mi_decrypt *mi) : mintf(mi) +{ +} + +u32 rp2a03_vtscr::disassembler::interface_flags() const +{ + return SPLIT_DECRYPTION; +} + +u8 rp2a03_vtscr::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const +{ + return opcode && mintf->m_scramble_en ? mintf->descramble(value) : value; +} diff --git a/src/mame/nintendo/m6502_vtscr.h b/src/mame/nintendo/rp2a03_vtscr.h similarity index 67% rename from src/mame/nintendo/m6502_vtscr.h rename to src/mame/nintendo/rp2a03_vtscr.h index 29cc75a404d..5eaf57080bd 100644 --- a/src/mame/nintendo/m6502_vtscr.h +++ b/src/mame/nintendo/rp2a03_vtscr.h @@ -2,23 +2,23 @@ // copyright-holders:David Shah /*************************************************************************** - m6502_vtscr.h + rp2a03_vtscr.h - 6502 with VRT VTxx instruction scrambling + RP2A03 with VRT VTxx instruction scrambling ***************************************************************************/ -#ifndef MAME_NINTENDO_M6502_VTSCR_H -#define MAME_NINTENDO_M6502_VTSCR_H +#ifndef MAME_NINTENDO_RP2A03_VTSCR_H +#define MAME_NINTENDO_RP2A03_VTSCR_H #pragma once -#include "cpu/m6502/m6502.h" -#include "cpu/m6502/m6502d.h" +#include "cpu/m6502/rp2a03.h" +#include "cpu/m6502/rp2a03d.h" -class m6502_vtscr : public m6502_device { +class rp2a03_vtscr : public rp2a03_core_device { public: - m6502_vtscr(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + rp2a03_vtscr(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_next_scramble(bool scr); void set_scramble(bool scr); @@ -38,7 +38,7 @@ protected: }; - class disassembler : public m6502_disassembler { + class disassembler : public rp2a03_disassembler { public: mi_decrypt *mintf; @@ -53,6 +53,6 @@ protected: virtual std::unique_ptr create_disassembler() override; }; -DECLARE_DEVICE_TYPE(M6502_VTSCR, m6502_vtscr) +DECLARE_DEVICE_TYPE(RP2A03_VTSCR, rp2a03_vtscr) -#endif // MAME_NINTENDO_M6502_VTSCR_H +#endif // MAME_NINTENDO_RP2A03_VTSCR_H diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 921f1995100..5f3990726d5 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -617,6 +617,13 @@ ROM_START( dgunl3227a ) ROM_LOAD16_WORD_SWAP( "myarcadepacman_s99jl032hbt1_9991227e_as_s29jl032h55tai01.bin", 0x000000, 0x400000, CRC(ecead966) SHA1(971e8da6eb720f670f4148c7e07922e4f24eb609) ) ROM_END +ROM_START( matet ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "tetrismyarcade_s29gl032n90tfi04_0001227e.bin", 0x000000, 0x400000, CRC(09b5af89) SHA1(85e506923fd803f05cc8f579f37331b608fea744) ) + ROM_IGNORE(0x100) +ROM_END + + ROM_START( atgame40 ) ROM_REGION( 0x1000000, "rom", 0 ) ROM_LOAD16_WORD_SWAP( "40bonusgamesin1.bin", 0x000000, 0x1000000, CRC(4eba6e83) SHA1(b8edf1b6ecb70a136b551f1454ba8afa45bd8bc1) ) @@ -788,6 +795,8 @@ CONS( 2018, msi_sf2, 0, 0, megadriv_radica_6button_ntsc, msi_6button, CONS( 2018, dgunl3227, 0, 0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227)", 0 ) CONS( 2018, dgunl3227a, dgunl3227,0, megadriv_dgunl_ntsc, dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227, older)", 0 ) +CONS( 2021, matet, 0, 0, megadriv_radica_3button_ntsc, radica_3button, megadriv_radica_state, init_megadriv, "dreamGEAR", "My Arcade Tetris (DGUNL-7028, Pocket Player Pro)", MACHINE_NOT_WORKING) + CONS( 2018, ra145, 0, 0, megadriv_ra145_ntsc, msi_6button, megadriv_ra145_state, init_ra145, "", "Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs)", MACHINE_NOT_WORKING ) // Technically this is a MD type cartridge, but it doesn't seem to be designed for use with a standard MD as it contains diff --git a/src/mame/tvgames/spg29x_lexibook_jg7425.cpp b/src/mame/tvgames/spg29x_lexibook_jg7425.cpp index 6f055b66d8f..97d4568b05b 100644 --- a/src/mame/tvgames/spg29x_lexibook_jg7425.cpp +++ b/src/mame/tvgames/spg29x_lexibook_jg7425.cpp @@ -201,6 +201,21 @@ ROM_START( zone3d ) ROM_LOAD32_DWORD("internal.rom", 0x000000, 0x008000, NO_DUMP) ROM_END + + +ROM_START( ubox30 ) + ROM_REGION( 0x200000, "extrom", 0 ) // SPI ROM in this case + ROM_LOAD("ubox_xm25qe16bzig_204015.bin", 0x000000, 0x200000, CRC(f8135947) SHA1(f2a075ae2b0bae186202f1019b566ffc411742bb) ) + ROM_IGNORE(0x300) + + DISK_REGION( "cfcard" ) + DISK_IMAGE( "ubox_sd_512", 0, SHA1(99f2f1437d644a5e1fe48ce1445acf48fb8b0359) ) + + ROM_REGION( 0x008000, "spg290", ROMREGION_32BIT | ROMREGION_LE ) + ROM_LOAD32_DWORD("internal.rom", 0x000000, 0x008000, NO_DUMP) +ROM_END + + } // anonymous namespace CONS( 2015, fundr200, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init, "Funderdome", "Funderdome Video Game Entertainment System 200+ Games (FUN-GAME32-1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // FUN-GAME32-1 on manual @@ -210,3 +225,12 @@ CONS( 2016, lx_frozen, 0, 0, lexibook_jg7425, lexibook_jg7425, l // slightly different, but same basic structure of the external ROM COMP( 201?, zone3d, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init,"Zone", "Zone 3D", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) + +// Unknown hardware, HDMI dongle with wireless pads. +// Uses standard chips, not globs, but surface details on CPU/SoC have been erased. +// +// It has the GPspispi header, so is definitely a GeneralPlus / SunPlus chip, and it has a mix of '32-bit' games +// as well as some 8-bit NES/FC games presumably running on an emulator like the above units, but the code in the +// SPI ROM does not seem to disassemble to anything meaningful, maybe compressed? +// Front and back have slightly different product names, unknown if NubSup is the manufacturer or part of the product name +COMP( 201?, ubox30, 0, 0, lexibook_jg7425, lexibook_jg7425, lexibook_jg7425_state, empty_init,"", "NubSup TV Interactive Extreme u-box / Extreme u-box Game Station 32Bit Interactive System - New 30", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 8af3b1a32b5..fbaff440e78 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -37,17 +37,10 @@ 2006 Hello Kitty カードでおままごと あいうおえ図鑑 / エポック社 / 日本 Hello Kitty Play House with Cards Aiuoe Illustrated Book / Epochsha / Japan スーパーテレビパソコンLink / エポック社 / 日本 Super TV PC Link / Epoch / Japan Let's!TVプレイ ふしぎ星のふたご姫Gyu! ドレスチェンジでキュートにダンス / バンダイ / 日本 Let's!TV Play Gyu, the Twin Princess of the Mysterious Planet! Dance cutely with a dress change / Bandai / Japan - Let's!TVプレイ なりきりファイト ウルトラマン 撃て!必殺光線!! / タカラトミー / 日本 Let's!TV Play Narikiri Fight Ultraman Shoot! Deadly ray! ! / Takara Tomy / Japan Jala Jaland /atlus/Japan (arcade version) - - - - - - - 2004 Printer for TV computer /EPOCH/Japan - - - - - - - - Accessory memory mascot for TV mail Pc mail cot 2 characters (Putchi, Petchi) /EPOCH/Japan - - - - - - - - Accessory memory mascot for TV mail Pc mail cot 2 characters (Charuru, Kurau) /EPOCH/Japan - - - - - - - - TV mail PC "Mercot /EPOCH/Japan - - - - - - - Wildest computer robot "Daigander" (Korean version) /TAKARA/Korea - - - - - - - - 2003 Hello Kitty TV computer /EPOCH/Japan - - - - - - - 2001 Ping-pong(Chinese version) /Tenpon/China - - - - - - - - Popira Korea version /SONOKONG/Korea - - - - - - - - I singer: e-kara Korean version /SONOKONG/Korea - - - - - - - Baseball Korean version /SONOKONG/Korea - - - - - - - 1999 ABC Jungle Fun Hippo /VTech/HK, USA, France - - - - - - - @@ -62,7 +55,14 @@ 2005 Let's!TVプレイ ドラゴンボ-ルZ バトル体感かめはめ波~ おめぇとフュージョン / バンダイ / 日本 Let's! TV Play Dragon Ball Z Battle Taikan Kamehameha~ Omee to Fusion / Bandai / Japan dumped: either here, xavix_2000.cpp, or xavix_2002.cpp - Let's!TVプレイ 体感キャストオフ 仮面ライダーカブト クロックアップ&ライダーキック / バンダイ / 日本 Let's! TV Play Taikan Cast Off Kamen Rider Kabuto Clock Up & Rider Kick / Bandai / Japan + Let's!TVプレイ なりきりファイト ウルトラマン 撃て!必殺光線!! / タカラトミー / 日本 Let's!TV Play Narikiri Fight Ultraman Shoot! Deadly ray! ! / Takara Tomy / Japan + Hello Kitty TV computer /EPOCH/Japan - - - - - - - + Popira Korea version /SONOKONG/Korea - - - - - - - + I singer: e-kara Korean version /SONOKONG/Korea - - - - - - - + Accessory memory mascot for TV mail Pc mail cot 2 characters (Putchi, Petchi) /EPOCH/Japan (no unique ROM, just I2C memory storage) + Accessory memory mascot for TV mail Pc mail cot 2 characters (Charuru, Kurau) /EPOCH/Japan (no unique ROM, just I2C memory storage) + TV mail PC "Mercot /EPOCH/Japan - - - - - - - + Let's!TVプレイ 体感キャストオフ 仮面ライダーカブト クロックアップ&ライダーキック / バンダイ / 日本 Let's! TV Play Taikan Cast Off Kamen Rider Kabuto Clock Up & Rider Kick / Bandai / Japan Let's!TVプレイ なりきり体感 ボウケンジャー 走れ!撃て!ミッションスタート!! / バンダイ / 日本 Let's! TV Play Narikiri Taikan Boukenger Hashire! Ute! Mission Start!! / Bandai / Japan Webdiver Gradion /TAKARA/Japan - - - - - - - Let's!TVプレイ 魔法戦隊マジレンジャー マジマットでダンス&バトル / バンダイ / 日本 Let's! TV Play Mahou Taiketsu Magiranger - Magimat de Dance & Battle / Bandai / Japan @@ -2093,6 +2093,14 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config) SOFTWARE_LIST(config, "cart_list").set_original("ekara_cart").set_filter("EKARA"); } +void xavix_cart_state::xavix_cart_isinger(machine_config &config) +{ + xavix_cart(config); + + /* software lists */ + SOFTWARE_LIST(config, "cart_list").set_original("ekara_cart").set_filter("ISINGER"); +} + void xavix_hikara_state::machine_reset() { xavix_ekara_state::machine_reset(); @@ -2159,6 +2167,13 @@ void xavix_cart_state::xavix_cart_popira(machine_config &config) SOFTWARE_LIST(config, "cart_list").set_original("ekara_cart").set_filter("POPIRA"); } +void xavix_cart_state::xavix_cart_popirak(machine_config &config) +{ + xavix_cart(config); + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); + SOFTWARE_LIST(config, "cart_list").set_original("ekara_cart").set_filter("POPIRA_KOREA"); +} + // see code at 028060, using table from 00eb6d for conversion uint8_t xavix_popira2_cart_state::popira2_adc0_r() { @@ -2616,6 +2631,11 @@ ROM_START( ekaras ) ROM_RELOAD(0x000000, 0x200000) ROM_END +ROM_START( isinger ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "kr_isinger.bin", 0x600000, 0x100000, CRC(6ad588fe) SHA1(879da069ca8c126232a1b2dfcce25c8615540e48) ) + ROM_RELOAD(0x000000, 0x100000) +ROM_END ROM_START( epitch ) ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) @@ -2650,6 +2670,12 @@ ROM_START( popira ) ROM_RELOAD(0x000000, 0x100000) ROM_END +ROM_START( popirak ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "kr_main.u2", 0x600000, 0x100000, CRC(785d8e21) SHA1(7877ac33b57bdd8ceac6bda3b0006a3274ad4dce) ) + 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) ) @@ -2739,6 +2765,21 @@ ROM_START( tvpc_ham ) ROM_LOAD( "hpcj.u3", 0x000000, 0x400000, CRC(76e8c854) SHA1(5998c03292a16107d0d7ae00f77677582680f323) ) ROM_END +ROM_START( tvpc_hk ) + ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "kpcj.u2", 0x000000, 0x400000, CRC(87fc2f73) SHA1(29a284b907abec175d4289d290490af17a2a963f) ) +ROM_END + +ROM_START( epo_mail ) + ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "mailcot.u3", 0x000000, 0x400000, CRC(87f13ce7) SHA1(97326257210df411ac8b47e8513bb0da7b02dbde) ) + + // has a HT24LC16 in the main unit + + // the cartridges also contain a HT24LC16 for data transfer between units (no other ROM though) +ROM_END + + ROM_START( tak_gin ) ROM_REGION( 0x200000, "bios", ROMREGION_ERASE00 ) ROM_LOAD( "snowboard.bin", 0x000000, 0x200000, CRC(79fdeae3) SHA1(ab08790e95cdccf3541ecbddb87ebf0dedb3718b) ) @@ -2964,7 +3005,10 @@ CONS( 2000, ekaraa, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_s CONS( 2000, ekaraj, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // shows Japanese message without cart CONS( 2002, ekarag, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara (Europe, includes 3 songs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // found in Germany and UK, could just be a Europe-wide model, NOT a headset model, but still has 3 songs. CONS( 2002, ekaras, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD / newgent", "e-kara (Spain, includes 3 songs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) - // the 'e-kara pro headset' has 3 songs built in for the US release. The Japanese release of this appears to be called 'e-kara H.S.' and it is unclear if it also has built in songs. The Canadian box says 'cartridge contains' instead of 'songs included' but is likely a printing error. +// the Korean i-singer release from Sonokong has a unique bios and different data resources, meaning carts are not fully compatible between it and e-kara +CONS( 2000, isinger, ekara, 0, xavix_cart_isinger, ekara, xavix_ekara_state, init_xavix, "Sonokong / SSD Company LTD", "i-Singer (Korea)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) + +// the 'e-kara pro headset' has 3 songs built in for the US release. The Japanese release of this appears to be called 'e-kara H.S.' and it is unclear if it also has built in songs. The Canadian box says 'cartridge contains' instead of 'songs included' but is likely a printing error. CONS( 2002, ekaraphs, ekara, 0, xavix_cart_ekara, ekara, xavix_ekara_state, init_xavix, "Takara / SSD Company LTD", "e-kara Pro Headset (US, includes 3 songs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND /*| MACHINE_IS_BIOS_ROOT*/ ) // epitch (at least the pichi pichi pitch mermaid starter pack) uses the same internal rom as the Japanese ekara, but has less buttons, so some features aren't available (some games also seem to expect to read it with a different layout eg 'a7' cart, but 'a5' cart doesn't, so must be a way to enable that mode, or bug in code?) @@ -2978,7 +3022,8 @@ 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 -// a Korean version exists from Sonokong brand, with different songs +// the Korean release is not properly compatible with the usual Popira carts, although some of the Korean i-singer range are compatible +CONS( 2001, popirak, popira, 0, xavix_cart_popirak,popira, xavix_cart_state, init_xavix, "Sonokong / SSD Company LTD", "PoPiRa - Finger Sports (Korea)", MACHINE_IMPERFECT_SOUND/*|MACHINE_IS_BIOS_ROOT*/ ) // ポピラ2 CONS( 2002, popira2, 0, 0, xavix_cart_popira2,popira2, xavix_popira2_cart_state, init_xavix, "Takara / SSD Company LTD", "Popira 2 (Japan)", 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) @@ -3019,3 +3064,9 @@ CONS( 2005, tvpc_tom, 0, 0, xavix_i2c_24c16_4mb, tvpc_tom, xavix_i2c CONS( 2003, tvpc_dor, 0, 0, xavix_i2c_24c16_4mb, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Doraemon (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // とっとこハム太郎 テレビパソコン CONS( 2003, tvpc_ham, 0, 0, xavix_i2c_24c16_4mb, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Tottoko Hamutaro (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) + +CONS( 2004, tvpc_hk, 0, 0, xavix_i2c_24c16_4mb, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV-PC Hello Kitty (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) + +// TVメールPC mail*cot メルコット +// has a 74HC541D (maybe keyboard related?) +CONS( 2004, epo_mail, 0, 0, xavix_i2c_24c16_4mb, tvpc_tom, xavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "TV Mail PC mail*cot (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/tvgames/xavix.h b/src/mame/tvgames/xavix.h index 5077c667eca..2a11c60d495 100644 --- a/src/mame/tvgames/xavix.h +++ b/src/mame/tvgames/xavix.h @@ -140,6 +140,7 @@ public: void xavix_43mhz(machine_config &config); void init_xavix(); + void init_no_timer() { init_xavix(); m_disable_timer_irq_hack = true; } void ioevent_trg01(int state); void ioevent_trg02(int state); @@ -197,6 +198,14 @@ public: return 0x00; } + int unknown_random_r() + { + if (!machine().side_effects_disabled()) + return machine().rand(); + else + return 0; + } + protected: // driver_device overrides virtual void machine_start() override ATTR_COLD; @@ -645,6 +654,7 @@ public: , m_bmp_palram_l(*this, "bmp_palram_l") , m_bmp_base(*this, "bmp_base") , m_extra(*this, "extra") + , m_exio(*this, "EX%u", 0U) { m_video_hres_multiplier = 2; } @@ -712,9 +722,9 @@ private: void extended_extbus_reg1_w(uint8_t data); void extended_extbus_reg2_w(uint8_t data); - uint8_t superxavix_read_extended_io0(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io0 (mask %02x)\n", machine().describe_context(), mem_mask); return 0x00; } - uint8_t superxavix_read_extended_io1(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io1 (mask %02x)\n", machine().describe_context(), mem_mask); return 0x00; } - uint8_t superxavix_read_extended_io2(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io2 (mask %02x)\n", machine().describe_context(), mem_mask); return 0x00; } + uint8_t superxavix_read_extended_io0(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io0 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[0]->read(); } + uint8_t superxavix_read_extended_io1(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io1 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[1]->read(); } + uint8_t superxavix_read_extended_io2(offs_t offset, uint8_t mem_mask) { logerror("%s: superxavix_read_extended_io2 (mask %02x)\n", machine().describe_context(), mem_mask); return m_exio[2]->read(); } void superxavix_write_extended_io0(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io0 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } void superxavix_write_extended_io1(offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s: superxavix_write_extended_io1 %02x (mask %02x)\n", machine().describe_context(), data, mem_mask); } @@ -744,6 +754,7 @@ private: required_shared_ptr m_bmp_base; optional_region_ptr m_extra; + required_ioport_array<3> m_exio; bool m_use_superxavix_extra; // does not need saving }; @@ -831,8 +842,6 @@ public: : xavix_state(mconfig, type, tag) { } - int camera_r() { return machine().rand(); } - protected: }; @@ -844,10 +853,6 @@ public: : xavix_i2c_state(mconfig, type, tag) { } - int camera_r(); - - void init_epo_mini(); - protected: //virtual void write_io1(uint8_t data, uint8_t direction) override; }; @@ -979,7 +984,9 @@ public: void xavix_cart(machine_config &config); void xavix_cart_ekara(machine_config &config); + void xavix_cart_isinger(machine_config &config); void xavix_cart_popira(machine_config &config); + void xavix_cart_popirak(machine_config &config); void xavix_cart_ddrfammt(machine_config &config); void xavix_cart_evio(machine_config &config); void xavix_cart_daig(machine_config &config); diff --git a/src/mame/tvgames/xavix_2000.cpp b/src/mame/tvgames/xavix_2000.cpp index 82d5ec700a0..48fb1ad82bf 100644 --- a/src/mame/tvgames/xavix_2000.cpp +++ b/src/mame/tvgames/xavix_2000.cpp @@ -182,8 +182,8 @@ static INPUT_PORTS_START( ttv_lotr ) PORT_INCLUDE(xavix) PORT_MODIFY("IN1") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_i2c_lotr_state::camera_r)) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_i2c_lotr_state::camera_r)) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_i2c_lotr_state::unknown_random_r)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_i2c_lotr_state::unknown_random_r)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) INPUT_PORTS_END @@ -191,8 +191,8 @@ static INPUT_PORTS_START( epo_hamc ) PORT_INCLUDE(xavix) PORT_MODIFY("IN1") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_epo_hamc_state::camera_r)) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_epo_hamc_state::camera_r)) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_epo_hamc_state::unknown_random_r)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(xavix_epo_hamc_state::unknown_random_r)) INPUT_PORTS_END static INPUT_PORTS_START( ttv_mx ) @@ -384,11 +384,6 @@ ROM_START( epo_es2j ) // ES2J MAIN-01 2005 date on PCB, 2006 ingame ROM_LOAD("es2j.u3", 0x000000, 0x400000, CRC(840aecb1) SHA1(ad52449ffc13af5f4c67b2c3cf438e7ecd80b9fb) ) ROM_END -void xavix_i2c_lotr_state::init_epo_mini() -{ - init_xavix(); - m_disable_timer_irq_hack = true; -} // doesn't use extra opcodes? @@ -401,14 +396,14 @@ CONS( 2002, epo_bowl, 0, 0, xavix2000_i2c_24c04_2mb, epo_bowl, xavix_i2c_stat // スーパーショット! エキサイトゴルフ // needs timer irq hack to boot, fails to draw main menu properly (buggy xavix2000 opcodes?) (2002 date on PCB, 2003 ingame) -CONS( 2003, epo_golf, 0, 0, xavix2000_i2c_24c04_4mb, ttv_lotr, xavix_i2c_lotr_state, init_epo_mini, "Epoch / SSD Company LTD", "Super Shot! Excite Golf (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2003, epo_golf, 0, 0, xavix2000_i2c_24c04_4mb, ttv_lotr, xavix_i2c_lotr_state, init_no_timer, "Epoch / SSD Company LTD", "Super Shot! Excite Golf (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // とっとこハム太郎 ハムハム大サーカス! CONS( 2002, epo_hamc, 0, 0, xavix2000_4mb, epo_hamc, xavix_epo_hamc_state, init_xavix, "Epoch / SSD Company LTD", "Tottoko Hamtaro - Ham Ham Dai Circus! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // ミニモニ。パーティ!リズムでぴょん! // needs timer irq hack to boot -CONS( 2003, epo_mini, 0, 0, xavix2000_i2c_24c08_4mb, ttv_lotr, xavix_i2c_lotr_state, init_epo_mini, "Epoch / SSD Company LTD", "mini-moni Party! Rhythm de Pyon! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2003, epo_mini, 0, 0, xavix2000_i2c_24c08_4mb, ttv_lotr, xavix_i2c_lotr_state, init_no_timer, "Epoch / SSD Company LTD", "mini-moni Party! Rhythm de Pyon! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // カードスキャン! エキサイトステージ サッカー日本代表チーム CONS( 2006, epo_es2j, 0, 0, xavix2000_4mb, xavix, xavix_state, init_xavix, "Epoch / SSD Company LTD", "Card Scan! Excite Stage Soccer Nippon Daihyou Team (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) @@ -444,7 +439,7 @@ CONS( 2004, ban_onep, 0, 0, xavix2000_i2c_24c04, ttv_lotr, xavix_i2c_lotr_sta // Let’s!TV プレイ 闘印奥義  陰陽大戦記~目指せ最強闘神士~ // stalls unless timers are disabled like epo_mini / epo_golf, 2004 date on PCB, 2005 ingame -CONS( 2005, ban_omt, 0, 0, xavix2000_i2c_24c04_4mb, ttv_lotr, xavix_i2c_lotr_state, init_epo_mini, "Bandai / SSD Company LTD", "Let's! TV Play Touin Ougi Onmyou Taisenki: Mezase Saikyou Toushinshi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +CONS( 2005, ban_omt, 0, 0, xavix2000_i2c_24c04_4mb, ttv_lotr, xavix_i2c_lotr_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Touin Ougi Onmyou Taisenki: Mezase Saikyou Toushinshi (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // ディズニープリンセス キラキラ魔法のレッスン CONS( 2004, tom_dpgm, 0, 0, xavix2000_i2c_24c08_4mb, ttv_lotr, xavix_i2c_lotr_state, init_xavix, "Tomy / SSD Company LTD", "Disney Princess Kirakira Mahou no Lesson (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 1af468cc7ab..b0983129dd4 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -103,6 +103,84 @@ static INPUT_PORTS_START( xavix ) PORT_START("MOUSE1Y") PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_START("EX0") + PORT_DIPNAME( 0x01, 0x00, "EX0" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START("EX1") + PORT_DIPNAME( 0x01, 0x00, "EX1" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START("EX2") + PORT_DIPNAME( 0x01, 0x00, "EX2" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_START("REGION") // PAL/NTSC flag PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_CUSTOM ) INPUT_PORTS_END @@ -186,7 +264,7 @@ static INPUT_PORTS_START( mrangbat ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - PORT_START("EX0") // NOT A JOYSTICK!! + PORT_MODIFY("EX0") // NOT A JOYSTICK!! PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_16WAY // Red/Up 1 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_16WAY // Red/Up 2 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY // Green / Circle / Right 2 @@ -195,70 +273,31 @@ static INPUT_PORTS_START( mrangbat ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_16WAY // Yellow / Triangle / Left 1 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 ) - - - PORT_START("EX1") - PORT_DIPNAME( 0x01, 0x00, "EX1" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("EX2") - PORT_DIPNAME( 0x01, 0x00, "EX2" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( xavix_bowl ) PORT_INCLUDE(xavix) PORT_MODIFY("IN1") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::camera_r)) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::camera_r)) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::unknown_random_r)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::unknown_random_r)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) INPUT_PORTS_END +static INPUT_PORTS_START( ban_ult ) + PORT_INCLUDE(xavix) + + PORT_MODIFY("IN1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::unknown_random_r)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(superxavix_i2c_bowl_state::unknown_random_r)) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", FUNC(i2cmem_device::read_sda)) + + PORT_MODIFY("EX2") + PORT_DIPNAME( 0x80, 0x80, "Demo Mode" ) // bypasses calibration screen + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) +INPUT_PORTS_END + static INPUT_PORTS_START( xavixp ) PORT_INCLUDE(xavix) @@ -275,6 +314,17 @@ static INPUT_PORTS_START( ban_ordj ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( ban_dn1j ) + PORT_INCLUDE(xavix_i2c) + + PORT_MODIFY("IN0") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + + PORT_MODIFY("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) +INPUT_PORTS_END + static INPUT_PORTS_START( anpanmdx ) PORT_INCLUDE(xavix_i2c) @@ -345,16 +395,6 @@ void superxavix_i2c_jmat_state::write_extended_io2(offs_t offset, uint8_t data, LOG("%s: io2_data_w %02x\n", machine().describe_context(), data); } -int xavix_i2c_lotr_state::camera_r() // seems to be some kind of camera status bits -{ - return machine().rand(); -} - -int superxavix_i2c_bowl_state::camera_r() // seems to be some kind of camera status bits -{ - return machine().rand(); -} - void superxavix_i2c_state::write_io1(uint8_t data, uint8_t direction) { m_i2cmem->write_sda(BIT(data | ~direction, 3)); @@ -722,6 +762,11 @@ ROM_START( ban_utmj ) // SEEPROM is HT24LC02 at u3 ROM_END +ROM_START( ban_ult ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00) + ROM_LOAD("ultraman.u1", 0x000000, 0x800000,CRC(bc2a94fb) SHA1(4dc81089ac2afc1c9496a49ffd778213bb4a12bd) ) +ROM_END + ROM_START( ban_bkgj ) ROM_REGION( 0x400000, "bios", ROMREGION_ERASE00) ROM_LOAD("bkgj.u2", 0x000000, 0x400000, CRC(a59ce23c) SHA1(d2a6be9e46f3cfc3cf798bf1f76732eee909c93b) ) @@ -784,6 +829,14 @@ ROM_START( doradraw ) ROM_LOAD("dmdj.u7", 0x000000, 0x200000, CRC(0e6392f9) SHA1(30fa3d3451b37d663e124c7d1d52c7e30284d2fb) ) ROM_END +ROM_START( ndpbj ) + ROM_REGION( 0x800000, "bios", ROMREGION_ERASE00) + ROM_LOAD("ndpbj.u2", 0x000000, 0x800000, CRC(80cb5cbb) SHA1(cd424c4fbea8e9e47d165c4c8be52755fc7c2d98) ) + + ROM_REGION( 0x400, "i2cmem", ROMREGION_ERASE00) + ROM_LOAD("s-24cs08a.u6", 0x000, 0x400, CRC(a22db408) SHA1(f8d925c75054a961930af12869e3002bb9c4600b) ) +ROM_END + void superxavix_super_tv_pc_state::init_stvpc() { @@ -870,6 +923,9 @@ CONS( 2006, ban_bkgj, 0, 0, superxavix_i2c_24c04_4mb,xavix_i2c, superxavix_i2c_ // Let's!TV プレイ 体感キャストオフ 仮面ライダーカブト クロックアップ&ライダーキック CONS( 2006, ban_utmj, 0, 0, superxavix_i2c_24c02, xavix_i2c, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Taikan Cast Off - Kamen Rider Kabuto Clock Up & Rider Kick!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +// Let's!TVプレイ なりきりファイト ウルトラマン 撃て!必殺光線!! +CONS( 2006, ban_ult, 0, 0, superxavix_i2c_24c02, ban_ult, superxavix_i2c_bowl_state, init_no_timer, "Bandai / SSD Company LTD", "Let's! TV Play Narikiri Fight Ultraman - Ute! Hissatsu Kousen!! (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + // それいけトーマス ソドー島のなかまたち CONS( 2005, tmy_thom, 0, 0, superxavix_i2c_24c04, xavix_i2c, superxavix_i2c_state, init_xavix, "Tomy / SSD Company LTD", "Soreike Thomas - Sodor Tou no Nakamatachi / Thomas & Friends on the Island of Sodor (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) @@ -883,7 +939,7 @@ CONS( 2007, tmy_rkmj, 0, 0, superxavix_i2c_24c04, xavix_i2c, superxavix_i2c_ CONS( 2005, ban_ordj, 0, 0, superxavix_i2c_24c04, ban_ordj, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Ongeki Battle! Kamen Rider Hibiki: Kimero! Ikki Kasei no Kata (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // ディズニーキャラクターズ オト!イロ!トン・トン!ミラクルパレード -CONS( 2007, ban_dn1j, 0, 0, superxavix_i2c_24c04, ban_ordj, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Disney Characters Oto! Iro! Ton-Ton! Miracle Parade (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2007, ban_dn1j, 0, 0, superxavix_i2c_24c04, ban_dn1j, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Disney Characters Oto! Iro! Ton-Ton! Miracle Parade (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // アンパンマン かぞくで!育脳マットDX CONS( 2011, anpanmdx, 0, 0, superxavix_i2c_24c08, anpanmdx, superxavix_i2c_state, init_xavix, "JoyPalette / SSD Company LTD", "Anpanman Kazoku de! Ikunou Mat DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) @@ -904,3 +960,7 @@ CONS( 2008, epo_ntpj, 0, 0, superxavix_piano_pc, suprtvpc, superxavix_piano_pc_ // ドラえもん うごく!おえかき エポック社 CONS( 2007, doradraw, 0, 0, superxavix_doradraw, xavix, superxavix_doradraw_state, init_doradraw, "Epoch / SSD Company LTD", "Doraemon Ugoku! Oekaki (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +// どんトレだ兵衛~どん兵衛くんとトレーニング +// doesn't boot, has a camera with a large number of connections going to it, probably wants comms to work with it? +CONS( 2007, ndpbj, 0, 0, superxavix_i2c_24c08, xavix_i2c, superxavix_i2c_state, init_xavix, "Nissin / SSD Company LTD", "Dontore da bei - Donbei-kun to Training (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/tvgames/xavix_2002.h b/src/mame/tvgames/xavix_2002.h index 184553877da..e75f63e3549 100644 --- a/src/mame/tvgames/xavix_2002.h +++ b/src/mame/tvgames/xavix_2002.h @@ -120,8 +120,6 @@ public: superxavix_i2c_bowl_state(const machine_config &mconfig, device_type type, const char *tag) : superxavix_i2c_state(mconfig, type, tag) { } - - int camera_r(); };