RetroArch 1.10.3 has just been released.
This is a condensed version of the original article on our website. If you want to read the article in full, click here.
RetroArch Updates
See the Changelog below for a detailed breakdown of all the changes that have happened.
One of the biggest changes for Steam users by far is the new Steam Discord Rich Presence support. NOTE: You will need to use the desktop client in order for this to work. It wont work with the webbrowser client.
Core Updates
Nestopia
FourScore support (4 player multitap) has been added for the following games:
- Spacey McRacey
- NNNNNN
- Arkade Rush
- Justice Duel
- BMX Simulator
- Way of the Exploding Fist
PCSX ReARMed
This core has a new auto frameskip mode (based on free audio buffer space).
The Lightrec dynamic recompiler has been updated, and it should fix several crashes and bugs that occurred before. This would only affect users on x86/x86_64 and MIPS architecture processors, as ARM architecture-based systems continue to use the Ari64 dynarec instead.
There has been a GunCon overhaul, the following input descriptors have been added:
- Add Trigger, Reload, Aux A, and Aux B as mappable buttons in RetroArch menu for players 1 and 2.
- GunCon trigger, A, and B buttons are mapped to Gun Trigger, Gun Aux A, and Gun Aux B instead of hard coded to left click, right click, and middle click.
- Force cursor to corner of screen for offscreen reload so that reloading works on all four edges of the screen.
- Allow Gun Reload RetroArch input to emulate an offscreen shot.
- Switch gun coordinates from Pointer type to Lightgun type.
gpSP
The gpSP Libretro core now uses a small translation cache for the Miyoo platform.
Beetle Virtual Boy
Fixed a couple inaccuracies in the VSU modulation emulation, fixing a few sound effects in Virtual Boy Wario Land.
Mesen
The Nintendo Entertainment System emulator core has seen a couple of improvements.
Before, the core would upload audio by using the audio batch callback multiple times per frame, unduly stressing the frontend audio buffer and leading to poor AV synchronisation.
We now ensure that the audio batch callback is only used once per frame (unless the frontend does not support batches of sufficient size, in which case the samples will be split appropriately).
We also did the following:
- Sets the default audio sample rate to 48000 Hz. The previous default of 96000 Hz is so high that RetroArch is required to flush the audio driver twice per frame, which is bad for AV synchronisation.
- Removes the 192000 and 384000 sample rate options, since these are in fact unsupported by the underlying emulator code
Snes9x 2005
This Super NIntendo Entertainment System emulator core has seen several improvements.
Before, the core had bad audio sample pacing:
- Neither variant of the core sent a number of samples per frame that would match the nominal expected values given by the sample rate and fps set in retro_get_system_av_info()
- Due to integer rounding errors, the non-plus core always would send too few samples
- The plus version of the core would send the correct number of samples, in terms of actual emulation but this does not tally with the sample rate reported to the frontend. Moreover, the plus core would call the audio batch callback twice per frame, which unduly stresses the frontend audio buffer.
- As a result, the core had bad audio/video synchronisation, affecting frame pacing.
We fixed several issues:
- The audio sample rate is now reported as 32040 Hz
- The non-plus core uses an accumulator to ensure that fractional audio samples are accounted for and sent when required
- The plus core now uploads audio samples only once per frame
- In addition, we did the following
- Fixed three memory leaks that were found in the core
- Modified the Console Region core option to require a restart (since it has never been possible to change this at runtime)
- Snes9x2005 Non-Plus: Add optional low pass audio filter
- Apart from a substantial difference in audio emulation accuracy, probably the most obvious difference between the plus and non-plus versions of the core is that the latter has an inadequate level of low pass audio filtering, leading to tinny/scratchy sound.
We added a simple optional low pass filter at the output stage of the non-plus core. When enabled, audio is more mellow/bassy, and the generated sound is closer to that produced by the plus version with only a negligible increase in performance requirements.
Snes9x 2010
This Super NIntendo Entertainment System emulator core has seen several improvements.
Use audio batch callback only once per frame
Before, the core would upload samples in batches of ~64, which means the audio batch callback is used many (~9) times per frame. This overstresses the frontend audio buffer and leads to bad AV synchronisation.
We have fixed the issue by ensuring that the audio batch callback is used to send all available samples only once per frame.
Improve save state efficiency + fix save state size
At present, every time that retro_serialize_size() is called (i.e whenever save states are used), the core determines the save state size by allocating a temporary 5 MB buffer and writing into this an actual save state. Moreover, it then fails to report the actual size correctly due to a bug in the memory stream wrapper code which means save states are always 5 MB in size. This represents a terrible inefficiency.
Now, the save state size is now calculated independently of regular save state creation. No temporary buffer is required, and there is no need to actually write a save state to memory and save states now have the correct size (~830 kb)
60Hz modes for > 60Hz emulated platforms
Beetle Cygne/WonderSwan
At present the core runs at ~75Hz, matching the native refresh rate of the WonderSwan hardware. This is fine if the core is run on a VRR display (or one that natively supports 75Hz), but on regular 60Hz panels it can cause issues. In particular, screen tearing is very likely to occur. You can experience this on Linux (when not using a compositor and without vsync forced at the driver level) and on 3DS. The tearing is so bad on 3DS that we would previously consider the core to be unusable on that platform
We now added a new 60Hz Mode core option, which can be used to force the core to run at 60Hz (actually 60.38Hz, but RetroArch handles this nicely via dynamic rate control). Note that the core still runs at the correct speed when this option is enabled internally, the core is running the nominal ~75 frames per second, but every 5th frame is dropped. This reduces video smoothness, but then 75Hz on a 60Hz display is not smooth either. More importantly, enabling this option eliminates screen tearing.
In addition, we have also made the following minor changes:
- The frontend reported framerate is now set correctly in 75Hz mode (previously this was truncated, leading to a slight tendency for the frontend audio buffer to under-run)
- The internal audio samples buffer has been reduced from a ~64kb (!) static array to a tiny, dynamically created array of just the correct size
- On 3DS, the video buffers are now allocated in linear memory (for improved performance)
- The 96000, 192000 and 384000 audio sample rate options have been removed, because they are nonsensical and harm AV synchronisation
Thanks to this 60Hz mode, Beetle WonderSwan is now perfectly playable on RetroArch 3DS. We have enabled this option by default. If you are using a VRR display or if you are running at a native 75Hz resolution and would like to change it back to the native refresh rate, you can just turn this option off in Quick Menu -> Options.
We have also added the core for RetroArch PS2, although it cant reach fullspeed. Its debatable whether its worth including, but for now we keep it in.
There is also a new optional audio feature. The WonderSwan has a tendency to produce rather harsh/abrasive chiptunes. The low pass audio filter softens and mellows out the generated sound.
Changelog
- AI/SERVICE: Disable AI Service setting by default
- CHEEVOS: Disallow manual frame delay setting in Hardcore Mode
- DATABASE: Serial scanning for Wii now includes WBFS
- INPUT/MAPPING: Fix offset + crash when clearing input port binds
- INPUT/MAPPING: Fix saving of Analog to Digital Type when configuration overrides are used
- LOCALIZATION: Add Valencian language option
- LOCALIZATION: Updates
- MENU/SETTINGS: Move Show Menu Bar under Windowed Mode settings
- MENU/SETTINGS: Add sublabels for Subsystems and Input Deadzone/Sensitivity
- MENU/SETTINGS: Move On-Screen Notifications to top
- MENU/XMB: Unified the shadow alpha value to a slightly darker one for better readability
- MENU/XMB: Corrected the option label and sublabel for actual behavior
- STATIC PLATFORMS: Populate all history list metadata when launching content from playlists
- STEAM: Introduce Steam Rich Presence
- VIDEO: Fast-Forward Frameskip improvement
- VIDEO/THREADED: Stability fixes
- WINDOWS/WINRAW: Fix multiple light guns
[ 2022-04-15 18:34:07 CET ] [ Original post ]