new WORKING machines (Plug Play) (#7017)

new WORKING machines
-----
Vs Maxx 10-in-1 Casino / Senario Card & Casino Games [Sean Riddle, David Haywood]

new NOT WORKING machines
-----
Ordenador-TV (Spain) [ClawGrip, Sean Riddle, David Haywood]
Centro TV de Diseno Artistico [ClawGrip, Sean Riddle, David Haywood]
I'm Game! GP120 (Family Sport 120-in-1) [Sean Riddle, David Haywood]
My Wico Guitar [ClawGrip, Sean Riddle, David Haywood]
unknown VT1682 based 101-in-1 handheld (PAL) [Takashi Omoto / https://twitter.com/takashioomoto , TeamEurope, David Haywood]
Lexibook Compact Cyber Arcade - Paw Patrol [TeamEurope]
This commit is contained in:
David Haywood 2020-07-30 00:14:58 +01:00 committed by GitHub
parent b5bbf672f0
commit 3b905df6c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 354 additions and 51 deletions

View File

@ -400,6 +400,14 @@ ROM_START( tkmag220 )
ROM_END
ROM_START( imgame )
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 ) // the 2nd half of this ROM required multiple attempts to get a matching dump, so could be suspect, might also be unused as this only has 120 games
ROM_LOAD16_WORD_SWAP( "imgame.bin", 0x0000000, 0x8000000, CRC(6fba9021) SHA1(852f4c0aaed682aa8ff5b8cd52313ea2d3d920a1))
ROM_END
ROM_START( myac220 )
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
@ -474,6 +482,10 @@ CONS(201?, tkmag220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empt
// DGUN-2891 or DGUN-2864 ? both look the same, no indication on unboxed unit?
CONS(201?, myac220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init, "dreamGEAR", "My Arcade Go Gamer Portable (Family Sport 220-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// 2012 date from manual
CONS(2012, imgame, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init, "I'm Game", "I'm Game! GP120 (Family Sport 120-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// a 180 game Family Sport I'm Game! also exists (and some Famiclones)
// die on this one is 'GCM420'
CONS(2013, gormiti, 0, 0, base, gormiti, gormiti_game_state, empty_init, "Giochi Preziosi", "Gormiti Game Arena (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)

View File

@ -35,9 +35,9 @@ class nes_sh6578_state : public driver_device
public:
nes_sh6578_state(const machine_config& mconfig, device_type type, const char* tag) :
driver_device(mconfig, type, tag),
m_bank(*this, "cartbank"),
m_maincpu(*this, "maincpu"),
m_ppu(*this, "ppu"),
m_bank(*this, "cartbank"),
m_fullrom(*this, "fullrom"),
m_screen(*this, "screen"),
m_apu(*this, "nesapu"),
@ -57,10 +57,14 @@ protected:
void sprite_dma_w(address_space &space, uint8_t data);
virtual void io_w(uint8_t data);
virtual void extio_w(uint8_t data);
bool m_isbanked;
required_memory_bank m_bank;
private:
required_device<cpu_device> m_maincpu;
required_device<ppu_sh6578_device> m_ppu;
required_memory_bank m_bank;
required_device<address_map_bank_device> m_fullrom;
required_device<screen_device> m_screen;
required_device<nesapu_device> m_apu;
@ -101,7 +105,6 @@ private:
uint8_t io0_r();
uint8_t io1_r();
void io_w(uint8_t data);
uint8_t psg1_4014_r();
uint8_t psg1_4015_r();
@ -138,11 +141,31 @@ private:
// this might be game specific
uint8_t m_previo;
uint8_t m_iolatch[2];
bool m_isbanked;
required_ioport_array<2> m_in;
};
class nes_sh6578_abl_wikid_state : public nes_sh6578_state
{
public:
nes_sh6578_abl_wikid_state(const machine_config& mconfig, device_type type, const char* tag) :
nes_sh6578_state(mconfig, type, tag)
{ }
protected:
virtual void io_w(uint8_t data) override;
};
class nes_sh6578_max10in1_state : public nes_sh6578_state
{
public:
nes_sh6578_max10in1_state(const machine_config& mconfig, device_type type, const char* tag) :
nes_sh6578_state(mconfig, type, tag)
{ }
protected:
virtual void extio_w(uint8_t data) override;
virtual void machine_reset() override;
};
uint8_t nes_sh6578_state::bank_r(int bank, uint16_t offset)
{
@ -400,14 +423,34 @@ void nes_sh6578_state::io_w(uint8_t data)
}
}
m_previo = data;
}
void nes_sh6578_abl_wikid_state::io_w(uint8_t data)
{
nes_sh6578_state::io_w(data);
if (m_isbanked)
{
m_bank->set_entry((data>>1)&1);
}
m_previo = data;
}
void nes_sh6578_state::extio_w(uint8_t data)
{
logerror("%s: extio_w : %02x\n", machine().describe_context(), data);
}
void nes_sh6578_max10in1_state::extio_w(uint8_t data)
{
logerror("%s: extio_w : %02x (max10in1)\n", machine().describe_context(), data);
m_bank->set_entry((data & 0x80) >> 7);
}
uint8_t nes_sh6578_state::psg1_4014_r()
{
@ -456,6 +499,13 @@ void nes_sh6578_state::nes_sh6578_map(address_map& map)
map(0x4017, 0x4017).rw(FUNC(nes_sh6578_state::io1_r), FUNC(nes_sh6578_state::psg1_4017_w));
map(0x4020, 0x4020).w(FUNC(nes_sh6578_state::timing_setting_control_w));
//4021 write keyboard output port
//4022 read/write keyboard data control
//4023 read/write joystick,mouse control
//4024 read - mouse port / write - mouse baud
//4025 write - Printer Port
map(0x4026, 0x4026).w(FUNC(nes_sh6578_state::extio_w));
//4027 read/write - DAC data register
map(0x4031, 0x4031).w(FUNC(nes_sh6578_state::initial_startup_w));
map(0x4032, 0x4032).w(FUNC(nes_sh6578_state::irq_mask_w));
@ -512,6 +562,12 @@ void nes_sh6578_state::machine_reset()
m_timerval = 0x00;
}
void nes_sh6578_max10in1_state::machine_reset()
{
nes_sh6578_state::machine_reset();
m_bank->set_entry(1);
}
void nes_sh6578_state::machine_start()
{
m_bank->configure_entry(0, memregion("maincpu")->base() + 0x0000000);
@ -653,6 +709,11 @@ ROM_START( maxx6in1 )
ROM_LOAD( "maxx6in1.bin", 0x00000, 0x100000, CRC(8e582298) SHA1(89892b9095dbd5101cdf2477a66abd2cb11ad8c8) )
ROM_END
ROM_START( max10in1 )
ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "csmaxxcasino10.bin", 0x000000, 0x200000, CRC(2a05e9af) SHA1(fcf591c22ce8773f72e9d0fa0bae545f6a82a063) )
ROM_END
CONS( 1997, bandgpad, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Bandai", "Multi Game Player Gamepad", MACHINE_NOT_WORKING )
CONS( 1997, bandggcn, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Bandai", "Go! Go! Connie-chan! Asobou Mouse", MACHINE_NOT_WORKING )
@ -662,8 +723,10 @@ CONS( 2001, ts_handy11, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, i
CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING )
// ROM is banked
CONS( 200?, ablwikid, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Advance Bright Ltd.", "Wikid Joystick", MACHINE_NOT_WORKING ) // or Wik!d Joystick
CONS( 200?, ablwikid, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_abl_wikid_state, init_nes_sh6578, "Advance Bright Ltd.", "Wikid Joystick", MACHINE_NOT_WORKING ) // or Wik!d Joystick
CONS( 200?, maxx5in1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Senario", "Vs Maxx 5-in-1 Casino / Senario Card & Casino Games", 0 ) // advertised on box as 'With Solitaire" (was there an even older version without it?)
CONS( 200?, maxx6in1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Senario", "Vs Maxx 6-in-1 Casino / Senario Card & Casino Games", 0 ) // advertised on box as "With Texas Hold 'Em" (which is the added game since the 5-in-1)
CONS( 200?, max10in1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_max10in1_state, init_nes_sh6578, "Senario", "Vs Maxx 10-in-1 Casino / Senario Card & Casino Games", 0 )

View File

@ -274,6 +274,8 @@ public:
m_latch1_bit(0)
{ }
void init_lxcmcypp();
protected:
virtual uint8_t in0_r() override;
virtual uint8_t in1_r() override;
@ -394,23 +396,6 @@ private:
required_ioport m_plunger;
};
class nes_vt_sudoku_state : public nes_vt_state
{
public:
nes_vt_sudoku_state(const machine_config& mconfig, device_type type, const char* tag) :
nes_vt_state(mconfig, type, tag)
{ }
void init_sudoku();
void nes_vt_sudoku_512kb(machine_config& config);
private:
virtual uint8_t in0_r() override;
virtual uint8_t in1_r() override;
virtual void in0_w(uint8_t data) override;
};
class nes_vt_vg_1mb_majgnc_state : public nes_vt_state
{
public:
@ -724,20 +709,6 @@ void nes_vt_ablpinb_state::in0_w(uint8_t data)
logerror("in0_w %02x\n", data);
}
uint8_t nes_vt_sudoku_state::in0_r()
{
return machine().rand();
}
uint8_t nes_vt_sudoku_state::in1_r()
{
return machine().rand();
}
void nes_vt_sudoku_state::in0_w(uint8_t data)
{
}
/* not strictly needed, but helps us see where things are in ROM to aid with figuring out banking schemes*/
static const gfx_layout helper_layout =
@ -1614,6 +1585,12 @@ ROM_START( lxcmcysp )
ROM_LOAD( "lexibookspiderman.bin", 0x00000, 0x4000000, CRC(ef6e8847) SHA1(0012df193c52fd48595d85886fd431619c5d5e3e) )
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.
ROM_LOAD( "pawpatrol_compact.bin", 0x00000, 0x4000000, CRC(bf536762) SHA1(80dde8426a636bae33a82d779e564fa743eb3776) )
ROM_END
ROM_START( lxcmc250 )
ROM_REGION( 0x4000000, "mainrom", 0 )
// sub-board was marked for 2GB capacity (A0-A26 address lines), but only address lines A0-A24 are connected to the chip
@ -1979,6 +1956,17 @@ ROM_START( zonefusn )
ROM_LOAD( "fusion.bin", 0x00000, 0x1000000, CRC(240bf970) SHA1(1b82d95a252c08e52fb8da6320276574a30b60db) )
ROM_END
void nes_vt_cy_lexibook_state::init_lxcmcypp()
{
int size = memregion("mainrom")->bytes()/2;
uint16_t* ROM = (uint16_t*)memregion("mainrom")->base();
for (int i = 0; i < size; i++)
{
ROM[i] = bitswap<16>(ROM[i], 4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11);
}
}
// earlier version of vdogdemo
CONS( 200?, vdogdeme, 0, 0, nes_vt_1mb, nes_vt, nes_vt_state, empty_init, "VRT", "V-Dog (prototype, earlier)", MACHINE_NOT_WORKING )
@ -2052,27 +2040,27 @@ CONS( 200?, dgun2500, 0, 0, nes_vt_dg_baddma_16mb, nes_vt, nes_vt_dg_state, e
CONS( 2012, dgun2561, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_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( 2016, dgun2593, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "dreamGEAR", "My Arcade Retro Arcade Machine - 300 Handheld Video Games (DGUN-2593)", MACHINE_NOT_WORKING ) // 128Mbyte ROM, must be externally banked or different addressing scheme
CONS( 200?, lxcmcy, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmc250, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmcydp, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Marvel Ultimate Spider-Man", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmcy, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmc250, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Frozen", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmcydp, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Marvel Ultimate Spider-Man", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxcmcypp, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, init_lxcmcypp, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Console Colour - Disney's Planes", MACHINE_NOT_WORKING ) // 64Mbyte (used) ROM, must be externally banked, or different addressing scheme
CONS( 200?, lxccminn, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Console Colour - Disney's Planes", MACHINE_NOT_WORKING ) // 64Mbyte (used) ROM, must be externally banked, or different addressing scheme
// GB-NO13-Main-VT389-2 on PCBs
CONS( 2016, rtvgc300, 0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "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_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_state, empty_init, "Lexibook", "Lexibook Retro TV Game Console - Frozen - 300 Games", MACHINE_NOT_WORKING ) // 64Mbyte ROM, must be externally banked, or different addressing scheme
/* 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
(handhekd units, use standard AAA batteries)
Lexibook Compact Cyber Arcade - Cars
Lexibook Compact Cyber Arcade - Paw Patrol
Lexibook Compact Cyber Arcade - Barbie
Lexibook Compact Cyber Arcade - Finding Dory
Lexibook Compact Cyber Arcade - PJ Masks

View File

@ -317,6 +317,14 @@ void spg2xx_game_gssytts_state::mem_map_upperbank(address_map &map)
map(0x200000, 0x3fffff).bankr("upperbank");
}
void spg2xx_game_wfcentro_state::mem_map_wfcentro(address_map &map)
{
map(0x000000, 0x37ffff).bankr("cartbank");
map(0x380000, 0x3fffff).ram();
}
static INPUT_PORTS_START( spg2xx ) // base structure for easy debugging / figuring out of inputs
PORT_START("P1")
PORT_DIPNAME( 0x0001, 0x0001, "P1:0001" )
@ -629,6 +637,19 @@ static INPUT_PORTS_START( abltenni )
PORT_MODIFY("P3")
INPUT_PORTS_END
static INPUT_PORTS_START( ordentv )
PORT_INCLUDE( spg2xx )
PORT_MODIFY("P2")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 )
INPUT_PORTS_END
static INPUT_PORTS_START( fordrace )
PORT_INCLUDE( spg2xx )
@ -1482,6 +1503,20 @@ void spg2xx_game_gssytts_state::gssytts(machine_config &config)
}
void spg2xx_game_wfcentro_state::wfcentro(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_wfcentro_state::mem_map_wfcentro);
spg2xx_base(config);
m_maincpu->porta_in().set(FUNC(spg2xx_game_wfcentro_state::base_porta_r));
m_maincpu->portb_in().set(FUNC(spg2xx_game_wfcentro_state::base_portb_r));
m_maincpu->portc_in().set(FUNC(spg2xx_game_wfcentro_state::base_portc_r));
}
void spg2xx_game_senwfit_state::portc_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
int bank = 0;
@ -1560,6 +1595,26 @@ void spg2xx_game_state::rad_crik(machine_config &config)
m_maincpu->i2c_r().set(FUNC(spg2xx_game_state::i2c_r));
}
uint16_t spg2xx_game_ordentv_state::ordentv_portc_r(offs_t offset, uint16_t mem_mask)
{
uint16_t data = m_io_p3->read() ^ (machine().rand() & 1);
logerror("%s: Port C Read: %04x (%04x)\n", machine().describe_context(), data, mem_mask);
return data;
}
void spg2xx_game_ordentv_state::ordentv(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_ordentv_state::mem_map_4m);
spg2xx_base(config);
m_maincpu->porta_in().set(FUNC(spg2xx_game_ordentv_state::base_porta_r));
m_maincpu->portb_in().set(FUNC(spg2xx_game_ordentv_state::base_portb_r));
m_maincpu->portc_in().set(FUNC(spg2xx_game_ordentv_state::ordentv_portc_r));
}
ROM_START( rad_skat )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
@ -1716,6 +1771,17 @@ ROM_START( senspeed )
ROM_LOAD16_WORD_SWAP( "speedracer.bin", 0x000000, 0x800000, CRC(4efbcd39) SHA1(2edffbaa9ea309ad308fa60f32d8b7a98ee313c7) )
ROM_END
ROM_START( ordentv )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "taikeeordenadortv.bin", 0x000000, 0x800000, CRC(ba15895a) SHA1(0a18076cbc3264c91473b8518dfb10d679321b47) )
ROM_END
ROM_START( wfcentro )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "winfuncentro.bin", 0x000000, 0x800000, CRC(fd6ad052) SHA1(78af844729bf4843dc70531349e38a8c25caf748) )
ROM_END
void spg2xx_game_state::init_crc()
{
// several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match.
@ -1764,6 +1830,13 @@ void spg2xx_game_albkickb_state::init_ablkickb()
decrypt_ac_ff(ROM, size);
}
void spg2xx_game_ordentv_state::init_ordentv()
{
// the game will die by jumping to an infinite loop if this check fails, what is it checking?
uint16_t* rom = (uint16_t*)memregion("maincpu")->base();
rom[0x4fef8] = 0xee07;
}
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
@ -1825,6 +1898,9 @@ CONS( 2007, dreamlss, 0, 0, dreamlss, dreamlss, spg2xx_game_dreamlss_
CONS( 2008, swclone, 0, 0, swclone, swclone, spg2xx_game_swclone_state, init_swclone, "Hasbro / Tiger Electronics", "Star Wars - The Clone Wars", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// Mattel games
CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )
CONS( 2005, mattelcs, 0, 0, rad_skat, mattelcs, spg2xx_game_state, empty_init, "Mattel", "Mattel Classic Sports", MACHINE_IMPERFECT_SOUND )
CONS( 2007, ordentv, 0, 0, ordentv, ordentv, spg2xx_game_ordentv_state, init_ordentv, "Taikee / V-Tac", "Ordenador-TV (Spain)", MACHINE_NOT_WORKING )
CONS( 200?, wfcentro, 0, 0, wfcentro, spg2xx, spg2xx_game_wfcentro_state, empty_init, "WinFun", "Centro TV de Diseno Artistico (Spain)", MACHINE_NOT_WORKING )
// Both the WiWi and Fox Sports units seem to be related to the 'Virtual Interactive' (aka 'Vi') console

View File

@ -49,6 +49,18 @@ protected:
int m_basebank;
};
class mywicogt_state : public zon32bit_state
{
public:
mywicogt_state(const machine_config& mconfig, device_type type, const char* tag) :
zon32bit_state(mconfig, type, tag)
{ }
protected:
virtual void porta_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override;
};
class mywicodx_state : public zon32bit_state
{
public:
@ -153,6 +165,52 @@ void zon32bit_state::porta_w(offs_t offset, uint16_t data, uint16_t mem_mask)
}
void mywicogt_state::porta_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (1)
logerror("%s: porta_w %04x (%04x) %c %c %c %c | %c %c %c %c | %c %c %c %c | %c %c %c %c \n", machine().describe_context(), data, mem_mask,
(mem_mask & 0x8000) ? ((data & 0x8000) ? '1' : '0') : 'x',
(mem_mask & 0x4000) ? ((data & 0x4000) ? '1' : '0') : 'x',
(mem_mask & 0x2000) ? ((data & 0x2000) ? '1' : '0') : 'x',
(mem_mask & 0x1000) ? ((data & 0x1000) ? '1' : '0') : 'x',
(mem_mask & 0x0800) ? ((data & 0x0800) ? '1' : '0') : 'x',
(mem_mask & 0x0400) ? ((data & 0x0400) ? '1' : '0') : 'x',
(mem_mask & 0x0200) ? ((data & 0x0200) ? '1' : '0') : 'x',
(mem_mask & 0x0100) ? ((data & 0x0100) ? '1' : '0') : 'x',
(mem_mask & 0x0080) ? ((data & 0x0080) ? '1' : '0') : 'x',
(mem_mask & 0x0040) ? ((data & 0x0040) ? '1' : '0') : 'x',
(mem_mask & 0x0020) ? ((data & 0x0020) ? '1' : '0') : 'x',
(mem_mask & 0x0010) ? ((data & 0x0010) ? '1' : '0') : 'x',
(mem_mask & 0x0008) ? ((data & 0x0008) ? '1' : '0') : 'x',
(mem_mask & 0x0004) ? ((data & 0x0004) ? '1' : '0') : 'x',
(mem_mask & 0x0002) ? ((data & 0x0002) ? '1' : '0') : 'x',
(mem_mask & 0x0001) ? ((data & 0x0001) ? '1' : '0') : 'x');
//[:] ':maincpu' (000508): porta_w 0b00 (0f00) x x x x | 1 0 1 1 | x x x x | x x x x
//[:] ':maincpu' (000510): porta_w 0b00 (0f00) x x x x | 1 0 1 1 | x x x x | x x x x
//[:] ':maincpu' (000518): porta_w 0f00 (0f00) x x x x | 1 1 1 1 | x x x x | x x x x
if (m_maincpu->pc() < 0x1000)
{
if (data == 0x0f00)
{
m_basebank = 1;
m_maincpu->invalidate_cache();
logerror("changing to bank 1\n");
}
else if (data == 0x0b00)
{
m_basebank = 0;
m_maincpu->invalidate_cache();
logerror("changing to bank 0\n");
}
}
m_porta_dat = data;
}
void mywicodx_state::porta_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
if (0)
@ -747,6 +805,14 @@ ROM_START( zon32bit )
ROM_CONTINUE(0x1800000, 0x0800000)
ROM_END
ROM_START( mywicogt )
ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "mywicoguitar.bin", 0x0000000, 0x0800000, CRC(3c037c50) SHA1(3b9a28fb643c9f90563d653be0f38eba09c26f26) )
ROM_CONTINUE(0x1000000, 0x0800000)
ROM_CONTINUE(0x0800000, 0x0800000)
ROM_CONTINUE(0x1800000, 0x0800000)
ROM_END
/*
Following pinout was used for dumping
@ -928,6 +994,8 @@ CONS( 200?, zon32bit, 0, 0, zon32bit, zon32bit, zon32bit_state, empty_init,
// The Mi Guitar menu contains 24 games, but they're dupes, and just counting those would exclude the other Mi Fit and Mi Papacon menus (which also contain dupes)
CONS( 200?, mywicodx, 0, 0, zon32bit, zon32bit, mywicodx_state, empty_init, "<unknown>", "My Wico Deluxe (Family Sport 85-in-1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
CONS( 200?, mywicogt, 0, 0, zon32bit, zon32bit, mywicogt_state, empty_init, "<unknown>", "My Wico Guitar", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// issues with 'low battery' always showing, but otherwise functional
CONS( 200?, oplayer, 0, 0, zon32bit_bat, oplayer, oplayer_100in1_state, init_oplayer, "OPlayer", "OPlayer Mobile Game Console (MGS03-white) (Family Sport 100-in-1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )

View File

@ -685,6 +685,9 @@ public:
{ }
void vt1682_lxts3(machine_config& config);
void vt1682_unk1682(machine_config& config);
void unk1682_init();
protected:
uint8_t uio_porta_r();
@ -5964,6 +5967,26 @@ void vt1682_lxts3_state::vt1682_lxts3(machine_config& config)
m_uio->porta_in().set(FUNC(vt1682_lxts3_state::uio_porta_r));
}
void vt1682_lxts3_state::vt1682_unk1682(machine_config& config)
{
vt_vt1682_palbase(config);
vt_vt1682_common(config);
M6502(config.replace(), m_maincpu, MAIN_CPU_CLOCK_PAL); // no opcode bitswap
m_maincpu->set_addrmap(AS_PROGRAM, &vt1682_lxts3_state::vt_vt1682_map);
m_leftdac->reset_routes();
m_rightdac->reset_routes();
config.device_remove(":lspeaker");
config.device_remove(":rspeaker");
SPEAKER(config, "mono").front_center();
m_leftdac->add_route(0, "mono", 0.5);
m_rightdac->add_route(0, "mono", 0.5);
m_uio->porta_in().set(FUNC(vt1682_lxts3_state::uio_porta_r));
}
void vt1682_wow_state::vt1682_wow(machine_config& config)
@ -5996,7 +6019,17 @@ void intec_interact_state::banked_init()
}
void vt1682_lxts3_state::unk1682_init()
{
regular_init();
uint8_t* ROM = memregion("mainrom")->base();
// this jumps to a function on startup that has a bunch of jumps / accesses to the 3xxx region, which is internal ROM
// but bypassing it allows the unit to boot.
ROM[0x7ef43] = 0xea;
ROM[0x7ef44] = 0xea;
ROM[0x7ef45] = 0xea;
}
// the VT1682 can have 0x1000 bytes of internal ROM, but none of the software dumped makes use of it.
@ -6072,6 +6105,19 @@ ROM_START( wowwg )
ROM_RELOAD(0x1000000,0x1000000)
ROM_END
ROM_START( unk1682 )
ROM_REGION( 0x1000, "internal", 0 )
// this appears to use the internal ROM on startup, so mark it as missing
ROM_LOAD( "101in1.internal.rom", 0x00000, 0x1000, NO_DUMP )
ROM_REGION( 0x2000000, "mainrom", 0 )
ROM_LOAD( "vt1682_101in1.bin", 0x00000, 0x0800000, CRC(82879200) SHA1(c1977d1733f8849326286102c0755629d0406ec4) )
ROM_CONTINUE(0x0800000, 0x0800000)
ROM_CONTINUE(0x1000000, 0x0800000)
ROM_CONTINUE(0x1800000, 0x0800000)
ROM_END
ROM_START( 110dance )
ROM_REGION( 0x2000000, "mainrom", 0 )
ROM_LOAD( "110songdancemat.bin", 0x00000, 0x2000000, CRC(cd668e41) SHA1(975bfe05f4cce047860b05766bc8539218f6014f) )
@ -6144,6 +6190,7 @@ This might be a regional / store thing if some places didn't want to sell a unit
// 'Riding Horse' on the other hand actually needs PAL timings, so this unit clearly was designed for PAL regions, however 'Explosion' was left broken.
CONS( 200?, wowwg, 0, 0, vt1682_wow, exsprt48, vt1682_wow_state, regular_init, "Wow", "Wow Wireless Gaming (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) // needs high colour line mode for main menu
CONS( 200?, 110dance, 0, 0, vt1682_dance, 110dance, vt1682_dance_state, regular_init, "<unknown>", "Retro Dance Mat (110 song Super StepMania + 9-in-1 games) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
// songs 5-8 are repeats of songs 1-4, but probably not a bug?
@ -6152,4 +6199,7 @@ CONS( 200?, dance555, 0, 0, vt1682_exsportp, dance555, vt1682_exsport_state
// NJ Pocket 60-in-1 (NJ-250) is meant to have similar games to the mini-games found in wowwg and 110dance, so almost certainly fits here
// this appears to be related to the NJ Pocket, claims 101-in-1 but has some duplicates. It once again seems to incorrectly have the PAL version of 'Ranning Horse' but the NTSC version of 'Bomberman'
CONS( 200?, unk1682, 0, 0, vt1682_unk1682, lxts3, vt1682_lxts3_state, unk1682_init, "<unknown>", "unknown VT1682 based 101-in-1 handheld (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) // needs high colour line mode for main menu
CONS( 2010, lxts3, 0, 0, vt1682_lxts3, lxts3, vt1682_lxts3_state, regular_init, "Lexibook", "Toy Story 3 (Lexibook)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // random number generation issues on 2 games, linescroll on racing games

View File

@ -275,4 +275,43 @@ private:
};
class spg2xx_game_wfcentro_state : public spg2xx_game_state
{
public:
spg2xx_game_wfcentro_state(const machine_config &mconfig, device_type type, const char *tag) :
spg2xx_game_state(mconfig, type, tag)
{ }
void wfcentro(machine_config &config);
protected:
// virtual void machine_start() override;
// virtual void machine_reset() override;
// virtual void portc_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override;
private:
void mem_map_wfcentro(address_map& map);
};
class spg2xx_game_ordentv_state : public spg2xx_game_state
{
public:
spg2xx_game_ordentv_state(const machine_config &mconfig, device_type type, const char *tag) :
spg2xx_game_state(mconfig, type, tag)
{ }
void ordentv(machine_config &config);
void init_ordentv();
protected:
uint16_t ordentv_portc_r(offs_t offset, uint16_t mem_mask = ~0);
private:
};
#endif // MAME_INCLUDES_SPG2XX_H

View File

@ -14798,6 +14798,7 @@ smartfps
gormiti
tkmag220 //
myac220
imgame
@source:generalplus_gpl16250_romram.cpp
paccon
@ -32067,6 +32068,7 @@ ts_handy11
ablwikid
maxx5in1
maxx6in1
max10in1
@source:nes_vt.cpp
vdogdeme
@ -32085,6 +32087,7 @@ lxcmcysw
lxcmcyfz
lxcmcydp
lxcmcysp
lxcmcypp
lxccminn
lxccplan
rtvgc300
@ -32174,6 +32177,7 @@ xing48
wowwg
110dance
lxts3
unk1682
@source:newbrain.cpp
newbrain //
@ -37999,6 +38003,8 @@ pballpup
swclone
dreamlss
senspeed
ordentv
wfcentro
@source:spg2xx_digimake.cpp
rad_digi
@ -38128,6 +38134,7 @@ react
@source:spg2xx_zone_32bit.cpp
mywicodx //
mywicogt
zon32bit // Zone 32-bit
oplayer
dnv200fs