mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 03:31:49 +01:00
commit
0bcf4ced21
@ -20,6 +20,8 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke)
|
|||||||
* improved savestate format
|
* improved savestate format
|
||||||
* improved Sub-CPU synchronization with Main-CPU (fixes "Soul Star")
|
* improved Sub-CPU synchronization with Main-CPU (fixes "Soul Star")
|
||||||
* improved Main-CPU & Sub-CPU idle loop detection (fixes "Super League CD")
|
* improved Main-CPU & Sub-CPU idle loop detection (fixes "Super League CD")
|
||||||
|
* improved PAL Mega CD timing accuracy (fixes PAL "Snatcher" intro synchronization)
|
||||||
|
* improved CDD "play" command accuracy (fixes "Snatcher" Act 2 starting cutscene)
|
||||||
* disabled 68k and Z80 access to PRG-RAM when SUB-CPU is running (fixes "Dungeon Explorer")
|
* disabled 68k and Z80 access to PRG-RAM when SUB-CPU is running (fixes "Dungeon Explorer")
|
||||||
* disabled CD hardware reset on Soft-Reset (verified on real hardware)
|
* disabled CD hardware reset on Soft-Reset (verified on real hardware)
|
||||||
* fixed DATA track minimal length (fixes BIOS refusing to boot small homebrew demos)
|
* fixed DATA track minimal length (fixes BIOS refusing to boot small homebrew demos)
|
||||||
@ -41,6 +43,7 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke)
|
|||||||
* added support for Everdrive extended SSF mapper
|
* added support for Everdrive extended SSF mapper
|
||||||
* improved console region auto-detection for a few PAL-only games (The Smurfs Travel the World & Williams Arcade's Greatest Hits)
|
* improved console region auto-detection for a few PAL-only games (The Smurfs Travel the World & Williams Arcade's Greatest Hits)
|
||||||
* improved I2C EEPROM boards emulation accuracy
|
* improved I2C EEPROM boards emulation accuracy
|
||||||
|
* improved SVP memory handlers accuracy (fixes Virtua Racing debug mode)
|
||||||
* fixed Game Genie / Pro Action Replay lock-on support when Mega CD hardware is enabled
|
* fixed Game Genie / Pro Action Replay lock-on support when Mega CD hardware is enabled
|
||||||
* fixed SRAM support in Triple Play 96 & Triple Play - Gold Edition
|
* fixed SRAM support in Triple Play 96 & Triple Play - Gold Edition
|
||||||
* fixed automatic CD loading with .md ROM files
|
* fixed automatic CD loading with .md ROM files
|
||||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 3.2 MiB |
Binary file not shown.
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
@ -394,17 +394,6 @@ void md_cart_init(void)
|
|||||||
if (strstr(rominfo.international,"Virtua Racing"))
|
if (strstr(rominfo.international,"Virtua Racing"))
|
||||||
{
|
{
|
||||||
svp_init();
|
svp_init();
|
||||||
|
|
||||||
m68k.memory_map[0x30].base = svp->dram;
|
|
||||||
m68k.memory_map[0x30].read16 = NULL;
|
|
||||||
m68k.memory_map[0x30].write16 = svp_write_dram;
|
|
||||||
|
|
||||||
m68k.memory_map[0x31].base = svp->dram + 0x10000;
|
|
||||||
m68k.memory_map[0x31].read16 = NULL;
|
|
||||||
m68k.memory_map[0x31].write16 = svp_write_dram;
|
|
||||||
|
|
||||||
m68k.memory_map[0x39].read16 = svp_read_cell_1;
|
|
||||||
m68k.memory_map[0x3a].read16 = svp_read_cell_2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************
|
/**********************************************
|
||||||
|
@ -76,9 +76,9 @@ typedef struct
|
|||||||
/* Cartridge type */
|
/* Cartridge type */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8 *base; /* ROM base (saved for OS/Cartridge ROM swap) */
|
uint8 *base; /* ROM base (saved for OS/Cartridge ROM swap) */
|
||||||
uint32 romsize; /* ROM size */
|
uint32 romsize; /* ROM size */
|
||||||
uint32 mask; /* ROM mask */
|
uint32 mask; /* ROM mask */
|
||||||
uint8 special; /* custom external hardware (Lock-On, J-Cart, 3-D glasses, Terebi Oekaki,...) */
|
uint8 special; /* custom external hardware (Lock-On, J-Cart, 3-D glasses, Terebi Oekaki,...) */
|
||||||
cart_hw_t hw; /* cartridge internal hardware */
|
cart_hw_t hw; /* cartridge internal hardware */
|
||||||
uint8 rom[MAXROMSIZE]; /* ROM area */
|
uint8 rom[MAXROMSIZE]; /* ROM area */
|
||||||
|
@ -78,279 +78,279 @@ typedef struct
|
|||||||
static const rominfo_t game_list[] =
|
static const rominfo_t game_list[] =
|
||||||
{
|
{
|
||||||
/* program requiring Mega Drive VDP (Mode 5) */
|
/* program requiring Mega Drive VDP (Mode 5) */
|
||||||
{0x47FA618D, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_PBC, REGION_USA}, /* Charles MacDonald's Mode 5 Demo Program */
|
{0x47FA618D, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_USA}, /* Charles MacDonald's Mode 5 Demo Program */
|
||||||
|
|
||||||
/* game requiring SEGA mapper */
|
/* game requiring SEGA mapper */
|
||||||
{0xFF67359B, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* DataStorm (homebrew) */
|
{0xFF67359B, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* DataStorm (homebrew) */
|
||||||
|
|
||||||
/* games requiring 315-5124 VDP (Mark-III, Master System I) */
|
/* games requiring 315-5124 VDP (Mark-III, Master System I) */
|
||||||
{0x32759751, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) */
|
{0x32759751, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) */
|
||||||
{0xE8B82066, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) [Demo] */
|
{0xE8B82066, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Y's (J) [Demo] */
|
||||||
|
|
||||||
/* games requiring Sega 315-5235 mapper without bank shifting */
|
/* games requiring Sega 315-5235 mapper without bank shifting */
|
||||||
{0x23BAC434, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA_X, SYSTEM_GG, REGION_USA}, /* Shining Force Gaiden - Final Conflict (JP) [T-Eng] */
|
{0x23BAC434, 0, 0, 0, MAPPER_SEGA_X, SYSTEM_GG, REGION_USA}, /* Shining Force Gaiden - Final Conflict (JP) [T-Eng] */
|
||||||
|
|
||||||
/* games using "Korean" mappers */
|
/* games using "Korean" mappers */
|
||||||
{0x445525E2, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Penguin Adventure (KR) */
|
{0x445525E2, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Penguin Adventure (KR) */
|
||||||
{0x83F0EEDE, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Street Master (KR) */
|
{0x83F0EEDE, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Street Master (KR) */
|
||||||
{0xA05258F5, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Won-Si-In (KR) */
|
{0xA05258F5, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Won-Si-In (KR) */
|
||||||
{0x06965ED9, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* F-1 Spirit - The way to Formula-1 (KR) */
|
{0x06965ED9, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* F-1 Spirit - The way to Formula-1 (KR) */
|
||||||
{0x77EFE84A, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Cyborg Z (KR) */
|
{0x77EFE84A, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Cyborg Z (KR) */
|
||||||
{0xF89AF3CC, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Knightmare II - The Maze of Galious (KR) */
|
{0xF89AF3CC, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Knightmare II - The Maze of Galious (KR) */
|
||||||
{0x9195C34C, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Boy 3 (KR) */
|
{0x9195C34C, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Boy 3 (KR) */
|
||||||
{0xE316C06D, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX_NEMESIS, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis (KR) */
|
{0xE316C06D, 0, 0, 0, MAPPER_MSX_NEMESIS, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis (KR) */
|
||||||
{0x0A77FA5E, 0, 0, SYSTEM_GAMEPAD, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis 2 (KR) */
|
{0x0A77FA5E, 0, 0, 0, MAPPER_MSX, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nemesis 2 (KR) */
|
||||||
{0x89B79E77, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Dodgeball King (KR) */
|
{0x89B79E77, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Dodgeball King (KR) */
|
||||||
{0x929222C4, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung II (KR) */
|
{0x929222C4, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung II (KR) */
|
||||||
{0x18FB98A3, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung 3 (KR) */
|
{0x18FB98A3, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Jang Pung 3 (KR) */
|
||||||
{0x97D03541, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sangokushi 3 (KR) */
|
{0x97D03541, 0, 0, 0, MAPPER_KOREA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sangokushi 3 (KR) */
|
||||||
{0x192949D5, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA_8K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Janggun-ui Adeul (KR) */
|
{0x192949D5, 0, 0, 0, MAPPER_KOREA_8K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Janggun-ui Adeul (KR) */
|
||||||
{0x76C5BDFB, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Jang Pung II [SMS-GG] (KR) */
|
{0x76C5BDFB, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Jang Pung II [SMS-GG] (KR) */
|
||||||
{0x9FA727A0, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 0] [SMS-GG] (US) */
|
{0x9FA727A0, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 0] [SMS-GG] (US) */
|
||||||
{0xFB481971, 0, 0, SYSTEM_GAMEPAD, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 1] [SMS-GG] (US) */
|
{0xFB481971, 0, 0, 0, MAPPER_KOREA_16K, SYSTEM_GGMS, REGION_USA}, /* Street Hero [Proto 1] [SMS-GG] (US) */
|
||||||
{0xA67F2A5C, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_16K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* 4-Pak All Action (KR) */
|
{0xA67F2A5C, 0, 0, 0, MAPPER_MULTI_16K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* 4-Pak All Action (KR) */
|
||||||
{0x98AF0236, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 1) (KR) */
|
{0x98AF0236, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 1) (KR) */
|
||||||
{0x6EBFE1C3, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 2) (KR) */
|
{0x6EBFE1C3, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 2) (KR) */
|
||||||
{0x81A36A4F, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 3) (KR) */
|
{0x81A36A4F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 3) (KR) */
|
||||||
{0x8D2D695D, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 4) (KR) */
|
{0x8D2D695D, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 4) (KR) */
|
||||||
{0x82C09B57, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 5) (KR) */
|
{0x82C09B57, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 5) (KR) */
|
||||||
{0x4088EEB4, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 6) (KR) */
|
{0x4088EEB4, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 3-in-1 The Best Game Collection (Vol. 6) (KR) */
|
||||||
{0xFBA94148, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 1) (KR) */
|
{0xFBA94148, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 1) (KR) */
|
||||||
{0x8333C86E, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 2) (KR) */
|
{0x8333C86E, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 2) (KR) */
|
||||||
{0x00E9809F, 0, 0, SYSTEM_GAMEPAD, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 3) (KR) */
|
{0x00E9809F, 0, 0, 0, MAPPER_MULTI_32K, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hi-Com 8-in-1 The Best Game Collection (Vol. 3) (KR) */
|
||||||
|
|
||||||
/* games using Codemaster mapper */
|
/* games using Codemaster mapper */
|
||||||
{0x29822980, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Cosmic Spacehead */
|
{0x29822980, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Cosmic Spacehead */
|
||||||
{0x8813514B, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Excellent Dizzy Collection, The [Proto] */
|
{0x8813514B, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Excellent Dizzy Collection, The [Proto] */
|
||||||
{0xB9664AE1, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Fantastic Dizzy */
|
{0xB9664AE1, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Fantastic Dizzy */
|
||||||
{0xA577CE46, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Micro Machines */
|
{0xA577CE46, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_EUROPE}, /* Micro Machines */
|
||||||
{0xEA5C3A6F, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_SMS2, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [Proto] */
|
{0xEA5C3A6F, 0, 0, 0, MAPPER_CODIES, SYSTEM_SMS2, REGION_USA}, /* Dinobasher - Starring Bignose the Caveman [Proto] */
|
||||||
{0xAA140C9C, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Excellent Dizzy Collection, The [SMS-GG] */
|
{0xAA140C9C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Excellent Dizzy Collection, The [SMS-GG] */
|
||||||
{0xC888222B, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Fantastic Dizzy [SMS-GG] */
|
{0xC888222B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GGMS, REGION_USA}, /* Fantastic Dizzy [SMS-GG] */
|
||||||
{0x6CAA625B, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Cosmic Spacehead [GG]*/
|
{0x6CAA625B, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Cosmic Spacehead [GG]*/
|
||||||
{0x152F0DCC, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Drop Zone */
|
{0x152F0DCC, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Drop Zone */
|
||||||
{0x5E53C7F7, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Ernie Els Golf */
|
{0x5E53C7F7, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Ernie Els Golf */
|
||||||
{0xD9A7F170, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Man Overboard! */
|
{0xD9A7F170, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Man Overboard! */
|
||||||
{0xF7C524F6, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] */
|
{0xF7C524F6, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines [GG] */
|
||||||
{0xDBE8895C, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines 2 - Turbo Tournament */
|
{0xDBE8895C, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Micro Machines 2 - Turbo Tournament */
|
||||||
{0xC1756BEE, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Pete Sampras Tennis */
|
{0xC1756BEE, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* Pete Sampras Tennis */
|
||||||
{0x72981057, 0, 0, SYSTEM_GAMEPAD, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive */
|
{0x72981057, 0, 0, 0, MAPPER_CODIES, SYSTEM_GG, REGION_USA}, /* CJ Elephant Fugitive */
|
||||||
|
|
||||||
/* games using serial EEPROM */
|
/* games using serial EEPROM */
|
||||||
{0x36EBCD6D, 0, 0, SYSTEM_GAMEPAD, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* Majors Pro Baseball */
|
{0x36EBCD6D, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* Majors Pro Baseball */
|
||||||
{0x3D8D0DD6, 0, 0, SYSTEM_GAMEPAD, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v0] */
|
{0x3D8D0DD6, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v0] */
|
||||||
{0xBB38CFD7, 0, 0, SYSTEM_GAMEPAD, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v1] */
|
{0xBB38CFD7, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball [v1] */
|
||||||
{0x578A8A38, 0, 0, SYSTEM_GAMEPAD, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball '95 */
|
{0x578A8A38, 0, 0, 0, MAPPER_93C46, SYSTEM_GG, REGION_USA}, /* World Series Baseball '95 */
|
||||||
|
|
||||||
/* games using Terebi Oekaki graphic board */
|
/* games using Terebi Oekaki graphic board */
|
||||||
{0xDD4A661B, 0, 0, SYSTEM_GAMEPAD, MAPPER_TEREBI, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Terebi Oekaki */
|
{0xDD4A661B, 0, 0, 0, MAPPER_TEREBI, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Terebi Oekaki */
|
||||||
|
|
||||||
/* games using 2KB external RAM (volatile) */
|
/* games using 2KB external RAM (volatile) */
|
||||||
{0x092F29D6, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* The Castle (J) */
|
{0x092F29D6, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* The Castle (J) */
|
||||||
{0xAF4F14BC, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Othello (J) */
|
{0xAF4F14BC, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SG, REGION_JAPAN_NTSC}, /* Othello (J) */
|
||||||
{0x1D1A0CA3, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_2K, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello (TW) */
|
{0x1D1A0CA3, 0, 0, 0, MAPPER_RAM_2K, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello (TW) */
|
||||||
|
|
||||||
/* games requiring SG-1000 II 8K RAM extension adapter */
|
/* games requiring SG-1000 II 8K RAM extension adapter */
|
||||||
{0xCE5648C3, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special [DahJee] (TW) */
|
{0xCE5648C3, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special [DahJee] (TW) */
|
||||||
{0x223397A1, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* King's Valley (TW) */
|
{0x223397A1, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* King's Valley (TW) */
|
||||||
{0x281D2888, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Knightmare (TW) */
|
{0x281D2888, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Knightmare (TW) */
|
||||||
{0x306D5F78, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X [DahJee] (TW) */
|
{0x306D5F78, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X [DahJee] (TW) */
|
||||||
{0x29E047CC, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */
|
{0x29E047CC, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */
|
||||||
{0x5CBD1163, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Tank Battalion (TW) */
|
{0x5CBD1163, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Tank Battalion (TW) */
|
||||||
{0x2E7166D5, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Legend of Kage (TW) */
|
{0x2E7166D5, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Legend of Kage (TW) */
|
||||||
{0xC550B4F0, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* TwinBee (TW) */
|
{0xC550B4F0, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* TwinBee (TW) */
|
||||||
{0xFC87463C, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Yie Ar Kung-Fu II (TW) */
|
{0xFC87463C, 0, 0, 0, MAPPER_RAM_8K_EXT1, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Yie Ar Kung-Fu II (TW) */
|
||||||
{0x69FC1494, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special (TW) */
|
{0x69FC1494, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Bomberman Special (TW) */
|
||||||
{0xFFC4EE3F, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Magical Kid Wiz (TW) */
|
{0xFFC4EE3F, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Magical Kid Wiz (TW) */
|
||||||
{0x2E366CCF, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Castle (TW) */
|
{0x2E366CCF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* The Castle (TW) */
|
||||||
{0xAAAC12CF, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X (TW) */
|
{0xAAAC12CF, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Rally-X (TW) */
|
||||||
{0xD2EDD329, 0, 0, SYSTEM_GAMEPAD, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */
|
{0xD2EDD329, 0, 0, 0, MAPPER_RAM_8K_EXT2, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Road Fighter (TW) */
|
||||||
|
|
||||||
/* games requiring 2K internal RAM (SG-1000 II clone hardware) */
|
/* games requiring 2K internal RAM (SG-1000 II clone hardware) */
|
||||||
{0x7F7F009D, 0, 0, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Circus Charlie (KR) */
|
{0x7F7F009D, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Circus Charlie (KR) */
|
||||||
{0x77DB4704, 0, 0, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Q*Bert */
|
{0x77DB4704, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Q*Bert */
|
||||||
{0xC5A67B95, 0, 0, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello Multivision BIOS */
|
{0xC5A67B95, 0, 0, 0, MAPPER_NONE, SYSTEM_SGII, REGION_JAPAN_NTSC}, /* Othello Multivision BIOS */
|
||||||
|
|
||||||
/* games requiring Japanese region setting */
|
/* games requiring Japanese region setting */
|
||||||
{0x71DEBA5A, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GG, REGION_JAPAN_NTSC}, /* Pop Breaker */
|
{0x71DEBA5A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GG, REGION_JAPAN_NTSC}, /* Pop Breaker */
|
||||||
{0xC9DD4E5F, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop (Super Arkanoid) */
|
{0xC9DD4E5F, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop (Super Arkanoid) */
|
||||||
|
|
||||||
/* games requiring Japanese Master System I/O chip (315-5297) */
|
/* games requiring Japanese Master System I/O chip (315-5297) */
|
||||||
{0xBD1CC7DF, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Tetris (KR) */
|
{0xBD1CC7DF, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Tetris (KR) */
|
||||||
{0x6D309AC5, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Power Boggle Boggle (KR) */
|
{0x6D309AC5, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Power Boggle Boggle (KR) */
|
||||||
|
|
||||||
/* games requiring random RAM pattern initialization */
|
/* games requiring random RAM pattern initialization */
|
||||||
{0x08BF3DE3, 0, 0, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Alibaba and 40 Thieves (KR) */
|
{0x08BF3DE3, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Alibaba and 40 Thieves (KR) */
|
||||||
{0x643B6B76, 0, 0, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Block Hole (KR) */
|
{0x643B6B76, 0, 0, 0, MAPPER_NONE, SYSTEM_MARKIII, REGION_JAPAN_NTSC}, /* Block Hole (KR) */
|
||||||
|
|
||||||
/* games requiring PAL timings */
|
/* games requiring PAL timings */
|
||||||
{0x72420F38, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Addams Familly */
|
{0x72420F38, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Addams Familly */
|
||||||
{0x2D48C1D3, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Back to the Future Part III */
|
{0x2D48C1D3, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Back to the Future Part III */
|
||||||
{0x1CBB7BF1, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Battlemaniacs (BR) */
|
{0x1CBB7BF1, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Battlemaniacs (BR) */
|
||||||
{0x1B10A951, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Bram Stoker's Dracula */
|
{0x1B10A951, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Bram Stoker's Dracula */
|
||||||
{0xC0E25D62, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* California Games II */
|
{0xC0E25D62, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* California Games II */
|
||||||
{0x45C50294, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Jogos de Verao II (BR) */
|
{0x45C50294, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Jogos de Verao II (BR) */
|
||||||
{0xC9DBF936, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Home Alone */
|
{0xC9DBF936, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Home Alone */
|
||||||
{0x0047B615, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Predator2 */
|
{0x0047B615, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Predator2 */
|
||||||
{0xF42E145C, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Quest for the Shaven Yak Starring Ren Hoek & Stimpy (BR) */
|
{0xF42E145C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Quest for the Shaven Yak Starring Ren Hoek & Stimpy (BR) */
|
||||||
{0x9F951756, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* RoboCop 3 */
|
{0x9F951756, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* RoboCop 3 */
|
||||||
{0xF8176918, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sensible Soccer */
|
{0xF8176918, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sensible Soccer */
|
||||||
{0x1575581D, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Shadow of the Beast */
|
{0x1575581D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Shadow of the Beast */
|
||||||
{0x96B3F29E, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic Blast (BR) */
|
{0x96B3F29E, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic Blast (BR) */
|
||||||
{0x5B3B922C, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V0] */
|
{0x5B3B922C, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V0] */
|
||||||
{0xD6F2BFCA, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V1] */
|
{0xD6F2BFCA, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Sonic the Hedgehog 2 [V1] */
|
||||||
{0xCA1D3752, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Space Harrier [50 Hz] */
|
{0xCA1D3752, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Space Harrier [50 Hz] */
|
||||||
{0x85CFC9C9, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Taito Chase H.Q. */
|
{0x85CFC9C9, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* Taito Chase H.Q. */
|
||||||
{0x332A847D, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* NBA Jam [Proto] */
|
{0x332A847D, 0, 0, 0, MAPPER_SEGA, SYSTEM_SMS2, REGION_EUROPE}, /* NBA Jam [Proto] */
|
||||||
|
|
||||||
/* games running in Game Gear MS compatibility mode */
|
/* games running in Game Gear MS compatibility mode */
|
||||||
{0x59840FD6, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Castle of Illusion - Starring Mickey Mouse [SMS-GG] */
|
{0x59840FD6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Castle of Illusion - Starring Mickey Mouse [SMS-GG] */
|
||||||
{0x9C76FB3A, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Rastan Saga [SMS-GG] */
|
{0x9C76FB3A, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Rastan Saga [SMS-GG] */
|
||||||
{0xC8381DEF, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Taito Chase H.Q [SMS-GG] */
|
{0xC8381DEF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Taito Chase H.Q [SMS-GG] */
|
||||||
{0xDA8E95A9, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* WWF Wrestlemania Steel Cage Challenge [SMS-GG] */
|
{0xDA8E95A9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* WWF Wrestlemania Steel Cage Challenge [SMS-GG] */
|
||||||
{0x1D93246E, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [A][SMS-GG] */
|
{0x1D93246E, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [A][SMS-GG] */
|
||||||
{0xA2F9C7AF, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [B][SMS-GG] */
|
{0xA2F9C7AF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Olympic Gold [B][SMS-GG] */
|
||||||
{0x01EAB89D, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa [SMS-GG] */
|
{0x01EAB89D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa [SMS-GG] */
|
||||||
{0xF037EC00, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa (US) [SMS-GG] */
|
{0xF037EC00, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Out Run Europa (US) [SMS-GG] */
|
||||||
{0xE5F789B9, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Predator 2 [SMS-GG] */
|
{0xE5F789B9, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Predator 2 [SMS-GG] */
|
||||||
{0x311D2863, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [A][SMS-GG] */
|
{0x311D2863, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [A][SMS-GG] */
|
||||||
{0x45F058D6, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [B][SMS-GG] */
|
{0x45F058D6, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Prince of Persia [B][SMS-GG] */
|
||||||
{0x56201996, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* R.C. Grand Prix [SMS-GG] */
|
{0x56201996, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* R.C. Grand Prix [SMS-GG] */
|
||||||
{0x10DBBEF4, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Super Kick Off [SMS-GG] */
|
{0x10DBBEF4, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_USA}, /* Super Kick Off [SMS-GG] */
|
||||||
{0x9942B69B, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Castle of Illusion - Starring Mickey Mouse (J) [SMS-GG] */
|
{0x9942B69B, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Castle of Illusion - Starring Mickey Mouse (J) [SMS-GG] */
|
||||||
{0x7BB81E3D, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Taito Chase H.Q (J) [SMS-GG] */
|
{0x7BB81E3D, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Taito Chase H.Q (J) [SMS-GG] */
|
||||||
{0x6F8E46CF, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Alex Kidd in Miracle World (TW) [SMS-GG] */
|
{0x6F8E46CF, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Alex Kidd in Miracle World (TW) [SMS-GG] */
|
||||||
{0x3382D73F, 0, 0, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Olympic Gold (TW) [SMS-GG] */
|
{0x3382D73F, 0, 0, 0, MAPPER_SEGA, SYSTEM_GGMS, REGION_JAPAN_NTSC}, /* Olympic Gold (TW) [SMS-GG] */
|
||||||
|
|
||||||
/* games requiring 3-D Glasses */
|
/* games requiring 3-D Glasses */
|
||||||
{0x6BD5C2BF, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Space Harrier 3-D */
|
{0x6BD5C2BF, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Space Harrier 3-D */
|
||||||
{0x8ECD201C, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Blade Eagle 3-D */
|
{0x8ECD201C, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D */
|
||||||
{0xFBF96C81, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Blade Eagle 3-D (BR) */
|
{0xFBF96C81, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D (BR) */
|
||||||
{0x58D5FC48, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Blade Eagle 3-D [Proto] */
|
{0x58D5FC48, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Blade Eagle 3-D [Proto] */
|
||||||
{0x31B8040B, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Maze Hunter 3-D */
|
{0x31B8040B, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Maze Hunter 3-D */
|
||||||
{0xABD48AD2, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Poseidon Wars 3-D */
|
{0xABD48AD2, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Poseidon Wars 3-D */
|
||||||
{0xA3EF13CB, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Zaxxon 3-D */
|
{0xA3EF13CB, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D */
|
||||||
{0xBBA74147, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Zaxxon 3-D [Proto] */
|
{0xBBA74147, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zaxxon 3-D [Proto] */
|
||||||
{0xD6F43DDA, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Out Run 3-D */
|
{0xD6F43DDA, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run 3-D */
|
||||||
{0x871562b0, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maze Walker */
|
{0x871562b0, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maze Walker */
|
||||||
{0x156948f9, 1, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Space Harrier 3-D (J) */
|
{0x156948f9, 1, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Space Harrier 3-D (J) */
|
||||||
|
|
||||||
/* games requiring 3-D Glasses & Sega Light Phaser */
|
/* games requiring 3-D Glasses & Sega Light Phaser */
|
||||||
{0xFBE5CFBB, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Missile Defense 3D */
|
{0xFBE5CFBB, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D */
|
||||||
{0xE79BB689, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Missile Defense 3D [BIOS] */
|
{0xE79BB689, 1, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Missile Defense 3D [BIOS] */
|
||||||
|
|
||||||
/* games requiring Sega Light Phaser */
|
/* games requiring Sega Light Phaser */
|
||||||
{0x861B6E79, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Assault City [Light Phaser] */
|
{0x861B6E79, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Assault City [Light Phaser] */
|
||||||
{0x5FC74D2A, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Gangster Town */
|
{0x5FC74D2A, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Gangster Town */
|
||||||
{0xE167A561, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Hang-On / Safari Hunt */
|
{0xE167A561, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt */
|
||||||
{0x91E93385, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Hang-On / Safari Hunt [BIOS] */
|
{0x91E93385, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Hang-On / Safari Hunt [BIOS] */
|
||||||
{0xE8EA842C, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Marksman Shooting / Trap Shooting */
|
{0xE8EA842C, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting */
|
||||||
{0xE8215C2E, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Marksman Shooting / Trap Shooting / Safari Hunt */
|
{0xE8215C2E, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Marksman Shooting / Trap Shooting / Safari Hunt */
|
||||||
{0x205CAAE8, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Operation Wolf */
|
{0x205CAAE8, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf */
|
||||||
{0x23283F37, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Operation Wolf [A] */
|
{0x23283F37, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Operation Wolf [A] */
|
||||||
{0xDA5A7013, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Rambo 3 */
|
{0xDA5A7013, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rambo 3 */
|
||||||
{0x79AC8E7F, 0, 1, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Rescue Mission */
|
{0x79AC8E7F, 0, 1, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rescue Mission */
|
||||||
{0x4B051022, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Shooting Gallery */
|
{0x4B051022, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shooting Gallery */
|
||||||
{0xA908CFF5, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Spacegun */
|
{0xA908CFF5, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Spacegun */
|
||||||
{0x5359762D, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Wanted */
|
{0x5359762D, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wanted */
|
||||||
{0x0CA95637, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Laser Ghost */
|
{0x0CA95637, 0, 0, SYSTEM_LIGHTPHASER, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Laser Ghost */
|
||||||
|
|
||||||
/* games requiring Sega Paddle */
|
/* games requiring Sega Paddle */
|
||||||
{0xF9DBB533, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alex Kidd BMX Trial */
|
{0xF9DBB533, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alex Kidd BMX Trial */
|
||||||
{0xA6FA42D0, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Galactic Protector */
|
{0xA6FA42D0, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Galactic Protector */
|
||||||
{0x29BC7FAD, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Megumi Rescue */
|
{0x29BC7FAD, 0, 1, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Megumi Rescue */
|
||||||
{0x315917D4, 0, 0, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop */
|
{0x315917D4, 0, 0, SYSTEM_PADDLE, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Woody Pop */
|
||||||
|
|
||||||
/* games requiring Sega Sport Pad */
|
/* games requiring Sega Sport Pad */
|
||||||
{0x41C948BF, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sports Pad Soccer */
|
{0x41C948BF, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Sports Pad Soccer */
|
||||||
{0x0CB7E21F, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Great Ice Hockey */
|
{0x0CB7E21F, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Ice Hockey */
|
||||||
{0xE42E4998, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Sports Pad Football */
|
{0xE42E4998, 0, 0, SYSTEM_SPORTSPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Sports Pad Football */
|
||||||
|
|
||||||
/* games requiring Furrtek's Master Tap */
|
/* games requiring Furrtek's Master Tap */
|
||||||
{0xFAB6F52F, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.0) */
|
{0xFAB6F52F, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.0) */
|
||||||
{0x143AB50B, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.1) */
|
{0x143AB50B, 0, 0, SYSTEM_MASTERTAP, MAPPER_NONE, SYSTEM_SMS2, REGION_USA}, /* BOom (v1.1) */
|
||||||
|
|
||||||
/* games requiring Sega Graphic Board */
|
/* games requiring Sega Graphic Board */
|
||||||
{0x276AA542, 0, 0, SYSTEM_GRAPHIC_BOARD, MAPPER_NONE, SYSTEM_SMS, REGION_USA}, /* Sega Graphic Board v2.0 Software (Prototype) */
|
{0x276AA542, 0, 0, SYSTEM_GRAPHIC_BOARD, MAPPER_NONE, SYSTEM_SMS, REGION_USA}, /* Sega Graphic Board v2.0 Software (Prototype) */
|
||||||
|
|
||||||
/* games supporting YM2413 FM */
|
/* games supporting YM2413 FM */
|
||||||
{0x1C951F8E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* After Burner */
|
{0x1C951F8E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* After Burner */
|
||||||
{0xC13896D5, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Alex Kidd: The Lost Stars */
|
{0xC13896D5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alex Kidd: The Lost Stars */
|
||||||
{0x5CBFE997, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Alien Syndrome */
|
{0x5CBFE997, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Alien Syndrome */
|
||||||
{0xBBA2FE98, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Altered Beast */
|
{0xBBA2FE98, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Altered Beast */
|
||||||
{0xFF614EB3, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Aztec Adventure */
|
{0xFF614EB3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Aztec Adventure */
|
||||||
{0x3084CF11, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Bomber Raid */
|
{0x3084CF11, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Bomber Raid */
|
||||||
{0xAC6009A7, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* California Games */
|
{0xAC6009A7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* California Games */
|
||||||
{0xA4852757, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Captain Silver */
|
{0xA4852757, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver */
|
||||||
{0xB81F6FA5, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Captain Silver (U) */
|
{0xB81F6FA5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Captain Silver (U) */
|
||||||
{0x3CFF6E80, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Casino Games */
|
{0x3CFF6E80, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Casino Games */
|
||||||
{0xE7F62E6D, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Cloud Master */
|
{0xE7F62E6D, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cloud Master */
|
||||||
{0x908E7524, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Cyborg Hunter */
|
{0x908E7524, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Cyborg Hunter */
|
||||||
{0xA55D89F3, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Double Dragon */
|
{0xA55D89F3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Double Dragon */
|
||||||
{0xB8B141F9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Fantasy Zone II */
|
{0xB8B141F9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone II */
|
||||||
{0xD29889AD, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Fantasy Zone: The Maze */
|
{0xD29889AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Fantasy Zone: The Maze */
|
||||||
{0xA4AC35D8, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Galaxy Force */
|
{0xA4AC35D8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force */
|
||||||
{0x6C827520, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Galaxy Force (U) */
|
{0x6C827520, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Galaxy Force (U) */
|
||||||
{0x1890F407, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Game Box Série Esportes Radicais (BR) */
|
{0x1890F407, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Game Box Série Esportes Radicais (BR) */
|
||||||
{0xB746A6F5, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Global Defense */
|
{0xB746A6F5, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense */
|
||||||
{0x91A0FC4E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Global Defense [Proto] */
|
{0x91A0FC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Global Defense [Proto] */
|
||||||
{0x48651325, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Golfamania */
|
{0x48651325, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania */
|
||||||
{0x5DABFDC3, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Golfamania [Proto] */
|
{0x5DABFDC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golfamania [Proto] */
|
||||||
{0xA51376FE, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Golvellius - Valley of Doom */
|
{0xA51376FE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Golvellius - Valley of Doom */
|
||||||
{0x98E4AE4A, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Great Golf */
|
{0x98E4AE4A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Great Golf */
|
||||||
{0x516ED32E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Kenseiden */
|
{0x516ED32E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Kenseiden */
|
||||||
{0xE8511B08, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Lord of The Sword */
|
{0xE8511B08, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Lord of The Sword */
|
||||||
{0x0E333B6E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord */
|
{0x0E333B6E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord */
|
||||||
{0x301A59AA, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord [Proto] */
|
{0x301A59AA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Miracle Warriors - Seal of The Dark Lord [Proto] */
|
||||||
{0x01D67C0B, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Mônica no Castelo do Dragão (BR) */
|
{0x01D67C0B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Mônica no Castelo do Dragão (BR) */
|
||||||
{0x5589D8D2, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Out Run */
|
{0x5589D8D2, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Out Run */
|
||||||
{0xE030E66C, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Parlour Games */
|
{0xE030E66C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Parlour Games */
|
||||||
{0xF97E9875, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Penguin Land */
|
{0xF97E9875, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Penguin Land */
|
||||||
{0x4077EFD9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Power Strike */
|
{0x4077EFD9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Power Strike */
|
||||||
{0xBB54B6B0, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* R-Type */
|
{0xBB54B6B0, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* R-Type */
|
||||||
{0x42FC47EE, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Rampage */
|
{0x42FC47EE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rampage */
|
||||||
{0xC547EB1B, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Rastan */
|
{0xC547EB1B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Rastan */
|
||||||
{0x9A8B28EC, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Scramble Spirits */
|
{0x9A8B28EC, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Scramble Spirits */
|
||||||
{0xAAB67EC3, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Shanghai */
|
{0xAAB67EC3, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shanghai */
|
||||||
{0x0C6FAC4E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Shinobi */
|
{0x0C6FAC4E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Shinobi */
|
||||||
{0x4752CAE7, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* SpellCaster */
|
{0x4752CAE7, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* SpellCaster */
|
||||||
{0x1A390B93, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Tennis Ace */
|
{0x1A390B93, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Tennis Ace */
|
||||||
{0xAE920E4B, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Thunder Blade */
|
{0xAE920E4B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Thunder Blade */
|
||||||
{0x51BD14BE, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Time Soldiers */
|
{0x51BD14BE, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Time Soldiers */
|
||||||
{0x22CCA9BB, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Turma da Mônica em: O Resgate (BR) */
|
{0x22CCA9BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Turma da Mônica em: O Resgate (BR) */
|
||||||
{0xB52D60C8, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Ultima IV */
|
{0xB52D60C8, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV */
|
||||||
{0xDE9F8517, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Ultima IV [Proto] */
|
{0xDE9F8517, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Ultima IV [Proto] */
|
||||||
{0xDFB0B161, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Vigilante */
|
{0xDFB0B161, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Vigilante */
|
||||||
{0x679E1676, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Wonder Boy III: The Dragon's Trap */
|
{0x679E1676, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy III: The Dragon's Trap */
|
||||||
{0x8CBEF0C1, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Wonder Boy in Monster Land */
|
{0x8CBEF0C1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Wonder Boy in Monster Land */
|
||||||
{0x2F2E3BC9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS2, REGION_USA}, /* Zillion II - The Tri Formation */
|
{0x2F2E3BC9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_USA}, /* Zillion II - The Tri Formation */
|
||||||
{0x48D44A13, 0, 1, SYSTEM_GAMEPAD, MAPPER_NONE, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* BIOS (J) */
|
{0x48D44A13, 0, 1, 0, MAPPER_NONE, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* BIOS (J) */
|
||||||
{0xD8C4165B, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Aleste */
|
{0xD8C4165B, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Aleste */
|
||||||
{0x4CC11DF9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alien Syndrome (J) */
|
{0x4CC11DF9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Alien Syndrome (J) */
|
||||||
{0xE421E466, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Chouon Senshi Borgman */
|
{0xE421E466, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Chouon Senshi Borgman */
|
||||||
{0x2BCDB8FA, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken */
|
{0x2BCDB8FA, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken */
|
||||||
{0x56BD2455, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken [Proto] */
|
{0x56BD2455, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Doki Doki Penguin Land - Uchuu-Daibouken [Proto] */
|
||||||
{0xC722FB42, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Fantasy Zone II (J) */
|
{0xC722FB42, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Fantasy Zone II (J) */
|
||||||
{0x7ABC70E9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Family Games (Party Games) */
|
{0x7ABC70E9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Family Games (Party Games) */
|
||||||
{0x6586BD1F, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf */
|
{0x6586BD1F, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf */
|
||||||
{0x4847BC91, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf [Proto] */
|
{0x4847BC91, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Masters Golf [Proto] */
|
||||||
{0xB9FDF6D9, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Haja no Fuuin */
|
{0xB9FDF6D9, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Haja no Fuuin */
|
||||||
{0x955A009E, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hoshi wo Sagashite */
|
{0x955A009E, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Hoshi wo Sagashite */
|
||||||
{0x05EA5353, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kenseiden (J) */
|
{0x05EA5353, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kenseiden (J) */
|
||||||
{0xD11D32E4, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kujakuou */
|
{0xD11D32E4, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Kujakuou */
|
||||||
{0xAA7D6F45, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Lord of Sword */
|
{0xAA7D6F45, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Lord of Sword */
|
||||||
{0xBF0411AD, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius */
|
{0xBF0411AD, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius */
|
||||||
{0x21A21352, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius [Proto] */
|
{0x21A21352, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Maou Golvellius [Proto] */
|
||||||
{0x5B5F9106, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nekyuu Kousien */
|
{0x5B5F9106, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Nekyuu Kousien */
|
||||||
{0xBEA27D5C, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Opa Opa */
|
{0xBEA27D5C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Opa Opa */
|
||||||
{0x6605D36A, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) */
|
{0x6605D36A, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Phantasy Star (J) */
|
||||||
{0xE1FFF1BB, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Shinobi (J) */
|
{0xE1FFF1BB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Shinobi (J) */
|
||||||
{0x11645549, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Solomon no Kagi - Oujo Rihita no Namida */
|
{0x11645549, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Solomon no Kagi - Oujo Rihita no Namida */
|
||||||
{0x7E0EF8CB, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Racing */
|
{0x7E0EF8CB, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Racing */
|
||||||
{0xB1DA6A30, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Wonder Boy Monster World */
|
{0xB1DA6A30, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Super Wonder Boy Monster World */
|
||||||
{0x8132AB2C, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Tensai Bakabon */
|
{0x8132AB2C, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Tensai Bakabon */
|
||||||
{0xC0CE19B1, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Thunder Blade (J) */
|
{0xC0CE19B1, 0, 1, 0, MAPPER_SEGA, SYSTEM_SMS, REGION_JAPAN_NTSC}, /* Thunder Blade (J) */
|
||||||
{0x07301F83, 0, 1, SYSTEM_GAMEPAD, MAPPER_SEGA, SYSTEM_PBC, REGION_JAPAN_NTSC} /* Phantasy Star [Megadrive] (J) */
|
{0x07301F83, 0, 1, 0, MAPPER_SEGA, SYSTEM_PBC, REGION_JAPAN_NTSC} /* Phantasy Star [Megadrive] (J) */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Cartridge & BIOS ROM hardware */
|
/* Cartridge & BIOS ROM hardware */
|
||||||
@ -426,18 +426,17 @@ void sms_cart_init(void)
|
|||||||
/* auto-detect cartridge mapper */
|
/* auto-detect cartridge mapper */
|
||||||
cart_rom.mapper = game_list[i].mapper;
|
cart_rom.mapper = game_list[i].mapper;
|
||||||
|
|
||||||
/* save current input settings */
|
|
||||||
if (old_system[0] == -1)
|
|
||||||
{
|
|
||||||
old_system[0] = input.system[0];
|
|
||||||
}
|
|
||||||
if (old_system[1] == -1)
|
|
||||||
{
|
|
||||||
old_system[1] = input.system[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* auto-detect required peripherals */
|
/* auto-detect required peripherals */
|
||||||
input.system[0] = game_list[i].peripheral;
|
if (game_list[i].peripheral)
|
||||||
|
{
|
||||||
|
/* save current input settings */
|
||||||
|
if (old_system[0] == -1)
|
||||||
|
{
|
||||||
|
old_system[0] = input.system[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
input.system[0] = game_list[i].peripheral;
|
||||||
|
}
|
||||||
|
|
||||||
/* auto-detect 3D glasses support */
|
/* auto-detect 3D glasses support */
|
||||||
cart.special = game_list[i].g_3d;
|
cart.special = game_list[i].g_3d;
|
||||||
|
@ -12,12 +12,69 @@
|
|||||||
|
|
||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
|
|
||||||
svp_t *svp = NULL;
|
svp_t *svp;
|
||||||
|
|
||||||
|
static void svp_write_dram(uint32 address, uint32 data)
|
||||||
|
{
|
||||||
|
*(uint16 *)(svp->dram + (address & 0x1fffe)) = data;
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
if (address == 0x30fe06) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE06;
|
||||||
|
else if (address == 0x30fe08) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE08;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32 svp_read_cell_1(uint32 address)
|
||||||
|
{
|
||||||
|
address = (address & 0xe002) | ((address & 0x7c) << 6) | ((address & 0x1f80) >> 5);
|
||||||
|
return *(uint16 *)(svp->dram + address);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32 svp_read_cell_2(uint32 address)
|
||||||
|
{
|
||||||
|
address = (address & 0xf002) | ((address & 0x3c) << 6) | ((address & 0xfc0) >> 4);
|
||||||
|
return *(uint16 *)(svp->dram + address);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32 svp_read_cell_byte(uint32 address)
|
||||||
|
{
|
||||||
|
uint16 data = m68k.memory_map[address >> 16].read16(address);
|
||||||
|
|
||||||
|
if (address & 0x01)
|
||||||
|
{
|
||||||
|
return (data & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (data >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
void svp_init(void)
|
void svp_init(void)
|
||||||
{
|
{
|
||||||
svp = (void *) ((char *)cart.rom + 0x200000);
|
svp = (void *) ((char *)cart.rom + 0x200000);
|
||||||
memset(svp, 0, sizeof(*svp));
|
memset(svp, 0, sizeof(*svp));
|
||||||
|
|
||||||
|
m68k.memory_map[0x30].base = svp->dram;
|
||||||
|
m68k.memory_map[0x30].read8 = NULL;
|
||||||
|
m68k.memory_map[0x30].read16 = NULL;
|
||||||
|
m68k.memory_map[0x30].write8 = NULL;
|
||||||
|
m68k.memory_map[0x30].write16 = svp_write_dram;
|
||||||
|
zbank_memory_map[0x30].read = NULL;
|
||||||
|
zbank_memory_map[0x30].write = NULL;
|
||||||
|
|
||||||
|
m68k.memory_map[0x31].base = svp->dram + 0x10000;
|
||||||
|
m68k.memory_map[0x31].read8 = NULL;
|
||||||
|
m68k.memory_map[0x31].read16 = NULL;
|
||||||
|
m68k.memory_map[0x31].write8 = NULL;
|
||||||
|
m68k.memory_map[0x31].write16 = NULL;
|
||||||
|
zbank_memory_map[0x31].read = NULL;
|
||||||
|
zbank_memory_map[0x31].write = NULL;
|
||||||
|
|
||||||
|
m68k.memory_map[0x39].read8 = svp_read_cell_byte;
|
||||||
|
m68k.memory_map[0x39].read16 = svp_read_cell_1;
|
||||||
|
zbank_memory_map[0x39].read = svp_read_cell_byte;
|
||||||
|
m68k.memory_map[0x3a].read8 = svp_read_cell_byte;
|
||||||
|
m68k.memory_map[0x3a].read16 = svp_read_cell_2;
|
||||||
|
zbank_memory_map[0x3a].read = svp_read_cell_byte;
|
||||||
}
|
}
|
||||||
|
|
||||||
void svp_reset(void)
|
void svp_reset(void)
|
||||||
@ -26,24 +83,3 @@ void svp_reset(void)
|
|||||||
ssp1601_reset(&svp->ssp1601);
|
ssp1601_reset(&svp->ssp1601);
|
||||||
}
|
}
|
||||||
|
|
||||||
void svp_write_dram(uint32 address, uint32 data)
|
|
||||||
{
|
|
||||||
*(uint16 *)(svp->dram + (address & 0x1fffe)) = data;
|
|
||||||
if ((address == 0x30fe06) && data) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE06;
|
|
||||||
if ((address == 0x30fe08) && data) svp->ssp1601.emu_status &= ~SSP_WAIT_30FE08;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 svp_read_cell_1(uint32 address)
|
|
||||||
{
|
|
||||||
address >>= 1;
|
|
||||||
address = (address & 0x7001) | ((address & 0x3e) << 6) | ((address & 0xfc0) >> 5);
|
|
||||||
return *(uint16 *)(svp->dram + (address & 0x1fffe));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 svp_read_cell_2(uint32 address)
|
|
||||||
{
|
|
||||||
address >>= 1;
|
|
||||||
address = (address & 0x7801) | ((address & 0x1e) << 6) | ((address & 0x7e0) >> 4);
|
|
||||||
return *(uint16 *)(svp->dram + (address & 0x1fffe));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -26,8 +26,5 @@ extern svp_t *svp;
|
|||||||
|
|
||||||
extern void svp_init(void);
|
extern void svp_init(void);
|
||||||
extern void svp_reset(void);
|
extern void svp_reset(void);
|
||||||
extern void svp_write_dram(uint32 address, uint32 data);
|
|
||||||
extern uint32 svp_read_cell_1(uint32 address);
|
|
||||||
extern uint32 svp_read_cell_2(uint32 address);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1444,8 +1444,8 @@ void cdd_process(void)
|
|||||||
/* unless RS1 indicated invalid track infos */
|
/* unless RS1 indicated invalid track infos */
|
||||||
if (scd.regs[0x38>>1].byte.l == 0x0f)
|
if (scd.regs[0x38>>1].byte.l == 0x0f)
|
||||||
{
|
{
|
||||||
/* and SEEK has ended */
|
/* and drive is now ready */
|
||||||
if (cdd.status != CD_SEEK)
|
if (!cdd.latency)
|
||||||
{
|
{
|
||||||
/* then return valid track infos, e.g current track number in RS2-RS3 (fixes Lunar - The Silver Star) */
|
/* then return valid track infos, e.g current track number in RS2-RS3 (fixes Lunar - The Silver Star) */
|
||||||
scd.regs[0x38>>1].byte.l = 0x02;
|
scd.regs[0x38>>1].byte.l = 0x02;
|
||||||
@ -1568,7 +1568,7 @@ void cdd_process(void)
|
|||||||
/* CD drive latency */
|
/* CD drive latency */
|
||||||
if (!cdd.latency)
|
if (!cdd.latency)
|
||||||
{
|
{
|
||||||
/* Fixes a few games hanging during intro because they expect data to be read with some delay */
|
/* Fixes a few games hanging because they expect data to be read with some delay */
|
||||||
/* Radical Rex needs at least one interrupt delay */
|
/* Radical Rex needs at least one interrupt delay */
|
||||||
/* Wolf Team games (Anet Futatabi, Cobra Command, Earnest Evans, Road Avenger & Time Gal) need at least 10 interrupts delay */
|
/* Wolf Team games (Anet Futatabi, Cobra Command, Earnest Evans, Road Avenger & Time Gal) need at least 10 interrupts delay */
|
||||||
/* Space Adventure Cobra (2nd morgue scene) needs at least 13 interrupts delay (incl. seek time, so 10 is OK) */
|
/* Space Adventure Cobra (2nd morgue scene) needs at least 13 interrupts delay (incl. seek time, so 10 is OK) */
|
||||||
@ -1655,13 +1655,13 @@ void cdd_process(void)
|
|||||||
/* update status */
|
/* update status */
|
||||||
cdd.status = CD_PLAY;
|
cdd.status = CD_PLAY;
|
||||||
|
|
||||||
/* return track index in RS2-RS3 */
|
/* RS1=0xf to invalidate track infos in RS2-RS8 until drive is ready (fixes Snatcher Act 2 start cutscene) */
|
||||||
scd.regs[0x38>>1].w = (CD_PLAY << 8) | 0x02;
|
scd.regs[0x38>>1].w = (CD_PLAY << 8) | 0x0f;
|
||||||
scd.regs[0x3a>>1].w = (cdd.index < cdd.toc.last) ? lut_BCD_16[index + 1] : 0x0A0A;
|
scd.regs[0x3a>>1].w = 0x0000;
|
||||||
scd.regs[0x3c>>1].w = 0x0000;
|
scd.regs[0x3c>>1].w = 0x0000;
|
||||||
scd.regs[0x3e>>1].w = 0x0000;
|
scd.regs[0x3e>>1].w = 0x0000;
|
||||||
scd.regs[0x40>>1].byte.h = 0x00;
|
scd.regs[0x40>>1].w = ~(CD_PLAY + 0xf) & 0x0f;
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x04: /* Seek */
|
case 0x04: /* Seek */
|
||||||
@ -1753,7 +1753,7 @@ void cdd_process(void)
|
|||||||
/* update status */
|
/* update status */
|
||||||
cdd.status = CD_SEEK;
|
cdd.status = CD_SEEK;
|
||||||
|
|
||||||
/* unknown RS1-RS8 values (returning 0xF in RS1 invalidates track infos in RS2-RS8 and fixes Final Fight CD intro when seek time is emulated) */
|
/* RS1=0xf to invalidate track infos in RS2-RS8 while seeking (fixes Final Fight CD intro when seek time is emulated) */
|
||||||
scd.regs[0x38>>1].w = (CD_SEEK << 8) | 0x0f;
|
scd.regs[0x38>>1].w = (CD_SEEK << 8) | 0x0f;
|
||||||
scd.regs[0x3a>>1].w = 0x0000;
|
scd.regs[0x3a>>1].w = 0x0000;
|
||||||
scd.regs[0x3c>>1].w = 0x0000;
|
scd.regs[0x3c>>1].w = 0x0000;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Genesis Plus
|
* Genesis Plus
|
||||||
* Mega CD / Sega CD hardware
|
* Mega CD / Sega CD hardware
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2012-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -1506,6 +1506,9 @@ void scd_init(void)
|
|||||||
cdc_init();
|
cdc_init();
|
||||||
gfx_init();
|
gfx_init();
|
||||||
|
|
||||||
|
/* Initialize CD hardware master clock count per scanline */
|
||||||
|
scd.cycles_per_line = (uint32) (MCYCLES_PER_LINE * ((float)SCD_CLOCK / (float)system_clock));
|
||||||
|
|
||||||
/* Clear RAM */
|
/* Clear RAM */
|
||||||
memset(scd.prg_ram, 0x00, sizeof(scd.prg_ram));
|
memset(scd.prg_ram, 0x00, sizeof(scd.prg_ram));
|
||||||
memset(scd.word_ram, 0x00, sizeof(scd.word_ram));
|
memset(scd.word_ram, 0x00, sizeof(scd.word_ram));
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Genesis Plus
|
* Genesis Plus
|
||||||
* Mega CD / Sega CD hardware
|
* Mega CD / Sega CD hardware
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2012-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -50,12 +50,12 @@
|
|||||||
#define scd ext.cd_hw
|
#define scd ext.cd_hw
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* 5000000 SCD clocks/s = ~3184 clocks/line with a Master Clock of 53.693175 MHz */
|
/* CD hardware Master Clock (50 MHz) */
|
||||||
/* This would be slightly (~30 clocks) more on PAL systems because of the slower */
|
|
||||||
/* Master Clock (53.203424 MHz) but not enough to really care about since clocks */
|
|
||||||
/* are not running in sync anyway. */
|
|
||||||
#define SCD_CLOCK 50000000
|
#define SCD_CLOCK 50000000
|
||||||
#define SCYCLES_PER_LINE 3184
|
|
||||||
|
/* ~3184 SCD clocks/line on NTSC system (53.693175 MHz Master Clock) */
|
||||||
|
/* ~3214 SCD clocks/line on PAL system (53.203424 MHz Master Clock) */
|
||||||
|
#define SCYCLES_PER_LINE scd.cycles_per_line
|
||||||
|
|
||||||
/* Timer & Stopwatch clocks divider */
|
/* Timer & Stopwatch clocks divider */
|
||||||
#define TIMERS_SCYCLES_RATIO (384 * 4)
|
#define TIMERS_SCYCLES_RATIO (384 * 4)
|
||||||
@ -70,7 +70,8 @@ typedef struct
|
|||||||
uint8 word_ram_2M[0x40000]; /* 256K Word RAM (2M mode) */
|
uint8 word_ram_2M[0x40000]; /* 256K Word RAM (2M mode) */
|
||||||
uint8 bram[0x2000]; /* 8K Backup RAM */
|
uint8 bram[0x2000]; /* 8K Backup RAM */
|
||||||
reg16_t regs[0x100]; /* 256 x 16-bit ASIC registers */
|
reg16_t regs[0x100]; /* 256 x 16-bit ASIC registers */
|
||||||
uint32 cycles; /* Master clock counter */
|
uint32 cycles; /* CD Master clock counter */
|
||||||
|
uint32 cycles_per_line; /* CD Master clock count per scanline */
|
||||||
int32 stopwatch; /* Stopwatch counter */
|
int32 stopwatch; /* Stopwatch counter */
|
||||||
int32 timer; /* Timer counter */
|
int32 timer; /* Timer counter */
|
||||||
uint8 pending; /* Pending interrupts */
|
uint8 pending; /* Pending interrupts */
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
*
|
*
|
||||||
* Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips
|
* Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -437,13 +437,6 @@ void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles)
|
|||||||
/* Send TR/TH state to connected peripherals */
|
/* Send TR/TH state to connected peripherals */
|
||||||
port[0].data_w((data << 1) & 0x60, (~data << 5) & 0x60);
|
port[0].data_w((data << 1) & 0x60, (~data << 5) & 0x60);
|
||||||
port[1].data_w((data >> 1) & 0x60, (~data << 3) & 0x60);
|
port[1].data_w((data >> 1) & 0x60, (~data << 3) & 0x60);
|
||||||
|
|
||||||
/* Japanese model specific */
|
|
||||||
if (region_code == REGION_JAPAN_NTSC)
|
|
||||||
{
|
|
||||||
/* Reading TH & TR pins always return 0 when set as output */
|
|
||||||
data &= 0x0F;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for TH low-to-high transitions on both ports */
|
/* Check for TH low-to-high transitions on both ports */
|
||||||
if ((!(io_reg[0x0F] & 0x80) && (data & 0x80)) ||
|
if ((!(io_reg[0x0F] & 0x80) && (data & 0x80)) ||
|
||||||
@ -453,6 +446,13 @@ void io_z80_write(unsigned int offset, unsigned int data, unsigned int cycles)
|
|||||||
hvc_latch = hctab[cycles % MCYCLES_PER_LINE] | 0x10000;
|
hvc_latch = hctab[cycles % MCYCLES_PER_LINE] | 0x10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Japanese model specific */
|
||||||
|
if (region_code == REGION_JAPAN_NTSC)
|
||||||
|
{
|
||||||
|
/* Reading TH & TR pins always return 0 when set as output */
|
||||||
|
data &= 0x0F;
|
||||||
|
}
|
||||||
|
|
||||||
/* Update I/O Control register */
|
/* Update I/O Control register */
|
||||||
io_reg[0x0F] = data;
|
io_reg[0x0F] = data;
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
*
|
*
|
||||||
* Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips
|
* Support for Master System (315-5216, 315-5237 & 315-5297), Game Gear & Mega Drive I/O chips
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2014 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* ROM Loading Support
|
* ROM Loading Support
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -1107,7 +1107,6 @@ void get_region(char *romheader)
|
|||||||
else if (config.master_clock == 2) system_clock = MCLOCK_PAL;
|
else if (config.master_clock == 2) system_clock = MCLOCK_PAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* get_company (Softdev - 2006)
|
* get_company (Softdev - 2006)
|
||||||
*
|
*
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* ROM Loading Support
|
* ROM Loading Support
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
* Genesis Plus
|
* Genesis Plus
|
||||||
* Main 68k bus handlers
|
* Main 68k bus handlers
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -420,6 +420,19 @@ unsigned int ctrl_io_read_byte(unsigned int address)
|
|||||||
case 0x44: /* RADICA */
|
case 0x44: /* RADICA */
|
||||||
case 0x50: /* SVP */
|
case 0x50: /* SVP */
|
||||||
{
|
{
|
||||||
|
if ((address & 0xFC) == 0x00)
|
||||||
|
{
|
||||||
|
unsigned int data = svp->ssp1601.gr[SSP_XST].byte.h;
|
||||||
|
return (address & 1) ? (data & 0xFF) : (data >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((address & 0xFE) == 0x04)
|
||||||
|
{
|
||||||
|
unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h;
|
||||||
|
svp->ssp1601.gr[SSP_PM0].byte.h &= ~1;
|
||||||
|
return (address & 1) ? (data & 0xFF) : (data >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
return m68k_read_bus_8(address);
|
return m68k_read_bus_8(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,12 +549,12 @@ unsigned int ctrl_io_read_word(unsigned int address)
|
|||||||
|
|
||||||
case 0x50: /* SVP */
|
case 0x50: /* SVP */
|
||||||
{
|
{
|
||||||
if ((address & 0xFD) == 0)
|
if ((address & 0xFC) == 0x00)
|
||||||
{
|
{
|
||||||
return svp->ssp1601.gr[SSP_XST].byte.h;
|
return svp->ssp1601.gr[SSP_XST].byte.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((address & 0xFF) == 4)
|
if ((address & 0xFE) == 0x04)
|
||||||
{
|
{
|
||||||
unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h;
|
unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h;
|
||||||
svp->ssp1601.gr[SSP_PM0].byte.h &= ~1;
|
svp->ssp1601.gr[SSP_PM0].byte.h &= ~1;
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
* Genesis Plus
|
* Genesis Plus
|
||||||
* Main 68k bus handlers
|
* Main 68k bus handlers
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
*
|
*
|
||||||
* Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access
|
* Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -468,18 +468,43 @@ void z80_ms_port_w(unsigned int port, unsigned char data)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
/* write FM chip if enabled */
|
/* check if YM2413 chip is enabled */
|
||||||
if (!(port & 4) && (config.ym2413 & 1))
|
if (config.ym2413 & 1)
|
||||||
{
|
{
|
||||||
fm_write(Z80.cycles, port, data);
|
|
||||||
|
|
||||||
/* 315-5297 I/O chip decodes bit 1 to enable/disable PSG output */
|
|
||||||
if (region_code == REGION_JAPAN_NTSC)
|
if (region_code == REGION_JAPAN_NTSC)
|
||||||
{
|
{
|
||||||
io_reg[6] = (data & 2) ? 0xFF : 0x00;
|
/* 315-5297 I/O chip decodes full address range */
|
||||||
SN76489_Config(Z80.cycles, config.psg_preamp, config.psgBoostNoise, io_reg[6]);
|
port &= 0xFF;
|
||||||
|
|
||||||
|
/* internal YM2413 chip */
|
||||||
|
if ((port == 0xF0) || (port == 0xF1))
|
||||||
|
{
|
||||||
|
fm_write(Z80.cycles, port, data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Audio control register (315-5297 I/O chip specific) */
|
||||||
|
if (port == 0xF2)
|
||||||
|
{
|
||||||
|
/* D1 D0
|
||||||
|
-----
|
||||||
|
0 0 : enable only PSG output (power-on default)
|
||||||
|
0 1 : enable only FM output
|
||||||
|
1 0 : disable both PSG & FM output
|
||||||
|
1 1 : enable both PSG and FM output
|
||||||
|
*/
|
||||||
|
SN76489_Config(Z80.cycles, config.psg_preamp, config.psgBoostNoise, ((data + 1) & 0x02) ? 0x00 : 0xFF);
|
||||||
|
fm_write(Z80.cycles, 0x02, data);
|
||||||
|
io_reg[6] = data;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!(port & 4))
|
||||||
|
{
|
||||||
|
/* external FM board */
|
||||||
|
fm_write(Z80.cycles, port, data);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
z80_unused_port_w(port & 0xFF, data);
|
z80_unused_port_w(port & 0xFF, data);
|
||||||
@ -520,32 +545,54 @@ unsigned char z80_ms_port_r(unsigned int port)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
uint8 data = 0xFF;
|
if (region_code == REGION_JAPAN_NTSC)
|
||||||
|
|
||||||
/* read FM chip if enabled */
|
|
||||||
if (!(port & 4) && (config.ym2413 & 1))
|
|
||||||
{
|
{
|
||||||
data = YM2413Read();
|
|
||||||
|
|
||||||
/* 315-5297 I/O chip decodes full address range */
|
/* 315-5297 I/O chip decodes full address range */
|
||||||
if (region_code == REGION_JAPAN_NTSC)
|
port &= 0xFF;
|
||||||
|
|
||||||
|
if (port == 0xF2)
|
||||||
{
|
{
|
||||||
return data;
|
/* D7-D5 : C-SYNC counter (not emulated)
|
||||||
|
D4-D2 : Always zero
|
||||||
|
D1 : Mute control bit 1
|
||||||
|
D0 : Mute control bit 0
|
||||||
|
*/
|
||||||
|
return io_reg[0x06] & 0x03;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* read I/O ports if enabled */
|
if ((port == 0xC0) || (port == 0xC1) || (port == 0xDC) || (port == 0xDD))
|
||||||
if (!(io_reg[0x0E] & 0x04))
|
{
|
||||||
|
/* read I/O ports if enabled */
|
||||||
|
if (!(io_reg[0x0E] & 0x04))
|
||||||
|
{
|
||||||
|
return io_z80_read(port & 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return z80_unused_port_r(port);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
data &= io_z80_read(port & 1);
|
uint8 data = 0xFF;
|
||||||
}
|
|
||||||
|
|
||||||
return data;
|
/* read FM board if enabled */
|
||||||
|
if (!(port & 4) && (config.ym2413 & 1))
|
||||||
|
{
|
||||||
|
data = YM2413Read();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read I/O ports if enabled */
|
||||||
|
if (!(io_reg[0x0E] & 0x04))
|
||||||
|
{
|
||||||
|
data &= io_z80_read(port & 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
/* Mark III port handlers */
|
/* Mark III port handlers */
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
*
|
*
|
||||||
* Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access
|
* Support for SG-1000, Mark-III, Master System, Game Gear & Mega Drive ports access
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Charles Mac Donald (original code)
|
* Copyright (C) 1998-2003 Charles Mac Donald (original code)
|
||||||
* Copyright (C) 2007-2015 Eke-Eke (Genesis Plus GX)
|
* Copyright (C) 2007-2016 Eke-Eke (Genesis Plus GX)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
|
@ -139,7 +139,7 @@ void audio_set_rate(int samplerate, double framerate)
|
|||||||
if (system_hw == SYSTEM_MCD)
|
if (system_hw == SYSTEM_MCD)
|
||||||
{
|
{
|
||||||
/* number of SCD master clocks run per second */
|
/* number of SCD master clocks run per second */
|
||||||
mclk = framerate ? (SCYCLES_PER_LINE * (vdp_pal ? 313 : 262) * framerate) : SCD_CLOCK;
|
mclk = (mclk / system_clock) * SCD_CLOCK;
|
||||||
|
|
||||||
/* PCM core */
|
/* PCM core */
|
||||||
pcm_init(mclk, samplerate);
|
pcm_init(mclk, samplerate);
|
||||||
@ -1285,17 +1285,22 @@ void system_frame_sms(int do_skip)
|
|||||||
/* update VCounter */
|
/* update VCounter */
|
||||||
v_counter = line;
|
v_counter = line;
|
||||||
|
|
||||||
/* Master System & Game Gear VDP specific */
|
|
||||||
if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16)))
|
|
||||||
{
|
|
||||||
/* Sprites are still processed during top border */
|
|
||||||
render_obj((line - lines_per_frame) & 1);
|
|
||||||
parse_satb(line - lines_per_frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* render overscan */
|
/* render overscan */
|
||||||
if ((line < end) || (line >= start))
|
if ((line < end) || (line >= start))
|
||||||
{
|
{
|
||||||
|
/* Master System & Game Gear VDP specific */
|
||||||
|
if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16)))
|
||||||
|
{
|
||||||
|
/* Sprites are still processed during top border */
|
||||||
|
if (reg[1] & 0x40)
|
||||||
|
{
|
||||||
|
render_obj((line - lines_per_frame) & 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sprites pre-processing occurs even when display is disabled */
|
||||||
|
parse_satb(line - lines_per_frame);
|
||||||
|
}
|
||||||
|
|
||||||
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
|
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1316,6 +1321,16 @@ void system_frame_sms(int do_skip)
|
|||||||
/* last line of overscan */
|
/* last line of overscan */
|
||||||
if (bitmap.viewport.y > 0)
|
if (bitmap.viewport.y > 0)
|
||||||
{
|
{
|
||||||
|
/* Master System & Game Gear VDP specific */
|
||||||
|
if (system_hw < SYSTEM_MD)
|
||||||
|
{
|
||||||
|
/* Sprites are still processed during top border */
|
||||||
|
if (reg[1] & 0x40)
|
||||||
|
{
|
||||||
|
render_obj(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
|
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1365,13 +1380,7 @@ void system_frame_sms(int do_skip)
|
|||||||
|
|
||||||
/* Master System & Game Gear VDP specific */
|
/* Master System & Game Gear VDP specific */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Sprites are still processed during top border */
|
|
||||||
if (reg[1] & 0x40)
|
|
||||||
{
|
|
||||||
render_obj(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sprites pre-processing occurs even when display is disabled */
|
/* Sprites pre-processing occurs even when display is disabled */
|
||||||
parse_satb(-1);
|
parse_satb(-1);
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Genesis Plus GX menu
|
* Genesis Plus GX menu
|
||||||
*
|
*
|
||||||
* Copyright Eke-Eke (2009-2015)
|
* Copyright Eke-Eke (2009-2016)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -3991,11 +3991,7 @@ void mainmenu(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Hard Reset */
|
/* Hard Reset */
|
||||||
system_init();
|
|
||||||
system_reset();
|
system_reset();
|
||||||
|
|
||||||
/* restore SRAM */
|
|
||||||
slot_autoload(0,config.s_device);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* exit to game */
|
/* exit to game */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Genesis Plus GX menus
|
* Genesis Plus GX menus
|
||||||
*
|
*
|
||||||
* Copyright Eke-Eke (2009-2015)
|
* Copyright Eke-Eke (2009-2016)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
|
@ -400,7 +400,7 @@ static void gx_callback(void)
|
|||||||
VIDEO_Flush();
|
VIDEO_Flush();
|
||||||
|
|
||||||
/* copy EFB to XFB */
|
/* copy EFB to XFB */
|
||||||
GX_CopyDisp(xfb[fbCurrent], GX_FALSE);
|
GX_CopyDisp(xfb[fbCurrent], GX_TRUE);
|
||||||
GX_Flush();
|
GX_Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1601,6 +1601,7 @@ bool retro_load_game(const struct retro_game_info *info)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
const char *dir;
|
const char *dir;
|
||||||
|
const char *save_dir;
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
char slash = '\\';
|
char slash = '\\';
|
||||||
#else
|
#else
|
||||||
@ -1726,6 +1727,13 @@ bool retro_load_game(const struct retro_game_info *info)
|
|||||||
dir = g_rom_dir;
|
dir = g_rom_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &save_dir) || !save_dir)
|
||||||
|
{
|
||||||
|
if (log_cb)
|
||||||
|
log_cb(RETRO_LOG_INFO, "[genplus]: Defaulting Sega CD BRAM directory to %s.\n", g_rom_dir);
|
||||||
|
save_dir = g_rom_dir;
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(GG_ROM, sizeof(GG_ROM), "%s%cggenie.bin", dir, slash);
|
snprintf(GG_ROM, sizeof(GG_ROM), "%s%cggenie.bin", dir, slash);
|
||||||
snprintf(AR_ROM, sizeof(AR_ROM), "%s%careplay.bin", dir, slash);
|
snprintf(AR_ROM, sizeof(AR_ROM), "%s%careplay.bin", dir, slash);
|
||||||
snprintf(SK_ROM, sizeof(SK_ROM), "%s%csk.bin", dir, slash);
|
snprintf(SK_ROM, sizeof(SK_ROM), "%s%csk.bin", dir, slash);
|
||||||
@ -1738,10 +1746,10 @@ bool retro_load_game(const struct retro_game_info *info)
|
|||||||
snprintf(CD_BIOS_EU, sizeof(CD_BIOS_EU), "%s%cbios_CD_E.bin", dir, slash);
|
snprintf(CD_BIOS_EU, sizeof(CD_BIOS_EU), "%s%cbios_CD_E.bin", dir, slash);
|
||||||
snprintf(CD_BIOS_US, sizeof(CD_BIOS_US), "%s%cbios_CD_U.bin", dir, slash);
|
snprintf(CD_BIOS_US, sizeof(CD_BIOS_US), "%s%cbios_CD_U.bin", dir, slash);
|
||||||
snprintf(CD_BIOS_JP, sizeof(CD_BIOS_JP), "%s%cbios_CD_J.bin", dir, slash);
|
snprintf(CD_BIOS_JP, sizeof(CD_BIOS_JP), "%s%cbios_CD_J.bin", dir, slash);
|
||||||
snprintf(CD_BRAM_EU, sizeof(CD_BRAM_EU), "%s%cscd_E.brm", dir, slash);
|
snprintf(CD_BRAM_EU, sizeof(CD_BRAM_EU), "%s%cscd_E.brm", save_dir, slash);
|
||||||
snprintf(CD_BRAM_US, sizeof(CD_BRAM_US), "%s%cscd_U.brm", dir, slash);
|
snprintf(CD_BRAM_US, sizeof(CD_BRAM_US), "%s%cscd_U.brm", save_dir, slash);
|
||||||
snprintf(CD_BRAM_JP, sizeof(CD_BRAM_JP), "%s%cscd_J.brm", dir, slash);
|
snprintf(CD_BRAM_JP, sizeof(CD_BRAM_JP), "%s%cscd_J.brm", save_dir, slash);
|
||||||
snprintf(CART_BRAM, sizeof(CART_BRAM), "%s%ccart.brm", dir, slash);
|
snprintf(CART_BRAM, sizeof(CART_BRAM), "%s%ccart.brm", save_dir, slash);
|
||||||
if (log_cb)
|
if (log_cb)
|
||||||
{
|
{
|
||||||
log_cb(RETRO_LOG_INFO, "Game Genie ROM should be located at: %s\n", GG_ROM);
|
log_cb(RETRO_LOG_INFO, "Game Genie ROM should be located at: %s\n", GG_ROM);
|
||||||
|
Loading…
Reference in New Issue
Block a user