protected override IReadOnlyList <GameSystemViewModel> GenerateSystemsList(IFileSystem fileSystem)
 {
     return(new GameSystemViewModel[]
     {
         GameSystemViewModel.MakeNES(LibRetriX.FCEUMM.Core.Instance, fileSystem),
         GameSystemViewModel.MakeSNES(LibRetriX.Snes9X.Core.Instance, fileSystem),
         //GameSystemViewModel.MakeN64(LibRetriX.ParallelN64.Core.Instance, fileSystem),
         GameSystemViewModel.MakeGB(LibRetriX.Gambatte.Core.Instance, fileSystem),
         GameSystemViewModel.MakeGBA(LibRetriX.VBAM.Core.Instance, fileSystem),
         GameSystemViewModel.MakeDS(LibRetriX.MelonDS.Core.Instance, fileSystem),
         GameSystemViewModel.MakeSG1000(LibRetriX.GPGX.Core.Instance, fileSystem),
         GameSystemViewModel.MakeMasterSystem(LibRetriX.GPGX.Core.Instance, fileSystem),
         GameSystemViewModel.MakeGameGear(LibRetriX.GPGX.Core.Instance, fileSystem),
         GameSystemViewModel.MakeMegaDrive(LibRetriX.GPGX.Core.Instance, fileSystem),
         GameSystemViewModel.MakeMegaCD(LibRetriX.GPGX.Core.Instance, fileSystem),
         //GameSystemViewModel.MakeSaturn(LibRetriX.BeetleSaturn.Core.Instance, fileSystem),
         GameSystemViewModel.MakePlayStation(LibRetriX.BeetlePSX.Core.Instance, fileSystem),
         GameSystemViewModel.MakePCEngine(LibRetriX.BeetlePCEFast.Core.Instance, fileSystem),
         GameSystemViewModel.MakePCEngineCD(LibRetriX.BeetlePCEFast.Core.Instance, fileSystem),
         GameSystemViewModel.MakePCFX(LibRetriX.BeetlePCFX.Core.Instance, fileSystem),
         GameSystemViewModel.MakeWonderSwan(LibRetriX.BeetleWswan.Core.Instance, fileSystem),
         GameSystemViewModel.MakeArcade(LibRetriX.FBAlpha.Core.Instance, fileSystem),
         GameSystemViewModel.MakeNeoGeoPocket(LibRetriX.BeetleNGP.Core.Instance, fileSystem),
         GameSystemViewModel.MakeNeoGeo(LibRetriX.FBAlpha.Core.Instance, fileSystem),
     });
 }
Esempio n. 2
0
        protected override IEnumerable <GameSystemViewModel> GenerateSystemsList(IFileSystem fileSystem)
        {
            yield return(GameSystemViewModel.MakeNES(LibRetriX.FCEUMM.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeSNES(LibRetriX.Snes9X.Core.Instance, fileSystem));

            //yield return GameSystemViewModel.MakeN64(LibRetriX.ParallelN64.Core.Instance, fileSystem);
            yield return(GameSystemViewModel.MakeGB(LibRetriX.Gambatte.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeGBA(LibRetriX.VBAM.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeDS(LibRetriX.MelonDS.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeSG1000(LibRetriX.GenesisPlusGX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeMasterSystem(LibRetriX.GenesisPlusGX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeGameGear(LibRetriX.GenesisPlusGX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeMegaDrive(LibRetriX.GenesisPlusGX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeMegaCD(LibRetriX.GenesisPlusGX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.Make32X(LibRetriX.PicoDrive.Core.Instance, fileSystem));

            //yield return GameSystemViewModel.MakeSaturn(LibRetriX.BeetleSaturn.Core.Instance, fileSystem);
            yield return(GameSystemViewModel.MakePlayStation(LibRetriX.BeetlePSX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakePCEngine(LibRetriX.BeetlePCEFast.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakePCEngineCD(LibRetriX.BeetlePCEFast.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakePCFX(LibRetriX.BeetlePCFX.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeWonderSwan(LibRetriX.BeetleWSwan.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeArcade(LibRetriX.FBAlpha.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeNeoGeoPocket(LibRetriX.BeetleNGP.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakeNeoGeo(LibRetriX.FBAlpha.Core.Instance, fileSystem));

            yield return(GameSystemViewModel.MakePolyGameMaster(LibRetriX.FBAlpha.Core.Instance, fileSystem));
        }
        public async Task <GamePlayerViewModel.Parameter> GenerateGameLaunchEnvironmentAsync(GameSystemViewModel system, IFileInfo file, IDirectoryInfo rootFolder)
        {
            var dependenciesMet = await system.CheckDependenciesMetAsync();

            if (!dependenciesMet || (system.CheckRootFolderRequired(file) && rootFolder == null))
            {
                return(null);
            }

            var vfsRomPath    = "ROM";
            var vfsSystemPath = "System";
            var vfsSavePath   = "Save";

            var core = system.Core;

            string virtualMainFilePath = null;
            var    provider            = default(IStreamProvider);

            if (core.NativeArchiveSupport || !ArchiveStreamProvider.SupportedExtensions.Contains(Path.GetExtension(file.Name)))
            {
                virtualMainFilePath = $"{vfsRomPath}{Path.DirectorySeparatorChar}{file.Name}";
                provider            = new SingleFileStreamProvider(virtualMainFilePath, file);
                if (rootFolder != null)
                {
                    virtualMainFilePath = file.FullName.Substring(rootFolder.FullName.Length + 1);
                    virtualMainFilePath = $"{vfsRomPath}{Path.DirectorySeparatorChar}{virtualMainFilePath}";
                    provider            = new FolderStreamProvider(vfsRomPath, rootFolder);
                }
            }
            else
            {
                var archiveProvider = new ArchiveStreamProvider(vfsRomPath, file);
                await archiveProvider.InitializeAsync();

                provider = archiveProvider;
                var entries = await provider.ListEntriesAsync();

                virtualMainFilePath = entries.FirstOrDefault(d => system.SupportedExtensions.Contains(Path.GetExtension(d)));
            }

            var systemFolder = await system.GetSystemDirectoryAsync();

            var systemProvider = new FolderStreamProvider(vfsSystemPath, systemFolder);

            core.SystemRootPath = vfsSystemPath;
            var saveFolder = await system.GetSaveDirectoryAsync();

            var saveProvider = new FolderStreamProvider(vfsSavePath, saveFolder);

            core.SaveRootPath = vfsSavePath;

            provider = new CombinedStreamProvider(new HashSet <IStreamProvider>()
            {
                provider, systemProvider, saveProvider
            });

            return(new GamePlayerViewModel.Parameter(core, provider, virtualMainFilePath));
        }
Esempio n. 4
0
        public async Task <Tuple <GameLaunchEnvironment, GameLaunchEnvironment.GenerateResult> > GenerateGameLaunchEnvironmentAsync(GameSystemViewModel system, IFileInfo file, IDirectoryInfo rootFolder)
        {
            var dependenciesMet = await system.CheckDependenciesMetAsync();

            if (!dependenciesMet)
            {
                return(Tuple.Create(default(GameLaunchEnvironment), GameLaunchEnvironment.GenerateResult.DependenciesUnmet));
            }

            if (system.CheckRootFolderRequired(file) && rootFolder == null)
            {
                return(Tuple.Create(default(GameLaunchEnvironment), GameLaunchEnvironment.GenerateResult.RootFolderRequired));
            }

            var vfsRomPath    = "ROM";
            var vfsSystemPath = "System";
            var vfsSavePath   = "Save";

            var core = system.Core;

            string virtualMainFilePath = null;
            var    provider            = default(IStreamProvider);

            if (ArchiveStreamProvider.SupportedExtensions.Contains(Path.GetExtension(file.Name)) && core.NativeArchiveSupport == false)
            {
                var archiveProvider = new ArchiveStreamProvider(vfsRomPath, file);
                provider = archiveProvider;
                var entries = await provider.ListEntriesAsync();

                virtualMainFilePath = entries.FirstOrDefault(d => system.SupportedExtensions.Contains(Path.GetExtension(d)));
                if (string.IsNullOrEmpty(virtualMainFilePath))
                {
                    return(Tuple.Create(default(GameLaunchEnvironment), GameLaunchEnvironment.GenerateResult.NoMainFileFound));
                }
            }
            else
            {
                virtualMainFilePath = Path.Combine(vfsRomPath, file.Name);
                provider            = new SingleFileStreamProvider(virtualMainFilePath, file);
                if (rootFolder != null)
                {
                    virtualMainFilePath = file.FullName.Substring(rootFolder.FullName.Length + 1);
                    virtualMainFilePath = Path.Combine(vfsRomPath, virtualMainFilePath);
                    provider            = new FolderStreamProvider(vfsRomPath, rootFolder);
                }
            }

            var systemFolder = await system.GetSystemDirectoryAsync();

            var systemProvider = new FolderStreamProvider(vfsSystemPath, systemFolder);

            core.SystemRootPath = vfsSystemPath;
            var saveFolder = await system.GetSaveDirectoryAsync();

            var saveProvider = new FolderStreamProvider(vfsSavePath, saveFolder);

            core.SaveRootPath = vfsSavePath;

            provider = new CombinedStreamProvider(new HashSet <IStreamProvider>()
            {
                provider, systemProvider, saveProvider
            });

            return(Tuple.Create(new GameLaunchEnvironment(core, provider, virtualMainFilePath), GameLaunchEnvironment.GenerateResult.Success));
        }