diff --git a/BizHawk.Emulation.Common/CoreComms.cs b/BizHawk.Emulation.Common/CoreComms.cs index 9bf71500d2..da09f0e590 100644 --- a/BizHawk.Emulation.Common/CoreComms.cs +++ b/BizHawk.Emulation.Common/CoreComms.cs @@ -6,6 +6,7 @@ namespace BizHawk.Emulation.Common /// This object facilitates communications between client and core /// The primary use is to provide a client => core communication, such as providing client-side callbacks for a core to use /// Any communications that can be described as purely a Core -> Client system, should be provided as an instead + /// It is important that by design this class stay immutable /// public class CoreComm { @@ -19,8 +20,6 @@ namespace BizHawk.Emulation.Common CoreFileProvider = coreFileProvider; } - public CoreComm Clone() => (CoreComm)MemberwiseClone(); - public ICoreFileProvider CoreFileProvider { get; } /// diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.cs index 4bc088284c..63f6d41893 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink/GBHawkLink.cs @@ -55,8 +55,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink temp_sync_L.RTCOffset = linkSyncSettings.RTCOffset_L; temp_sync_R.RTCOffset = linkSyncSettings.RTCOffset_R; - L = new GBHawk.GBHawk(comm.Clone(), game_L, rom_L, temp_set_L, temp_sync_L); - R = new GBHawk.GBHawk(comm.Clone(), game_R, rom_R, temp_set_R, temp_sync_R); + L = new GBHawk.GBHawk(comm, game_L, rom_L, temp_set_L, temp_sync_L); + R = new GBHawk.GBHawk(comm, game_R, rom_R, temp_set_R, temp_sync_R); ser.Register(this); ser.Register(this); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink4x/GBHawkLink4x.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink4x/GBHawkLink4x.cs index 5a9c345340..fc088fa9e8 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink4x/GBHawkLink4x.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawkLink4x/GBHawkLink4x.cs @@ -88,10 +88,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink4x tempSyncC.RTCOffset = Link4xSyncSettings.RTCOffset_C; tempSyncD.RTCOffset = Link4xSyncSettings.RTCOffset_D; - A = new GBHawk.GBHawk(comm.Clone(), game_A, rom_A, tempSetA, tempSyncA); - B = new GBHawk.GBHawk(comm.Clone(), game_B, rom_B, tempSetB, tempSyncB); - C = new GBHawk.GBHawk(comm.Clone(), game_C, rom_C, tempSetC, tempSyncC); - D = new GBHawk.GBHawk(comm.Clone(), game_D, rom_D, tempSetD, tempSyncD); + A = new GBHawk.GBHawk(comm, game_A, rom_A, tempSetA, tempSyncA); + B = new GBHawk.GBHawk(comm, game_B, rom_B, tempSetB, tempSyncB); + C = new GBHawk.GBHawk(comm, game_C, rom_C, tempSetC, tempSyncC); + D = new GBHawk.GBHawk(comm, game_D, rom_D, tempSetD, tempSyncD); ser.Register(this); ser.Register(this); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs index a9f94bc7a3..f4dddb15a9 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/GambatteLink.cs @@ -17,8 +17,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy GambatteLinkSettings linkSettings = (GambatteLinkSettings)settings ?? new GambatteLinkSettings(); GambatteLinkSyncSettings linkSyncSettings = (GambatteLinkSyncSettings)syncSettings ?? new GambatteLinkSyncSettings(); - L = new Gameboy(comm.Clone(), leftinfo, leftrom, linkSettings.L, linkSyncSettings.L, deterministic); - R = new Gameboy(comm.Clone(), rightinfo, rightrom, linkSettings.R, linkSyncSettings.R, deterministic); + L = new Gameboy(comm, leftinfo, leftrom, linkSettings.L, linkSyncSettings.L, deterministic); + R = new Gameboy(comm, rightinfo, rightrom, linkSettings.R, linkSyncSettings.R, deterministic); // connect link cable LibGambatte.gambatte_linkstatus(L.GambatteState, 259); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/SubGBHawk/SubGBHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/SubGBHawk/SubGBHawk.cs index 6cd0902480..cdede6eaee 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/SubGBHawk/SubGBHawk.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/SubGBHawk/SubGBHawk.cs @@ -19,7 +19,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubGBHawk var subGBSettings = (GBHawk.GBHawk.GBSettings)settings ?? new GBHawk.GBHawk.GBSettings(); var subGBSyncSettings = (GBHawk.GBHawk.GBSyncSettings)syncSettings ?? new GBHawk.GBHawk.GBSyncSettings(); - _GBCore = new GBHawk.GBHawk(comm.Clone(), game, rom, subGBSettings, subGBSyncSettings); + _GBCore = new GBHawk.GBHawk(comm, game, rom, subGBSettings, subGBSyncSettings); HardReset(); current_cycle = 0; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/SubNESHawk/SubNESHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/SubNESHawk/SubNESHawk.cs index 787196fc77..a72b0616f9 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/SubNESHawk/SubNESHawk.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/SubNESHawk/SubNESHawk.cs @@ -18,7 +18,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubNESHawk var subNesSettings = (NES.NES.NESSettings)settings ?? new NES.NES.NESSettings(); var subNesSyncSettings = (NES.NES.NESSyncSettings)syncSettings ?? new NES.NES.NESSyncSettings(); - _nesCore = new NES.NES(comm.Clone(), game, rom, subNesSettings, subNesSyncSettings) + _nesCore = new NES.NES(comm, game, rom, subNesSettings, subNesSyncSettings) { using_reset_timing = true }; diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/GGHawkLink/GGHawkLink.cs b/BizHawk.Emulation.Cores/Consoles/Sega/GGHawkLink/GGHawkLink.cs index 71e1d491a3..c90e103287 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/GGHawkLink/GGHawkLink.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/GGHawkLink/GGHawkLink.cs @@ -38,8 +38,8 @@ namespace BizHawk.Emulation.Cores.Sega.GGHawkLink var temp_sync_L = new SMS.SmsSyncSettings(); var temp_sync_R = new SMS.SmsSyncSettings(); - L = new SMS(comm.Clone(), game_L, rom_L, temp_set_L, temp_sync_L); - R = new SMS(comm.Clone(), game_R, rom_R, temp_set_R, temp_sync_R); + L = new SMS(comm, game_L, rom_L, temp_set_L, temp_sync_L); + R = new SMS(comm, game_R, rom_R, temp_set_R, temp_sync_R); ser.Register(this); ser.Register(this);