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);