diff --git a/src/BizHawk.Client.Common/RomLoader.cs b/src/BizHawk.Client.Common/RomLoader.cs index c8432aef44..2bfe89383f 100644 --- a/src/BizHawk.Client.Common/RomLoader.cs +++ b/src/BizHawk.Client.Common/RomLoader.cs @@ -297,6 +297,9 @@ namespace BizHawk.Client.Common case DiscType.Wii: NoCoreForSystem(VSystemID.Raw.Wii); break; + case DiscType.DOS: + game.System = VSystemID.Raw.DOS; + break; case DiscType.AudioDisc: case DiscType.UnknownCDFS: diff --git a/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs b/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs index e2a5128d17..e5948bcc94 100644 --- a/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs +++ b/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs @@ -112,6 +112,11 @@ namespace BizHawk.Emulation.DiscSystem /// Atari Jaguar CD /// JaguarCD, + + /// + /// DOS / Windows + /// + DOS, } public class DiscIdentifier @@ -243,6 +248,10 @@ namespace BizHawk.Emulation.DiscSystem return DiscType.Amiga; } + // Detects ISO9660 / Joliet CD formats (target for DOS / Windows) + if (DetectISO9660()) + return DiscType.DOS; + // NeoGeoCD Check var absTxt = iso.Root.Children.Where(kvp => kvp.Key.Contains("ABS.TXT")).Select(kvp => kvp.Value).FirstOrDefault(); if (absTxt != null && SectorContains("abstracted by snk", Convert.ToInt32(absTxt.Offset))) return DiscType.NeoGeoCD; @@ -394,6 +403,12 @@ namespace BizHawk.Emulation.DiscSystem return hexString == "5D1C9EA3"; } + private bool DetectISO9660() + { + return StringAt("CD001", 1, 16); + } + + private bool DetectJaguarCD() { // Atari Jaguar CDs are multisession discs which are encoded like audio CDs