Adjust naming conventions and general refactoring in HLE Project (#490)

* Rename enum fields

* Naming conventions

* Remove unneeded ".this"

* Remove unneeded semicolons

* Remove unused Usings

* Don't use var

* Remove unneeded enum underlying types

* Explicitly label class visibility

* Remove unneeded @ prefixes

* Remove unneeded commas

* Remove unneeded if expressions

* Method doesn't use unsafe code

* Remove unneeded casts

* Initialized objects don't need an empty constructor

* Remove settings from DotSettings

* Revert "Explicitly label class visibility"

This reverts commit ad5eb5787cc5b27a4631cd46ef5f551c4ae95e51.

* Small changes

* Revert external enum renaming

* Changes from feedback

* Remove unneeded property setters
This commit is contained in:
Alex Barney 2018-12-04 14:23:37 -06:00 committed by gdkchan
parent c86aacde76
commit 85dbb9559a
299 changed files with 12268 additions and 12276 deletions

View file

@ -5,21 +5,21 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IAllSystemAppletProxiesService : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IAllSystemAppletProxiesService()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 100, OpenSystemAppletProxy }
};
}
public long OpenSystemAppletProxy(ServiceCtx Context)
public long OpenSystemAppletProxy(ServiceCtx context)
{
MakeObject(Context, new ISystemAppletProxy());
MakeObject(context, new ISystemAppletProxy());
return 0;
}

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IApplicationCreator : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IApplicationCreator()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
//...
};

View file

@ -6,13 +6,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IApplicationFunctions : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IApplicationFunctions()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 1, PopLaunchParameter },
{ 20, EnsureSaveData },
@ -26,88 +26,88 @@ namespace Ryujinx.HLE.HOS.Services.Am
};
}
public long PopLaunchParameter(ServiceCtx Context)
public long PopLaunchParameter(ServiceCtx context)
{
//Only the first 0x18 bytes of the Data seems to be actually used.
MakeObject(Context, new IStorage(StorageHelper.MakeLaunchParams()));
MakeObject(context, new IStorage(StorageHelper.MakeLaunchParams()));
return 0;
}
public long EnsureSaveData(ServiceCtx Context)
public long EnsureSaveData(ServiceCtx context)
{
long UIdLow = Context.RequestData.ReadInt64();
long UIdHigh = Context.RequestData.ReadInt64();
long uIdLow = context.RequestData.ReadInt64();
long uIdHigh = context.RequestData.ReadInt64();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
Context.ResponseData.Write(0L);
context.ResponseData.Write(0L);
return 0;
}
public long GetDesiredLanguage(ServiceCtx Context)
public long GetDesiredLanguage(ServiceCtx context)
{
Context.ResponseData.Write(Context.Device.System.State.DesiredLanguageCode);
context.ResponseData.Write(context.Device.System.State.DesiredLanguageCode);
return 0;
}
public long SetTerminateResult(ServiceCtx Context)
public long SetTerminateResult(ServiceCtx context)
{
int ErrorCode = Context.RequestData.ReadInt32();
int errorCode = context.RequestData.ReadInt32();
string Result = GetFormattedErrorCode(ErrorCode);
string result = GetFormattedErrorCode(errorCode);
Logger.PrintInfo(LogClass.ServiceAm, $"Result = 0x{ErrorCode:x8} ({Result}).");
Logger.PrintInfo(LogClass.ServiceAm, $"Result = 0x{errorCode:x8} ({result}).");
return 0;
}
private string GetFormattedErrorCode(int ErrorCode)
private string GetFormattedErrorCode(int errorCode)
{
int Module = (ErrorCode >> 0) & 0x1ff;
int Description = (ErrorCode >> 9) & 0x1fff;
int module = (errorCode >> 0) & 0x1ff;
int description = (errorCode >> 9) & 0x1fff;
return $"{(2000 + Module):d4}-{Description:d4}";
return $"{(2000 + module):d4}-{description:d4}";
}
public long GetDisplayVersion(ServiceCtx Context)
public long GetDisplayVersion(ServiceCtx context)
{
//FIXME: Need to check correct version on a switch.
Context.ResponseData.Write(1L);
Context.ResponseData.Write(0L);
context.ResponseData.Write(1L);
context.ResponseData.Write(0L);
return 0;
}
public long NotifyRunning(ServiceCtx Context)
public long NotifyRunning(ServiceCtx context)
{
Context.ResponseData.Write(1);
context.ResponseData.Write(1);
return 0;
}
public long GetPseudoDeviceId(ServiceCtx Context)
public long GetPseudoDeviceId(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
Context.ResponseData.Write(0L);
Context.ResponseData.Write(0L);
context.ResponseData.Write(0L);
context.ResponseData.Write(0L);
return 0;
}
public long InitializeGamePlayRecording(ServiceCtx Context)
public long InitializeGamePlayRecording(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetGamePlayRecordingState(ServiceCtx Context)
public long SetGamePlayRecordingState(ServiceCtx context)
{
int State = Context.RequestData.ReadInt32();
int state = context.RequestData.ReadInt32();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IApplicationProxy : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IApplicationProxy()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, GetCommonStateGetter },
{ 1, GetSelfController },
@ -24,58 +24,58 @@ namespace Ryujinx.HLE.HOS.Services.Am
};
}
public long GetCommonStateGetter(ServiceCtx Context)
public long GetCommonStateGetter(ServiceCtx context)
{
MakeObject(Context, new ICommonStateGetter(Context.Device.System));
MakeObject(context, new ICommonStateGetter(context.Device.System));
return 0;
}
public long GetSelfController(ServiceCtx Context)
public long GetSelfController(ServiceCtx context)
{
MakeObject(Context, new ISelfController(Context.Device.System));
MakeObject(context, new ISelfController(context.Device.System));
return 0;
}
public long GetWindowController(ServiceCtx Context)
public long GetWindowController(ServiceCtx context)
{
MakeObject(Context, new IWindowController());
MakeObject(context, new IWindowController());
return 0;
}
public long GetAudioController(ServiceCtx Context)
public long GetAudioController(ServiceCtx context)
{
MakeObject(Context, new IAudioController());
MakeObject(context, new IAudioController());
return 0;
}
public long GetDisplayController(ServiceCtx Context)
public long GetDisplayController(ServiceCtx context)
{
MakeObject(Context, new IDisplayController());
MakeObject(context, new IDisplayController());
return 0;
}
public long GetLibraryAppletCreator(ServiceCtx Context)
public long GetLibraryAppletCreator(ServiceCtx context)
{
MakeObject(Context, new ILibraryAppletCreator());
MakeObject(context, new ILibraryAppletCreator());
return 0;
}
public long GetApplicationFunctions(ServiceCtx Context)
public long GetApplicationFunctions(ServiceCtx context)
{
MakeObject(Context, new IApplicationFunctions());
MakeObject(context, new IApplicationFunctions());
return 0;
}
public long GetDebugFunctions(ServiceCtx Context)
public long GetDebugFunctions(ServiceCtx context)
{
MakeObject(Context, new IDebugFunctions());
MakeObject(context, new IDebugFunctions());
return 0;
}

View file

@ -5,21 +5,21 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IApplicationProxyService : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IApplicationProxyService()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, OpenApplicationProxy }
};
}
public long OpenApplicationProxy(ServiceCtx Context)
public long OpenApplicationProxy(ServiceCtx context)
{
MakeObject(Context, new IApplicationProxy());
MakeObject(context, new IApplicationProxy());
return 0;
}

View file

@ -6,13 +6,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IAudioController : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IAudioController()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, SetExpectedMasterVolume },
{ 1, GetMainAppletExpectedMasterVolume },
@ -22,47 +22,47 @@ namespace Ryujinx.HLE.HOS.Services.Am
};
}
public long SetExpectedMasterVolume(ServiceCtx Context)
public long SetExpectedMasterVolume(ServiceCtx context)
{
float AppletVolume = Context.RequestData.ReadSingle();
float LibraryAppletVolume = Context.RequestData.ReadSingle();
float appletVolume = context.RequestData.ReadSingle();
float libraryAppletVolume = context.RequestData.ReadSingle();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetMainAppletExpectedMasterVolume(ServiceCtx Context)
public long GetMainAppletExpectedMasterVolume(ServiceCtx context)
{
Context.ResponseData.Write(1f);
context.ResponseData.Write(1f);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetLibraryAppletExpectedMasterVolume(ServiceCtx Context)
public long GetLibraryAppletExpectedMasterVolume(ServiceCtx context)
{
Context.ResponseData.Write(1f);
context.ResponseData.Write(1f);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long ChangeMainAppletMasterVolume(ServiceCtx Context)
public long ChangeMainAppletMasterVolume(ServiceCtx context)
{
float Unknown0 = Context.RequestData.ReadSingle();
long Unknown1 = Context.RequestData.ReadInt64();
float unknown0 = context.RequestData.ReadSingle();
long unknown1 = context.RequestData.ReadInt64();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetTransparentVolumeRate(ServiceCtx Context)
public long SetTransparentVolumeRate(ServiceCtx context)
{
float Unknown0 = Context.RequestData.ReadSingle();
float unknown0 = context.RequestData.ReadSingle();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");

View file

@ -10,15 +10,15 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class ICommonStateGetter : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
private KEvent DisplayResolutionChangeEvent;
private KEvent _displayResolutionChangeEvent;
public ICommonStateGetter(Horizon System)
public ICommonStateGetter(Horizon system)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, GetEventHandle },
{ 1, ReceiveMessage },
@ -30,89 +30,89 @@ namespace Ryujinx.HLE.HOS.Services.Am
{ 61, GetDefaultDisplayResolutionChangeEvent }
};
DisplayResolutionChangeEvent = new KEvent(System);
_displayResolutionChangeEvent = new KEvent(system);
}
public long GetEventHandle(ServiceCtx Context)
public long GetEventHandle(ServiceCtx context)
{
KEvent Event = Context.Device.System.AppletState.MessageEvent;
KEvent Event = context.Device.System.AppletState.MessageEvent;
if (Context.Process.HandleTable.GenerateHandle(Event.ReadableEvent, out int Handle) != KernelResult.Success)
if (context.Process.HandleTable.GenerateHandle(Event.ReadableEvent, out int handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
return 0;
}
public long ReceiveMessage(ServiceCtx Context)
public long ReceiveMessage(ServiceCtx context)
{
if (!Context.Device.System.AppletState.TryDequeueMessage(out MessageInfo Message))
if (!context.Device.System.AppletState.TryDequeueMessage(out MessageInfo message))
{
return MakeError(ErrorModule.Am, AmErr.NoMessages);
}
Context.ResponseData.Write((int)Message);
context.ResponseData.Write((int)message);
return 0;
}
public long GetOperationMode(ServiceCtx Context)
public long GetOperationMode(ServiceCtx context)
{
OperationMode Mode = Context.Device.System.State.DockedMode
OperationMode mode = context.Device.System.State.DockedMode
? OperationMode.Docked
: OperationMode.Handheld;
Context.ResponseData.Write((byte)Mode);
context.ResponseData.Write((byte)mode);
return 0;
}
public long GetPerformanceMode(ServiceCtx Context)
public long GetPerformanceMode(ServiceCtx context)
{
Apm.PerformanceMode Mode = Context.Device.System.State.DockedMode
Apm.PerformanceMode mode = context.Device.System.State.DockedMode
? Apm.PerformanceMode.Docked
: Apm.PerformanceMode.Handheld;
Context.ResponseData.Write((int)Mode);
context.ResponseData.Write((int)mode);
return 0;
}
public long GetBootMode(ServiceCtx Context)
public long GetBootMode(ServiceCtx context)
{
Context.ResponseData.Write((byte)0); //Unknown value.
context.ResponseData.Write((byte)0); //Unknown value.
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetCurrentFocusState(ServiceCtx Context)
public long GetCurrentFocusState(ServiceCtx context)
{
Context.ResponseData.Write((byte)Context.Device.System.AppletState.FocusState);
context.ResponseData.Write((byte)context.Device.System.AppletState.FocusState);
return 0;
}
public long GetDefaultDisplayResolution(ServiceCtx Context)
public long GetDefaultDisplayResolution(ServiceCtx context)
{
Context.ResponseData.Write(1280);
Context.ResponseData.Write(720);
context.ResponseData.Write(1280);
context.ResponseData.Write(720);
return 0;
}
public long GetDefaultDisplayResolutionChangeEvent(ServiceCtx Context)
public long GetDefaultDisplayResolutionChangeEvent(ServiceCtx context)
{
if (Context.Process.HandleTable.GenerateHandle(DisplayResolutionChangeEvent.ReadableEvent, out int Handle) != KernelResult.Success)
if (context.Process.HandleTable.GenerateHandle(_displayResolutionChangeEvent.ReadableEvent, out int handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IDebugFunctions : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IDebugFunctions()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
//...
};

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IDisplayController : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IDisplayController()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
//...
};

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IGlobalStateController : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IGlobalStateController()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
//...
};

View file

@ -8,39 +8,39 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IHomeMenuFunctions : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
private KEvent ChannelEvent;
private KEvent _channelEvent;
public IHomeMenuFunctions(Horizon System)
public IHomeMenuFunctions(Horizon system)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 10, RequestToGetForeground },
{ 21, GetPopFromGeneralChannelEvent }
};
//ToDo: Signal this Event somewhere in future.
ChannelEvent = new KEvent(System);
_channelEvent = new KEvent(system);
}
public long RequestToGetForeground(ServiceCtx Context)
public long RequestToGetForeground(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetPopFromGeneralChannelEvent(ServiceCtx Context)
public long GetPopFromGeneralChannelEvent(ServiceCtx context)
{
if (Context.Process.HandleTable.GenerateHandle(ChannelEvent.ReadableEvent, out int Handle) != KernelResult.Success)
if (context.Process.HandleTable.GenerateHandle(_channelEvent.ReadableEvent, out int handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");

View file

@ -8,15 +8,15 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class ILibraryAppletAccessor : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
private KEvent StateChangedEvent;
private KEvent _stateChangedEvent;
public ILibraryAppletAccessor(Horizon System)
public ILibraryAppletAccessor(Horizon system)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, GetAppletStateChangedEvent },
{ 10, Start },
@ -25,49 +25,49 @@ namespace Ryujinx.HLE.HOS.Services.Am
{ 101, PopOutData }
};
StateChangedEvent = new KEvent(System);
_stateChangedEvent = new KEvent(system);
}
public long GetAppletStateChangedEvent(ServiceCtx Context)
public long GetAppletStateChangedEvent(ServiceCtx context)
{
StateChangedEvent.ReadableEvent.Signal();
_stateChangedEvent.ReadableEvent.Signal();
if (Context.Process.HandleTable.GenerateHandle(StateChangedEvent.ReadableEvent, out int Handle) != KernelResult.Success)
if (context.Process.HandleTable.GenerateHandle(_stateChangedEvent.ReadableEvent, out int handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long Start(ServiceCtx Context)
public long Start(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetResult(ServiceCtx Context)
public long GetResult(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long PushInData(ServiceCtx Context)
public long PushInData(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long PopOutData(ServiceCtx Context)
public long PopOutData(ServiceCtx context)
{
MakeObject(Context, new IStorage(StorageHelper.MakeLaunchParams()));
MakeObject(context, new IStorage(StorageHelper.MakeLaunchParams()));
return 0;
}

View file

@ -5,31 +5,31 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class ILibraryAppletCreator : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public ILibraryAppletCreator()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, CreateLibraryApplet },
{ 10, CreateStorage }
};
}
public long CreateLibraryApplet(ServiceCtx Context)
public long CreateLibraryApplet(ServiceCtx context)
{
MakeObject(Context, new ILibraryAppletAccessor(Context.Device.System));
MakeObject(context, new ILibraryAppletAccessor(context.Device.System));
return 0;
}
public long CreateStorage(ServiceCtx Context)
public long CreateStorage(ServiceCtx context)
{
long Size = Context.RequestData.ReadInt64();
long size = context.RequestData.ReadInt64();
MakeObject(Context, new IStorage(new byte[Size]));
MakeObject(context, new IStorage(new byte[size]));
return 0;
}

View file

@ -8,17 +8,17 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class ISelfController : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
private KEvent LaunchableEvent;
private KEvent _launchableEvent;
private int IdleTimeDetectionExtension;
private int _idleTimeDetectionExtension;
public ISelfController(Horizon System)
public ISelfController(Horizon system)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, Exit },
{ 1, LockExit },
@ -36,114 +36,114 @@ namespace Ryujinx.HLE.HOS.Services.Am
{ 63, GetIdleTimeDetectionExtension }
};
LaunchableEvent = new KEvent(System);
_launchableEvent = new KEvent(system);
}
public long Exit(ServiceCtx Context)
public long Exit(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long LockExit(ServiceCtx Context)
public long LockExit(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long UnlockExit(ServiceCtx Context)
public long UnlockExit(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long GetLibraryAppletLaunchableEvent(ServiceCtx Context)
public long GetLibraryAppletLaunchableEvent(ServiceCtx context)
{
LaunchableEvent.ReadableEvent.Signal();
_launchableEvent.ReadableEvent.Signal();
if (Context.Process.HandleTable.GenerateHandle(LaunchableEvent.ReadableEvent, out int Handle) != KernelResult.Success)
if (context.Process.HandleTable.GenerateHandle(_launchableEvent.ReadableEvent, out int handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle);
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetScreenShotPermission(ServiceCtx Context)
public long SetScreenShotPermission(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetOperationModeChangedNotification(ServiceCtx Context)
public long SetOperationModeChangedNotification(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetPerformanceModeChangedNotification(ServiceCtx Context)
public long SetPerformanceModeChangedNotification(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetFocusHandlingMode(ServiceCtx Context)
public long SetFocusHandlingMode(ServiceCtx context)
{
bool Flag1 = Context.RequestData.ReadByte() != 0 ? true : false;
bool Flag2 = Context.RequestData.ReadByte() != 0 ? true : false;
bool Flag3 = Context.RequestData.ReadByte() != 0 ? true : false;
bool flag1 = context.RequestData.ReadByte() != 0;
bool flag2 = context.RequestData.ReadByte() != 0;
bool flag3 = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetRestartMessageEnabled(ServiceCtx Context)
public long SetRestartMessageEnabled(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetOutOfFocusSuspendingEnabled(ServiceCtx Context)
public long SetOutOfFocusSuspendingEnabled(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetScreenShotImageOrientation(ServiceCtx Context)
public long SetScreenShotImageOrientation(ServiceCtx context)
{
int Orientation = Context.RequestData.ReadInt32();
int orientation = context.RequestData.ReadInt32();
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
return 0;
}
public long SetHandlesRequestToDisplay(ServiceCtx Context)
public long SetHandlesRequestToDisplay(ServiceCtx context)
{
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
bool enable = context.RequestData.ReadByte() != 0;
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
@ -151,21 +151,21 @@ namespace Ryujinx.HLE.HOS.Services.Am
}
// SetIdleTimeDetectionExtension(u32)
public long SetIdleTimeDetectionExtension(ServiceCtx Context)
public long SetIdleTimeDetectionExtension(ServiceCtx context)
{
IdleTimeDetectionExtension = Context.RequestData.ReadInt32();
_idleTimeDetectionExtension = context.RequestData.ReadInt32();
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {_idleTimeDetectionExtension}");
return 0;
}
// GetIdleTimeDetectionExtension() -> u32
public long GetIdleTimeDetectionExtension(ServiceCtx Context)
public long GetIdleTimeDetectionExtension(ServiceCtx context)
{
Context.ResponseData.Write(IdleTimeDetectionExtension);
context.ResponseData.Write(_idleTimeDetectionExtension);
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {_idleTimeDetectionExtension}");
return 0;
}

View file

@ -5,25 +5,25 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IStorage : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public byte[] Data { get; private set; }
public byte[] Data { get; }
public IStorage(byte[] Data)
public IStorage(byte[] data)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, Open }
};
this.Data = Data;
Data = data;
}
public long Open(ServiceCtx Context)
public long Open(ServiceCtx context)
{
MakeObject(Context, new IStorageAccessor(this));
MakeObject(context, new IStorageAccessor(this));
return 0;
}

View file

@ -6,76 +6,76 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IStorageAccessor : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
private IStorage Storage;
private IStorage _storage;
public IStorageAccessor(IStorage Storage)
public IStorageAccessor(IStorage storage)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, GetSize },
{ 10, Write },
{ 11, Read }
};
this.Storage = Storage;
_storage = storage;
}
public long GetSize(ServiceCtx Context)
public long GetSize(ServiceCtx context)
{
Context.ResponseData.Write((long)Storage.Data.Length);
context.ResponseData.Write((long)_storage.Data.Length);
return 0;
}
public long Write(ServiceCtx Context)
public long Write(ServiceCtx context)
{
//TODO: Error conditions.
long WritePosition = Context.RequestData.ReadInt64();
long writePosition = context.RequestData.ReadInt64();
(long Position, long Size) = Context.Request.GetBufferType0x21();
(long position, long size) = context.Request.GetBufferType0x21();
if (Size > 0)
if (size > 0)
{
long MaxSize = Storage.Data.Length - WritePosition;
long maxSize = _storage.Data.Length - writePosition;
if (Size > MaxSize)
if (size > maxSize)
{
Size = MaxSize;
size = maxSize;
}
byte[] Data = Context.Memory.ReadBytes(Position, Size);
byte[] data = context.Memory.ReadBytes(position, size);
Buffer.BlockCopy(Data, 0, Storage.Data, (int)WritePosition, (int)Size);
Buffer.BlockCopy(data, 0, _storage.Data, (int)writePosition, (int)size);
}
return 0;
}
public long Read(ServiceCtx Context)
public long Read(ServiceCtx context)
{
//TODO: Error conditions.
long ReadPosition = Context.RequestData.ReadInt64();
long readPosition = context.RequestData.ReadInt64();
(long Position, long Size) = Context.Request.GetBufferType0x22();
(long position, long size) = context.Request.GetBufferType0x22();
byte[] Data;
byte[] data;
if (Storage.Data.Length > Size)
if (_storage.Data.Length > size)
{
Data = new byte[Size];
data = new byte[size];
Buffer.BlockCopy(Storage.Data, 0, Data, 0, (int)Size);
Buffer.BlockCopy(_storage.Data, 0, data, 0, (int)size);
}
else
{
Data = Storage.Data;
data = _storage.Data;
}
Context.Memory.WriteBytes(Position, Data);
context.Memory.WriteBytes(position, data);
return 0;
}

View file

@ -5,13 +5,13 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class ISystemAppletProxy : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public ISystemAppletProxy()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 0, GetCommonStateGetter },
{ 1, GetSelfController },
@ -26,72 +26,72 @@ namespace Ryujinx.HLE.HOS.Services.Am
};
}
public long GetCommonStateGetter(ServiceCtx Context)
public long GetCommonStateGetter(ServiceCtx context)
{
MakeObject(Context, new ICommonStateGetter(Context.Device.System));
MakeObject(context, new ICommonStateGetter(context.Device.System));
return 0;
}
public long GetSelfController(ServiceCtx Context)
public long GetSelfController(ServiceCtx context)
{
MakeObject(Context, new ISelfController(Context.Device.System));
MakeObject(context, new ISelfController(context.Device.System));
return 0;
}
public long GetWindowController(ServiceCtx Context)
public long GetWindowController(ServiceCtx context)
{
MakeObject(Context, new IWindowController());
MakeObject(context, new IWindowController());
return 0;
}
public long GetAudioController(ServiceCtx Context)
public long GetAudioController(ServiceCtx context)
{
MakeObject(Context, new IAudioController());
MakeObject(context, new IAudioController());
return 0;
}
public long GetDisplayController(ServiceCtx Context)
public long GetDisplayController(ServiceCtx context)
{
MakeObject(Context, new IDisplayController());
MakeObject(context, new IDisplayController());
return 0;
}
public long GetLibraryAppletCreator(ServiceCtx Context)
public long GetLibraryAppletCreator(ServiceCtx context)
{
MakeObject(Context, new ILibraryAppletCreator());
MakeObject(context, new ILibraryAppletCreator());
return 0;
}
public long GetHomeMenuFunctions(ServiceCtx Context)
public long GetHomeMenuFunctions(ServiceCtx context)
{
MakeObject(Context, new IHomeMenuFunctions(Context.Device.System));
MakeObject(context, new IHomeMenuFunctions(context.Device.System));
return 0;
}
public long GetGlobalStateController(ServiceCtx Context)
public long GetGlobalStateController(ServiceCtx context)
{
MakeObject(Context, new IGlobalStateController());
MakeObject(context, new IGlobalStateController());
return 0;
}
public long GetApplicationCreator(ServiceCtx Context)
public long GetApplicationCreator(ServiceCtx context)
{
MakeObject(Context, new IApplicationCreator());
MakeObject(context, new IApplicationCreator());
return 0;
}
public long GetDebugFunctions(ServiceCtx Context)
public long GetDebugFunctions(ServiceCtx context)
{
MakeObject(Context, new IDebugFunctions());
MakeObject(context, new IDebugFunctions());
return 0;
}

View file

@ -6,29 +6,29 @@ namespace Ryujinx.HLE.HOS.Services.Am
{
class IWindowController : IpcService
{
private Dictionary<int, ServiceProcessRequest> m_Commands;
private Dictionary<int, ServiceProcessRequest> _commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
public IWindowController()
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
_commands = new Dictionary<int, ServiceProcessRequest>
{
{ 1, GetAppletResourceUserId },
{ 10, AcquireForegroundRights }
};
}
public long GetAppletResourceUserId(ServiceCtx Context)
public long GetAppletResourceUserId(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
Context.ResponseData.Write(0L);
context.ResponseData.Write(0L);
return 0;
}
public long AcquireForegroundRights(ServiceCtx Context)
public long AcquireForegroundRights(ServiceCtx context)
{
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");

View file

@ -9,18 +9,18 @@ namespace Ryujinx.HLE.HOS.Services.Am
public static byte[] MakeLaunchParams()
{
//Size needs to be at least 0x88 bytes otherwise application errors.
using (MemoryStream MS = new MemoryStream())
using (MemoryStream ms = new MemoryStream())
{
BinaryWriter Writer = new BinaryWriter(MS);
BinaryWriter writer = new BinaryWriter(ms);
MS.SetLength(0x88);
ms.SetLength(0x88);
Writer.Write(LaunchParamsMagic);
Writer.Write(1); //IsAccountSelected? Only lower 8 bits actually used.
Writer.Write(1L); //User Id Low (note: User Id needs to be != 0)
Writer.Write(0L); //User Id High
writer.Write(LaunchParamsMagic);
writer.Write(1); //IsAccountSelected? Only lower 8 bits actually used.
writer.Write(1L); //User Id Low (note: User Id needs to be != 0)
writer.Write(0L); //User Id High
return MS.ToArray();
return ms.ToArray();
}
}
}