revised d_tnzs.cpp based on Daves d_ashnojoe.cpp savestate fix

This commit is contained in:
dinkc64 2014-04-19 03:37:12 +00:00
parent d8e7b58686
commit fb5c9a7fc8
1 changed files with 4 additions and 14 deletions

View File

@ -810,18 +810,12 @@ UINT8 __fastcall tnzs_cpu2_in(UINT16 port)
return 0;
}
static INT32 FROM_SAVESTATE = 0;
static void kabukiz_sound_bankswitch(UINT32, UINT32 data)
{
if (data != 0xff) {
tnzs_banks[2] = data;
if (FROM_SAVESTATE) {
ZetOpen(2);
FROM_SAVESTATE = 0;
}
// I don't like this either - but to avoid a crash on Savestate load, it has to be, as
if (ZetGetActive() == -1) return; // fix crash on init
// YM2203_postload() eventually gets to code that writes to a port that is mapped to
// kabukiz_sound_bankswitch() and at this time, the cpu isn't open
// Stack backtrace from crash:
@ -1882,11 +1876,10 @@ static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
struct BurnArea ba;
if (pnMin) {
*pnMin = 0x029707;
*pnMin = 0x029730;
}
if (nAction & ACB_VOLATILE) {
FROM_SAVESTATE = 1; // see notes @ kabukiz_sound_bankswitch() - dink
ba.Data = AllRam;
ba.nLen = RamEnd - AllRam;
ba.szName = "All Ram";
@ -1904,13 +1897,10 @@ static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
tnzs_mcu_scan();
SCAN_VAR(tnzs_banks[0]);
SCAN_VAR(tnzs_banks[1]);
SCAN_VAR(tnzs_banks[2]);
SCAN_VAR(tnzs_banks);
SCAN_VAR(cpu1_reset);
SCAN_VAR(nAnalogAxis[0]);
SCAN_VAR(nAnalogAxis[1]);
SCAN_VAR(nAnalogAxis);
SCAN_VAR(kageki_csport_sel);
SCAN_VAR(kageki_sample_pos);