diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 51ad267229..95a2d060f7 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -1884,6 +1884,21 @@ namespace BizHawk.Client.EmuHawk DumpStatusButton.Image = Properties.Resources.Hack; DumpStatusButton.ToolTipText = "Warning: ROM of Unknown Character"; } + else if (Game.Status == RomStatus.Imperfect) + { + DumpStatusButton.Image = Properties.Resources.RetroQuestion; + DumpStatusButton.ToolTipText = "Warning: Imperfect emulation"; + } + else if (Game.Status == RomStatus.Unimplemented) + { + DumpStatusButton.Image = Properties.Resources.ExclamationRed; + DumpStatusButton.ToolTipText = "Warning: Unemulated features"; + } + else if (Game.Status == RomStatus.NotWorking) + { + DumpStatusButton.Image = Properties.Resources.ExclamationRed; + DumpStatusButton.ToolTipText = "Warning: The game does not work"; + } else { DumpStatusButton.Image = Properties.Resources.GreenCheck; diff --git a/src/BizHawk.Emulation.Common/Enums.cs b/src/BizHawk.Emulation.Common/Enums.cs index d5355850bd..2319010244 100644 --- a/src/BizHawk.Emulation.Common/Enums.cs +++ b/src/BizHawk.Emulation.Common/Enums.cs @@ -33,6 +33,10 @@ Unknown, Bios, Overdump, - NotInDatabase + NotInDatabase, + // MAME + Imperfect, + Unimplemented, + NotWorking } } diff --git a/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs b/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs index 339aefa700..ceca229ed4 100644 --- a/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs +++ b/src/BizHawk.Emulation.Cores/Arcades/MAME/MAME.cs @@ -38,6 +38,22 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME _gameFullName + "\r\n\r\n" + text + (text == "" ? "" : "\r\n") + string.Join("\r\n", _romHashes.Select(static r => $"{r.Value} - {r.Key}")); + + if (text.ToLower().Contains("imperfect")) + { + lp.Game.Status = RomStatus.Imperfect; + } + + if (text.ToLower().Contains("unemulated")) + { + lp.Game.Status = RomStatus.Unimplemented; + } + + if (text.ToLower().Contains("doesn't work")) + { + lp.Game.Status = RomStatus.NotWorking; + } + }; _exe = new(new()