R/Ryujinx/Ui/Program.cs
Thomas Guillemard c2c765b30f hbabi: Implement argv (#272)
This commit implements the argv config key in Ryujinx (by creating a temporary copy of the homebrew executable in the sdmc VFS) to make it possible
to load libnx's "romfs" files.

This commit also call Os.Dispose in Ns.OnFinish to dispose all resources when exiting
2018-07-17 16:14:27 -03:00

77 lines
2 KiB
C#

using Ryujinx.Audio;
using Ryujinx.Audio.OpenAL;
using Ryujinx.Graphics.Gal;
using Ryujinx.Graphics.Gal.OpenGL;
using Ryujinx.HLE;
using System;
using System.IO;
namespace Ryujinx
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Ryujinx Console";
IGalRenderer Renderer = new OGLRenderer();
IAalOutput AudioOut = new OpenALAudioOut();
Switch Ns = new Switch(Renderer, AudioOut);
Config.Read(Ns.Log);
Ns.Log.Updated += ConsoleLog.PrintLog;
if (args.Length == 1)
{
if (Directory.Exists(args[0]))
{
string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage");
if (RomFsFiles.Length == 0)
{
RomFsFiles = Directory.GetFiles(args[0], "*.romfs");
}
if (RomFsFiles.Length > 0)
{
Console.WriteLine("Loading as cart with RomFS.");
Ns.LoadCart(args[0], RomFsFiles[0]);
}
else
{
Console.WriteLine("Loading as cart WITHOUT RomFS.");
Ns.LoadCart(args[0]);
}
}
else if (File.Exists(args[0]))
{
Console.WriteLine("Loading as homebrew.");
Ns.LoadProgram(args[0]);
}
}
else
{
Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO.");
}
using (GLScreen Screen = new GLScreen(Ns, Renderer))
{
Ns.Finish += (Sender, Args) =>
{
Screen.Exit();
};
Screen.MainLoop();
Ns.OnFinish(EventArgs.Empty);
}
Environment.Exit(0);
}
}
}