Update to version 0.4 of LibHac (#689)
* It compiles * Print correct name when loading an exefs * Use DirectorySaveDataFileSystem for savedata * Handle more errors in IFileSystem * Remove structs replaced by LibHac structs * Fix alignment * Fix alignment again * Fix IFile and IFileSystem IPC * Alignment * Use released libhac version
This commit is contained in:
parent
92c1726647
commit
5fc1f6a1af
20 changed files with 465 additions and 1169 deletions
|
@ -1,13 +1,11 @@
|
|||
using LibHac;
|
||||
using LibHac.IO;
|
||||
using LibHac.Fs;
|
||||
using LibHac.Fs.NcaUtils;
|
||||
using Ryujinx.HLE.FileSystem;
|
||||
using Ryujinx.HLE.FileSystem.Content;
|
||||
using Ryujinx.HLE.Resource;
|
||||
using Ryujinx.HLE.Utilities;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
using static Ryujinx.HLE.Utilities.FontUtils;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Font
|
||||
|
@ -53,29 +51,21 @@ namespace Ryujinx.HLE.HOS.Font
|
|||
|
||||
FontInfo CreateFont(string name)
|
||||
{
|
||||
if (contentManager.TryGetFontTitle(name, out long fontTitle))
|
||||
if (contentManager.TryGetFontTitle(name, out long fontTitle) &&
|
||||
contentManager.TryGetFontFilename(name, out string fontFilename))
|
||||
{
|
||||
string contentPath = contentManager.GetInstalledContentPath(fontTitle, StorageId.NandSystem, ContentType.Data);
|
||||
string fontPath = _device.FileSystem.SwitchPathToSystemPath(contentPath);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(fontPath))
|
||||
{
|
||||
int fileIndex = 0;
|
||||
|
||||
//Use second file in Chinese Font title for standard
|
||||
if(name == "FontChineseSimplified")
|
||||
{
|
||||
fileIndex = 1;
|
||||
}
|
||||
|
||||
byte[] data;
|
||||
|
||||
using (FileStream ncaFileStream = new FileStream(fontPath, FileMode.Open, FileAccess.Read))
|
||||
using (IStorage ncaFileStream = new LocalStorage(fontPath, FileAccess.Read, FileMode.Open))
|
||||
{
|
||||
Nca nca = new Nca(_device.System.KeySet, ncaFileStream.AsStorage(), false);
|
||||
NcaSection romfsSection = nca.Sections.FirstOrDefault(x => x?.Type == SectionType.Romfs);
|
||||
Romfs romfs = new Romfs(nca.OpenSection(romfsSection.SectionNum, false, _device.System.FsIntegrityCheckLevel, false));
|
||||
Stream fontFile = romfs.OpenFile(romfs.Files[fileIndex]).AsStream();
|
||||
Nca nca = new Nca(_device.System.KeySet, ncaFileStream);
|
||||
IFileSystem romfs = nca.OpenFileSystem(NcaSectionType.Data, _device.System.FsIntegrityCheckLevel);
|
||||
Stream fontFile = romfs.OpenFile(fontFilename, OpenMode.Read).AsStream();
|
||||
|
||||
data = DecryptFont(fontFile);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue