Add support for Jncota variant, mapper 523

This commit is contained in:
NewRisingSun
2021-05-26 20:36:06 +02:00
parent 3cc9c32306
commit b02fa46cb1
3 changed files with 37 additions and 14 deletions

View File

@@ -21,7 +21,7 @@
/* Mappers: /* Mappers:
176 - Standard 176 - Standard
523 - Jncota KT-xxx (1 KiB->2 KiB, 2 KiB->4 KiB CHR, hard-wired nametable mirroring) 523 - Jncota KT-xxx, re-release of 封神榜꞉ 伏魔三太子: 1 KiB->2 KiB, 2 KiB->4 KiB CHR, hard-wired nametable mirroring)
Submappers: Submappers:
0 - Standard 0 - Standard
@@ -101,15 +101,22 @@ static void cwrap(uint32 A, uint32 V)
{ {
int bank = 0; int bank = 0;
/* some workaround for chr rom / ram access */ if (jncota523)
if (!VROM_size) {
bank = 0; if (~A &0x0400) setchr2r(bank, A, V);
else if (CHRRAMSIZE && fk23_regs[0] & 0x20) }
bank = 0x10; else
{
if (CHR_MIXED && V < 8) bank = 0x10; /* first 8K of chr bank is RAM */ /* some workaround for chr rom / ram access */
if (!VROM_size)
setchr1r(bank, A, V); bank = 0;
else if (CHRRAMSIZE && fk23_regs[0] & 0x20)
bank = 0x10;
if (CHR_MIXED && V < 8) bank = 0x10; /* first 8K of chr bank is RAM */
setchr1r(bank, A, V);
}
} }
static void SyncCHR(void) static void SyncCHR(void)
@@ -241,12 +248,15 @@ static void SyncWRAM(void)
static void SyncMIR(void) static void SyncMIR(void)
{ {
if (jncota523) /* Jncota board has hard-wired mirroring */
return;
else
switch (mmc3_mirr & (subType == 2? 0x03 : 0x01)) switch (mmc3_mirr & (subType == 2? 0x03 : 0x01))
{ {
case 0: setmirror(MI_V); break; case 0: setmirror(MI_V); break;
case 1: setmirror(MI_H); break; case 1: setmirror(MI_H); break;
case 2: setmirror(MI_0); break; case 2: setmirror(MI_0); break;
case 3: setmirror(MI_1); break; case 3: setmirror(MI_1); break;
} }
} }
@@ -517,6 +527,7 @@ void BMCFK23C_Init(CartInfo *info) {
WRAMSIZE = 8 * 1024; WRAMSIZE = 8 * 1024;
} }
jncota523 = 0;
GenBMCFK23C_Init(info); GenBMCFK23C_Init(info);
} }
@@ -530,6 +541,7 @@ void BMCFK23CA_Init(CartInfo *info)
WRAMSIZE = 8 * 1024; WRAMSIZE = 8 * 1024;
jncota523 = 0;
GenBMCFK23C_Init(info); GenBMCFK23C_Init(info);
} }
@@ -539,6 +551,7 @@ void Super24_Init(CartInfo *info) {
if (!UNIFchrrama) if (!UNIFchrrama)
CHRRAMSIZE = 8 * 1024; CHRRAMSIZE = 8 * 1024;
jncota523 = 0;
GenBMCFK23C_Init(info); GenBMCFK23C_Init(info);
} }
@@ -551,5 +564,13 @@ void WAIXINGFS005_Init(CartInfo *info)
WRAMSIZE = 32 * 1024; WRAMSIZE = 32 * 1024;
jncota523 = 0;
GenBMCFK23C_Init(info);
}
void Mapper523_Init(CartInfo *info)
{
jncota523 = 1;
WRAMSIZE = 8 * 1024;
GenBMCFK23C_Init(info); GenBMCFK23C_Init(info);
} }

View File

@@ -793,6 +793,7 @@ INES_BOARD_BEGIN()
INES_BOARD( "EH8813A", 519, UNLEH8813A_Init ) INES_BOARD( "EH8813A", 519, UNLEH8813A_Init )
INES_BOARD( "DREAMTECH01", 521, DreamTech01_Init ) INES_BOARD( "DREAMTECH01", 521, DreamTech01_Init )
INES_BOARD( "LH10", 522, LH10_Init ) INES_BOARD( "LH10", 522, LH10_Init )
INES_BOARD( "Jncota KT-???", 523, Mapper523_Init )
INES_BOARD( "900218", 524, BTL900218_Init ) INES_BOARD( "900218", 524, BTL900218_Init )
INES_BOARD( "KS7021A", 525, UNLKS7021A_Init ) INES_BOARD( "KS7021A", 525, UNLKS7021A_Init )
INES_BOARD( "BJ-56", 526, UNLBJ56_Init ) INES_BOARD( "BJ-56", 526, UNLBJ56_Init )

View File

@@ -284,6 +284,7 @@ void Mapper421_Init(CartInfo *);
void Mapper422_Init(CartInfo *); void Mapper422_Init(CartInfo *);
void Mapper428_Init(CartInfo *); void Mapper428_Init(CartInfo *);
void Mapper516_Init(CartInfo *); void Mapper516_Init(CartInfo *);
void Mapper523_Init(CartInfo *);
void Mapper533_Init(CartInfo *); void Mapper533_Init(CartInfo *);
void Mapper534_Init(CartInfo *); void Mapper534_Init(CartInfo *);
void Mapper538_Init(CartInfo *); void Mapper538_Init(CartInfo *);