Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.2.80 [JUST FOR WRITING THE CHANGELOG, DO NOT MERGE] #527

Draft
wants to merge 61 commits into
base: feature/ava/amoled-theme
Choose a base branch
from

Conversation

GreemDev
Copy link
Member

@GreemDev GreemDev commented Jan 16, 2025

WIP WIP WIP WIP WIP WIP WIP WIP

Significant changes include:
Embedded Compatibility List viewer (by @GreemDev),
Migration to .NET 9 (by @marco-carvalho),
The Experimental Metal Backend (by @IsaacMarovitz, work repurposed, rebased, and merged in by @GreemDev),
Ability to read/write amiibo .bin files (by @Jacobwasbeast),
Unified locales (by @LotP1),
Headless in Avalonia (by @GreemDev), and
Swedish localization (by @yeager)

Merged PRs in this release (in the order they were merged):
#198, #348, #391, #412, #296, #420, #422, #424, #427, #430, #432, #415, #418, #441, #447, #446, #450, #440, #448, #469, #460, #428, #444, #470, #472, #471, #465, #461, #475, #480, #481, #497, #507, #505, #517, #515, #519, #203, #524, #502, #489, #503, #531

UI:

  • Fix for updates not being autoloaded
  • Compatibility List Viewer
    • You can access this via Help > Open Compatibility List. You can search for games you're interested in, and it only shows the games you actually own by default.
  • Headless in Avalonia
    • There is no longer a dedicated headless/nogui build. It's now integrated directly into the standard Avalonia build.
    • This was done to reduce confusion on what file to download, while also still allowing the users who use headless to continue using it.
      • There's even the ability to inherit your main Ryujinx's config, input settings & last used emulated Switch profile!
    • You can access headless Ryujinx by invoking Ryujinx via the command line with the first argument being --no-gui or nogui. The following should then be your old Headless script content, additionally with --use-main-config for the config inheritance mentioned above.
  • Play Time in the UI now caps out at showing hours. It shows seconds at the least. If less than a second it will act like it was never played.
  • You can now click on the Title IDs of games in the UI and they will be copied to your clipboard.
  • There is now a button in settings you can click which will resync the time in Ryujinx to match your system's.
    • Note that this is not an active setting, it just sets the time to the current time. It can still fall out of sync.
  • Discord RPC:
    • Added Goat Simulator 3 asset image

I18N:

Graphics:

HLE:

  • Stub IHidServer SetGestureOutputRanges (HLE: Stub IHidServer SetGestureOutputRanges #524)
    • Lets the new Donkey Kong game, Donkey Kong Country Returns HD, boot.
  • Throw a more descriptive error when the loaded processes doesn't contain a process with key _latestPid (likely missing Firmware).

Infra:

Nerd Zone:

  • Removed a lot of manual observable properties in many ViewModels and replaced them with the CommunityToolkit.Mvvm ObservableProperty autogenerated ones to reduce the size of the view model files.
  • Use UnmanagedCallersOnly for ARMeilleure delegates.
  • The repeated <Border>s in MainStatusBarView have been turned into a reusable Avalonia Control: MiniVerticalSeparator
  • ConfigurationState migration is now defined in a map of version => migrator function; to reduce code duplication.
  • DiscordIntegrationModule now changes the current playing game state based on when TitleIds.CurrentApplication changes; instead of directly being invoked when a change is needed.
  • Removed Ryujinx.UI.Common: it existed because previously the project had 2 different UI layers you could use; GTK and Avalonia. We only support Avalonia now and will probably never support another framework.
  • The logic for launching an applet, such as miiEdit, has been abstracted into a utility class called AppletMetadata.

GreemDev and others added 30 commits November 19, 2024 10:32
This is an implementation of the TPIDR2_EL0 register. There may be more
potential use-cases for this register not included in this PR, but this
implements the use-case seen in SuperTuxKart.
This should make it so that any changes made to ldn and documentation
related files should be auto-labeled
This makes it so that instead of the files you download being
`sdl2-ryujinx-headless` they are now `nogui-ryujinx`in the release (and
canary) artifacts
This should hopefully make it clearer whether or not you're using
canary.

Changelog:
- Changed github workflows to have "canary" in the zip files
- Added `App.FullAppName` in the about section, so that it's clear in
there too
- Changed log name for canary builds to
`Ryujinx_Canary_{version}_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.log`
(normal builds should still be
"Ryujinx_{version}_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.log)
Hello any fellow developers that may be reading this. Whenever you add
any new locales to `en_US.json`, please make sure to add them to the
rest of the locale files. I will not always be there to add them myself.
More up to date build of the JIT Sparse PR for continued development.
JIT Sparse Function Table was originally developed by riperiperi for the
original Ryujinx project, and decreased the amount of layers in the
Function Table structure, to decrease lookup times at the cost of
slightly higher RAM usage.
This PR rebalances the JIT Sparse Function Table to be a bit more RAM
intensive, but faster in workloads where the JIT Function Table is a
bottleneck. Faster RAM will see a bigger impact and slower RAM (DDR3 and
potentially slow DDR4) will see a slight performance decrease.
This PR also implements a base for a PPTC profile system that could
allow for PPTC with ExeFS mods enabled in the future.
This PR also potentially fixes a strange issue where Avalonia would time
out in some rare instances, e.g. when running ExeFS mods with TotK and a
strange controller configuration.

---------

Co-authored-by: Evan Husted <gr33m11@gmail.com>
Rebased @jcm93's refreshinterval branch:
https://github.com/jcm93/Ryujinx/tree/refreshinterval

The option is placed under System/Hacks. Disabled, it's the default
Ryujinx behavior. Enabled, the behavior is shown in the attached
screenshots. If a framerate is too high or low, you can adjust the value
where you normally toggle VSync on and off. It will also cycle through
the default on/off toggles.

Also, in order to reduce clutter, I made an adjustment to remove the
target FPS and only show the percentage.

---------

Co-authored-by: jcm <6864788+jcm93@users.noreply.github.com>
This allows the "Mii Edit Applet" dropdown to be localized ( I already
went ahead and localized French )
This allows the Enter key to be bound to a button when using the
Avalonia UI.
A couple of games have random crashing with the JIT Sparse Ftable changes, and it seems to have been caused by an insufficient int size returned by `AddressTableLevel#GetValue(ulong address)`.
It was 32 bits (Int32), but the GiantBlock (which is the current address table impl) uses potentially 36 bits for the first level.
#331)

These changes allow Mario Kart Live: Home Circuit (v2.0.0) to boot into
menus. Kart functionality has not been implemented and will not work.

Version 1.0.0 is currently unsupported due to unimplemented ARM
registers. I plan on addressing this issue at a later date.


### Here is a list of the implemented and stubbed services in this PR:
#### Implemented:
Ldn.Lp2p.IServiceCreator: 0 (CreateNetworkService)
Ldn.Lp2p.IServiceCreator: 8 (CreateNetworkServiceMonitor)
Ldn.Lp2p.ISfService: 0 (Initialize)
Ldn.Lp2p.ISfServiceMonitor: 0 (Initialize)
Ldn.Lp2p.ISfServiceMonitor: 256 (AttachNetworkInterfaceStateChangeEvent)
Ldn.Lp2p.ISfServiceMonitor: 328 (AttachJoinEvent)
#### Stubbed:
Ldn.Lp2p.ISfService: 768 (CreateGroup)
Ldn.Lp2p.ISfService: 1536 (SendToOtherGroup)
Ldn.Lp2p.ISfService: 1544 (RecvFromOtherGroup)
Ldn.Lp2p.ISfServiceMonitor: 288 (GetGroupInfo)
Ldn.Lp2p.ISfServiceMonitor: 296 (GetGroupInfo2)
Ldn.Lp2p.ISfServiceMonitor: 312 (GetIpConfig)
This adds the missing Cabinet Applet, which allows for formatting
Amiibos and changing their names.
GreemDev and others added 20 commits December 19, 2024 00:26
This adds a table making it clearer what artifacts are needed for what
platform.

Nogui builds are not provided in the table as per Greem's request.

MAINTAINER EDIT: reasoning for above is due to the Headless in Avalonia
PR; nogui builds are going away.

Tested for both canary and release builds and everything works fine:


[Canary](https://github.com/GabCoolDude/Ryujinx-Canary/releases/tag/1.2.6)
[Release](https://github.com/GabCoolDude/Ryujinx/releases/tag/1.2.2)

For release, the damn appimage messed everything up, but thanks to
macOS, you can still test if it works.
I made some small corrections and translated the lines that didn’t have
translations.
@Ryubing Ryubing locked as spam and limited conversation to collaborators Jan 16, 2025
@github-actions github-actions bot added audio Affects Audio playback during emulation cpu An issue with ARMeilleure, the JIT, or Hypervisor gpu Affects GPU emulation graphics-backend:opengl Affects the OpenGL Graphics backend graphics-backend:vulkan Affects the Vulkan Graphics backend gui Affects the Avalonia UI or translations. horizon Affects the Horizon OS HLE components. infra Updates to dependencies ldn Affects the LDN functionality labels Jan 16, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
audio Affects Audio playback during emulation cpu An issue with ARMeilleure, the JIT, or Hypervisor gpu Affects GPU emulation graphics-backend:opengl Affects the OpenGL Graphics backend graphics-backend:vulkan Affects the Vulkan Graphics backend gui Affects the Avalonia UI or translations. horizon Affects the Horizon OS HLE components. infra Updates to dependencies ldn Affects the LDN functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.