More case changes on NPDM
This commit is contained in:
parent
7aff3f9b93
commit
fcd72d24de
3 changed files with 69 additions and 3 deletions
|
@ -33,14 +33,14 @@ namespace Ryujinx.HLE.Loaders.Npdm
|
||||||
//Reserved.
|
//Reserved.
|
||||||
Stream.Seek(8, SeekOrigin.Current);
|
Stream.Seek(8, SeekOrigin.Current);
|
||||||
|
|
||||||
int FSAccessHeaderOffset = Reader.ReadInt32();
|
int FsAccessHeaderOffset = Reader.ReadInt32();
|
||||||
int FSAccessHeaderSize = Reader.ReadInt32();
|
int FsAccessHeaderSize = Reader.ReadInt32();
|
||||||
int ServiceAccessControlOffset = Reader.ReadInt32();
|
int ServiceAccessControlOffset = Reader.ReadInt32();
|
||||||
int ServiceAccessControlSize = Reader.ReadInt32();
|
int ServiceAccessControlSize = Reader.ReadInt32();
|
||||||
int KernelAccessControlOffset = Reader.ReadInt32();
|
int KernelAccessControlOffset = Reader.ReadInt32();
|
||||||
int KernelAccessControlSize = Reader.ReadInt32();
|
int KernelAccessControlSize = Reader.ReadInt32();
|
||||||
|
|
||||||
FsAccessHeader FsAccessHeader = new FsAccessHeader(Stream, Offset + FSAccessHeaderOffset, FSAccessHeaderSize);
|
FsAccessHeader FsAccessHeader = new FsAccessHeader(Stream, Offset + FsAccessHeaderOffset, FsAccessHeaderSize);
|
||||||
|
|
||||||
FsVersion = FsAccessHeader.Version;
|
FsVersion = FsAccessHeader.Version;
|
||||||
FsPermissionsBitmask = FsAccessHeader.PermissionsBitmask;
|
FsPermissionsBitmask = FsAccessHeader.PermissionsBitmask;
|
||||||
|
|
28
Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs
Normal file
28
Ryujinx.HLE/Loaders/Npdm/FsAccessControl.cs
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Ryujinx.HLE.Loaders.Npdm
|
||||||
|
{
|
||||||
|
class FsAccessControl
|
||||||
|
{
|
||||||
|
public int Version { get; private set; }
|
||||||
|
public ulong PermissionsBitmask { get; private set; }
|
||||||
|
public int Unknown1 { get; private set; }
|
||||||
|
public int Unknown2 { get; private set; }
|
||||||
|
public int Unknown3 { get; private set; }
|
||||||
|
public int Unknown4 { get; private set; }
|
||||||
|
|
||||||
|
public FsAccessControl(Stream Stream, int Offset, int Size)
|
||||||
|
{
|
||||||
|
Stream.Seek(Offset, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
BinaryReader Reader = new BinaryReader(Stream);
|
||||||
|
|
||||||
|
Version = Reader.ReadInt32();
|
||||||
|
PermissionsBitmask = Reader.ReadUInt64();
|
||||||
|
Unknown1 = Reader.ReadInt32();
|
||||||
|
Unknown2 = Reader.ReadInt32();
|
||||||
|
Unknown3 = Reader.ReadInt32();
|
||||||
|
Unknown4 = Reader.ReadInt32();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs
Normal file
38
Ryujinx.HLE/Loaders/Npdm/FsAccessHeader.cs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
using Ryujinx.HLE.Exceptions;
|
||||||
|
|
||||||
|
namespace Ryujinx.HLE.Loaders.Npdm
|
||||||
|
{
|
||||||
|
class FsAccessHeader
|
||||||
|
{
|
||||||
|
public int Version { get; private set; }
|
||||||
|
public ulong PermissionsBitmask { get; private set; }
|
||||||
|
|
||||||
|
public FsAccessHeader(Stream Stream, int Offset, int Size)
|
||||||
|
{
|
||||||
|
Stream.Seek(Offset, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
BinaryReader Reader = new BinaryReader(Stream);
|
||||||
|
|
||||||
|
Version = Reader.ReadInt32();
|
||||||
|
PermissionsBitmask = Reader.ReadUInt64();
|
||||||
|
|
||||||
|
int DataSize = Reader.ReadInt32();
|
||||||
|
|
||||||
|
if (DataSize != 0x1c)
|
||||||
|
{
|
||||||
|
throw new InvalidNpdmException("FsAccessHeader is corrupted!");
|
||||||
|
}
|
||||||
|
|
||||||
|
int ContentOwnerIdSize = Reader.ReadInt32();
|
||||||
|
int DataAndContentOwnerIdSize = Reader.ReadInt32();
|
||||||
|
|
||||||
|
if (DataAndContentOwnerIdSize != 0x1c)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException("ContentOwnerId section is not implemented!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue