aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/Loaders/Mods
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/Loaders/Mods')
-rw-r--r--src/Ryujinx.HLE/Loaders/Mods/IPSPatcher.cs27
-rw-r--r--src/Ryujinx.HLE/Loaders/Mods/IPSwitchPatcher.cs50
-rw-r--r--src/Ryujinx.HLE/Loaders/Mods/MemPatch.cs6
3 files changed, 44 insertions, 39 deletions
diff --git a/src/Ryujinx.HLE/Loaders/Mods/IPSPatcher.cs b/src/Ryujinx.HLE/Loaders/Mods/IPSPatcher.cs
index 510fec05..cf316b56 100644
--- a/src/Ryujinx.HLE/Loaders/Mods/IPSPatcher.cs
+++ b/src/Ryujinx.HLE/Loaders/Mods/IPSPatcher.cs
@@ -1,13 +1,12 @@
using Ryujinx.Common.Logging;
using System;
using System.IO;
-using System.Text;
namespace Ryujinx.HLE.Loaders.Mods
{
class IpsPatcher
{
- MemPatch _patches;
+ readonly MemPatch _patches;
public IpsPatcher(BinaryReader reader)
{
@@ -20,15 +19,15 @@ namespace Ryujinx.HLE.Loaders.Mods
private static MemPatch ParseIps(BinaryReader reader)
{
- ReadOnlySpan<byte> IpsHeaderMagic = "PATCH"u8;
- ReadOnlySpan<byte> IpsTailMagic = "EOF"u8;
- ReadOnlySpan<byte> Ips32HeaderMagic = "IPS32"u8;
- ReadOnlySpan<byte> Ips32TailMagic = "EEOF"u8;
+ ReadOnlySpan<byte> ipsHeaderMagic = "PATCH"u8;
+ ReadOnlySpan<byte> ipsTailMagic = "EOF"u8;
+ ReadOnlySpan<byte> ips32HeaderMagic = "IPS32"u8;
+ ReadOnlySpan<byte> ips32TailMagic = "EEOF"u8;
- MemPatch patches = new MemPatch();
- var header = reader.ReadBytes(IpsHeaderMagic.Length).AsSpan();
+ MemPatch patches = new();
+ var header = reader.ReadBytes(ipsHeaderMagic.Length).AsSpan();
- if (header.Length != IpsHeaderMagic.Length)
+ if (header.Length != ipsHeaderMagic.Length)
{
return null;
}
@@ -36,15 +35,15 @@ namespace Ryujinx.HLE.Loaders.Mods
bool is32;
ReadOnlySpan<byte> tailSpan;
- if (header.SequenceEqual(IpsHeaderMagic))
+ if (header.SequenceEqual(ipsHeaderMagic))
{
is32 = false;
- tailSpan = IpsTailMagic;
+ tailSpan = ipsTailMagic;
}
- else if (header.SequenceEqual(Ips32HeaderMagic))
+ else if (header.SequenceEqual(ips32HeaderMagic))
{
is32 = true;
- tailSpan = Ips32TailMagic;
+ tailSpan = ips32TailMagic;
}
else
{
@@ -114,4 +113,4 @@ namespace Ryujinx.HLE.Loaders.Mods
patches.AddFrom(_patches);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/Loaders/Mods/IPSwitchPatcher.cs b/src/Ryujinx.HLE/Loaders/Mods/IPSwitchPatcher.cs
index 416fc1b4..693e0388 100644
--- a/src/Ryujinx.HLE/Loaders/Mods/IPSwitchPatcher.cs
+++ b/src/Ryujinx.HLE/Loaders/Mods/IPSwitchPatcher.cs
@@ -14,7 +14,7 @@ namespace Ryujinx.HLE.Loaders.Mods
Normal,
String,
EscapeChar,
- Comment
+ Comment,
}
private readonly StreamReader _reader;
@@ -31,13 +31,13 @@ namespace Ryujinx.HLE.Loaders.Mods
}
_reader = reader;
- BuildId = header.Substring(BidHeader.Length).TrimEnd().TrimEnd('0');
+ BuildId = header[BidHeader.Length..].TrimEnd().TrimEnd('0');
}
// Uncomments line and unescapes C style strings within
private static string PreprocessLine(string line)
{
- StringBuilder str = new StringBuilder();
+ StringBuilder str = new();
Token state = Token.Normal;
for (int i = 0; i < line.Length; ++i)
@@ -56,29 +56,32 @@ namespace Ryujinx.HLE.Loaders.Mods
case Token.String:
state = c switch
{
- '"' => Token.Normal,
+ '"' => Token.Normal,
'\\' => Token.EscapeChar,
- _ => Token.String
+ _ => Token.String,
};
break;
case Token.EscapeChar:
state = Token.String;
c = c switch
{
- 'a' => '\a',
- 'b' => '\b',
- 'f' => '\f',
- 'n' => '\n',
- 'r' => '\r',
- 't' => '\t',
- 'v' => '\v',
+ 'a' => '\a',
+ 'b' => '\b',
+ 'f' => '\f',
+ 'n' => '\n',
+ 'r' => '\r',
+ 't' => '\t',
+ 'v' => '\v',
'\\' => '\\',
- _ => '?'
+ _ => '?',
};
break;
}
- if (state == Token.Comment) break;
+ if (state == Token.Comment)
+ {
+ break;
+ }
if (state < Token.EscapeChar)
{
@@ -112,14 +115,17 @@ namespace Ryujinx.HLE.Loaders.Mods
// Big Endian
static byte[] Hex2ByteArrayBE(string hexstr)
{
- if ((hexstr.Length & 1) == 1) return null;
+ if ((hexstr.Length & 1) == 1)
+ {
+ return null;
+ }
byte[] bytes = new byte[hexstr.Length >> 1];
for (int i = 0; i < hexstr.Length; i += 2)
{
int high = ParseHexByte((byte)hexstr[i]);
- int low = ParseHexByte((byte)hexstr[i + 1]);
+ int low = ParseHexByte((byte)hexstr[i + 1]);
bytes[i >> 1] = (byte)((high << 4) | low);
}
@@ -147,11 +153,11 @@ namespace Ryujinx.HLE.Loaders.Mods
return null;
}
- MemPatch patches = new MemPatch();
+ MemPatch patches = new();
- bool enabled = false;
+ bool enabled = false;
bool printValues = false;
- int offset_shift = 0;
+ int offsetShift = 0;
string line;
int lineNum = 0;
@@ -205,7 +211,7 @@ namespace Ryujinx.HLE.Loaders.Mods
if (tokens[1] == "offset_shift")
{
- if (tokens.Length != 3 || !ParseInt(tokens[2], out offset_shift))
+ if (tokens.Length != 3 || !ParseInt(tokens[2], out offsetShift))
{
ParseWarn();
@@ -244,7 +250,7 @@ namespace Ryujinx.HLE.Loaders.Mods
continue;
}
- offset += offset_shift;
+ offset += offsetShift;
if (printValues)
{
@@ -272,4 +278,4 @@ namespace Ryujinx.HLE.Loaders.Mods
patches.AddFrom(Parse());
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/Loaders/Mods/MemPatch.cs b/src/Ryujinx.HLE/Loaders/Mods/MemPatch.cs
index f9db7c69..0a1f12b1 100644
--- a/src/Ryujinx.HLE/Loaders/Mods/MemPatch.cs
+++ b/src/Ryujinx.HLE/Loaders/Mods/MemPatch.cs
@@ -7,7 +7,7 @@ namespace Ryujinx.HLE.Loaders.Mods
{
public class MemPatch
{
- readonly Dictionary<uint, byte[]> _patches = new Dictionary<uint, byte[]>();
+ readonly Dictionary<uint, byte[]> _patches = new();
/// <summary>
/// Adds a patch to specified offset. Overwrites if already present.
@@ -69,7 +69,7 @@ namespace Ryujinx.HLE.Loaders.Mods
foreach (var (offset, patch) in _patches.OrderBy(item => item.Key))
{
int patchOffset = (int)offset;
- int patchSize = patch.Length;
+ int patchSize = patch.Length;
if (patchOffset < protectedOffset || patchOffset > memory.Length)
{
@@ -93,4 +93,4 @@ namespace Ryujinx.HLE.Loaders.Mods
return count;
}
}
-} \ No newline at end of file
+}