PCE - implemented lag counter added to text savestates. Attempted to add to binary savestates but it caused a crash and I didn't feel like digging into it at this time

This commit is contained in:
andres.delikat 2011-05-01 14:51:59 +00:00
parent 3efd98e887
commit b70e0eff76
2 changed files with 16 additions and 3 deletions

View File

@ -93,6 +93,7 @@
int player = SelectedController + 1; int player = SelectedController + 1;
if (player < 6) if (player < 6)
{ {
lagged = false;
if (SEL == false) // return buttons if (SEL == false) // return buttons
{ {
if (Controller["P" + player + " B1"]) value &= 0xFE; if (Controller["P" + player + " B1"]) value &= 0xFE;

View File

@ -95,11 +95,14 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
SetupMemoryDomains(); SetupMemoryDomains();
} }
private int _lagcount = 0;
private bool lagged = true;
public int Frame { get; set; } public int Frame { get; set; }
public int LagCount { get { return -1; } set { return; } } //TODO: Implement this public int LagCount { get { return _lagcount; } set { _lagcount = value; } } //TODO: Implement this
public void FrameAdvance(bool render) public void FrameAdvance(bool render)
{ {
lagged = true;
Controller.UpdateControls(Frame++); Controller.UpdateControls(Frame++);
PSG.BeginFrame(Cpu.TotalExecutedCycles); PSG.BeginFrame(Cpu.TotalExecutedCycles);
@ -110,6 +113,8 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
VDC1.ExecFrame(render); VDC1.ExecFrame(render);
PSG.EndFrame(Cpu.TotalExecutedCycles); PSG.EndFrame(Cpu.TotalExecutedCycles);
if (lagged)
_lagcount++;
} }
public IVideoProvider VideoProvider public IVideoProvider VideoProvider
@ -143,6 +148,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
writer.Write("RAM "); writer.Write("RAM ");
Ram.SaveAsHex(writer); Ram.SaveAsHex(writer);
writer.WriteLine("Frame " + Frame); writer.WriteLine("Frame " + Frame);
writer.WriteLine("Lag " + _lagcount);
if (Cpu.ReadMemory21 == ReadMemorySF2) if (Cpu.ReadMemory21 == ReadMemorySF2)
writer.WriteLine("SF2MapperLatch " + SF2MapperLatch); writer.WriteLine("SF2MapperLatch " + SF2MapperLatch);
writer.WriteLine("IOBuffer {0:X2}", IOBuffer); writer.WriteLine("IOBuffer {0:X2}", IOBuffer);
@ -177,6 +183,8 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
if (args[0] == "[/PCEngine]") break; if (args[0] == "[/PCEngine]") break;
if (args[0] == "Frame") if (args[0] == "Frame")
Frame = int.Parse(args[1]); Frame = int.Parse(args[1]);
else if (args[0] == "Lag")
_lagcount = int.Parse(args[1]);
else if (args[0] == "SF2MapperLatch") else if (args[0] == "SF2MapperLatch")
SF2MapperLatch = byte.Parse(args[1]); SF2MapperLatch = byte.Parse(args[1]);
else if (args[0] == "IOBuffer") else if (args[0] == "IOBuffer")
@ -192,9 +200,9 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
else if (args[0] == "[VPC]") else if (args[0] == "[VPC]")
VPC.LoadStateText(reader); VPC.LoadStateText(reader);
else if (args[0] == "[VDC1]") else if (args[0] == "[VDC1]")
VDC1.LoadStateText(reader,1); VDC1.LoadStateText(reader, 1);
else if (args[0] == "[VDC2]") else if (args[0] == "[VDC2]")
VDC2.LoadStateText(reader,2); VDC2.LoadStateText(reader, 2);
else else
Console.WriteLine("Skipping unrecognized identifier " + args[0]); Console.WriteLine("Skipping unrecognized identifier " + args[0]);
} }
@ -206,6 +214,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
{ {
writer.Write(Ram); writer.Write(Ram);
writer.Write(Frame); writer.Write(Frame);
// writer.Write(_lagcount); //TODO: why does this fail?
writer.Write(SF2MapperLatch); writer.Write(SF2MapperLatch);
writer.Write(IOBuffer); writer.Write(IOBuffer);
Cpu.SaveStateBinary(writer); Cpu.SaveStateBinary(writer);
@ -215,6 +224,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
} else { } else {
writer.Write(Ram); writer.Write(Ram);
writer.Write(Frame); writer.Write(Frame);
// writer.Write(_lagcount);
writer.Write(IOBuffer); writer.Write(IOBuffer);
Cpu.SaveStateBinary(writer); Cpu.SaveStateBinary(writer);
VCE.SaveStateBinary(writer); VCE.SaveStateBinary(writer);
@ -231,6 +241,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
{ {
Ram = reader.ReadBytes(0x2000); Ram = reader.ReadBytes(0x2000);
Frame = reader.ReadInt32(); Frame = reader.ReadInt32();
// _lagcount = reader.ReadInt32();
SF2MapperLatch = reader.ReadByte(); SF2MapperLatch = reader.ReadByte();
IOBuffer = reader.ReadByte(); IOBuffer = reader.ReadByte();
Cpu.LoadStateBinary(reader); Cpu.LoadStateBinary(reader);
@ -240,6 +251,7 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
} else { } else {
Ram = reader.ReadBytes(0x8000); Ram = reader.ReadBytes(0x8000);
Frame = reader.ReadInt32(); Frame = reader.ReadInt32();
// _lagcount = reader.ReadInt32();
IOBuffer = reader.ReadByte(); IOBuffer = reader.ReadByte();
Cpu.LoadStateBinary(reader); Cpu.LoadStateBinary(reader);
VCE.LoadStateBinary(reader); VCE.LoadStateBinary(reader);