forked from Mirror/Ryujinx
c2c765b30f
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
77 lines
2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|