PCE: Sprite Limit no longer requires Core Reboot. Also, selecting Equalize Volumes no longer makes it impossible to load a HuCard.

This commit is contained in:
beirich 2014-02-27 01:00:21 +00:00
parent e4e04e7b9d
commit f27dd11389
1 changed files with 14 additions and 9 deletions

View File

@ -49,7 +49,8 @@ namespace BizHawk.Emulation.Cores.PCEngine
public byte[] SuperRam; // Super System Card 192K of additional RAM
public byte[] ArcadeRam; // Arcade Card 2048K of additional RAM
private string systemid = "PCE";
string systemid = "PCE";
bool ForceSpriteLimit;
// 21,477,270 Machine clocks / sec
// 7,159,090 Cpu cycles / sec
@ -238,12 +239,8 @@ namespace BizHawk.Emulation.Cores.PCEngine
}
// the gamedb can force sprite limit on, ignoring settings
if (Settings.SpriteLimit || game["ForceSpriteLimit"] || game.NotInDatabase)
{
VDC1.PerformSpriteLimit = true;
if (VDC2 != null)
VDC2.PerformSpriteLimit = true;
}
if (game["ForceSpriteLimit"] || game.NotInDatabase)
ForceSpriteLimit = true;
if (game["CdVol"])
CDAudio.MaxVolume = int.Parse(game.OptionValue("CdVol"));
@ -252,7 +249,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
if (game["AdpcmVol"])
ADPCM.MaxVolume = int.Parse(game.OptionValue("AdpcmVol"));
// the gamedb can also force equalizevolumes on
if (Settings.EqualizeVolume || game["EqualizeVolumes"] || (game.NotInDatabase && TurboCD))
if (TurboCD && (Settings.EqualizeVolume || game["EqualizeVolumes"] || game.NotInDatabase))
SoundMixer.EqualizeVolumes();
// Ok, yes, HBlankPeriod's only purpose is game-specific hax.
@ -297,6 +294,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
lagged = true;
CoreComm.DriveLED = false;
Frame++;
CheckSpriteLimit();
PSG.BeginFrame(Cpu.TotalExecutedCycles);
Cpu.Debug = CoreComm.Tracer.Enabled;
@ -319,6 +317,14 @@ namespace BizHawk.Emulation.Cores.PCEngine
islag = false;
}
void CheckSpriteLimit()
{
bool spriteLimit = ForceSpriteLimit | Settings.SpriteLimit;
VDC1.PerformSpriteLimit = spriteLimit;
if (VDC2 != null)
VDC2.PerformSpriteLimit = spriteLimit;
}
public CoreComm CoreComm { get; private set; }
public IVideoProvider VideoProvider
@ -707,7 +713,6 @@ namespace BizHawk.Emulation.Cores.PCEngine
PCESettings n = (PCESettings)o;
bool ret;
if (n.ArcadeCardRewindHack != Settings.ArcadeCardRewindHack ||
n.SpriteLimit != Settings.SpriteLimit ||
n.EqualizeVolume != Settings.EqualizeVolume)
ret = true;
else