From 239eb5b268b63d1bb6ecc27f57796416f2e29aff Mon Sep 17 00:00:00 2001 From: goyuken Date: Mon, 2 Jun 2014 16:33:08 +0000 Subject: [PATCH] saveram stuff --- BizHawk.Client.Common/movie/Movie.cs | 4 ++-- BizHawk.Client.Common/movie/TasMovie.cs | 2 +- .../Consoles/WonderSwan/BizSwan.cs | 8 ++++++++ .../Consoles/WonderSwan/WonderSwan.cs | 7 ++++++- output/dll/bizswan.dll | Bin 91136 -> 91648 bytes wonderswan/system.cpp | 12 ++++++++++++ wonderswan/system.h | 2 ++ 7 files changed, 31 insertions(+), 4 deletions(-) diff --git a/BizHawk.Client.Common/movie/Movie.cs b/BizHawk.Client.Common/movie/Movie.cs index 8a623b1055..4aa615ed61 100644 --- a/BizHawk.Client.Common/movie/Movie.cs +++ b/BizHawk.Client.Common/movie/Movie.cs @@ -108,7 +108,7 @@ namespace BizHawk.Client.Common // If Starting a new recording requires clearing sram it shoudl be done at a higher layer and not rely on all IMovies doing this // Haven't removed it yet because I coudln't guarantee that power-on movies coudl live without it // And the immediate fire is that Savestate movies are breaking - if (!Header.StartsFromSavestate && Global.Emulator.SystemId != "WSWAN") + if (!Header.StartsFromSavestate) // && Global.Emulator.SystemId != "WSWAN") { Global.Emulator.ClearSaveRam(); } @@ -126,7 +126,7 @@ namespace BizHawk.Client.Common public void StartNewPlayback() { // See StartNewRecording for details as to why this savestate check is here - if (!Header.StartsFromSavestate && Global.Emulator.SystemId != "WSWAN") + if (!Header.StartsFromSavestate) // && Global.Emulator.SystemId != "WSWAN") { Global.Emulator.ClearSaveRam(); } diff --git a/BizHawk.Client.Common/movie/TasMovie.cs b/BizHawk.Client.Common/movie/TasMovie.cs index 4af915c268..25ea42c9c4 100644 --- a/BizHawk.Client.Common/movie/TasMovie.cs +++ b/BizHawk.Client.Common/movie/TasMovie.cs @@ -191,7 +191,7 @@ namespace BizHawk.Client.Common public void StartNewPlayback() { _mode = Moviemode.Play; - Global.Emulator.ClearSaveRam(); + Global.Emulator.ClearSaveRam(); // should this exist?? } public void Stop(bool saveChanges = true) diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs index e1c30b106b..c20643ac99 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/BizSwan.cs @@ -86,6 +86,14 @@ namespace BizHawk.Emulation.Cores.WonderSwan [DllImport(dd, CallingConvention = cc)] public static extern bool bizswan_saveramsave(IntPtr core, byte[] data, int maxsize); + /// + /// bad function + /// + /// + /// pass EXACTLY the same syncsettings you originally passed on core load, else DRAGONS + [DllImport(dd, CallingConvention = cc)] + public static extern void bizswan_saveramclearhacky(IntPtr core, [In] ref SyncSettings settings); + /// /// put non-sync settings, can be done at any time /// diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs index 75c3ad4741..bee8490f59 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs @@ -64,6 +64,9 @@ namespace BizHawk.Emulation.Cores.WonderSwan if (!BizSwan.bizswan_load(Core, rom, rom.Length, ref ss, ref rotate)) throw new InvalidOperationException("bizswan_load() returned FALSE!"); + // for future uses of ClearSaveRam(), it's important that we save this + _DONTTOUCHME = ss; + CoreComm.VsyncNum = 3072000; // master CPU clock, also pixel clock CoreComm.VsyncDen = (144 + 15) * (224 + 32); // 144 vislines, 15 vblank lines; 224 vispixels, 32 hblank pixels @@ -149,7 +152,8 @@ namespace BizHawk.Emulation.Cores.WonderSwan public void ClearSaveRam() { - throw new InvalidOperationException("A new core starts with a clear saveram. Instantiate a new core if you want this."); + BizSwan.bizswan_saveramclearhacky(Core, ref _DONTTOUCHME); + //throw new InvalidOperationException("A new core starts with a clear saveram. Instantiate a new core if you want this."); } public bool SaveRamModified @@ -307,6 +311,7 @@ namespace BizHawk.Emulation.Cores.WonderSwan Settings _Settings; SyncSettings _SyncSettings; + BizSwan.SyncSettings _DONTTOUCHME; public class Settings { diff --git a/output/dll/bizswan.dll b/output/dll/bizswan.dll index 9ad84e4e81c9f5903a4ef9635837eec411db2289..a45545bcccef5c1513160d4b3fa4db325e667efd 100644 GIT binary patch delta 9898 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 delta 9725 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 diff --git a/wonderswan/system.cpp b/wonderswan/system.cpp index 0d56e3406a..e87d24b854 100644 --- a/wonderswan/system.cpp +++ b/wonderswan/system.cpp @@ -308,6 +308,13 @@ namespace MDFN_IEN_WSWAN NSS(rotate); } + void System::SaveRamClearHacky(const SyncSettings &s) + { + // this really shouldn't be done + // be sure to pass the same SyncSettings that the core was originally initialized with! + memory.Init(s); + } + EXPORT System *bizswan_new() { return new System(); @@ -397,4 +404,9 @@ namespace MDFN_IEN_WSWAN NewStateExternalFunctions loader(ff); s->SyncState(&loader); } + + EXPORT void bizswan_saveramclearhacky(System *s, const SyncSettings *settings) + { + s->SaveRamClearHacky(*settings); + } } diff --git a/wonderswan/system.h b/wonderswan/system.h index 1893a20239..875d926f53 100644 --- a/wonderswan/system.h +++ b/wonderswan/system.h @@ -45,6 +45,8 @@ public: bool GetMemoryArea(int index, const char *&name, int &size, uint8 *&data); + void SaveRamClearHacky(const SyncSettings &s); + public: GFX gfx; Memory memory;