| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using Ryujinx.Audio;
- using Ryujinx.Graphics;
- using Ryujinx.Graphics.Gal;
- using Ryujinx.HLE.FileSystem;
- using Ryujinx.HLE.HOS;
- using Ryujinx.HLE.Input;
- using Ryujinx.HLE.Logging;
- using Ryujinx.HLE.Memory;
- using System;
- using System.Threading;
- namespace Ryujinx.HLE
- {
- public class Switch : IDisposable
- {
- internal IAalOutput AudioOut { get; private set; }
- public Logger Log { get; private set; }
- internal DeviceMemory Memory { get; private set; }
- internal NvGpu Gpu { get; private set; }
- internal VirtualFileSystem FileSystem { get; private set; }
- public Horizon System { get; private set; }
- public PerformanceStatistics Statistics { get; private set; }
- public Hid Hid { get; private set; }
- public bool EnableDeviceVsync { get; set; } = true;
- public AutoResetEvent VsyncEvent { 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();
- Memory = new DeviceMemory();
- Gpu = new NvGpu(Renderer);
- FileSystem = new VirtualFileSystem();
- System = new Horizon(this);
- Statistics = new PerformanceStatistics();
- Hid = new Hid(this, System.HidSharedMem.PA);
- VsyncEvent = new AutoResetEvent(true);
- }
- public void LoadCart(string ExeFsDir, string RomFsFile = null)
- {
- System.LoadCart(ExeFsDir, RomFsFile);
- }
- public void LoadXci(string XciFile)
- {
- System.LoadXci(XciFile);
- }
- public void LoadNca(string NcaFile)
- {
- System.LoadNca(NcaFile);
- }
- public void LoadNsp(string NspFile)
- {
- System.LoadNsp(NspFile);
- }
- public void LoadProgram(string FileName)
- {
- System.LoadProgram(FileName);
- }
- public bool WaitFifo()
- {
- return Gpu.Fifo.Event.WaitOne(8);
- }
- public void ProcessFrame()
- {
- Gpu.Fifo.DispatchCalls();
- }
- internal void Unload()
- {
- FileSystem.Dispose();
- Memory.Dispose();
- }
- public void Dispose()
- {
- Dispose(true);
- }
- protected virtual void Dispose(bool Disposing)
- {
- if (Disposing)
- {
- System.Dispose();
- VsyncEvent.Dispose();
- }
- }
- }
- }
|