simplify CoreCom copying by implementing a Clone method, simplifies all the cores that have cores in them, this copies a lot more things than the original code had but it seems that's either fine or fixing broken stuff

This commit is contained in:
adelikat 2020-03-14 15:08:24 -05:00
parent a50467846c
commit 211883889b
9 changed files with 19 additions and 39 deletions

View File

@ -17,6 +17,8 @@ namespace BizHawk.Emulation.Common
Notify = notifyMessage;
}
public CoreComm Clone() => (CoreComm)MemberwiseClone();
public ICoreFileProvider CoreFileProvider { get; set; }
// a core should set these if you wish to provide rom status information yourself. otherwise it will be calculated by the frontend in a way you may not like, using RomGame-related concepts.

View File

@ -57,11 +57,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(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_L, rom_L, temp_set_L, temp_sync_L);
R = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_R, rom_R, temp_set_R, temp_sync_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);
ser.Register<IVideoProvider>(this);
ser.Register<ISoundProvider>(this);

View File

@ -63,14 +63,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
tempSyncC.RTCOffset = Link3xSyncSettings.RTCOffset_C;
tempSyncR.RTCOffset = Link3xSyncSettings.RTCOffset_R;
L = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_L, rom_L, tempSetL, tempSyncL);
C = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_C, rom_C, tempSetC, tempSyncC);
R = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_R, rom_R, tempSetR, tempSyncR);
L = new GBHawk.GBHawk(comm.Clone(), game_L, rom_L, tempSetL, tempSyncL);
C = new GBHawk.GBHawk(comm.Clone(), game_C, rom_C, tempSetC, tempSyncC);
R = new GBHawk.GBHawk(comm.Clone(), game_R, rom_R, tempSetR, tempSyncR);
ser.Register<IVideoProvider>(this);
ser.Register<ISoundProvider>(this);

View File

@ -90,17 +90,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink4x
tempSyncC.RTCOffset = Link4xSyncSettings.RTCOffset_C;
tempSyncD.RTCOffset = Link4xSyncSettings.RTCOffset_D;
A = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_A, rom_A, tempSetA, tempSyncA);
B = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_B, rom_B, tempSetB, tempSyncB);
C = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_C, rom_C, tempSetC, tempSyncC);
D = new GBHawk.GBHawk(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_D, rom_D, tempSetD, tempSyncD);
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);
ser.Register<IVideoProvider>(this);
ser.Register<ISoundProvider>(this);

View File

@ -18,10 +18,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
GambatteLinkSyncSettings linkSyncSettings = (GambatteLinkSyncSettings)syncSettings ?? new GambatteLinkSyncSettings();
CoreComm = comm;
L = new Gameboy(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
leftinfo, leftrom, linkSettings.L, linkSyncSettings.L, deterministic);
R = new Gameboy(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
rightinfo, rightrom, linkSettings.R, linkSyncSettings.R, deterministic);
L = new Gameboy(comm.Clone(), leftinfo, leftrom, linkSettings.L, linkSyncSettings.L, deterministic);
R = new Gameboy(comm.Clone(), rightinfo, rightrom, linkSettings.R, linkSyncSettings.R, deterministic);
// connect link cable
LibGambatte.gambatte_linkstatus(L.GambatteState, 259);

View File

@ -19,8 +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(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game, rom, subGBSettings, subGBSyncSettings);
_GBCore = new GBHawk.GBHawk(comm.Clone(), game, rom, subGBSettings, subGBSyncSettings);
HardReset();
current_cycle = 0;

View File

@ -15,12 +15,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubNESHawk
[CoreConstructor("NES")]
public SubNESHawk(CoreComm comm, GameInfo game, byte[] rom, /*string gameDbFn,*/ object settings, object syncSettings)
{
var subNesSettings = (NES.NES.NESSettings)settings ?? new NES.NES.NESSettings();
var subNesSyncSettings = (NES.NES.NESSyncSettings)syncSettings ?? new NES.NES.NESSyncSettings();
_nesCore = new NES.NES(new CoreComm(comm.ShowMessage, comm.Notify) {CoreFileProvider = comm.CoreFileProvider},
game, rom, subNesSettings, subNesSyncSettings)
_nesCore = new NES.NES(comm.Clone(), game, rom, subNesSettings, subNesSyncSettings)
{
using_reset_timing = true
};

View File

@ -40,17 +40,14 @@ namespace BizHawk.Emulation.Cores.Sega.GGHawkLink
var temp_sync_L = new SMS.SmsSyncSettings();
var temp_sync_R = new SMS.SmsSyncSettings();
L = new SMS(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_L, rom_L, temp_set_L, temp_sync_L);
R = new SMS(new CoreComm(comm.ShowMessage, comm.Notify) { CoreFileProvider = comm.CoreFileProvider },
game_R, rom_R, temp_set_R, temp_sync_R);
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);
ser.Register<IVideoProvider>(this);
ser.Register<ISoundProvider>(this);
_tracer = new TraceBuffer { Header = L.Cpu.TraceHeader };
ser.Register<ITraceable>(_tracer);
ser.Register(_tracer);
ServiceProvider = ser;

View File

@ -248,6 +248,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Coalescer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=codepath/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Coleco/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Colecovision/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=colesced/@EntryIndexedValue">True</s:Boolean>