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]
This commit is contained in:
mamehaze 2025-02-22 16:23:05 +00:00 committed by GitHub
parent a5ec778d17
commit aa32b6e89b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 459 additions and 235 deletions

View File

@ -3741,4 +3741,52 @@ license:CC0-1.0
</part>
</software>
<software name="kr_vol2">
<description>i-Singer Volume 2 (Korea)</description>
<year>2002</year>
<publisher>Takara / Sonokong</publisher>
<sharedfeat name="compatibility" value="ISINGER"/>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x100000">
<rom name="kr-ec002.u1" size="0x100000" crc="0c060c0f" sha1="82e0757a380617008b7313cf6b380e16804f7862"/>
</dataarea>
</part>
</software>
<software name="kr_vol3">
<description>i-Singer Volume 3 (Korea)</description>
<year>2002</year>
<publisher>Takara / Sonokong</publisher>
<sharedfeat name="compatibility" value="ISINGER"/>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x100000">
<rom name="kr-ec003.u1" size="0x100000" crc="928b97a6" sha1="5900cda733298b258b114c5452e1c02b0d90cee4"/>
</dataarea>
</part>
</software>
<software name="kr_vol11">
<description>i-Singer Volume 11 (Korea)</description>
<year>2002</year>
<publisher>Takara / Sonokong</publisher>
<sharedfeat name="compatibility" value="ISINGER"/>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x100000">
<rom name="kr-ec011.u1" size="0x100000" crc="effe2356" sha1="57417803b25273439fb5537a7d5aca340988eea8"/>
</dataarea>
</part>
</software>
<software name="kr_vol14">
<description>i-Singer Volume 14 (Korea)</description>
<year>2002</year>
<publisher>Takara / Sonokong</publisher>
<sharedfeat name="compatibility" value="ISINGER"/>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x100000">
<rom name="kr-s001.u1" size="0x100000" crc="8a43e1b6" sha1="69eae20a395aee941a5da3a02e6c2dc6feee2391"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -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

View File

@ -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<mi_decrypt>();
set_scramble(false);
init();
}
void m6502_vtscr::set_next_scramble(bool scr)
{
downcast<mi_decrypt &>(*mintf).m_next_scramble = scr;
}
void m6502_vtscr::set_scramble(bool scr)
{
downcast<mi_decrypt &>(*mintf).m_next_scramble = scr;
downcast<mi_decrypt &>(*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<util::disasm_interface> m6502_vtscr::create_disassembler()
{
return std::make_unique<disassembler>(downcast<mi_decrypt *>(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;
}

View File

@ -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"

View File

@ -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, "<unknown>", "FC Pocket 600 in 1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has external banking (2x 32mbyte banks)

View File

@ -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<m6502_vtscr &>(*m_maincpu).set_next_scramble(true);
downcast<rp2a03_vtscr &>(*m_maincpu).set_next_scramble(true);
else if (data == 0x00)
downcast<m6502_vtscr &>(*m_maincpu).set_next_scramble(false);
downcast<rp2a03_vtscr &>(*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<m6502_vtscr &>(*m_maincpu).set_scramble(false);
// downcast<rp2a03_vtscr &>(*m_maincpu).set_scramble(false);
}

View File

@ -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;
};

View File

@ -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>", "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 )

View File

@ -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"

View File

@ -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"

View File

@ -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<mi_decrypt>();
set_scramble(false);
init();
}
void rp2a03_vtscr::set_next_scramble(bool scr)
{
downcast<mi_decrypt &>(*mintf).m_next_scramble = scr;
}
void rp2a03_vtscr::set_scramble(bool scr)
{
downcast<mi_decrypt &>(*mintf).m_next_scramble = scr;
downcast<mi_decrypt &>(*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<util::disasm_interface> rp2a03_vtscr::create_disassembler()
{
return std::make_unique<disassembler>(downcast<mi_decrypt *>(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;
}

View File

@ -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<util::disasm_interface> 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

View File

@ -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, "<unknown>", "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

View File

@ -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,"<unknown>", "NubSup TV Interactive Extreme u-box / Extreme u-box Game Station 32Bit Interactive System - New 30", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )

View File

@ -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プレイ / / 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)

View File

@ -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<uint8_t> m_bmp_base;
optional_region_ptr<uint8_t> 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);

View File

@ -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
// LetsTV プレイ 闘印奥義  陰陽大戦記~目指せ最強闘神士~
// 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 )

View File

@ -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 )

View File

@ -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();
};