diff --git a/BizHawk.Client.Common/PathManager.cs b/BizHawk.Client.Common/PathManager.cs index 9479e05e5c..c908157956 100644 --- a/BizHawk.Client.Common/PathManager.cs +++ b/BizHawk.Client.Common/PathManager.cs @@ -100,17 +100,10 @@ namespace BizHawk.Client.Common return Environment.SpecialFolder.Recent.ToString(); } - if (path.Length >= 5 && path.Substring(0, 5) == "%exe%") - { - if (path.Length == 5) - { - return GetExeDirectoryAbsolute(); - } - - var tmp = path.Remove(0, 5); - tmp = tmp.Insert(0, GetExeDirectoryAbsolute()); - return tmp; - } + if (path.StartsWith("%exe%")) + return GetExeDirectoryAbsolute() + path.Substring(5); + if (path.StartsWith("%rom%")) + return Global.Config.LastRomPath + path.Substring(5); if (path[0] == '.') { diff --git a/BizHawk.Client.Common/config/PathEntry.cs b/BizHawk.Client.Common/config/PathEntry.cs index 9a95354253..9b6b710212 100644 --- a/BizHawk.Client.Common/config/PathEntry.cs +++ b/BizHawk.Client.Common/config/PathEntry.cs @@ -128,14 +128,14 @@ namespace BizHawk.Client.Common private static string ResolveToolsPath(string subPath) { - if (Path.IsPathRooted(subPath)) + if (Path.IsPathRooted(subPath) || subPath.StartsWith("%")) { return subPath; } var toolsPath = Global.Config.PathEntries["Global", "Tools"].Path; - // Hack for backwards compabitilbity, preior to 1.11.5, .wch files were in .\Tools, we don't want that to turn into .Tools\Tools + // Hack for backwards compatibility, prior to 1.11.5, .wch files were in .\Tools, we don't want that to turn into .Tools\Tools if (subPath == "Tools") { return toolsPath; diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index 852c058ecd..06e394e0e2 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -2133,8 +2133,8 @@ namespace BizHawk.Client.EmuHawk "Apple II", "*.dsk;*.do;*.po;%ARCH%", "Virtual Boy", "*.vb;%ARCH%", "Neo Geo Pocket", "*.ngp;*.ngc;%ARCH%", - "Sinclair ZX Spectrum", "*.tzx;*.tap;*.dsk;*.pzx;*.csw;*.wav;%ARCH%", - "Amstrad CPC", "*.cdt;*.dsk;%ARCH%", + "Sinclair ZX Spectrum", "*.tzx;*.tap;*.dsk;*.pzx;*.csw;*.wav;%ARCH%", + "Amstrad CPC", "*.cdt;*.dsk;%ARCH%", "All Files", "*.*"); } @@ -2164,8 +2164,8 @@ namespace BizHawk.Client.EmuHawk "Virtual Boy", "*.vb;%ARCH%", "Neo Geo Pocket", "*.ngp;*.ngc;%ARCH%", "Commodore 64", "*.prg; *.d64, *.g64; *.crt; *.tap;%ARCH%", - "Sinclair ZX Spectrum", "*.tzx;*.tap;*.dsk;*.pzx;*.csw;*.wav;%ARCH%", - "All Files", "*.*"); + "Sinclair ZX Spectrum", "*.tzx;*.tap;*.dsk;*.pzx;*.csw;*.wav;%ARCH%", + "All Files", "*.*"); } } @@ -2186,7 +2186,6 @@ namespace BizHawk.Client.EmuHawk } var file = new FileInfo(ofd.FileName); - Global.Config.LastRomPath = file.DirectoryName; _lastOpenRomFilter = ofd.FilterIndex; var lra = new LoadRomArgs { OpenAdvanced = new OpenAdvanced_OpenRom { Path = file.FullName } }; @@ -3550,8 +3549,16 @@ namespace BizHawk.Client.EmuHawk private LoadRomArgs _currentLoadRomArgs; - // Still needs a good bit of refactoring public bool LoadRom(string path, LoadRomArgs args) + { + bool ret = _LoadRom(path, args); + if(!ret) return false; + Global.Config.LastRomPath = Path.GetFullPath(Path.GetDirectoryName(path)); + return true; + } + + // Still needs a good bit of refactoring + public bool _LoadRom(string path, LoadRomArgs args) { path = HawkFile.Util_ResolveLink(path); @@ -3696,7 +3703,7 @@ namespace BizHawk.Client.EmuHawk } } - if (Emulator is TI83 && Global.Config.TI83autoloadKeyPad) + if (Emulator is TI83 && Global.Config.TI83autoloadKeyPad) { GlobalWin.Tools.Load(); } @@ -3725,15 +3732,15 @@ namespace BizHawk.Client.EmuHawk } } - if (Emulator.CoreComm.RomStatusDetails == null && loader.Rom != null) - { - Emulator.CoreComm.RomStatusDetails = $"{loader.Game.Name}\r\nSHA1:{loader.Rom.RomData.HashSHA1()}\r\nMD5:{loader.Rom.RomData.HashMD5()}\r\n"; - } - else if (Emulator.CoreComm.RomStatusDetails == null && loader.Rom == null) - { - // single disc game - Emulator.CoreComm.RomStatusDetails = $"{loader.Game.Name}\r\nSHA1:N/A\r\nMD5:N/A\r\n"; - } + if (Emulator.CoreComm.RomStatusDetails == null && loader.Rom != null) + { + Emulator.CoreComm.RomStatusDetails = $"{loader.Game.Name}\r\nSHA1:{loader.Rom.RomData.HashSHA1()}\r\nMD5:{loader.Rom.RomData.HashMD5()}\r\n"; + } + else if (Emulator.CoreComm.RomStatusDetails == null && loader.Rom == null) + { + // single disc game + Emulator.CoreComm.RomStatusDetails = $"{loader.Game.Name}\r\nSHA1:N/A\r\nMD5:N/A\r\n"; + } if (Emulator.HasBoardInfo()) { diff --git a/BizHawk.Client.EmuHawk/config/PathConfig.cs b/BizHawk.Client.EmuHawk/config/PathConfig.cs index c8eb7ed78e..6c7ef17e6b 100644 --- a/BizHawk.Client.EmuHawk/config/PathConfig.cs +++ b/BizHawk.Client.EmuHawk/config/PathConfig.cs @@ -33,6 +33,7 @@ namespace BizHawk.Client.EmuHawk { "%recent%", "%exe%", + "%rom%", ".\\", "..\\", };