aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/Utilities/FontUtils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/Utilities/FontUtils.cs')
-rw-r--r--Ryujinx.HLE/Utilities/FontUtils.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Ryujinx.HLE/Utilities/FontUtils.cs b/Ryujinx.HLE/Utilities/FontUtils.cs
new file mode 100644
index 00000000..efe7560c
--- /dev/null
+++ b/Ryujinx.HLE/Utilities/FontUtils.cs
@@ -0,0 +1,37 @@
+using System.IO;
+
+namespace Ryujinx.HLE.Utilities
+{
+ public static class FontUtils
+ {
+ private static readonly uint FontKey = 0x06186249;
+
+ public static byte[] DecryptFont(Stream BFTTFStream)
+ {
+ uint KXor(uint In) => In ^ 0x06186249;
+
+ using (BinaryReader Reader = new BinaryReader(BFTTFStream))
+ {
+ using (MemoryStream TTFStream = new MemoryStream())
+ {
+ using (BinaryWriter Output = new BinaryWriter(TTFStream))
+ {
+ if (KXor(Reader.ReadUInt32()) != 0x18029a7f)
+ {
+ throw new InvalidDataException("Error: Input file is not in BFTTF format!");
+ }
+
+ BFTTFStream.Position += 4;
+
+ for (int i = 0; i < (BFTTFStream.Length - 8) / 4; i++)
+ {
+ Output.Write(KXor(Reader.ReadUInt32()));
+ }
+
+ return TTFStream.ToArray();
+ }
+ }
+ }
+ }
+ }
+}