Compare commits

...

13 Commits

Author SHA1 Message Date
MaxLastBreath
3df6b7c0f5 Fix Avalonia Native MouseWheel-Support (ryubing/ryujinx!116)
See merge request ryubing/ryujinx!116
2025-08-19 18:46:20 -05:00
ProIcons
37e81481c4 Fix nn::ec::detail::PurchasedProductInfo to return No purchase information... (ryubing/ryujinx!114)
See merge request ryubing/ryujinx!114
2025-08-17 04:52:20 -05:00
shinyoyo
4d8b799763 Updated Simplified Chinese translation. (ryubing/ryujinx!104)
See merge request ryubing/ryujinx!104
2025-08-16 19:18:39 -05:00
WilliamWsyHK
cb786b7147 Update zh-TW translation after nullify locales to signify intention of using default en-US values (ryubing/ryujinx!85)
See merge request ryubing/ryujinx!85
2025-08-16 19:17:51 -05:00
Gab
2a308f50c0 Nullify french locales + updated translation (ryubing/ryujinx!87)
See merge request ryubing/ryujinx!87
2025-08-16 16:59:20 -05:00
Neo
b51c5cead6 Nullify + Update Russian Locales (ryubing/ryujinx!103)
See merge request ryubing/ryujinx!103
2025-08-13 05:00:22 -05:00
GreemDev
461c1f5342 UI: compat list: fix squished search box 2025-08-13 04:08:28 -05:00
Neo
cfea61b3a0 QUICK FIX: Compatibility Window Checkbox Spacing (ryubing/ryujinx!112)
See merge request ryubing/ryujinx!112
2025-08-13 03:53:58 -05:00
Neo
ae2e9a73ab UI Updates Batch 2 (ryubing/ryujinx!105)
See merge request ryubing/ryujinx!105
2025-08-12 17:45:24 -05:00
GreemDev
c6f22318a7 add an ASCII header at startup in the log 2025-08-11 18:06:53 -05:00
GreemDev
dd5e1b99b1 remove localization entries for auto graphics backend 2025-08-11 18:00:10 -05:00
Hack茶ん
c863ffd353 Update Korean translation (ryubing/ryujinx!107)
See merge request ryubing/ryujinx!107
2025-08-10 16:37:14 -05:00
LotP
d6d089b81b Revert "Fix crash caused by VirtualRange mismatch (ryubing/ryujinx!109)" (ryubing/ryujinx!110)
See merge request ryubing/ryujinx!110
2025-08-09 18:41:36 -05:00
13 changed files with 853 additions and 856 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -62,7 +62,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
Logger.Debug?.PrintStub(LogClass.ServiceNs); // NOTE: Uses Debug to avoid spamming.
return ResultCode.Success;
return ResultCode.NoPurchasedProductInfoAvailable;
}
}
}

View File

@@ -2,6 +2,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
{
enum ResultCode
{
EShopModuleId = 164,
ModuleId = 166,
ErrorCodeShift = 9,
@@ -9,5 +10,6 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
InvalidBufferSize = (200 << ErrorCodeShift) | ModuleId,
InvalidPid = (300 << ErrorCodeShift) | ModuleId,
NoPurchasedProductInfoAvailable = (400 << ErrorCodeShift) | EShopModuleId
}
}

View File

@@ -157,7 +157,7 @@ namespace Ryujinx.Memory.Range
{
int index = BinarySearch(item.Address);
if (index >= 0)
if (index >= 0 && Items[index].Value.Equals(item))
{
_quickAccess.Remove(item.Address);

View File

@@ -266,7 +266,7 @@
</Style>
<Style Selector="ToggleButton">
<Setter Property="Padding"
Value="0,-5,0,0" />
Value="0,0,0,0" />
</Style>
<Style Selector="TabItem">
<Setter Property="FontSize"
@@ -336,7 +336,7 @@
</Style>
<Style Selector="CheckBox TextBlock">
<Setter Property="Margin"
Value="0,5,0,0" />
Value="0,2,0,0" />
</Style>
<Style Selector="TextBlock.globalConfigMarker" >
<Setter Property="Foreground" Value="SeaGreen"/>

View File

@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Threading;
using Ryujinx.Input;
using System;
using System.Collections.Generic;
@@ -16,6 +17,8 @@ namespace Ryujinx.Ava.Input
private bool _isDisposed;
private Size _size;
private readonly TopLevel _window;
private DispatcherTimer _scrollStopTimer;
private const int _dispatchTimerMS = 100;
public bool[] PressedButtons { get; }
public Vector2 CurrentPosition { get; private set; }
@@ -39,6 +42,11 @@ namespace Ryujinx.Ava.Input
_window.PointerReleased += Parent_PointerReleasedEvent;
_window.PointerWheelChanged += Parent_PointerWheelChanged;
_scrollStopTimer = new DispatcherTimer
{
Interval = TimeSpan.FromMilliseconds(_dispatchTimerMS)
};
PressedButtons = new bool[(int)MouseButton.Count];
_size = new Size((int)parent.Bounds.Width, (int)parent.Bounds.Height);
@@ -62,10 +70,26 @@ namespace Ryujinx.Ava.Input
{
_size = new Size((int)rect.Width, (int)rect.Height);
}
private void HandleScrollStopped()
{
Scroll = new Vector2(0, 0);
}
private void Parent_PointerWheelChanged(object o, PointerWheelEventArgs args)
{
Scroll = new Vector2((float)args.Delta.X, (float)args.Delta.Y);
_scrollStopTimer?.Stop();
_scrollStopTimer.Tick += (_, __) =>
{
_scrollStopTimer.Stop();
HandleScrollStopped();
};
_scrollStopTimer.Start();
}
private void Parent_PointerReleasedEvent(object o, PointerReleasedEventArgs args)

View File

@@ -301,6 +301,13 @@ namespace Ryujinx.Ava
internal static void PrintSystemInfo()
{
Logger.Notice.Print(LogClass.Application, " ___ __ _ ");
Logger.Notice.Print(LogClass.Application, @" / _ \ __ __ __ __ / / (_) ___ ___ _");
Logger.Notice.Print(LogClass.Application, @" / , _/ / // // // / / _ \ / / / _ \ / _ `/");
Logger.Notice.Print(LogClass.Application, @"/_/|_| \_, / \_,_/ /_.__//_/ /_//_/ \_, / ");
Logger.Notice.Print(LogClass.Application, " /___/ /___/ ");
Logger.Notice.Print(LogClass.Application, $"{RyujinxApp.FullAppName} Version: {Version}");
Logger.Notice.Print(LogClass.Application, $".NET Runtime: {RuntimeInformation.FrameworkDescription}");
SystemInfo.Gather().Print();

View File

@@ -482,7 +482,10 @@ namespace Ryujinx.Ava.Systems
Dispatcher.UIThread.InvokeAsync(() =>
{
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
if (ConfigurationState.Instance.ShowOldUI)
{
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
}
});
_viewModel.SetUiProgressHandlers(Device);
@@ -902,7 +905,10 @@ namespace Ryujinx.Ava.Systems
_viewModel.IsPaused = false;
_playTimer.Start();
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
if (ConfigurationState.Instance.ShowOldUI)
{
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI);
}
Logger.Info?.Print(LogClass.Emulation, "Emulation was resumed");
}
@@ -912,7 +918,10 @@ namespace Ryujinx.Ava.Systems
_viewModel.IsPaused = true;
_playTimer.Stop();
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI, LocaleManager.Instance[LocaleKeys.Paused]);
if (ConfigurationState.Instance.ShowOldUI)
{
_viewModel.Title = TitleHelper.ActiveApplicationTitle(Device?.Processes.ActiveApplication, Program.Version, !ConfigurationState.Instance.ShowOldUI, LocaleManager.Instance[LocaleKeys.Paused]);
}
Logger.Info?.Print(LogClass.Emulation, "Emulation was paused");
}

View File

@@ -15,11 +15,11 @@ namespace Ryujinx.Ava.UI.Helpers
public object Convert(object value, Type _, object __, CultureInfo ___)
=> value.Cast<LocaleKeys>() switch
{
LocaleKeys.CompatibilityListNothing or
LocaleKeys.CompatibilityListBoots or
LocaleKeys.CompatibilityListMenus => Brushes.Red,
LocaleKeys.CompatibilityListIngame => Brushes.DarkOrange,
_ => Brushes.ForestGreen
LocaleKeys.CompatibilityListNothing => Brushes.DarkGray,
LocaleKeys.CompatibilityListBoots => Brushes.Red,
LocaleKeys.CompatibilityListMenus => Brushes.Tomato,
LocaleKeys.CompatibilityListIngame => Brushes.Orange,
_ => Brushes.LimeGreen
};
public object ConvertBack(object value, Type _, object __, CultureInfo ___)

View File

@@ -47,13 +47,13 @@
Glyph="{helpers:GlyphValueConverter Grid}" />
</Button>
<TextBlock
Margin="10,0"
Margin="10,0,5,0"
VerticalAlignment="Center"
Text="{ext:Locale IconSize}" />
<controls:SliderScroll
Width="150"
Height="35"
Margin="5,-10,5,0"
Margin="5,-12,10,0"
VerticalAlignment="Center"
IsSnapToTickEnabled="True"
SmallChange="1"
@@ -62,11 +62,11 @@
TickFrequency="1"
Value="{Binding GridSizeScale}" />
<CheckBox
Margin="0"
Margin="0,-2,0,0"
VerticalAlignment="Center"
IsChecked="{Binding ShowNames, Mode=TwoWay}"
IsVisible="{Binding IsGrid}">
<TextBlock Margin="5,3,0,0" Text="{ext:Locale CommonShowNames}" />
<TextBlock Text="{ext:Locale CommonShowNames}" />
</CheckBox>
<TextBox
Name="SearchBox"

View File

@@ -117,8 +117,9 @@
<ToggleButton Name="TurboMode">
<TextBlock Text="{Binding KeyboardHotkey.TurboMode, Converter={x:Static helpers:KeyValueConverter.Instance}}" />
</ToggleButton>
<TextBlock Text="{ext:Locale SettingsTabHotkeysOnlyWhilePressed}" Margin="10,0" />
<CheckBox IsChecked="{Binding KeyboardHotkey.TurboModeWhileHeld}" />
<CheckBox IsChecked="{Binding KeyboardHotkey.TurboModeWhileHeld}" Margin="10,0,0,0">
<TextBlock Text="{ext:Locale SettingsTabHotkeysOnlyWhilePressed}" />
</CheckBox>
</StackPanel>
</StackPanel>
</Border>

View File

@@ -25,7 +25,12 @@
Grid.Column="0"
Margin="15, 0, 7, 0"
ToolTip.Tip="{ext:WindowTitle CompatibilityListTitle, False}"/>
<TextBox Name="SearchBoxFlush" Grid.Column="1" Margin="0, 5, 0, 5" HorizontalAlignment="Stretch" Watermark="{ext:Locale CompatibilityListSearchBoxWatermarkWithCount}" TextChanged="TextBox_OnTextChanged" />
<TextBox Grid.Column="1"
Name="SearchBoxFlush"
Margin="0, 5, 0, 5"
HorizontalAlignment="Stretch"
Watermark="{ext:Locale CompatibilityListSearchBoxWatermarkWithCount}"
TextChanged="TextBox_OnTextChanged"/>
<StackPanel Grid.Column="2" Orientation="Horizontal" Margin="10, 5, 0, 5">
<TextBlock
Margin="10,0"
@@ -88,14 +93,15 @@
</DropDownButton.Flyout>
</DropDownButton>
</StackPanel>
<CheckBox Grid.Column="3" Margin="7, 0, 0, 0" IsChecked="{Binding OnlyShowOwnedGames}" />
<TextBlock Grid.Column="4" Padding="0, 0, 138, 0" Margin="-10, 0, 18, 0" Text="{ext:Locale CompatibilityListOnlyShowOwnedGames}" />
<CheckBox Grid.Column="3" Margin="15, 0, 155, 0" IsChecked="{Binding OnlyShowOwnedGames}">
<TextBlock Text="{ext:Locale CompatibilityListOnlyShowOwnedGames}" />
</CheckBox>
</Grid>
<!-- UI NormalControls -->
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto,Auto" Name="NormalControls">
<TextBox Name="SearchBoxNormal" Grid.Column="0" Margin="15, 0, 0, 5" HorizontalAlignment="Stretch" Watermark="{ext:Locale CompatibilityListSearchBoxWatermarkWithCount}" TextChanged="TextBox_OnTextChanged" />
<StackPanel Grid.Column="1" Orientation="Horizontal" Margin="10, 0, 5, 5">
<TextBox Name="SearchBoxNormal" Grid.Column="0" Margin="15, 5, 0, 5" HorizontalAlignment="Stretch" Watermark="{ext:Locale CompatibilityListSearchBoxWatermarkWithCount}" TextChanged="TextBox_OnTextChanged" />
<StackPanel Grid.Column="1" Orientation="Horizontal" Margin="10, 5, 5, 5">
<TextBlock
Margin="10,0"
HorizontalAlignment="Right"
@@ -157,8 +163,9 @@
</DropDownButton.Flyout>
</DropDownButton>
</StackPanel>
<CheckBox Grid.Column="2" Margin="7, 0, 0, 0" IsChecked="{Binding OnlyShowOwnedGames}" />
<TextBlock Grid.Column="3" Padding="0, 0, 1, 0" Margin="-10, 0, 18, 0" Text="{ext:Locale CompatibilityListOnlyShowOwnedGames}" />
<CheckBox Grid.Column="2" Margin="20, 0, 50, 0" IsChecked="{Binding OnlyShowOwnedGames}">
<TextBlock Text="{ext:Locale CompatibilityListOnlyShowOwnedGames}" />
</CheckBox>
</Grid>
<!-- Description Field Above ScrollViewer -->
@@ -206,15 +213,11 @@
Height="35"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Content="Info"
Content="{ext:Locale CompatibilityListStats}"
DockPanel.Dock="Right">
<DropDownButton.Flyout>
<Flyout Placement="Bottom">
<StackPanel>
<TextBlock
HorizontalAlignment="Left"
Padding="0,5"
Text="Compatibility verified:" />
<TextBlock
HorizontalAlignment="Left"
Foreground="{Binding IsStringPlayable, Converter={x:Static helpers:PlayabilityStatusConverter.Shared}}"

View File

@@ -128,8 +128,9 @@
Margin="10"
Content="{ext:Locale SettingsButtonReset}"
Command="{Binding ResetButton}" />
<CheckBox IsChecked="{Binding WantsToReset}"/>
<TextBlock Text="{ext:Locale SettingsButtonResetConfirm}"/>
<CheckBox IsChecked="{Binding WantsToReset}">
<TextBlock Text="{ext:Locale SettingsButtonResetConfirm}" />
</CheckBox>
</StackPanel>
<ReversibleStackPanel
Grid.Column="2"