diff --git a/src/BizHawk.Client.Common/Api/Classes/EmuClientApi.cs b/src/BizHawk.Client.Common/Api/Classes/EmuClientApi.cs index 47320ea4b7..b8a114acfb 100644 --- a/src/BizHawk.Client.Common/Api/Classes/EmuClientApi.cs +++ b/src/BizHawk.Client.Common/Api/Classes/EmuClientApi.cs @@ -140,7 +140,7 @@ namespace BizHawk.Client.Common suppressOSD: false); public bool OpenRom(string path) - => _mainForm.LoadRom(path, new LoadRomArgs(new OpenAdvanced_OpenRom(path))); + => _mainForm.LoadRom(new LoadRomArgs(new OpenAdvanced_OpenRom(path))); public void Pause() => _mainForm.PauseEmulator(); diff --git a/src/BizHawk.Client.Common/IMainFormForApi.cs b/src/BizHawk.Client.Common/IMainFormForApi.cs index e3354b3a7f..16b616ac56 100644 --- a/src/BizHawk.Client.Common/IMainFormForApi.cs +++ b/src/BizHawk.Client.Common/IMainFormForApi.cs @@ -72,7 +72,7 @@ namespace BizHawk.Client.Common bool LoadQuickSave(int slot, bool suppressOSD = false); /// only referenced from EmuClientApi - bool LoadRom(string path, LoadRomArgs args); + bool LoadRom(LoadRomArgs args); bool LoadState(string path, string userFriendlyStateName, bool suppressOSD = false); diff --git a/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs b/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs index d2ba2bd5ed..69bed8071f 100644 --- a/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs +++ b/src/BizHawk.Client.EmuHawk/IMainFormForTools.cs @@ -63,7 +63,7 @@ namespace BizHawk.Client.EmuHawk bool LoadQuickSave(int slot, bool suppressOSD = false); /// only referenced from - bool LoadRom(string path, LoadRomArgs args); + bool LoadRom(LoadRomArgs args); /// only referenced from BitmapBuffer MakeScreenshotImage(); diff --git a/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs b/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs index 8ff033e2dd..0c15af22b4 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.FileLoader.cs @@ -97,7 +97,7 @@ namespace BizHawk.Client.EmuHawk } private bool LoadRom(string filename, string archive = null) - => LoadRom(filename, new LoadRomArgs(new OpenAdvanced_OpenRom(filename))); + => LoadRom(new LoadRomArgs(new OpenAdvanced_OpenRom(filename))); private bool LoadStateFile(string filename, string archive = null) => LoadState(path: filename, userFriendlyStateName: Path.GetFileName(filename)); diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 24b393b9f5..26dedf47f7 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -631,7 +631,7 @@ namespace BizHawk.Client.EmuHawk // Commandline should always override auto-load OpenAdvanced_OpenRom ioa = new(_argParser.cmdRom); if (ioa is OpenAdvanced_OpenRom oaor) ioa = new(oaor.Path.MakeAbsolute()); // fixes #3224; should this be done for all the IOpenAdvanced types? --yoshi - _ = LoadRom(ioa.SimplePath, new LoadRomArgs(ioa)); + _ = LoadRom(new LoadRomArgs(ioa)); if (Game.IsNullInstance()) { ShowMessageBox(owner: null, $"Failed to load {_argParser.cmdRom} specified on commandline"); @@ -1268,11 +1268,8 @@ namespace BizHawk.Client.EmuHawk tool.RebootCore(); return true; } - else - { - if (CurrentlyOpenRomArgs == null) return true; - return LoadRom(CurrentlyOpenRomArgs.OpenAdvanced.SimplePath, CurrentlyOpenRomArgs); - } + if (CurrentlyOpenRomArgs is null) return true; + return LoadRom(CurrentlyOpenRomArgs); } public void PauseEmulator() @@ -2078,13 +2075,12 @@ namespace BizHawk.Client.EmuHawk var ioa = OpenAdvancedSerializer.ParseWithLegacy(rom); // if(ioa is this or that) - for more complex behaviour - string romPath = ioa.SimplePath; - if (!LoadRom(romPath, new LoadRomArgs(ioa), out var failureIsFromAskSave)) + if (!LoadRom(new LoadRomArgs(ioa), out var failureIsFromAskSave)) { if (failureIsFromAskSave) AddOnScreenMessage("ROM loading cancelled; a tool had unsaved changes"); - else if (ioa is OpenAdvanced_LibretroNoGame || File.Exists(romPath)) AddOnScreenMessage("ROM loading failed"); - else Config.RecentRoms.HandleLoadError(this, romPath, rom); + else if (ioa is OpenAdvanced_LibretroNoGame || File.Exists(ioa.SimplePath)) AddOnScreenMessage("ROM loading failed"); + else Config.RecentRoms.HandleLoadError(this, ioa.SimplePath, rom); } } @@ -2314,8 +2310,7 @@ namespace BizHawk.Client.EmuHawk filterIndex: ref _lastOpenRomFilter, initDir: Config.PathEntries.RomAbsolutePath(Emulator.SystemId)); if (result is null) return; - var filePath = new FileInfo(result).FullName; - _ = LoadRom(filePath, new LoadRomArgs(new OpenAdvanced_OpenRom(filePath))); + _ = LoadRom(new LoadRomArgs(new OpenAdvanced_OpenRom(new FileInfo(result).FullName))); } private void CoreSyncSettings(object sender, RomLoader.SettingsLoadArgs e) @@ -3538,9 +3533,7 @@ namespace BizHawk.Client.EmuHawk private LoadRomArgs _currentLoadRomArgs; private bool _isLoadingRom; - public bool LoadRom(string path, LoadRomArgs args) => LoadRom(path, args, out _); - - public bool LoadRom(string path, LoadRomArgs args, out bool failureIsFromAskSave) + private bool LoadRom(string path, LoadRomArgs args, out bool failureIsFromAskSave) { if (!LoadRomInternal(path, args, out failureIsFromAskSave)) return false; @@ -3555,6 +3548,15 @@ namespace BizHawk.Client.EmuHawk return true; } + private bool LoadRom(string path, LoadRomArgs args) + => LoadRom(path, args, out _); + + private bool LoadRom(LoadRomArgs args, out bool failureIsFromAskSave) + => LoadRom(args.OpenAdvanced.SimplePath, args, out failureIsFromAskSave); + + public bool LoadRom(LoadRomArgs args) + => LoadRom(args, out _); + // Still needs a good bit of refactoring private bool LoadRomInternal(string path, LoadRomArgs args, out bool failureIsFromAskSave) { diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/IMainFormForRetroAchievements.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/IMainFormForRetroAchievements.cs index 373b78cd7c..347aaed93c 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/IMainFormForRetroAchievements.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/IMainFormForRetroAchievements.cs @@ -23,7 +23,7 @@ namespace BizHawk.Client.EmuHawk SettingsAdapter GetSettingsAdapterForLoadedCoreUntyped(); - bool LoadRom(string path, LoadRomArgs args); + bool LoadRom(LoadRomArgs args); void PauseEmulator(); diff --git a/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs b/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs index cd11e62906..60cb08d4f1 100644 --- a/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs +++ b/src/BizHawk.Client.EmuHawk/RetroAchievements/RAIntegration.cs @@ -142,7 +142,7 @@ namespace BizHawk.Client.EmuHawk Marshal.Copy(name, 0, buffer, Math.Min(name.Length, 256)); }; _resetEmulator = () => _mainForm.RebootCore(); - _loadROM = path => _ = _mainForm.LoadRom(path, new LoadRomArgs(new OpenAdvanced_OpenRom(path))); + _loadROM = path => _ = _mainForm.LoadRom(new LoadRomArgs(new OpenAdvanced_OpenRom(path))); RA.InstallSharedFunctionsExt(_isActive, _unpause, _pause, _rebuildMenu, _estimateTitle, _resetEmulator, _loadROM); diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs index 8b0da9721e..aada903e9e 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs @@ -165,7 +165,7 @@ namespace BizHawk.Client.EmuHawk DialogResult = DialogResult.OK; Close(); - _ = MainForm.LoadRom(fileInfo.FullName, new LoadRomArgs(new OpenAdvanced_OpenRom(fileInfo.FullName))); + _ = MainForm.LoadRom(new LoadRomArgs(new OpenAdvanced_OpenRom(fileInfo.FullName))); } private void AddButton_Click(object sender, EventArgs e)