From 3e43a748b7231985e70c85ff0127bcc075ce8a45 Mon Sep 17 00:00:00 2001 From: Sergio Martin Date: Fri, 21 Mar 2025 18:53:48 +0100 Subject: [PATCH] Only offer drive switching if more than one drive is present --- .../Computers/DOS/DOSBox.Controllers.cs | 6 +++--- src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.Controllers.cs b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.Controllers.cs index 001f451201..76f8f87e0e 100644 --- a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.Controllers.cs +++ b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.Controllers.cs @@ -33,7 +33,7 @@ namespace BizHawk.Emulation.Cores.Computers.DOS return keyboardMap.ToArray(); } - private static ControllerDefinition CreateControllerDefinition(SyncSettings settings) + private static ControllerDefinition CreateControllerDefinition(SyncSettings settings, int floppyDiskCount, int cdROMCount) { var controller = new ControllerDefinition("DOSBox Controller"); @@ -67,8 +67,8 @@ namespace BizHawk.Emulation.Cores.Computers.DOS } // Adding drive management buttons - controller.BoolButtons.Add(Inputs.NextFloppyDisk); - controller.BoolButtons.Add(Inputs.NextCDROM); + if (floppyDiskCount > 1) controller.BoolButtons.Add(Inputs.NextFloppyDisk); + if (cdROMCount > 1) controller.BoolButtons.Add(Inputs.NextCDROM); foreach (var (name, _) in _keyboardMap) { diff --git a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs index f9dcabcb5f..3f1a0c3e77 100644 --- a/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs +++ b/src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.cs @@ -31,7 +31,7 @@ namespace BizHawk.Emulation.Cores.Computers.DOS DefaultFpsDenominator = LibDOSBox.VIDEO_DENOMINATOR_DOS }; - private readonly List _roms; + private readonly List _floppyDiskAssets; private readonly List _discAssets; // Drive management variables @@ -52,20 +52,20 @@ namespace BizHawk.Emulation.Cores.Computers.DOS public DOSBox(CoreLoadParameters lp) : base(lp.Comm, DefaultConfig) { - _roms = lp.Roms; + _floppyDiskAssets = lp.Roms; _discAssets = lp.Discs; _syncSettings = lp.SyncSettings ?? new(); VsyncNumerator = (int) _syncSettings.FPSNumerator; VsyncDenominator = (int) _syncSettings.FPSDenominator; DriveLightEnabled = false; - ControllerDefinition = CreateControllerDefinition(_syncSettings); + ControllerDefinition = CreateControllerDefinition(_syncSettings, _floppyDiskAssets.Count, _discAssets.Count); // Parsing input files var ConfigFiles = new List(); // Parsing rom files - foreach (var file in _roms) + foreach (var file in _floppyDiskAssets) { var ext = Path.GetExtension(file.RomPath); bool recognized = false;