mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-09-19 00:56:46 +00:00
Compare commits
13 Commits
Canary-1.2
...
Canary-1.2
Author | SHA1 | Date | |
---|---|---|---|
|
beda3206e0 | ||
|
2f93a0f706 | ||
|
80f44d9547 | ||
|
b08e5db6d8 | ||
|
6a291d4116 | ||
|
6fc827fe67 | ||
|
6cd4866d76 | ||
|
4d7ca5c0f0 | ||
|
a375faecc1 | ||
|
1728b0f20c | ||
|
5aa071c59b | ||
|
1018c9db8b | ||
|
01ccd18726 |
@@ -3348,7 +3348,7 @@
|
|||||||
01001C400482C000,"Wunderling DX",audio;crash,ingame,2022-09-10 13:20:12
|
01001C400482C000,"Wunderling DX",audio;crash,ingame,2022-09-10 13:20:12
|
||||||
01003B401148E000,"Wurroom",,playable,2020-10-07 22:46:21
|
01003B401148E000,"Wurroom",,playable,2020-10-07 22:46:21
|
||||||
010081700EDF4000,"WWE 2K Battlegrounds",nvdec;online-broken;UE4,playable,2022-10-07 12:44:40
|
010081700EDF4000,"WWE 2K Battlegrounds",nvdec;online-broken;UE4,playable,2022-10-07 12:44:40
|
||||||
010009800203E000,"WWE 2K18",nvdec,playable,2023-10-21 17:22:01
|
010009800203E000,"WWE 2K18",nvdec;online-broken,ingame,2025-01-17 11:36:56
|
||||||
0100DF100B97C000,"X-Morph: Defense",,playable,2020-06-22 11:05:31
|
0100DF100B97C000,"X-Morph: Defense",,playable,2020-06-22 11:05:31
|
||||||
0100D0B00FB74000,"XCOM® 2 Collection",gpu;crash,ingame,2022-10-04 09:38:30
|
0100D0B00FB74000,"XCOM® 2 Collection",gpu;crash,ingame,2022-10-04 09:38:30
|
||||||
0100CC9015360000,"XEL",gpu,ingame,2022-10-03 10:19:39
|
0100CC9015360000,"XEL",gpu,ingame,2022-10-03 10:19:39
|
||||||
@@ -3421,4 +3421,4 @@
|
|||||||
0100936018EB4000,"牧場物語 Welcome!ワンダフルライフ",crash,ingame,2023-04-25 19:43:52
|
0100936018EB4000,"牧場物語 Welcome!ワンダフルライフ",crash,ingame,2023-04-25 19:43:52
|
||||||
0100F4401940A000,"超探偵事件簿 レインコード (Master Detective Archives: Rain Code)",crash,ingame,2024-02-12 20:58:31
|
0100F4401940A000,"超探偵事件簿 レインコード (Master Detective Archives: Rain Code)",crash,ingame,2024-02-12 20:58:31
|
||||||
010064801A01C000,"超次元ゲイム ネプテューヌ GameMaker R:Evolution",crash,nothing,2023-10-30 22:37:40
|
010064801A01C000,"超次元ゲイム ネプテューヌ GameMaker R:Evolution",crash,nothing,2023-10-30 22:37:40
|
||||||
0100F3400332C000,"ゼノブレイド2",deadlock;amd-vendor-bug,ingame,2024-03-28 14:31:41
|
0100F3400332C000,"ゼノブレイド2",deadlock;amd-vendor-bug,ingame,2024-03-28 14:31:41
|
||||||
|
|
@@ -176,9 +176,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
|||||||
AllowedCpuCoresMask = GetMaskFromMinMax(lowestCpuCore, highestCpuCore);
|
AllowedCpuCoresMask = GetMaskFromMinMax(lowestCpuCore, highestCpuCore);
|
||||||
AllowedThreadPriosMask = GetMaskFromMinMax(lowestThreadPrio, highestThreadPrio);
|
AllowedThreadPriosMask = GetMaskFromMinMax(lowestThreadPrio, highestThreadPrio);
|
||||||
|
|
||||||
if (isApplication && lowestCpuCore == 0 && highestCpuCore != 2)
|
if (isApplication)
|
||||||
Ryujinx.Common.Logging.Logger.Error?.Print(Ryujinx.Common.Logging.LogClass.Application, $"Application requested cores with index range {lowestCpuCore} to {highestCpuCore}! Report this to @LotP on the Ryujinx/Ryubing discord server (discord.gg/ryujinx)!");
|
|
||||||
else if (isApplication)
|
|
||||||
Ryujinx.Common.Logging.Logger.Info?.Print(Ryujinx.Common.Logging.LogClass.Application, $"Application requested cores with index range {lowestCpuCore} to {highestCpuCore}");
|
Ryujinx.Common.Logging.Logger.Info?.Print(Ryujinx.Common.Logging.LogClass.Application, $"Application requested cores with index range {lowestCpuCore} to {highestCpuCore}");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@@ -897,7 +897,7 @@ namespace Ryujinx.Ava
|
|||||||
{
|
{
|
||||||
#pragma warning disable CA1416 // This call site is reachable on all platforms
|
#pragma warning disable CA1416 // This call site is reachable on all platforms
|
||||||
// SelectGraphicsBackend does a check for Mac, on top of checking if it's an ARM Mac. This isn't a problem.
|
// SelectGraphicsBackend does a check for Mac, on top of checking if it's an ARM Mac. This isn't a problem.
|
||||||
GraphicsBackend.Metal => new MetalRenderer((RendererHost.EmbeddedWindow as EmbeddedWindowMetal)!.CreateSurface),
|
GraphicsBackend.Metal => new MetalRenderer(() => new SharpMetal.QuartzCore.CAMetalLayer(((EmbeddedWindowMetal)RendererHost.EmbeddedWindow).MetalLayer)),
|
||||||
#pragma warning restore CA1416
|
#pragma warning restore CA1416
|
||||||
GraphicsBackend.Vulkan => VulkanRenderer.Create(
|
GraphicsBackend.Vulkan => VulkanRenderer.Create(
|
||||||
ConfigurationState.Instance.Graphics.PreferredGpu,
|
ConfigurationState.Instance.Graphics.PreferredGpu,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -46,16 +46,7 @@ namespace Ryujinx.Ava
|
|||||||
};
|
};
|
||||||
|
|
||||||
ConfigurationState.Instance.EnableDiscordIntegration.Event += Update;
|
ConfigurationState.Instance.EnableDiscordIntegration.Event += Update;
|
||||||
TitleIDs.CurrentApplication.Event += (_, e) =>
|
TitleIDs.CurrentApplication.Event += (_, e) => Use(e.NewValue);
|
||||||
{
|
|
||||||
if (e.NewValue)
|
|
||||||
SwitchToPlayingState(
|
|
||||||
ApplicationLibrary.LoadAndSaveMetaData(e.NewValue),
|
|
||||||
Switch.Shared.Processes.ActiveApplication
|
|
||||||
);
|
|
||||||
else
|
|
||||||
SwitchToMainState();
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Update(object sender, ReactiveEventArgs<bool> evnt)
|
private static void Update(object sender, ReactiveEventArgs<bool> evnt)
|
||||||
|
@@ -12,8 +12,6 @@ using Ryujinx.Common.Logging;
|
|||||||
using Ryujinx.Common.Utilities;
|
using Ryujinx.Common.Utilities;
|
||||||
using Ryujinx.Graphics.GAL;
|
using Ryujinx.Graphics.GAL;
|
||||||
using Ryujinx.Graphics.GAL.Multithreading;
|
using Ryujinx.Graphics.GAL.Multithreading;
|
||||||
using Ryujinx.Graphics.Metal;
|
|
||||||
using Ryujinx.Graphics.OpenGL;
|
|
||||||
using Ryujinx.Graphics.Vulkan;
|
using Ryujinx.Graphics.Vulkan;
|
||||||
using Ryujinx.HLE;
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.Input;
|
using Ryujinx.Input;
|
||||||
@@ -312,10 +310,10 @@ namespace Ryujinx.Headless
|
|||||||
|
|
||||||
if (options.GraphicsBackend == GraphicsBackend.Metal && window is MetalWindow metalWindow && OperatingSystem.IsMacOS())
|
if (options.GraphicsBackend == GraphicsBackend.Metal && window is MetalWindow metalWindow && OperatingSystem.IsMacOS())
|
||||||
{
|
{
|
||||||
return new MetalRenderer(metalWindow.GetLayer);
|
return new Graphics.Metal.MetalRenderer(metalWindow.GetLayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OpenGLRenderer();
|
return new Graphics.OpenGL.OpenGLRenderer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Switch InitializeEmulationContext(WindowBase window, IRenderer renderer, Options options)
|
private static Switch InitializeEmulationContext(WindowBase window, IRenderer renderer, Options options)
|
||||||
|
@@ -228,8 +228,6 @@ namespace Ryujinx.Headless
|
|||||||
_inputConfiguration ??= [];
|
_inputConfiguration ??= [];
|
||||||
_enableKeyboard = option.EnableKeyboard;
|
_enableKeyboard = option.EnableKeyboard;
|
||||||
_enableMouse = option.EnableMouse;
|
_enableMouse = option.EnableMouse;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LoadPlayerConfiguration(option.InputProfile1Name, option.InputId1, PlayerIndex.Player1);
|
LoadPlayerConfiguration(option.InputProfile1Name, option.InputId1, PlayerIndex.Player1);
|
||||||
LoadPlayerConfiguration(option.InputProfile2Name, option.InputId2, PlayerIndex.Player2);
|
LoadPlayerConfiguration(option.InputProfile2Name, option.InputId2, PlayerIndex.Player2);
|
||||||
@@ -301,7 +299,10 @@ namespace Ryujinx.Headless
|
|||||||
_userChannelPersistence.ShouldRestart = false;
|
_userChannelPersistence.ShouldRestart = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_inputManager.Dispose();
|
try
|
||||||
|
{
|
||||||
|
_inputManager.Dispose();
|
||||||
|
} catch {}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -338,12 +339,12 @@ namespace Ryujinx.Headless
|
|||||||
{
|
{
|
||||||
string label = state switch
|
string label = state switch
|
||||||
{
|
{
|
||||||
LoadState => $"PTC : {current}/{total}",
|
LoadState => "PTC",
|
||||||
ShaderCacheState => $"Shaders : {current}/{total}",
|
ShaderCacheState => "Shaders",
|
||||||
_ => throw new ArgumentException($"Unknown Progress Handler type {typeof(T)}"),
|
_ => throw new ArgumentException($"Unknown Progress Handler type {typeof(T)}")
|
||||||
};
|
};
|
||||||
|
|
||||||
Logger.Info?.Print(LogClass.Application, label);
|
Logger.Info?.Print(LogClass.Application, $"{label} : {current}/{total}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static WindowBase CreateWindow(Options options)
|
private static WindowBase CreateWindow(Options options)
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.9 KiB |
@@ -26,7 +26,7 @@ namespace Ryujinx.Headless
|
|||||||
bool ignoreControllerApplet)
|
bool ignoreControllerApplet)
|
||||||
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet) { }
|
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet) { }
|
||||||
|
|
||||||
public override SDL_WindowFlags GetWindowFlags() => SDL_WindowFlags.SDL_WINDOW_METAL;
|
public override SDL_WindowFlags WindowFlags => SDL_WindowFlags.SDL_WINDOW_METAL;
|
||||||
|
|
||||||
protected override void InitializeWindowRenderer()
|
protected override void InitializeWindowRenderer()
|
||||||
{
|
{
|
@@ -124,7 +124,7 @@ namespace Ryujinx.Headless
|
|||||||
_glLogLevel = glLogLevel;
|
_glLogLevel = glLogLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override SDL_WindowFlags GetWindowFlags() => SDL_WindowFlags.SDL_WINDOW_OPENGL;
|
public override SDL_WindowFlags WindowFlags => SDL_WindowFlags.SDL_WINDOW_OPENGL;
|
||||||
|
|
||||||
protected override void InitializeWindowRenderer()
|
protected override void InitializeWindowRenderer()
|
||||||
{
|
{
|
@@ -24,7 +24,7 @@ namespace Ryujinx.Headless
|
|||||||
_glLogLevel = glLogLevel;
|
_glLogLevel = glLogLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override SDL_WindowFlags GetWindowFlags() => SDL_WindowFlags.SDL_WINDOW_VULKAN;
|
public override SDL_WindowFlags WindowFlags => SDL_WindowFlags.SDL_WINDOW_VULKAN;
|
||||||
|
|
||||||
protected override void InitializeWindowRenderer() { }
|
protected override void InitializeWindowRenderer() { }
|
||||||
|
|
@@ -1,6 +1,7 @@
|
|||||||
using Humanizer;
|
using Humanizer;
|
||||||
using LibHac.Tools.Fs;
|
using LibHac.Tools.Fs;
|
||||||
using Ryujinx.Ava;
|
using Ryujinx.Ava;
|
||||||
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
using Ryujinx.Common.Configuration.Hid;
|
using Ryujinx.Common.Configuration.Hid;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
@@ -137,7 +138,7 @@ namespace Ryujinx.Headless
|
|||||||
|
|
||||||
private void SetWindowIcon()
|
private void SetWindowIcon()
|
||||||
{
|
{
|
||||||
Stream iconStream = typeof(Program).Assembly.GetManifestResourceStream("HeadlessLogo");
|
Stream iconStream = EmbeddedResources.GetStream("Ryujinx/Assets/UIImages/Logo_Ryujinx.png");
|
||||||
byte[] iconBytes = new byte[iconStream!.Length];
|
byte[] iconBytes = new byte[iconStream!.Length];
|
||||||
|
|
||||||
if (iconStream.Read(iconBytes, 0, iconBytes.Length) != iconBytes.Length)
|
if (iconStream.Read(iconBytes, 0, iconBytes.Length) != iconBytes.Length)
|
||||||
@@ -191,7 +192,7 @@ namespace Ryujinx.Headless
|
|||||||
FullscreenFlag = SDL_WindowFlags.SDL_WINDOW_FULLSCREEN_DESKTOP;
|
FullscreenFlag = SDL_WindowFlags.SDL_WINDOW_FULLSCREEN_DESKTOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowHandle = SDL_CreateWindow($"Ryujinx {Program.Version}{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}", SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), Width, Height, DefaultFlags | FullscreenFlag | GetWindowFlags());
|
WindowHandle = SDL_CreateWindow($"Ryujinx {Program.Version}{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}", SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), Width, Height, DefaultFlags | FullscreenFlag | WindowFlags);
|
||||||
|
|
||||||
if (WindowHandle == nint.Zero)
|
if (WindowHandle == nint.Zero)
|
||||||
{
|
{
|
||||||
@@ -246,7 +247,7 @@ namespace Ryujinx.Headless
|
|||||||
|
|
||||||
protected abstract void SwapBuffers();
|
protected abstract void SwapBuffers();
|
||||||
|
|
||||||
public abstract SDL_WindowFlags GetWindowFlags();
|
public abstract SDL_WindowFlags WindowFlags { get; }
|
||||||
|
|
||||||
private string GetGpuDriverName()
|
private string GetGpuDriverName()
|
||||||
{
|
{
|
@@ -73,7 +73,7 @@
|
|||||||
<ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
|
<ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj" />
|
<ProjectReference Include="..\Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
|
<ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Graphics.Metal\Ryujinx.Graphics.Metal.csproj" />
|
<ProjectReference Include="..\Ryujinx.Graphics.Metal\Ryujinx.Graphics.Metal.csproj" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'win-x64'" />
|
||||||
<ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
|
<ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
|
<ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
|
<ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
|
||||||
@@ -166,7 +166,6 @@
|
|||||||
<EmbeddedResource Include="Assets\UIImages\Logo_GitHub_Light.png" />
|
<EmbeddedResource Include="Assets\UIImages\Logo_GitHub_Light.png" />
|
||||||
<EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx.png" />
|
<EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx.png" />
|
||||||
<EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx_AntiAlias.png" />
|
<EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx_AntiAlias.png" />
|
||||||
<EmbeddedResource Include="Headless\Ryujinx.bmp" LogicalName="HeadlessLogo" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AdditionalFiles Include="Assets\locales.json" />
|
<AdditionalFiles Include="Assets\locales.json" />
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
Title="Ryujinx - Waiting"
|
Title="Ryujinx - Waiting"
|
||||||
SizeToContent="WidthAndHeight"
|
SizeToContent="WidthAndHeight"
|
||||||
WindowStartupLocation="CenterOwner"
|
WindowStartupLocation="CenterOwner"
|
||||||
|
CanResize="False"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Focusable="True">
|
Focusable="True">
|
||||||
<Grid
|
<Grid
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Input;
|
|
||||||
using Avalonia.Platform;
|
using Avalonia.Platform;
|
||||||
using Ryujinx.Ava.Utilities.Configuration;
|
using Ryujinx.Ava.Utilities.Configuration;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
@@ -28,7 +27,7 @@ namespace Ryujinx.Ava.UI.Renderer
|
|||||||
protected nint WindowHandle { get; set; }
|
protected nint WindowHandle { get; set; }
|
||||||
protected nint X11Display { get; set; }
|
protected nint X11Display { get; set; }
|
||||||
protected nint NsView { get; set; }
|
protected nint NsView { get; set; }
|
||||||
protected nint MetalLayer { get; set; }
|
public nint MetalLayer { get; protected set; }
|
||||||
|
|
||||||
public delegate void UpdateBoundsCallbackDelegate(Rect rect);
|
public delegate void UpdateBoundsCallbackDelegate(Rect rect);
|
||||||
private UpdateBoundsCallbackDelegate _updateBoundsCallback;
|
private UpdateBoundsCallbackDelegate _updateBoundsCallback;
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
using SharpMetal.QuartzCore;
|
using SharpMetal.QuartzCore;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Runtime.Versioning;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Renderer
|
namespace Ryujinx.Ava.UI.Renderer
|
||||||
{
|
{
|
||||||
|
[SupportedOSPlatform("macos")]
|
||||||
public class EmbeddedWindowMetal : EmbeddedWindow
|
public class EmbeddedWindowMetal : EmbeddedWindow
|
||||||
{
|
{
|
||||||
public CAMetalLayer CreateSurface()
|
public CAMetalLayer CreateSurface()
|
||||||
|
@@ -136,6 +136,12 @@
|
|||||||
<ComboBoxItem>
|
<ComboBoxItem>
|
||||||
<TextBlock Text="{ext:Locale SettingsTabSystemSystemLanguageBrazilianPortuguese}" />
|
<TextBlock Text="{ext:Locale SettingsTabSystemSystemLanguageBrazilianPortuguese}" />
|
||||||
</ComboBoxItem>
|
</ComboBoxItem>
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{ext:Locale SettingsTabSystemSystemLanguageSwedish}" />
|
||||||
|
</ComboBoxItem>
|
||||||
|
<ComboBoxItem>
|
||||||
|
<TextBlock Text="{ext:Locale SettingsTabSystemSystemLanguageNorwegian}" />
|
||||||
|
</ComboBoxItem>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel
|
<StackPanel
|
||||||
|
Reference in New Issue
Block a user