Skip to content

Conversation

@cscd98
Copy link

@cscd98 cscd98 commented Dec 23, 2025

Updates to 2512 (December 2025) release

Note for iOS users: iOS 14 is now the minimum required version
Note for Windows users: Windows 10 Fall Creators Update (1709, build 16299) is the required minimum version

In addition:

d0f299c:

  1. Integrates Microsoft WIL and Windows RT upstream work that I've done for the MING build (used by the build bot) - I would be interested to know if people who use a Dolphin Bar if that makes passthrough work as I cannot test that. There is more PRs upstream, but they only affect the standalone.
  2. Rush Frame Presentation, Smooth Early Presentation options as per upstream
  3. Now provides 3 audio sync options:
  // Dolphin will Push samples into the soundstream (this is how it has always been)
  PUSH_SAMPLES = 0,
  // Samples are pushed per frame in retro_run, but use frame time callback to set pace
  SYNC_PER_FRAME = 1,
  // RetroArch requests audio samples based on its callbacks (target refresh rate/buffer status)
  ASYNC_CALLBACK = 2,

The second option is new. Note the third async option is not working correctly for me (before this PR), I'm not sure if it something change in RetroArch itself.

I have tested compilation on Linux, Android and Windows (MING and MSVC).

If you are building manually make sure to update git submodules.

Shameless plug: If you want to thank or continue support for this please consider sponsoring.. https://github.com/sponsors/cscd98

y21 and others added 30 commits May 19, 2025 18:17
Delete old Updater.log file from GetExeDirectory().

The log was moved to GetUserPath(D_LOGS_IDX) in 5.0-14529, but users
looking to make a bug report might find the old one instead so let's
delete it to prevent any confusion.
If bind was called more than once for a SwitchSettingViewHolder, the
line `binding.settingSwitch.isChecked = setting.isChecked` would
accidentally trigger the listener registered during the previous bind
call.
By letting threads other than the host thread use things like
CPUThreadGuard, we can do a significant cleanup in AchievementsManager
in a later commit of this pull request.

Note: Some functions still can't be called from the CPU thread (or
threads the CPU thread might block on, like the GPU thread), but can
be called from any other thread.
This makes the code simpler, and saves us from the slow operation of
copying the all of RAM on every frame when RAIntegration is enabled.
The core no longer cares which thread is the host thread.

Cleaning up Android's HostThreadLock is left for another PR, in part
because the HostThreadLock in NativeConfig.cpp still serves a purpose,
and in part to make any issues easier to bisect.
Note: This also updates Kotlin to 2.2.21 which requires small adjustments in our Kotlin code.
…ce after each presentation for lower input latency.
…unsafe usage of GetTicks() with ImmediateXFB + DualCore.
… pacing with ImmediateXFB and/or RushFramePresentation.
…test frame presentation time and the intended presentation time in the "Show Frame Times" box.
this line:

- --filesystem=xdg-run/app/com.discordapp.Discord:create

specifically targets the flatpak version of discord, so anyone using the native package wouldnt get rich presence
warning: virtual method '~FramebufferManager' is inside a 'final' class and can never be overridden [-Wunnecessary-virtual-specifier]
warning: definition of implicit copy constructor for 'BitField<2, 2, ColorChannel>' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
Redundant access specifier has the same accessibility as the previous access specifier.
In the dialog where you can choose what controller the input overlay
should be controlling, there's an OK button. If you change controller
but don't press OK, your selection will be saved, but the input overlay
won't refresh to show the new controller unless you perform some other
action that would cause it to refresh. This is not good UX.

This commit changes the behavior not only of this dialog but also other
dialogs spawned by EmulationActivity so that everything is properly
updated when dismissing a dialog, as if you had pressed OK.
Sliders can trigger change listeners very rapidly, so let's add some
rate limiting so dragging a slider doesn't cause the whole UI to lag.
(Now the input overlay looks laggy when dragging a slider, though.)
Restructuring things in this way brings two immediate benefits:

* Code is deduplicated between Jit64 and JitArm64.
* Materializing an immediate value in a register no longer results in us
  forgetting what the immediate value was.

As a more long-term benefit, this lets us also run constant propagation
as part of PPCAnalyst, which could let us do cool stuff in the future
like statically determining whether a conditional branch will be taken.
But I have nothing concrete planned for that right now.
@cscd98 cscd98 marked this pull request as draft December 23, 2025 09:59
@cscd98 cscd98 force-pushed the 2512-update branch 4 times, most recently from 8574a68 to 58bf5ce Compare December 23, 2025 15:21
@cscd98 cscd98 marked this pull request as ready for review December 23, 2025 16:19
@replicacoil
Copy link

Integrates Microsoft WIL and Windows RT upstream work that I've done for the MING build (used by the build bot) - I would be interested to know if people who use a Dolphin Bar if that makes passthrough work as I cannot test that. There is more PRs upstream, but they only affect the standalone.

Build it and tested it on the latest nightly build of Retroarch. Did not work for me.
The core works normally when bluetooth passthrough is off but when it is on, nothing gets drawn. The frametime graph is at a standstill when it is on except when bringing up the menu. This was regardless when the Dolphin bar was on or off. Here is the log
retroarch__2025_12_24__01_47_21.log

@cscd98
Copy link
Author

cscd98 commented Dec 24, 2025

Thanks for testing. It was a long shot as I just wired up the remaining modules (once they were made ming compatible that is) that we disabled before to make it ming compatible.

@cscd98 cscd98 force-pushed the 2512-update branch 2 times, most recently from 76d529d to 59e1374 Compare December 24, 2025 17:19
@warmenhoven warmenhoven merged commit ee45d31 into libretro:master Dec 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.