mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Read correct duplex data
This commit is contained in:
parent
a6a9392047
commit
46cfb2f948
3 changed files with 8 additions and 7 deletions
|
@ -245,7 +245,7 @@ namespace hactoolnet
|
||||||
File.WriteAllBytes(Path.Combine(dir, "L1_4_Layer1Hash"), save.JournalLayer1Hash);
|
File.WriteAllBytes(Path.Combine(dir, "L1_4_Layer1Hash"), save.JournalLayer1Hash);
|
||||||
File.WriteAllBytes(Path.Combine(dir, "L1_5_Layer2Hash"), save.JournalLayer2Hash);
|
File.WriteAllBytes(Path.Combine(dir, "L1_5_Layer2Hash"), save.JournalLayer2Hash);
|
||||||
File.WriteAllBytes(Path.Combine(dir, "L1_6_Layer3Hash"), save.JournalLayer3Hash);
|
File.WriteAllBytes(Path.Combine(dir, "L1_6_Layer3Hash"), save.JournalLayer3Hash);
|
||||||
File.WriteAllBytes(Path.Combine(dir, "L1_7_FAT"), save.JournalStuff);
|
File.WriteAllBytes(Path.Combine(dir, "L1_7_FAT"), save.JournalFat);
|
||||||
|
|
||||||
save.JournalStream.Position = 0;
|
save.JournalStream.Position = 0;
|
||||||
using (var outFile = new FileStream(Path.Combine(dir, "L2_0_SaveData"), FileMode.Create, FileAccess.Write))
|
using (var outFile = new FileStream(Path.Combine(dir, "L2_0_SaveData"), FileMode.Create, FileAccess.Write))
|
||||||
|
|
|
@ -111,7 +111,7 @@ namespace libhac.Savefile
|
||||||
public long Layer3HashSize { get; set; }
|
public long Layer3HashSize { get; set; }
|
||||||
public long Field148 { get; set; }
|
public long Field148 { get; set; }
|
||||||
public long Field150 { get; set; }
|
public long Field150 { get; set; }
|
||||||
public long Field158 { get; set; }
|
public long DuplexIndex { get; set; }
|
||||||
|
|
||||||
public FsLayout(BinaryReader reader)
|
public FsLayout(BinaryReader reader)
|
||||||
{
|
{
|
||||||
|
@ -156,7 +156,7 @@ namespace libhac.Savefile
|
||||||
Layer3HashSize = reader.ReadInt64();
|
Layer3HashSize = reader.ReadInt64();
|
||||||
Field148 = reader.ReadInt64();
|
Field148 = reader.ReadInt64();
|
||||||
Field150 = reader.ReadInt64();
|
Field150 = reader.ReadInt64();
|
||||||
Field158 = reader.ReadInt64();
|
DuplexIndex = reader.ReadInt64();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace libhac.Savefile
|
||||||
public byte[] JournalLayer1Hash { get; }
|
public byte[] JournalLayer1Hash { get; }
|
||||||
public byte[] JournalLayer2Hash { get; }
|
public byte[] JournalLayer2Hash { get; }
|
||||||
public byte[] JournalLayer3Hash { get; }
|
public byte[] JournalLayer3Hash { get; }
|
||||||
public byte[] JournalStuff { get; }
|
public byte[] JournalFat { get; }
|
||||||
|
|
||||||
public FileEntry[] Files { get; private set; }
|
public FileEntry[] Files { get; private set; }
|
||||||
private Dictionary<string, FileEntry> FileDict { get; }
|
private Dictionary<string, FileEntry> FileDict { get; }
|
||||||
|
@ -56,7 +56,8 @@ namespace libhac.Savefile
|
||||||
FileRemap.Position = layout.DuplexDataOffsetB;
|
FileRemap.Position = layout.DuplexDataOffsetB;
|
||||||
FileRemap.Read(DuplexDataB, 0, DuplexDataB.Length);
|
FileRemap.Read(DuplexDataB, 0, DuplexDataB.Length);
|
||||||
|
|
||||||
var duplexData = new SubStream(FileRemap, layout.DuplexDataOffsetB, layout.DuplexDataSize);
|
var duplexDataOffset = layout.DuplexIndex == 0 ? layout.DuplexDataOffsetA : layout.DuplexDataOffsetB;
|
||||||
|
var duplexData = new SubStream(FileRemap, duplexDataOffset, layout.DuplexDataSize);
|
||||||
MetaRemap = new RemapStream(duplexData, Header.MetaMapEntries, Header.MetaRemap.MapSegmentCount);
|
MetaRemap = new RemapStream(duplexData, Header.MetaMapEntries, Header.MetaRemap.MapSegmentCount);
|
||||||
|
|
||||||
JournalTable = new byte[layout.JournalTableSize];
|
JournalTable = new byte[layout.JournalTableSize];
|
||||||
|
@ -66,7 +67,7 @@ namespace libhac.Savefile
|
||||||
JournalLayer1Hash = new byte[layout.Layer1HashSize];
|
JournalLayer1Hash = new byte[layout.Layer1HashSize];
|
||||||
JournalLayer2Hash = new byte[layout.Layer2HashSize];
|
JournalLayer2Hash = new byte[layout.Layer2HashSize];
|
||||||
JournalLayer3Hash = new byte[layout.Layer3HashSize];
|
JournalLayer3Hash = new byte[layout.Layer3HashSize];
|
||||||
JournalStuff = new byte[layout.Field150];
|
JournalFat = new byte[layout.Field150];
|
||||||
|
|
||||||
MetaRemap.Position = layout.JournalTableOffset;
|
MetaRemap.Position = layout.JournalTableOffset;
|
||||||
MetaRemap.Read(JournalTable, 0, JournalTable.Length);
|
MetaRemap.Read(JournalTable, 0, JournalTable.Length);
|
||||||
|
@ -83,7 +84,7 @@ namespace libhac.Savefile
|
||||||
MetaRemap.Position = layout.Layer3HashOffset;
|
MetaRemap.Position = layout.Layer3HashOffset;
|
||||||
MetaRemap.Read(JournalLayer3Hash, 0, JournalLayer3Hash.Length);
|
MetaRemap.Read(JournalLayer3Hash, 0, JournalLayer3Hash.Length);
|
||||||
MetaRemap.Position = layout.Field148;
|
MetaRemap.Position = layout.Field148;
|
||||||
MetaRemap.Read(JournalStuff, 0, JournalStuff.Length);
|
MetaRemap.Read(JournalFat, 0, JournalFat.Length);
|
||||||
|
|
||||||
var journalMap = JournalStream.ReadMappingEntries(JournalTable, JournalBitmapUpdatedPhysical,
|
var journalMap = JournalStream.ReadMappingEntries(JournalTable, JournalBitmapUpdatedPhysical,
|
||||||
JournalBitmapUpdatedVirtual, JournalBitmapUnassigned, Header.Journal.MappingEntryCount);
|
JournalBitmapUpdatedVirtual, JournalBitmapUnassigned, Header.Journal.MappingEntryCount);
|
||||||
|
|
Loading…
Reference in a new issue