mirror of
https://github.com/aaru-dps/Aaru.git
synced 2026-04-05 21:44:17 +00:00
[Convert] Implement Wii U media tag injection and sector conversion handling
This commit is contained in:
@@ -180,6 +180,9 @@ public partial class Convert
|
||||
_mediaType is MediaType.PS3BD or MediaType.PS3DVD &&
|
||||
!_bypassPs3Decryption;
|
||||
|
||||
// Determine if Wii U conversion path should be active
|
||||
bool isWiiuConversion = _outputImage is AaruFormat && _mediaType == MediaType.WUOD && !_bypassWiiuDecryption;
|
||||
|
||||
// Inject PS3-specific media tags before copying normal media tags
|
||||
if(isPs3Conversion)
|
||||
{
|
||||
@@ -188,6 +191,14 @@ public partial class Convert
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
}
|
||||
|
||||
// Inject Wii U-specific media tags before copying normal media tags
|
||||
if(isWiiuConversion)
|
||||
{
|
||||
errno = InjectWiiuMediaTags();
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
}
|
||||
|
||||
// Convert media tags from input to output format
|
||||
errno = ConvertMediaTags();
|
||||
|
||||
@@ -199,12 +210,32 @@ public partial class Convert
|
||||
if(_inputImage is IOpticalMediaImage inputOptical &&
|
||||
_outputImage is IWritableOpticalImage outputOptical &&
|
||||
inputOptical.Tracks != null &&
|
||||
!isPs3Conversion)
|
||||
!isPs3Conversion &&
|
||||
!isWiiuConversion)
|
||||
{
|
||||
errno = ConvertOptical(inputOptical, outputOptical, useLong);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
}
|
||||
else if(isWiiuConversion)
|
||||
{
|
||||
if(_inputImage is IOpticalMediaImage wiiuInputOptical &&
|
||||
_outputImage is IWritableOpticalImage wiiuOutputOptical &&
|
||||
wiiuInputOptical.Tracks != null)
|
||||
{
|
||||
if(!wiiuOutputOptical.SetTracks(wiiuInputOptical.Tracks))
|
||||
{
|
||||
StoppingErrorMessage?.Invoke(string.Format(UI.Error_0_sending_tracks_list_to_output_image,
|
||||
wiiuOutputOptical.ErrorMessage));
|
||||
|
||||
return ErrorNumber.WriteError;
|
||||
}
|
||||
}
|
||||
|
||||
errno = ConvertWiiuSectors();
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
}
|
||||
else if(isPs3Conversion)
|
||||
{
|
||||
if(_inputImage is IOpticalMediaImage ps3InputOptical &&
|
||||
@@ -300,14 +331,14 @@ public partial class Convert
|
||||
}
|
||||
}
|
||||
|
||||
if(!isPs3Conversion && _negativeSectors > 0)
|
||||
if(!isPs3Conversion && !isWiiuConversion && _negativeSectors > 0)
|
||||
{
|
||||
errno = ConvertNegativeSectors(useLong);
|
||||
|
||||
if(errno != ErrorNumber.NoError) return errno;
|
||||
}
|
||||
|
||||
if(!isPs3Conversion && _overflowSectors > 0)
|
||||
if(!isPs3Conversion && !isWiiuConversion && _overflowSectors > 0)
|
||||
{
|
||||
errno = ConvertOverflowSectors(useLong);
|
||||
|
||||
@@ -355,6 +386,9 @@ public partial class Convert
|
||||
// After all metadata has been copied, enrich title/part number from PS3 sources if still missing
|
||||
if(isPs3Conversion) EnrichPs3TitleAndPartNumber();
|
||||
|
||||
// After all metadata has been copied, enrich product code and disc number from Wii U disc header
|
||||
if(isWiiuConversion) EnrichWiiuMetadata();
|
||||
|
||||
var closed = false;
|
||||
|
||||
InitProgress?.Invoke();
|
||||
|
||||
Reference in New Issue
Block a user