Flycast WinCE Libretro – Experimental core released!

Courtesy of flyinghead, today we’re releasing a special version of Flycast with Windows CE support enabled! Our reason for releasing this is that we want users to report back as many issues as possible so the kinks can be ironed out.

What’s this about?
Windows CE was an option available to Dreamcast developers that made it much easier to port their game from PC to Dreamcast. Windows CE is/was a subset of Win32, stripped down so that it could be used on low-powered embedded devices instead of expensive desktop computers. PC developers that were used to dealing with DirectX on Windows PC could easily convert their game over to Dreamcast using Windows CE. Hence why you saw a lot of ports at the time from PC-centric western developers that would normally not touch game consoles.

Windows CE emulation (or rather, full MMU support) has been one of the biggest things missing from open source Dreamcast emulation up until now. It is often not enabled in main builds because emulating it requires emulating the MMU (Memory Management Unit) of the Dreamcast, which makes emulation much slower. So far, only Demul (a closed-source Dreamcast emulator) has something resembling full MMU support.

Now finally, open source is beginning to catch up. About time. Dreamcast is over 20 years old at this point, the people that grew up with it are all getting older as time goes on, and it shouldn’t taken another 10 years for all of this stuff to be properly preserved and documented. Flyinghead has done an absolutely incredible job over the past year or so in singlehandedly turning Flycast from something that was worse than nullDC in compatibility and graphics accuracy into the closest we have to an actual competitor to Demul, and we couldn’t be more happy with that. He spent a lot of time in making sure this release was ready today, and we hope you will put it through its paces.

How to get it

1) First, make sure that you have all core information files installed. Go to RetroArch’s main menu, select ‘Online Updater’, and select ‘Update Core Info Files’.

2) Go to ‘Online Updater’ -> ‘Update Cores’. Scroll down the list until you reach ‘Sega Dreamcast/NAOMI (Flycast WinCE)’. Install it.

System requirements

Flycast WinCE has higher system requirements than the regular version. The most important things you need to know:

  1. You can only expect borderline acceptable performance right now on PC x64 systems. ARM64 and ARM 32bit will likely be too slow at Flycast WinCE to be playable.
  2. The Linux x64 version right now is the fastest of them all. The macOS x64 version should also be comparable in performance.
  3. The Windows x64 version is currently much slower than the Linux/Mac versions.

Consider this core a work-in-progress. Bugs are to be expected, fairly demanding requirementsare likely to be expected for now. Things can only get better from here.

Compatibility

Below is by no means an exhaustive list of all games on Dreamcast that used Windows CE under the hood, along with their current playable status in Beetle WinCE at the time of this writing.

The most complete listing we found so far of Dreamcast WinCE games can be found here.

4×4 EvolutionPlayable
Name Status
Atari Anniversary Edition Playable
Armada Playable
Bang! Gunship Elite Playable
Bust-A-Move 4 Playable
Caesars Palace 2000: Millennium Gold Edition Playable
Championship Surfer Playable
Ducati World Racing Challenge Issues
Half-Life Playable
Happy Lesson Playable
Hidden & Dangerous Playable
KISS: Psycho Circus: The Nightmare Child Playable
Kita e. White Illumination Playable
Maximum Pool Playable
Midway’s Arcade Greatest Hits Volume 1 Playable
Midway’s Arcade Greatest Hits Volume 2 Playable
Nightmare Creatures 2 Playable
Q*bert Issues
Railroad Tycoon II Playable
Railroad Tycoon II (PAL) Playable (set Broadcast to PAL)
Resident Evil 2 Playable
Sega Rally 2 Playable (DIV match must be disabled)
Sno-Cross Championship Racing Playable
South Park: Chef’s Luv Shack Playable
Spirit of Speed 1937 Playable
Starlancer Playable
The Next Tetris Playable
Tomb Raider: The Last Revelation Playable
Tomb Raider Chronicles Playable
Tom Clancy’s Rainbow Six Playable
Virtua Cop 2 Playable
Wild Metal Playable
Who Wants To Beat Up A Millionaire Playable
Worms Armageddon Playable (DIV match must be disabled)
Worms World Party Playable

Notes

  1. Many Windows CE games are region-sensitive. Make sure to set the region and broadcast to the right ones – as most Windows CE games won’t run in a different region (although Default might often times work fine). You can change these settings by going to Quick Menu -> Options.
  2. If performance is lacking, try the Threaded Renderer, this can really help. You can enable or disable this by going to Quick Menu -> Options.
  3. Some Windows CE games will flat out not run if DSP is not enabled. So in case a game doesn’t work, try first turning that on.
  4. Enabling DIV matching can lead to some Windows CE games outright not working. As a general precaution, we advise that you leave DIV matching off. Sega Rally 2, for instance, requires that you leave DIV matching off.
  5. Other enhancement/hackish features, like Fast GD-ROM Loading, are best left off in case you experience compatibility issues.

Screenshot gallery

Videos

Check out these videos by flyinghead –

BeetleDC Libretro Progress Report – December 2018

It’s been a pretty busy end of the year for the BeetleDC core. Most of the work consisted in finalizing and improving support for Naomi and Atomiswave arcade ROMs.

Naomi / Atomiswave

Naomi GD-ROMs are now supported and this adds more than 120 Naomi games to the list of supported arcade games.
ROMs archived with 7zip as well as parent/split ROMs are now supported as well.
Another new feature is the use of per-game input descriptors: so instead of binding “Button 1” or “Axis 1”, you’ll have descriptive names such as “JUMP” or “STEERING WHEEL”. Not all games have input descriptors but more will be added in the future (and pull requests are welcome.)


In addition, many bugs have been fixed allowing many arcade games to now be fully playable: 18 Wheeler, Airline Pilot, Cosmic Smash, House of the Dead 2, Jambo Safari, Ninja Assault, Shooting Love, Virtual Athlete, Virtual On Oratorio Tangram and probably more.

Dreamcast

On the Dreamcast front, a recent but notable improvement is the automatic setting of the BIOS date and time at boot. So you should never see the date/time setting screen again. In the same area, a new core option allows to choose the BIOS language, so you don’t have to boot the BIOS to change it.
Using the Libretro disk control interface, disk swapping has been implemented. When asked by the game, you can now virtually eject the current disk and select a new one without restarting. Some multi-disk games require this feature such as D2 or Pop’n Music 3 and 4 append disks.

Another new feature for both console and arcade is the Synchronous Rendering core option. This option is only active with Threaded Rendering. When activated, it will pause the emulation thread instead of dropping a frame, which results in less dropped frames and thus a better and smoother frame rate.
Finally, Restart has been implemented so one can reset a game without having to restart the front-end.

 

Happy and Peaceful Holidays!

BeetleDC Libretro Atomiswave support!

Thanks to flyinghead, BeetleDC Libretro has now gained Sammy Atomiswave support! Sammy Atomiswave was an arcade system board based on the Dreamcast/Sega NAOMI hardware. A lot of SNK Playmore’s flagship games transitioned from the ageing Neo-Geo hardware to the much more modern Naomi-based hardware, such as Samurai Shodown, King of Fighters, Metal Slug and so on.

Both MAME ROMs and Demul-compatible roms should work. Note that as of right now, only a limited selection of Atomiswave games work. More will be added later today/tomorrow.

Here is a sampling of some of the games that already work. Shown here are Guilty Gear Isuka, Guilty Gear X, and Metal Slug 6.


BeetleDC Libretro NAOMI and MAME ROM support!

Flyinghead is adding MAME ROM support to the arcade side of BeetleDC Libretro.

Here is what has currently been implemented:

  • NAOMI M1 cartridge support
  • NAOMI M2 cartridge support
  • NAOMI M4 cartridge support

Things you need to know

  • Right now, only non-merged romsets work. A merged rom is a ROM without parent, it contains all the files needed.
  • NAOMI M4 cartridges require a special BIOS file to be put inside your System directory. The M4 bios should be in a “naomi.zip” file in the BIOS folder (/dc ). The file in specific which hsould be inside that zip file is called ‘epr-21576h.ic27’.

Other important additions/changes

  • in the past, NAOMI games would only work with BeetleDC Libretro if you loaded .lst files. .lst files are no longer necessary now. You should be able to run an arcade game with BeetleDC Libretro using the plain .bin/.dat file instead now. So theoretically it should now be capable of just loading Demul-compatible ROMs instead.
  • Ring Out 4×4 now allows for up to 4 player support due to adding dual I/O board support for this game.

What are the list of MAME ROMs that are compatible?

You can check the entries inside this file here –

https://github.com/libretro/beetle-dc/blob/master/core/hw/naomi/naomi_roms.h

Out of these games, nearly all should work except for Samba De Amigo right now.

What’s planned/next?

  • Sammy Atomiswave MAME ROM support
  • Sega NAOMI GD-ROM MAME ROM support

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