From 18f3da0f554e3b9570bcb4ad8c7a620fe0434298 Mon Sep 17 00:00:00 2001 From: beirich Date: Tue, 18 Sep 2012 11:09:05 +0000 Subject: [PATCH] gen: add missing savestate vars. rewind seems stable now from the games I've tested. --- .../Consoles/Sega/Genesis/Genesis.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Sega/Genesis/Genesis.cs b/BizHawk.Emulation/Consoles/Sega/Genesis/Genesis.cs index cf50afde9c..3fad570697 100644 --- a/BizHawk.Emulation/Consoles/Sega/Genesis/Genesis.cs +++ b/BizHawk.Emulation/Consoles/Sega/Genesis/Genesis.cs @@ -271,7 +271,7 @@ namespace BizHawk.Emulation.Consoles.Sega public void SaveStateText(TextWriter writer) { - var buf = new byte[141485 + SaveRAM.Length]; + var buf = new byte[141501 + SaveRAM.Length]; var stream = new MemoryStream(buf); var bwriter = new BinaryWriter(stream); SaveStateBinary(bwriter); @@ -297,7 +297,7 @@ namespace BizHawk.Emulation.Consoles.Sega public void LoadStateText(TextReader reader) { - var buf = new byte[141485 + SaveRAM.Length]; + var buf = new byte[141501 + SaveRAM.Length]; var version = reader.ReadLine(); if (version != "Version 1") throw new Exception("Not a valid state vesrion! sorry! your state is bad! Robust states will be added later!"); @@ -348,6 +348,15 @@ namespace BizHawk.Emulation.Consoles.Sega writer.Write(Frame); // 4 writer.Write(M68000HasZ80Bus); // 1 writer.Write(Z80Reset); // 1 + writer.Write(BankRegion); // 4 + + for (int i = 0; i < 3; i++) + { + writer.Write(IOPorts[i].Data); + writer.Write(IOPorts[i].TxData); + writer.Write(IOPorts[i].RxData); + writer.Write(IOPorts[i].SCtrl); + } if (SaveRAM.Length > 0) writer.Write(SaveRAM); @@ -370,11 +379,23 @@ namespace BizHawk.Emulation.Consoles.Sega Frame = reader.ReadInt32(); M68000HasZ80Bus = reader.ReadBoolean(); Z80Reset = reader.ReadBoolean(); + BankRegion = reader.ReadInt32(); + + for (int i = 0; i < 3; i++) + { + IOPorts[i].Data = reader.ReadByte(); + IOPorts[i].TxData = reader.ReadByte(); + IOPorts[i].RxData = reader.ReadByte(); + IOPorts[i].SCtrl = reader.ReadByte(); + } + + if (SaveRAM.Length > 0) + SaveRAM = reader.ReadBytes(SaveRAM.Length); } public byte[] SaveStateBinary() { - var buf = new byte[141485+SaveRAM.Length]; + var buf = new byte[141501+SaveRAM.Length]; var stream = new MemoryStream(buf); var writer = new BinaryWriter(stream); SaveStateBinary(writer);