Final Burn Neo 1.0.0.02 release

Final Burn Neo (FBN/FBNeo) is the follow-up of Final Burn Alpha (FBA/FBAlpha), an alternative to MAME for arcade emulation. It’s more focused on playability than on accuracy/preservation. The team is composed of dink, iq_132, JacKc, kev and me. It supports most libretro features (netplay, runahead, retroachievements, …).

Some words about accuracy & FBNeo

Regularly, I see misunderstandings about our playability focus. It doesn’t actually mean we don’t care about accuracy, when we add a new system we usually make it as accurate as possible, and we also revisit old systems for accuracy improvement purpose. In some edge cases we even end up being more accurate than MAME, it’s always a bit funny when someone comes reporting that “something is different from MAME, so that must be a bug”, and after investigating about the actual cabinet, we learn that FBNeo is actually the one emulating the game properly (in those cases, we let the MAMEdevs know, so I believe the inaccuracies are fixed shortly after on their side).

I can only remember of a few occurrences where we are intentionally inaccurate:

  • Samples vs Netlist emulation : we prefer keeping samples for now, netlist is a nice feature, but ultimately we don’t think samples sound bad (we even have some systems where we offer alternative sound emulation through samples while the actual sound device is also emulated), so enforcing the emulation to be twice slower for this didn’t seem right to us. From time to time I see people saying “yeah but I’m missing sounds because of those samples” : that shouldn’t be the case, most likely they are just using the wrong samples pack.
  • CPS3 emulation : Around 2 years ago, we noticed a frame on SF3-1’s VS screen had wrong colors, after more investigation & tests we learnt that the fix would involve making the emulation twice slower on every CPS3 games, so since there was no evidence that fixing this single frame would improve anything else on CPS3, we decided to leave things like this for now.
  • ZX Spectrum emulation : We didn’t like the original sound from the buzzer, so we re-made it to our liking.
  • Garbage noise : Sometimes, we notice garbage noise that actually happens on real hardware, since we consider this noise as an unpleasant game bug, we filter it out, i remember “Burger Time” and “Narc” being in that list.

New supported games and other emulation improvements

Midway

Our tms340x0 cpu core got rewritten, which allowed to add support for pretty much any midway game that was missing and not running on 3D hardware, the more recent additions include “2 on 2 Open Ice Challenge”, “Judge Dredd”, “NBA Hangtime”, “NBA Jam”, “NBA Jam TE”, “NBA Maximum HT”, “WWF: Wrestlemania”, “High Impact Football”, “Super High Impact”, “Narc”, “Smash TV”, “Strike Force”, “Terminator 2 – Judgment Day”, “Total Carnage”, “Trog”, “Revolution X”, and the recently dumped “Power-up baseball”.

Sega

Support for Sega System 32 was added : “Air Rescue”,  “Arabian Fight”, “Golden Axe: The Revenge of Death Adder”, “Dark Edge”, “Spider-Man: The Videogame”, “Dragon Ball Z V.R.V.S.”, “Holosseum”, “SegaSonic The Hedgehog”, “Alien3: The Gun”, “Burning Rival”, “F1 Super Lap”, “F1 Exhaust Note”, “Jurassic Park”, “Rad Mobile”, “Rad Rally”, “Slip Stream”, “Super Visual Football: European Sega Cup”, “Soreike Kokology”, “Soreike Kokology Vol. 2 – Kokoro no Tanteikyoku”, “Hard Dunk”, “OutRunners”, “Stadium Cross” and “Title Fight”. One of the hightlights of our emulation is the controls on racing games like “Rad Mobile”, they are very playable (apparently, the controls are a bit tricky on MAME).

Jaleco

Support for Jaleco Mega System 32 was added : “Tetris Plus”, “Tetris Plus 2”, “P-47 Aces”, “Best Bout Boxing”, “Desert War”, “The Game Paradise – Master of Shooting!”, “Gratia – Second Earth”, “World PK Soccer V2”, “Hayaoshi Quiz Grand Champion Taikai”, “Hayaoshi Quiz Nettou Namahousou”, “Idol Janshi Suchie-Pai II”, “Ryuusei Janshi Kirara Star”, “Mahjong Angel Kiss”, “Vs. Janshi Brandnew Stars”.

Namco

Support for Namco NA-1/NA-2/NB-1/NB-2 systems was added : “Bakuretsu Quiz Ma-Q Dai Bouken”, “Cosmo Gang the Puzzle”, “Emeraldia”, “Exvania”, “Fighter & Attacker”, “Super World Court”, “Tinkle Pit”, “Knuckle Heads”, “Numan Athletics”, “Nettou! Gekitou! Quiztou!!”, “X-Day 2”, “Nebulas Ray”, “Point Blank / Gun Bullet”, “Great Sluggers”, “Great Sluggers 94”, “Super World Stadium”, “Super World Stadium ’96”, “Super World Stadium ’97”, “J-League Soccer V-Shoot”, “The Outfoxies” and “Mach Breakers”

Seibu

Support for Seibu SPI system was added : “Senkyu / Battle Balls”, “E Jong High School”, “Viper Phase 1”, “Raiden Fighters”, “Raiden Fighters 2 – Operation Hell Dive”, “Raiden Fighters Jet” and “E-Jan Sakurasou”

Sinclair ZX Spectrum

While the driver had been there since 2018, because of how bad it was (a parting gift from a certain person…) it was basically rewritten from scratch, nowadays I believe it’s a very nice alternative to FUSE. Also, I mentioned it above, we intentionally decided to be inaccurate on buzzer emulation.

Fairchild ChannelF

Another home console gets emulated.

PGM

Thanks to the efforts of an external contributor (eziochiu), the last 2 unplayable pgm games (and their clones) finally became playable : “Dragon World 3” and “Photo Y2K 2 (3-in-1)”.

Taito

We now support “Gladiator”, “LSA Squad” and “Daikaiju no Gyakushu”

Electronic Arts / Rare

“Battletoads” is now supported, this game is actually the main reason our tms340x0 cpu core was rewritten.

Gottlieb

“Exterminator” is now supported, that’s yet another game using tms340x0 (actually, 2 of them !), this is an odd game to say the least.

Art & Magic

Yet another system using tms340x0, their games – “Cheese Chase”, “Stone Ball” and “Ultimate Tennis” – are actually pretty cool.

Improvements to the Libretro port

Some features that were left over from standalone until now got implemented in the Libretro port :

  • LowPass Filter : It’s available from the core options, I know something similar is available from RetroArch’s DSP plugins but you might want to check out this one too. Technically it’s a 2x resonant lowpass filter which is set-up to mimic the amp section found on most PCB’s. For a good 95% of games, it makes the sound a bit more rich/bassy, and for the remaining 5% let us know so that we can fix them. You’ll probably never want to turn this option off after getting used to how nice it sounds.
  • Cheats : They have been supported through the Libretro API for some time, but now you can also directly use a cheat.dat from MAME, more information about this here.
  • Macros : First, some words about macros, the reason macros from standalone aren’t supported is because there can be dozens of them for a single player on a single game, however you currently can’t map that many actions with the Libretro API (and this is not only a problem for macros, handling service menu when it involves several buttons can be tricky too) because all inputs need to be assigned to a button from the get go. In the past, there was some workaround for this through core options, but it had its own share of issues so it was removed later. I recently decided to re-implement support for a select few macros, for now it only includes 3xPunchs and 3xKicks on SF-like games but implementing a few more could be done if I can get some help sorting out the ones that’ll be the most useful so that they’ll fit within the RetroPad model.

 

And much more! This article is far from being exhaustive.
If you want to help FBNeo, keep sending us bug reports when you see something wrong.
Our forum : https://neo-source.com/
Our github : https://github.com/finalburnneo/FBNeo
Our discord : https://discord.gg/8EGVd9v

RetroArch 1.9.2 released!


RetroArch 1.9.2 has just been released.

Grab it here.

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!

Release notes

PlayStation Vita users will be happy to learn that the issues with gpSP (Game Boy Advance emulator) are now resolved, and it should work as reliably as it did before 1.9.1 (and perhaps even better now thanks to increased performance). We hope you get a lot of mileage out of this core as a lot of work and effort went into it to really optimize the performance of this core over the past few months!

Text To Speech support is now enabled for the macOS Universal build. You can access this by going to Settings -> Accessibility and enabling ‘Accessibility Enable’.

Some nice changes under the hood that are more technical in nature: config file loading performance has been improved immeasurably which should help out with initial startup times of RetroArch, loading config files as well as loading shader presets. Core info file loading itself has also seen many performance improvements. We are aware that despite all this, loading all the assets in the more feature-rich menus like MaterialUI/XMB/Ozone can still take a long time on systems encumbered by slow disk I/O, but we have some special things in store for future versions that should increase asset loading performance significantly.

There is now multi soft-patching file support. We will explain this in more detail below.

Highlights

Multi soft-patching support

If an IPS/BPS/UPS patch is found, will replace the last character in the filename with a counter and loop until another patch is found (in any format).

Example matching filenames:

Contra (Japan).nes
Contra (Japan).ips # Applied first
Contra (Japan).ips1 # Applied second
Contra (Japan).ups2 # Applied third

Notice that if one filename breaks the loop, the following patches won’t be applied too. e.g.:

Contra (Japan).nes
Contra (Japan).ips # applied
Contra (Japan) (Translation).ips1 # Partial name match, not applied
Contra (Japan).ups3 # Not applied either

Enhanced ‘Load Content’ file browser search functionality

1.9.2 adds the same search filter functionality that currently exists for playlists to the file browser when selecting Load Content. This means:

  • When navigating the filesystem via the file browser, the user can press RetroPad X (or /, etc.), and enter a search term
  • This becomes a filter – all matching entries will be displayed
  • The user can then perform another search to further refine the results. Up to 8 filters may be stacked in this fashion
  • Pressing ‘cancel’ clears the last entered filter

For example:

In order to support file browser navigation, the search filter implementation had to be rewritten. Instead of having a single menu-driver-level search filter, independent search terms are now stored for each menu list. This is a far more robust solution, and means that filters can be enabled for other menus far more easily (and without any hacks). To demonstrate this, 1.9.2 also enables search filters when selecting shader presets/passes via the file browser (I will try to add this in more places as time permits):

Finally, 1.9.2 makes the following changes to existing search functionality:

  • Entering a search term consisting of a single Latin alphabet character will now always jump to the first entry whose first character matches – i.e. we no longer apply search filters in this case, since a single alphabet character filter is not useful. This means single character searches can be used for fast alphabet navigation
  • When searching file browser lists, the ‘utility’ entries (e.g. Parent Directory) are ignored, since they have no bearing on the actual list content (i.e. searching for p will now jump to the first p file – previously, it would always jump to Parent Directory…)
  • When performing non-filter searches, the entry labels used in each comparison now exactly match what is printed on screen by the menu driver. Previously, raw file_list values were used, which are often the same, but not always (e.g. in a number of cases, this is the difference between searching against full file paths vs. path basenames, which can produce erroneous results)

In addition to all this, 1.9.2 also enables search filter support when using the file browser to select cheats and overlays.

Optional menu screensaver animations

At present, when using XMB/GLUI/Ozone, enabling the menu screensaver will cause the screen to be blanked when the screensaver timeout has elapsed. 1.9.2 adds three optional animations that may be displayed instead – these can be selected via the new Settings > User Interface > Menu Screensaver Animation entry; animation speed may be adjusted via Settings > User Interface > Menu Screensaver Animation Speed. The options are as follows:

OFF: Screen will be blanked

Snow:

Starfield:

Vortex:

These effects are rendered using font glyphs; the performance overheads of all the animations are therefore low. This should also give you some indication as to how we are planning to reduce file I/O overhead across the board when it comes to asset loading, but that is something that we will be unveiling for a future release!

When using GLUI/Ozone, the screensaver will be tinted (somewhat) according to the current menu colour theme (XMB uses a fixed screensaver colour, since it does not have a ‘proper’ colour theme implementation).

OpenDingux beta: Add 50Hz support

All devices running OpenDingux Beta have native support for both 60 Hz and 50 Hz display modes. 1.9.2 enables 50 Hz functionality in RetroArch. The refresh rate can be toggled between 60 Hz and 50 Hz via the Settings > Video > Output > Vertical Refresh Rate menu entry; the value can be saved on a per-core/content directory/game basis via regular config overrides.

This makes OpenDingux devices (running the Beta OS) pretty much the only affordable/easily available handhelds that can run both NTSC and PAL content smoothly. The VICE core in particular benefits enormously from this addition.

OpenDingux beta: Fix IPU scaling when running GB/GBC/GG/NGP-resolution content

Further testing of the OpenDingux Beta port has revealed several more resolutions which are mishandled by the IPU hardware scaler. 1.9.2 updates the resolution blacklists accordingly, fixing scaling for the following content:

  • Gameboy (+ Color)/Game Gear at native, x2 and x3 resolutions
  • Neo Geo Pocket (+ Color) at x2 resolution

Changelog

1.9.2

  • 3DS: Enable graphics widgets / overlays
  • 3DS: Load texture images as BGR colors
  • 3DS: Change default asset directory
  • CHEEVOS: Allow rcheevos_patch_address to be called on game without achievements
  • CHEEVOS: Update achievement memory maps (add Supervision)
  • CONFIG/FILE: Use hash map to optimise key/value lookups
  • CORE INFO: Performance optimisations + code clean-ups/refactors
  • CRT/SWITCHRES: Fixed CRTSwitchRes framebuffer bug
  • DISCORD/RPC: Fix regression
  • DRM: set the correct video mode
  • FASTFORWARD: Enforce minimum fastforward_ratio of 1.0
  • FONTS/FREETYPE/STB_UNICODE/BITMAPFONT: Prevent texture bleed when rendering text at non-integer scales
  • INPUT: Ensure that ‘retro_set_controller_port_device’ is called when updating ‘Max Users’
  • INPUT/XEGL/MOUSE: Fix xegl_ctx.c mouse activation
  • INPUT/SDL: Fix crash in SDL input driver when analogs are bound
  • INPUT/POINTER: Add scaling to pointer input
  • INPUT REMAPPING: Fix regression on loading file
  • INPUT REMAPPING: Fix regression where disabling input remapping would disable input
  • IOS: Disable system button gestures on iOS 14
  • IOS: Prevent potential crash on controller connect – randomly would get a crash when connecting a game controller while RA was running
  • LAKKA: Add menu for time zone setting
  • LOGGING: RARCH_LOG_V checking for verbosity level is not necessary and can cause issues; removed said check.
  • LOGGING: Silence inappropriate cheatfile logging
  • IOS/MAC: Add CPU VFP unit detection for Darwin
  • MAC: Swallow ‘escape’ key being pressed – would previously make the game toggle between fullscreen and windowed
  • MAC: Intel and ARM64 timer change proposal.
  • MAC/ARM64: run_fast_mode disabled for 64 bits invalid instructions.
  • MAC/OPENGL: Fix codesigning issue
  • MAC/UNIVERSAL: Add TTS translation service support.
  • MENU: Add optional menu screensaver
  • MENU: Add search filter support to cheats and overlays file browser menus
  • MENU/FILEBROWSER: Enhanced ‘Load Content’ file browser search functionality
  • MENU/INPUT: Block accidental diagonals in menu navigation
  • MENU/RGUI: Add option to disable menu transparency
  • MENU/RGUI: Fix display of ‘Video > Scaling’ menu when ‘Lock Menu Aspect Ratio’ is enabled
  • MENU/MATERIALUI: Add icon to ‘Turbo Fire’ menu entry
  • MENU/OZONE: Ozone Dracula theme
  • OPENDINGUX/BETA: Fix IPU scaling when running GBA-resolution content
  • OPENDINGUX/BETA: Add 50Hz support
  • OPENDINGUX: Enable ‘SaveRAM Autosave Interval’ by default
  • PATCHES: Added multi-softpatching support + OSD messages for patches
  • RHMAP: Track the complete string in rhmap
  • VITA: Align VM block size to 1MB – should fix one of the issues with gpSP
  • WINDOWS/GDI: Fix non-ASCII text rendering
  • XEGL: Fix mouse not working when using OpenGLES with X11