From 425cafe1e8eca566a612befd93b2fd5e1abc68e1 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Wed, 4 Sep 2024 15:38:41 -0700 Subject: [PATCH] [ChannelF] Add cart ram to memory domains, ensure loading a savestate keep the correct byte array for memory domains, expose cart ram for cheevos --- .../RetroAchievements/RetroAchievements.Memory.cs | 5 +++++ .../Consoles/Fairchild/ChannelF/Cart/VesCartBase.cs | 4 ++++ .../Consoles/Fairchild/ChannelF/ChannelF.IStatable.cs | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs index fd009c0ff8..f67705c832 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RetroAchievements.Memory.cs @@ -565,6 +565,11 @@ namespace BizHawk.Client.EmuHawk // special case mfs.Add(new ChanFMemFunctions(debuggable, domains["VRAM"])); mfs.Add(new(domains.SystemBus, 0, domains.SystemBus.Size)); + // only add in SRAM if it's from HANG/MAZE carts (where SRAM isn't on the System Bus) + if (domains.Has("SRAM") && domains["SRAM"].Size == 0x200) + { + mfs.Add(new(domains["SRAM"], 0, domains["SRAM"].Size)); + } break; case ConsoleID.PCEngineCD: mfs.Add(new(domains["System Bus (21 bit)"], 0x1F0000, 0x2000)); diff --git a/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/Cart/VesCartBase.cs b/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/Cart/VesCartBase.cs index 402673173a..ce676dac84 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/Cart/VesCartBase.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/Cart/VesCartBase.cs @@ -12,6 +12,10 @@ namespace BizHawk.Emulation.Cores.Consoles.ChannelF public virtual void SyncByteArrayDomain(ChannelF sys) { sys.SyncByteArrayDomain("ROM", _rom); + if (_ram?.Length > 0) + { + sys.SyncByteArrayDomain("SRAM", _ram); + } } public virtual byte[] ROM diff --git a/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.IStatable.cs b/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.IStatable.cs index dd61bb7977..465b4000a4 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.IStatable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Fairchild/ChannelF/ChannelF.IStatable.cs @@ -36,6 +36,12 @@ namespace BizHawk.Emulation.Cores.Consoles.ChannelF CPU.SyncState(ser); Cartridge.SyncState(ser); ser.EndSection(); + + if (ser.IsReader) + { + SyncAllByteArrayDomains(); + } + /* byte[] core = null;