Implement NPDM files parser (#169)
* Implement NPDM files parser (Currently not used in Ryujinx) * Add credits * Add Swap32 * Update Npdm.cs * Update ACI0.cs * Update ACID.cs * Update Npdm.cs * Update EndianSwap.cs * Update ACI0.cs * Update ACID.cs * Update KernelAccessControl.cs * Update NpdmInfo.cs * Update ServiceAccessControl.cs * Update NpdmInfo.cs
This commit is contained in:
parent
3c4dafff3f
commit
4e430760b4
10 changed files with 753 additions and 0 deletions
35
Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs
Normal file
35
Ryujinx.HLE/Loaders/Npdm/ServiceAccessControl.cs
Normal file
|
@ -0,0 +1,35 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace Ryujinx.HLE.Loaders.Npdm
|
||||
{
|
||||
public class ServiceAccessControl
|
||||
{
|
||||
public List<(string, bool)> Services = new List<(string, bool)>();
|
||||
|
||||
public ServiceAccessControl(Stream ServiceAccessControlStream, int Offset, int Size)
|
||||
{
|
||||
ServiceAccessControlStream.Seek(Offset, SeekOrigin.Begin);
|
||||
|
||||
BinaryReader Reader = new BinaryReader(ServiceAccessControlStream);
|
||||
|
||||
int ByteReaded = 0;
|
||||
|
||||
while (ByteReaded != Size)
|
||||
{
|
||||
byte ControlByte = Reader.ReadByte();
|
||||
|
||||
if (ControlByte == 0x00) break;
|
||||
|
||||
int Length = ((ControlByte & 0x07)) + 1;
|
||||
bool RegisterAllowed = ((ControlByte & 0x80) != 0);
|
||||
|
||||
Services.Add((Encoding.ASCII.GetString(Reader.ReadBytes(Length), 0, Length), RegisterAllowed));
|
||||
|
||||
ByteReaded += Length + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue