From 446fac32424788fcd209294ff9419f64a50f5656 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Thu, 8 Feb 2024 23:32:14 -0800 Subject: [PATCH] add in c# side code to actually use new saturnus saveram interface --- .../Consoles/Sega/Saturn/LibSaturnus.cs | 15 +++++++++++++++ .../Consoles/Sega/Saturn/Saturnus.cs | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/LibSaturnus.cs diff --git a/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/LibSaturnus.cs b/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/LibSaturnus.cs new file mode 100644 index 0000000000..366a21f422 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/LibSaturnus.cs @@ -0,0 +1,15 @@ +using BizHawk.BizInvoke; +using BizHawk.Emulation.Cores.Waterbox; + +namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn +{ + public abstract class LibSaturnus : LibNymaCore + { + [BizImport(CC)] + public abstract int GetSaveRamLength(); + [BizImport(CC)] + public abstract void GetSaveRam(byte[] data); + [BizImport(CC)] + public abstract void PutSaveRam(byte[] data, int length); + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Saturnus.cs b/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Saturnus.cs index 88cb73249d..0b6124e695 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Saturnus.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Saturnus.cs @@ -9,6 +9,8 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn [PortedCore(CoreNames.Saturnus, "Mednafen Team", "1.29.0", "https://mednafen.github.io/releases/")] public class Saturnus : NymaCore, IRegionable { + private readonly LibSaturnus _saturnus; + private Saturnus(CoreComm comm) : base(comm, VSystemID.Raw.NULL, null, null, null) { @@ -42,7 +44,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn { "FIRMWARE:$ULTRA", new("SAT", "ULTRAMAN") }, // { "FIRMWARE:$SATAR", new("SAT", "AR") }, // action replay garbage }; - DoInit(lp, "ss.wbx", firmwares); + _saturnus = DoInit(lp, "ss.wbx", firmwares); _cachedSettingsInfo ??= SettingsInfo.Clone(); } @@ -99,5 +101,17 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn } return ret; } + + public new bool SaveRamModified => true; + + public new byte[] CloneSaveRam() + { + var data = new byte[_saturnus.GetSaveRamLength()]; + _saturnus.GetSaveRam(data); + return data; + } + + public new void StoreSaveRam(byte[] data) + => _saturnus.PutSaveRam(data, data.Length); } }