mirror of
https://github.com/SabreTools/NDecrypt.git
synced 2026-09-22 06:45:07 +00:00
Simplify ExeFS reading
This commit is contained in:
@@ -286,7 +286,7 @@ namespace NDecrypt.N3DS
|
||||
uint mediaUnitSize = 0x200; // mediaUnitSize;
|
||||
|
||||
reader.BaseStream.Seek((tableEntry.Offset + ncchHeader.ExeFSOffsetInMediaUnits) * mediaUnitSize, SeekOrigin.Begin);
|
||||
var exefsHeader = ReadExeFSHeader(reader);
|
||||
var exefsHeader = N3DSDeserializer.ParseExeFSHeader(reader.BaseStream);
|
||||
|
||||
// If the header failed to read, log and return
|
||||
if (exefsHeader?.FileHeaders == null)
|
||||
@@ -681,39 +681,6 @@ namespace NDecrypt.N3DS
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read from a stream and get an ExeFS header, if possible
|
||||
/// </summary>
|
||||
/// <param name="reader">BinaryReader representing the input stream</param>
|
||||
/// <returns>ExeFS header object, null on error</returns>
|
||||
private static ExeFSHeader? ReadExeFSHeader(BinaryReader reader)
|
||||
{
|
||||
var header = new ExeFSHeader();
|
||||
|
||||
try
|
||||
{
|
||||
header.FileHeaders = new ExeFSFileHeader[10];
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
header.FileHeaders[i] = N3DSDeserializer.ParseExeFSFileHeader(reader.BaseStream)!;
|
||||
}
|
||||
|
||||
header.Reserved = reader.ReadBytes(0x20);
|
||||
|
||||
header.FileHashes = new byte[10][];
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
header.FileHashes[9 - i] = reader.ReadBytes(0x20);
|
||||
}
|
||||
|
||||
return header;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -304,7 +304,7 @@ namespace NDecrypt.N3DS
|
||||
uint exeFsOffset = (partitionOffsetMU + exeFsOffsetMU + 1) * cart.MediaUnitSize();
|
||||
|
||||
reader.BaseStream.Seek(exeFsHeaderOffset, SeekOrigin.Begin);
|
||||
var exefsHeader = ReadExeFSHeader(reader);
|
||||
var exefsHeader = N3DSDeserializer.ParseExeFSHeader(reader.BaseStream);
|
||||
|
||||
// If the header failed to read, log and return
|
||||
if (exefsHeader == null)
|
||||
@@ -794,39 +794,6 @@ namespace NDecrypt.N3DS
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read from a stream and get an ExeFS header, if possible
|
||||
/// </summary>
|
||||
/// <param name="reader">BinaryReader representing the input stream</param>
|
||||
/// <returns>ExeFS header object, null on error</returns>
|
||||
private static ExeFSHeader? ReadExeFSHeader(BinaryReader reader)
|
||||
{
|
||||
var header = new ExeFSHeader();
|
||||
|
||||
try
|
||||
{
|
||||
header.FileHeaders = new ExeFSFileHeader[10];
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
header.FileHeaders[i] = N3DSDeserializer.ParseExeFSFileHeader(reader.BaseStream)!;
|
||||
}
|
||||
|
||||
header.Reserved = reader.ReadBytes(0x20);
|
||||
|
||||
header.FileHashes = new byte[10][];
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
header.FileHashes[9 - i] = reader.ReadBytes(0x20);
|
||||
}
|
||||
|
||||
return header;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user