RetroArch 1.7.2 ( PS3 / Vita / PSP ): "Runahead Latency Reduction" headlines many New additions

Discussion in 'RetroArch' started by STLcardsWS, Apr 26, 2018.

By STLcardsWS on Apr 26, 2018 at 12:04 AM
  1. 8,930

    STLcardsWS Administrator

    Sep 18, 2014
    Likes Received:
    Trophy Points:
    Following the release of RetroArch v1.7.1 and then the recent RetroArch 1.7.1 PS3 Extended Version (from @Ezio / @Zar). The official team has now dropped version 1.7.2 for all platforms and that includes the ports for the PlayStation 3, PS Vita (PSTV) & PSP. While version 1.7.2 is packed with alot of new changes that applies to all builds there is one feature that is quite interesting with the "Runhead Latency Reduction" feature which the devs say gives better latency then the real hardware, the PS3 is a port that supports this feature and is used as an example within the release notes. You can checkout all these new features and additional details in the release notes provided


    • RetroArch 1.7.2
      If you’d like to show your support, consider donating to us.
      Check here in order to learn more.

      Runahead latency reduction – better latency than the real hardware
      A visual representation by Durante of how the runahead system works in practice.

      This might just be our biggest release yet, thanks in no small part to the new runahead latency reduction system. This feature has already been all the rage over the Internet. Well known people like Durante of DSfix fame praised it and the popular site Ars Technica has dedicated an entire article to this game-changing feature.

      We ran an article on this new feature before, and since then, several facts have changed on the ground which bears pointing out. First of all, several performance improvements have been made since. Secondly, the feature has now been enabled for the vast majority of the RetroArch platform ports.

      The versions that have this feature enabled and exposed now includes:
      • PlayStation3
      • Xbox OG
      • Wii
      • WiiU
      • Nintendo Switch
      • Android
      • PC (Windows)
      • PC (Linux)
      • macOS
      • iOS

      Here are some basic things you should know:
      • Every game has a certain built-in amount of lag frames. In order for the runahead system to perform as expected, you should set it to the same amount of frames to read ahead that the game you’re running is working by. So, for example, if a game like Super Mario World for the SNES has a guaranteed 2 frame input lag, for the best results, set Runahead frames to 2.
        You can count the amount of lag frames a game has by using the frame advance feature in RetroArch.
      • For playable performance, your system should be at least capable of running the core at twice its regular speed. These performance demands go up commensurate to the amount of frames you want to run ahead. The higher performance you get with a core, the more frames you can run ahead at fullspeed.
      • While the runahead system is core agnostic and therefore technically we don’t need to patch up cores in order to work with the runahead system, there are several things that can be done in order to improve performance considerably. To this end, Dwedit has submitted several patches to some of the cores in order to make them perform much better. Some of these cores include (but are not limited to) the Snes9x cores, QuickNES, FCEUmm, Nestopia, Gambatte, and even Mednafen/Beetle PSX.
      • There are currently some things you should know about Mednafen/Beetle PSX when it comes to runahead. First of all, in order for this core to work correctly with runahead, you should use the software renderer. The OpenGL and Vulkan renderers are currently buggy with runahead. Second, even after several savestate performance improvements, it is unlikely you will be able to set runahead to higher than 1 frame while still being able to run at fullspeed. This might likely change once our bounty for the Beetle PSX dynarec is finally fulfilled (and on that note, it has already reached $720, and a coder is working on a potential solution)
      • An often heard question that has been asked is – will this work on a Raspberry Pi? There is no straight answer to this since it heavily depends on the core’s performance. Based on our performance tests on the PS3 and Xbox OG, QuickNES and Gambatte should be at least two cores that should run at fullspeed with runahead set to 6 frames or less. Your mileage may vary on any of the other cores. The quick rule of thumb is that the faster the core, the higher chance there is to get it to run at fullspeed with more runahead frames.

      How to check the amount of lag frames a game has
      RetroArch has the ability to pause a core and advance it frame by frame. Perform the following steps to determine the amount of lag frames of a game:
      • Pause emulation (press ‘p’ button on keyboard).
      • Press and hold the jump button on the controller.
      • Advance emulation frame by frame (press ‘k’ button on keyboard) until the character jumps.
      The number of k presses before you get a reaction should be the number of lag frames you can safely remove with run ahead.

      Performance, scalability

      • So, how well does all this scale? Of course, the more expensive hardware you throw at a latency reduction approach like this the better, but how low can we actually go in terms of specs and still obtain good results? To figure out a basic answer to this question, I decided to test the runahead system on two old game consoles that are not exactly powerhouses at this point. The first of the lot is the Xbox OG, powered by a fairly mundane Pentium 3/Celeron 733MHz CPU. The second is the PlayStation3. Its PPU is roughly equivalent to a Pentium 4 2.4GHz CPU in terms of real-world performance, and even that comparison is probably pushing it. So this is not exactly powerful hardware.

      Street Fighter Alpha 3FBAlpha 2012No runahead104fpsPS3
      Street Fighter Alpha 3FBAlpha 2012Runahead – 1 frame57fpsPS3
      Mega Man 2QuickNESNo runahead124fpsPS3
      Mega Man 2QuickNESrunahead – 1 to 6 frames124fpsPS3
      Mega Man 2NestopiaNo runahead124fpsPS3
      Mega Man 2NestopiaRunahead – 1 frame76fpsPS3
      Mega Man 2NestopiaRunahead – 2 frames54fpsPS3
      Super Mario WorldSnes9x 2010No runahead113fpsPS3
      Super Mario WorldSnes9x 2010Runahead – 1 frame78fpsPS3
      Super Mario WorldSnes9x 2010Runahead – 2 frames65fpsPS3
      Super Mario WorldSnes9x 2010Runahead – 3 frames56fpsPS3
      Sonic 1Genesis Plus GXNo runahead116fpsPS3
      Sonic 1Genesis Plus GXRunahead – 1 frame51fpsPS3
      Bomberman 94Mednafen PCE FastNo runahead124fpsPS3
      Bomberman 94Mednafen PCE FastRunahead – 1 frame83fpsPS3
      Bomberman 94Mednafen PCE FastRunahead – 2 frames66fpsPS3
      Sonic 1 SMSGearsystemNo runahead120fpsPS3
      Sonic 1 SMSGearsystemRunahead – 1 frame63fpsPS3
      Sonic 1 SMSGenesis Plus GXRunahead – 1 to 6 frames124fpsPS3
      Mega Man 2QuickNESRunahead – 1 to 6 framesFullspeedXbox OG
      Mega Man 2FCEUMMRunahead – 1 frameFullspeedXbox OG
      Mega Man 2FCEUMMRunahead – 2 framesNot fullspeedXbox OG
      Sonic 2Genesis Plus GXNo runaheadFullspeedXbox OG
      Sonic 2Genesis Plus GXRunahead – 1 frameNot fullspeedXbox OG
      We consider any PC from the year 2005/2006 (whether desktop or laptop) to be significantly more powerful than either of those consoles, so these test results bode quite well for the scalability and feasibility of the runahead method.

      Features like the runahead system will also naturally increase the demand for ever faster cores so that people on lower specced hardware can use runahead with more frames in advance.​

    • bg.png
      General changelog for RetroArch v1.7.2
      • ANDROID/OPENSL: Prevent crashes when setting audio latency too low (buffer count can never be lower than 2 now).
      • CRT: Added CRT SwitchRes.
      • COMMON: Hide the ‘Core delete’ option if the ‘Core updater’ is also hidden.
      • COMMON: Add way to reset core association for playlist entry.
      • COMMON: Fix invalid long command line options causing infinite loop on Windows
      • COMMON: Add OSD statistics for video/audio/core.
      • COMMON: Added runahead system; allows you to drive down latency even further.
      • COMMON: Fix buggy behavior that could happen with ZIP file reading on some platforms as a result of not initializing struct.
      • CHEEVOS: Support Atari 2600, Virtual Boy, and Arcade (only Neo Geo, CPS-1, CPS-2 and CPS-3 and only with fbalpha core).
      • CHEEVOS: Add option to automatically take a screenshot when an achievement is triggered.
      • CHEEVOS: Fixed incompatibilities with Neo Geo Pocket achievement sets.
      • CHEEVOS: Store only login token, not password.
      • D3D10: Added D3D10 driver to release build. Has working shaders (Slang), overlay, and menu display driver support. Should be on par capabilities wise with D3D11 driver except for there being no hardware rendering right now.
      • D3D11: Experimental hardware renderer. Allows for libretro cores to use D3D11 for hardware rendering. First core to use this is PPSSPP.
      • D3D11: Increase backwards compatibility, shaders compile with Shader Model 4.0 now, added support for more feature levels.
      • D3D10/D3D11/D3D12: Fix crashes with completely black or white thumbnail textures in XMB.
      • GUI: Support disabling window decorations on Windows and Linux.
      • LIBRETRO: Addition – Functions to enable and disable audio and video, and an environment function to query status of audio and video enables.
      • LOCALIZATION: Update Italian translation.
      • LOCALIZATION: Update Polish translation.
      • MENU: Add Rewind/Latency/Overlay settings to Quick Menu, add options to show/hide them (User Interface -> Views -> Quick Menu)
      • MENU/RGUI: Only show Menu Linear Filter for RGUI and only show it for video drivers that implement it (D3D8/9/10/11/12/GL)
      • MENU/RGUI: Add User Interface -> Appearance options.
      • MENU/RGUI: D3D8/D3D9: Hookup Menu Linear Filter
      • MENU/XMB: Disable XMB shadow icons by default for PowerPC and ARM for performance reasons.
      • MENU/XMB: Left/right thumbnails are now automatically scaled according to layout.
      • MENU/XMB: Add Left Thumbnails (additional to the right).
      • MENU/XMB: Fixed left/right tab regression.
      • MENU/XMB: Fix scaling of tall images that were cut on bottom previously.
      • MENU/XMB: Menu scale factor setting now changes texts length, image scaling and margins.
      • MENU/XMB: Mouse cursor scales correctly now.
      • MENU/XMB: Add toggle to show/hide Playlist tabs.
      • MENU/XMB: Add menu layout – can switch between Desktop, Handheld and Auto.
      • MENU/XMB: Don’t load menu pipeline shaders unless XMB is selected (D3D10/D3D11/D3D12/GL/Vulkan)
      • MENU/VIDEO: Only show black frame insertion for the video drivers/context drivers that support it (so far this includes – D3D8/D3D9, OpenGL, Vulkan)
      • MENU/VIDEO: Only show max swapchain images if supported by video driver and/or context driver (so far this includes – DRM EGL context driver, VideoCore EGL context driver, Vulkan)
      • MENU/MaterialUI: Automatic DPI Scaling should be much improved now, now scales as expected at 1440p and 4K resolutions.
      • MENU/MaterialUI: Fix wrong calculation of an entry height causing long playlists to end up outside of screen range. This also could cause crashes on low DPI screens.
      • IOS: Fixed crash when opening downloaded roms from Safari or using the “Open in..” functionality. Added the compiler flag to support keyboard remapping to controls.
      • IOS: Fixed buffer overlap that caused a crash while trying to download GLSL shaders from the buildbot.
      • PS3: fix URLS
      • REMAPS: Mapping keyboard keys from more than one gamepad (works with dosbox)
      • REMAPS: Mapping more than one button to the same action
      • REMAPS: Unmapping buttons
      • REMAPS: Unmapping analogs
      • REMAPS: Mapping a button to trigger an analog response (tested with mupen, can run on SM64 with the d-pad now, triggers a full analog tilt)
      • REMAPS: Mapping an analog to another analog (having more than one analog mapped to the same output causes issues)
      • REMAPS: Mapping an analog to produce a button response
      • SCANNER: Should be able to scan dual-layer Wii disc images now, filestream code now supports files larger than 4GB.
      • SHADERS/SLANG: Slang shaders should work again on Android version and MSVC versions (basically all the Griffin-based versions).
      • SHADERS: If GL context is GLES2/3/Core context, Cg shaders are unavailable. Applies to shader list too.
      • SHADERS: Hide cg/glsl shaders from being able to be selected if D3D8/9/10/11/Vulkan video drivers are selected.
      • SHADERS: Hide slang shaders from being able to be selected if D3D8/9/OpenGL video drivers are selected.
      • SHADERS: Prevent crashes from occurring if we have the GL video driver in use and we try to skip to a slang shader through next/previous hotkeys
      • SHADERS: Fix shader parameter increase / decrease functions
      • SUBSYSTEM: handle savestates properly (cart1 + cart2.state0)
      • VULKAN/X11: Fix X11 Vulkan bug from Wayland driver.
      • VULKAN: Fix multi-line text spacing in menus with Vulkan driver.
      • WINDOWS XP: Add Cheevos support.
      • WINDOWS/MSVC 2003/2005/2010/2013/2015/2017: Add Cheevos support.
      • VITA: Bugfix for ‘PS Vita takes many time to start to accept input’ issue.
      • X11: Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR
      • X11: Prioritize NET_WM_STATE_FULLSCREEN in true fullscreen mode
      • WIIU: Fix OOB read/write in keyboard driver.

      CRT Switch Res – GroovyMAME-like features for 15KHz capable CRT monitors!

      Thanks to (libretro) forum-user Alphanu, RetroArch now has the ability to query cores for their exact video timing data, which can be used to switch to native-resolution, 15 kHz modelines for use with standard-definition CRT TVs.

      This is a big step for retro purists, as RetroArch can now output “pixel-perfect” video with accurate timing to compatible displays, even quickly switching between interlaced and non-interlaced modes on the fly.

      This capability is currently Windows-only and requires modelines to be created in advance by CRT_EmuDriver or Custom Resolution Utility with a compatible GPU. Linux support is coming soon.

      In case you’d like to learn more, follow these links:

      Direct3D improvements, additions, and a new Direct3D10 driver

      With RetroArch 1.7.1, we really stepped our game up to finally start treating Windows as a first-class citizen platform. You have seen this in the form of dedicated Direct 3D 11/12 video drivers that had the ability to run the same shaders as Vulkan, our new slang shader spec that is made possible by the impressive Khronos/ARM-backed project SPIRV-Cross.

      Increased backwards compatibility
      Previously, the Direct3D 11 driver required that your graphics card driver supported at least Shader Model 5.0. We have since downgraded this requirement to Shader Model 4.0. As a result, I am now able to use the Direct3D 11 video driver on an old 2010 laptop GPU that only supports Shader Model 4.0 (it’s an ATI Mobility Radeon HD 4300). We also try to support more D3D11 feature levels instead of just defaulting to 11.0.

      New Direct3D 10 video driver
      On some systems, though, you won’t be able to make use of the Direct3D 11 driver no matter what. One of those systems happened to be another old laptop I had lying around here. This one has a Geforce 9200M GS, and the specs state that it supports up to Direct X 10 and Shader Model 4.0. Direct3D 11 is a no go on this GPU even with the increased backwards compatibility.

      It’s for this purpose that me and aliaspider spent some time to finally make the Direct3D 10 driver feature-complete. Direct3D 10 should be available from Windows Vista and up, whereas Direct3D 11 is available from Windows 7 and up. The Direct 3D 10 driver should be feature complete and identical to the Direct3D 11 driver, with the sole exception of hardware rendering contexts not being available right now with Direct3D 10.
      Which brings us to the last Direct3D-related subject…

      Direct3D-powered libretro cores are now possible!
      This feature is easily worth its own article, but since we already covered this before and because 1.7.2 has so many huge features, we will relegate this to a side note. Nevertheless, it is none the less important.
      Up until now, if you wanted to use hardware-accelerated 3D rendering in a libretro core, your options were OpenGL and/or Vulkan. There is now a third option – Direct3D 11, and the first libretro core that supports this is the PPSSPP core!
      With all these features, we now have everything in place to really do an UWP version of RetroArch justice.

      Input remapping system improvements
      The input remapping system (available from Quick Menu -> Controls) had many obvious limitations previously. Some of these included:
      • It was not possible to map keyboard from more than one gamepad (for instance with Dosbox)
      • It was not possible to map more than one button to the same action
      • It was not possible to unmap buttons or analogs
      • It was not possible to map a button to trigger an analog response (for instance, in an N64 emulator, running in Super Mario 64 with the D-pad)
      • It was not possible to map an analog to another analog
      • It was not possible to map an analog to produce a button response
      Most of these restrictions have now been lifted at long last thanks to radius, and the visual representation is also much improved now.
      To read more about this, also visit the related forum thread here.
      Do note that all your existing remap files are now obsolete, and you should start from scratch. This was a necessary evil unfortunately in order to progress.

      Various Quality-Of-Life improvements
      We have tried to do various consequential Quality-of-Life improvements for this release:
      • XMB and MaterialUI menus should scale much better now depending on the output resolution. Previously, the XMB and MaterialUI menu elements were too small if you were running at a resolution of 1440p or 4K.
      • Boxart / thumbnails now react better to other elements on the screen and can resize or adjust themselves accordingly. There are also new ways of showing a thumbnail on the left and right side of the screen in XMB. It is also possible to determine what ‘type’ of thumbnails get shown on the left and right, respectively.
      • There are two layout modes now for XMB – you can choose between Desktop and Handheld. Desktop is the default look of the XMB as it was now, mirroring the PS3 layout, while Handheld goes for an XMB look that is more in line with how it looked like on PSP. Previously, the default layout was ‘automatic’, where it would default to the PSP layout if you were running at a resolution of 320×240.
      • Shaders should work again with the Vulkan video driver on the Android version.
      • When you select a shader preset now, it should only show you the supported shader presets based on the video driver that is currently selected. In other words, it will no longer show you GLSL shaders and/or presets when you have selected the Vulkan video driver, just as an example.
      • Certain video features were never implemented for some platforms. We now hide features like Black Frame Insertion, GPU Hard Sync and Swapchain images if the video driver in question doesn’t implement them. It is conceivable that for some of these drivers, these features might be implemented later, but overall we feel it declutters the menu considerably by simply not showing settings that have no effect at all when toggled due to them being unimplemented.
      • We now expose certain convenience features on the Quick Menu, such as Latency, Rewind and Overlay settings. You can also hide these settings respectively by going to User Interface -> Views -> Quick Menu and disabling these categories.
      • The shader next/previous hotkeys are more intelligent now and deliberately skip over shaders that are not supported by the current video driver.
      • (For Linux users) Wayland should now have proper scaling with XMB menu driver.
      • (For Linux users) Allow compositor disabling on X11 fullscreen through _NET_WM_BYPASS_COMPOSITOR.
      • On platforms where this is supported, ‘Set Display-Reported Refresh Rate’ is a convenient way of setting the exact refresh rate that the OS/video driver has reported to the application. This might be more accurate than measuring the refresh rate yourself by waiting for 2048 samples or more before hitting the Action button on ‘Estimated Screen Framerate’.
      • Display Framerate is now moved to ‘Onscreen Display – Notifications’. A handy feature showing all sorts of statistics is now exposed in this submenu as well.

      RetroAchievements updates
      The future is now. Arcade achievements using the FB Alpha core are fully supported in this version. This brings support for Neo Geo and Capcom arcade boards (Metal Slug, Marvel Super Heroes).
      – Capture your greatest moments with the automatic screenshot feature! Look back fondly on the time you grinded your RPG character to level 99 for internet points.
      – RetroAchievements on a retro computer?! Windows XP builds of RetroArch now support achievements!

      NOTE: Some features only apply to certain ports and other are global across all ports

    • Libretro Cores included in RetroArch v1.7.2

      PS3 Cores VITA / PSTV CoresPSP Cores
      1. fbalpha2012
      2. fceumm
      3. freeintv
      4. fuse
      5. gambatte
      6. gearboy
      7. gearsystem
      8. genesis_plus_gx
      9. gw
      10. handy
      11. mame2000
      12. mgba
      13. mednafen_ngp
      14. mednafen_pce_fast
      15. mednafen_vb
      16. mednafen_wswan
      17. nestopia
      18. nxengine
      19. pokemini
      20. prosystem
      21. prboom
      22. quicknes
      23. snes9x2010
      24. snes9x
      25. stella
      26. tyrquake
      27. tgbdual
      28. theodore
      29. vba_next.


      1. 81
      2. 2048
      3. dosbox
      4. fbalpha
      5. fbalpha2012_cps1
      6. fbalpha2012_cps2
      7. fbalpha2012
      8. fbalpha2012_neogeo
      9. fceumm
      10. fmsx
      11. freeintv
      12. fuse
      13. Gambatte
      14. gearboy
      15. gearsystem
      16. genesis_plus_gx
      17. gpsp
      18. gw
      19. handy
      20. mame2000
      21. mame2003
      22. mame2003_plus
      23. mednafen_ngp
      24. mednafen_pce_fast
      25. mednafen_vb
      26. mednafen_wswan
      27. nestopia
      28. nxengine
      29. pcsx_rearmed
      30. Picodrive
      31. pokemini
      32. prboom
      33. prosystem
      34. quicknes
      35. snes9x2002
      36. snes9x2005
      37. snes9x2005_plus
      38. snes9x2010
      39. stella
      40. tgbdual
      41. theodore
      42. tyrquake
      43. vba_next
      44. vecx
      45. vice_c64
      46. vice_xplus4
      47. vice_xvic
      48. yabause
      1. 81
      2. FCEUMM
      3. FMSX
      4. FUSE
      5. GAMEBATTE
      6. GW
      8. NxEngine
      9. prboom
      10. Picodrive
      11. QuickNES
      12. snes9x2005
      13. snes9x2005_plus
      14. Tempgba


    • Need help with RetroArch?

      GUIDE >>> Official RetroArch / Libretro Docs
      GUIDE >>> Unofficial RetroArch PS3 Guide: (Note: Still under Construction but more geared towards the PS3 Version)
      RetroArch Official Forum:
      RetroArch PS3- Unofficial PSX-Place Forum:


    Other Supported Platforms can be found @ & at the Google Play Store for the Android version.
    Last edited: Apr 28, 2018
    Naut, Twiztid, T.A.U and 10 others like this.


Discussion in 'RetroArch' started by STLcardsWS, Apr 26, 2018.

Share This Page