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


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.


Description: Atari ST/STE/TT/Falcon emulator

  • Port: Ported Hatari to PS Vita

Atari 800


  • 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.


Description: Multi-system arcade emulator

  • Updated to version 0.219


Description: Wolfenstein 3D game engine core

  • Latest updates (TODO/FIXME)


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
    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


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


Description: Emulator of homebrew and hacked games for arcade hardware

  • New core


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


Description: Game Music Emulator core

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


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)


Description: Nintendo DS emulator

  • (Switch) Latest updates


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


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

Mr. Boom


  • 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


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


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.


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]


Description: Game Boy Advance emulator

  • Fix Save Failed error for Super Monkey Ball Jr.


Description: Game Boy Advance emulator

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


Description: Commodore 64 emulator

  • Support running without ROM


Description: Sharp X68000 Emulator

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


Lutro now runs on the 3DS.

Snake runs at 60 fps
Platformer runs at 20 fps

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

RetroArch 1.8.5 released!

RetroArch 1.8.5 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!

What’s changed?

New default menu – Ozone

Based on the results of a popular vote poll we held on Twitter, Ozone is now the default menu driver moving forward for RetroArch. If you still would like to use the previous menu (XMB), you can still do that – just go to Settings, Drivers, change Menu to ‘xmb’, and restart RetroArch.

There are also some important changes made to the scaling of the Ozone menu. It now scales based on DPI, and you are also able to configure the scaling to whatever suits your preferences. The widgets/notifications are now also scaled appropriately.

Do note that Lakka will stay with the XMB menu as the default menu, but you will definitely be able to switch to Ozone there as an optional feature.

There have also been plenty of important Quality of life improvements made to the menu. To learn more about this, see the section ‘Changelog’.

Important bugfix/crash fixes

An important bug has been fixed which would prevent RetroArch from launching on 64-bit x86 Chromebook hardware.

The threaded video driver on Linux was previously very unstable with OpenGL. We have managed to fix the majority of these issues.



  • 3DS: Keep the bottom screen hidden on sleep/wakeup. When the 3DS wakes back up after being closed, the bottom screen needs to be reinitialized. Adding the condition here will cause the screen to be turned on or off based on the state of ctr_bottom_screen_enabled, as you’d expect
  • ANDROID/CHROMEBOOK/CRASH: Fix Chromebook crashes (on x86 x64) when touching the screen
  • BUGFIX: Prevent double input when using ‘return’ key (hardware) to close on-screen keyboard
  • BUGFIX: Fix mouse capture hotkey not working
  • BUGFIX: Avoid overflow when calculating multiplying performance counter
  • BUGFIX: Retroarch overlay displaying “Game remap file loaded.” on the overlay instead of “Core remap file loaded.” when only a core remap file is present
  • CHEEVOS/BUGFIX: Achievement triggers could cause Retroarch to Crash
  • CHEEVOS: Don’t block Sameboy core because it only exposes some memory
  • CHEEVOS: Support for extended Sega CD memory
  • CHEEVOS: Show RetroAchievements Hash in content information list
  • CHEEVOS: If the core says it’s exposing SYSTEM_RAM, give it the benefit of the doubt
  • CHEEVOS: RetroAchievements rich presence for website/Discord
  • CHEEVOS: Reset token when username or password changes
  • CHEEVOS: Display measured progress on locked achievements
  • CHEEVOS: Queue multiple popups
  • CHEEVOS: Add delay retries to leaderboard submits
  • CHEEVOS: Prevent buffer overflow when encountering an unknown macro
  • CORE UPDATER: Prevent hang when fetching core list if HTTP transfer fails
  • DISK CONTROL: Add disk labels to ‘disk inserted’ notifications
  • EMSCRIPTEN: Recreate input event listeners properly
  • FFMPEG CORE: Fix crash on seeking when using HW decoding in some cases
  • LIBRETRO: Add disk control interface API extension
  • LINUX: Avoid possible crash when running retroarch at startup
  • LINUX/GLX: Fix threaded video crashes/instability because of GLX OML sync callbacks
  • LOCALIZATION: Update French translation
  • LOCALIZATION: Update Korean translation
  • LOCALIZATION: Update Polish translation
  • LOCALIZATION: Update Spanish translation
  • LOCALIZATION: Update Portuguese Brazilian translation
  • MENU: Add Menu Scroll Acceleration option
  • MENU: Automatically select currently checked item when opening drop-down lists
  • MENU: Fix smooth (vertical) line ticker scroll speed
  • MENU: Don’t flush on override/remap messages
  • MENU/DATETIME: Adds some new timedate styles that follow the DD/MM/YYYY format, found in several European countries
  • MENU/DATETIME: Modifies the existing translation files in order to accommodate the new options that are now available
  • MENU/DATETIME: Reorders the timedate view options based on a decreasing order of the quantity of information displayed, so that they are more convenient to switch around and easily categorized
  • MENU/BUGFIX: Fix bug – if you were in XMB and you would set menu driver to RGUI, you could no longer go to the left or right tab
  • MENU/MATERIALUI: Add option to remove navigation bar
  • MENU/OZONE: Add DPI-based scaling
  • MENU/OZONE: Add rudimentary pointer support
  • MENU/OZONE: Add ‘Nord’ and ‘Gruvbox Dark’ themes
  • MENU/OZONE/POINTER: Pointer can be used to switch between sidebar and entries list
  • MENU/OZONE/POINTER: Pointer can be used to select sidebar and entries list items
  • MENU/OZONE/POINTER: Both sidebar and entries list can be scrolled by dragging
  • MENU/OZONE/POINTER: Clicking/pressing the header or footer produces a ‘cancel’ action
  • MENU/OZONE/POINTER: Cursor focus follows mouse pointer from sidebar to entries list (and vice versa)
  • MENU/OZONE/POINTER: In entries list, item under cursor is automatically selected (with some fudging to ensure this doesn’t break mouse wheel scrolling)
  • MENU/OZONE/POINTER: In sidebar, item under cursor is not automatically selected (this is too jarring)
  • MENU/RGUI: Add ‘Flux’ theme
  • MENU/XMB: New color themes ‘Cube Purple’, ‘Family Red’, etc
  • NETPLAY/MENU/BUGFIX: Fix Netplay Stateless Mode doesn’t save. Affects other netplay settings which can be overridden by commandline option
  • ODROID GO ADVANCE: Rotation support
  • NETPLAY/ROOMS/BUGFIX: Prevent out-of-bounds array indexing when displaying/selecting netplay rooms in menus
  • SCANNER: Add ‘Arcade DAT Filter’ Option
  • SCANNER: Add scanning Korea and Asia PS1 discs
  • SCANNER: Add support for scanning PSP Korean
  • VIDEO: Set hardware ‘Bilinear filtering’ off by default
  • VIDEO/WIDGETS: Widgets are now menu-independent
  • VIDEO/WIDGETS: Allow notifications to use full screen width when not displaying menu
  • VIDEO/WIDGETS: DPI-based scaling
  • VIDEO/WIDGETS: Fix volume widget scaling
  • VIDEO/WIDGETS: Add independent widget scale override settings for fullscreen/windowed modes
  • VIDEO/WIDGETS/BUGFIX: Prevent improper display of (old style) OSD text when widgets are enabled
  • VIDEO/WIDGETS/THREADED/BUGFIX: Fix issue – corruption of menu widgets when running some cores (e.g. VICE) with threaded video enabled
  • WIFI/CONNMANCTL: Display more characters from SSID

Final Burn Neo Progress Report

A lot happened since my last progress report, so it might be a good time to keep you updated about FBNeo progress.

NES/FDS support

I see most of you saying “Isn’t FBNeo an arcade emulator ?”. Well, not exactly, we do some console emulation too, i already mentioned it in my last post. You might think there is nothing exciting about having a new NES/FDS emulator, but here is the deal : it’s probably one of the best ones available, we have yet to find glitches, even on games known for glitching on pretty much every other NES/FDS emulators. The downside is that, since it’s accuracy oriented, it won’t run that well on low-end devices. The emulator was written from scratch, mainly by reading nesdev, dink worked on it for 7 months, getting tons of help/testing/code/imagery from team 🙂

If you try to find another emulator that will render the following screen without any kind of glitch, you might be in a pinch, codemasters games are generally the bane of nes emulation.

As usual, usage of specific romsets is required (dat files are available at the usual place), it’s mostly based on No-Intro dumps. If your favorite NES/FDS game (even hacks or unofficial translations) is missing, you can request support on our forum. Currently we support around 1300 games.

New arcade games

I’ll probably forget some :

  • Rabbit : a fighting game from 1997, one of the only Electronic Arts arcade games
  • Express Raider : a beat’em’up from 1987
  • Super Dodge Ball : a dodgeball game from 1987
  • Tom Tom Magic : a flipper game from 1997
  • Thief : a maze game from 1982
  • Shark Attack : a game where you are a great white shark who attacks divers, from 1981
  • NATO Defense : another maze game from 1982
  • Victory : a shooter game where you defend an island, from 1982
  • Sega System 24 : a Sega arcade hardware from early 90s, you can see the list of games here
  • Akka Arrh : a space shooter from 1982
  • Alien Rescue : a homebrew from, running on pacman hardware
  • Magic Purple : a platform game from 1996
  • King of Boxer : a boxing game from 1985
  • Dead Angle : a shooter game from 1988
  • Buggy Challenge : a racing game from 1985
  • Denjin Makai : a beat’em’up from 1995
  • Godzilla : a fighting game from 1993
  • Heated Barrel : a run’n’gun from 1992
  • Legionnaire : a beat’em’up from 1992
  • SD Gundam Sangokushi Rainbow Tairiku Senki : a run’n’gun from 1993
  • Pitpat Puzzle : a puzzle game from 1997
  • Berzerk : a maze/shooter game from 1980
  • Frenzy : follow up of berzerk, from 1982

Here is a screenshot of rabbit

New hacks

  • Final Fight 30th Anniversary Edition : an advanced hack of Final Fight, among other features/improvements it supports 3 players
  • Otto Project PZ : do you know about crazy otto ? if not you might want to read this. This hack is an attempt to reproduce this game which was a prototype of ms pacman.
  • Lots and lots of hacks of many popular games and systems, including neogeo, cps, donkey kong and mortal kombat

Here is a screenshot of Otto Project PZ

Improvements and fixes

There are hundreds of them so i’ll just mention the latest improvement i did : i added a Hires 1080p mode to every vector games, you can enable it through dipswitches (in core options)

You can find more about what was fixed by looking at our issue tracker

Improvements and fixes specific to the libretro port

  • fixed a crash that would happen when switching neogeo bios while using readahead
  • prevent user from using incompatible neogeo bios with specific games
  • improved default mapping for many games, including the usage of analog triggers as default to accelerate and brake in many racing games
  • added an alternative way to load subsystems, more friendly with devices using static linking like android (more details in my FAQ)
  • improved & sanitized core options, one thing worth mentioning is the CPU clock feature that got fixed (previously the values displayed were different from what was actually applied) and now allows to underclock too (which can be useful to reproduce slowdowns from original hardware, or to lower hardware requirements)