//[CoreConstructor("GB", "GBC")] public GBHawkLink(CoreComm comm, GameInfo game_L, byte[] rom_L, GameInfo game_R, byte[] rom_R, /*string gameDbFn,*/ object settings, object syncSettings) { var ser = new BasicServiceProvider(this); ServiceProvider = ser; linkSettings = (GBLinkSettings)settings ?? new GBLinkSettings(); linkSyncSettings = (GBLinkSyncSettings)syncSettings ?? new GBLinkSyncSettings(); _controllerDeck = new GBHawkLinkControllerDeck(GBHawkLinkControllerDeck.DefaultControllerName, GBHawkLinkControllerDeck.DefaultControllerName); CoreComm = comm; var temp_set_L = new GBHawk.GBHawk.GBSettings(); var temp_set_R = new GBHawk.GBHawk.GBSettings(); var temp_sync_L = new GBHawk.GBHawk.GBSyncSettings(); var temp_sync_R = new GBHawk.GBHawk.GBSyncSettings(); temp_sync_L.ConsoleMode = linkSyncSettings.ConsoleMode_L; temp_sync_R.ConsoleMode = linkSyncSettings.ConsoleMode_R; temp_sync_L.GBACGB = linkSyncSettings.GBACGB; temp_sync_R.GBACGB = linkSyncSettings.GBACGB; temp_sync_L.RTCInitialTime = linkSyncSettings.RTCInitialTime_L; temp_sync_R.RTCInitialTime = linkSyncSettings.RTCInitialTime_R; 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); ser.Register <IVideoProvider>(this); ser.Register <ISoundProvider>(this); _tracer = new TraceBuffer { Header = L.cpu.TraceHeader }; ser.Register <ITraceable>(_tracer); _lStates = L.ServiceProvider.GetService <IStatable>(); _rStates = R.ServiceProvider.GetService <IStatable>(); SetupMemoryDomains(); HardReset(); }
public GBHawkLink(CoreLoadParameters <GBHawkLink.GBLinkSettings, GBHawkLink.GBLinkSyncSettings> lp) { if (lp.Roms.Count != 2) { throw new InvalidOperationException("Wrong number of roms"); } var ser = new BasicServiceProvider(this); ServiceProvider = ser; linkSettings = (GBLinkSettings)lp.Settings ?? new GBLinkSettings(); linkSyncSettings = (GBLinkSyncSettings)lp.SyncSettings ?? new GBLinkSyncSettings(); _controllerDeck = new GBHawkLinkControllerDeck(GBHawkLinkControllerDeck.DefaultControllerName, GBHawkLinkControllerDeck.DefaultControllerName); var temp_set_L = new GBHawk.GBHawk.GBSettings(); var temp_set_R = new GBHawk.GBHawk.GBSettings(); var temp_sync_L = new GBHawk.GBHawk.GBSyncSettings(); var temp_sync_R = new GBHawk.GBHawk.GBSyncSettings(); temp_sync_L.ConsoleMode = linkSyncSettings.ConsoleMode_L; temp_sync_R.ConsoleMode = linkSyncSettings.ConsoleMode_R; temp_sync_L.GBACGB = linkSyncSettings.GBACGB; temp_sync_R.GBACGB = linkSyncSettings.GBACGB; temp_sync_L.RTCInitialTime = linkSyncSettings.RTCInitialTime_L; temp_sync_R.RTCInitialTime = linkSyncSettings.RTCInitialTime_R; temp_sync_L.RTCOffset = linkSyncSettings.RTCOffset_L; temp_sync_R.RTCOffset = linkSyncSettings.RTCOffset_R; L = new GBHawk.GBHawk(lp.Comm, lp.Roms[0].Game, lp.Roms[0].RomData, temp_set_L, temp_sync_L); R = new GBHawk.GBHawk(lp.Comm, lp.Roms[1].Game, lp.Roms[1].RomData, 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); _lStates = L.ServiceProvider.GetService <IStatable>(); _rStates = R.ServiceProvider.GetService <IStatable>(); SetupMemoryDomains(); HardReset(); }