Emulating Sonic Adventure – is this a good or a bad idea?

As discussed on this blog, SADX Gamecube, SADX PC 2004 and the Steam/nextgen console versions of the game suffer from an alarming number of downgrades in almost every area imaginable, up to the point of completely misrepresenting the original Dreamcast version. In this situation one might wonder how to get the “definitive” version of Sonic Adventure. The most obvious option is playing the game on a real Dreamcast, which is perhaps the closest to the “definitive” way to play the game. However, using real hardware has its disadvantages:

  • Obviously you need to own a functional Dreamcast and a copy of the game to be able to play it. The Dreamcast is prone to hardware problems (laser degradation, PSU) that eventually make it unable to read discs or boot at all, and the more reliable replacements (such as the GDEMU or USB-GDROM) are expensive and sometimes difficult to obtain. Unless you are a big fan of the Dreamcast and play other games on it, or use it for other purposes such as homebrew, getting a Dreamcast just to play SA1 isn’t a good investment.
  • If you play the game on anything other than a CRT or something with the native resolution of 640×480, it’s going to look terrible. Don’t be mislead by people claiming that the Dreamcast looks “amazingly clean” when upscaled to 1080p/4K* – this is not the case at all, and even with the most expensive upscalers picture clarity is nowhere near as good as playing the game in actual 1080p or 4K, which you can do using an emulator or a modded PC version.
    *When people say that, they usually compare the Dreamcast’s video output to the likes of Playstation 2, which is indeed a lot worse. The Dreamcast is capable of outputting a native 480p VGA signal, which is the “cleanest” looking signal for that generation of consoles. There is even a hardware mod to make the Dreamcast output a “pure” digital signal through HDMI. However, no matter what you do, the Dreamcast game’s internal resolution is still going to be 480p, and no amount of upscaling and cleaning up is going to make it look as good as native 1080p that you can get with an emulator or the PC version.
    Want to see how SA1 would approximately look on your monitor/TV? Take a 640×480 screenshot from the game and blow it up to your screen’s native resolution with bilinear scaling like this.
  • You’ll have to deal with all of the criticized aspects of the original version – 30 FPS, unskippable cutscenes, the old Chao system etc. Although there are 60 FPS codes for the Dreamcast version, real hardware can’t handle it most of the time and the game will go into slow motion. When the game does run at 60 FPS, several of the problems described here will return because some aspects of the game’s logic aren’t optimized for 60 FPS. Unlike the PC version, fixing these on the Dreamcast is unrealistic.
  • If you want to play in widescreen, there are hacks for SA1 that work on real hardware. While these hacks provide some benefits (such as the increased field of view), what they ultimately do is squeeze a widescreen image into a 640×480 frame, which is then stretched by your display to the applicable widescreen size. Needless to say, combined with upscaling to 1080p/4K this degrades picture quality even further, but it still remains a viable solution to play games in widescreen on real hardware – not only for the Dreamcast, but for other consoles too, such as the Wii.

Using an emulator can mitigate some of the above issues. For example, you’ll be able to multiply the internal resolution of the Dreamcast and play the game at 1440p. Note: the point about widescreen still applies*.

*Using a widescreen hack can also cause pop-in to be more visible near the sides of the screen. Some cutscenes will also show things that you aren’t supposed to see, such as two Chaoses in Sonic’s intro. All widescreen-related cutscene issues except pop-in also occur on the PC version.

There are only two real advantages of using an emulator as opposed to a modded PC version:

  • Some emulators (reicast, possibly redream in the future) have Android builds, which means you can play SA1 on your phone (but would you really want to? See below for an explanation).
  • Playing the game on an emulator delivers the closest experience possible to a real Dreamcast version on PC, whereas SADXPC mods may not always be accurate to the original Dreamcast game.

On the other hand, all emulators have issues with SA1 that make the experience sub-optimal.

  • The biggest problem is that you won’t be able to control the character properly unless you have a very sensitive controller with no deadzone. Some controllers, such as the X360 one, work relatively well, though they are not exactly the same as the original Dreamcast controller. Even third-party controllers for the Dreamcast will cause issues in SA1 and SA2. This nuance is described in more detail on the Miscellaneous page. For an optimal experience you would have to buy an authentic Dreamcast controller and an adapter to use it on PC, in which case you might as well buy a real Dreamcast instead.
    If your controller behaves similar to this (jittering when pressing all the way up/down, “round” shape of diagonal limits), you may be able to use it with a Dreamcast emulator to play SA1:
    • Emulating the Dreamcast’s order-independent transparency is going to be a major issue. Some games look acceptable without it or with less accurate transparency sorting methods, but in the case of SA1 you’re going to need the most accurate per-pixel sorting. You need at least 16 layers to be able to play the game without noticeable visual glitches, and for maximum accuracy (particularly for fire particles) you would want 32, or even 64 or more.
      Per-pixel transparency sorting is extremely taxing on the GPU, so to be able to play the game at any decent resolution without glitches you’re going to need a powerful PC. For example, a mid-range gaming laptop from 2013-2014 is barely able to handle 1440p/32 layers on Demul, and the game is relatively comfortable to play only at 1280×960. Emulating OIT on Android is also out of the question.
      In addition, not all emulators support order-independent transparency. As of August 2018, only Demul, redream and reicast have support for it. Here are some typical glitches you will see if you play the game on an emulator without OIT (some of these may look better or worse depending on the emulator, but the general issue remains the same):

      And here’s the kind of glitches you will see if the layer count for per-pixel sorting is not enough. This usually happens to particles, such as fire or smoke:

The above general issues are applicable to all Dreamcast emulators. There are also issues or nuances with each specific emulator. Let’s go through the most common emulators currently available for PC.

NullDC was an open-source emulator for Windows that was discontinued in 2013. It is the only emulator that has a built-in widescreen hackĀ (“Extra geom”) that doesn’t rely on stretching the picture, which is why you can find videos demonstrating Sonic Adventure in “real” widescreen/1080p using footage from this emulator. It’s also one of the less demanding emulators, so you can run it on a weaker PC. However, the emulator itself has two issues that make it sub-optimal for SA1:
1) Lack of support for per-pixel order-independent transparency, which means the game will always have visual glitches.
2) Emulation inaccuracies causing issues with collision, particularly the issue with Sonic hopping in place and being unable to jump.
In 2013 NullDC was discontinued in favor of another emulator, reicast.

Demul is a closed-source emulator for Windows that has the best compatibility and emulation accuracy to date. It also has the best sound emulation. This is your best bet when trying to emulate SA1 as close as possible to the original Dreamcast. However, Demul’s system requirements are quite high, and there are several nuances that are worth mentioning:
1) Demul has two GPU plugins: the “new” plugin, which is recommended for maximum accuracy, and the “old” one, which, according to the author, is very hacky and has many issues. However, the “new” plugin does not allow to increase the Dreamcast’s internal resolution, and that isn’t going to change anytime soon. That makes the “new” plugin useless for those who want to play the game in anything other than 640×480. The “old” plugin allows to use a higher internal resolution and works quite well with SA1.
2) Demul needs to compile shaders to emulate specific features of the Dreamcast’s GPU, so it is prone to momentary stuttering whenever a shader is compiled*. This means the game will have noticeable hiccups several times a minute unless you’ve completed the game multiple times, exploring every corner and trying every move until all possible combinations of shaders are compiled and cached. The shaders to compile are different depending on your GPU, and changing settings (such as the layer count for transparency) will require a different set of shaders. If you play the game a lot on the same PC without changing graphical settings, eventually this will become less of an issue because Demul will build shader cache that it will reuse the next time a specific effect is used.
* This isn’t a problem with Demul specifically, many other emulators rely on shader compilation and have to deal with this problem somehow. Dolphin, for example, has a feature called “Ubershaders”, which is meant to address the stutter during shader compilation.

reicast is an open-source emulator targeting primarily Android phones and tablets, but builds for Windows, Linux, iOS, RetroArch, openPANDORA and Ouya are also available. Visual and audio glitches aside, the latest release version works fine with SA1 on Android, but getting it to run on Windows seems quite difficult. The automatic builds for Windows, for example, require a set of debug DLL libraries, which are difficult to obtain without installing Visual Studio 2013. This means that for an average user the Windows version of the emulator won’t even launch. In addition, the Windows version has no GUI to configure settings, so you have to set up BIOS, paths etc. manually in the config file. I’ve never been able to get a single game running in the Windows version – it just keeps throwing error messages and crashing – so I can’t comment much on this emulator, but it’s definitely the most user-unfriendly Dreamcast emulator out there if you use Windows.
The RetroArch version is supposedly better, but you have to download the monstrous RetroArch frontend (174MB archive, 500+MB installed) even if you want just the Dreamcast, and RetroArch’s UI is atrocious and a nightmare to configure on PC. Your mileage may vary, so if you decide to try it out yourself, follow this guide to set it up.

redream is a closed-source emulator for Windows, Linux, Mac OS and (eventually) Android. Out of all Dreamcast emulators it’s the easiest to set up, and has the nicest GUI. Unlike all other emulators it doesn’t require BIOS files because it has its own implementation of the Dreamcast’s BIOS. Like Demul, the emulator was originally open-source, but in early 2018 it went closed source, which sparked some (overly dramatic) discussion. redream is a promising emulator, but there are a few concerns when it comes to using it in general and specifically for emulating SA1:
1) You need to register on the website before you can download the emulator.
2) The free version of the emulator only supports 1x internal resolution, which means you can’t play Dreamcast games in anything other than 640×480 (scaled or not), like with Demul’s “new” GPU plugin. The paid version costs $5 and removes the limitation.
3) The same point about shader compilation on Demul applies to redream, although it happens less often (this may change in the future when more features are emulated properly).
4) As of October 2018, redream has issues with SA1 stemming from emulation inaccuracy:

  • Audio emulation is still not quite accurate. This manifests in many sound effects having the wrong pitch, being cut off, too loud/quiet, delayed, not played at all, missing effects/transitions etc. I’ve outlined some of the sound issues with SA1 here, but there are many more.

With the above things taken into account I can’t recommend redream over Demul for emulating SA1, but it certainly has the potential to become the best Dreamcast emulator for this purpose. Like reicast, it’s updated almost daily, and has a nice community on Discord, where you can talk with the developer directly to receive support, report bugs and suggest new features. You can also do that on the issue tracker.

To sum up, if you want to emulate SA1 comfortably on PC, you will need:

  • A modern PC with a powerful GPU
  • The latest version of Demul configured for 16 or 32 transparent layers. Use the old GPU plugin if you want to play in higher resolutions.
  • A GDI rip of the game. Note: don’t use CDI rips with emulators – in most cases CDI rips have downsampled video and audio, and older SA1 rips had a glitch that made it difficult to get out of the sewers after obtaining the Light Speed Dash upgrade. GDI rips don’t have this problem.
  • A Dreamcast controller with a USB adapter for PC, or something like the X360 controller. Note: depending on the controller you may be unable to make Sonic run in a straight line, or use Amy’s spinning hammer attack.
  • Be ready for minor stuttering as the emulator builds shader cache.

Before you try the above, you might want to give the modded PC version a chance. Using the PC version has a lot of advantages:

  • System requirements are going to be much lower. Although the Lantern Engine (Dreamcast lighting) mod is quite taxing on the CPU, the game is still much less demanding than a Dreamcast emulator.
  • You can run the game at 60 FPS and in any resolution you want without any complicated hacks. The Mod Loader allows the game to run in true widescreen without stretching.
  • While the PC version doesn’t use order-independent transparency (although that might change someday), the majority of transparency issues with Dreamcast assets have been fixed, up to the point that the game is visually indistinguishable from the Dreamcast version most of the time. There are still some things missing, but for the majority of people who aren’t obsessed with 100% accuracy this isn’t a problem.
  • You can run in a straight line using the keyboard or any controller, and with the input mod you don’t have to worry about your controller not being sensitive enough for SA1.
  • You can install HD textures for the majority of menus instead of having to deal with stretched 640×480 assets from the original game.
  • The debatably superior SA2B Chao system is still in the game, and you can keep using it with or without Dreamcast gardens.
  • Most importanly, you can customize the game in any way you want! The mods are highly configurable: you can toggle between SA1/SADX looks for any stage, and enable or disable various extras (such as the Casinopolis Cowgirl from the Japanese 1998 release of SA1). Of course, you can also make your own mods that change levels, lighting, models etc.