Exemple #1
0
        //[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();
        }