From f27dd11389c6c447f16de3b9695d424eaf62ff00 Mon Sep 17 00:00:00 2001 From: beirich Date: Thu, 27 Feb 2014 01:00:21 +0000 Subject: [PATCH] PCE: Sprite Limit no longer requires Core Reboot. Also, selecting Equalize Volumes no longer makes it impossible to load a HuCard. --- .../Consoles/PC Engine/PCEngine.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs index d9280d0cf7..25ab98821d 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs @@ -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