aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/Switch.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-06-10 21:46:42 -0300
committergdkchan <gab.dark.100@gmail.com>2018-06-10 21:46:42 -0300
commit76f3b1b3a4637ec72abfbb8cbc0679f2e0ca838f (patch)
tree0411b709de31c1c0517763512df8eeb9f7491bc9 /Ryujinx.HLE/Switch.cs
parent518fe799da6dd4f12c58c9e6e174767effb0b868 (diff)
Rename Ryujinx.Core to Ryujinx.HLE and add a separate project for a future LLE implementation
Diffstat (limited to 'Ryujinx.HLE/Switch.cs')
-rw-r--r--Ryujinx.HLE/Switch.cs93
1 files changed, 93 insertions, 0 deletions
diff --git a/Ryujinx.HLE/Switch.cs b/Ryujinx.HLE/Switch.cs
new file mode 100644
index 00000000..f75b2490
--- /dev/null
+++ b/Ryujinx.HLE/Switch.cs
@@ -0,0 +1,93 @@
+using Ryujinx.Audio;
+using Ryujinx.Graphics.Gal;
+using Ryujinx.HLE.Gpu;
+using Ryujinx.HLE.Input;
+using Ryujinx.HLE.Logging;
+using Ryujinx.HLE.OsHle;
+using Ryujinx.HLE.Settings;
+using System;
+
+namespace Ryujinx.HLE
+{
+ public class Switch : IDisposable
+ {
+ internal IAalOutput AudioOut { get; private set; }
+
+ public Logger Log { get; private set; }
+
+ internal NvGpu Gpu { get; private set; }
+
+ internal VirtualFileSystem VFs { get; private set; }
+
+ public Horizon Os { get; private set; }
+
+ public SystemSettings Settings { get; private set; }
+
+ public PerformanceStatistics Statistics { get; private set; }
+
+ public Hid Hid { get; private set; }
+
+ public event EventHandler Finish;
+
+ public Switch(IGalRenderer Renderer, IAalOutput AudioOut)
+ {
+ if (Renderer == null)
+ {
+ throw new ArgumentNullException(nameof(Renderer));
+ }
+
+ if (AudioOut == null)
+ {
+ throw new ArgumentNullException(nameof(AudioOut));
+ }
+
+ this.AudioOut = AudioOut;
+
+ Log = new Logger();
+
+ Gpu = new NvGpu(Renderer);
+
+ VFs = new VirtualFileSystem();
+
+ Os = new Horizon(this);
+
+ Settings = new SystemSettings();
+
+ Statistics = new PerformanceStatistics();
+
+ Hid = new Hid(Log);
+
+ Os.HidSharedMem.MemoryMapped += Hid.ShMemMap;
+ Os.HidSharedMem.MemoryUnmapped += Hid.ShMemUnmap;
+ }
+
+ public void LoadCart(string ExeFsDir, string RomFsFile = null)
+ {
+ Os.LoadCart(ExeFsDir, RomFsFile);
+ }
+
+ public void LoadProgram(string FileName)
+ {
+ Os.LoadProgram(FileName);
+ }
+
+ internal virtual void OnFinish(EventArgs e)
+ {
+ Finish?.Invoke(this, e);
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+
+ protected virtual void Dispose(bool Disposing)
+ {
+ if (Disposing)
+ {
+ Os.Dispose();
+ VFs.Dispose();
+ }
+ }
+ }
+} \ No newline at end of file