Fix detection of BD-R when profile is set wrong by drive.

This commit is contained in:
2025-08-19 00:25:30 +01:00
parent dd2ba636bd
commit 0577fe6d92

View File

@@ -271,8 +271,8 @@ public static class MMC
Features.SeparatedFeatures ftr = Features.Separate(cmdBuf); Features.SeparatedFeatures ftr = Features.Separate(cmdBuf);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.GET_CONFIGURATION_current_profile_is_0, Localization.Core.GET_CONFIGURATION_current_profile_is_0,
ftr.CurrentProfile); ftr.CurrentProfile);
mediaType = ftr.CurrentProfile switch mediaType = ftr.CurrentProfile switch
{ {
@@ -394,15 +394,15 @@ public static class MMC
{ {
case true when hasAudioTrack && allFirstSessionTracksAreAudio && sessions == 2: case true when hasAudioTrack && allFirstSessionTracksAreAudio && sessions == 2:
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core Localization.Core
.Disc_has_audio_and_data_two_sessions_all_data_second_CD_Plus); .Disc_has_audio_and_data_two_sessions_all_data_second_CD_Plus);
mediaType = MediaType.CDPLUS; mediaType = MediaType.CDPLUS;
break; break;
case false when hasAudioTrack && sessions == 1: case false when hasAudioTrack && sessions == 1:
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.Disc_has_only_audio_in_a_session_CD_Digital_Audio); Localization.Core.Disc_has_only_audio_in_a_session_CD_Digital_Audio);
mediaType = MediaType.CDDA; mediaType = MediaType.CDDA;
@@ -689,8 +689,7 @@ public static class MMC
{ {
mediaType = MediaType.CDIREADY; mediaType = MediaType.CDIREADY;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready);
Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready);
return; return;
} }
@@ -782,7 +781,7 @@ public static class MMC
mediaType = MediaType.CDIREADY; mediaType = MediaType.CDIREADY;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready); Localization.Core.Disc_has_hidden_CD_i_pregap_CD_i_Ready);
return; return;
} }
@@ -1497,7 +1496,7 @@ public static class MMC
if(DMI.IsXbox(cmdBuf)) if(DMI.IsXbox(cmdBuf))
{ {
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
"Found Xbox DMI, setting disc type to Xbox Game Disc (XGD)."); "Found Xbox DMI, setting disc type to Xbox Game Disc (XGD).");
mediaType = MediaType.XGD; mediaType = MediaType.XGD;
@@ -1510,7 +1509,7 @@ public static class MMC
if(blocks is 25063 or 4229664 or 4246304) // Wxripper unlock if(blocks is 25063 or 4229664 or 4246304) // Wxripper unlock
{ {
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 3 (XGD3)."); "Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 3 (XGD3).");
mediaType = MediaType.XGD3; mediaType = MediaType.XGD3;
@@ -1518,7 +1517,7 @@ public static class MMC
} }
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 2 (XGD2)."); "Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 2 (XGD2).");
mediaType = MediaType.XGD2; mediaType = MediaType.XGD2;
@@ -1760,8 +1759,7 @@ public static class MMC
case "PHOTO_CD": case "PHOTO_CD":
mediaType = MediaType.PCD; mediaType = MediaType.PCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Photo_CD_description_file);
Localization.Core.Found_Photo_CD_description_file);
return; return;
} }
@@ -1847,15 +1845,14 @@ public static class MMC
string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _); string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.PlayStation_2_boot_sectors_SHA256_0, Localization.Core.PlayStation_2_boot_sectors_SHA256_0,
ps2BootSectorsHash); ps2BootSectorsHash);
if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH) if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH)
{ {
mediaType = MediaType.PS2CD; mediaType = MediaType.PS2CD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Sony_PlayStation_2_boot_sectors);
Localization.Core.Found_Sony_PlayStation_2_boot_sectors);
goto hasPs2CdBoot; goto hasPs2CdBoot;
} }
@@ -1960,8 +1957,7 @@ public static class MMC
{ {
mediaType = MediaType.MilCD; mediaType = MediaType.MilCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Sega_Dreamcast_IP_BIN_on_second_session);
Localization.Core.Found_Sega_Dreamcast_IP_BIN_on_second_session);
return; return;
} }
@@ -2021,8 +2017,7 @@ public static class MMC
{ {
mediaType = MediaType.CDEG; mediaType = MediaType.CDEG;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_enhanced_graphics_RW_packet);
Localization.Core.Found_enhanced_graphics_RW_packet);
return; return;
} }
@@ -2382,8 +2377,7 @@ public static class MMC
{ {
mediaType = MediaType.NeoGeoCD; mediaType = MediaType.NeoGeoCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_correct_IPL_TXT_file_in_root);
Localization.Core.Found_correct_IPL_TXT_file_in_root);
return; return;
} }
@@ -2484,22 +2478,20 @@ public static class MMC
case "VIDEO_CD": case "VIDEO_CD":
mediaType = MediaType.VCD; mediaType = MediaType.VCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Video_CD_description_file);
Localization.Core.Found_Video_CD_description_file);
return; return;
case "SUPERVCD": case "SUPERVCD":
mediaType = MediaType.SVCD; mediaType = MediaType.SVCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Super_Video_CD_description_file);
Localization.Core.Found_Super_Video_CD_description_file);
break; break;
case "HQ-VCD": case "HQ-VCD":
mediaType = MediaType.CVD; mediaType = MediaType.CVD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.Found_China_Video_Disc_description_file); Localization.Core.Found_China_Video_Disc_description_file);
break; break;
} }
@@ -2600,8 +2592,7 @@ public static class MMC
case "PHOTO_CD": case "PHOTO_CD":
mediaType = MediaType.PCD; mediaType = MediaType.PCD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Photo_CD_description_file);
Localization.Core.Found_Photo_CD_description_file);
return; return;
} }
@@ -2697,16 +2688,14 @@ public static class MMC
{ {
mediaType = MediaType.PS1CD; mediaType = MediaType.PS1CD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS1);
Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS1);
} }
if(ps2BootFile != null && rootEntries.Contains(ps2BootFile.ToUpperInvariant())) if(ps2BootFile != null && rootEntries.Contains(ps2BootFile.ToUpperInvariant()))
{ {
mediaType = MediaType.PS2CD; mediaType = MediaType.PS2CD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS2);
Localization.Core.Found_correct_SYSTEM_CNF_file_in_root_PS2);
} }
} }
} }
@@ -2733,13 +2722,12 @@ public static class MMC
string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _); string ps2BootSectorsHash = Sha256Context.Data(ps2BootSectors, out _);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.PlayStation_2_boot_sectors_SHA256_0, Localization.Core.PlayStation_2_boot_sectors_SHA256_0,
ps2BootSectorsHash); ps2BootSectorsHash);
if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH) if(ps2BootSectorsHash is PS2_PAL_HASH or PS2_NTSC_HASH or PS2_JAPANESE_HASH)
{ {
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Sony_PlayStation_2_boot_sectors_DVD);
Localization.Core.Found_Sony_PlayStation_2_boot_sectors_DVD);
mediaType = MediaType.PS2DVD; mediaType = MediaType.PS2DVD;
} }
@@ -2755,15 +2743,14 @@ public static class MMC
switch(mediaType) switch(mediaType)
{ {
case MediaType.BDROM: case MediaType.BDROM:
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Sony_PlayStation_3_boot_sectors);
Localization.Core.Found_Sony_PlayStation_3_boot_sectors);
mediaType = MediaType.PS3BD; mediaType = MediaType.PS3BD;
break; break;
case MediaType.DVDROM: case MediaType.DVDROM:
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.Found_Sony_PlayStation_3_boot_sectors_DVD); Localization.Core.Found_Sony_PlayStation_3_boot_sectors_DVD);
mediaType = MediaType.PS3DVD; mediaType = MediaType.PS3DVD;
@@ -2778,8 +2765,7 @@ public static class MMC
{ {
mediaType = MediaType.PS4BD; mediaType = MediaType.PS4BD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Found_Sony_PlayStation_4_boot_sectors);
Localization.Core.Found_Sony_PlayStation_4_boot_sectors);
} }
} }
@@ -2789,9 +2775,14 @@ public static class MMC
switch(blurayType) switch(blurayType)
{ {
case "BDR":
AaruLogging.Debug(MODULE_NAME, Localization.Core.Blu_ray_type_BDR_setting_disc_type_BDR);
mediaType = MediaType.BDR;
break;
case "XG4": case "XG4":
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Blu_ray_type_XG4_setting_disc_type_XGD4);
Localization.Core.Blu_ray_type_XG4_setting_disc_type_XGD4);
mediaType = MediaType.XGD4; mediaType = MediaType.XGD4;
@@ -2809,14 +2800,13 @@ public static class MMC
mediaType = MediaType.PS5BD; mediaType = MediaType.PS5BD;
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME,
Localization.Core.Found_Sony_PlayStation_5_boot_sectors); Localization.Core.Found_Sony_PlayStation_5_boot_sectors);
break; break;
} }
} }
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, Localization.Core.Blu_ray_type_BDU_setting_disc_type_UHD);
Localization.Core.Blu_ray_type_BDU_setting_disc_type_UHD);
mediaType = MediaType.UHDBD; mediaType = MediaType.UHDBD;