more cleanly deal with dummy hashes

fixes a515672
This commit is contained in:
CasualPokePlayer 2022-08-28 03:13:23 -07:00
parent a515672d4d
commit 463780a875
2 changed files with 7 additions and 13 deletions

View File

@ -545,9 +545,7 @@ namespace BizHawk.Client.EmuHawk
olvi.SubItems.Add(new ListViewItem.ListViewSubItem());
olvi.SubItems.Add(new ListViewItem.ListViewSubItem());
olvi.SubItems.Add(new ListViewItem.ListViewSubItem());
var ff = o.Hash is SHA1Checksum.Dummy
? FirmwareDatabase.FirmwareFilesWithDummyHash[o]
: FirmwareDatabase.FirmwareFilesByHash[o.Hash];
var ff = FirmwareDatabase.FirmwareFilesByOption[o];
olvi.ImageIndex = (int) (o.Status is FirmwareOptionStatus.Bad ? FirmwareOptionStatus.Unset : o.Status); // if bad, use unset's red '!' to differentiate from unacceptable
olvi.ToolTipText = StatusDescs[o.Status];
olvi.SubItems[0].Text = ff.Size.ToString();

View File

@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Common
public static readonly IReadOnlyDictionary<string, FirmwareFile> FirmwareFilesByHash;
public static readonly IReadOnlyDictionary<FirmwareOption, FirmwareFile> FirmwareFilesWithDummyHash;
public static readonly IReadOnlyDictionary<FirmwareOption, FirmwareFile> FirmwareFilesByOption;
public static readonly IReadOnlyCollection<FirmwareOption> FirmwareOptions;
@ -28,7 +28,7 @@ namespace BizHawk.Emulation.Common
{
List<FirmwarePatchOption> allPatches = new();
Dictionary<string, FirmwareFile> filesByHash = new();
Dictionary<FirmwareOption, FirmwareFile> filesWithDummyHash = new();
Dictionary<FirmwareOption, FirmwareFile> filesByOption = new();
List<FirmwareOption> options = new();
List<FirmwareRecord> records = new();
@ -49,13 +49,9 @@ namespace BizHawk.Emulation.Common
void Option(string systemId, string id, in FirmwareFile ff, FirmwareOptionStatus status = FirmwareOptionStatus.Acceptable)
{
options.Add(new(new(systemId, id), ff.Hash, ff.Size, ff.IsBad ? FirmwareOptionStatus.Bad : status));
if (ff.Hash is SHA1Checksum.Dummy)
{
// these shouldn't have more than 1 option
// as these files represent an impossible to hash firmware
filesWithDummyHash[options[options.Count - 1]] = ff;
}
var option = new FirmwareOption(new(systemId, id), ff.Hash, ff.Size, ff.IsBad ? FirmwareOptionStatus.Bad : status);
options.Add(option);
filesByOption[option] = ff;
}
void Firmware(string systemId, string id, string desc)
@ -474,7 +470,7 @@ namespace BizHawk.Emulation.Common
AllPatches = allPatches;
FirmwareFilesByHash = filesByHash;
FirmwareFilesWithDummyHash = filesWithDummyHash;
FirmwareFilesByOption = filesByOption;
FirmwareOptions = options;
FirmwareRecords = records;
}