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.
Changelog
1.8.5
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 RA.org 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
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
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
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)
With great sorrow we announce that Emily (AKA cuttlefish), a member of the Libretro contributor community, has passed away. She was also known under other aliases such as meepingsnesroms. She was responsible for the following projects:
We extend our condolences to the family and wish them the best through these hard and difficult times. Make sure to visit the Cuttlefish Memorial Page. We have also created a memorial channel on our Discord server called #emilymemorial.
we need to do some crucial server management, and as a result, you might experience certain services being unavailable during the period of March 7 to March 10.
Services affected include:
Netplay lobby system
New core updates on the Online Updater service
New nightly RetroArch builds during this period
We ask for your understanding and patience, and we will inform you when things are fully operational again.
Our last core progress report was on February 5, 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.
Vitaquake 2
Description: Quake 2 game engine core
Vitaquake 2 is now available for the first time on 3DS and Android. It uses the software renderer on those platforms for now.
Bugfix: Analog input descriptors added
Bugfix: Actually exit on Sys_Quit and Sys_Error. They intend to exit. Not doing so only result in weird crashes later
Bugfix: Fix crash in soft renderer when going underwater on increased resolution
Port: Ported vitaQuake 2 core to 3DS (software renderer only).
Port: Ported vitaQuake 2 core to Android (software renderer only).
Softrend: Fix crash in soft renderer when going underwater on increased resolution
ECWolf
You’ve been able to read about the new core ECWolf in our separate blog article. Further developments since then have been a 3DS port and analog deadzone options.
Analog deadzone options
Port: Ported ECWolf to 3DS
TIC-80
Description: TIC-80 emulator core
Updated to latest version
Flycast
Description: Sega Dreamcast emulator
We reported before in two separate articles this month on the mipmapping accuracy improvements. There have been other developments since the last progress report –
x64 DSP JIT support – audio DSP enabled should now have far less overhead than before
users now cannot force enable div matching [flyinghead]
disable div matching for Donald Duck Goin Quackers [flyinghead]
(NAOMI) parent rom name was incorrect for GDROMs [flyinghead]
(NAOMI) add ringout eeprom + some crcs [barbudreadmon]
Picodrive
The fast tile-based renderer (a new addition) can give a very welcome increase in performance. Note that only the ‘accurate’ renderer will display any graphics with 32X-based games, so only use tile-based rendering for now with regular Genesis/Mega Drive games.
Added an option to change the renderer from the default “accurate” line-based renderer to an alternative “fast” tile-based renderer, which may improve performance on slower devices such as the PSP. [bmaupin]
gpSP
Fix periodic ram_translation_cache crashes
Add manual frame skipping
OpenLara
Fix Android compilation [phcoder]
Despite what the comments say Openlara uses
functions available only in glesv3. Hence we need to
force GLES3 and not GLES2. Then we need to fix compile error.
It was due to requiring too low version of Android before it
had GLESv3
prBoom
We talked about the serialization support before in prBoom. New improvements since then is that the wiggle fix is finally fixed now for ARM-based platforms like Android and iOS. Previously you’d need to have Wiggle Fix turned off if you didn’t want the floors and ceilings to look glitchy.
Implemented serialization support. Rewinding and runahead has been tested.
Use fixed point in precise flat calculation. This should work well now also in ARM and other platforms
Fix double free on failed load
DOSbox SVN/Dosbox Core
Latest SVN updates
Final Burn Neo
Latest updates from upstream
Stella
Latest updates from upstream
PCSX ReARMed
The biggest improvement since the last progress report [and the articles that followed it] definitely has to be runahead second instance support.
[3DS] Tweak compile-time options to increase performance [justinweiss]
Adjusting a few things in the makefile to get some easy performance boosts.
Did some measurement with Crash Bandicoot idling on the beach he starts on in Crash 1. All of these together brought it from ~44.5 fps to ~50.9.
Tried all four UNAI options, this was the fastest by ~0.5fps.
[3DS] Fix dynarec crashes [justinweiss]
After the dynarec writes new instructions, it has to flush the
instruction and data caches. Some of these flush operations are
privileged on the 3DS, so the clear cache functions have to run
through svcBackdoor. The Nintendo implementation (and CFW
reimplementation) of svcBackdoor has a problem where interrupts and
context switches will cause crashes.
Even though we can disable interrupts in the flush function, there’s
still a window of time between svcBackdoor being called and the
function being run where an interrupt will corrupt the stack.
Luma3DS implemements a svcCustomBackdoor call we can use that also
runs a function in supervisor mode, but uses an implementation that
avoids this problem.
Fix second instance runahead [ZachCook]
Beetle PSX
Some crucial accuracy improvements to the hardware renderers means that Gran Turismo 2 is finally glitch-free with both OpenGL and Vulkan. Before, the HUD and other parts of the screen would flicker during gameplay.
Separate lightrec PGXP and non-PGXP rw_func [ZachCook] –
When tested with soul blade this increases dynarec performance by ~1%
for non-PGXP, and ~2% for PGXP as it always uses rw_func due to the fast-path
being disabled for it.
Add frame duping support to RSX Vulkan [ggdrt]
OpenGL: Eliminate redundant glClear call [ggdrt]
Add accurate timing macros and report noninterlaced by default
Vulkan: Delay VRAM framebuffer size calculation to latest possible moment in
Vulkan renderer; don’t rely on external timing of UpdateDisplayMode.
Add GP1(05h) command to rsx and parallel-psx [ggdrt]
Vulkan: Add Display VRAM core option support [ggdrt]
parallel-psx/Vulkan: Decouple MDEC and SSAA filter logic [ggdrt]
Limit image_offset range to prevent segfault [ggdrt] –
Also update image_offset formula to better match core option info
Update rsx hook sequence in GPU reset and GPU restore state [ggdrt] –
Fixes hardware renderer glitch where a portion of the BIOS PS logo would
briefly flicker into the bottom right corner of the viewport after the
normal BIOS animation.
Make scanline core options dynamic for sw renderer [ggdrt]
Desmume 2015
Blank screen gap for non-hybrid modes [Exalm]
Account for screen gap for touch input in top/bottom mode [Exalm]
mGBA
3DS: Fix build
Update to mgba 0.8.1
Quasi88
Fix -mem_wait audio distortion
Occurred when running in mode V1S
due to front-loading DMA waits on
each vertical sync.
ParaLLEl N64
We’ve run several stories on ParaLLEl N64 this month already. In addition to the changes listed here, an Angrylion VI performance enhancement has been implemented which makes the VI filtered modes have less overhead than before.
Fixed VI performance issue caused by false sharing
As pointed out by Themaister, the rseed array in vi.c suffers from false sharing, since its element size is smaller than the cache line size.
This improves VI performance by no less than 30%. [Themaister/ata4]
P-UAE
Description: Commodore Amiga emulator
This core is fast becoming one of the best ways to emulate the Amiga courtesy of sonninos.
SuperHires video resolution & glue organizing [sonninnos]
ScummVM
Update to ScummVM 2.1.1
Opera (formerly 4DO)
Description: 3DO emulator core
Genesis Plus GX
Description: Sega Genesis/Mega Drive/Master System/Game Gear emulator
Android: Add OPLL sound core
FCEUmm
Description: NES emulator core
NOTE: All changes courtesy of negativeexponent (unless expressly attributed to somebody else)
Do overscan cropping after the ntsc frame is generated. this allows
removing left and right screen artifacts when using horizontal crop like
what you would see happen in TV when adjusting horizontal size (HSIZE).
add core option that implements NTSC scanline effects. This requires
framebuffer to double the height, so a define is added (NTSC_SCANLINES at
the top of libretro.c) to disable this on some low-memory platforms or just disable NTSC filters altogether.
Mapper 235 update support for 1MB/2MB carts and cart with unrom block
CNROM: Minor database cleanup
Use existing crc32 database for Bingo 75 (Asia) (Unl), this moves checksum check on mapper side instead of unif overrides.
m269: Deallocate memory on exit
Update mapper 15 based on latest notes
– bit 7 acts as A13 only on mode 2
– prg mask now 0x3F of data latche etc.
– unrolled loops
Merge mappers 225 and 255 since they are basically the same
re-implement extra RAM as its required for some multicarts
Fix colour emphasis support for NTSC filter & raw palette + nes decoder shader
– this implementation is based on a more accurate colour emphasis from fceux.
– The raw palette + nes decoder shader was kinda incomplete since the implementation was based on
a per-frame basis which means that the emphasis bits were read once and applied to the whole frame. This
means that some games that uses a per pixel or per scanline emphasis would not appear correct. The more
accurate implementation reads emphasis bits from bits 5-7 of PPU[1] and saves this info in a separate frame.
– The same implementation is also used to fix emphasis for the ntsc filter.
Fix palette for vs. system
use fixed value for ntsc width and when its cropped
Fix colour emphasis when using palette presets –
This is an issue i found when implementing the NTSC filters. Currently when using palette presets,
no clour emphasis is seen on games that supports it. This is cause because the palette table is
fille with the same 64*3 colour info.
Using custom palette (palette file) and default both creates the emphasis as expected. So internally,
fceumm is able to support such feature.
The fix is to generate the base palette (64 * 3 with each triplet representing rgb colour), and then
send this internally using FCEUI_SetPaletteArray() to fill the colour table with emphasis instead.
(3DS) Disable NTSC filter [jdgleaver]
(Android) Add NES NTSC filters
Implement blargg NTSC filters –
– this implements blargg’s nes ntsc filters using core options
– an optional height doubling is also added but disabled for performance reasons (might make that optional as a core option)
– since PS2 and PSP have their own blitter branches, these platforms do not have the ntsc filters since i dont have the means to test on those systems.
– compile with HAVE_NTSC=1 to have these options, HAVE_NTSC=0 disabled filter including core options
– HAVE_NTSC=1 is set as default, other than PS2 and PSP as stated above.
Add mapper 218
m227: Implement chr-ram write protect
Add UNIF BMC-WX-KB4K (m134) to supported boards
Update implementation of some unlicensed mappers
Update mapper 91
Add mappers 111, 356, 269, 353
backport mapper 111 (Cheapocabra or GTROM) from fceux
Add BMC-SB-5013 (m359) and UNL-82112C (m540)
Add mapper 543, 550, 516
MMC1: Better work ram and battery saves support for size greater than 8K
Add mappers 382, 534, 539
Update mapper 150/243 (unif UNL-Sachen-74LS374N)
Update mapper 45 –
– fix starting register value
– fix memory write range to 0x6000-0xffff
Add mappers 360, 533
Minimize core options shown by default
updates to region-related settings and overclocking, UNIF now sets ines mapper if available (used for overrides etc)
Unif: Pass iNES mapper number to cart struct when available
Gambatte
Description: Game Boy/Game Boy Color emulator
Add optional LCD ghosting effect –
This backports the LCD ghosting effects that were recently added to mGBA
It replaces the existing Mix Frames core option with Interframe Blending. The old Accurate and Fast frame mixing settings have been renamed to Simple (Accurate) and Simple (Fast) – these perform the same 50:50 mix of the current and previous frames as before, required to achieve correct rendering of games that rely on LCD ghosting for transparency effects.
In addition to these settings, there are now LCD Ghosting (Accurate) and LCD Ghosting (Fast) options. The former recreates the LCD response effect of RetroArch’s Gameboy Shader. The latter is similar, but uses a single accumulation buffer – which is more efficient, but lacks the subtlety of the shader implementation.
Here are some stats showing the typical increase in performance overheads when using the various methods:
Do not add pointers to memory map if they are not available –
skips sram when no sram is available
skips extra RAM banks if not running in GBC mode
tvOS support
Pokemini
Safely power off console before closing content [jdgleaver] –
Thanks to the efforts of @Sanaki, it was discovered that certain games do not correctly update their EEPROM save data unless the virtual Pokemon Mini console is powered off before closing content. Affected titles include Pokemon Pinball Mini and Pokemon Race Mini – up until now, it was generally thought that saving was completely broken in these games.
This PR adds an automatic power off event to retro_unload_game(). This ensures saves are always written without any special intervention from the user.
The issue has existed forever, and I believe it affects the standalone version of PokeMini as well – great to finally get this fixed!
EasyRPG
Fix Android build
Kronos
Description: Sega Saturn emulator based on Yabause
Latest updates by F-Care
VICE
Description: Commodore 64 home computer emulator
Statusbar stays at the screen border + new position options: Top or Bottom
RetroPad face button options: Rotate, Jump, Rotate+Jump
Mouse type core option, usable with D-Pad + left analog + mouse, covered at least:
Arkanoid (Paddles port 1)
Arkanoid 2 (1351 port 1)
Maniac Mansion Mercury (1351 port 2)
Speeds are vastly different in Arkanoid & Maniac Mansion, so it was impossible to have both cases perfect with default options. VICE allows only one potentiometer device at a time, therefore it applies to the current RetroPad port. Pretty much everything else is familiar stuff from the PUAE core.
Bonus:
Defaulted ReSID sampling to “Fast” on low-power platforms
Minor reorganizing
Mouse support [sonninnos]
RetroPad face button options, More statusbar options [sonninnos]
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful. We are using cookies to give you the best experience on our website. We collect users data for personalisation of ads, and also Google will use your personal data when you give consent on our site. Check this link to Google’s Privacy & Terms site.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
3rd Party Cookies
This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.
Keeping this cookie enabled helps us to improve our website.
Please enable Strictly Necessary Cookies first so that we can save your preferences!