Fix for sound desync in Tengai and tile corruption in Samurai Aces on savestate load

This commit is contained in:
dinkc64 2014-03-31 04:17:20 +00:00
parent 232634c08c
commit 05fefca63c
1 changed files with 21 additions and 3 deletions

View File

@ -880,7 +880,7 @@ UINT16 __fastcall gunbirdReadWord(UINT32 sekAddress)
case 0xC00000: // Joysticks
return ~DrvInput[0];
case 0xC00002: { // Inputs / Sound CPU status
bprintf(PRINT_NORMAL, _T(" - Sound reply read.\n"));
// bprintf(PRINT_NORMAL, _T(" - Sound reply read.\n"));
PsikyoSynchroniseZ80(0);
if (!nSoundlatchAck) {
return ~DrvInput[1];
@ -1960,13 +1960,31 @@ static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
SCAN_VAR(bVBlank);
BurnYM2610Scan(nAction, pnMin);
// March 29, 2014 - sound desync fix -> Burn[CHIP]Scan(); depending on hardware - dink
switch (PsikyoHardwareVersion) {
case PSIKYO_HW_SAMURAIA:
case PSIKYO_HW_GUNBIRD: {
BurnYM2610Scan(nAction, pnMin);
break;
}
case PSIKYO_HW_S1945:
case PSIKYO_HW_TENGAI: {
BurnYMF278BScan(nAction, pnMin);
break;
}
}
SCAN_VAR(nSoundlatch); SCAN_VAR(nSoundlatchAck);
SCAN_VAR(nPsikyoZ80Bank);
TengaiMCUScan(nAction, pnMin);
//TengaiMCUScan(nAction, pnMin);
// no! only call this if the game uses the TengaiMCU otherwise
// it'll change the tile banks to some strange value
// March 30, 2014: Fix for corrupted tiles after loading savestate in Samurai Aces - dink
if (PsikyoHardwareVersion == PSIKYO_HW_TENGAI || PsikyoHardwareVersion == PSIKYO_HW_S1945) {
TengaiMCUScan(nAction, pnMin);
}
if (nAction & ACB_WRITE) {
int nBank = nPsikyoZ80Bank;