Exemple #1
0
            /// <summary>
            /// Instantiate an emulator core
            /// </summary>
            public IEmulator Create(ICoreInventoryParameters cip)
            {
                if (_useCoreLoadParameters)
                {
                    var paramType = typeof(CoreLoadParameters <,>).MakeGenericType(new[] { SettingsType, SyncSettingsType });
                    // TODO: clean this up
                    dynamic param = Activator.CreateInstance(paramType);
                    param.Comm         = cip.Comm;
                    param.Game         = cip.Game;
                    param.Settings     = (dynamic)cip.FetchSettings(Type, SettingsType);
                    param.SyncSettings = (dynamic)cip.FetchSyncSettings(Type, SyncSettingsType);
                    param.Roms         = cip.Roms;
                    param.Discs        = cip.Discs;
                    param.DeterministicEmulationRequested = cip.DeterministicEmulationRequested;
                    return((IEmulator)CTor.Invoke(new object[] { param }));
                }
                else
                {
                    // cores using the old constructor parameters can only take a single rom, so assume that here
                    object[] o = new object[_paramMap.Count];
                    Bp(o, "comm", cip.Comm);
                    Bp(o, "game", cip.Game);
                    Bp(o, "rom", cip.Roms[0].RomData);
                    Bp(o, "file", cip.Roms[0].FileData);
                    Bp(o, "deterministic", cip.DeterministicEmulationRequested);
                    Bp(o, "settings", cip.FetchSettings(Type, SettingsType));
                    Bp(o, "syncsettings", cip.FetchSyncSettings(Type, SyncSettingsType));
                    Bp(o, "extension", cip.Roms[0].Extension);

                    return((IEmulator)CTor.Invoke(o));
                }
            }
            private IEmulator CreateUsingLegacyConstructorParameters(ICoreInventoryParameters cip)
            {
                // cores using the old constructor parameters can only take a single rom, so assume that here
                object[] o = new object[_paramMap.Count];
                Bp(o, "comm", cip.Comm);
                Bp(o, "game", cip.Game);
                Bp(o, "rom", cip.Roms[0].RomData);
                Bp(o, "file", cip.Roms[0].FileData);
                Bp(o, "deterministic", cip.DeterministicEmulationRequested);
                Bp(o, "settings", cip.FetchSettings(Type, SettingsType));
                Bp(o, "syncsettings", cip.FetchSyncSettings(Type, SyncSettingsType));
                Bp(o, "extension", cip.Roms[0].Extension);

                return((IEmulator)CTor.Invoke(o));
            }
            private IEmulator CreateUsingCoreLoadParameters(ICoreInventoryParameters cip)
            {
                var paramType = typeof(CoreLoadParameters <,>).MakeGenericType(SettingsType, SyncSettingsType);
                // TODO: clean this up
                dynamic param = Activator.CreateInstance(paramType);

                param.Comm         = cip.Comm;
                param.Game         = cip.Game;
                param.Settings     = (dynamic)cip.FetchSettings(Type, SettingsType);
                param.SyncSettings = (dynamic)cip.FetchSyncSettings(Type, SyncSettingsType);
                param.Roms         = cip.Roms;
                param.Discs        = cip.Discs;
                param.DeterministicEmulationRequested = cip.DeterministicEmulationRequested;
                return((IEmulator)CTor.Invoke(new object[] { param }));
            }