mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-24 00:17:44 +02:00
Merge branch 'fix/xcxde' into 'master'
Stub nn::ssl::sf::ISslServiceForSystem See merge request ryubing/ryujinx!8
This commit is contained in:
commit
5eb9f2bfba
17 changed files with 59 additions and 165 deletions
|
@ -265,13 +265,13 @@ namespace Ryujinx.HLE.HOS
|
||||||
HorizonFsClient fsClient = new(this);
|
HorizonFsClient fsClient = new(this);
|
||||||
|
|
||||||
ServiceTable = new ServiceTable();
|
ServiceTable = new ServiceTable();
|
||||||
IEnumerable<ServiceEntry> services = ServiceTable.GetServices(new HorizonOptions
|
IEnumerable<ServiceEntry> services = ServiceTable.GetServices(new HorizonOptions(
|
||||||
(Device.Configuration.IgnoreMissingServices,
|
|
||||||
LibHacHorizonManager.BcatClient,
|
LibHacHorizonManager.BcatClient,
|
||||||
fsClient,
|
fsClient,
|
||||||
AccountManager,
|
AccountManager,
|
||||||
Device.AudioDeviceDriver,
|
Device.AudioDeviceDriver,
|
||||||
TickSource));
|
TickSource
|
||||||
|
));
|
||||||
|
|
||||||
foreach (ServiceEntry service in services)
|
foreach (ServiceEntry service in services)
|
||||||
{
|
{
|
||||||
|
|
|
@ -113,27 +113,13 @@ namespace Ryujinx.HLE.HOS.Services
|
||||||
|
|
||||||
bool serviceExists = service.CmifCommands.TryGetValue(commandId, out MethodInfo processRequest);
|
bool serviceExists = service.CmifCommands.TryGetValue(commandId, out MethodInfo processRequest);
|
||||||
|
|
||||||
if (context.Device.Configuration.IgnoreMissingServices || serviceExists)
|
|
||||||
{
|
|
||||||
ResultCode result = ResultCode.Success;
|
|
||||||
|
|
||||||
context.ResponseData.BaseStream.Seek(_isDomain ? 0x20 : 0x10, SeekOrigin.Begin);
|
|
||||||
|
|
||||||
if (serviceExists)
|
if (serviceExists)
|
||||||
{
|
{
|
||||||
|
context.ResponseData.BaseStream.Seek(_isDomain ? 0x20 : 0x10, SeekOrigin.Begin);
|
||||||
|
|
||||||
Logger.Trace?.Print(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Name}");
|
Logger.Trace?.Print(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Name}");
|
||||||
|
|
||||||
result = (ResultCode)processRequest.Invoke(service, [context]);
|
ResultCode result = (ResultCode)processRequest.Invoke(service, [context]);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string serviceName;
|
|
||||||
|
|
||||||
|
|
||||||
serviceName = (service is not DummyService dummyService) ? service.GetType().FullName : dummyService.ServiceName;
|
|
||||||
|
|
||||||
Logger.Warning?.Print(LogClass.KernelIpc, $"Missing service {serviceName}: {commandId} ignored");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_isDomain)
|
if (_isDomain)
|
||||||
{
|
{
|
||||||
|
@ -166,27 +152,13 @@ namespace Ryujinx.HLE.HOS.Services
|
||||||
|
|
||||||
bool serviceExists = TipcCommands.TryGetValue(commandId, out MethodInfo processRequest);
|
bool serviceExists = TipcCommands.TryGetValue(commandId, out MethodInfo processRequest);
|
||||||
|
|
||||||
if (context.Device.Configuration.IgnoreMissingServices || serviceExists)
|
|
||||||
{
|
|
||||||
ResultCode result = ResultCode.Success;
|
|
||||||
|
|
||||||
context.ResponseData.BaseStream.Seek(0x4, SeekOrigin.Begin);
|
|
||||||
|
|
||||||
if (serviceExists)
|
if (serviceExists)
|
||||||
{
|
{
|
||||||
|
context.ResponseData.BaseStream.Seek(0x4, SeekOrigin.Begin);
|
||||||
|
|
||||||
Logger.Debug?.Print(LogClass.KernelIpc, $"{GetType().Name}: {processRequest.Name}");
|
Logger.Debug?.Print(LogClass.KernelIpc, $"{GetType().Name}: {processRequest.Name}");
|
||||||
|
|
||||||
result = (ResultCode)processRequest.Invoke(this, [context]);
|
ResultCode result = (ResultCode)processRequest.Invoke(this, [context]);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string serviceName;
|
|
||||||
|
|
||||||
|
|
||||||
serviceName = (this is not DummyService dummyService) ? GetType().FullName : dummyService.ServiceName;
|
|
||||||
|
|
||||||
Logger.Warning?.Print(LogClass.KernelIpc, $"Missing service {serviceName}: {commandId} ignored");
|
|
||||||
}
|
|
||||||
|
|
||||||
context.ResponseData.BaseStream.Seek(0, SeekOrigin.Begin);
|
context.ResponseData.BaseStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
|
|
@ -101,16 +101,9 @@ namespace Ryujinx.HLE.HOS.Services.Sm
|
||||||
service.Server.AddSessionObj(session.ServerSession, service);
|
service.Server.AddSessionObj(session.ServerSession, service);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
if (context.Device.Configuration.IgnoreMissingServices)
|
|
||||||
{
|
|
||||||
Logger.Warning?.Print(LogClass.Service, $"Missing service {name} ignored");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
throw new NotImplementedException(name);
|
throw new NotImplementedException(name);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (context.Process.HandleTable.GenerateHandle(session.ClientSession, out int handle) != Result.Success)
|
if (context.Process.HandleTable.GenerateHandle(session.ClientSession, out int handle) != Result.Success)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,6 +9,7 @@ using System.Runtime.InteropServices;
|
||||||
namespace Ryujinx.HLE.HOS.Services.Ssl
|
namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
{
|
{
|
||||||
[Service("ssl")]
|
[Service("ssl")]
|
||||||
|
[Service("ssl:s")]
|
||||||
class ISslService : IpcService
|
class ISslService : IpcService
|
||||||
{
|
{
|
||||||
// NOTE: The SSL service is used by games to connect it to various official online services, which we do not intend to support.
|
// NOTE: The SSL service is used by games to connect it to various official online services, which we do not intend to support.
|
||||||
|
@ -123,5 +124,48 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
|
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CommandCmif(100)]
|
||||||
|
// CreateContextForSystem(u64 pid, nn::ssl::sf::SslVersion, u64)
|
||||||
|
public ResultCode CreateContextForSystem(ServiceCtx context)
|
||||||
|
{
|
||||||
|
ulong pid = context.RequestData.ReadUInt64();
|
||||||
|
SslVersion sslVersion = (SslVersion)context.RequestData.ReadUInt32();
|
||||||
|
ulong pidPlaceholder = context.RequestData.ReadUInt64();
|
||||||
|
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceSsl, new { pid, sslVersion, pidPlaceholder });
|
||||||
|
|
||||||
|
return ResultCode.Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandCmif(101)]
|
||||||
|
// SetThreadCoreMask(u64 mask)
|
||||||
|
public ResultCode SetThreadCoreMask(ServiceCtx context)
|
||||||
|
{
|
||||||
|
ulong mask = context.RequestData.ReadUInt64();
|
||||||
|
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceSsl, new { mask });
|
||||||
|
|
||||||
|
return ResultCode.Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandCmif(102)]
|
||||||
|
// GetThreadCoreMask() -> u64
|
||||||
|
public ResultCode GetThreadCoreMask(ServiceCtx context)
|
||||||
|
{
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceSsl);
|
||||||
|
|
||||||
|
return ResultCode.Success;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandCmif(103)]
|
||||||
|
// VerifySignature(buffer<0x5> unknownInput1, buffer<0x5> unknownInput2, buffer<0x5> unknownInput3, buffer<bytes, 4> unknown1)
|
||||||
|
public ResultCode VerifySignature(ServiceCtx context)
|
||||||
|
{
|
||||||
|
// I would log these values like a proper stub, but I genuinely don't know how.
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceSsl);
|
||||||
|
|
||||||
|
return ResultCode.Success;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,13 +137,6 @@ namespace Ryujinx.HLE
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MemoryManagerMode MemoryManagerMode { internal get; set; }
|
public MemoryManagerMode MemoryManagerMode { internal get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Control the initial state of the ignore missing services setting.
|
|
||||||
/// If this is set to true, when a missing service is encountered, it will try to automatically handle it instead of throwing an exception.
|
|
||||||
/// </summary>
|
|
||||||
/// TODO: Update this again.
|
|
||||||
public bool IgnoreMissingServices { internal get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Aspect Ratio applied to the renderer window by the SurfaceFlinger service.
|
/// Aspect Ratio applied to the renderer window by the SurfaceFlinger service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -207,7 +200,6 @@ namespace Ryujinx.HLE
|
||||||
long systemTimeOffset,
|
long systemTimeOffset,
|
||||||
string timeZone,
|
string timeZone,
|
||||||
MemoryManagerMode memoryManagerMode,
|
MemoryManagerMode memoryManagerMode,
|
||||||
bool ignoreMissingServices,
|
|
||||||
AspectRatio aspectRatio,
|
AspectRatio aspectRatio,
|
||||||
float audioVolume,
|
float audioVolume,
|
||||||
bool useHypervisor,
|
bool useHypervisor,
|
||||||
|
@ -232,7 +224,6 @@ namespace Ryujinx.HLE
|
||||||
SystemTimeOffset = systemTimeOffset;
|
SystemTimeOffset = systemTimeOffset;
|
||||||
TimeZone = timeZone;
|
TimeZone = timeZone;
|
||||||
MemoryManagerMode = memoryManagerMode;
|
MemoryManagerMode = memoryManagerMode;
|
||||||
IgnoreMissingServices = ignoreMissingServices;
|
|
||||||
AspectRatio = aspectRatio;
|
AspectRatio = aspectRatio;
|
||||||
AudioVolume = audioVolume;
|
AudioVolume = audioVolume;
|
||||||
UseHypervisor = useHypervisor;
|
UseHypervisor = useHypervisor;
|
||||||
|
|
|
@ -8,7 +8,6 @@ namespace Ryujinx.Horizon
|
||||||
{
|
{
|
||||||
public readonly struct HorizonOptions
|
public readonly struct HorizonOptions
|
||||||
{
|
{
|
||||||
public bool IgnoreMissingServices { get; }
|
|
||||||
public bool ThrowOnInvalidCommandIds { get; }
|
public bool ThrowOnInvalidCommandIds { get; }
|
||||||
|
|
||||||
public HorizonClient BcatClient { get; }
|
public HorizonClient BcatClient { get; }
|
||||||
|
@ -18,14 +17,12 @@ namespace Ryujinx.Horizon
|
||||||
public ITickSource TickSource { get; }
|
public ITickSource TickSource { get; }
|
||||||
|
|
||||||
public HorizonOptions(
|
public HorizonOptions(
|
||||||
bool ignoreMissingServices,
|
|
||||||
HorizonClient bcatClient,
|
HorizonClient bcatClient,
|
||||||
IFsClient fsClient,
|
IFsClient fsClient,
|
||||||
IEmulatorAccountManager accountManager,
|
IEmulatorAccountManager accountManager,
|
||||||
IHardwareDeviceDriver audioDeviceDriver,
|
IHardwareDeviceDriver audioDeviceDriver,
|
||||||
ITickSource tickSource)
|
ITickSource tickSource)
|
||||||
{
|
{
|
||||||
IgnoreMissingServices = ignoreMissingServices;
|
|
||||||
ThrowOnInvalidCommandIds = true;
|
ThrowOnInvalidCommandIds = true;
|
||||||
BcatClient = bcatClient;
|
BcatClient = bcatClient;
|
||||||
FsClient = fsClient;
|
FsClient = fsClient;
|
||||||
|
|
|
@ -39,18 +39,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Cmif
|
||||||
|
|
||||||
if (!entries.TryGetValue((int)commandId, out CommandHandler commandHandler))
|
if (!entries.TryGetValue((int)commandId, out CommandHandler commandHandler))
|
||||||
{
|
{
|
||||||
if (HorizonStatic.Options.IgnoreMissingServices)
|
if (HorizonStatic.Options.ThrowOnInvalidCommandIds)
|
||||||
{
|
|
||||||
// If ignore missing services is enabled, just pretend that everything is fine.
|
|
||||||
PrepareForStubReply(ref context, out Span<byte> outRawData);
|
|
||||||
CommandHandler.GetCmifOutHeaderPointer(ref outHeader, ref outRawData);
|
|
||||||
outHeader[0] = new CmifOutHeader { Magic = CmifMessage.CmifOutHeaderMagic, Result = Result.Success };
|
|
||||||
|
|
||||||
Logger.Warning?.Print(LogClass.Service, $"Missing service {objectName} (command ID: {commandId}) ignored");
|
|
||||||
|
|
||||||
return Result.Success;
|
|
||||||
}
|
|
||||||
else if (HorizonStatic.Options.ThrowOnInvalidCommandIds)
|
|
||||||
{
|
{
|
||||||
throw new NotImplementedException($"{objectName} command ID: {commandId} is not implemented");
|
throw new NotImplementedException($"{objectName} command ID: {commandId} is not implemented");
|
||||||
}
|
}
|
||||||
|
|
|
@ -5247,31 +5247,6 @@
|
||||||
"zh_TW": ""
|
"zh_TW": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"ID": "SettingsTabSystemIgnoreMissingServices",
|
|
||||||
"Translations": {
|
|
||||||
"ar_SA": "تجاهل الخدمات المفقودة",
|
|
||||||
"de_DE": "Ignoriere fehlende Dienste",
|
|
||||||
"el_GR": "Αγνόηση υπηρεσιών που λείπουν",
|
|
||||||
"en_US": "Ignore Missing Services",
|
|
||||||
"es_ES": "Ignorar servicios no implementados",
|
|
||||||
"fr_FR": "Ignorer les services manquants",
|
|
||||||
"he_IL": "התעלם משירותים חסרים",
|
|
||||||
"it_IT": "Ignora servizi mancanti",
|
|
||||||
"ja_JP": "未実装サービスを無視する",
|
|
||||||
"ko_KR": "누락된 서비스 무시",
|
|
||||||
"no_NO": "Ignorer manglende tjenester",
|
|
||||||
"pl_PL": "Ignoruj Brakujące Usługi",
|
|
||||||
"pt_BR": "Ignorar Serviços Ausentes",
|
|
||||||
"ru_RU": "Игнорировать отсутствующие службы",
|
|
||||||
"sv_SE": "Ignorera saknade tjänster",
|
|
||||||
"th_TH": "เมินเฉยบริการที่หายไป",
|
|
||||||
"tr_TR": "Eksik Servisleri Görmezden Gel",
|
|
||||||
"uk_UA": "Ігнорувати відсутні служби",
|
|
||||||
"zh_CN": "忽略缺失的服务",
|
|
||||||
"zh_TW": "忽略缺少的模擬器功能"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"ID": "SettingsTabSystemIgnoreControllerApplet",
|
"ID": "SettingsTabSystemIgnoreControllerApplet",
|
||||||
"Translations": {
|
"Translations": {
|
||||||
|
@ -16647,31 +16622,6 @@
|
||||||
"zh_TW": "利用另一種 MemoryMode 配置來模仿 Switch 開發模式。\n\n這僅對高解析度紋理套件或 4K 解析度模組有用。不會提高效能。\n\n如果不確定,請設定為 4GiB。"
|
"zh_TW": "利用另一種 MemoryMode 配置來模仿 Switch 開發模式。\n\n這僅對高解析度紋理套件或 4K 解析度模組有用。不會提高效能。\n\n如果不確定,請設定為 4GiB。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"ID": "IgnoreMissingServicesTooltip",
|
|
||||||
"Translations": {
|
|
||||||
"ar_SA": "يتجاهل خدمات نظام هوريزون غير المنفذة. قد يساعد هذا في تجاوز الأعطال عند تشغيل ألعاب معينة.\n\nاتركه معطلا إذا كنت غير متأكد.",
|
|
||||||
"de_DE": "Durch diese Option werden nicht implementierte Dienste der Switch-Firmware ignoriert. Dies kann dabei helfen, Abstürze beim Starten bestimmter Spiele zu umgehen.\n\nIm Zweifelsfall AUS lassen.",
|
|
||||||
"el_GR": "Ενεργοποίηση ή απενεργοποίηση της αγνοώησης για υπηρεσίες που λείπουν",
|
|
||||||
"en_US": "Ignores unimplemented Horizon OS services. This may help in bypassing crashes when booting certain games.\n\nLeave OFF if unsure.",
|
|
||||||
"es_ES": "Hack para ignorar servicios no implementados del Horizon OS. Esto puede ayudar a sobrepasar crasheos cuando inicies ciertos juegos.\n\nDesactívalo si no sabes qué hacer.",
|
|
||||||
"fr_FR": "Ignore les services Horizon OS non-intégrés. Cela peut aider à contourner les plantages lors du démarrage de certains jeux.\n\nLaissez désactivé en cas d'incertitude.",
|
|
||||||
"he_IL": "מתעלם מפעולות שלא קיבלו מימוש במערכת ההפעלה Horizon OS. זה עלול לעזור לעקוף קריסות של היישום במשחקים מסויימים.\n\nמוטב להשאיר כבוי אם לא בטוחים.",
|
|
||||||
"it_IT": "Ignora i servizi non implementati del sistema operativo Horizon. Può aiutare ad aggirare gli arresti anomali che si verificano avviando alcuni giochi.\n\nNel dubbio, lascia l'opzione disattivata.",
|
|
||||||
"ja_JP": "未実装の Horizon OS サービスを無視します. 特定のゲームにおいて起動時のクラッシュを回避できる場合があります.\n\nよくわからない場合はオフのままにしてください.",
|
|
||||||
"ko_KR": "구현되지 않은 Horizon OS 서비스는 무시됩니다. 특정 게임을 부팅할 때, 발생하는 충돌을 우회하는 데 도움이 될 수 있습니다.\n\n모르면 끔으로 두세요.",
|
|
||||||
"no_NO": "Ignorerer ikke implementerte Horisont OS-tjenester. Dette kan hjelpe med å omgå krasj ved oppstart av enkelte spill.\n\nLa AV hvis du er usikker.",
|
|
||||||
"pl_PL": "Ignoruje niezaimplementowane usługi Horizon OS. Może to pomóc w ominięciu awarii podczas uruchamiania niektórych gier.\n\nW razie wątpliwości pozostaw WYŁĄCZONE.",
|
|
||||||
"pt_BR": "Ignora serviços não implementados do Horizon OS. Isso pode ajudar a contornar travamentos ao inicializar certos jogos.\n\nDeixe OFF se não tiver certeza.",
|
|
||||||
"ru_RU": "Игнорирует нереализованные сервисы Horizon в новых прошивках. Эта настройка поможет избежать вылеты при запуске определенных игр.\n\nРекомендуется оставить выключенным.",
|
|
||||||
"sv_SE": "Ignorerar Horizon OS-tjänster som inte har implementerats. Detta kan avhjälpa krascher när vissa spel startar upp.\n\nLämna AV om du är osäker.",
|
|
||||||
"th_TH": "ละเว้นบริการ Horizon OS ที่ยังไม่ได้ใช้งาน วิธีนี้อาจช่วยในการหลีกเลี่ยงข้อผิดพลาดเมื่อบูตเกมบางเกม\n\nปล่อยให้ปิดหากคุณไม่แน่ใจ",
|
|
||||||
"tr_TR": "Henüz programlanmamış Horizon işletim sistemi servislerini görmezden gelir. Bu seçenek belirli oyunların açılırken çökmesinin önüne geçmeye yardımcı olabilir.\n\nEmin değilseniz devre dışı bırakın.",
|
|
||||||
"uk_UA": "Ігнорує нереалізовані служби Horizon OS. Це може допомогти в обході збоїв під час завантаження певних ігор.\n\nЗалиште вимкненим якщо не впевнені.",
|
|
||||||
"zh_CN": "开启后,游戏会忽略未实现的系统服务,从而继续运行。\n少部分新发布的游戏由于使用了新的未知系统服务,可能需要此选项来避免闪退。\n模拟器更新完善系统服务之后,则无需开启此选项。\n\n如果不确定,请保持关闭状态。",
|
|
||||||
"zh_TW": "忽略未實現的 Horizon OS 服務。這可能有助於在啟動某些遊戲時避免崩潰。\n\n如果不確定,請保持關閉狀態。"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"ID": "IgnoreControllerAppletTooltip",
|
"ID": "IgnoreControllerAppletTooltip",
|
||||||
"Translations": {
|
"Translations": {
|
||||||
|
|
|
@ -327,7 +327,6 @@ namespace Ryujinx.Headless
|
||||||
options.SystemTimeOffset,
|
options.SystemTimeOffset,
|
||||||
options.SystemTimeZone,
|
options.SystemTimeZone,
|
||||||
options.MemoryManagerMode,
|
options.MemoryManagerMode,
|
||||||
options.IgnoreMissingServices,
|
|
||||||
options.AspectRatio,
|
options.AspectRatio,
|
||||||
options.AudioVolume,
|
options.AudioVolume,
|
||||||
options.UseHypervisor ?? true,
|
options.UseHypervisor ?? true,
|
||||||
|
|
|
@ -145,9 +145,6 @@ namespace Ryujinx.Headless
|
||||||
if (NeedsOverride(nameof(DramSize)))
|
if (NeedsOverride(nameof(DramSize)))
|
||||||
DramSize = configurationState.System.DramSize;
|
DramSize = configurationState.System.DramSize;
|
||||||
|
|
||||||
if (NeedsOverride(nameof(IgnoreMissingServices)))
|
|
||||||
IgnoreMissingServices = configurationState.System.IgnoreMissingServices;
|
|
||||||
|
|
||||||
if (NeedsOverride(nameof(IgnoreControllerApplet)))
|
if (NeedsOverride(nameof(IgnoreControllerApplet)))
|
||||||
IgnoreControllerApplet = configurationState.System.IgnoreControllerApplet;
|
IgnoreControllerApplet = configurationState.System.IgnoreControllerApplet;
|
||||||
|
|
||||||
|
@ -408,9 +405,6 @@ namespace Ryujinx.Headless
|
||||||
[Option("dram-size", Required = false, Default = MemoryConfiguration.MemoryConfiguration4GiB, HelpText = "Set the RAM amount on the emulated system.")]
|
[Option("dram-size", Required = false, Default = MemoryConfiguration.MemoryConfiguration4GiB, HelpText = "Set the RAM amount on the emulated system.")]
|
||||||
public MemoryConfiguration DramSize { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
|
|
||||||
[Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
|
|
||||||
public bool IgnoreMissingServices { get; set; }
|
|
||||||
|
|
||||||
[Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")]
|
[Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")]
|
||||||
public bool IgnoreControllerApplet { get; set; }
|
public bool IgnoreControllerApplet { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,6 @@ namespace Ryujinx.Ava.Systems
|
||||||
_defaultCursorWin = CreateArrowCursor();
|
_defaultCursorWin = CreateArrowCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigurationState.Instance.System.IgnoreMissingServices.Event += UpdateIgnoreMissingServicesState;
|
|
||||||
ConfigurationState.Instance.Graphics.AspectRatio.Event += UpdateAspectRatioState;
|
ConfigurationState.Instance.Graphics.AspectRatio.Event += UpdateAspectRatioState;
|
||||||
ConfigurationState.Instance.System.EnableDockedMode.Event += UpdateDockedModeState;
|
ConfigurationState.Instance.System.EnableDockedMode.Event += UpdateDockedModeState;
|
||||||
ConfigurationState.Instance.System.AudioVolume.Event += UpdateAudioVolumeState;
|
ConfigurationState.Instance.System.AudioVolume.Event += UpdateAudioVolumeState;
|
||||||
|
@ -487,14 +486,6 @@ namespace Ryujinx.Ava.Systems
|
||||||
Exit();
|
Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateIgnoreMissingServicesState(object sender, ReactiveEventArgs<bool> args)
|
|
||||||
{
|
|
||||||
if (Device != null)
|
|
||||||
{
|
|
||||||
Device.Configuration.IgnoreMissingServices = args.NewValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateAspectRatioState(object sender, ReactiveEventArgs<AspectRatio> args)
|
private void UpdateAspectRatioState(object sender, ReactiveEventArgs<AspectRatio> args)
|
||||||
{
|
{
|
||||||
if (Device != null)
|
if (Device != null)
|
||||||
|
@ -609,8 +600,6 @@ namespace Ryujinx.Ava.Systems
|
||||||
if (Device.Processes != null)
|
if (Device.Processes != null)
|
||||||
MainWindowViewModel.UpdateGameMetadata(Device.Processes.ActiveApplication.ProgramIdText);
|
MainWindowViewModel.UpdateGameMetadata(Device.Processes.ActiveApplication.ProgramIdText);
|
||||||
|
|
||||||
|
|
||||||
ConfigurationState.Instance.System.IgnoreMissingServices.Event -= UpdateIgnoreMissingServicesState;
|
|
||||||
ConfigurationState.Instance.Graphics.AspectRatio.Event -= UpdateAspectRatioState;
|
ConfigurationState.Instance.Graphics.AspectRatio.Event -= UpdateAspectRatioState;
|
||||||
ConfigurationState.Instance.System.EnableDockedMode.Event -= UpdateDockedModeState;
|
ConfigurationState.Instance.System.EnableDockedMode.Event -= UpdateDockedModeState;
|
||||||
ConfigurationState.Instance.System.AudioVolume.Event -= UpdateAudioVolumeState;
|
ConfigurationState.Instance.System.AudioVolume.Event -= UpdateAudioVolumeState;
|
||||||
|
|
|
@ -294,11 +294,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MemoryConfiguration DramSize { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Enable or disable ignoring missing services
|
|
||||||
/// </summary>
|
|
||||||
public bool IgnoreMissingServices { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to toggle columns in the GUI
|
/// Used to toggle columns in the GUI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -100,7 +100,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
System.AudioVolume.Value = cff.AudioVolume;
|
System.AudioVolume.Value = cff.AudioVolume;
|
||||||
System.MemoryManagerMode.Value = cff.MemoryManagerMode;
|
System.MemoryManagerMode.Value = cff.MemoryManagerMode;
|
||||||
System.DramSize.Value = cff.DramSize;
|
System.DramSize.Value = cff.DramSize;
|
||||||
System.IgnoreMissingServices.Value = cff.IgnoreMissingServices;
|
|
||||||
System.IgnoreControllerApplet.Value = cff.IgnoreApplet;
|
System.IgnoreControllerApplet.Value = cff.IgnoreApplet;
|
||||||
System.UseHypervisor.Value = cff.UseHypervisor;
|
System.UseHypervisor.Value = cff.UseHypervisor;
|
||||||
|
|
||||||
|
|
|
@ -380,11 +380,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ReactiveObject<MemoryConfiguration> DramSize { get; private set; }
|
public ReactiveObject<MemoryConfiguration> DramSize { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Enable or disable ignoring missing services
|
|
||||||
/// </summary>
|
|
||||||
public ReactiveObject<bool> IgnoreMissingServices { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ignore Controller Applet
|
/// Ignore Controller Applet
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -427,8 +422,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
MemoryManagerMode.LogChangesToValue(nameof(MemoryManagerMode));
|
MemoryManagerMode.LogChangesToValue(nameof(MemoryManagerMode));
|
||||||
DramSize = new ReactiveObject<MemoryConfiguration>();
|
DramSize = new ReactiveObject<MemoryConfiguration>();
|
||||||
DramSize.LogChangesToValue(nameof(DramSize));
|
DramSize.LogChangesToValue(nameof(DramSize));
|
||||||
IgnoreMissingServices = new ReactiveObject<bool>();
|
|
||||||
IgnoreMissingServices.LogChangesToValue(nameof(IgnoreMissingServices));
|
|
||||||
IgnoreControllerApplet = new ReactiveObject<bool>();
|
IgnoreControllerApplet = new ReactiveObject<bool>();
|
||||||
IgnoreControllerApplet.LogChangesToValue(nameof(IgnoreControllerApplet));
|
IgnoreControllerApplet.LogChangesToValue(nameof(IgnoreControllerApplet));
|
||||||
AudioVolume = new ReactiveObject<float>();
|
AudioVolume = new ReactiveObject<float>();
|
||||||
|
@ -852,7 +845,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
: System.SystemTimeOffset,
|
: System.SystemTimeOffset,
|
||||||
System.TimeZone,
|
System.TimeZone,
|
||||||
System.MemoryManagerMode,
|
System.MemoryManagerMode,
|
||||||
System.IgnoreMissingServices,
|
|
||||||
Graphics.AspectRatio,
|
Graphics.AspectRatio,
|
||||||
System.AudioVolume,
|
System.AudioVolume,
|
||||||
System.UseHypervisor,
|
System.UseHypervisor,
|
||||||
|
|
|
@ -79,7 +79,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
AudioVolume = System.AudioVolume,
|
AudioVolume = System.AudioVolume,
|
||||||
MemoryManagerMode = System.MemoryManagerMode,
|
MemoryManagerMode = System.MemoryManagerMode,
|
||||||
DramSize = System.DramSize,
|
DramSize = System.DramSize,
|
||||||
IgnoreMissingServices = System.IgnoreMissingServices,
|
|
||||||
IgnoreApplet = System.IgnoreControllerApplet,
|
IgnoreApplet = System.IgnoreControllerApplet,
|
||||||
UseHypervisor = System.UseHypervisor,
|
UseHypervisor = System.UseHypervisor,
|
||||||
GuiColumns = new GuiColumns
|
GuiColumns = new GuiColumns
|
||||||
|
@ -203,7 +202,6 @@ namespace Ryujinx.Ava.Systems.Configuration
|
||||||
System.AudioVolume.Value = 1;
|
System.AudioVolume.Value = 1;
|
||||||
System.MemoryManagerMode.Value = MemoryManagerMode.HostMappedUnsafe;
|
System.MemoryManagerMode.Value = MemoryManagerMode.HostMappedUnsafe;
|
||||||
System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB;
|
System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB;
|
||||||
System.IgnoreMissingServices.Value = false;
|
|
||||||
System.IgnoreControllerApplet.Value = false;
|
System.IgnoreControllerApplet.Value = false;
|
||||||
System.UseHypervisor.Value = true;
|
System.UseHypervisor.Value = true;
|
||||||
Multiplayer.LanInterfaceId.Value = "0";
|
Multiplayer.LanInterfaceId.Value = "0";
|
||||||
|
|
|
@ -208,7 +208,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
public bool EnableLowPowerPptc { get; set; }
|
public bool EnableLowPowerPptc { get; set; }
|
||||||
public bool EnableInternetAccess { get; set; }
|
public bool EnableInternetAccess { get; set; }
|
||||||
public bool EnableFsIntegrityChecks { get; set; }
|
public bool EnableFsIntegrityChecks { get; set; }
|
||||||
public bool IgnoreMissingServices { get; set; }
|
|
||||||
public MemoryConfiguration DramSize { get; set; }
|
public MemoryConfiguration DramSize { get; set; }
|
||||||
public bool EnableShaderCache { get; set; }
|
public bool EnableShaderCache { get; set; }
|
||||||
public bool EnableTextureRecompression { get; set; }
|
public bool EnableTextureRecompression { get; set; }
|
||||||
|
@ -584,7 +583,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
VSyncMode = config.Graphics.VSyncMode;
|
VSyncMode = config.Graphics.VSyncMode;
|
||||||
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
EnableFsIntegrityChecks = config.System.EnableFsIntegrityChecks;
|
||||||
DramSize = config.System.DramSize;
|
DramSize = config.System.DramSize;
|
||||||
IgnoreMissingServices = config.System.IgnoreMissingServices;
|
|
||||||
IgnoreApplet = config.System.IgnoreControllerApplet;
|
IgnoreApplet = config.System.IgnoreControllerApplet;
|
||||||
|
|
||||||
// CPU
|
// CPU
|
||||||
|
@ -686,7 +684,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
config.System.SystemTimeOffset.Value = Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
config.System.SystemTimeOffset.Value = Convert.ToInt64((CurrentDate.ToUnixTimeSeconds() + CurrentTime.TotalSeconds) - DateTimeOffset.Now.ToUnixTimeSeconds());
|
||||||
config.System.EnableFsIntegrityChecks.Value = EnableFsIntegrityChecks;
|
config.System.EnableFsIntegrityChecks.Value = EnableFsIntegrityChecks;
|
||||||
config.System.DramSize.Value = DramSize;
|
config.System.DramSize.Value = DramSize;
|
||||||
config.System.IgnoreMissingServices.Value = IgnoreMissingServices;
|
|
||||||
config.System.IgnoreControllerApplet.Value = IgnoreApplet;
|
config.System.IgnoreControllerApplet.Value = IgnoreApplet;
|
||||||
|
|
||||||
// CPU
|
// CPU
|
||||||
|
|
|
@ -313,11 +313,6 @@
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Orientation="Vertical">
|
Orientation="Vertical">
|
||||||
<CheckBox
|
|
||||||
IsChecked="{Binding IgnoreMissingServices}"
|
|
||||||
ToolTip.Tip="{ext:Locale IgnoreMissingServicesTooltip}">
|
|
||||||
<TextBlock Text="{ext:Locale SettingsTabSystemIgnoreMissingServices}" />
|
|
||||||
</CheckBox>
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
IsChecked="{Binding IgnoreApplet}"
|
IsChecked="{Binding IgnoreApplet}"
|
||||||
ToolTip.Tip="{ext:Locale IgnoreControllerAppletTooltip}">
|
ToolTip.Tip="{ext:Locale IgnoreControllerAppletTooltip}">
|
||||||
|
|
Loading…
Add table
Reference in a new issue