diff --git a/hash/vtech_innotab_cart.xml b/hash/vtech_innotab_cart.xml new file mode 100644 index 00000000000..9a0523fe5d5 --- /dev/null +++ b/hash/vtech_innotab_cart.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + Mickey Mouse Clubhouse (UK) + 2011 + VTech + + + + + + + + diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 630a414bd0d..bfe2b6b3982 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -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", diff --git a/src/mame/drivers/generalplus_gpl_unknown.cpp b/src/mame/drivers/generalplus_gpl_unknown.cpp index e5dda7f1b8c..72ac56a67d4 100644 --- a/src/mame/drivers/generalplus_gpl_unknown.cpp +++ b/src/mame/drivers/generalplus_gpl_unknown.cpp @@ -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 ) diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp index 6350c9bfcf8..a87be5691ec 100644 --- a/src/mame/drivers/megadriv_rad.cpp +++ b/src/mame/drivers/megadriv_rad.cpp @@ -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 ) diff --git a/src/mame/drivers/nes_vt02_vt03.cpp b/src/mame/drivers/nes_vt02_vt03.cpp index 908471c80bf..2ef858c9be6 100644 --- a/src/mame/drivers/nes_vt02_vt03.cpp +++ b/src/mame/drivers/nes_vt02_vt03.cpp @@ -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 ) diff --git a/src/mame/drivers/spg2xx_lexibook.cpp b/src/mame/drivers/spg2xx_lexibook.cpp index fb7a216b119..ada0488c068 100644 --- a/src/mame/drivers/spg2xx_lexibook.cpp +++ b/src/mame/drivers/spg2xx_lexibook.cpp @@ -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" diff --git a/src/mame/drivers/spg2xx_zone_32bit.cpp b/src/mame/drivers/spg2xx_senca.cpp similarity index 96% rename from src/mame/drivers/spg2xx_zone_32bit.cpp rename to src/mame/drivers/spg2xx_senca.cpp index 7bf7ba3ca7a..fb2caec6ed8 100644 --- a/src/mame/drivers/spg2xx_zone_32bit.cpp +++ b/src/mame/drivers/spg2xx_senca.cpp @@ -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 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, " / 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 ) diff --git a/src/mame/drivers/spg2xx_zone.cpp b/src/mame/drivers/spg2xx_zone.cpp index be592a5e1f2..f1a14e3d134 100644 --- a/src/mame/drivers/spg2xx_zone.cpp +++ b/src/mame/drivers/spg2xx_zone.cpp @@ -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" diff --git a/src/mame/drivers/storio.cpp b/src/mame/drivers/storio.cpp index b1733f21229..7e3b6560bd8 100644 --- a/src/mame/drivers/storio.cpp +++ b/src/mame/drivers/storio.cpp @@ -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 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 ) diff --git a/src/mame/includes/megadriv_rad.h b/src/mame/includes/megadriv_rad.h index f931faea31b..e590467610b 100644 --- a/src/mame/includes/megadriv_rad.h +++ b/src/mame/includes/megadriv_rad.h @@ -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 diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9840bf69485..92c561abfef 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -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. diff --git a/src/mame/mess.flt b/src/mame/mess.flt index e86a44c8b6a..8cb6226d8c9 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -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