diff --git a/LibHac/Nacp.cs b/LibHac/Nacp.cs index 42bcd5dd..f452d087 100644 --- a/LibHac/Nacp.cs +++ b/LibHac/Nacp.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.IO; -namespace libhac +namespace LibHac { public class Nacp { @@ -115,7 +115,10 @@ namespace libhac SeedForPseudoDeviceId = reader.ReadUInt64(); BcatPassphrase = reader.ReadUtf8Z(65); - reader.BaseStream.Position = start + 0x3148; + reader.BaseStream.Position = start + 0x3141; + Reserved01 = reader.ReadByte(); + Reserved02 = reader.ReadBytes(6); + UserAccountSaveDataSizeMax = reader.ReadInt64(); UserAccountSaveDataJournalSizeMax = reader.ReadInt64(); DeviceSaveDataSizeMax = reader.ReadInt64(); diff --git a/Net/Database.cs b/Net/Database.cs index 67db3a49..bc7608f2 100644 --- a/Net/Database.cs +++ b/Net/Database.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.IO; -using libhac; +using LibHac; using Newtonsoft.Json; namespace Net diff --git a/Net/Net.csproj b/Net/Net.csproj index 2e9dd834..ee02a784 100644 --- a/Net/Net.csproj +++ b/Net/Net.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.1;net45 + netcoreapp2.1;net46 7.3 diff --git a/Net/NetContext.cs b/Net/NetContext.cs index 1915893a..b7c747c8 100644 --- a/Net/NetContext.cs +++ b/Net/NetContext.cs @@ -3,7 +3,7 @@ using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography.X509Certificates; -using libhac; +using LibHac; namespace Net { @@ -63,10 +63,10 @@ namespace Net var nca = new Nca(ToolCtx.Keyset, stream, true); Stream sect = nca.OpenSection(0, false); - var pfs0 = new Pfs0(sect); - var file = pfs0.GetFile(0); + var pfs0 = new Pfs(sect); + var file = pfs0.OpenFile(pfs0.Files[0]); - var cnmt = new Cnmt(new MemoryStream(file)); + var cnmt = new Cnmt(file); return cnmt; } } diff --git a/Net/Options.cs b/Net/Options.cs index b18b7c80..5d4e1250 100644 --- a/Net/Options.cs +++ b/Net/Options.cs @@ -1,4 +1,4 @@ -using libhac; +using LibHac; namespace Net { diff --git a/Net/Program.cs b/Net/Program.cs index ff556e3f..17e70d23 100644 --- a/Net/Program.cs +++ b/Net/Program.cs @@ -4,7 +4,7 @@ using System.Globalization; using System.IO; using System.Linq; using System.Text; -using libhac; +using LibHac; namespace Net { diff --git a/libhac/Nacp.cs b/libhac/Nacp.cs deleted file mode 100644 index 42bcd5dd..00000000 --- a/libhac/Nacp.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System.Collections.Generic; -using System.IO; - -namespace libhac -{ - public class Nacp - { - public NacpLang[] Languages { get; } = new NacpLang[0x10]; - public string Isbn { get; } - public byte StartupUserAccount { get; } - public byte TouchScreenUsageMode { get; } - public byte AocRegistrationType { get; } - public int AttributeFlag { get; } - public uint SupportedLanguageFlag { get; } - public uint ParentalControlFlag { get; } - public byte Screenshot { get; } - public byte VideoCapture { get; } - public byte DataLossConfirmation { get; } - public byte PlayLogPolicy { get; } - public ulong PresenceGroupId { get; } - public sbyte[] RatingAge { get; } = new sbyte[32]; - public string DisplayVersion { get; } - public ulong AddOnContentBaseId { get; } - public ulong SaveDataOwnerId { get; } - public long UserAccountSaveDataSize { get; } - public long UserAccountSaveDataJournalSize { get; } - public long DeviceSaveDataSize { get; } - public long DeviceSaveDataJournalSize { get; } - public long BcatDeliveryCacheStorageSize { get; } - public string ApplicationErrorCodeCategory { get; } - public ulong[] LocalCommunicationId { get; } = new ulong[8]; - public byte LogoType { get; } - public byte LogoHandling { get; } - public byte RuntimeAddOnContentInstall { get; } - public byte[] Reserved00 { get; } - public byte CrashReport { get; } - public byte Hdcp { get; } - public ulong SeedForPseudoDeviceId { get; } - public string BcatPassphrase { get; } - public byte Reserved01 { get; } - public byte[] Reserved02 { get; } - public long UserAccountSaveDataSizeMax { get; } - public long UserAccountSaveDataJournalSizeMax { get; } - public long DeviceSaveDataSizeMax { get; } - public long DeviceSaveDataJournalSizeMax { get; } - public long TemporaryStorageSize { get; } - public long CacheStorageSize { get; } - public long CacheStorageJournalSize { get; } - public long CacheStorageDataAndJournalSizeMax { get; } - public short CacheStorageIndex { get; } - public byte[] Reserved03 { get; } - public List PlayLogQueryableApplicationId { get; } = new List(); - public byte PlayLogQueryCapability { get; } - public byte RepairFlag { get; } - public byte ProgramIndex { get; } - - - public long TotalSaveDataSize { get; } - public long UserTotalSaveDataSize { get; } - public long DeviceTotalSaveDataSize { get; } - - public Nacp() { } - - public Nacp(BinaryReader reader) - { - var start = reader.BaseStream.Position; - - for (int i = 0; i < 16; i++) - { - Languages[i] = new NacpLang(reader); - } - - Isbn = reader.ReadUtf8Z(37); - reader.BaseStream.Position = start + 0x3025; - StartupUserAccount = reader.ReadByte(); - TouchScreenUsageMode = reader.ReadByte(); - AocRegistrationType = reader.ReadByte(); - AttributeFlag = reader.ReadInt32(); - SupportedLanguageFlag = reader.ReadUInt32(); - ParentalControlFlag = reader.ReadUInt32(); - Screenshot = reader.ReadByte(); - VideoCapture = reader.ReadByte(); - DataLossConfirmation = reader.ReadByte(); - PlayLogPolicy = reader.ReadByte(); - PresenceGroupId = reader.ReadUInt64(); - - for (int i = 0; i < RatingAge.Length; i++) - { - RatingAge[i] = reader.ReadSByte(); - } - - DisplayVersion = reader.ReadUtf8Z(16); - reader.BaseStream.Position = start + 0x3070; - AddOnContentBaseId = reader.ReadUInt64(); - SaveDataOwnerId = reader.ReadUInt64(); - UserAccountSaveDataSize = reader.ReadInt64(); - UserAccountSaveDataJournalSize = reader.ReadInt64(); - DeviceSaveDataSize = reader.ReadInt64(); - DeviceSaveDataJournalSize = reader.ReadInt64(); - BcatDeliveryCacheStorageSize = reader.ReadInt64(); - ApplicationErrorCodeCategory = reader.ReadUtf8Z(8); - reader.BaseStream.Position = start + 0x30B0; - - for (int i = 0; i < LocalCommunicationId.Length; i++) - { - LocalCommunicationId[i] = reader.ReadUInt64(); - } - - LogoType = reader.ReadByte(); - LogoHandling = reader.ReadByte(); - RuntimeAddOnContentInstall = reader.ReadByte(); - Reserved00 = reader.ReadBytes(3); - CrashReport = reader.ReadByte(); - Hdcp = reader.ReadByte(); - SeedForPseudoDeviceId = reader.ReadUInt64(); - BcatPassphrase = reader.ReadUtf8Z(65); - - reader.BaseStream.Position = start + 0x3148; - UserAccountSaveDataSizeMax = reader.ReadInt64(); - UserAccountSaveDataJournalSizeMax = reader.ReadInt64(); - DeviceSaveDataSizeMax = reader.ReadInt64(); - DeviceSaveDataJournalSizeMax = reader.ReadInt64(); - TemporaryStorageSize = reader.ReadInt64(); - CacheStorageSize = reader.ReadInt64(); - CacheStorageJournalSize = reader.ReadInt64(); - CacheStorageDataAndJournalSizeMax = reader.ReadInt64(); - CacheStorageIndex = reader.ReadInt16(); - Reserved03 = reader.ReadBytes(6); - - for (int i = 0; i < 16; i++) - { - var value = reader.ReadUInt64(); - if (value != 0) PlayLogQueryableApplicationId.Add(value); - } - - PlayLogQueryCapability = reader.ReadByte(); - RepairFlag = reader.ReadByte(); - ProgramIndex = reader.ReadByte(); - - UserTotalSaveDataSize = UserAccountSaveDataSize + UserAccountSaveDataJournalSize; - DeviceTotalSaveDataSize = DeviceSaveDataSize + DeviceSaveDataJournalSize; - TotalSaveDataSize = UserTotalSaveDataSize + DeviceTotalSaveDataSize; - } - } - - public class NacpLang - { - public string Title { get; } - public string Developer { get; } - - public NacpLang() { } - - public NacpLang(BinaryReader reader) - { - var start = reader.BaseStream.Position; - Title = reader.ReadUtf8Z(); - reader.BaseStream.Position = start + 0x200; - Developer = reader.ReadUtf8Z(); - reader.BaseStream.Position = start + 0x300; - } - } -}