Plug and Play bits (working and not working machines) (#7509)

* replaced dgun2869 dump with good one [Sean Riddle]
* also did some work on the dreamGear unit, works now
* an innotab2 driver entry was also added to hold the software list, but the ROM isn't dumped yet

machines promoted to WORKING
------
My Arcade Retro Micro Controller - 220 Built-In Video Games (DGUN-2869) [Zup, Team Europe, Sean Riddle]

new WORKING machines
------
Code Lyoko (25-in-1 handheld) [KaruzoHikari, Team Europe, David Haywood]
My Arcade Pac-Man Pocket Player (DGUNL-3227) [Sean Riddle]

new NOT WORKING machines
------
Palace Arcade [Sean Riddle, Kamaal Brown]

new NOT WORKING Software List entries
------
vtech_innotab_cart.xml : Mickey Mouse Clubhouse (UK) [Team Europe]
This commit is contained in:
David Haywood 2020-11-25 03:44:37 +00:00 committed by GitHub
parent 5de4b92378
commit 334c801c55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 293 additions and 32 deletions

View File

@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0
-->
<softwarelist name="vtech_innotab_cart" description="VTech InnoTAB 1/2/3 Cartridges">
<!-- NOT InnoTAB Max - those are compatible with InnoTV instead -->
<!-- These are NAND Flash ROMs containing a FAT16 filesystem -->
<!-- Some cartridges contain no ROM, but just bridges between edge connector pins. -->
<!-- pinout is identical to Storio cartridges -->
<software name="mmousec" supported="no">
<description>Mickey Mouse Clubhouse (UK)</description>
<year>2011</year>
<publisher>VTech</publisher>
<part name="cart" interface="vtech_storio_cart">
<dataarea name="rom" size="0x8400000">
<rom name="80-230403-103 - Mickey Mouse Clubhouse (UK).bin" size="0x8400000" crc="839567a9" sha1="bd4e2c8138d6f62bcac1978745a2b752bcefb07d" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -4036,7 +4036,7 @@ files {
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_sharp.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_jakks_tvtouch.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_zone.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_zone_32bit.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_senca.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_senario.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_senario_poker.cpp",
MAME_DIR .. "src/mame/drivers/spg2xx_mysprtch.cpp",

View File

@ -56,9 +56,9 @@ INPUT_PORTS_END
void generalplus_gpl_unknown_state::map(address_map &map)
{
map(0x000000, 0x00ffff).ram(); // unknown, RAM/ROM? there are jumps to this region, doesn't seem the usual unSP 8000-ffff ROM mapping
map(0x000000, 0x00bfff).ram(); // unknown, RAM?
map(0x00c000, 0x00ffff).ram(); // unknown, ROM? there are jumps to this region, doesn't seem the usual unSP 8000-ffff ROM mapping
// there are calls to 0x0f000 (internal ROM?)
map(0x200000, 0x3fffff).ram(); // almost certainly RAM where the SPI ROM gets copied
}
@ -97,22 +97,34 @@ void generalplus_gpl_unknown_state::generalplus_gpl_unknown(machine_config &conf
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x8000);
}
// exact size of internal ROM is unknown, but it appears to occupy at least 0xc000 - 0xffff (word addresses) in unSP space
ROM_START( mapacman )
//ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASEFF )
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x2000, NO_DUMP ) // exact size unknown
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x8000, NO_DUMP )
ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF )
ROM_LOAD( "fm25q16a.bin", 0x000000, 0x200000, CRC(aeb472ac) SHA1(500c24b725f6d3308ef8cbdf4259f5be556c7c92) )
ROM_END
ROM_START( taspinv )
//ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASEFF )
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x2000, NO_DUMP ) // exact size unknown
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x8000, NO_DUMP )
ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF )
ROM_LOAD( "tinyarcade_spaceinvaders.bin", 0x000000, 0x200000, CRC(11ac4c77) SHA1(398d5eff83a4e94487ed810819085a0e44582908) )
ROM_END
ROM_START( parcade )
ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x8000, NO_DUMP )
ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF )
ROM_LOAD( "palacearcade_gpr25l3203_c22016.bin", 0x000000, 0x400000, CRC(98fbd2a1) SHA1(ffc19aadd53ead1f9f3472475606941055ca09f9) )
ROM_END
// for correctly offset disassembly use
// unidasm palacearcade_gpr25l3203_c22016.bin -arch unsp12 -xchbytes -basepc 200000 >palace.txt
// first 0x2000 bytes in ROM are blank, ROM data maps fully in RAM at 200000, but there are calls to lower regions
// is it possible the SunPlus here is only handling sound / graphics, not gameplay?
@ -121,3 +133,5 @@ CONS( 2017, mapacman, 0, 0, generalplus_gpl_unknown, generalpl
// multiple different units appear to share the same ROM with a jumper to select game, it should be verified in each case that the external ROM was not changed.
CONS( 2017, taspinv, 0, 0, generalplus_gpl_unknown, generalplus_gpl_unknown, generalplus_gpl_unknown_state, empty_init, "Super Impulse", "Space Invaders (Tiny Arcade)", MACHINE_IS_SKELETON )
CONS( 2017, parcade, 0, 0, generalplus_gpl_unknown, generalplus_gpl_unknown, generalplus_gpl_unknown_state, empty_init, "Hasbro", "Palace Arcade", MACHINE_IS_SKELETON )

View File

@ -24,7 +24,7 @@
#include "includes/megadriv_rad.h"
// todo, use actual MD map, easier once maps are part of base class.
void megadriv_radica_state::megadriv_radica_map(address_map &map)
void megadriv_radica_state::megadriv_base_map(address_map &map)
{
map(0x000000, 0x3fffff).r(FUNC(megadriv_radica_state::read)); /* Cartridge Program Rom */
map(0xa00000, 0xa01fff).rw(FUNC(megadriv_radica_state::megadriv_68k_read_z80_ram), FUNC(megadriv_radica_state::megadriv_68k_write_z80_ram));
@ -34,11 +34,42 @@ void megadriv_radica_state::megadriv_radica_map(address_map &map)
map(0xa10000, 0xa1001f).rw(FUNC(megadriv_radica_state::megadriv_68k_io_read), FUNC(megadriv_radica_state::megadriv_68k_io_write));
map(0xa11100, 0xa11101).rw(FUNC(megadriv_radica_state::megadriv_68k_check_z80_bus), FUNC(megadriv_radica_state::megadriv_68k_req_z80_bus));
map(0xa11200, 0xa11201).w(FUNC(megadriv_radica_state::megadriv_68k_req_z80_reset));
map(0xa13000, 0xa130ff).r(FUNC(megadriv_radica_state::read_a13));
map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w));
map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram");
}
void megadriv_radica_state::megadriv_radica_map(address_map &map)
{
megadriv_base_map(map);
map(0xa13000, 0xa130ff).r(FUNC(megadriv_radica_state::read_a13));
}
uint16_t megadriv_dgunl_state::read_a16300(offs_t offset, uint16_t mem_mask)
{
return 0x5a5a;
}
uint16_t megadriv_dgunl_state::read_a16302(offs_t offset, uint16_t mem_mask)
{
return m_a1630a;
}
void megadriv_dgunl_state::write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask)
{
m_a1630a = data;
m_bank = (data & 0x07) * 8;
}
void megadriv_dgunl_state::megadriv_dgunl_map(address_map &map)
{
megadriv_base_map(map);
map(0xa16300, 0xa16301).r(FUNC(megadriv_dgunl_state::read_a16300));
map(0xa16302, 0xa16303).r(FUNC(megadriv_dgunl_state::read_a16302));
map(0xa1630a, 0xa1630b).w(FUNC(megadriv_dgunl_state::write_a1630a));
}
uint16_t megadriv_radica_state::read(offs_t offset)
{
return m_rom[(((m_bank * 0x10000) + (offset << 1)) & (0x400000 - 1))/2];
@ -120,6 +151,17 @@ static INPUT_PORTS_START( megadriv_msi_6button )
PORT_START("UNK")
INPUT_PORTS_END
static INPUT_PORTS_START( megadriv_dgunl_1player )
PORT_INCLUDE( megadriv_radica_3button )
PORT_MODIFY("PAD1") // the unit only has 2 buttons, A and C, strings are changed to remove references to C, even if behavior in Pac-Mania still exists and differs between them
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) // disable 'C'
//PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) // disable 'A'
PORT_MODIFY("PAD2")
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
void megadriv_radica_6button_state::machine_start()
{
md_base_state::machine_start();
@ -144,6 +186,14 @@ void megadriv_radica_3button_state::machine_start()
save_item(NAME(m_bank));
}
void megadriv_dgunl_state::machine_start()
{
megadriv_radica_3button_state::machine_start();
m_a1630a = 0;
save_item(NAME(m_a1630a));
}
void megadriv_radica_3button_state::machine_reset()
{
m_bank = 0;
@ -174,6 +224,11 @@ void megadriv_radica_6button_state::megadriv_radica_6button_ntsc(machine_config
m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_radica_state::megadriv_radica_map);
}
void megadriv_dgunl_state::megadriv_dgunl_ntsc(machine_config &config)
{
md_ntsc(config);
m_maincpu->set_addrmap(AS_PROGRAM, &megadriv_dgunl_state::megadriv_dgunl_map);
}
ROM_START( rad_sf2 )
ROM_REGION( 0x400000, "maincpu", 0 )
@ -233,7 +288,15 @@ ROM_START( msi_sf2 )
// and is probably leftover from one of the multigame systems, hacked to only launch one game. We should emulate it...
// .. but the game ROM starts at 0xc8000 so we can cheat for now
ROM_LOAD16_WORD_SWAP( "29lv320.bin", 0x000000, 0xc8000, CRC(465b12f0) SHA1(7a058f6feb4f08f56ae0f7369c2ca9a9fe2ed40e) )
ROM_CONTINUE(0x00000,0x338000)
ROM_CONTINUE(0x00000,0x338000)
ROM_END
ROM_START( dgunl3227 )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
// populated in init function
ROM_REGION( 0x400000, "rom", 0 )
ROM_LOAD16_WORD_SWAP( "myarcadepacman_s99jl032hbt1_9991227e_as_s29jl032h55tai01.bin", 0x000000, 0x400000, CRC(ecead966) SHA1(971e8da6eb720f670f4148c7e07922e4f24eb609) )
ROM_END
@ -253,6 +316,76 @@ void megadriv_radica_6button_state::init_megadriv_radica_6button_ntsc()
m_megadrive_io_write_data_port_ptr = write16sm_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_6button));
}
void megadriv_dgunl_state::init_dgunl3227()
{
uint8_t* rom = memregion("rom")->base();
uint8_t* dst = memregion("maincpu")->base();
int baseaddr, size, dstaddr;
//baseaddr = 0x200000; size = 0x40000; // unknown data (unused menu data maybe?)
//baseaddr = 0x240000; size = 0x20000; // 'sample' program with UWOL header later too (lower part of menu program)
//baseaddr = 0x260000; size = 0x20000; // pirate version of Columns with Sega text removed
//baseaddr = 0x280000; size = 0x20000; // Fatal Labyrinth
//baseaddr = 0x2a0000; size = 0x20000; // pirate version of Block Out with EA logo and text removed
//baseaddr = 0x2c0000; size = 0x20000; // Flicky
//baseaddr = 0x2e0000; size = 0x20000; // Shove It
//baseaddr = 0x300000; size = 0x40000; // pirate version of Space Invaders 90 with Taito logos and copyright removed (also upper part of menu program - has extra header + bits of code for '202 in 1' menu which has been hacked to run the 3-in-1 menu)
// the following 3 games are available to select from the menu on this system
//baseaddr = 0x340000; size = 0x40000; // Pac-Attack / Pac-Panic (used by this unit)
//baseaddr = 0x380000; size = 0x40000; // Pac-Mania (used by this unit)
//baseaddr = 0x3c0000; size = 0x40000; // Pac-Man (used by this unit) (2nd copy of header about halfway through?)
// copy 1st part of menu code
baseaddr = 0x240000;
size = 0x020000;
dstaddr = 0x000000;
for (int i = 0; i < size; i++)
{
dst[(i ^ 3) + dstaddr] = rom[baseaddr + i];
}
// copy 2nd part of menu code
baseaddr = 0x300000;
size = 0x040000;
dstaddr = 0x0c0000;
for (int i = 0; i < size; i++)
{
dst[(i ^ 3) + dstaddr] = rom[baseaddr + i];
}
// copy pac-panic to first bank
baseaddr = 0x340000;
size = 0x040000;
dstaddr = 0x100000;
for (int i = 0; i < size; i++)
{
dst[(i ^ 3) + dstaddr] = rom[baseaddr + i];
}
// copy pac-mania to 2nd bank
baseaddr = 0x380000;
size = 0x040000;
dstaddr = 0x180000;
for (int i = 0; i < size; i++)
{
dst[(i ^ 3) + dstaddr] = rom[baseaddr + i];
}
// copy pac-man to 3nd bank
baseaddr = 0x3c0000;
size = 0x040000;
dstaddr = 0x200000;
for (int i = 0; i < size; i++)
{
dst[(i ^ 3) + dstaddr] = rom[baseaddr + i];
}
// other data isn't copied because it's never referenced, therefore we don't know how it gets accessed
init_megadriv();
}
// US versions show 'Genesis' on the menu, show a www.radicagames.com splash screen, and use NTSC versions of the ROMs, sometimes region locked
// EU versions show 'Mega Drive' on the menu, show a www.radicagames.com splash screen, and use PAL versions of the ROMs, sometimes region locked
// UK versions show "Mega Drive' on the menu, show a www.radicauk.com splash screen, and use PAL versions of the ROMs, sometimes region locked
@ -285,3 +418,8 @@ CONS( 2004, rad_orun, 0, 0, megadriv_radica_3button_pal, megadriv_radic
// From a European unit but NTSC? - code is hacked from original USA Genesis game with region check still intact? (does the clone hardware always identify as such? or does the bypassed boot code skip the check?)
// TODO: move out of here eventually once the enhanced MD part is emulated rather than bypassed (it's probably the same as the 145-in-1 multigame unit, but modified to only include this single game)
CONS( 2018, msi_sf2, 0, 0, megadriv_radica_6button_ntsc, megadriv_msi_6button, megadriv_radica_6button_state, init_megadriv_radica_6button_ntsc, "MSI / Capcom / Sega", "Street Fighter II: Special Champion Edition (MSI Plug & Play) (Europe)", 0)
// this seems to have been hacked down from a larger multi-game unit, there are also a bunch of (unused?) pirate versions of MegaDrive / Genesis games in the ROM
// this is the only 'Pocket Player' unit to use Genesis on a Chip tech, the others are NES on a chip.
// some versions of this unit have an additional "Add Credits with 'A' or 'B'" screen after you select Pac-Man, this version does not.
CONS( 2018, dgunl3227, 0, 0, megadriv_dgunl_ntsc, megadriv_dgunl_1player, megadriv_dgunl_state, init_dgunl3227, "dreamGEAR", "My Arcade Pac-Man Pocket Player (DGUNL-3227)", 0 )

View File

@ -1274,13 +1274,14 @@ ROM_START( ppgc200g )
ROM_LOAD( "m29dw641.u2", 0x00000, 0x800000, CRC(b16dc677) SHA1(c1984fde4caf9345d41d127db946d1c21ec43ae0) )
ROM_END
ROM_START( dgun2869 )
ROM_START( dgun2869 )
ROM_REGION( 0x1000000, "mainrom", 0 )
// 80000-bffff would not read consistently, but also appears to be missing some data entirely
ROM_LOAD( "dgun2869.bin", 0x00000, 0x1000000, BAD_DUMP CRC(00ab846e) SHA1(721a6edf69d2eb75ee815eb3567c07d4d163d65f) ) // 29GL128
ROM_LOAD( "myarcaderetromicro_s29gl128p11tfiv1_0001227e.bin", 0x00000, 0x1000000, CRC(5e7fded2) SHA1(cf55ae7a128e3254a22933150caf94e269303ffb) ) // 29GL128
ROM_IGNORE(0x100)
ROM_END
void nes_vt_state::init_protpp()
{
// this gets the tiles correct
@ -1457,5 +1458,4 @@ CONS( 200?, dgun2500, 0, 0, nes_vt_16mb, nes_vt, nes_vt_state, empty_init, "d
CONS( 201?, ppgc200g, 0, 0, nes_vt_pal_8mb, nes_vt, nes_vt_state, empty_init, "Fizz Creations", "Plug & Play Game Controller with 200 Games (Supreme 200)", MACHINE_IMPERFECT_GRAPHICS )
// unknown tech level, it's most likely a vt09 or vt369 but isn't using any of the extended features
// NOT WORKING for now due to Flash ROM being faulty, giving inconsistent reads for some game areas (eg. Fishing) and seemingly having data entirely missing for Crystal Ball
CONS( 201?, dgun2869, 0, 0, nes_vt_16mb, nes_vt, nes_vt_state, empty_init, "dreamGEAR", "My Arcade Retro Micro Controller - 220 Built-In Video Games (DGUN-2869)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 201?, dgun2869, 0, 0, nes_vt_16mb, nes_vt, nes_vt_state, empty_init, "dreamGEAR", "My Arcade Retro Micro Controller - 220 Built-In Video Games (DGUN-2869)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )

View File

@ -1,6 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz, David Haywood
// JungleTac developed systems sold by Performance Designed Products, Lexibook etc.
// these are mostly handhelds with built in screens, and seem to be newer(?) revisions of the software
// of note, the way the audio is stored for Tiger Rescue has been updated and the core does not handle it properly at the moment
#include "emu.h"
#include "includes/spg2xx.h"

View File

@ -83,6 +83,7 @@ public:
void init_oplayer();
void init_m505neo();
void init_cdlyoko();
protected:
virtual uint16_t porta_r() override;
@ -884,6 +885,14 @@ ROM_START( oplayer )
ROM_LOAD16_WORD_SWAP( "oplayer.bin", 0x0000000, 0x4000000, CRC(aa09c358) SHA1(df2855cdfdf2b693636cace8768e579b9d5bc657) )
ROM_END
ROM_START( cdlyoko ) // P1-25IN1-MAIN-V11 2011.05.09 on PCB
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "clg001z.u2", 0x0000000, 0x1000000, CRC(1e73b910) SHA1(6f6cece054fcf91ff78962358804471794c58615) )
ROM_RELOAD(0x1000000,0x1000000)
ROM_RELOAD(0x2000000,0x1000000)
ROM_RELOAD(0x3000000,0x1000000)
ROM_END
ROM_START( dnv200fs )
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "famsport200in1.u2", 0x0000000, 0x8000000, CRC(f59221e2) SHA1(d532cf5a80ffe9d527efcccbf380a7a860f0fbd9) )
@ -984,6 +993,25 @@ void oplayer_100in1_state::init_m505neo()
ROM[0x43c30 + (0x2000000 / 2)] = 0xf165; // boot main bank
}
void oplayer_100in1_state::init_cdlyoko()
{
uint16_t* rom16 = (uint16_t*)memregion("maincpu")->base();
int size = memregion("maincpu")->bytes();
std::vector<u16> buffer(size / 2);
for (int i = 0; i < size / 2; i++)
{
buffer[bitswap<25>(i, 0x18, 0x17, 0x16, 0x15, 0x13, 0x8, 0x12, 0x11, 0x14, 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0)] = rom16[i];
}
std::copy(buffer.begin(), buffer.end(), &rom16[0]);
// patch a startup check, like oplayer
for (int i = 0; i < 4; i++)
rom16[0x493ed + ((0x1000000 * i) / 2)] = 0xf165;
}
void denver_200in1_state::init_denver()
{
@ -1019,11 +1047,12 @@ CONS( 200?, mywicodx, 0, 0, zon32bit, zon32bit, mywicodx_state, empty_init,
// Shows Mi Guitar 2 in the menu, it seems likely that there was an earlier version on VT1682 hardware as there is a very similar Guitar game (with the same song selection) in those multigames
CONS( 200?, mywicogt, 0, 0, zon32bit, mywicogt, mywicogt_state, empty_init, "<unknown> / Senca", "My Wico Guitar", 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 / Senca", "OPlayer Mobile Game Console (MGS03-white) (Family Sport 100-in-1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
CONS( 2012, m505neo, 0, 0, zon32bit_bat, oplayer, oplayer_100in1_state, init_m505neo, "Millennium 2000 GmbH / Senca", "Millennium M505 Arcade Neo Portable Spielkonsole (Family Sport 100-in-1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
CONS( 2011, cdlyoko, 0, 0, zon32bit_bat, oplayer, oplayer_100in1_state, init_cdlyoko, "Ingo Devices SL / Senca", "Code Lyoko (25-in-1 handheld)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
// a version of this exists with the 'newer' style title screen seen in m505neo
CONS( 2012, m521neo, 0, 0, zon32bit_bat, oplayer, denver_200in1_state, init_m521neo, "Millennium 2000 GmbH / Senca", "Millennium M521 Arcade Neo 2.0 (Family Sport 220-in-1) ", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )

View File

@ -1,7 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz, David Haywood
/* 'Zone' systems */
// JungleTac developed systems sold by under the 'Zone' and 'Wireless' brands these are mostly higer capacity (60+ game) units
// also Waixing developed systems for the lower capacity (~40 game) units
#include "emu.h"
#include "includes/spg2xx.h"

View File

@ -45,11 +45,14 @@ public:
{ }
void vtech_storio(machine_config &config);
void vtech_innotab(machine_config &config);
private:
virtual void machine_start() override;
virtual void machine_reset() override;
void vtech_storio_base(machine_config &config);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
required_device<cpu_device> m_maincpu;
@ -94,7 +97,7 @@ static INPUT_PORTS_START( vtech_storio )
INPUT_PORTS_END
void vtech_storio_state::vtech_storio(machine_config &config)
void vtech_storio_state::vtech_storio_base(machine_config &config)
{
ARM9(config, m_maincpu, 240000000); // ARM926EJ-S CPU core (probably 240MHz, but not sure)
@ -111,9 +114,20 @@ void vtech_storio_state::vtech_storio(machine_config &config)
m_cart->set_width(GENERIC_ROM16_WIDTH);
m_cart->set_device_load(FUNC(vtech_storio_state::cart_load));
}
void vtech_storio_state::vtech_storio(machine_config &config)
{
vtech_storio_base(config);
SOFTWARE_LIST(config, "cart_list").set_original("vtech_storio_cart");
}
void vtech_storio_state::vtech_innotab(machine_config &config)
{
vtech_storio_base(config);
SOFTWARE_LIST(config, "cart_list").set_original("vtech_innotab_cart");
}
// BIOS is 1 GBIT (128M × 8 BIT) CMOS NAND EEPROM (Toshiba TC58NVG0S3ETA00)
// ROM image from VTech, not padded to the real ROM size
@ -171,6 +185,11 @@ ROM_START( storionl )
ROM_LOAD( "nldut-pack_20111017.bin", 0x000000, 0x03af81c6, CRC(6cfac599) SHA1(d16b45fd287c9d823bde13b88eb6c8158ac2b475) )
ROM_END
ROM_START( innotab2 )
ROM_REGION( 0x08400000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "innotab2.bin", 0x000000, 0x08400000, NO_DUMP )
ROM_END
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
CONS( 2011, vreader, 0, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "V.Reader (US, English, 2011-10-17)", MACHINE_IS_SKELETON )
CONS( 2011, vreadercaen, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "V.Reader (CA, English, 2011-10-17)", MACHINE_IS_SKELETON )
@ -181,3 +200,5 @@ CONS( 2011, storioes, vreader, 0, vtech_storio, vtech_storio, vtech_sto
CONS( 2011, storioesa, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (ES, Spanish, 2011-06-17?)", MACHINE_IS_SKELETON )
CONS( 2011, storiofr, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (FR, French, 2011-10-17)", MACHINE_IS_SKELETON )
CONS( 2011, storionl, vreader, 0, vtech_storio, vtech_storio, vtech_storio_state, empty_init, "VTech", "Storio (NL, Dutch, 2011-10-17)", MACHINE_IS_SKELETON )
// the InnoTAB 1/2/3 seem closely related?
CONS( 2011, innotab2, 0, 0, vtech_innotab, vtech_storio, vtech_storio_state, empty_init, "VTech", "InnoTAB 2 (UK)", MACHINE_IS_SKELETON )

View File

@ -20,6 +20,7 @@ public:
void megadriv_radica_map(address_map &map);
protected:
void megadriv_base_map(address_map &map);
int m_bank;
private:
@ -57,5 +58,29 @@ public:
virtual void machine_start() override;
};
class megadriv_dgunl_state : public megadriv_radica_3button_state
{
public:
megadriv_dgunl_state(const machine_config& mconfig, device_type type, const char* tag)
: megadriv_radica_3button_state(mconfig, type, tag)
{}
public:
void megadriv_dgunl_ntsc(machine_config &config);
void init_dgunl3227();
protected:
virtual void machine_start() override;
private:
uint16_t read_a16300(offs_t offset, uint16_t mem_mask);
uint16_t read_a16302(offs_t offset, uint16_t mem_mask);
void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask);
void megadriv_dgunl_map(address_map &map);
uint16_t m_a1630a;
};
#endif // MAME_INCLUDES_MEGADRIV_RAD_H

View File

@ -14854,6 +14854,7 @@ rp200
@source:generalplus_gpl_unknown.cpp
mapacman
taspinv
parcade
@source:generalplus_gpl162xx_lcdtype.cpp
pcp8718
@ -22310,6 +22311,7 @@ rad_sonic
rad_sonicp
rad_orun
msi_sf2
dgunl3227
@source:megadriv_sunplus_hybrid.cpp
reactmd
@ -38107,15 +38109,16 @@ sorcererb // Sorcerer with Digitrio fdc
sorcererd // Sorcerer with Micropolis fdc
@source:storio.cpp
vreader // (c) 2011 V.Tech
vreadercaen // (c) 2011 V.Tech
vreadercafr // (c) 2011 V.Tech
innotab2 // (c) 2011 V.Tech
storio // (c) 2011 V.Tech
storiode // (c) 2011 V.Tech
storioes // (c) 2011 V.Tech
storioesa // (c) 2011 V.Tech
storiofr // (c) 2011 V.Tech
storionl // (c) 2011 V.Tech
vreader // (c) 2011 V.Tech
vreadercaen // (c) 2011 V.Tech
vreadercafr // (c) 2011 V.Tech
@source:sothello.cpp
sothello // (c) 1986 Success / Fujiwara.
@ -38392,6 +38395,16 @@ sentx6p //
sentx6puk
sentx6pd
@source:spg2xx_senca.cpp
cdlyoko
dnv200fs
m505neo
m521neo
mywicodx
mywicogt
oplayer
zon32bit
@source:spg2xx_shredmjr.cpp
taikeegr //
rockstar
@ -38430,16 +38443,7 @@ zone100 //
lx_jg7415 //
lx_jg7410
zonemini
react
@source:spg2xx_zone_32bit.cpp
mywicodx //
mywicogt
zon32bit // Zone 32-bit
oplayer
dnv200fs
m505neo
m521neo
react
@source:spiders.cpp
spiders // (c) 1981 Sigma Ent. Inc.

View File

@ -934,6 +934,7 @@ spg2xx_pdc.cpp
spg2xx_playvision.cpp
spg2xx_senario.cpp
spg2xx_senario_poker.cpp
spg2xx_senca.cpp
spg2xx_shredmjr.cpp
spg2xx_skannerztv.cpp
spg2xx_smarttv.cpp
@ -942,7 +943,6 @@ spg2xx_tvgogo.cpp
spg2xx_vii.cpp
spg2xx_wiwi.cpp
spg2xx_zone.cpp
spg2xx_zone_32bit.cpp
squale.cpp
ssem.cpp
st17xx.cpp