aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Ui/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx/Ui/Program.cs')
-rw-r--r--Ryujinx/Ui/Program.cs65
1 files changed, 65 insertions, 0 deletions
diff --git a/Ryujinx/Ui/Program.cs b/Ryujinx/Ui/Program.cs
new file mode 100644
index 00000000..88a8a117
--- /dev/null
+++ b/Ryujinx/Ui/Program.cs
@@ -0,0 +1,65 @@
+using Gal;
+using Gal.OpenGL;
+using System;
+using System.IO;
+
+namespace Ryujinx
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ Config.Read();
+
+ Console.Title = "Ryujinx Console";
+
+ IGalRenderer Renderer = new OpenGLRenderer();
+
+ Switch Ns = new Switch(Renderer);
+
+ if (args.Length == 1)
+ {
+ if (Directory.Exists(args[0]))
+ {
+ string[] RomFsFiles = Directory.GetFiles(args[0], "*.istorage");
+
+ if (RomFsFiles.Length > 0)
+ {
+ Logging.Info("Loading as cart with RomFS.");
+
+ Ns.Os.LoadCart(args[0], RomFsFiles[0]);
+ }
+ else
+ {
+ Logging.Info("Loading as cart WITHOUT RomFS.");
+
+ Ns.Os.LoadCart(args[0]);
+ }
+ }
+ else if (File.Exists(args[0]))
+ {
+ Logging.Info("Loading as homebrew.");
+
+ Ns.Os.LoadProgram(args[0]);
+ }
+ }
+ else
+ {
+ Logging.Error("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.Run(60.0);
+ }
+
+ Ns.Os.FinalizeAllProcesses();
+
+ Ns.Dispose();
+ }
+ }
+}