summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2020-10-06 16:36:39 +0100
committer GitHub <noreply@github.com>2020-10-06 11:36:39 -0400
commite9d9d518f25113c2a5cf236bd35161d655994e71 (patch)
tree665e9d408fe6b2e56b2627d026af9f8a8f9690f3 /src
parent0cf5ca4ebaedbaa1a0dda513433c2e7fc5624408 (diff)
Plug and Play work (new sets) (#7321)
new WORKING machines ---------------------------- 101 Games in 1 (Senario) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Vs Maxx TX-2 50-in-1 [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Vs Maxx Wireless 77-in-1 [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Vs Maxx Video Extreme 50-in-1 (with Speed Racer and Snood) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] VG Pocket Caplet Fast Acting 35-in-1 [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] new NOT WORKING machines --------------------------------- Beijue 16 Bit Handheld Games (Game Boy style case) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Space Invaders (Tiny Arcade) [Rik] Vs Maxx 25-in-1 [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Vs Maxx 15-in-1 [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown] Zippity (US) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown]
Diffstat (limited to 'src')
-rw-r--r--src/devices/machine/generalplus_gpl16250soc.cpp8
-rw-r--r--src/devices/machine/generalplus_gpl16250soc.h2
-rw-r--r--src/devices/machine/generalplus_gpl16250soc_video.cpp34
-rw-r--r--src/devices/video/ppu2c0x.cpp15
-rw-r--r--src/devices/video/ppu2c0x_sh6578.cpp36
-rw-r--r--src/devices/video/ppu2c0x_vt.cpp13
-rw-r--r--src/mame/drivers/generalplus_gpl16250_rom.cpp11
-rw-r--r--src/mame/drivers/generalplus_gpl32612.cpp8
-rw-r--r--src/mame/drivers/generalplus_gpl_unknown.cpp22
-rw-r--r--src/mame/drivers/nes_sh6578.cpp37
-rw-r--r--src/mame/drivers/nes_vt.cpp33
-rw-r--r--src/mame/drivers/spg2xx_lexibook.cpp16
-rw-r--r--src/mame/mame.lst12
13 files changed, 189 insertions, 58 deletions
diff --git a/src/devices/machine/generalplus_gpl16250soc.cpp b/src/devices/machine/generalplus_gpl16250soc.cpp
index d9bd2edc92c..1892bbe0880 100644
--- a/src/devices/machine/generalplus_gpl16250soc.cpp
+++ b/src/devices/machine/generalplus_gpl16250soc.cpp
@@ -667,6 +667,12 @@ void sunplus_gcm394_base_device::unkarea_78b2_w(uint16_t data) { LOGMASKED(LOG_G
void sunplus_gcm394_base_device::unkarea_78b8_w(uint16_t data) { LOGMASKED(LOG_GCM394, "%s:sunplus_gcm394_base_device::unkarea_78b8_w %04x\n", machine().describe_context(), data); m_78b8 = data; }
void sunplus_gcm394_base_device::unkarea_78f0_w(uint16_t data) { LOGMASKED(LOG_GCM394, "%s:sunplus_gcm394_base_device::unkarea_78f0_w %04x\n", machine().describe_context(), data); m_78f0 = data; }
+uint16_t sunplus_gcm394_base_device::unkarea_78c0_r()
+{
+ LOGMASKED(LOG_GCM394, "%s:sunplus_gcm394_base_device::unkarea_78c0_r\n", machine().describe_context());
+ return machine().rand();
+}
+
uint16_t sunplus_gcm394_base_device::unkarea_78d0_r()
{
LOGMASKED(LOG_GCM394, "%s:sunplus_gcm394_base_device::unkarea_78d0_r\n", machine().describe_context());
@@ -964,6 +970,8 @@ void sunplus_gcm394_base_device::base_internal_map(address_map &map)
map(0x0078b2, 0x0078b2).rw(FUNC(sunplus_gcm394_base_device::unkarea_78b2_r), FUNC(sunplus_gcm394_base_device::unkarea_78b2_w)); // 78b2 TimeBase C Control Register (P_TimeBaseC_Ctrl)
map(0x0078b8, 0x0078b8).w(FUNC(sunplus_gcm394_base_device::unkarea_78b8_w)); // 78b8 TimeBase Counter Reset Register (P_TimeBase_Reset)
+
+ map(0x0078c0, 0x0078c0).r(FUNC(sunplus_gcm394_base_device::unkarea_78c0_r)); // beijuehh
map(0x0078d0, 0x0078d0).r(FUNC(sunplus_gcm394_base_device::unkarea_78d0_r)); // jak_s500
map(0x0078d8, 0x0078d8).r(FUNC(sunplus_gcm394_base_device::unkarea_78d8_r)); // jak_tsh
diff --git a/src/devices/machine/generalplus_gpl16250soc.h b/src/devices/machine/generalplus_gpl16250soc.h
index 8df8e780f78..fa2b176e421 100644
--- a/src/devices/machine/generalplus_gpl16250soc.h
+++ b/src/devices/machine/generalplus_gpl16250soc.h
@@ -319,6 +319,8 @@ private:
void unkarea_78b8_w(uint16_t data);
+ uint16_t unkarea_78c0_r();
+
uint16_t unkarea_78d0_r();
uint16_t unkarea_78d8_r();
diff --git a/src/devices/machine/generalplus_gpl16250soc_video.cpp b/src/devices/machine/generalplus_gpl16250soc_video.cpp
index 37821e3a10c..ba6ca102ebf 100644
--- a/src/devices/machine/generalplus_gpl16250soc_video.cpp
+++ b/src/devices/machine/generalplus_gpl16250soc_video.cpp
@@ -1048,32 +1048,30 @@ void gcm394_base_video_device::palette_w(offs_t offset, uint16_t data)
if (m_703a_palettebank & 0xfff0)
{
- fatalerror("palette writes with m_703a_palettebank %04x\n", m_703a_palettebank);
- }
- else
- {
- offset |= (m_703a_palettebank & 0x000c) << 6;
- m_paletteram[offset] = data;
-
- // for debug
- m_palette->set_pen_color(offset, rgb_t(
- (((data >> 10) & 0x1f)<<3),
- (((data >> 5) & 0x1f)<<3),
- (((data >> 0) & 0x1f)<<3)));
+ LOGMASKED(LOG_GCM394_VIDEO_PALETTE,"palette writes with m_703a_palettebank %04x\n", m_703a_palettebank);
}
+
+
+ offset |= (m_703a_palettebank & 0x000c) << 6;
+ m_paletteram[offset] = data;
+
+ // for debug
+ m_palette->set_pen_color(offset, rgb_t(
+ (((data >> 10) & 0x1f)<<3),
+ (((data >> 5) & 0x1f)<<3),
+ (((data >> 0) & 0x1f)<<3)));
+
}
uint16_t gcm394_base_video_device::palette_r(offs_t offset)
{
if (m_703a_palettebank & 0xfff0)
{
- fatalerror("palette read with m_703a_palettebank %04x\n", m_703a_palettebank);
- }
- else
- {
- offset |= (m_703a_palettebank & 0x000c) << 6;
- return m_paletteram[offset];
+ LOGMASKED(LOG_GCM394_VIDEO_PALETTE,"palette read with m_703a_palettebank %04x\n", m_703a_palettebank);
}
+
+ offset |= (m_703a_palettebank & 0x000c) << 6;
+ return m_paletteram[offset];
}
void gcm394_base_video_device::video_701c_w(uint16_t data)
diff --git a/src/devices/video/ppu2c0x.cpp b/src/devices/video/ppu2c0x.cpp
index 82036c4c8c0..d769ff54162 100644
--- a/src/devices/video/ppu2c0x.cpp
+++ b/src/devices/video/ppu2c0x.cpp
@@ -622,11 +622,6 @@ void ppu2c0x_device::draw_background(uint8_t* line_priority)
{
bitmap_rgb32& bitmap = *m_bitmap;
- uint16_t palval = m_back_color;
-
- /* cache the background pen */
- uint32_t back_pen = palval;
-
/* determine where in the nametable to start drawing from */
/* based on the current scanline and scroll regs */
uint8_t scroll_x_coarse = m_refresh_data & 0x001f;
@@ -680,7 +675,7 @@ void ppu2c0x_device::draw_background(uint8_t* line_priority)
// plus something that accounts for y
address += scroll_y_fine;
- draw_tile(line_priority, color_byte, color_bits, address, start_x, back_pen, dest);
+ draw_tile(line_priority, color_byte, color_bits, address, start_x, m_back_color, dest);
start_x += 8;
@@ -701,7 +696,7 @@ void ppu2c0x_device::draw_background(uint8_t* line_priority)
dest = &bitmap.pix(m_scanline);
for (int i = 0; i < 8; i++)
{
- draw_back_pen(dest, back_pen);
+ draw_back_pen(dest, m_back_color);
dest++;
line_priority[i] ^= 0x02;
@@ -720,14 +715,10 @@ void ppu2c0x_device::draw_background_pen()
/* setup the color mask and colortable to use */
uint8_t color_mask = (m_regs[PPU_CONTROL1] & PPU_CONTROL1_DISPLAY_MONO) ? 0x30 : 0x3f;
- uint16_t palval = m_back_color & color_mask;
-
- /* cache the background pen */
- uint32_t back_pen = palval;
// Fill this scanline with the background pen.
for (int i = 0; i < bitmap.width(); i++)
- draw_back_pen(&bitmap.pix(m_scanline, i), back_pen);
+ draw_back_pen(&bitmap.pix(m_scanline, i), m_back_color & color_mask);
}
void ppu2c0x_device::read_sprite_plane_data(int address)
diff --git a/src/devices/video/ppu2c0x_sh6578.cpp b/src/devices/video/ppu2c0x_sh6578.cpp
index dac397f5778..a63fa2a5162 100644
--- a/src/devices/video/ppu2c0x_sh6578.cpp
+++ b/src/devices/video/ppu2c0x_sh6578.cpp
@@ -99,15 +99,25 @@ void ppu_sh6578_device::read_tile_plane_data(int address, int color)
m_planebuf[0] = readbyte(address);
m_planebuf[1] = readbyte(address + 8);
- m_extplanebuf[0] = readbyte(address + 16);
- m_extplanebuf[1] = readbyte(address + 24);
+ if (m_colsel_pntstart & 0x80)
+ {
+ m_extplanebuf[0] = readbyte(address + 16);
+ m_extplanebuf[1] = readbyte(address + 24);
+ }
}
void ppu_sh6578_device::draw_tile(uint8_t* line_priority, int color_byte, int color_bits, int address, int start_x, uint32_t back_pen, uint32_t*& dest)
{
int color = color_byte;
- color &= 0xc;
+ if (m_colsel_pntstart & 0x80)
+ {
+ color &= 0xc;
+ }
+ else
+ {
+ color &= 0xf;
+ }
read_tile_plane_data(address, color);
@@ -118,19 +128,29 @@ void ppu_sh6578_device::draw_tile(uint8_t* line_priority, int color_byte, int co
pix = ((m_planebuf[0] & 0x80) >> 7);
pix |= ((m_planebuf[1] & 0x80) >> 6);
- pix |= ((m_extplanebuf[0] & 0x80) >> 5);
- pix |= ((m_extplanebuf[1] & 0x80) >> 4);
+
+ if (m_colsel_pntstart & 0x80)
+ {
+ pix |= ((m_extplanebuf[0] & 0x80) >> 5);
+ pix |= ((m_extplanebuf[1] & 0x80) >> 4);
+ }
m_planebuf[0] <<= 1;
m_planebuf[1] <<= 1;
- m_extplanebuf[0] <<= 1;
- m_extplanebuf[1] <<= 1;
+
+ if (m_colsel_pntstart & 0x80)
+ {
+ m_extplanebuf[0] <<= 1;
+ m_extplanebuf[1] <<= 1;
+ }
if ((start_x + i) >= 0 && (start_x + i) < VISIBLE_SCREEN_WIDTH)
{
pen_t pen;
- uint8_t palval = m_palette_ram[(pix | color << 2)] & 0x3f;
+ uint8_t palval;
+
+ palval = m_palette_ram[(pix | color << 2)] & 0x3f;
bool trans = false;
if ((palval & 0x1f) == 0x1f)
diff --git a/src/devices/video/ppu2c0x_vt.cpp b/src/devices/video/ppu2c0x_vt.cpp
index ad1439a90e1..2b8b9b6e3dd 100644
--- a/src/devices/video/ppu2c0x_vt.cpp
+++ b/src/devices/video/ppu2c0x_vt.cpp
@@ -435,7 +435,18 @@ void ppu_vt03_device::shift_tile_plane_data(uint8_t& pix)
void ppu_vt03_device::draw_back_pen(uint32_t* dst, int back_pen)
{
- draw_tile_pixel_inner(back_pen, dst);
+ if (m_201x_regs[0] & 0x80)
+ {
+ // is the back_pen always just pen 0 in VT modes? (using last data written to a transparent pen as per NES logic doesn't work as writes are split across 2 bytes)
+ draw_tile_pixel_inner(0, dst);
+ }
+ else
+ {
+ // in normal modes we still have the data from the palette writes as the 'backpen' so treat it as before
+ uint32_t pix;
+ pix = m_nespens[back_pen & 0x1ff];
+ *dst = pix;
+ }
}
diff --git a/src/mame/drivers/generalplus_gpl16250_rom.cpp b/src/mame/drivers/generalplus_gpl16250_rom.cpp
index 0f6a192e7e9..9a118332720 100644
--- a/src/mame/drivers/generalplus_gpl16250_rom.cpp
+++ b/src/mame/drivers/generalplus_gpl16250_rom.cpp
@@ -416,6 +416,14 @@ ROM_START( myac220 )
ROM_LOAD16_WORD_SWAP( "myarcadegogamerportable.bin", 0x0000000, 0x8000000, BAD_DUMP CRC(c929a2fa) SHA1(e99007ccc45a268267b4ea0efaf22e3117f5a6bd) ) // several sections seemed to be erased, was repaired with data from tkmag220, likely good but should be verified
ROM_END
+ROM_START( beijuehh )
+ //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 )
+ ROM_LOAD16_WORD_SWAP( "beijeu.bin", 0x0000000, 0x8000000, CRC(e7b968af) SHA1(a39a3a70e6e0827e4395e09e55983eb9e9348e4a) ) // some address lines might be swapped
+ROM_END
+
void tkmag220_game_state::tkmag220(machine_config &config)
{
gcm394_game_state::base(config);
@@ -486,6 +494,9 @@ CONS(201?, myac220, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empt
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)
+// memory mapping needs figuring out
+CONS(201?, beijuehh, 0, 0, tkmag220, tkmag220, tkmag220_game_state, empty_init, "Beijue", "Beijue 16 Bit Handheld Games (Game Boy style case)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+
// 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)
diff --git a/src/mame/drivers/generalplus_gpl32612.cpp b/src/mame/drivers/generalplus_gpl32612.cpp
index fbc02eec7c0..1c9df04d370 100644
--- a/src/mame/drivers/generalplus_gpl32612.cpp
+++ b/src/mame/drivers/generalplus_gpl32612.cpp
@@ -184,6 +184,11 @@ ROM_START( jak_prhp )
ROM_LOAD( "mx30lf1g08aa.u2", 0x000000, 0x8400000, CRC(4ccd7e53) SHA1(decbd424f088d180776a817c80b147d6a887e5c1) )
ROM_END
+// uncertain hardware type, ARM based, has GPNAND strings
+ROM_START( zippity )
+ ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 )
+ ROM_LOAD( "zippity_mt29f2g08aacwp_2cda8015.bin", 0x0000, 0x10800000, CRC(16248b63) SHA1(3607337588a68052ef5c495b496aa3e0449d3eb6) )
+ROM_END
void generalplus_gpl32612_game_state::nand_init(int blocksize, int blocksize_stripped)
{
@@ -233,3 +238,6 @@ CONS( 200?, jak_tmnthp, 0, 0, gpl32612, gpl32612, generalplus_gp
CONS( 200?, jak_ddhp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init840, "JAKKS Pacific Inc", "DreamWorks Dragons Hero Portal", MACHINE_IS_SKELETON )
CONS( 200?, jak_prhp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init840, "JAKKS Pacific Inc", "Power Rangers Super Megaforce Hero Portal", MACHINE_IS_SKELETON ) // from a PAL unit (probably not region specific)
CONS( 200?, jak_dchp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init840, "JAKKS Pacific Inc", "DC Super Heroes The Watchtower Hero Portal", MACHINE_IS_SKELETON )
+
+// Might not belong here, SoC is marked GPL32300A instead, but is still ARM based, and has GPNAND strings
+CONS( 201?, zippity, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "LeapFrog", "Zippity (US)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/generalplus_gpl_unknown.cpp b/src/mame/drivers/generalplus_gpl_unknown.cpp
index 957bd0bcd19..6aaef1a32d8 100644
--- a/src/mame/drivers/generalplus_gpl_unknown.cpp
+++ b/src/mame/drivers/generalplus_gpl_unknown.cpp
@@ -97,13 +97,27 @@ void generalplus_gpl_unknown_state::generalplus_gpl_unknown(machine_config &conf
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x8000);
}
-ROM_START( unkunsp )
+ROM_START( mapacman )
//ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASEFF )
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x2000, NO_DUMP ) // exact size unknown
- ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF ) // this simply maps at 200000, and contains jumps to lower areas that suggest even the ROM/internal RAM mapping is very different
+ ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF )
ROM_LOAD( "fm25q16a.bin", 0x000000, 0x200000, CRC(aeb472ac) SHA1(500c24b725f6d3308ef8cbdf4259f5be556c7c92) )
ROM_END
-// different hardware, first 0x2000 bytes in ROM are blank, maps fully in RAM at 200000
-CONS( 2017, unkunsp, 0, 0, generalplus_gpl_unknown, generalplus_gpl_unknown, generalplus_gpl_unknown_state, empty_init, "Super Impulse", "Pac-Man (Micro Arcade)", MACHINE_IS_SKELETON )
+ROM_START( taspinv )
+ //ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASEFF )
+ //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x000000, 0x2000, NO_DUMP ) // exact size unknown
+
+ ROM_REGION( 0x800000, "spi", ROMREGION_ERASEFF )
+ ROM_LOAD( "tinyarcade_spaceinvaders.bin", 0x000000, 0x200000, CRC(11ac4c77) SHA1(398d5eff83a4e94487ed810819085a0e44582908) )
+ROM_END
+
+
+// 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?
+
+CONS( 2017, mapacman, 0, 0, generalplus_gpl_unknown, generalplus_gpl_unknown, generalplus_gpl_unknown_state, empty_init, "Super Impulse", "Pac-Man (Micro Arcade)", MACHINE_IS_SKELETON )
+
+// 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 )
diff --git a/src/mame/drivers/nes_sh6578.cpp b/src/mame/drivers/nes_sh6578.cpp
index caf03628290..53e3b06992f 100644
--- a/src/mame/drivers/nes_sh6578.cpp
+++ b/src/mame/drivers/nes_sh6578.cpp
@@ -714,16 +714,17 @@ ROM_START( max10in1 )
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 )
+ROM_START( vsmaxx15 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "vsmaxx15n1_e28f008sa_89a2.bin", 0x00000, 0x100000, CRC(713955ce) SHA1(f5ff02055fd4574cedc2f056d19388207a7244c0) )
+ROM_END
-// possibly newer than 2001
-CONS( 2001, ts_handy11, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Techno Source", "Handy Boy 11-in-1 (TV Play Power)", MACHINE_NOT_WORKING )
+ROM_START( vsmaxx25 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD( "vsmaxx25_am29lv160dt_000122c4.bin", 0x00000, 0x200000, CRC(0efd1625) SHA1(34e83f748af3eee475c5b2b24ff03c00c1b5b8ed) )
+ROM_END
-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_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?)
@@ -731,3 +732,25 @@ CONS( 200?, maxx6in1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_ne
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 )
+// titles below have various issues (DMA, split interrupt timing etc.)
+
+ // aka Wik!d Joystick, sometimes also called Air Blaster like the real Air Blaster game. Wik!d seems a rebranding (a 'gift' company) so did ABL reuse the Air Blaster name here instead?
+CONS( 200?, ablwikid, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_abl_wikid_state, init_nes_sh6578, "Advance Bright Ltd.", "Wikid Joystick 14-in-1", MACHINE_NOT_WORKING )
+
+CONS( 2001?, ts_handy11, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Techno Source", "Handy Boy 11-in-1 (TV Play Power)", MACHINE_NOT_WORKING ) // possibly newer than 2001
+
+// from a blue coloured unit, a yellow one exists, is it the same?
+CONS( 2004?, vsmaxx15, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Senario", "Vs Maxx 15-in-1", MACHINE_NOT_WORKING )
+
+// This is from the blue coloured unit with the 1p/2p slider (does it do anything / get read anywhere?)
+// A version of the 25-in-1 on VT hardware also exists, with the downgraded version of Big Racing & removed copyrights etc. (probably the purple tinted version without the 1p/2p slider)
+CONS( 2004?, vsmaxx25, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_max10in1_state, init_nes_sh6578, "Senario", "Vs Maxx 25-in-1", MACHINE_NOT_WORKING )
+
+// titles below need inputs mapping to go further
+
+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 )
+
+CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING )
+
diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp
index 324ec787eee..fcbc30e186a 100644
--- a/src/mame/drivers/nes_vt.cpp
+++ b/src/mame/drivers/nes_vt.cpp
@@ -1752,6 +1752,11 @@ ROM_START( cybar120 )
ROM_LOAD( "m2500p-vt09-epson,20091222ver05,_30r-sx1067-01_pcb,_12r0cob128m_12001-3d05_fw.bin", 0x00000, 0x1000000, CRC(f7138980) SHA1(de31264ee3a5a5c77a86733b2e2d6845fee91ea5) )
ROM_END
+ROM_START( sen101 )
+ ROM_REGION( 0x400000, "mainrom", 0 )
+ ROM_LOAD( "101n1.bin", 0x00000, 0x400000, CRC(b03e1824) SHA1(c9ac4e16220414c1aa679133191140ced9986e9c) )
+ROM_END
+
ROM_START( mc_dg101 )
ROM_REGION( 0x400000, "mainrom", 0 )
@@ -1773,11 +1778,26 @@ ROM_START( mc_sp69 )
ROM_LOAD( "sports game 69-in-1.prg", 0x00000, 0x400000, CRC(1242da7f) SHA1(bb8f99b1f4a4783b3f7e54d74f1f2a6a628da154) )
ROM_END
+ROM_START( vsmaxtx2 )
+ ROM_REGION( 0x400000, "mainrom", 0 )
+ ROM_LOAD( "tx2.bin", 0x00000, 0x400000, CRC(eddf0ca8) SHA1(b87c5c3e945d1efdcb953325425d4ddb0fded00a) )
+ROM_END
+
ROM_START( vsmaxx17 )
ROM_REGION( 0x200000, "mainrom", 0 )
ROM_LOAD( "vsmaxx17.bin", 0x00000, 0x200000, CRC(f3fccbb9) SHA1(8b70b10d28f03e72f6b35199001955033a65fd5d) ) // M6MG3D641RB
ROM_END
+ROM_START( vsmaxx77 )
+ ROM_REGION( 0x800000, "mainrom", 0 )
+ ROM_LOAD( "vsmaxx77.bin", 0x00000, 0x800000, CRC(03f1f4b5) SHA1(13f7ecea3765cffcd3065de713abdabd24946b99) )
+ROM_END
+
+ROM_START( vsmaxxvd )
+ ROM_REGION( 0x800000, "mainrom", 0 )
+ ROM_LOAD( "vsmaxxvideo.bin", 0x00000, 0x800000, CRC(af365a77) SHA1(8119fcef3e1a2ade93d36740d5df451919f0e541) )
+ROM_END
+
ROM_START( polmega )
ROM_REGION( 0x400000, "mainrom", 0 )
ROM_LOAD( "megamax.bin", 0x00000, 0x400000, CRC(ef3aade3) SHA1(0c130080ace000cbe43e70a805d4301e05840294) )
@@ -2242,7 +2262,8 @@ CONS( 200?, timetp7, 0, 0, nes_vt_pal_2mb, timetp36, nes_vt_timetp36_state,
CONS( 200?, dgun2500, 0, 0, nes_vt_dg_baddma_16mb, nes_vt, nes_vt_dg_state, empty_init, "dreamGEAR", "dreamGEAR Wireless Motion Control with 130 games (DGUN-2500)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
// this is VT09 based
-CONS( 2009, cybar120, 0, 0, nes_vt_vg_16mb, nes_vt, nes_vt_hh_state, empty_init, "Defender", "Defender M2500P 120-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2009, cybar120, 0, 0, nes_vt_vg_16mb,nes_vt, nes_vt_hh_state, empty_init, "Defender", "Defender M2500P 120-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2004, vsmaxtx2, 0, 0, nes_vt_vg_4mb, nes_vt, nes_vt_hh_state, empty_init, "Senario", "Vs Maxx TX-2 50-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2005, vgpocket, 0, 0, nes_vt_vg_4mb, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products", "VG Pocket (VG-2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 200?, vgpmini, 0, 0, nes_vt_vg_4mb, nes_vt, nes_vt_hh_state, empty_init, "Performance Designed Products", "VG Pocket Mini (VG-1500)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// VG Pocket Max (VG-2500) (blue case, 75 games)
@@ -2251,11 +2272,15 @@ CONS( 200?, vgpmini, 0, 0, nes_vt_vg_4mb, nes_vt, nes_vt_hh_state, empty_ini
// CPU die is marked 'VH2009' There's also a 62256 RAM chip on the PCB, some scrambled opcodes
CONS( 2004, polmega, 0, 0, nes_vt_vh2009_4mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Polaroid", "TV MegaMax active power game system 30-in-1 (MegaMax GPD001SDG)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-CONS( 2004, vsmaxx17, 0, 0, nes_vt_vh2009_2mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario", "Vs. Maxx 17-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // from a Green unit, '17 Classic & Racing Game'
+CONS( 2004, vsmaxx17, 0, 0, nes_vt_vh2009_2mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario", "Vs Maxx 17-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // from a Green unit, '17 Classic & Racing Game'
CONS( 200?, silv35, 0, 0, nes_vt_vh2009_4mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "SilverLit", "35 in 1 Super Twins", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// die is marked as VH2009, as above, but no scrambled opcodes here
CONS( 201?, techni4, 0, 0, nes_vt_pal_2mb, nes_vt, nes_vt_state, empty_init, "Technigame", "Technigame Super 4-in-1 Sports (PAL)", MACHINE_IMPERFECT_GRAPHICS )
+CONS( 2004, vsmaxxvd, 0, 0, nes_vt_vh2009_8mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario", "Vs Maxx Video Extreme 50-in-1 (with Speed Racer and Snood)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2004, vsmaxx77, 0, 0, nes_vt_vh2009_8mb, nes_vt, nes_vt_swap_op_d5_d6_state, empty_init, "Senario", "Vs Maxx Wireless 77-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+
// seems to use PCM for all sound, some garbage at bottom of screen, needs correct inputs (seems to respond to start, and any direction input for 'hit' - check if they're power related)
CONS( 200?, protpp, 0, 0, nes_vt_vh2009_1mb, nes_vt, nes_vt_swap_op_d5_d6_state, init_protpp, "Protocol", "Virtual Ping Pong (Protocol)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
@@ -2300,6 +2325,9 @@ CONS( 2006, ddrstraw, 0, 0, nes_vt_2mb, nes_vt_ddr, nes_vt_state, empt
// there is also a 'Spectra Light Edition' which could be a different ROM as the title screen on this one does show the unit type.
CONS( 2006, dbdancem, 0, 0, nes_vt_2mb, dbdancem, nes_vt_state, empty_init, "Senario", "Double Dance Mania - Techno Light Edition", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+// unlike other Senario products this one is mostly just NES games, it also appears to be one of the final Senario products. Some games aren't what they claim to be, Warpman is Soccer for example.
+CONS( 2009, sen101, 0, 0, nes_vt_4mb, nes_vt, nes_vt_state, empty_init, "Senario", "101 Games in 1 (Senario)", MACHINE_IMPERFECT_GRAPHICS )
+
// unsorted, these were all in nes.xml listed as ONE BUS systems
CONS( 200?, mc_dg101, 0, 0, nes_vt_4mb, nes_vt, nes_vt_state, empty_init, "dreamGEAR", "dreamGEAR 101 in 1", MACHINE_IMPERFECT_GRAPHICS ) // dreamGear, but no enhanced games?
CONS( 200?, mc_aa2, 0, 0, nes_vt_4mb, nes_vt, nes_vt_state, empty_init, "<unknown>", "100 in 1 Arcade Action II (AT-103)", MACHINE_IMPERFECT_GRAPHICS )
@@ -2312,7 +2340,6 @@ CONS( 200?, mc_8x6ss, 0, 0, nes_vt_1mb, nes_vt, nes_vt_state, empty
CONS( 2004, mc_dcat8, 0, 0, nes_vt_8mb, nes_vt, nes_vt_state, empty_init, "<unknown>", "100 in 1 (D-CAT8 8bit Console, set 1) (v5.01.11-frd, BL 20041217)", MACHINE_IMPERFECT_GRAPHICS )
CONS( 2004, mc_dcat8a, mc_dcat8, 0, nes_vt_8mb, nes_vt, nes_vt_state, empty_init, "<unknown>", "100 in 1 (D-CAT8 8bit Console, set 2)", MACHINE_IMPERFECT_GRAPHICS )
-
// Runs well, only issues in SMB3 which crashes
CONS( 2017, bittboy, 0, 0, nes_vt_bt_2x16mb, nes_vt, nes_vt_cy_state, empty_init, "BittBoy", "BittBoy Mini FC 300 in 1", MACHINE_IMPERFECT_GRAPHICS ) // has external banking (2x 16mbyte banks)
// Runs well, all games seem to work
diff --git a/src/mame/drivers/spg2xx_lexibook.cpp b/src/mame/drivers/spg2xx_lexibook.cpp
index 0eb1c727daf..ce3db54d8fb 100644
--- a/src/mame/drivers/spg2xx_lexibook.cpp
+++ b/src/mame/drivers/spg2xx_lexibook.cpp
@@ -404,6 +404,13 @@ ROM_START( vgcaplet )
ROM_LOAD16_WORD_SWAP( "capletl.bin", 0x1000000, 0x0800000, CRC(1ae2fa49) SHA1(62f41d45da011c1dfb35c1111a478798c2b33aaf) )
ROM_END
+ROM_START( vgcap35 )
+ ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "vgpocket.bin", 0x0000000, 0x1000000, CRC(b4dd781b) SHA1(b060c83c2f96a2b78f075d1c8143f654016ff0ec) )
+ ROM_RELOAD(0x1000000,0x1000000)
+ROM_END
+
+
// these all have the same ROM scrambling
CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_lexizeus_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad sound and some corrupt bg tilemap entries in Tiger Rescue, verify ROM data (same game runs in Zone 60 without issue)
@@ -412,10 +419,11 @@ CONS( 200?, vsplus, 0, 0, vsplus, vsplus, spg2xx_vsplus_game
CONS( 200?, lexiseal, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Lexibook / Sit Up Limited", "Seal 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // also has bad sound in Tiger Rescue, but no corrupt tilemap
-// there are versions of the Seal that actually show Lexibook on the boot screen rather than just the unit
+// There are versions of the Seal 50-in-1 that actually show Lexibook on the boot screen rather than it just being on the unit. The Seal name was also used for some VT systems
CONS( 200?, discpal, 0, 0, lexizeus, lexiseal, spg2xx_lexizeus_game_state, init_zeus, "Performance Designed Products / Disney / Jungle Soft", "Disney Game It! Classic Pals", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-// there was also a Game It! Princess Pals
+// There was also a Game It! Princess Pals
+
+CONS( 2006, vgcaplet, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products (licensed by Taito / Data East)", "VG Pocket Caplet Fast Acting 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-CONS( 200?, vgcaplet, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products (licensed by Taito / Data East)", "VG Pocket Caplet Fast Acting 50-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-// there was also a 35 game version of the Caplet
+CONS( 2006, vgcap35, 0, 0, lexiseal, lexiseal, spg2xx_lexiseal_game_state, init_zeus, "Performance Designed Products (licensed by Taito / Data East)", "VG Pocket Caplet Fast Acting 35-in-1", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 65decad86c9..ac19a0460e0 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -14808,7 +14808,8 @@ suprpokrb // (c) 1986 Grayhound Electronics
rp200
@source:generalplus_gpl_unknown.cpp
-unkunsp
+mapacman
+taspinv
@source:generalplus_gpl162xx_lcdtype.cpp
pcp8718
@@ -14847,6 +14848,7 @@ gormiti
tkmag220 //
myac220
imgame
+beijuehh
@source:generalplus_gpl16250_romram.cpp
paccon
@@ -14869,6 +14871,7 @@ jak_tmnthp
jak_dchp
jak_ddhp
jak_prhp
+zippity
@source:geneve.cpp
geneve // 1987 Myarc Geneve 9640
@@ -32171,6 +32174,8 @@ ablwikid
maxx5in1
maxx6in1
max10in1
+vsmaxx25
+vsmaxx15
@source:nes_vt.cpp
vdogdeme
@@ -32204,11 +32209,15 @@ rtvgc300
rtvgc300fz
red5mam
cybar120
+sen101
mc_dg101
mc_aa2
mc_105te
mc_sp69
vsmaxx17
+vsmaxtx2
+vsmaxx77
+vsmaxxvd
polmega
silv35
lpgm240
@@ -38204,6 +38213,7 @@ lexizeus // Lexibook
lexiseal //
discpal
vgcaplet
+vgcap35
vsplus
@source:spg2xx_mysprtch.cpp