mirror of
https://github.com/SabreTools/NDecrypt.git
synced 2026-07-08 18:06:38 +00:00
Move various extensions to Serialization
This commit is contained in:
@@ -128,107 +128,7 @@ namespace NDecrypt.N3DS
|
||||
|
||||
#region NCSDHeader
|
||||
|
||||
/// <summary>
|
||||
/// Partition table entry for Executable Content (CXI)
|
||||
/// </summary>
|
||||
public static PartitionTableEntry? ExecutableContent(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionsTable == null)
|
||||
return null;
|
||||
|
||||
return header.PartitionsTable[0];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Partition table entry for E-Manual (CFA)
|
||||
/// </summary>
|
||||
public static PartitionTableEntry? EManual(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionsTable == null)
|
||||
return null;
|
||||
|
||||
return header.PartitionsTable[1];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Partition table entry for Download Play Child container (CFA)
|
||||
/// </summary>
|
||||
public static PartitionTableEntry? DownloadPlayChildContainer(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionsTable == null)
|
||||
return null;
|
||||
|
||||
return header.PartitionsTable[2];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Partition table entry for New3DS Update Data (CFA)
|
||||
/// </summary>
|
||||
public static PartitionTableEntry? New3DSUpdateData(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionsTable == null)
|
||||
return null;
|
||||
|
||||
return header.PartitionsTable[6];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Partition table entry for Update Data (CFA)
|
||||
/// </summary>
|
||||
public static PartitionTableEntry? UpdateData(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionsTable == null)
|
||||
return null;
|
||||
|
||||
return header.PartitionsTable[7];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Backup Write Wait Time (The time to wait to write save to backup after the card is recognized (0-255
|
||||
/// seconds)).NATIVE_FIRM loads this flag from the gamecard NCSD header starting with 6.0.0-11.
|
||||
/// </summary>
|
||||
public static byte BackupWriteWaitTime(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionFlags == null)
|
||||
return default;
|
||||
|
||||
return header.PartitionFlags[(int)NCSDFlags.BackupWriteWaitTime];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Media Card Device (1 = NOR Flash, 2 = None, 3 = BT) (SDK 3.X+)
|
||||
/// </summary>
|
||||
public static MediaCardDeviceType MediaCardDevice3X(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionFlags == null)
|
||||
return default;
|
||||
|
||||
return (MediaCardDeviceType)header.PartitionFlags[(int)NCSDFlags.MediaCardDevice3X];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Media Platform Index (1 = CTR)
|
||||
/// </summary>
|
||||
public static MediaPlatformIndex MediaPlatformIndex(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionFlags == null)
|
||||
return default;
|
||||
|
||||
return (MediaPlatformIndex)header.PartitionFlags[(int)NCSDFlags.MediaPlatformIndex];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Media Type Index (0 = Inner Device, 1 = Card1, 2 = Card2, 3 = Extended Device)
|
||||
/// </summary>
|
||||
public static MediaTypeIndex MediaTypeIndex(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionFlags == null)
|
||||
return default;
|
||||
|
||||
return (MediaTypeIndex)header.PartitionFlags[(int)NCSDFlags.MediaTypeIndex];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
//// <summary>
|
||||
/// Media Unit Size i.e. u32 MediaUnitSize = 0x200*2^flags[6];
|
||||
/// </summary>
|
||||
public static uint MediaUnitSize(this Cart cart)
|
||||
@@ -247,43 +147,6 @@ namespace NDecrypt.N3DS
|
||||
return (uint)(0x200 * Math.Pow(2, header.PartitionFlags[(int)NCSDFlags.MediaUnitSize]));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Media Card Device (1 = NOR Flash, 2 = None, 3 = BT) (Only SDK 2.X)
|
||||
/// </summary>
|
||||
public static MediaCardDeviceType MediaCardDevice2X(this NCSDHeader? header)
|
||||
{
|
||||
if (header?.PartitionFlags == null)
|
||||
return default;
|
||||
|
||||
return (MediaCardDeviceType)header.PartitionFlags[(int)NCSDFlags.MediaCardDevice2X];
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Ticket
|
||||
|
||||
/// <summary>
|
||||
/// Denotes if the ticket denotes a demo or not
|
||||
/// </summary>
|
||||
public static bool IsDemo(this Ticket? ticket)
|
||||
{
|
||||
if (ticket?.Limits == null || ticket.Limits.Length == 0)
|
||||
return false;
|
||||
|
||||
return ticket.Limits[0] == 0x0004;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Denotes if the max playcount for a demo
|
||||
/// </summary>
|
||||
public static uint PlayCount(this Ticket ticket)
|
||||
{
|
||||
if (ticket?.Limits == null || ticket.Limits.Length == 0)
|
||||
return 0;
|
||||
|
||||
return ticket.Limits[1];
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user