Gambatte Progress Report

Written by J.D. G. Leaver

Gambatte Updates

Palette Additions

The Gambatte core has long been able to colourise greyscale Game Boy games using the default built-in palettes of the Game Boy Color:

Thanks to the assimilation of original work by [TRIFORCE89](https://github.com/TRIFORCE89/Gambatte-Core), we now also have access to the 32 default palettes of the Super Game Boy:

To complete the set, three additional palettes have been created to simulate the display characteristics of the various Game Boy hardware revisions: DMG, Pocket and Light. You want pea soup green? You got it!

All available palettes may be cycled via the usual ‘Internal Palette’ core option. Better still, the automatic Game Boy colorisation setting has been updated to automagically select the ‘best’ (most colourful/appropriate) palette for each game, using an internal database with the following order of preference:

1. Game-specific Super Game Boy palette, if defined and more colorful than game-specific Game Boy Color palette.

2. Game-specific Game Boy Color palette, if defined.

3. Game-specific Super Game Boy palette, if defined.

4. Palette specified by ‘Internal Palette’ core option.

(Of course, automatic selection may be overridden to force the use of either Game Boy Color or Super Game Boy palettes, or any specific palette that is desired)

Colour Correction Improvements

Game Boy Color games are designed to be viewed on a dim, low contrast LCD panel. Transfer these games to a modern high quality display and a proliferation of over-saturated colours will assault your eyeballs.

The Gambatte core has a long standing ‘Color correction’ option which tries to improve the generated image. This works after a fashion, but it tends to make everything too dark and has some unpleasant colour mangling side effects (e.g. it give Pikachu an orange perma-tan). Fortunately, the mighty Pokefan531 (https://forums.libretro.com/t/real-gba-and-ds-phat-colors/1540/159) provides a much better solution via an external gbc-color shader (https://github.com/libretro/glsl-shaders/blob/master/handheld/gbc-color.glslp). Now this same functionality has been added to the core itself.

Setting the new ‘Color correction mode’ core option to ‘accurate’ enables the Pokefan531 ‘gold standard’ colour correction method. The old Gambatte default can still be used by setting the mode to ‘fast’ (this slightly reduces CPU load and so may be useful on garbage-tier hardware – although the ‘accurate’ method is confirmed to run at full speed even on an o3DS). Here are some screenshots showing the difference in output image quality:

Care has also been taken to ensure that colour correction is only applied when appropriate. The new Super Game Boy and hardware-mimicking GB DMG/Pocket/Light palettes are intended for display on a standard television, *not* on a Game Boy Color LCD panel, and attempting to ‘correct’ them is a mistake. The ‘Color correction’ core option is therefore no longer a simple toggle: it may now be set to ‘GBC only’, which disables correction unless explicitly running a Game Boy Color game or using a Game Boy Color palette. (Of course, if you *want* broken Super Game Boy palettes, you can change the setting to ‘always’…)

These updates, along with the improvements to automatic colourisation, should make the core much easier to work with. Instead of generating core/shader overrides to deal with some games running in colour, and some not, you can now essentially set the following:

– GB Colorization: auto

– Internal Palette: GB – DMG/Pocket (or whatever)

– Color correction: GBC only

– Color correction mode: accurate

– Emulated hardware (restart): Auto

…and pretty much every game will look correct.

Dark Filter (a.k.a. Eye Saver Mode)

In addition to having over-saturated colours, it is not uncommon for games targeting early non-backlit handheld systems to make use of white backgrounds. While these look fine on original hardware, they are simply too bright when viewed on a modern backlit display. Staring at a strong blue-spectrum backlight is a recognised cause of asthenopic symptoms. These games are a health hazard!

On most platforms, this can be mitigated easily and effectively by the use of an appropriate LCD shader. Indeed, the simpletex_lcd shader (https://github.com/libretro/glsl-shaders/blob/master/handheld/simpletex_lcd.glslp) was written for this express purpose:

Unfortunately, shaders are not always an option: weak hardware may not be able to run them at full speed, and devices like the 3DS have no shader support whatsoever…

A more inclusive solution has therefore been added to the Gambatte core in the form of an adjustable ‘dark filter’. This is somewhat analogous to the filtering used in Nintendo Virtual Console titles, only less awful. Instead of a uniform brightness reduction, the ‘darkening’ is roughly proportional to pixel luminosity; this gets rid of harsh glare without (completely) butchering image quality.

The filter may be enabled by setting the new ‘Dark Filter Level’ core option from 5-50%. Here are some screenshots showing the effect at 30%:

Give it a try – your eyes will thank you!

BeetleDC Libretro and BeetleDC OIT Libretro merged into one! What you need to know…

Flyinghead has succeeded in merging both renderers into one. As a result, we no longer require a separate core for BeetleDC OIT, and there will be only one BeetleDC core from now on, simply called BeetleDC Libretro.

Recommendations

Moving forward, we recommend that you remove the BeetleDC OIT Libretro core from your cores directory, and leave only the regular BeetleDC Libretro core instead. This file should be called reicast_oit_libretro.{so/dll/dylib}. You can also remove the core info file that exists for it inside your Core Info directory. We have already proceeded to remove these files from our buildbot, but these files will be left lingering in existing installations unfortunately, necessitating this manual cleanup by the user.

So how do you switch between OIT and non-OIT now?


By default, BeetleDC Libretro will boot in non-OIT mode. You can tell if this is the case by going to Quick Menu -> Options and checking the ‘Alpha sorting’ option. If it’s set to ‘Per-triangle’ or ‘Per-strip’, the non-OIT GL2/GL3 renderer is used. You can use OIT mode by setting it to ‘per-pixel’ and then restarting the core.

Make sure that just like before, OIT mode (per-pixel accuracy) requires a video card that has OpenGL 4.3 support. Be aware that OIT mode is also much more GPU intensive than either per-strip or per-triangle alpha sorting. You might really need a good discrete GPU in order to be able to play this at decent speeds.

For which platforms is OIT mode (per-pixel alpha sorting) available?

It should be available for both Windows and Linux builds. macOS only supports OpenGL up to version 4.1, so per-pixel alpha sorting has to be excluded from this version unfortunately (since it requires GL 4.3).

Core Updates Summary and more Switch updates – October 2018

RetroArch Switch NSP


We now provide an NSP file for Switch straight from our Download page. The main reasons for using this are:

  • Being able to launch RetroArch straight from the main menu instead of having to boot Hbmenu first.
  • The Mupen64plus core requires more memory to be allocated than Hbmenu currently allows for. Mupen64plus will only work through the NSP file.

You can grab this from our Downloads page here.

Please be aware of the following disclaimer that should pop up before you use this:

WHEN USING THIS, YOU NEED TO BE PREPARED THAT A REAL RISK EXISTS THAT YOU MIGHT BE BANNED [FROM NINTENDO’S ONLINE SERVICES]. USE OF THIS FILE IS THEREFORE DONE AT YOUR SOLE RISK AND IS WITHOUT WARRANTIES OF ANY KIND BY US, EXPRESSED, IMPLIED OR OTHERWISE INCLUDING WARRANTIES OF TITLE, FITNESS FOR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT. Under no circumstances are we liable for any damages arising from the usage of this file on your Nintendo Switch.

New Switch cores! 49 Cores now!

Just a few days after launch, we already have a few new cores for the Nintendo Switch available for Nintendo Switch! You can grab these new cores by going to ‘Online Updater’ -> ‘Update Cores’ from within RetroArch, and downloading them one by one.

Let’s quickly run through some of them:

Mupen64plus


This is an early port of Mupen64 Plus for the libnx Switch port! Please be aware of the following:

  1. You will need to install RetroArch NSP and boot it straight from the main menu in order to be able to use this core. Mupen64plus requires more memory to be allocated than Hbmenu allows for.
  2. The framerate right now is not great. This is as a result of there being no dynamic recompiler right now, it just uses a cached interpreter core instead.

NOTE: Everybody is completely aware of the lacking performance of the current Mupen64plus. This is simply a proof of concept for now. Remember, once this bounty (which has amassed so far an amazing $1K+ in little over a week) is finally completed, most games will be running at fullspeed effortlessly on Switch with this emulator!

What this core illustrates is that libretro GL works fine on RetroArch Switch. You can expect to see more libretro GL cores being ported over to Switch in the near future. We are excited for what the future holds over this!

Mr. Boom

This is a great homebrew Bomberman clone made by franck. Up to 8 players can play locally, and you can even setup AI bots that will play against you in either singleplayer mode or multiplayer mode. This should be a perfect fit for the Switch with one Joy Con doubling as two controllers.

GW – Game & Watch

This is a Game & Watch simulator. It runs simulators converted from source code for the games available at MADrigal. Each simulator is converted with pas2lua, which was written specifically for this purpose, and uses bstree, which was also specifically written to obfuscate the generated Lua source code as per MADrigal’s request.

For more info, read this article here.

This core is courtesy of leiradel, who personally ported this over to Libretro.

81

81 is a port of the EightyOne (a.k.a. THE Sinclair Emulator) to libretro.

EightyOne emulates a number of ZX80, ZX81, clones, and other computers based on the same hardware:

* Sinclair ZX80
* Sinclair ZX81
* Timex TS1000
* Timex TS1500
* Lambda 8300
* Ringo R470
* MicroDigital TK85
* Jupiter ACE

However, 81-libretro only emulates the Sinclair ZX81 with 16Kb RAM for now. Other machines will be added as time permits. Push requests are welcome.

The port correctly loads and runs some many games I have around in the p format. tzx format is also supported.

EightyOne also emulates some ZX Spectrum machines, but those were left out of this core on purpose. For a ZX Spectrum core for libretro, see the Fuse core.

This core is courtesy of leiradel, who personally ported this over to Libretro.

FUSE

This is a ZX Spectrum emulator.

For more info, read this article here.

This core is courtesy of leiradel, who personally ported this over to Libretro.

FB Alpha 2012 Neo Geo for Wii – Virtual Memory support!

Wiimpathy has now added Virtual Memory support for the Nintendo Wii! Finally, those bigger Neo Geo ROMs that were previously impossible to load on RetroArch Wii can finally be played with FBAlpha 2012 Neo Geo core!

Here are some notes left behind by Wiimpathy:

It uses the Wii NAND flash as virtual memory. The games also have to be converted/decrypted first to cache files with a PC program called romcnv.
This program is a modified version of romcnv used for MVS2PSP.
Romcnv binaries: http://www.mediafire.com/file/xb783jd9mxhgbos/romcnv_R2.zip
Romcnv Source: http://www.mediafire.com/file/14a55bohl5u1suo/romcnv_src.zip

Note that a few games(SNK Vs Capcom PCB for example) are still too large with this method.

Dosbox SVN – Dynarec on 32bit Windows/Linux and 32bit Android

radius has done extensive work on a new Dosbox libretro core. The dynarec has now been made to work on the following platforms:

  1. 32bit Windows/Linux versions
  2. 32bit Android versions

You can now play fairly modernish games like Duke Nukem 3D (from an MS-DOS perspective) on Dosbox at fullspeed!

But there is more! There is even MIDI playback implemented, and netplay works via IPX.

Reicast

Last time we reported on Reicast, we had full keyboard support implemented which was already hot on the heels of full multiplayer online support with zero network configuration. Since then, flyinghead has not been exactly sitting still. An overview of the progress that has been made since:

  1. Lightgun emulation support (House of the Dead 2 (US and EU), Confidential Mission (EU), and Death Crimson 2 (JP) all confirmed working)
  2. Various crucial graphics bugs have been fixed on both Android and ARM Linux. FMVs should no longer show a black screen and Soul Calibur’s characters should no longer be black (due to high quality textures not being rendered).
  3. Threaded rendering mode’s stability has been further increased.
  4. A bug existed that caused white lines on the top and right side of the screen. Various games exhibited this. This has now been fixed.
  5. Further improved CHD image support.

The next thing flyinghead is planning to do is merging both Reicast and Reicast OIT into one, so that we no longer need to have two separate renderers/cores!

RetroArch 1.7.5 – Released!

RetroArch 1.7.5 has just been released! Grab it here.

This latest version has also been uploaded to the Google Play Store. This is the 32bit version. We also have a brand new 64bit version for users with 64bit capable devices. You can grab that one here. More on that version later!

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

NOTE: Currently the following versions have not yet been released – Xbox OG. I am working on building those versions as we speak.

Highlights

Launch of Nintendo Switch version


Easily the main event of this release. Read our dedicated blog article here –

https://www.libretro.com/index.php/retroarch-1-7-5-introducing-libnx-switch-version/

Menu improvements – dropdown lists

We were fully cognizant of the fact that it was very inconvenient for many mobile users (such as Android users) to have to repeatedly click on a setting in order to adjust its value. So we have finally implemented dropdown lists now for the majority of the settings!

A dropdown list will appear when you either click on a certain setting or press the ‘OK’ button on your gamepad. Settings that have a dropdown lists are typically decimal/hexadecimal settings, or even string lists.

We have even made the core options feature dropdown lists, and they work uniformly across all currently existing menu drivers right now. So that means the dropdown lists work with RGUI, MaterialUI as well as XMB!

We hope this will smooth over some of the rough edges that have existed in the raster-based UI for quite some time!

Adaptive V-Sync implemented for OpenGL (Windows/Linux)

We have implemented the “swap_control_tear” extension for OpenGL when using WGL on Windows or GLX on Linux. In order to take advantage of this, your GPU needs to support either the “WGL_swap_control_tear” extension (for Windows) or “GLX_swap_control_tear” (for Linux).

Adaptive V-Sync is basically a conditional V-Sync mode. V-Sync is enabled until performance falls below the target refresh rate. If it falls below the target framerate, it will conditionally disable V-Sync. Basically the logic behind this is that tear lines is preferable vs. a sudden halving of the framerate (under a normal double buffered V-Sync configuration) from 60 fps to 30fps, and from 30 fps to 15fps, and so on. This can minimize stuttering when performance falls below real-time, and can be more energy efficient. It can also help with very intensive shaders that makes the framerate fall below fullspeed.

Adaptive V-Sync is commonly seen on current-generation game consoles such as Xbox One and PlayStation4.

Improved Vulkan performance (especially for Nvidia cards) – mailbox emulation

Thanks to Themaister’s latest patches implementing mailbox emulation for Vulkan, there should no longer be frame pacing / stuttering issues with Vulkan on Windows when using Nvidia graphics cards.

Please read his blog article for more details.

Easy recording/streaming options (for versions with ffmpeg support)

RetroArch video streaming feature was revamped with GUI support, automatic file naming and quality presets.

Live Streaming to YouTube and Twitch is now possible with a single click (after setting up your stream key of course). You can go to Settings -> User -> Accounts and configure your Youtube/Twitch stream key there.

UDP Streaming to another RetroArch instance

In addition to streaming to YouTube and Twitch (and to file) you can now stream to another RetroArch instance.

This is meant to be the backbone for Discord spectate mode. And streaming netplay (think parsec, gfe co-op)

An interesting fact about this is that you could stream at 1x without shaders and playback in another instance with shaders and at any scale you want.

Of course all these things still need more work, GPU assisted recording, custom FFMPEG, etc. But I’ll get there eventually.

To playback on another instance just do:
retroarch udp://127.0.0.1:56400

General changelog

– CAMERA: Fix Video4Linux2 driver that broke years ago.
– CONFIG: Add ‘Reset To Defaults’ setting in Configurations. This will reset your config file to defaults.
– CHEATS: Add support for Rumble when increase or decrease by the rumble value.
– CHEATS: Add cheat variables to allow for updating large portions of memory.
– CHEEVOS: Prevent loading states before achievements are fully loaded.
– CRT: New porches and interlaced bug fix.
– CRT: New functionality, ability to switch between 15KHz and 31KHz, etc.
– COMMON: Support for “OEM-102” key (usually ‘\’ on Euro keyboards).
– DISCORD: Add ‘Ask To Join’ Feature.
– EMSCRIPTEN: Add stb_font support.
– INPUT: Add new menu toggle combos ‘L3 + R’ and ‘L + R’ (useful for Switch).
– IOS: Use safe area to account for notch for iPhone X and adjust main view.
– LOCALIZATION: Update Portuguese / Brazilian translation.
– LOCALIZATION: Update Japanese translation.
– LOCALIZATION: Update Polish translation.
– LOCALIZATION: Update Spanish translation.
– MENU: Add dropdown lists for many settings.
– MENU: Fix crash that could happen when changing core’s options on Android.
– MENU/QT/WIMP: Add option to rename playlists.
– MENU/QT/WIMP: Add option to filter extensions inside archives when adding to a playlist.
– MENU/QT/WIMP: Rename playlist entries with 2 single clicks.
– MENU/QT/WIMP: Fix shader parameter checkboxes not working
– METAL: Add screenshot support.
– NETPLAY: Save lobby details received back from server after first announcement.
– OPENGL/GLX: Implement Adaptive VSync – GLX_EXT_swap_control_tear.
– OPENGL/WGL: Implement Adaptive VSync – WGL_EXT_swap_control_tear.
– RUNAHEAD: Fix performance degradation that could happen over time (after approx. 30 mins). Fixed input IDs outside of range 0-35 causing slow performance in runahead.
– SWITCH: Add stb_font support.
– SWITCH: Add Retro Achievements support.
– SWITCH: Add networking support.
– SWITCH: Add touchscreen support.
– SWITCH: Add OpenGL support.
– SWITCH: Merging of RetroNX Nintendo Switch port, based on libnx SDK.
– VULKAN: Fix race condition in threaded mailbox emulation.
– VULKAN: Maintenance fixes.
– WIIU: Fix menu lag when built with DevKitPro r32.

RetroArch 1.7.5 – Introducing libnx Switch version!

<
Thanks to the hard work of the RetroNX devs (natinusala and m4xw), we now have an official RetroArch release for Switch!

You can download RetroArch for Switch here.

Installation instructions

You will need a Nintendo Switch capable of running homebrew for this to work.

  1. Download the RetroArch 7z file for Switch (download link above).
  2. Extract its contents and just drag and drop retroarch and the switch folder onto the root of the SD card.
  3. Open Hbmenu, and start RetroArch.

IMPORTANT: Please start RetroArch Switch with a fresh install (in case you already had RetroNX installed before)
and migrate savegames from /retroarch/cores/save{files, states} to the same folder on the new installation.

Features

    • OpenGL support
      • Thanks to Mesa/Nouveau support, this Switch version comes with full-blown OpenGL support (thanks to fincsdev). This means that all of the advanced features available on the PC should be available on Switch as well! GLSL shaders should be supported, overlays are supported, and thanks to OpenGL support, we can use hardware-accelerated menus such as XMB/MaterialUI (with full thumbnail support, theming, etc). In addition to all this, it allows us to port libretro cores that require the use of OpenGL later in the future, such as Parallel N64, OpenLara, and potentially more like Reicast/PPSSPP/etc!
    • Touchscreen support (for MaterialUI/etc)
      • natinusala saw to it that this initial version received touchscreen support. Right now the DPI (Dots Per Inch) is kinda hardcoded for portable and not really meant for dock mode. This will be improved in the near future.
    • Full networking support.
      • Online multiplayer (with peer-to-peer and MITM matchmaking) should be available from Day One. Take note that performance of the core heavily matters in terms of the kind of quality you get out of your online experience, since the netplay implementation is rollback-based. Aside from multiplayer, you can also download cores, update assets, and all the features you would expect on the PC version.
    • RetroAchievements support
      • By registering an account at Retro Achievements and inputting your account details into RetroArch, you can obtain achievements for your games.
    • Game scanning
      • Scanning of your games should fully work, except for perhaps PS1 images right now.
    • Split Joy-Con support
      • If you go to Settings -> Input and enable Split Joy-Con (1 to 8), you can use a full Joy-Con as two separate controllers!
    • Core downloader
      • From Day One, it should be possible to download and update new cores as they arrive on a daily basis without even having to wait for the next RetroArch stable!
    • Runahead support
      • RetroArch Switch comes with runahead support from Day One! This is our game-changing feature that allows you to beat latency and even go beyond the fast response times of the original hardware. Performance of this feature is heavily dependent on the ‘performance’ level of the core and the Switch’s relative power. Try experimenting with cores, and don’t forget to turn it of for more demanding cores that balk under the pressure. Because RetroArch offers such a wide array of cores even for the same system, it’s entirely possible that one specific SNES or Genesis core is fast enough for the kind of runahead at x frames configuration that you are looking for.

44 Cores at Launch!


This might just be the single biggest platform release at launch for a new platform ever for RetroArch! Right from day one, we are starting out of the gates on the Switch with over 44 libretro cores!

So let us quickly go over them one by one –

      • 4DO – 3DO Libretro core. Try to enable the core option Threaded DSP (or a setting named something similar) for better performance.
      • 2048 – A homebrew recreation of the 2048 puzzle game.
      • Cannonball – An OutRun game engine recreation. Requires the original arcade ROMs in order to work.
      • CrocoDS – An Amstrad CPC 6128 emulator.
      • DOSBOX – MS-DOS/Windows 9x emulator. Performance may vary according to which game you are attempting to emulate.
      • Final Burn Alpha – Arcade game emulator. Can emulate (among other examples) Capcom CPS1/CPS2/CPS3 games, Neo Geo, as well as other popular 80s/90s arcade systems.
      • FCEUmm – Nintendo Famicom/NES emulator. Has some nice core options as well as good performance.
      • fMSX – MSX emulator.
      • FreeINTV – Intellivision emulator.
      • Gambatte – Nintendo Game Boy/Game Boy Color emulator. Should be the fastest Game Boy core of all right now, as well as pretty accurate.
      • Gearboy – Nintendo Game Boy/Game Boy Color emulator. Libretro core generously maintained and supported upstream by DrHelius, its original author.
      • Gearsystem – Sega Master System/Game Gear emulator. Libretro core generously maintained and supported upstream byDrHelius, its original author.
      • Genesis Plus GX – Sega Master System/Game Gear/Genesis/Mega Drive emulator. Should be more accurate than Picodrive and is many’s go-to Genesis/Mega Drive emulator. Libretro core maintained upstream by Eke-Eke.
      • Handy – Atari Lynx emulator.
      • MAME 2000 – Arcade emulator based on a 2000 snapshot version of MAME (version 0.36b). Is functionally similar/identical to iMAME4All.
      • MAME 2003 – Arcade emulator based on a 2003 snapshot version of MAME (version 0.78). Is functionally similar/identical to MAME 0.72, except a bit more up-to-date and with some game-specific fixes implemented (as well as a speedup core option for Midway DCS games, such as the Mortal Kombat series).
      • MAME 2003 Plus – Arcade emulator based on a 2003 snapshot version of MAME (version 0.78). Has everything MAME 2003 has, plus more backported game drivers and features.
      • Mednafen NGP – SNK Neo Geo Pocket (Color) emulator.
      • Mednafen PCE Fast – NEC PC Engine (CD) emulator.
      • Mednafen Super-Grafx – NEC Super-Grafx (CD) emulator. Short-lived successor to the PC Engine with backward compatibility.
      • Mednafen VB – Nintendo Virtual Boy emulator.
      • Mednafen WonderSwan – Bandai WonderSwan/WonderSwan Color emulator. This portable handheld had a screen that ran at 75Hz, therefore V-Sync is disabled for this core.
      • mGBA – Nintendo Game Boy Advance emulator. Actively maintained and improved by endrift.
      • NEStopia – Nintendo Famicom/NES emulator known for its accuracy focus. Has plenty of features. Use NstDatabase.xml for additional game compatibility support. Libretro core maintained upstream by NEStopia Undead authors.
      • NX Engine – Cave Story game engine recreation. use the original Cave Story/Doukutsu Monogatari in order for this to work. These files are needed here.
      • O2EM – Magnavox Odyssey 2 emulator.
      • PCSX ReARMed – Sony PlayStation 1 emulator. Comes with an updated Unai video renderer for better performance. Hints: you will want to turn on threaded video for this core for better performance. You can use the PSP PS1 BIOS for better performance.
      • Picodive – Sega Genesis/Mega Drive emulator with 32X peripheral support. There is no Aarch64 dynarec so the dynarec for 32X might still be too slow.
      • PocketCDG – Karaoke MP3 music player.
      • PokeMini – Pokemon Mini emulator.
      • PrBoom – Doom game engine source port. Can run at fixed framerates like 35/40/50/60fps.
      • ProSystem – Atari 7800 emulator.
      • QuickNES – Nintendo Famicom/NES emulator. Fastest NES emulator out of them all.
      • Reminiscence – Flashback game engine recreation.
      • SNES9x 2010 – Super Famicom/Nintendo emulator. Should be considerably faster than Snes9x mainline.
      • SNES9x – Super Famicom/Nintendo emulator. Slower than Snes9x 2010 but has MSU-1 support among other improvements only available in upstream version. Maintained upstream by the original Snes9x devs like bearoso and OV2.
      • Stella – Atari 2600 emulator.
      • TGB Dual – Nintendo Game Boy / Game Boy Color emulator. Has a splitscreen multiplayer mode where gamepad 1 and 2 can play against each other successfully.
      • Tyrquake – Quake 1 game engine. Runs in software renderer, no networking support (yet).
      • VBA Next – Game Boy Advance emulator. Should have an option to multithread rendering which could potentially improve performance a lot.
      • Vecx – Vectrex emulator. Early ’80s game console that rendered everything with wireframe polygons.
      • VICE (x64) – Commodore 64 emulator.
      • XRick – Game engine recreation/port of Rick Dangerous.
      • Yabause – Sega Saturn emulator. Might be too slow for now.

Hints

      • In case PCSX ReARMed is running too slowly, go to Settings -> Video and enable Threaded Video. Threaded Video can also help with certain demanding shaders. Please note that Threaded Video can tend to introduce some judder to frame pacing which isn’t there with non-threaded video, so for all other cores you might want to leave this off.
      • There is a fallback ‘switch’ video driver that you can switch to from OpenGL in case you experience some issue with a core using OpenGL. In case you do, please make sure to set the Menu Driver to ‘rgui’ then, since the ‘switch’ video driver doesn’t have working XMB/MaterialUI menu support. If you fail to do this, you would just get a black screen at startup and you would have to remove your retroarch.cfg config.

Future plans

m4xw already has a Parallel N64 core up and running on the Switch, however it’s currently quite slow and we really want to await the completion of this bounty (which amassed an impressive $1K in less than 6 days BTW!) before we include it.

Beyond that, there is a new menu driver being developed called ‘ozone’ which looks highly promising, and you might see this becoming the default UI for the Switch port in the near future!