Steam Launch lineup revealed

So, it’s been a long time since we (prematurely) announced our intent to launch RetroArch on Steam. We’re nearing the finish line now however, so now is as good as any a time to start discussing how things are going to roll out.

Will launch on Windows first (Linux later)

We will be releasing on Windows first, with a release on Linux scheduled later (no ETA).

We are trying to limit our support burden at launch here since we are (understandably) concerned about the large amount of support requests and feedback we are bound to be receiving. Adding Linux right from the bat would further exacerbate that.

10 Cores Available On Launch Day

We are deciding to launch with 10 cores at launch. These cores have already been approved and uploaded on Steam. They are as follows:

There will be no ‘Core Downloader’ in RetroArch, or anything that is not hosted on Steam in fact. To obtain cores, you need to install cores separately that we provide as ‘DLC’. These are all free just like RetroArch itself.

NOTE: We need to stress – on its own, without installing any of the cores, the most you will be able to do with RetroArch is watch some movie files and playback music files through its builtin ffmpeg core. To make it do anything else, you will have to install cores.

Differences between regular RetroArch and Steam version

Apart from these aforementioned changes, there will be no substantial differences for now in the Steam version. We understand that even though we have consistently improved the User Experience and tried to make things more easily accessible that we will still be in for a lot of criticisms over the initial learning curve, so we’ve pretty much resigned to the fact that this will happen and will just brace for impact and try to do as much as what we can with the criticism that will inevitably be piling on. We will try to do our best to be as receptive to the feedback as possible with the thickest amount of skin possible, and try to suitably make some much needed UI changes.

This is also what helped inform our decision to go with 10 cores. We could have launched with over 60 cores, sure, but the ensuing fallout would have been a mess and it would have been near impossible to focus on bug reports and issues piling in. By focusing on 10 cores, we can do some much-needed Quality Control where issues inevitably get picked up, we can respond to it and in the process improve the quality of the core. This kind of isolated feedback time with a specific batch of cores is something we have found ourselves in the past always lacking, since it was always off to do the Next Big Thing as new features, cores, and other developments are made on an almost weekly basis. This gives us the much-needed time to focus on a specific batch of cores and polish them before we move on to the next batch of cores.

RetroArch 1.8.8 released!


RetroArch 1.8.8 has just been released.

Grab it here.

Read our latest Libretro Cores Progress Report blog post here. It’s an exhaustive list, and especially the older consoles have received a lot of new cores and improvements.

Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Highlights

Add option to sort playlists after name truncation (Ozone)

A couple of users have complained about a feature we made in 1.8.7 (Fix sidebar playlist sort order when ‘Truncate Playlist Names’ is enabled). This new addition makes the new sidebar playlist sorting behaviour optional via a Sort Playlists After Name Truncation setting under User Interface > Appearance. When disabled, playlists will be sorted the old way (according to file name), not by display name.

Localization – big updates and crowdsourced

A new language has been added, Slovakian. And plenty of the existing languages have received big updates as far as localization goes.

But by far the biggest change is our transition to Crowdin. This allows non-programmers to more easily contribute localization changes/additions to RetroArch. You can see the completion status of the various languages on our Crowdin page.

Improved shader preset dirs

1.8.8 restores the original behavior of the “Save Shader Preset As” option, and improves the cycling of shaders by allowing to cycle the shaders on fallback directories if the Video Shader directory does not contain any preset.

Input Remapping Fixes

In 1.8.7, pressing RetroPad Start to reset a core input remap to the default setting did not work correctly – analog stick inputs get the wrong defaults, and inputs that are left undefined by the core are not set to the proper RARCH_UNMAPPED value.

1.8.8 fixes the issue.

RetroArch WiiU: Gamepad hotplugging support, theoretical multi-gamepad support

1.8.8 adds support for hotplugging WiiU Gamepads. Critically for users, this makes the driver no longer assume a Gamepad is present, so when it’s broken or out of battery or missing; the first Wiimote gets slot 1 instead (helpful when All Users Control Menu is off). I [quarkawesome] also made it check Gamepad channel 2 – while it’s impossible to connect a second Gamepad on a retail console, the code to do it still appears to be there. If that feature ever becomes a thing through CFWs, it’ll work here.

RetroArch P2 – New SDK/toolchain – big improvements

fjtrujy spent a lot of time adapting RetroArch PlayStation2 to the latest PS2 SDK. RetroArch PS2 is now being built with a modern version of the GCC compiler, and certain cores are already seeing massive speedups as a result.

As can be seen by the tweet, QuickNES went from 255fps with the old SDK to 429fps with the new SDK. This makes the core more than fast enough to use runahead – on a PlayStation2 of all things!

A newer C/C++ toolchain also will make it much easier to port over software to PS2, it was previously quite difficult to port C++ cores over to PS2.

fjtrujy also added Theodore to the list of cores supported.

Changelog

What you’ve read above is just a small sampling of what 1.8.8 has to offer. There might be things that we forgot to list in the changelog listed below, but here it is for your perusal regardless.

1.8.8

  • AUDIO/JACK: Fix regression introduced after 1.8.4 – would hang at startup
  • CHEEVOS: Disable hardcore when cheats are enabled
  • CHD: Return false when special track cannot be found
  • DISCORD/MATCHMAKING: Fix Discord ‘Ask To Join’ functionality
  • FILE PATH: Various file path handling optimisations
  • FONT: Fix Arabic, Chinese and Korean font rendering
  • INPUT MAPPING/REMAPPING: Restore broken ‘reset to default’ functionality with RetroPad ‘start’ button
  • INPUT MAPPING/REMAPPING: Fix ‘reset to default’ action for analog sticks and undefined core inputs
  • LIBRETRO: Add new message extension allowing for richer messages
  • LOCALIZATION: Update Arabic translation
  • LOCALIZATION: Update Chinese (Simplified) translation
  • LOCALIZATION: Update Chinese (Traditional) translation
  • LOCALIZATION: Update German translation
  • LOCALIZATION: Update Greek translation
  • LOCALIZATION: Update Spanish translation
  • LOCALIZATION: Update French translation
  • LOCALIZATION: Update Italian translation
  • LOCALIZATION: Update Japanese translation
  • LOCALIZATION: Update Korean translation
  • LOCALIZATION: Update Dutch translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Portuguese Brazilian translation
  • LOCALIZATION: Update Russian translation
  • LOCALIZATION: Update Turkish translation
  • LOCALIZATION: Update Vietnamese translation
  • LOCALIZATION: Add Slovak translation
  • MENU: Small buffer optimizations
  • MENU/THUMBNAILS/BUGFIX: Fix heap-use-after-free error
  • MENU/OZONE: Add option to sort playlists after name truncation
  • MENU/OZONE/ANDROIDTV: Default to Ozone menu driver
  • MENU/OZONE/ANDROID: Gamepad-like devices default to Ozone now (Shield Portable)
  • NETPLAY: Lower announcement rate
  • OVERLAYS: Fix memory leak when loading overlays
  • SHADER PRESETS: Improved shader preset dirs
  • TIME/DATE: Enable configuration of date seperator in clock and runtime ‘last played’ displays
  • VITA: Fix upside-down vertical games
  • UWP: Enable playlist and savefile compression by default (because of slow file I/O)
  • VIDEO/WIDGETS: Fix overlapping text when simultaneous pop-up notifications and core/shader messages are being displayed
  • WIIU: Gamepad hotplugging support
  • WIIU: Theoretical multi-gamepad support
  • X11: Fix crash in x11_display_server_get_screen_orientation
  • X11/XSHM: Allow X11/XHSM video driver to operate without SHM extension
  • X11/XSHM: Fix compatibility with X11 input driver
  • XVIDEO: Fix keyboard input initialization
  • XVIDEO/XWAYLAND: Fix XVideo support on xwayland (by supporting I420 and YZ12)

RetroArch 1.8.7 released!


RetroArch 1.8.7 has just been released.

Grab it here.

We will release a Cores Progress report soon going over all the core changes that have happened since the last report. It’s an exhaustive list, and especially the older consoles will receive a lot of new cores and improvements.

Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love with our users. This project exists because of your support and belief in us to keep going doing great things. If you’d like to show your support, consider donating to us. Check here in order to learn more. In addition to being able to support us on Patreon, there is now also the option to sponsor us on Github Sponsors! You can also help us out by buying some of our merch on our Teespring store!

Highlights

There are many things this release post will not touch upon, such as all the extra cores that have been added to the various console platforms. We’ll spend some more time on that in a future Cores Progress Report post. We’ll go over some of the other highlights instead.

Netplay bugfixes

Some major netplay regressions snuck into version 1.8.5 and has remained a problem ever since. 1.8.7 finally fixes these issues.

New desktop-style Playlist View mode for MaterialUI

1.8.7 adds a new Desktop Thumbnail View to Material UI, available when using landscape display orientations. This is similar to Ozone’s playlist view. Above is a random screenshot showing what it looks like.

Notes:

  • The status bar at the bottom can be hidden by disabling Settings > Playlists > Show Playlist Sub-Labels
  • Touching/clicking the thumbnail bar toggles the fullscreen thumbnails view

This also represents a major refactor of MaterialUI’s menu entry handling code, which will make other kinds of playlist view mode easier to implement in the future.

Finally, this fixes two small existing issues:

  • Entry dividers now fade correctly during menu transition animations (this is subtle, and I only just realised that is wasn’t working!)
  • The ‘missing thumbnail’ placeholders now fade into view, just like normal thumbnails (previously, they were always displayed instantly, which was quite jarring)

Disable ‘Use Global Core Options File’ by default

1.8.7 changes the default setting of Use Global Core Options File to OFF.

This was only set to ON by default for consistency with legacy setups. There is no material benefit to this – in fact, a global core options file has the following downsides:

More file I/O – all options have to be read/written every time content is loaded or options are saved

Difficulty in editing option values by hand – e.g. sometimes this is necessary if a particular setting causes a core to crash, and if options for all cores are bundled together then sifting through them to find the one you need becomes a chore

Obsolescence – settings for old/unused/outdated cores hang around forever, and bloat the global options file without purpose. With per-core options, it is easy to remove settings for unwanted cores

Since settings are automatically imported from the legacy global file on first run when per-core files are enabled, changing the default behaviour will not harm any existing installation.

Don’t perform unnecessary cheevos initialisation when cheevos are disabled

Before, on all platforms with cheevos support rcheevos_load() is called each time content is loaded. This means the following happens even when cheevos are disabled:

  • If the core does not require the full content path (i.e. if RetroArch passes a data buffer directly), then a copy of the content data is made (up to 64 MB in size)
  • If the content is an m3u file, the file is opened and parsed to get the extension of the first file listed inside
  • A checksum is calculated for the content file extension
  • A task is pushed
  • A mutex is locked/unlocked several times

When Cheevos (Achievements) are disabled, all these things are unnecessary work, causing increased loading times and memory usage. On platforms with low memory (i.e. consoles) the unnecessary content data duplication is potentially harmful and may cause crashes.

1.8.7 very simply adds an ‘early out’ to rcheevos_load() which prevents the above unnecessary work when cheevos are disabled.

Cheevos: option to start a session with all achievements active

Adding an option to allow the players to start a gaming session with all achievements active (even the ones they have as unlocked on RetroAchievements.org).

When cheevos_start_active = true, instead of You have X of Y achievements unlocked, the player will see a message like this:

How the option looks in XMB:

And in Ozone:

Fallback directories for shader presets

This allows us to use the Menu Config and config file directories as fallback to store shader presets when the Video Shader directory is not writable by the user, thus following the same behavior shown by the “Save shader as” menu option.

This allows users to handle their own presets without having to mess with the directory configuration on distros such as ArchLinux, where shaders (among other assets) are managed through additional packages. But it also goes a bit further and changes the order of the preset directories, searching first on the Menu Config path, then on the Video Shader path, and finally on the directory of the config file.

This would improve the portability of the configuration for Android users, because they cannot explore the default shaders directory without rooting their devices. Moreover, I think it makes more sense, as regular configuration overrides are already being stored on the Menu Config path by default.

Testing
Assuming these directory values:

  • menu_config: /home/user/.config/retroarch/config/ (non-writable for testing purposes)
  • video_shaders: /home/user/.local/share/libretro/shaders/ (non-writable)
  • retroarch.cfg: /home/user/.config/retroarch/retroarch.cfg
  • The following menu options have all been successfully tested (see appended log output).

    Save options

    Save Shader Preset As

    [WARN] Failed writing shader preset to /home/user/.config/retroarch/config/foobar.glslp.
    [WARN] Failed writing shader preset to /home/user/.local/share/libretro/shaders/foobar.glslp.
    [INFO] Saved shader preset to /home/user/.config/retroarch/foobar.glslp.

    Save Global Preset

    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/global.glslp.

    Save Core Preset

    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.

    Save Content Directory Preset
    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.

    Save Game Preset
    [WARN] Failed to create preset directory /home/user/.config/retroarch/config/presets/Snes9x/.
    [WARN] Failed to create preset directory /home/user/.local/share/libretro/shaders/presets/Snes9x/.
    [INFO] Saved shader preset to /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.

    Apply Changes option
    [WARN] Failed writing shader preset to /home/user/.config/retroarch/config/retroarch.glslp.
    [WARN] Failed writing shader preset to /home/user/.local/share/libretro/shaders/retroarch.glslp.
    [INFO] Saved shader preset to /home/user/.config/retroarch/retroarch.glslp.

    Run content log output
    Game specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.
    [INFO] [Shaders]: game-specific shader preset found.

    Folder specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.
    [INFO] [Shaders]: folder-specific shader preset found.

    Core specific shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.
    [INFO] [Shaders]: core-specific shader preset found.

    Global shader preset found on fallback directory
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/config/presets
    [INFO] [Shaders]: preset directory: /home/user/.local/share/libretro/shaders/presets
    [INFO] [Shaders]: preset directory: /home/user/.config/retroarch/presets
    [INFO] [Shaders]: Specific shader preset found at /home/user/.config/retroarch/presets/global.glslp.
    [INFO] [Shaders]: global shader preset found.

    Remove options

    Remove Global Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/global.glslp.

    Remove Core Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/Snes9x.glslp.

    Remove Content Directory Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/SNES.glslp.

    Remove Game Preset
    [INFO] Deleted shader preset from /home/user/.config/retroarch/presets/Snes9x/Legend of Zelda, The – A Link to the Past (USA).glslp.

    Some other noteworthy things

    • RetroArch WiiU now has working graphics widgets. OSD notifications are no longer just plain yellow-colored text.
    • RetroArch 3DS now has basic networking and Cheevos (RetroAchievements) support.
    • With RetroArch 1.8.7 and overclocking, NeoCD reaches fullspeed on RetroArch PSVita. Even audio playback doesn’t stutter any more

    Changelog

    What you’ve read above is just a small sampling of what 1.8.6 has to offer. There might be things that we forgot to list in the changelog listed below, but here it is for your perusal regardless.

    1.8.7

    • 3DS: Add IDs for Frodo
    • 3DS: Enable basic networking / cheevos
    • CHEEVOS/BUGFIX: Opening achievements list would crash RetroArch with badges enabled (on new games)
    • CHEEVOS: Option to start a session with all achievements active
    • CHEEVOS: Don’t perform unnecessary cheevos initialisation when cheevos are disabled. Should reduce startup times when loading content.
    • CORE OPTIONS: Disable ‘Use Global Core Options File’ by default
    • DOS/DJGPP: Add 32bit color support for cores
    • GLCORE: Switch to glcore video driver when requested by a core
    • LINUX/XDG: Use GenericName correctly in desktop entry
    • MAC/COCOA: Fix mouse cursor tracking
    • MENU/MATERIALUI: Add desktop-style playlist view mode
    • MENU/MATERIALUI/DESKTOPVIEW: When scrolling playlists, show last selected thumbnails while waiting for next entry to load
    • MENU/MATERIALUI: Limit tab switch rate when input repeat is active
    • MENU/OZONE: Fix sidebar playlist sort order when ‘Truncate Playlist Names’ is enabled
    • MENU/RGUI: Adjusted menu defaults, adjusted default scrolling speed
    • MENU/RGUI: Enable custom wallpaper when menu size is reduced at low resolutions
    • MENU/XMB: Limit tab switch rate when input repeat is active
    • NETPLAY: Fix regressions introduced in 1.8.5
    • RGUI: Add option to always stretch menu to fill the screen
    • WIIU: Enable graphics widgets

Libretro Cores Progress Report – April 2, 2020

Our last core progress report was on February 29, 2020. Below we detail the most significant changes to all the Libretro cores we and/or upstream partners maintain. We are listing changes that have happened since then.

How to update your cores in RetroArch

There are two ways to update your cores:

a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select the core from the list that you want to install.

Final Burn Neo

Description: Multi-system arcade emulator

  • Latest updates from upstream

blueMSX

Description: Home computer MSX emulator

  • Fix not smooth scroll in PAL 50Hz
  • Buildfix for libnx (Switch)
  • Buildfix for 3DS

Beetle PSX

Description: Sony PlayStation emulator

  • Added “fast PAL” hack to allow PAL games to play at NTSC framerates
  • Added Force NTSC aspect ratio
  • Vulkan: Disable adaptive smoothing by default

    This should be disabled by default like the other Vulkan-exclusive
    enhancements so as to better match stock settings

  • Hide scanline core options based on content region
  • Refactor memory card core options logic

    Get rid of confusing check_variables() memcard startup logic and
    corresponding redundant variables, and update core option
    labels/sublabels to match actual core functionality.

  • Implement aspect ratio core option (psx.correct_aspect equivalent)

    Beetle PSX implementation of “psx.correct_aspect” introduced in Mednafen
    1.24.0-UNSTABLE (no relevant code backported from upstream).
    Additionally fixes aspect ratio scaling issues when cropping overscan or
    adjusting visible scanlines. “Force 4:3” is left as a legacy option for
    users preferring the old inaccurate behavior.

  • Add option for setting core-reported FPS timing
  • WIP: increase RAM to 8MB instead of the default 2
  • Improve internal FPS detection

Vitaquake 2

Description: Quake 2 game engine core

Vitaquake 2 is now available for the first time on Emscripten.

Hatari

Description: Atari ST/STE/TT/Falcon emulator

  • Port: Ported Hatari to PS Vita

Atari 800

Description:

  • Port: Ported Atari 800 to 3DS

Dosbox core

Description: MS-DOS home computer emulator

  • Latest updates from Github

Dosbox SVN

Description: MS-DOS home computer emulator

  • Latest updates from Github
  • Make 16MB RAM default, change default cycle mode to “fixed” and “10000”

    Max and auto modes are broken on some systems.

LRMAME

Description: Multi-system arcade emulator

  • Updated to version 0.219

ECWolf

Description: Wolfenstein 3D game engine core

  • Latest updates (TODO/FIXME)

Flycast

Description: Sega Dreamcast emulator

  • fix alignment issues reported by ubsan on x64
  • Fix chd lzma and zlib buffers alignment
  • Fix rec/x64 block check alignment
  • Fix ChannelEx struct alignment
  • nvmem: generate console ID at startup. rec-x64: Call stack alignment

    Generate console ID in dc_nvmem.bin if blank. Used by chuchu rocket
    login.
    Align stack to 16-byte when calling function from x64 rec

  • (NAOMI) add sfz3ugd button labels
  • (NAOMI) Alien Front Naomi needs DIV matching disabled
  • (NAOMI) VMU support (vonot, sf3zu). Fix otrigger inputs.
  • input: only use R2/L2 for trigger input even with digital triggers
  • renderer: generate mipmaps for custom textures
  • custom texture: stop loader thread before loading state
  • renderer: decrease MipmapD bias – fixes street lights in Sonic Adventure 1
  • gdrom: don’t resume CDDA if not playing. stop if cur > end – implement ATA_IDENTIFY
  • Protect RAM and VRAM when VMEM is disabled
  • (Switch) Initial Port
  • ta: defer index building and strip merging, filter out infinite vertices
  • pvr: reserve more opaque polys. Don’t crash on TA overrun
  • vmem: unprotect vram when releasing memory if NO_VMEM
  • (Switch) Iterate each Page for Permission set
  • Use -O2 for YUV_Block8x8 due to UB
  • pvr: don’t reset tile clipping value on each frame – Fixes Irides – master of blocks
  • support multi-session cue/bin. mipmap D-adjust only to increase LoD
  • limit maple schedule time
  • allow VRAM 8-bit reads
  • gl: use common ReadFramebuffer() func
  • sort triangles even with 1 polygon – fixes missing Naomi boot logo and vtennis2 black frame during replay
  • fix crash when TR poly count is 0

ChaiLove

  • Port: Ported ChaiLove core to 3DS
  • Port: Ported ChaiLove core to Android

HBMAME

Description: Emulator of homebrew and hacked games for arcade hardware

  • New core

VICE

Description: Commodore 64 home computer emulator

  • Split “Paddles” joyport type to first two RetroPads:
    Player1 vertical axis = Player2 horizontal axis
    Player1 2nd button = Player2 1st button
    Add speed modifier hotkeys (slower+faster) for paddles/mouse

    Because “Paddles” is in fact 2 controllers in one joyport, and currently it is read like a mouse with 2 axis and 2 buttons, this is not convenient for 2 player games, like Panic Analogue, which use paddles as 2 separate entities with one axis and one button.

  • Fixes for JiffyDOS, Disk Control & Statusbar –

    To evade JiffyDOS incompatibilities with CRTs, PRGs & TAPs, the allowance method is changed from whitelist to blacklist.
    Also M3U playlists of D64 images will allow, and playlists of TAP images will not
    Fixed not being able to insert disks at all when starting without content
    Drive type defaults to 1541, as in inserting D81s will not work for now, because drive type autodetection happens only on autostart
    Finetuned statusbar

  • Turbofire & JiffyDOS fix –
    Minor fixes:

    Turbofire pulse was off (value 2 was actually 4)
    No reason to allow JiffyDOS core option with anything other than D64 & D81, or is there..?

  • Remove Nuklear GUI, Add VKBD touch control –
    Replaced bloaty Nuklear with the lightweight VKBD from PUAE

    No drawbacks, only benefits: Touch control, better performance, simpler maintenance

  • Port: Fixed VICE core Android build
  • Port: Ported VICE core to 3DS
  • Port: Ported VICE core to Emscripten
  • Add support for disk control interface v1 (disk display labels)
  • x64: Exclude vicii-clock-stretch.c – vicii-clock-stretch.c is not really used on x64, it’s only for x128
  • Disable cpmcart on x128 –
    Both x128 and cpmcart have z80 cpu and both have z80_regs symbols.
    On platforms other than emscripten those symbols end up being aliased
    due to “-fcommon” behaviour. This would lead to very weird results if they
    would ever be used together.

    On real hw cpmcart is unnecessarry due to integrated CP/M mode

    In the emulator cpmcart is runtime-enable only on x64 and x64sc but
    the relevant code is still compiled-in.

    So just remove cpmcart.c and #ifndef to avoid references

  • Core option for disabling autostart joined with autostart warp
  • Statusbar improvements, VKBD transparency core option

GME

Description: Game Music Emulator core

  • Port: Ported GME core to PSL1GHT (PS3)
  • Port: Ported GME core to 3DS

prBoom

Description: Doom 1/2 game engine core

  • retro_run: Don’t attempt to run domm lop after exit – This fixes crash on exit on 3DS
  • Port: Added PSL1GHT port (PS3)

MelonDS

Description: Nintendo DS emulator

  • (Switch) Latest updates

P-UAE

Description: Commodore Amiga emulator

  • VKBD updates, CD turbo speed backport
  • WHDLoad changes (button overrides)
  • VKBD touch control –
    Only tested with Windows and mouse, since RETRO_DEVICE_POINTER also reacts with it. Hence also disabled real mouse control while VKBD is visible.
  • Port: Ported P-UAE to PSVita
  • Minor save state improvements
  • Extended ZIP support

ScummVM

  • Update to ScummVM 2.1.1
  • Allow launching games directly from game files

Mr. Boom

Description:

  • Port: Ported Mr. Boom to 3DS
  • Port: Ported Mr. Boom to Emscripten
  • Port: Ported Mr. Boom to PSP
  • Port: Ported Mr. Boom to PS Vita
  • Port: Ported Mr. Boom to Apple tvOS
  • Fix unaligned casts

FCEUmm

Description: NES emulator core

  • Fix unable to load some unif carts
  • M274 update
  • Add 42-in-80000 multicart (m380)
  • Add mapper 389 (Caltron 9-in-1)
  • BMCFK23C – update
  • Fix default palette
  • Add Mortal Kombat Trilogy – 8 People (M1274) (Ch) [!].nes to ines-cor…
  • Merge unif board BMC-Super24in1SC03 to BMC-FK23C
  • M176: Minor tweak to chr mixed ram/rom logic check and others
  • Simplify dipswitch options for Nintendo World Championships 1990 cart
  • MMC3: Make sure to free any allocated memory when using MMC3 as an external module
  • Misc mapper updates
  • m269: Move chr unscrambling to mapper init
  • Unif: Show raw values for prg/chr rom size in logs
  • Remove unneeded code in BMC-Super24in1SC03
  • Remove duplicate code in bmc-fk23c
  • Rewrite BMC-FK23C/A (m176) based on updated notes and testing
  • Fix incompatible pointer type warning
  • Add 168-in-1 New Contra Function 16 to ines-correct.h
  • unif.c: Align board map struct
  • ines.c: Cleanup mapper struct and iNESLoad()
  • Fix unterminated savestate struct
  • Update mapper 79
  • vrc2and4: Fix mapper 22 games not working (regression) and refactoring
  • Update ines-correct.h

The Powder Toy

Description: Game engine core

  • Port: Ported The Powder Toy to 3DS

PocketCDG

Description: MP3 Karaoke audio player

  • Eliminate too verbose output – On 3DS stderr is printed on lower screen and is slow. This messes up the
    performance completely.

Picodrive

Description: Sega Megadrive/Genesis/32X/CD emulator

  • Add option to change sound quality – Even with the fast renderer (#116), the framerate on the PSP slows down at some points in some games. Reducing the sound rate can help increase the framerate in these cases.

    It’s not ideal but it’s better than frame skipping. [bmaupin]

VBA-M

Description: Game Boy Advance emulator

  • Fix Save Failed error for Super Monkey Ball Jr.

gpSP

Description: Game Boy Advance emulator

  • [3DS] Fix dynarec prefetch aborts
  • Add automatic frame skipping

Frodo

Description: Commodore 64 emulator

  • Support running without ROM

PX68K

Description: Sharp X68000 Emulator

  • Prevent simultaneous up+down / left+right button presses

Lutro

Lutro now runs on the 3DS.

Snake runs at 60 fps
Platformer runs at 20 fps

  • (3DS) Fix build
  • (Switch) Fix build

ECWolf Wolfenstein 3D Libretro core WIP available today on Windows/Mac/Linux/Android!

ECWolf Libretro running on RetroArch at high resolution and widescreen enabled

A new Libretro core is being made available for RetroArch and other Libretro frontends today! ECWolf is a Wolfenstein 3D source port game engine. This port is courtesy of phcoder.

ECWolf can run the following content:

  • Wolfenstein 3D
  • Spear of Destiny
  • Super 3D Noah’s Ark

It will be available today for the following platforms:

  • Linux
  • Windows
  • macOS
  • Android

It will probably be released over time on other platforms.

How to get it

There are two ways to install and/or update the ECWolf core:

a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select ‘Wolfenstein 3D (ECWolf)’ from the list. It will then download and install this core.

How to play it with the shareware version

If you don’t have the full registered version’s data files to play with, you can still get the shareware version. We provide this in an easily obtainable way to you, so let’s go through the steps. Start up RetroArch first. Then do the following:

1. Go to Online Updater, ‘Content Downloader’.

2. Go to ‘Wolfenstein’, and download ‘Wolfenstein 3D (Shareware).zip’.

3. Now go back to the Main Menu. Select ‘Load Content’, and select the ‘Downloads’ directory. Select ‘Wolfenstein 3D (Shareware)’, and then select ‘WOLF3D.EXE’. Start this with the ECWolf core when asked about it.

Current status


This port is currently incomplete but already has a lot of functionality.

NOTE: You need the file ‘ecwolf.pk3’ inside either your System directory, or the same directory as your content. You can get this file from within RetroArch through the Content Downloader (see the previous paragraph, but instead of downloading ‘Wolfenstein 3D (Shareware).zip’, download ‘ecwolf.pk3’ instead.

Differences with standalone port

* Menus are removed and it goes straight to episode or skill selection
* All options are moved to libretro options
* Full screen control is also moved to normal libretro
* Load and save is moved to libretro facilities as well
* Quit is removed from the core and is to be handled in libretro way as well
* Invunerability cheat is moved to libretro options
* Gamma control is not supported. Use libretro filters.
* Currently has variable framerate support up to 360fps. Original game ran at 70fps.

Missing features

* Only IMF music is supported
* “Read This!” is missing
* “High scores” are also missing
* MLI cheat is missing
* Demo recording and playback are missing. Note: normal libretro demos are still there.
* F1 help is missing
* ID easter egg is missing
* Mouse and keyboard support, including corresponding config, is missing.
Only RetroPad currently works. You can control using retropad mappings
* ‘0’-‘9’ weapon selection is missing
* Buttons ‘zoom’, ‘reload’ and ‘altattack’ are missing. They’re used only in mods.
* Buttons ‘Strafe modifier’ and ‘status bar’ are missing
* Netplay is missing
* Difficulty confirmation screen is missing
* Resizing screen with +/- is not supported. Use options
* Commander Keen easter egg is missing
* Menu movement animation is missing
* Robert’s jukebox is missing

Known glitches

* Rewinding through intermission or death fizzling results in glitched screen
* Sometimes after loading a large asset, FPS drops. If that happens go to RetroArch menu for couple of seconds and then back
* The sound is currently a bit glitchy/crackly when running below 70fps (the game’s original framerate). We have found that there are far less sound issues at 70Hz and above (such as 120Hz).
* Frame pacing and frame time deviations can probably still be further improved.