- N106 sound issue requested fix, see comments

- new inex 2.0 mapper 406 added without flash support though
- dpcm data log now does proper memory area logging (not worth actually, always be like C000 lol)
This commit is contained in:
g0me3 2020-04-09 20:54:05 +03:00
parent 747fba7711
commit 5d872472ef
6 changed files with 38 additions and 1 deletions

View File

@ -1363,3 +1363,30 @@ void TQROM_Init(CartInfo *info) {
void HKROM_Init(CartInfo *info) { void HKROM_Init(CartInfo *info) {
GenMMC3_Init(info, 512, 512, 1, info->battery); GenMMC3_Init(info, 512, 512, 1, info->battery);
} }
// -------------------------------- iNES 2.0 ----------------------------
// ---------------------------- Mapper 406 ------------------------------
static DECLFW(M406CMDWrite) {
MMC3_CMDWrite((A & 0xFFFE) | ((A & 2) >> 1), V);
}
static DECLFW(M406IRQWrite) {
MMC3_IRQWrite((A & 0xFFFE) | ((A & 2) >> 1), V);
}
static DECLFW(M406Write) {
}
static void M406_Power(void) {
GenMMC3Power();
// TODO : FLASH
SetWriteHandler(0x8000, 0xBFFF, M406CMDWrite);
SetWriteHandler(0xC000, 0xFFFF, M406IRQWrite);
}
void Mapper406_Init(CartInfo *info) {
GenMMC3_Init(info, 512, 256, 0, 0);
info->Power = M406_Power;
}

View File

@ -157,7 +157,10 @@ static void FixCache(int a, int V) {
case 0x02: FreqCache[w] &= ~0x0000FF00; FreqCache[w] |= V << 8; break; case 0x02: FreqCache[w] &= ~0x0000FF00; FreqCache[w] |= V << 8; break;
case 0x04: case 0x04:
FreqCache[w] &= ~0x00030000; FreqCache[w] |= (V & 3) << 16; FreqCache[w] &= ~0x00030000; FreqCache[w] |= (V & 3) << 16;
LengthCache[w] = (8 - ((V >> 2) & 7)) << 2; // something wrong here http://www.romhacking.net/forum/index.php?topic=21907.msg306903#msg306903
// LengthCache[w] = (8 - ((V >> 2) & 7)) << 2;
// fix be like in https://github.com/SourMesen/Mesen/blob/cda0a0bdcb5525480784f4b8c71de6fc7273b570/Core/Namco163Audio.h#L61
LengthCache[w] = 256 - (V & 0xFC);
break; break;
case 0x07: EnvCache[w] = (double)(V & 0xF) * 576716; break; case 0x07: EnvCache[w] = (double)(V & 0xF) * 576716; break;
} }

View File

@ -281,4 +281,6 @@
{0x4d4a0e1b, 260|0x1000,-1}, {0x4d4a0e1b, 260|0x1000,-1},
{0xb6dd2c9d, 260|0x1000,-1}, {0xb6dd2c9d, 260|0x1000,-1},
{0xb02fcb57, 406|0x1000,-1}, /* Haradius Zero ver 1.2a 2019 */
{0x00000000, -1, -1} {0x00000000, -1, -1}

View File

@ -725,6 +725,9 @@ BMAPPINGLocal bmap[] = {
{"F-15 MMC3 Based", 259, BMCF15_Init}, {"F-15 MMC3 Based", 259, BMCF15_Init},
{"HP10xx/H20xx Boards", 260, BMCHPxx_Init}, {"HP10xx/H20xx Boards", 260, BMCHPxx_Init},
{"810544-CA-1", 261, BMC810544CA1_Init}, {"810544-CA-1", 261, BMC810544CA1_Init},
{"Impact Soft MMC3 Flash Board", 406, Mapper406_Init },
{"KONAMI QTAi Board", 547, QTAi_Init }, {"KONAMI QTAi Board", 547, QTAi_Init },
{"", 0, NULL} {"", 0, NULL}

View File

@ -267,6 +267,7 @@ void Mapper250_Init(CartInfo *);
void Mapper252_Init(CartInfo *); void Mapper252_Init(CartInfo *);
void Mapper253_Init(CartInfo *); void Mapper253_Init(CartInfo *);
void Mapper254_Init(CartInfo *); void Mapper254_Init(CartInfo *);
void Mapper406_Init(CartInfo *);
typedef struct { typedef struct {
char *name; char *name;

View File

@ -181,6 +181,7 @@ void LogDPCM(int romaddress, int dpcmsize){
for (int dpcmstart = i; dpcmstart < (i + dpcmsize); dpcmstart++) { for (int dpcmstart = i; dpcmstart < (i + dpcmsize); dpcmstart++) {
if(!(cdloggerdata[dpcmstart] & 0x40)) { if(!(cdloggerdata[dpcmstart] & 0x40)) {
cdloggerdata[dpcmstart] |= 0x40; cdloggerdata[dpcmstart] |= 0x40;
cdloggerdata[dpcmstart] |= (romaddress >> 11) & 0x0c;
if(!(cdloggerdata[dpcmstart] & 2)){ if(!(cdloggerdata[dpcmstart] & 2)){
datacount++; datacount++;