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), }); }
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)); }
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)); }