snes - a sneaky hack to enforce that compatibility profile is ALWAYS in deterministic mode, and that performance profile is NEVER in deterministic mode, this fixes a lot of undefined and bugged behavior when the deterministic flag gets out of whack with the act of loading a savestate
This commit is contained in:
parent
bee1dfcb02
commit
2190b15099
|
@ -327,7 +327,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
else return api.CMD_load_cartridge_super_game_boy(CurrLoadParams.rom_xml, CurrLoadParams.rom_data, CurrLoadParams.rom_size, CurrLoadParams.dmg_xml, CurrLoadParams.dmg_data, CurrLoadParams.dmg_size);
|
else return api.CMD_load_cartridge_super_game_boy(CurrLoadParams.rom_xml, CurrLoadParams.rom_data, CurrLoadParams.rom_size, CurrLoadParams.dmg_xml, CurrLoadParams.dmg_data, CurrLoadParams.dmg_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Load(GameInfo game, byte[] romData, bool DeterministicEmulation, byte[] xmlData)
|
public void Load(GameInfo game, byte[] romData, bool deterministicEmulation, byte[] xmlData)
|
||||||
{
|
{
|
||||||
byte[] sgbRomData = null;
|
byte[] sgbRomData = null;
|
||||||
if (game["SGB"])
|
if (game["SGB"])
|
||||||
|
@ -433,7 +433,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
|
|
||||||
SetupMemoryDomains(romData,sgbRomData);
|
SetupMemoryDomains(romData,sgbRomData);
|
||||||
|
|
||||||
this.DeterministicEmulation = DeterministicEmulation;
|
DeterministicEmulation = deterministicEmulation;
|
||||||
if (DeterministicEmulation) // save frame-0 savestate now
|
if (DeterministicEmulation) // save frame-0 savestate now
|
||||||
{
|
{
|
||||||
MemoryStream ms = new MemoryStream();
|
MemoryStream ms = new MemoryStream();
|
||||||
|
@ -719,10 +719,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
|
|
||||||
public string BoardName { get; private set; }
|
public string BoardName { get; private set; }
|
||||||
|
|
||||||
|
// adelikat: Nasty hack to force new business logic. Compatibility (and Accuracy when fully supported) will ALWAYS be in deterministic mode,
|
||||||
|
// a consequence is a permanent performance hit to the compatibility core
|
||||||
|
// Perormance will NEVER be in deterministic mode (and the client side logic will prohibit movie recording on it)
|
||||||
public bool DeterministicEmulation
|
public bool DeterministicEmulation
|
||||||
{
|
{
|
||||||
get;
|
get { return SyncSettings.Profile == "Compatibility" || SyncSettings.Profile == "Accuracy"; }
|
||||||
private set;
|
private set { /* Do nothing */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue