mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-11-14 06:45:09 +01:00
[Core/MD] added support for Everdrive extended SSF mapper
This commit is contained in:
parent
99e632a183
commit
200f9a7349
@ -60,6 +60,7 @@ typedef struct
|
|||||||
|
|
||||||
/* Function prototypes */
|
/* Function prototypes */
|
||||||
static void mapper_sega_w(uint32 data);
|
static void mapper_sega_w(uint32 data);
|
||||||
|
static void mapper_512k_w(uint32 address, uint32 data);
|
||||||
static void mapper_ssf2_w(uint32 address, uint32 data);
|
static void mapper_ssf2_w(uint32 address, uint32 data);
|
||||||
static void mapper_sf001_w(uint32 address, uint32 data);
|
static void mapper_sf001_w(uint32 address, uint32 data);
|
||||||
static void mapper_sf002_w(uint32 address, uint32 data);
|
static void mapper_sf002_w(uint32 address, uint32 data);
|
||||||
@ -568,7 +569,15 @@ void md_cart_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* detect specific mappers */
|
/* detect specific mappers */
|
||||||
if (strstr(rominfo.domestic,"SUPER STREET FIGHTER2"))
|
if (strstr(rominfo.consoletype,"SEGA SSF"))
|
||||||
|
{
|
||||||
|
/* Everdrive extended SSF mapper */
|
||||||
|
cart.hw.bankshift = 1;
|
||||||
|
|
||||||
|
/* specific !TIME handler */
|
||||||
|
cart.hw.time_w = mapper_512k_w;
|
||||||
|
}
|
||||||
|
else if (strstr(rominfo.domestic,"SUPER STREET FIGHTER2"))
|
||||||
{
|
{
|
||||||
/* SSF2 mapper */
|
/* SSF2 mapper */
|
||||||
cart.hw.bankshift = 1;
|
cart.hw.bankshift = 1;
|
||||||
@ -913,25 +922,38 @@ static void mapper_sega_w(uint32 data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Super Street Fighter 2 ROM bankswitch
|
Everdrive extended SSF ROM bankswitch
|
||||||
documented by Bart Trzynadlowski (http://www.trzy.org/files/ssf2.txt)
|
documented by Krikzz (http://krikzz.com/pub/support/mega-ed/dev/extended_ssf.txt)
|
||||||
*/
|
*/
|
||||||
static void mapper_ssf2_w(uint32 address, uint32 data)
|
static void mapper_512k_w(uint32 address, uint32 data)
|
||||||
{
|
|
||||||
/* 8 x 512k banks */
|
|
||||||
address = (address << 2) & 0x38;
|
|
||||||
|
|
||||||
/* bank 0 remains unchanged */
|
|
||||||
if (address)
|
|
||||||
{
|
{
|
||||||
uint32 i;
|
uint32 i;
|
||||||
|
|
||||||
|
/* 512K ROM paging */
|
||||||
uint8 *src = cart.rom + (data << 19);
|
uint8 *src = cart.rom + (data << 19);
|
||||||
|
|
||||||
|
|
||||||
|
/* cartridge area ($000000-$3FFFFF) is divided into 8 x 512K banks */
|
||||||
|
address = (address << 2) & 0x38;
|
||||||
|
|
||||||
|
/* remap selected ROM page to selected bank */
|
||||||
for (i=0; i<8; i++)
|
for (i=0; i<8; i++)
|
||||||
{
|
{
|
||||||
m68k.memory_map[address++].base = src + (i<<16);
|
m68k.memory_map[address++].base = src + (i<<16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Super Street Fighter 2 ROM bankswitch
|
||||||
|
documented by Bart Trzynadlowski (http://emu-docs.org/Genesis/ssf2.txt)
|
||||||
|
*/
|
||||||
|
static void mapper_ssf2_w(uint32 address, uint32 data)
|
||||||
|
{
|
||||||
|
/* only banks 1-7 are remappable, bank 0 remains unchanged */
|
||||||
|
if (address)
|
||||||
|
{
|
||||||
|
mapper_512k_w(address, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user