Update m285/BMC-A65AS

This commit is contained in:
negativeExponent
2022-02-18 19:45:05 +08:00
parent d14b2aa0cf
commit ea0e198cf9
2 changed files with 12 additions and 11 deletions

View File

@@ -512,33 +512,34 @@ void Mapper538_Init(CartInfo *info) {
* mode (one screen) and 32K bankswitching, second one have only * mode (one screen) and 32K bankswitching, second one have only
* 16 bankswitching mode and normal mirroring... But there is no any * 16 bankswitching mode and normal mirroring... But there is no any
* correlations between modes and they can be used in one mapper code. * correlations between modes and they can be used in one mapper code.
*
* Submapper 0 - 3-in-1 (N068)
* Submapper 0 - 3-in-1 (N080)
* Submapper 1 - 4-in-1 (JY-066)
*/ */
static int A65ASsubmapper; static int A65ASsubmapper;
static void BMCA65ASSync(void) { static void BMCA65ASSync(void) {
if (latche & 0x40) if (latche & 0x40)
setprg32(0x8000, (latche >> 1) & 0x0F); setprg32(0x8000, (latche >> 1) & 0x0F);
else { else {
if (A65ASsubmapper == 1) { if (A65ASsubmapper == 1) {
setprg16(0x8000, ((latche & 0x38) >> 0) | (latche & 7));
setprg16(0xC000, ((latche & 0x38) >> 0) | 7);
} else {
setprg16(0x8000, ((latche & 0x30) >> 1) | (latche & 7)); setprg16(0x8000, ((latche & 0x30) >> 1) | (latche & 7));
setprg16(0xC000, ((latche & 0x30) >> 1) | 7); setprg16(0xC000, ((latche & 0x30) >> 1) | 7);
} else {
setprg16(0x8000, latche & 0x0F);
setprg16(0xC000, latche & 0x0F | 7);
} }
} }
setchr8(0); setchr8(0);
if (latche & 0x80) if (latche & 0x80)
setmirror(MI_0 + (((latche >> 5) & 1))); setmirror(MI_0 + (((latche >> 5) & 1)));
else {
if (A65ASsubmapper == 1) /* added as workaround since games for this cart uses vertical mirroring */
setmirror(MI_V);
else else
setmirror(((latche >> 3) & 1) ^ 1); setmirror(((latche >> 3) & 1) ^ 1);
}
} }
void BMCA65AS_Init(CartInfo *info) { void BMCA65AS_Init(CartInfo *info) {
A65ASsubmapper = info->submapper; /* not a real submapper */ A65ASsubmapper = info->submapper;
Latch_Init(info, BMCA65ASSync, 0, 0x8000, 0xFFFF, 0, 0); Latch_Init(info, BMCA65ASSync, 0, 0x8000, 0xFFFF, 0, 0);
} }

View File

@@ -364,7 +364,7 @@ struct _unif_db {
}; };
static struct _unif_db unif_db[] = { static struct _unif_db unif_db[] = {
{ 0x8ebad077d08e6c78ULL, "A65AS", 1, -1, -1 }, /* 3-in-1 (N080) [p1][U][!], not a real submapper */ { 0x03ed6963ca50e1d8ULL, "A65AS", 1, -1, -1 },
{ 0x616851e56946893bULL, "RESETNROM-XIN1", 0, MI_V, -1 }, /* Sheng Tian 2-in-1(Unl,ResetBase)[p1].unf */ { 0x616851e56946893bULL, "RESETNROM-XIN1", 0, MI_V, -1 }, /* Sheng Tian 2-in-1(Unl,ResetBase)[p1].unf */
{ 0x4cd729b5ae23a3cfULL, "RESETNROM-XIN1", 0, MI_H, -1 }, /* Sheng Tian 2-in-1(Unl,ResetBase)[p2].unf */ { 0x4cd729b5ae23a3cfULL, "RESETNROM-XIN1", 0, MI_H, -1 }, /* Sheng Tian 2-in-1(Unl,ResetBase)[p2].unf */