diff --git a/src/BizHawk.Client.Common/RomLoader.cs b/src/BizHawk.Client.Common/RomLoader.cs index 9785cb1be5..0684879e2d 100644 --- a/src/BizHawk.Client.Common/RomLoader.cs +++ b/src/BizHawk.Client.Common/RomLoader.cs @@ -1071,6 +1071,51 @@ namespace BizHawk.Client.Common return true; } + /// TODO add and handle (you can drag-and-drop scripts and there are already non-rom things in this list, so why not?) + private static readonly FilesystemFilterSet RomFSFilterSet = new FilesystemFilterSet( + new FilesystemFilter("Music Files", new string[0], devBuildExtraExts: new[] { "psf", "minipsf", "sid", "nsf" }), + new FilesystemFilter("Disc Images", new[] { "cue", "ccd", "mds", "m3u" }), + new FilesystemFilter("NES", new[] { "nes", "fds", "unf", "nsf" }, addArchiveExts: true), + new FilesystemFilter("Super NES", new[] { "smc", "sfc", "xml" }, addArchiveExts: true), + new FilesystemFilter("PlayStation", new[] { "cue", "ccd", "mds", "m3u" }), + new FilesystemFilter("PSX Executables (experimental)", new string[0], devBuildExtraExts: new[] { "exe" }), + new FilesystemFilter("PSF Playstation Sound File", new[] { "psf", "minipsf" }), + new FilesystemFilter("Nintendo 64", new[] { "z64", "v64", "n64" }), + new FilesystemFilter("Gameboy", new[] { "gb", "gbc", "sgb" }, addArchiveExts: true), + new FilesystemFilter("Gameboy Advance", new[] { "gba" }, addArchiveExts: true), + new FilesystemFilter("Nintendo DS", new[] { "nds" }), + new FilesystemFilter("Master System", new[] { "sms", "gg", "sg" }, addArchiveExts: true), + new FilesystemFilter("PC Engine", new[] { "pce", "sgx", "cue", "ccd", "mds" }, addArchiveExts: true), + new FilesystemFilter("Atari 2600", new[] { "a26" }, devBuildExtraExts: new[] { "bin" }, addArchiveExts: true), + new FilesystemFilter("Atari 7800", new[] { "a78" }, devBuildExtraExts: new[] { "bin" }, addArchiveExts: true), + new FilesystemFilter("Atari Lynx", new[] { "lnx" }, addArchiveExts: true), + new FilesystemFilter("ColecoVision", new[] { "col" }, addArchiveExts: true), + new FilesystemFilter("IntelliVision", new[] { "int", "bin", "rom" }, addArchiveExts: true), + new FilesystemFilter("TI-83", new[] { "rom" }, addArchiveExts: true), + FilesystemFilter.Archives, + new FilesystemFilter("Genesis", new[] { "gen", "md", "smd", "32x", "bin", "cue", "ccd" }, addArchiveExts: true), + new FilesystemFilter("SID Commodore 64 Music File", new string[0], devBuildExtraExts: new[] { "sid" }, devBuildAddArchiveExts: true), + new FilesystemFilter("WonderSwan", new[] { "ws", "wsc" }, addArchiveExts: true), + new FilesystemFilter("Apple II", new[] { "dsk", "do", "po" }, addArchiveExts: true), + new FilesystemFilter("Virtual Boy", new[] { "vb" }, addArchiveExts: true), + new FilesystemFilter("Neo Geo Pocket", new[] { "ngp", "ngc" }, addArchiveExts: true), + new FilesystemFilter("Commodore 64", new[] { "prg", "d64", "g64", "crt", "tap" }, addArchiveExts: true), + new FilesystemFilter("Amstrad CPC", new string[0], devBuildExtraExts: new[] { "cdt", "dsk" }, devBuildAddArchiveExts: true), + new FilesystemFilter("Sinclair ZX Spectrum", new[] { "tzx", "tap", "dsk", "pzx", "csw", "wav" }, addArchiveExts: true), + new FilesystemFilter("Odyssey 2", new[] { "o2" }), + new FilesystemFilter("Uzebox", new [] { "uze" }), + FilesystemFilter.EmuHawkSaveStates + ); + + public static readonly IReadOnlyCollection KnownRomExtensions = RomFSFilterSet.Filters + .SelectMany(f => f.Extensions) + .Distinct() + .Except(FilesystemFilter.ArchiveExtensions.Concat(new[] { "State" })) + .Select(s => $".{s.ToUpperInvariant()}") // this is what's expected at call-site + .ToList(); + + public static readonly string RomFilter = RomFSFilterSet.ToString("Everything"); + private static string DiscHashWarningText(GameInfo game, string discHash) => game == null || game.IsRomStatusBad() || game.Status == RomStatus.NotInDatabase ? "Disc could not be identified as known-good. Look for a better rip." diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 5066095d53..851958ba66 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -335,7 +335,7 @@ namespace BizHawk.Client.EmuHawk var args = new LoadRomArgs(); - var filter = RomFilter; + var filter = RomLoader.RomFilter; if (oac.Result == AdvancedRomLoaderType.LibretroLaunchGame) { diff --git a/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs b/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs index 7ed2477bc0..efbbb4db3d 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs @@ -161,7 +161,7 @@ namespace BizHawk.Client.EmuHawk { sortedFiles[LoadOrdering.LegacyMovieFile].Add(fileInformation); } - else if (KnownRomExtensions.Contains(ext)) + else if (RomLoader.KnownRomExtensions.Contains(ext)) { if (string.IsNullOrEmpty(archive) || !_nonArchive.Contains(ext)) { diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 88510b196c..797d0d8250 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -2223,51 +2223,6 @@ namespace BizHawk.Client.EmuHawk } } - /// TODO add and handle (you can drag-and-drop scripts and there are already non-rom things in this list, so why not?) - private static readonly FilesystemFilterSet RomFSFilterSet = new FilesystemFilterSet( - new FilesystemFilter("Music Files", new string[0], devBuildExtraExts: new[] { "psf", "minipsf", "sid", "nsf" }), - new FilesystemFilter("Disc Images", new[] { "cue", "ccd", "mds", "m3u" }), - new FilesystemFilter("NES", new[] { "nes", "fds", "unf", "nsf" }, addArchiveExts: true), - new FilesystemFilter("Super NES", new[] { "smc", "sfc", "xml" }, addArchiveExts: true), - new FilesystemFilter("PlayStation", new[] { "cue", "ccd", "mds", "m3u" }), - new FilesystemFilter("PSX Executables (experimental)", new string[0], devBuildExtraExts: new[] { "exe" }), - new FilesystemFilter("PSF Playstation Sound File", new[] { "psf", "minipsf" }), - new FilesystemFilter("Nintendo 64", new[] { "z64", "v64", "n64" }), - new FilesystemFilter("Gameboy", new[] { "gb", "gbc", "sgb" }, addArchiveExts: true), - new FilesystemFilter("Gameboy Advance", new[] { "gba" }, addArchiveExts: true), - new FilesystemFilter("Nintendo DS", new[] { "nds" }), - new FilesystemFilter("Master System", new[] { "sms", "gg", "sg" }, addArchiveExts: true), - new FilesystemFilter("PC Engine", new[] { "pce", "sgx", "cue", "ccd", "mds" }, addArchiveExts: true), - new FilesystemFilter("Atari 2600", new[] { "a26" }, devBuildExtraExts: new[] { "bin" }, addArchiveExts: true), - new FilesystemFilter("Atari 7800", new[] { "a78" }, devBuildExtraExts: new[] { "bin" }, addArchiveExts: true), - new FilesystemFilter("Atari Lynx", new[] { "lnx" }, addArchiveExts: true), - new FilesystemFilter("ColecoVision", new[] { "col" }, addArchiveExts: true), - new FilesystemFilter("IntelliVision", new[] { "int", "bin", "rom" }, addArchiveExts: true), - new FilesystemFilter("TI-83", new[] { "rom" }, addArchiveExts: true), - FilesystemFilter.Archives, - new FilesystemFilter("Genesis", new[] { "gen", "md", "smd", "32x", "bin", "cue", "ccd" }, addArchiveExts: true), - new FilesystemFilter("SID Commodore 64 Music File", new string[0], devBuildExtraExts: new[] { "sid" }, devBuildAddArchiveExts: true), - new FilesystemFilter("WonderSwan", new[] { "ws", "wsc" }, addArchiveExts: true), - new FilesystemFilter("Apple II", new[] { "dsk", "do", "po" }, addArchiveExts: true), - new FilesystemFilter("Virtual Boy", new[] { "vb" }, addArchiveExts: true), - new FilesystemFilter("Neo Geo Pocket", new[] { "ngp", "ngc" }, addArchiveExts: true), - new FilesystemFilter("Commodore 64", new[] { "prg", "d64", "g64", "crt", "tap" }, addArchiveExts: true), - new FilesystemFilter("Amstrad CPC", new string[0], devBuildExtraExts: new[] { "cdt", "dsk" }, devBuildAddArchiveExts: true), - new FilesystemFilter("Sinclair ZX Spectrum", new[] { "tzx", "tap", "dsk", "pzx", "csw", "wav" }, addArchiveExts: true), - new FilesystemFilter("Odyssey 2", new[] { "o2" }), - new FilesystemFilter("Uzebox", new [] { "uze" }), - FilesystemFilter.EmuHawkSaveStates - ); - - private static readonly IReadOnlyCollection KnownRomExtensions = RomFSFilterSet.Filters - .SelectMany(f => f.Extensions) - .Distinct() - .Except(FilesystemFilter.ArchiveExtensions.Concat(new[] { "State" })) - .Select(s => $".{s.ToUpperInvariant()}") // this is what's expected at call-site - .ToList(); - - public static readonly string RomFilter = RomFSFilterSet.ToString("Everything"); - public static readonly string ConfigFileFSFilterString = new FilesystemFilter("Config File", new[] { "ini" }).ToString(); private void OpenRom() @@ -2275,7 +2230,7 @@ namespace BizHawk.Client.EmuHawk using var ofd = new OpenFileDialog { InitialDirectory = Config.PathEntries.RomAbsolutePath(Emulator.SystemId), - Filter = RomFilter, + Filter = RomLoader.RomFilter, RestoreDirectory = false, FilterIndex = _lastOpenRomFilter }; diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs index 23d8f04b7c..b8d212b22b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs @@ -68,7 +68,7 @@ namespace BizHawk.Client.EmuHawk using var ofd = new OpenFileDialog { InitialDirectory = _parent.Config.PathEntries.RomAbsolutePath(), - Filter = MainForm.RomFilter, + Filter = RomLoader.RomFilter, RestoreDirectory = true }; string hawkPath = "";