Update the database for mapper 176 games. Set the iNES2 flag when the submapper field is used.

This commit is contained in:
NewRisingSun
2021-05-28 21:22:18 +02:00
parent b02fa46cb1
commit ce2d55c3e8
4 changed files with 931 additions and 793 deletions

View File

@@ -406,8 +406,6 @@ static void Reset(void)
static void Power(void) static void Power(void)
{ {
dipsw_enable = 0; /* Initially zero. Will be set to 1 according to the described heuristic, causing the DIP switch to be increased on the next soft reset .*/
after_power = 1;
fk23_regs[0] = fk23_regs[1] = fk23_regs[2] = fk23_regs[3] = 0; fk23_regs[0] = fk23_regs[1] = fk23_regs[2] = fk23_regs[3] = 0;
mmc3_regs[0] = 0; mmc3_regs[0] = 0;
mmc3_regs[1] = 2; mmc3_regs[1] = 2;
@@ -454,9 +452,9 @@ static void StateRestore(int version)
Sync(); Sync();
} }
void GenBMCFK23C_Init(CartInfo *info) void Init(CartInfo *info)
{ {
/* Initialization for iNES and UNIF. subType and dipsw_enable must have been set. */
info->Power = Power; info->Power = Power;
info->Reset = Reset; info->Reset = Reset;
info->Close = Close; info->Close = Close;
@@ -487,90 +485,121 @@ void GenBMCFK23C_Init(CartInfo *info)
} }
} }
}
void Mapper176_Init(CartInfo *info) { /* .NES file */
dipsw_enable = 0;
jncota523 = 0;
if (info->iNES2) if (info->iNES2)
{ {
subType = info->submapper; subType = info->submapper;
} after_power = subType != 2; /* FS005 never has DIP switches, the others may have one, so use the heuristic. */
else CHRRAMSIZE = info->CHRRamSize + info->CHRRamSaveSize;
{
subType = 0;
if (((ROM_size * 16) == 1024) && ((VROM_size * 8) == 1024))
subType = 1;
else if (UNIFchrrama && ((ROM_size << 4) >= 8192))
subType = 2;
}
}
/* generic entry point for mapper 176 / bmcfk23c carts */
void BMCFK23C_Init(CartInfo *info) {
/* prepare ROM params before loading... */
if (info->iNES2)
{
if (!UNIFchrrama)
CHRRAMSIZE = info->CHRRamSize + info->CHRRamSaveSize;
WRAMSIZE = info->PRGRamSize + info->PRGRamSaveSize; WRAMSIZE = info->PRGRamSize + info->PRGRamSaveSize;
} }
else else
{ {
if (!UNIFchrrama) /* Waixing boards have 32K battery backed wram */
{
/* Rockman I - VI uses mixed chr rom/ram */
if ((ROM_size * 16) == 2048 && (VROM_size * 8) == 512)
CHRRAMSIZE = 8 * 1024;
}
/* Waixing boards has 32K battery backed wram */
if (info->battery) if (info->battery)
{
subType = 2;
after_power = 0;
WRAMSIZE = 32 * 1024; WRAMSIZE = 32 * 1024;
}
else else
/* Always enable WRAM for ines-headered roms, lets see who complains */ {
/* Always enable WRAM for iNES-headered files */
WRAMSIZE = 8 * 1024; WRAMSIZE = 8 * 1024;
/* Distinguishing subType 1 from subType 0 is important for the correct reset vector location.
It is safe to assume subType 1 except for 1024+512 KiB ROMs. */
subType = (ROM_size ==128 && VROM_size ==256 || /* 2048+2048 */
ROM_size ==128 && VROM_size ==128 || /* 2048+1024 */
ROM_size ==128 && VROM_size ==64 || /* 2048+512 */
ROM_size ==128 && VROM_size ==0 || /* 2048+0 */
ROM_size ==64 && VROM_size ==64)? /* 1024+512 */
0: 1;
/* Detect heuristically whether the address mask should be changed on every soft reset */
after_power = 1;
}
} }
Init(info);
jncota523 = 0;
GenBMCFK23C_Init(info);
} }
/* UNIF Boards, declares so we can for chr mixed mode size and wram if any */ void BMCFK23C_Init(CartInfo *info) /* UNIF FK23C */
void BMCFK23CA_Init(CartInfo *info)
{ {
/* can use mixed chr rom/ram */
if (!UNIFchrrama) if (!UNIFchrrama)
CHRRAMSIZE = 8 * 1024; {
/* Rockman I-VI uses mixed chr rom/ram */
if ((ROM_size * 16) == 2048 && (VROM_size * 8) == 512)
CHRRAMSIZE = 8 * 1024;
}
WRAMSIZE = 8 * 1024; WRAMSIZE = 8 * 1024;
/* UNIF FK23C differs from UNIF FK23CA explicitly by the absence of a DIP switch */
dipsw_enable = 0;
after_power = 0;
jncota523 = 0; jncota523 = 0;
GenBMCFK23C_Init(info);
/* The UNIF MAPR tells us nothing about whether it is subtype 0 or 1 */
subType = (ROM_size ==128 && VROM_size ==256 || /* 2048+2048 */
ROM_size ==128 && VROM_size ==128 || /* 2048+1024 */
ROM_size ==128 && VROM_size ==64 || /* 2048+512 */
ROM_size ==128 && VROM_size ==0 || /* 2048+0 */
ROM_size ==64 && VROM_size ==64)? /* 1024+512 */
0: 1;
Init(info);
} }
/* BMC-Super24in1SC03 */ void BMCFK23CA_Init(CartInfo *info) /* UNIF FK23CA */
void Super24_Init(CartInfo *info) {
/* can use mixed chr rom/ram */
if (!UNIFchrrama)
CHRRAMSIZE = 8 * 1024;
jncota523 = 0;
GenBMCFK23C_Init(info);
}
void WAIXINGFS005_Init(CartInfo *info)
{ {
/* can have 8 or 32 KB battery-backed prg ram WRAMSIZE = 8 * 1024;
* plus 8 KB chr for these boards */
if (!UNIFchrrama)
CHRRAMSIZE = 8 * 1024;
/* UNIF FK23CA differs from UNIF FK23C explicitly by the presence of a DIP switch */
dipsw_enable = 1;
after_power = 0;
jncota523 = 0;
/* The UNIF MAPR tells us nothing about whether it is subtype 0 or 1 */
subType = (ROM_size ==128 && VROM_size ==256 || /* 2048+2048 */
ROM_size ==128 && VROM_size ==128 || /* 2048+1024 */
ROM_size ==128 && VROM_size ==64 || /* 2048+512 */
ROM_size ==128 && VROM_size ==0 || /* 2048+0 */
ROM_size ==64 && VROM_size ==64)? /* 1024+512 */
0: 1;
Init(info);
}
void Super24_Init(CartInfo *info) /* UNIF BMC-Super24in1SC03 */
{
CHRRAMSIZE = 8 * 1024;
dipsw_enable = 0;
after_power = 0;
jncota523 = 0;
subType = 0;
Init(info);
}
void WAIXINGFS005_Init(CartInfo *info) /* UNIF WAIXING-FS005 */
{
CHRRAMSIZE = 8 * 1024;
WRAMSIZE = 32 * 1024; WRAMSIZE = 32 * 1024;
dipsw_enable = 0;
after_power = 0;
jncota523 = 0; jncota523 = 0;
GenBMCFK23C_Init(info); subType = 2;
Init(info);
} }
void Mapper523_Init(CartInfo *info) void Mapper523_Init(CartInfo *info) /* Jncota Fengshengban */
{ {
jncota523 = 1;
WRAMSIZE = 8 * 1024; WRAMSIZE = 8 * 1024;
GenBMCFK23C_Init(info); dipsw_enable = 0;
after_power = 0;
jncota523 = 1;
subType = 1;
Init(info);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -290,6 +290,7 @@ static void CheckHInfo(void) {
} }
} }
if (moo[x].submapper >= 0) { if (moo[x].submapper >= 0) {
iNESCart.iNES2 = 1;
if (moo[x].submapper != iNESCart.submapper) { if (moo[x].submapper != iNESCart.submapper) {
iNESCart.submapper = moo[x].submapper; iNESCart.submapper = moo[x].submapper;
} }
@@ -590,7 +591,7 @@ INES_BOARD_BEGIN()
INES_BOARD( "Idea-Tek ET.xx", 173, Mapper173_Init ) INES_BOARD( "Idea-Tek ET.xx", 173, Mapper173_Init )
/* INES_BOARD( "", 174, Mapper174_Init ) */ /* INES_BOARD( "", 174, Mapper174_Init ) */
INES_BOARD( "", 175, Mapper175_Init ) INES_BOARD( "", 175, Mapper175_Init )
INES_BOARD( "BMCFK23C", 176, BMCFK23C_Init ) /* zero 26-may-2012 - well, i have some WXN junk games that use 176 for instance ????. i dont know what game uses this BMCFK23C as mapper 176. we'll have to make a note when we find it. */ INES_BOARD( "BMCFK23C", 176, Mapper176_Init )
INES_BOARD( "", 177, Mapper177_Init ) INES_BOARD( "", 177, Mapper177_Init )
INES_BOARD( "", 178, Mapper178_Init ) INES_BOARD( "", 178, Mapper178_Init )
/* INES_BOARD( "", 179, Mapper179_Init ) */ /* INES_BOARD( "", 179, Mapper179_Init ) */

View File

@@ -176,6 +176,7 @@ void Mapper171_Init(CartInfo *);
void Mapper172_Init(CartInfo *); void Mapper172_Init(CartInfo *);
void Mapper173_Init(CartInfo *); void Mapper173_Init(CartInfo *);
void Mapper175_Init(CartInfo *); void Mapper175_Init(CartInfo *);
void Mapper176_Init(CartInfo *);
void Mapper177_Init(CartInfo *); void Mapper177_Init(CartInfo *);
void Mapper178_Init(CartInfo *); void Mapper178_Init(CartInfo *);
void Mapper180_Init(CartInfo *); void Mapper180_Init(CartInfo *);