Adding proper Disc identification for ISO9660 / Joliet (default target DOS)

This commit is contained in:
Sergio Martin 2025-03-22 15:29:20 +01:00
parent 7774d4acf3
commit 071667ce0d
2 changed files with 18 additions and 0 deletions

View File

@ -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:

View File

@ -112,6 +112,11 @@ namespace BizHawk.Emulation.DiscSystem
/// Atari Jaguar CD
/// </summary>
JaguarCD,
/// <summary>
/// DOS / Windows
/// </summary>
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