mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
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
This commit is contained in:
parent
05b52b1232
commit
39163a6a6c
@ -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<u8> 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, "<unknown>", "Retro Arcade 16 Bits Classic Edition Mini TV Game Console - 145 Classic Games - TV Arcade Plug and Play (Mega Drive bootlegs)", MACHINE_NOT_WORKING )
|
||||
|
||||
|
@ -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 )
|
||||
|
||||
|
@ -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, "<unknown>", "Digital Pocket Hand Held System 20-in-1 - Model 8213 (China)", MACHINE_IS_SKELETON )
|
||||
|
@ -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<uint16_t> 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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user