RetroArch 1.9.14 has just been released.
If youd like to learn more about upcoming releases, please consult our roadmap here.
This post is an edited version of the article on our website, and it only includes changes relevant to the Steam version (and associated DLC). If you'd like to read the complete untouched article, visit this link here.
Highlights
Vulkan Avoid hard crash when capturing screenshot in emulating mailbox
The emulating mailbox infrastructure is very hacky and needs a rethink to be able to properly support screenshots. Emulating mailbox is pretty nasty to begin with and should be considered a hack. The next version might have a setting to allow you to disable mailbox emulation entirely. Mailbox emulation as it is only takes effect in fullscreen mode.
Steam updates
We have been busy since 1.9.13! The following cores have been added:
- Caprice32
- RACE
- gpSP
- Prosystem
- Beetle PSX
- UAE
- VICE
- bsnes
RetroArch Steam now has 26 cores in total, and the 27th is about to be added soon, EasyRPG! Please look forward to future announcements of more cores coming to Steam soon.
Netplay improvements
Netplay has received plenty of improvements thanks to the efforts of Cthulhu. We have a lot more prepared for the next version, so consider this a prelude to the main event.
- Added setting to allow/disallow players other than the host from pausing the game.
- Added a sublabel for netplay max connections.
- Changed unknown commands to be ignored instead of forcing a disconnection.
- Fixed port override macro from not being set immediately after the port setting.
- Fixed memory leaks.
- Show passworded rooms on lobby. Small improvement to the lobby viewer it should now make a distinction between passworded rooms and non-passworded rooms.
- uPnP: Fixes more memory leaks
- uPnP: Added a task_queue_wait to prevent executing two nat tasks at once, so its also thread safe now
- uPnp: Fix UPNP port mapping failed error switch to a permanent lease time, but request it to be removed when we do netplay_free
For the next version, we will finally address the relay MITM server issues.
WiiU improvements
* Keyboard support has been fixed. The problem was caused by changing the driver lookup point. The deferred lookup resulted in the WIIU trying to treat the keyboard as a gamepad which
didnt work. This change short-circuits at the connection event by ignoring mouse &
keyboard connection events.
Core improvements
As mentioned before, as part of Project IO, we are going over every core and performing some basic quality control checks. This already resulted in numerous Quality of Life enhancements to cores. Not all of the improvements listed below can be attributed to Project IO, but its fair to estimate over 90% of them are.
VICE
- Updated to use VFS instead of straight file I/O (ProjectIO)
- Core option sublabel adjustments
- Audio detection for AutoLoadWarp
- More moderate tape warp detection
- Press play on tape change
- Mapper additions
- Dupecheck for disk append
- More distinguishable light gun cursor
- Diskwarp audio detection correction
- Mute Datasette with Autoloadwarp
- Diskwarp audio detection improvement
- Autoloadwarp automuting fixes
- Fix sound muting on rewind
- Add Automatic Zoom Mode
- Aspect toggle correction
- Touch pointer cleanups
FCEUmm
Add automatic Crowdin synchronization
Mapper 196: Support IRQ for The Ancient & Modern Heroes
Mapper 319: Use hp898f.c only for the old incorrect UNIF bank order, and 319.c for all NES 2.0 ROMs. Add CNROM mode and solder pad switch to the latter.
Mapper 57: Change default DIP for YH-xxx Olympic multicarts, always reset to menu
Mapper 178: Always reset to menu.
CNROM/UNROM: Only emulate bus conflicts when explicitly specified by NES 2.0 header
Added support for mapper 383
Add UNROM modes and two-chip variant to mapper 242
Add Realtec 8099 PCB support to mapper 236
Nestopia
- Add automatic Crowdin synchronization
QuickNES
- Add automatic Crowdin synchronization
Beetle PSX
- Add core options to change crosshair color + remove light gun warnings
- Add automatic Crowdin synchronization
Prosystem
- Fix base height. This system only have one resolution depending on if it is NTSC or PAL. Before it was even worse because it was always reporting a hardcoded 320240 which is totally wrong, so better to output the correct one even if it is also hardcoded.
gpSP
Improved audio frame pacing
Previously, the core was susceptible to crackling audio, particularly when using low frontend audio latency settings.
This is because the core was handling audio output suboptimally. At the set audio sample rate, the frontend expected between 1097 and 1098 audio samples per frame but the core was sending samples in multiples of 256. This means that the audio output becomes desynchronised with retro_run() sometimes 1024 samples will get sent to the frontend for the current frame, sometimes 1280 as the core either falls behind or overcompensates. As a result, when the frontend tries to synchronise on audio, jitter can occur and if the frontend audio buffer is small (when using low latency values), it can sometimes run dry or reach capacity, causing crackling.
1.9.14 modifies audio handling such that the correct expected number of samples is sent to the frontend in proper synchronisation with retro_run(). This greatly improves audio quality, even on the notoriously crackly Mother 3.
To demonstrate the effect of this, here are a couple of figures measured from the core on a Linux desktop with an audio latency setting of 64 ms, averaged over 5k frames:
Time spent close to audio buffer underrun:
* Current master: 8.68 %
* With this PR: 2.37 %
In addition, a Miyoo port has also been added.
PPSSPP
- Move audio callback to the main thread (fixes the longstanding hang issues when using OpenGL)
- 64ms on desktop isnt enough due to excess buffering going on in this emulator. Set default to 128ms instead for now.
- Different audio approach is necessary due to the following: it sets a fixed framerate of 60, then sends either too many or too few audio samples per frame in order to force the frontend to run at the correct speed (.e.g. making the frontend run in slow motion for games that run at 30fps) this is undesirable for libretro, we want a consistent amount of audio samples per batch.
Miscellaneous core improvements
Caprice32: [event] changed mouse pointer to absolute position
Caprice32: [event] better first the default mouse mode code.
Caprice32: [KoS] little fix to avoid render problem on WiiU
Caprice32: Should work now on WiiU
Caprice32: [KoS] changed to RETRO_DEVICE_ID_POINTER_PRESSED
Caprice32: [dsk] clean base
Caprice32: [fdc,slots] new loader endian compatible WIP
Caprice32: [loader] compatible wiiu basic loader.
FBNeo: (libretro) xybots remapping
FBNeo: (libretro) llander remapping
FBNeo: megadrive update from gab75
FBNeo: nes update from gab75
FBNeo: gijoe: all clones have a 4 players mode
FBNeo: gaelco: modernize driver, fix thoop stg. 4 crash
FBNeo: atarivad, fix runahead w/some games using this
FBNeo: tempest: add some hacks
FBNeo: msx update from gab75
FBNeo: d_taitof2.cpp: add Majestic Twelve The Space Invaders Part IV (US)
FBNeo: batman, more drums volume, vad offset, ssriders oops
FBNeo: xmen6p, note about resetting
FBNeo: In Your Face (inyourfa), fix priority
FBNeo: ssriders, fix # of players
FBNeo: speccy update c/o gab75
FBNeo: galaxian, update pisces date
FBNeo: 7z: fix cpp ODR (second attempt)
FBNeo: spectrum fix 48ks ay
FBNeo: vector, underp mode change
FBNeo: video, less derpy mode changes for megadrive, etc
FBNeo: grdnstrm: also fix cloness dips
FBNeo: grdnstrm: fix dips
FBNeo: sms: update Voyage A Sorceress Vacation to 1.05
FBNeo: ssv, buffer spriteram for every game in driver
FBNeo: d_namcos2.cpp: added Mirai Ninja (Japan, set 2) [Corrado Tomaselli]
FBNeo: d_cps1: marked forgottnj as a prototype, its an unfinished version of the game
FBNeo: d_hyperpac.cpp: added New HyperMan (3-in-1 with Cookie & Bibi & Hyper Man) (set 2) [jordigahan]
FBNeo: d_cps1.cpp: Fixed 2 players mode DIP switch for sf2cejx and sf2hfj.
FBNeo: spectrum update from gab75
FBNeo: williams, add Playball!, fix lottofun
FBNeo: lua: fix window not opening after closing a game w/lua console opened
FBNeo: cbombers, undrfire: impl. contrast/luma settings as recommended by Tatsuya79
FBNeo: ssv, experimental lag fix plus fix pastelis 2p split screen mode
FBNeo: d_m107.cpp: hiscore support
FBNeo: ssv, add spritebuffering to stmblade to fix lines in stage 6, cleanup a little
FBNeo: experimental cheat fix for midway (mk/umk3/etc) games
FBNeo: md, updates from gab75
FBNeo: megadrive palette fix (0 bit ignored)
FBNeo: sys16b doesnt have highlights, only shadows. i think? revert if breaks something
FBNeo: add ktiger2p [DsNo]
Genesis Plus GX: Fetch translations & Recreate libretro_core_options_intl.h
mGBA: Add automatic Crowdin synchronization
PPSSPP: Reimplement audio
Picodrive: Fix loading of SMS/GG ROMs
Picodrive: sound, fix ym2612 ladder effect, add option
Picodrive: 32x, fix DMA mem-2-mem copying for big endian
Picodrive: sound, add ym2612 channel clipping, ladder effect
Picodrive: sms, set non-TMR images to region Japan
SameBoy: Update the SameBoy core with latest changes
SameBoy: Add GB_is_cgb_in_cgb_mode
SameBoy: Add memory write callback, optimize memory access with likely/unlikely
SameBoy: Add a safe memory read API
SameBoy: Initial MBC7 support
SameBoy: Mouse controls for MBC7
Yabause/Kronos: Add automatic Crowdin synchronization
Changelog 1.9.14
- ANDROID/PLAYSTORE: Implement MANAGE_EXTERNAL_STORAGE permission
- ANDROID/PLAYSTORE: Bump up SDK level to 30 to comply with Play Store policies
- AUDIO/MIXER: Increase sample buffer padding
- CHEEVOS: Disallow achievements when spectating netplay
- CHEEVOS: Fix need-to-activate achievement logic for non-hardcore
- CHEEVOS: Dont queue rewind re-init if already on main thread
- CHEEVOS: Ignore unofficial achievements unless setting is enabled
- CHEEVOS: Use SSL host when available
- CHEEVOS: Validate hashes for secondary discs in multi-disc games
- CHEEVOS: Ensure placard is initialized on main thread when game has no achievements
- CHEEVOS: Audit achievement settings defaults and visibility
- CHEEVOS: Show error message when no password provided
- CHEEVOS: Use widget for game loaded achievement progress
- CONFIG: Honor config_save_on_exit when Reboot/Shutdown is called
- DISK CONTROL: Focus on current content entry in Disk Control append/insert
- FRAMEDELAY: Auto Frame Delay Improvements swap interval handling, D3DX handling, and delay target resets also on core restart. It should now work with high refresh rates and also with Direct3D 10/11/12 drivers
- INPUT/GYRO/ACCELEROMETER/ANDROID: Re-enable Gyroscope & Accelerometer when RetroArch resumes or regains focus
- INPUT/HID: Fix gamepad disconnect on unrecognized HID device
- LAKKA: Patch to fix keyboard typing
- LAKKA: CD-ROM eject menu item
- LAKKA/BLUETOOTH: Add option to remove pairing
- LAKKA/SWITCH: Disable rumble gain
- LAKKA/SWITCH: Disable cpu scaling, uses its own CPU governor
- LOGGING: Logging cleanups. A bunch of unifications and reformattings (capitalizations, dots, quotes, prefixes etc). Also added a few missing things, such as Run-Ahead error logging and LED interface init logging when it is enabled.
- NETPLAY: Networking should not print country for a local lobby
- NETPLAY: Added setting to allow/disallow players other than the host from pausing the game.
- NETPLAY: Added a sublabel for netplay max connections.
- NETPLAY: Fixed port override macro from not being set immediately after the port setting.
- NETPLAY: Show passworded rooms on lobby
- NETWORK: Make HTTP header parsing case insensitive
- NETWORK/UPNP: Fixed memory leaks
- NETWORK/UPNP: Added a task_queue_wait to prevent executing two nat tasks at once, so its also thread safe now
- NETWORK/UPNP: Switch to a permanent lease time, but request it to be removed when we do netplay_free. Switch to a permanent lease time, but request it to be removed when we do netplay_free.
- NETWORK/UPNP: Only use a single interface for UPnP, return on the first one found instead of iterating over all of them and opening them one by one
- OVERLAYS: Revert changes
- RETROFW: Add OSS audio
- VIDEO/ROTATION: Always return false if rotation cant occur. RETRO_ENVIRONMENT_SET_ROTATION should return false when rotation has been forcefully disabled in frontend, that way the core can decide if aspect ratio should be rotated or not for vertical games. Useful for FBNeo for instance.
- VULKAN: Avoid hard crash when capturing screenshot in emulating mailbox.
- WIIU: Make wiiu_gfx_load_texture code safer
- WIIU: Fix keyboard support.
[ 2021-12-06 04:34:01 CET ] [ Original post ]