From 39163a6a6cf7b26175f3aa34d907c98ca14a751f Mon Sep 17 00:00:00 2001 From: David Haywood <28625134+DavidHaywood@users.noreply.github.com> Date: Mon, 14 Dec 2020 04:20:11 +0000 Subject: [PATCH] new WORKING / not WORKING Plug and Play (#7555) * new NOT WORKING machines ------- Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs) [Team Europe, David Haywood] * new WORKING machines ------ Cyber Console Center 200-in-1 (JL2050) [Team Europe, taizou] new NOT WORKING machines ------ Digital Pocket Hand Held System 20-in-1 - Model 8213 (China) [Team Europe, taizou] * flag ra145 as bad_dump --- src/mame/drivers/megadriv_rad.cpp | 281 ++++++++++++++++++++++++++++- src/mame/drivers/nes_vt09.cpp | 8 + src/mame/drivers/st22xx_bbl338.cpp | 13 +- src/mame/includes/megadriv_rad.h | 25 ++- src/mame/mame.lst | 17 +- 5 files changed, 327 insertions(+), 17 deletions(-) diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp index a87be5691ec..66e65d765a6 100644 --- a/src/mame/drivers/megadriv_rad.cpp +++ b/src/mame/drivers/megadriv_rad.cpp @@ -60,6 +60,195 @@ void megadriv_dgunl_state::write_a1630a(offs_t offset, uint16_t data, uint16_t m m_bank = (data & 0x07) * 8; } + +void megadriv_ra145_state::write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + // the banking must know how big each game is to get the base location, as it only writes a game number?! + // it must also know to skip the unused copy of Golden Axe + // there must be a table somewhere, or, if this is actually an emulation based system, it must be scanning + // for headers somehow? + + m_a1630a = data; + + switch (data & 0xff) + { + + + // 0x0000000 = Block of unknown data/code + // 0x0040000 = 145 in 1 menu + // (includes unused Columns, Fatal Labyrinth, Blockout, Flicky, Shove It, Space Invaders 90 as part of menu data) + case 0x00: m_bank = 0x02c0000; break;// = Fantasia 00 + case 0x01: m_bank = 0x0340000; break;// = Fire Shark 01 + case 0x02: m_bank = 0x03c0000; break;// = James Bond 007 - The Duel 02 (BAD ROM) + case 0x03: m_bank = 0x0440000; break;// = Sunset Riders 03 + case 0x04: m_bank = 0x04c0000; break;// = Robocop 3 04 + case 0x05: m_bank = 0x0540000; break;// = Hokuto no Ken 05 (BAD ROM) + case 0x06: m_bank = 0x05c0000; break;// = Alien 3 06 + case 0x07: m_bank = 0x0640000; break;// = Batman 07 (BAD ROM) + case 0x08: m_bank = 0x06c0000; break;// = Cat 08 + case 0x09: m_bank = 0x0740000; break;// = DJ Boy 09 + case 0x0a: m_bank = 0x07c0000; break;// = Rambo 3 0a (BAD ROM) + case 0x0b: m_bank = 0x0840000; break;// = Wardner 0b + case 0x0c: m_bank = 0x08c0000; break;// = Paperboy 0c + case 0x0d: m_bank = 0x0940000; break;// = Streets of Rage 0d + case 0x0e: m_bank = 0x09c0000; break;// = Tiny Toon Adventures 0e + case 0x0f: m_bank = 0x0a40000; break;// = Super Battleship 0f + case 0x10: m_bank = 0x0ac0000; break;// = Burning Force 10 + case 0x11: m_bank = 0x0b40000; break;// = Cadash 11 + case 0x12: m_bank = 0x0bc0000; break;// = Caesars Palace 12 + case 0x13: m_bank = 0x0c40000; break;// = chase HQ 2 13 + case 0x14: m_bank = 0x0cc0000; break;// = Wonderboy 3 14 + case 0x15: m_bank = 0x0d40000; break;// = Fighting Master 15 + case 0x16: m_bank = 0x0dc0000; break;// = The Flintstones 16 + case 0x17: m_bank = 0x0e40000; break;// = Ariel the Little Mermaid 17 + case 0x18: m_bank = 0x0ec0000; break;// = Hellfire 18 + case 0x19: m_bank = 0x0f40000; break;// = Arrow Flash 19 + case 0x1a: m_bank = 0x0fc0000; break;// = Shove It 1a + case 0x1b: m_bank = 0x1040000; break;// = Donkey Kong 99 1b + case 0x1c: m_bank = 0x1240000; break;// = Turtles Tournament 1c + case 0x1d: m_bank = 0x1440000; break;// = Thunder Force 2 1d (This is meant to be Revenge of Shinobi according to the menu, but incorrect game was in the ROM) + case 0x1e: m_bank = 0x14c0000; break;// = Wings of Wor 1e + case 0x1f: m_bank = 0x1540000; break;// = Wrestle War 1f + case 0x20: m_bank = 0x15c0000; break;// = Afterburner 2 20 + case 0x21: m_bank = 0x1640000; break;// = Altered Beast 21 + case 0x22: m_bank = 0x16c0000; break;// = Captain Planet 22 + case 0x23: m_bank = 0x1740000; break;// = Bimimi Run 23 + case 0x24: m_bank = 0x17c0000; break;// = Osomatsu 24 + case 0x25: m_bank = 0x1840000; break;// = Castle of Illusion 25 + case 0x26: m_bank = 0x18c0000; break;// = Crackdown 26 + case 0x27: m_bank = 0x1940000; break;// = Crossfire 27 + case 0x28: m_bank = 0x19c0000; break;// = Curse 28 + case 0x29: m_bank = 0x1a40000; break;// = Dangerous Seed 29 + case 0x2a: m_bank = 0x1ac0000; break;// = Dark Castle 2a + case 0x2b: m_bank = 0x1b40000; break;// = Darwin 2b + case 0x2c: m_bank = 0x1bc0000; break;// = Thunder Force 2 (duplicate?) 2c + case 0x2d: m_bank = 0x1c40000; break;// = Dynamite Duke 2d + case 0x2e: m_bank = 0x1cc0000; break;// = EA Hockey 2e + case 0x2f: m_bank = 0x1d40000; break;// = Elemenal Master 2f + case 0x30: m_bank = 0x1dc0000; break;// = Super Thunder Blade 30 + case 0x31: m_bank = 0x1e40000; break;// = Target Earth 31 + case 0x32: m_bank = 0x1ec0000; break;// = Rastan Saga 2 32 + case 0x33: m_bank = 0x1f40000; break;// = Ghostbusters 33 + case 0x34: m_bank = 0x1fc0000; break;// = Mahjong cop 34 + case 0x35: m_bank = 0x2040000; break;// = High School Soccer 35 + case 0x36: m_bank = 0x20c0000; break;// = Insector X 36 + case 0x37: m_bank = 0x2140000; break;// = Pheilos 37 + case 0x38: m_bank = 0x21c0000; break;// = Runark 38 + case 0x39: m_bank = 0x2240000; break;// = Saint Sword 39 + case 0x3a: m_bank = 0x22c0000; break;// = Shadow Dancer 3a + case 0x3b: m_bank = 0x2340000; break;// = Shiten Myooh 3b + case 0x3c: m_bank = 0x23c0000; break;// = Wani Wani World 3c + case 0x3d: m_bank = 0x2440000; break;// = Street Mmart 3d + case 0x3e: m_bank = 0x24c0000; break;// = Toki 3e + case 0x3f: m_bank = 0x2540000; break;// = Trouble Shooter 3f + case 0x40: m_bank = 0x25c0000; break;// = Truxton 40 + case 0x41: m_bank = 0x2640000; break;// = James Pond 2 41 + case 0x42: m_bank = 0x26c0000; break;// = Twin Hawk 42 + case 0x43: m_bank = 0x2740000; break;// = Syd of Valis 43 + case 0x44: m_bank = 0x27c0000; break;// = Zoom 44 + case 0x45: m_bank = 0x2840000; break;// = Streets of Rage 2 45 + case 0x46: m_bank = 0x2a40000; break;// = Sonic & Knuckles 46 + case 0x47: m_bank = 0x2c40000; break;// = Comix Zone 47 + case 0x48: m_bank = 0x2e40000; break;// = Rolling Thunder 2 48 + case 0x49: m_bank = 0x2f40000; break;// = Bubble & Squeek 49 + case 0x4a: m_bank = 0x2fc0000; break;// = Alex Kidd 4a + case 0x4b: m_bank = 0x3040000; break;// = Super Mario 2 4b + case 0x4c: m_bank = 0x3240000; break;// = NBA All Star 4c + case 0x4d: m_bank = 0x3340000; break;// = Bio Hazard Battle 4d + case 0x4e: m_bank = 0x3440000; break;// = Prince of Persia 4e + case 0x4f: m_bank = 0x3540000; break;// = Champions World Soccer 4f + case 0x50: m_bank = 0x3640000; break;// = Lotus 2 50 + case 0x51: m_bank = 0x3740000; break;// = Grandia 51 + case 0x52: m_bank = 0x37c0000; break;// = World Cup Soccer 52 + case 0x53: m_bank = 0x3840000; break;// = Ultimate Mortal Kombat 3 53 + case 0x54: m_bank = 0x3c40000; break;// = Street Fighter II (hacked MSI version) 54 + case 0x55: m_bank = 0x3f40000; break;// = Verytex 55 + case 0x56: m_bank = 0x3fc0000; break;// = Space Invaders 90 56 + + //This 32MBytes of the ROM has its own unused '666666 in 1 menu' and only references games + //within this block; it was probably released as a standalone using this 32Mbytes of ROM + // 0x4000000 = Block of unknown data/code + // 0x4040000 = 666666 in 1 menu + // (includes unused Columns, Fatal Labyrinth, Blockout, Flicky, Shove It, Space Invaders 90 as part of menu data) + // 0x42c0000 - Golden Axe -- (not used by 145-in-1 menu, no assigned number either?!) + case 0x57: m_bank = 0x4340000; break;// - Mega Bomberman 57 + case 0x58: m_bank = 0x4440000; break;// - Dragon The Bruce Lee Story 58 + case 0x59: m_bank = 0x4640000; break;// - Twinkle Tale 59 + case 0x5a: m_bank = 0x4740000; break;// - Jewel Master 5a + case 0x5b: m_bank = 0x47c0000; break;// - Pacmania 5b + case 0x5c: m_bank = 0x4840000; break;// - X-Men 2 5c + case 0x5d: m_bank = 0x4a40000; break;// - Top Gear 2 5d + case 0x5e: m_bank = 0x4b40000; break;// - Brian Lara Cricket 5e + case 0x5f: m_bank = 0x4c40000; break;// - Garfield 5f + case 0x60: m_bank = 0x4e40000; break;// - Raiden Trad 60 + case 0x61: m_bank = 0x4f40000; break;// - James Pond 61 + case 0x62: m_bank = 0x4fc0000; break;// - Mega Panel 62 + case 0x63: m_bank = 0x5040000; break;// - James Pond 3 63 + case 0x64: m_bank = 0x5240000; break;// - Contra Hardcorps 64 + case 0x65: m_bank = 0x5440000; break;// - International Superstar Soccer Deluxe 65 + case 0x66: m_bank = 0x5640000; break;// - Double Dragon 3 (with Trainer) 66 + case 0x67: m_bank = 0x5740000; break;// - Micro Machines 67 + case 0x68: m_bank = 0x57c0000; break;// - Hard Drivin' 68 + case 0x69: m_bank = 0x5840000; break;// - Dragon Ball Z 69 + case 0x6a: m_bank = 0x5a40000; break;// - F1 World Championship Edition 6a + case 0x6b: m_bank = 0x5c40000; break;// - Megaman / Rockman -- (6b, but unused? probably due to save feature?) + case 0x6c: m_bank = 0x5e40000; break;// - Operation Vapor Trail 6c + case 0x6d: m_bank = 0x5f40000; break;// - Roadblasters 6d + case 0x6e: m_bank = 0x5fc0000; break;// - Super Volleyball 6e + + //The final 32MBytes of the ROM has its own unused '888888 in 1 menu' and only references games + //within this block; it was probably released as a standalone using this 32Mbytes of ROM + // 0x6000000 = Block of unknown data/code + // 0x6040000 = 888888 in 1 menu + // (includes unused Columns, Fatal Labyrinth, Blockout, Flicky, Shove It, Space Invaders 90 as part of menu data) + case 0x6f: m_bank = 0x62c0000; break;// - Last Battle 6f + case 0x70: m_bank = 0x6340000; break;// - Shinobi III 70 + case 0x71: m_bank = 0x6440000; break;// - Mickey Mania 71 + case 0x72: m_bank = 0x6640000; break;// - Snow Bros 72 + case 0x73: m_bank = 0x6740000; break;// - Space Harrier II 73 + case 0x74: m_bank = 0x67c0000; break;// - Volfied 74 + case 0x75: m_bank = 0x6840000; break;// - Goofy's Hysterical History Tour 75 + case 0x76: m_bank = 0x6940000; break;// - Mighty Max 76 + case 0x77: m_bank = 0x6a40000; break;// - Mr Nutz 77 + case 0x78: m_bank = 0x6b40000; break;// - Sonic 2 78 + case 0x79: m_bank = 0x6c40000; break;// - Ecco Jr. 79 + case 0x7a: m_bank = 0x6d40000; break;// - Desert Demolition 7a + case 0x7b: m_bank = 0x6e40000; break;// - Midnight Resistance 7b + case 0x7c: m_bank = 0x6f40000; break;// - Spiderman vs The Kingpin 7c + case 0x7d: m_bank = 0x6fc0000; break;// - Trampoline Terror 7d + case 0x7e: m_bank = 0x7040000; break;// - MUSHA 7e + case 0x7f: m_bank = 0x70c0000; break;// - Sonic 7f + case 0x80: m_bank = 0x7140000; break;// - Thunder Force III 80 + case 0x81: m_bank = 0x71c0000; break;// - Golden Axe (again) 81 + // 0x7240000; break;// - Controller Test Menu -- (unused) + // 0x7340000; break;// - Controller Test Menu (again) -- (unused) + case 0x82: m_bank = 0x7440000; break;// - Wacky Worlds 82 (writes 93, incorrectly swapped in menu with Wacky Worlds) + case 0x83: m_bank = 0x7540000; break;// - Bonkers 83 + case 0x84: m_bank = 0x7640000; break;// - Alisia Dragoon 84 + case 0x85: m_bank = 0x7740000; break;// - Super Hang On 85 + case 0x86: m_bank = 0x77c0000; break;// - Dragon's Eye Shanghai 3 86 + case 0x87: m_bank = 0x7840000; break;// - Jimmy White's Whirlwind Snooker 87 + case 0x88: m_bank = 0x78c0000; break;// - Home Alone 2 88 + case 0x89: m_bank = 0x7940000; break;// - Xenon 2 (with trainer) 89 + case 0x8a: m_bank = 0x79c0000; break;// - Hit the Ice 8a + case 0x8b: m_bank = 0x7a40000; break;// - Tale Spin 8b + case 0x8c: m_bank = 0x7ac0000; break;// - Puyo Puyo 8c + case 0x8d: m_bank = 0x7b40000; break;// - Rampart (with trainer) 8d + case 0x8e: m_bank = 0x7bc0000; break;// - Crue Ball 8e + case 0x8f: m_bank = 0x7c40000; break;// - Marble Madness 8f + case 0x90: m_bank = 0x7cc0000; break;// - Patlabor 90 + case 0x91: m_bank = 0x7d40000; break;// - The Aquatic Games 91 + case 0x92: m_bank = 0x7dc0000; break;// - King Salmon 92 + case 0x93: m_bank = 0x7e40000; break;// - Fun n Games 93 (writes 82, incorrectly swapped in menu with Fun n Games) + case 0x94: m_bank = 0x7f40000; break;// - Gynoug 94 + case 0x95: m_bank = 0x7fc0000; break;// - Ms. Pac-Man 95 + default: m_bank = 0x0040000; break; + } + + m_bank = m_bank / 0x10000; +} + + void megadriv_dgunl_state::megadriv_dgunl_map(address_map &map) { megadriv_base_map(map); @@ -72,7 +261,7 @@ void megadriv_dgunl_state::megadriv_dgunl_map(address_map &map) uint16_t megadriv_radica_state::read(offs_t offset) { - return m_rom[(((m_bank * 0x10000) + (offset << 1)) & (0x400000 - 1))/2]; + return m_rom[(((m_bank * 0x10000) + (offset << 1)) & (m_romsize - 1))/2]; } uint16_t megadriv_radica_state::read_a13(offs_t offset) @@ -194,6 +383,32 @@ void megadriv_dgunl_state::machine_start() save_item(NAME(m_a1630a)); } +void megadriv_ra145_state::machine_start() +{ + md_base_state::machine_start(); + m_vdp->stop_timers(); + + m_io_pad_6b[0] = ioport("EXTRA1"); + m_io_pad_6b[1] = ioport("EXTRA2"); + m_io_pad_6b[2] = ioport("IN0"); + m_io_pad_6b[3] = ioport("UNK"); + + // setup timers for 6 button pads + for (int i = 0; i < 3; i++) + m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(uintptr_t)i); + + m_a1630a = 0; + save_item(NAME(m_a1630a)); + save_item(NAME(m_bank)); +} + +void megadriv_ra145_state::machine_reset() +{ + m_bank = 4; + md_base_state::machine_reset(); +} + + void megadriv_radica_3button_state::machine_reset() { m_bank = 0; @@ -300,6 +515,32 @@ ROM_START( dgunl3227 ) ROM_END + +ROM_START( ra145 ) + /* + Data for the following games is corrupt (ranges approximate, based on areas of inconsistent readout) + + 3c0000 - 43ffff - James Bond 007 - The Duel (400171 - 41c600 is corrupt) + 4c0000 - 53ffff - Robocop 3 (507bd4 - 50ad43 is corrupt) + 540000 - 5bffff - Hokuto no Ken (540006 - 55fff2 is corrupt) + 640000 - 6bffff - Batman (640042 - 65ffaf is corrupt) + 7c0000 - 7fffff - Rambo 3 (7e031a - 7fffb9 is corrupt) + + Unfortunately as many of the games in this unit have been hacked, or are using pirate versions of the games + from the mid 90s (in a few cases, complete with trainers) that seem to have dropped out of circulation it + is not possible to repair the data in dump from the damaged unit. + + The unit also includes a duplicate copy of Thunder Force II instead of Revenge of Shinobi, this however + is not a dump issue, nor is Wacky Worlds being swapped with Fun and Games in the menu + */ + + ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "ra145.bin", 0x000000, 0x8000000, BAD_DUMP CRC(30583950) SHA1(855eae232e3830a505f9bc1a26edb3a7d15ce4d1) ) +ROM_END + + + + void megadriv_radica_6button_state::init_megadriv_radica_6button_pal() { init_megadrie(); @@ -320,6 +561,14 @@ void megadriv_dgunl_state::init_dgunl3227() { uint8_t* rom = memregion("rom")->base(); uint8_t* dst = memregion("maincpu")->base(); + size_t len = memregion("rom")->bytes(); + + std::vector buffer(len); + + for (int i = 0; i < len; i++) + buffer[i] = rom[i ^ 3]; + + std::copy(buffer.begin(), buffer.end(), &rom[0]); int baseaddr, size, dstaddr; //baseaddr = 0x200000; size = 0x40000; // unknown data (unused menu data maybe?) @@ -342,7 +591,7 @@ void megadriv_dgunl_state::init_dgunl3227() dstaddr = 0x000000; for (int i = 0; i < size; i++) { - dst[(i ^ 3) + dstaddr] = rom[baseaddr + i]; + dst[i + dstaddr] = rom[baseaddr + i]; } // copy 2nd part of menu code @@ -351,7 +600,7 @@ void megadriv_dgunl_state::init_dgunl3227() dstaddr = 0x0c0000; for (int i = 0; i < size; i++) { - dst[(i ^ 3) + dstaddr] = rom[baseaddr + i]; + dst[i + dstaddr] = rom[baseaddr + i]; } // copy pac-panic to first bank @@ -360,7 +609,7 @@ void megadriv_dgunl_state::init_dgunl3227() dstaddr = 0x100000; for (int i = 0; i < size; i++) { - dst[(i ^ 3) + dstaddr] = rom[baseaddr + i]; + dst[i + dstaddr] = rom[baseaddr + i]; } // copy pac-mania to 2nd bank @@ -369,7 +618,7 @@ void megadriv_dgunl_state::init_dgunl3227() dstaddr = 0x180000; for (int i = 0; i < size; i++) { - dst[(i ^ 3) + dstaddr] = rom[baseaddr + i]; + dst[i + dstaddr] = rom[baseaddr + i]; } // copy pac-man to 3nd bank @@ -378,7 +627,7 @@ void megadriv_dgunl_state::init_dgunl3227() dstaddr = 0x200000; for (int i = 0; i < size; i++) { - dst[(i ^ 3) + dstaddr] = rom[baseaddr + i]; + dst[i + dstaddr] = rom[baseaddr + i]; } // other data isn't copied because it's never referenced, therefore we don't know how it gets accessed @@ -386,6 +635,15 @@ void megadriv_dgunl_state::init_dgunl3227() init_megadriv(); } +void megadriv_ra145_state::init_ra145() +{ + m_romsize = 0x8000000; + init_megadriv(); + // 6 button game, so overwrite 3 button io handlers + m_megadrive_io_read_data_port_ptr = read8sm_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_6button)); + m_megadrive_io_write_data_port_ptr = write16sm_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_6button)); +} + // 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 @@ -419,7 +677,16 @@ CONS( 2004, rad_orun, 0, 0, megadriv_radica_3button_pal, megadriv_radic // 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 +// Are these (dgunl3227, ra145) actually emulation based? there is a block of 0x40000 bytes at the start of the ROM that doesn't +// appear to be used, very similar in both units. Banking also seems entirely illogical unless something else is managing it. +// The menu code in both seems to have the same origin, containing a bunch of unused pirate versions of MD games. +// The version of SF2 in the 'ra145' unit is the same as the one in the MSI unit above, and expects region to report US even +// when some of the units run at PAL speed? +// It is also confirmed from real hardware videos that these units do not have the usual sprite limits (so masking effect on Sonic title screen fails) + // 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 ) + +CONS( 2018, ra145, 0, 0, megadriv_dgunl_ntsc, megadriv_msi_6button, megadriv_ra145_state, init_ra145, "", "Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs)", MACHINE_NOT_WORKING ) + diff --git a/src/mame/drivers/nes_vt09.cpp b/src/mame/drivers/nes_vt09.cpp index b02e9669c8f..ac4f8a5fc35 100644 --- a/src/mame/drivers/nes_vt09.cpp +++ b/src/mame/drivers/nes_vt09.cpp @@ -391,6 +391,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( jl2050 ) + ROM_REGION( 0x1000000, "mainrom", 0 ) + ROM_LOAD( "jl2050.u5", 0x00000, 0x1000000, CRC(f96c5c02) SHA1(c7d0b57c2622b5213d3c7e6532495d9da74d4b01) ) +ROM_END + ROM_START( vsmaxtx2 ) ROM_REGION( 0x400000, "mainrom", 0 ) ROM_LOAD( "tx2.bin", 0x00000, 0x400000, CRC(eddf0ca8) SHA1(b87c5c3e945d1efdcb953325425d4ddb0fded00a) ) @@ -474,3 +479,6 @@ CONS( 200?, vgpmini, 0, 0, nes_vt09_4mb, nes_vt09, nes_vt09_state, empty_ini // VG Pocket Max (VG-3000) (white case, 75 games) (does the game selection differ, or only the case?) CONS( 2006, vgtablet, 0, 0, nes_vt09_4mb_rasterhack, nes_vt09, nes_vt09_state, empty_init, "Performance Designed Products (licensed by Konami) / JungleTac", "VG Pocket Tablet (VG-4000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // raster timing for Frogger needs a hack // VG Pocket Caplet is SunPlus hardware instead, see spg2xx_lexibook.cpp + +CONS( 200?, jl2050, 0, 0, nes_vt09_16mb,nes_vt09, nes_vt09_state, empty_init, "LexiBook / JungleTac / NiceCode", "Cyber Console Center 200-in-1 (JL2050)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + diff --git a/src/mame/drivers/st22xx_bbl338.cpp b/src/mame/drivers/st22xx_bbl338.cpp index 9605d9d5d6c..1a0959aa0e9 100644 --- a/src/mame/drivers/st22xx_bbl338.cpp +++ b/src/mame/drivers/st22xx_bbl338.cpp @@ -14,7 +14,7 @@ public: , m_screen(*this, "screen") { } - + void st22xx_bbl338(machine_config &config); private: @@ -64,5 +64,16 @@ ROM_START( bbl338 ) ROM_END +ROM_START( dphh8213 ) + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD( "mx29lv160cb.u1", 0x000000, 0x200000, CRC(c8e7e355) SHA1(726f28c2c9ab012a6842f9f30a0a71538741ba14) ) +ROM_END + + + + // this is uses a higher resolution display than the common units, but not as high as the SunPlus based ones COMP( 201?, bbl338, 0, 0, st22xx_bbl338, st22xx_bbl338, st22xx_bbl338_state, empty_init, "BaoBaoLong", "Portable Game Player BBL-338 (BaoBaoLong, 48-in-1)", MACHINE_IS_SKELETON ) + +// Chinese menus only, low resolution +COMP( 201?, dphh8213, 0, 0, st22xx_bbl338, st22xx_bbl338, st22xx_bbl338_state, empty_init, "", "Digital Pocket Hand Held System 20-in-1 - Model 8213 (China)", MACHINE_IS_SKELETON ) diff --git a/src/mame/includes/megadriv_rad.h b/src/mame/includes/megadriv_rad.h index e590467610b..0ea4d58ff3d 100644 --- a/src/mame/includes/megadriv_rad.h +++ b/src/mame/includes/megadriv_rad.h @@ -10,6 +10,7 @@ public: megadriv_radica_state(const machine_config &mconfig, device_type type, const char *tag) : md_base_state(mconfig, type, tag), m_bank(0), + m_romsize(0x400000), m_rom(*this, "maincpu") {} @@ -22,6 +23,7 @@ public: protected: void megadriv_base_map(address_map &map); int m_bank; + int m_romsize; private: required_region_ptr m_rom; @@ -71,14 +73,33 @@ public: protected: virtual void machine_start() override; + uint16_t m_a1630a; 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); + virtual void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask); void megadriv_dgunl_map(address_map &map); - uint16_t m_a1630a; +}; + +class megadriv_ra145_state : public megadriv_dgunl_state +{ +public: + megadriv_ra145_state(const machine_config& mconfig, device_type type, const char* tag) + : megadriv_dgunl_state(mconfig, type, tag) + {} + + void init_ra145(); + +public: + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + virtual void write_a1630a(offs_t offset, uint16_t data, uint16_t mem_mask) override; }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 09d739bb5b1..e10110e0a83 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -22340,6 +22340,7 @@ rad_sonicp rad_orun msi_sf2 dgunl3227 +ra145 @source:megadriv_sunplus_hybrid.cpp reactmd @@ -32373,6 +32374,10 @@ ppgc200g dgun2869 @source:nes_vt09.cpp +cybar120 +dturbogt +jl2050 +joypad65 msiwwe msiwwea msidd @@ -32380,16 +32385,13 @@ msimpac msimm2 msisinv msifrog -cybar120 -vsmaxtx2 -senario25 rcapnp -dturbogt +senario25 ventur25 -vgpocket -vgpmini vgtablet -joypad65 +vgpmini +vgpocket +vsmaxtx2 @source:nes_vt32.cpp dgun2573 @@ -38137,6 +38139,7 @@ sorcererd // Sorcerer with Micropolis fdc @source:st22xx_bbl338.cpp bbl338 +dphh8213 @source:storio.cpp innotab2 // (c) 2011 V.Tech