Reicast libretro now supports NAOMI + other additions!

Reicast libretro now supports Sega Naomi arcade games! Both Reicast and Reicast OIT have been updated.

Limited to Sega Naomi 1 for now. Atomiswave to GD-ROM conversion games can also work, some of them might have some issues though.

Sega Naomi

Naomi was an arcade videogame system based on the Sega Dreamcast hardware. While being nearly identical in terms of architecture, it did have double the RAM and fillrate of the home console version.

Naomi became one of the longest lasting arcade systems to be used second only to the Neo Geo AES. Various licensees (such as Capcom, Arc Sys, and even Nintendo) licensed the hardware during its lifespan to produce arcade games with.

How to use it

You will need a NAOMI BIOS file inside your system directory. The BIOS with the best compatibility so far is epr-21576g.ic27. This is a file that is contained inside the MAME NAOMI bios zip. Rename this file to naomi_boot.bin and move it to your ‘system directory/dc directory.

What content to use

You will need roms that worked on nullDC Naomi. These will typically be .dat/.lst or .bin/.lst pairs.

The last value of the .lst file specifies the size of the .dat/.bin file in hexademical value.

Here is an example of the .lst file used for Toy Fighter –

Toy Fighter
“Toy Fighter.dat”, 0x0000000, 0x05800000

You can find the existing .lst files here.

NOTE: MAME ROMS won’t work (yet). Proper Atomiswave roms won’t work, however, most Atomiswave to Naomi GD-ROM conversions should at least work or boot.

Currently existing issues

There are some issues that remain with Naomi support:

  • By default, two arcade sticks are hooked up.
  • There are some video and syncing glitches right now. One of the most immediately apparent is the flickering Naomi boot screen.
  • There is no analog and/or shoulder button support yet for Naomi games.

Videos

Toy Fighter

Dolphin Blue

King of Fighters XI

Dead or Alive 2 Millennium

Street Fighter Zero 3 Upper

Other enhancements

Fast GD-ROM Loading

A new core option called ‘GD-ROM Fast Loading Mode’ has been added. It can severely cut down on loading times, sometimes even removing them almost entirely as can be seen in the game ‘Daytona USA 2001’ here.

Various sound fadeout bugfixes

Through some judiciously applied hacks, the following games no longer suffer from sound fadeout issues:

  • Border Down
  • Bomberman Online
  • Chaos Field
  • Death Crimson OX
  • Fatal Fury/Garou: Mark Of The Wolves
  • Jet Set Radio/Jet Grind Radio
  • Napple Tale
  • Phantasy Star Online
  • Phantasy Star Online Ver. 1
  • Radirgy
  • Segagaga
  • Sonic Shuffle
  • Trigger Heat Exelica
  • WWF Royal Rumble

Graphics fixes

Thanks to the awesome efforts of flyinghead, several graphics glitches have been fixed –

Workaround for Virtua Tennis ball color problem.

Fix – Psyvariar 2, Explosions don’t render correctly

Other changes

Reicast OIT

  • Added an accumulation Pixel Buffer Size core option. You can set this to 512MB, 1GB or 2GB, depending on how much VRAM your video card has. For higher resolutions to output correctly, you might need to increase this to the highest value possible.
  • House Of The Dead 2 failed a verify assert – should boot and be playable now.
  • Rebase ADPCM decoding.
  • Reicast (non-OIT)

  • Multipass rendering is now enabled by default. Plenty of games need this for accurate rendering and the performance tradeoff should be minimal.
  • House Of The Dead 2 failed a verify assert – should boot and be playable now.
  • Rebase ADPCM decoding.
  • What’s next?

    We intend to have the next version of RetroArch available soon. On top of that, despite numerous delays, Supermodel will finally be coming soon! We felt it was right to get Sega Naomi up and running first before we unveil that!

    Introducing Reicast OIT libretro core + updated Reicast regular core

    The Reicast libretro core has seen several big improvements as of late, and we thought it would be remiss of us if we did not take this opportunity to talk about it.

    There are two cores now

    There are now two Reicast cores:

    • Reicast regular
    • Reicast OIT

    Reicast regular: Contains an OpenGL renderer that requires OpenGL 2.x on the desktop and GLES 2.x on mobile.

    Reicast OIT: Contains an OpenGL renderer that requires OpenGL 4.3, and as a result is only available for Windows and Linux. Reicast OIT might have significantly increased system requirements, but in return you get much more accurate graphics which tend to fix nearly all the issues that plague Dreamcast graphics with the regular version.

    How to get it

    In RetroArch, go to Online Updater -> Update Cores. From there, Reicast and Reicast OIT should be available for the following platforms:

    • Linux
    • Windows
    • Mac (Reicast OIT is not available for Mac due to no GL 4.3 support)

    What is new/improved in both Reicast versions?

    Reicast regular

    Reicast regular’s OpenGL renderer has received many improvements that greatly increases the graphics accuracy and squashes many graphics bugs that plagued games in the past.

    Here are some of the Dreamcast’s GPU features that are now implemented:

    • Tile clipping support.
    • Fogging support.
    • Volume modifier shadow support.
    • Multipass rendering.
    • Render to texture buffer.
    • Log 2 depth buffer.

    Some additional enhancements include a log 2 depth buffer, fixing much of the polygon glitching that could happen in the distant background in many games.

    All of these additions to the existing GL2 renderer in Reicast regular come courtesy of flyinghead.

    Reicast OIT

    Reicast OIT uses an entirely new graphics renderer written by flyinghead targeting OpenGL 4.3. In addition to boasting all the features that Reicast regular also enjoys as of this date, it also has the additional advantage of incorporating Order Independent Transparency, so that we don’t have to do hacky and error prone alpha sorting hacks, which is our main resort in Reicast regular.

    • Tile clipping support.
    • Fogging support.
    • Volume modifier shadow support.
    • Multipass rendering.
    • Render to texture buffer.
    • Log 2 depth buffer.
    • Order independent transparency.
    • Two-volume mode support.

    NOTE: This requires a compatibility context for OpenGL 4.3. You might encounter issues with Intel/AMD GPUs right now on Linux using Mesa drivers since they require core context. Core context cannot currently be used becasue there are still graphic bugs to be solved when using this.

    Showcase of new emulated features

    Flyinghead has a terrific fork of Reicast that dramatically increased the rendering accuracy of Reicast’s OpenGL renderer. We backported these features with the gracious help of flyinghead. All kudos goes to him.

    Tile clipping support


    The Dreamcast’s PVR2 had a tile clipping GPU feature that was used to obscure portions of the screen. It was cheaper to keep rendering portions of the screen that were not meant to be seen by the user and just clip them away instead of deciding not to render them at all. This was previously unimplemented, which led to all sorts of graphics glitches. This has now been finally implemented in both cores.

    Fogging support


    The Dreamcast had a 128-bit fogging table that games could take advantage of. Plenty did, such as Cannon Spike, Blue Stinger, Resident Evil: Code Veronica, Virtua Fighter 3tb, and more games. This is now finally implemented for both cores.

    Volume modifier shadow support


    The Dreamcast made use of volume modifiers in order to simulate shadows in many games. This was previously either completely unimplemented or very buggily rendered. Volume modifiers are now correctly implemented in both cores (Reicast and Reicast OIT). Performance costs should be minimal and you definitely notice the shadows being cast now by characters and other objects.

    Multipass rendering


    The game V-Rally 2 relies on multipass rendering for rendering the UI elements on top of the game screen. This has finally been emulated on both cores (Reicast and Reicast OIT).

    Render to texture buffer


    Not only has render to texture being reimplemented (leading to much faster performance), but certain games such as Tony Hawk’s Pro Skater 1/2 would render to VRAM for rendering shadows. The upshot of this is that the shadow looks much more convincing vs. merely using volume modifiers in order to simulate shadows. This feature has been finally implemented in both cores.

    Log 2 depth buffer


    Thanks to the logarithmic depth buffer, many rendering bugs have been fixed. Some games have been completely fixed as a result, such as Cannon Spike, while others such as Soul Calibur no longer have the scenery in the background glitch out.

    Note that this relies on gl_FragDepth being available. This might become an issue when we bring the Reicast libretro core to mobile, since it’s not a part of the GLES2 spec and might require either extensions or GLES3 support.

    Order Independent Transparency

    NOTE: This feature is exclusive to Reicast OIT, and is not available in the regular Reicast core.


    Other improvements

    Date/time saving is finally fixed


    Finally you don’t have to keep inputting date/time again whenever starting a game with the Reicast cores.

    Be sure to set a correct date/time, as entering a wrong date might lead to it not being able to save.

    Analog triggers

    The core finally supports analog triggers. The Dreamcast had analog L/R triggers, previously we only had digital trigger simulation, where the L1/R1 would simulate 50% press of the trigger and L2/R2 would be a 100% press of the trigger. While this mode is still available if you enable the option ‘Digital Triggers’, you can also now just take advantage of the new digital trigger capabilities.

    In addition to this ,deadzone issues should be fixed now, so there should hopefully be no more analog input disparities between Xbox pads and PS4 pads.

    Videos

    RetroArch 1.7.3 – Released!

    RetroArch 1.7.3 has just been released! Grab it here.

    This latest version has also been uploaded to the Google Play Store.

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

    Highlights

    New WIMP GUI for PCs!

    RetroArch now has a WIMP GUI, powered by the powerful multimedia framework Qt! This feature is available currently for Windows and Linux. macOS users will have to wait a while longer for this feature to arrive to their platform.

    The WIMP GUI works as a companion to the main RetroArch window. You bring it into view by pressing the F5 key on your keyboard. From there, you can do many tasks:

    – Select a game from any playlist
    – Browse the file system or any attached media storage device and load a game.
    – Scan directories for content and generate system playlists.
    – Associate cores to an entire playlist or associate only one entry of a playlist to a specific core

    How to easily scan content

    Totally customizable appearance

    Switching between color themes

    Multiple language support (English/Japanese)

    Some things we’d like to note:
    * This has been the combined work of bparker and Tatsuya79 that have worked tirelessly on this for a month. We are aware of several features that we’d like to implement, such as playlist editing, grid view layouts, etc.
    * We are open to feedback on the GUI.
    * You will likely not see this WIMP GUI on Android or iOS (or any game console for that fact) anytime soon. WIMP interfaces don’t lend themselves well to devices that rely on touchscreen or gamepad-based controls.
    * (For Linux users) The Qt GUI should definitely work on X11. If you’d like to run it on Wayland, make sure you have the appropriate packages installed for Qt5 in your package manager. Be aware that Qt 5 cannot gracefully fail right now in case a platform module/plugin is missing from your system. This means that if you invoke the companion UI by pressing F5 on Wayland, and for whatever reason the platform module that Qt relies on in order to work on Wayland is not there, there is no way for RetroArch to gracefully fail there and just not show the companion UI. There will be a crash instead. Unfortunately we have talked to some Qt developers and they see no other way around this for now. The same situation applies for DRM/KMS right now. If we can find a better solution to this, we will certainly return to it.
    * (For mac Users) You will have to wait a bit longer for this to arrive to the Mac port unfortunately. Hopefully that wait is not too long.
    * We would like to still improve initial bootup times for the companion UI. Right now, on first initial startup, it can take anywhere from 5 to 10 seconds (depending on your harddrive and its performance), but on subsequent boots should only take 2 seconds or less for first startup. Hopefully by resorting to Link Time Code Generation and other avenues we can shave off some more seconds off this boot time.

    Starting up the UI on startup


    If you would like to start up the companion UI at first startup instead of having to manually press F5 first, you can do so. Make sure that Advanced Settings are enabled first (Settings -> User Interface -> Show Advanced Settings). After that, make sure the option ‘Show desktop menu on startup’ is enabled.

    Real-time audio mixer controls – menu music, mixing of audio channels, separate volume controls, etc

    In RetroArch 1.7.3 we have given RetroArch’s built-in audio mixer a huge overhaul.

    Improved file format support – Now supports MP3 and FLAC thanks to mudlord. The audio mixer now supports MP3, FLAC, Ogg Vorbis, and WAV files in total.

    Live manipulation/control of the audio mixer in the menu – you can now access the audio mixer inside the menu. You can set audio tracks to each of the 16 available streams, and you can issue commands to them such as Play (normal/Looping/Sequential), Stop or Remove.

    Individual volume setting per audio stream – You can now also individually set the volume for each separate audio stream inside the mixer. If you wish to override all audio stream’s volume with one global override, you can go to Audio Settings and set Audio Mixer Volume Level. Reset this back to 0 dB if you want individual volume per stream to work again.

    Increased the amount of max streams – Previously, the audio mixer was limited to 8 streams in total. This figure has been doubled to 16.

    New album mode-like features – If you have a couple of tracks queued up in the audio mixer and if you’d like to play them back like a regular audio music player (played sequentially, one song after the other) – select ‘Play (Sequential)’. When the song is finished playing, it will look at the other streams directly down below it. If one of these streams is in ‘stopped’ state and if there is audio loaded there, it will start playing it. It will also in turn set this audio stream’s play state to ‘Sequential’ and it will keep going down the list until the end of the audio stream mixer’s ‘list’ has been reached.

    Music can play inside the menu now – Previously, you could only listen to audio streams with the audio mixer once you were inside a game and a core had been loaded. Once you went back to the menu, the sound mixing would stop there. You can now set ‘Enable menu audio’ to ON in order to be able to have music inside the menu as well! You can seamlessly jump back and forth between menu and game and have the music continue running.

    Other additional niceties –
    * The music is mixed in with the rest of the core’s sound data, so the music also is affected by fastforwarding and is thus sped up when you fastforward it, just like regular game audio would.

    NOTE: Not all platforms have received MP3 and FLAC support yet. So far, we have enabled it already for Windows, macOS, Linux, Android and iOS. More platforms might follow.

    Runahead – improved performance with Genesis Plus GX

    Dwedit sent some patches to improve Genesis Plus GX’s performance with runahead. We put this briefly to the test on the Xbox OG. Previously with 1.7.2, Sonic 2 on version 1.7.2 did not reach fullspeed with runahead set to 1 frame. With version 1.7.3, we can finally play at fullspeed with runahead set to 1 frame. Setting it any higher than 1 proves too taxing for the old system.

    Game Core Description FPS – 1.7.2 FPS – 1.7.3 Format
    Sonic 2 Genesis Plus GX No runahead Fullspeed Fullspeed Xbox OG
    Sonic 2 Genesis Plus GX Runahead – 1 frame Not fullspeed Fullspeed Xbox OG

    CRT Switch Res on Linux – GroovyMAME-like features for 15KHz capable CRT monitors!

    Starting as of version 1.7.2, RetroArch now has the ability to query cores for their exact video timing data, which can be used to switch to native-resolution, 15 kHz modelines for use with standard-definition CRT TVs.

    This is a big step for retro purists, as RetroArch can now output “pixel-perfect” video with accurate timing to compatible displays, even quickly switching between interlaced and non-interlaced modes on the fly.

    This capability was previously Windows-only and requires modelines to be created in advance by CRT_EmuDriver or Custom Resolution Utility with a compatible GPU.

    Starting as of version 1.7.3, Linux support has been implemented too!

    In case you’d like to learn more, follow these links:

    Input remapping system fixes for overlays

    Radius fixed several bugs which would prevent the new input remapping system from working with onscreen overlays.

    General changelog

    AUDIO: Audio mixer supports FLAC/MP3 file types now!
    COMMON: Fixed bug ‘crashing in cores that don’t range check retro_set_controller_type’. Some people were having crashes when device is set to RETRO_DEVICE_NONE and the cores don’t check the number of ports, in VBAM’s case it was overflowing and crashing. QuickNES was crashing too.
    COMMON: Fixed buffer overflow in url encoding (affecting MSVC2010/2013).
    COMMON: (QuickMenu) Added Configuration Override submenu.
    HID: Merge new HID subsystem.
    HID: Fix WaveBird support for the Wii U GCA.
    HID/OSX: Fix regression with IODHIDManager – gamepads which are connected later would not be autoconfigured.
    LOCALIZATION: Update Italian translation.
    LOCALIZATION: Update Japanese translation.
    LOCALIZATION: Update Portuguese translation.
    MENU: New WIMP Qt GUI!
    MENU: Audio mixer now works in the menu without any cores loaded. You have to enable the setting ‘Enable menu audio’ for this to work.
    REMAPPING/OVERLAYS: Fix regression – overlays could no longer be remapped.
    SCANNER: Add Wii Backup File WBFS support.
    X11: CRT SwitchRes support for X11/Linux.

    What is coming next?

    We can already give you a sneak peek of some of the new features the new WIMP GUI will be having in the upcoming version. Right now, playlist entries are only displayed as a list. The new version will also allow you to display playlists in a grid view (both small and big). See the images below for an indication of how that will look like.