Example #1
0
        public GambatteLink(CoreComm comm, GameInfo leftinfo, byte[] leftrom, GameInfo rightinfo, byte[] rightrom, object settings, object syncSettings, bool deterministic)
        {
            ServiceProvider = new BasicServiceProvider(this);
            GambatteLinkSettings     linkSettings     = (GambatteLinkSettings)settings ?? new GambatteLinkSettings();
            GambatteLinkSyncSettings linkSyncSettings = (GambatteLinkSyncSettings)syncSettings ?? new GambatteLinkSyncSettings();

            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);
            LibGambatte.gambatte_linkstatus(R.GambatteState, 259);

            L.ConnectInputCallbackSystem(_inputCallbacks);
            R.ConnectInputCallbackSystem(_inputCallbacks);
            L.ConnectMemoryCallbackSystem(_memorycallbacks);
            R.ConnectMemoryCallbackSystem(_memorycallbacks);

            RomDetails = "LEFT:\r\n" + L.RomDetails + "RIGHT:\r\n" + R.RomDetails;

            LinkConnected = true;

            Frame      = 0;
            LagCount   = 0;
            IsLagFrame = false;

            _blipLeft  = new BlipBuffer(1024);
            _blipRight = new BlipBuffer(1024);
            _blipLeft.SetRates(2097152 * 2, 44100);
            _blipRight.SetRates(2097152 * 2, 44100);

            SetMemoryDomains();
        }
Example #2
0
        public PutSettingsDirtyBits PutSettings(GambatteLinkSettings o)
        {
            var ret = PutSettingsDirtyBits.None;

            for (int i = 0; i < _numCores; i++)
            {
                ret |= _linkedCores[i].PutSettings(o._linkedSettings[i]);
            }
            _settings = o;
            return(ret);
        }
Example #3
0
        public GambatteLink(CoreComm comm, GameInfo leftinfo, byte[] leftrom, GameInfo rightinfo, byte[] rightrom, object Settings, object SyncSettings, bool deterministic)
        {
            ServiceProvider = new BasicServiceProvider(this);
            GambatteLinkSettings     _Settings     = (GambatteLinkSettings)Settings ?? new GambatteLinkSettings();
            GambatteLinkSyncSettings _SyncSettings = (GambatteLinkSyncSettings)SyncSettings ?? new GambatteLinkSyncSettings();

            CoreComm = comm;
            L        = new Gameboy(new CoreComm(comm.ShowMessage, comm.Notify), leftinfo, leftrom, _Settings.L, _SyncSettings.L, deterministic);
            R        = new Gameboy(new CoreComm(comm.ShowMessage, comm.Notify), rightinfo, rightrom, _Settings.R, _SyncSettings.R, deterministic);

            // connect link cable
            LibGambatte.gambatte_linkstatus(L.GambatteState, 259);
            LibGambatte.gambatte_linkstatus(R.GambatteState, 259);

            L.Controller = LCont;
            R.Controller = RCont;
            L.ConnectInputCallbackSystem(_inputCallbacks);
            R.ConnectInputCallbackSystem(_inputCallbacks);
            L.ConnectMemoryCallbackSystem(_memorycallbacks);
            R.ConnectMemoryCallbackSystem(_memorycallbacks);

            comm.VsyncNum            = L.CoreComm.VsyncNum;
            comm.VsyncDen            = L.CoreComm.VsyncDen;
            comm.RomStatusAnnotation = null;
            comm.RomStatusDetails    = "LEFT:\r\n" + L.CoreComm.RomStatusDetails + "RIGHT:\r\n" + R.CoreComm.RomStatusDetails;
            comm.NominalWidth        = L.CoreComm.NominalWidth + R.CoreComm.NominalWidth;
            comm.NominalHeight       = L.CoreComm.NominalHeight;

            LinkConnected = true;

            Frame      = 0;
            LagCount   = 0;
            IsLagFrame = false;

            blip_left  = new BlipBuffer(1024);
            blip_right = new BlipBuffer(1024);
            blip_left.SetRates(2097152 * 2, 44100);
            blip_right.SetRates(2097152 * 2, 44100);

            SetMemoryDomains();
        }
Example #4
0
        public GambatteLink(CoreLoadParameters <GambatteLink.GambatteLinkSettings, GambatteLink.GambatteLinkSyncSettings> lp)
        {
            if (lp.Roms.Count != 2)
            {
                throw new InvalidOperationException("Wrong number of roms");
            }

            ServiceProvider = new BasicServiceProvider(this);
            GambatteLinkSettings     linkSettings     = (GambatteLinkSettings)lp.Settings ?? new GambatteLinkSettings();
            GambatteLinkSyncSettings linkSyncSettings = (GambatteLinkSyncSettings)lp.SyncSettings ?? new GambatteLinkSyncSettings();

            L = new Gameboy(lp.Comm, lp.Roms[0].Game, lp.Roms[0].RomData, linkSettings.L, linkSyncSettings.L, lp.DeterministicEmulationRequested);
            R = new Gameboy(lp.Comm, lp.Roms[1].Game, lp.Roms[1].RomData, linkSettings.R, linkSyncSettings.R, lp.DeterministicEmulationRequested);

            // connect link cable
            LibGambatte.gambatte_linkstatus(L.GambatteState, 259);
            LibGambatte.gambatte_linkstatus(R.GambatteState, 259);

            L.ConnectInputCallbackSystem(_inputCallbacks);
            R.ConnectInputCallbackSystem(_inputCallbacks);
            L.ConnectMemoryCallbackSystem(_memorycallbacks);
            R.ConnectMemoryCallbackSystem(_memorycallbacks);

            RomDetails = "LEFT:\r\n" + L.RomDetails + "RIGHT:\r\n" + R.RomDetails;

            LinkConnected = true;

            Frame      = 0;
            LagCount   = 0;
            IsLagFrame = false;

            _blipLeft  = new BlipBuffer(1024);
            _blipRight = new BlipBuffer(1024);
            _blipLeft.SetRates(2097152 * 2, 44100);
            _blipRight.SetRates(2097152 * 2, 44100);

            SetMemoryDomains();
        }
Example #5
0
 public PutSettingsDirtyBits PutSettings(GambatteLinkSettings o)
 {
     return((PutSettingsDirtyBits)((int)L.PutSettings(o.L) | (int)R.PutSettings(o.R)));
 }
Example #6
0
 public bool PutSettings(GambatteLinkSettings o)
 {
     return(L.PutSettings(o.L) || R.PutSettings(o.R));
 }