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

This post discusses various Dreamcast emulators in the context of emulating Sonic Adventure on a Windows PC. You may have a different experience with these emulators and other games. This post was last updated in November 2023, and Dreamcast emulators may have improved since then.

As discussed on this blog, SADX Gamecube, SADX PC 2004 and the Steam/nextgen console versions of the game suffer from a 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 misled by people claiming that the Dreamcast looks “amazingly clean” when upscaled to 1080p/4K* – this is all relative, 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 (you may get better results on an overclocked console). 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 much more difficult for hackers/modders. It is generally much harder to make mods for the Dreamcast version.
  • 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 an 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 many of the above issues. For example, you’ll be able to multiply the internal resolution of the Dreamcast and play the game at 1440p. There are two advantages of using an emulator as opposed to a modded PC version:

  • Some emulators (flycast, redream) have Android builds, which means you can play SA1 on your phone or tablet, provided that it’s powerful enough to handle a Dreamcast emulator.
  • Playing the game on an emulator delivers the closest experience possible to a real Dreamcast version on PC (with enhancements), whereas SADXPC with mods may not always be accurate to the original Dreamcast game.

On the other hand, 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 sensitive analog stick 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.
    If your controller behaves similar to this (jittering when pressing all the way up/down, “round” shape of diagonal limits), you should be able to use it with a Dreamcast emulator to play SA1:
  • Emulating the Dreamcast’s order-independent transparency is 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 32 layers to be able to play the game without noticeable visual glitches, and for maximum accuracy (particularly for particles) you would want 48, ideally 64 or more.
    Per-pixel transparency sorting is 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 even more difficult due to limited performance of most phones and tablets, though still possible.
    Not all emulators support per-pixel order-independent transparency on all platforms. Depending on the GPU, you may be limited to per-strip transparency.

Here are some typical glitches you will see if you play the game on an emulator without OIT or with less accurate sorting (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. Besides reicast/flycast that are based on it, NullDC 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, 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 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, which provides no advantage over playing on original hardware. 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 was an open-source emulator that was originally targeting Android phones and tablets, but builds for Windows, Linux, iOS, RetroArch, openPANDORA and Ouya are also available. reicast was discontinued, but a fork called flycast is available. At the moment flycast is the most viable option for emulating SA1 with enhancements such as 60 FPS and widescreen. More on that later.

redream is a closed-source emulator for Windows, Linux, Mac OS and Android. Out of all Dreamcast emulators it’s the easiest to set up, and has the nicest GUI. Like Demul, the emulator was originally open-source, but in early 2018 it went closed source. 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, like with Demul’s “new” GPU plugin. The paid version costs $5 and removes the limitation.
3) There can be serious input lag.
4) Analog stick emulation isn’t very suitable for keyboard use in SA1.
5) 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).
6) As of November 2023, redream has issues with SA1 stemming from emulation inaccuracy:

  • Audio emulation is still not completely accurate. This manifests in some sound effects being too loud/quiet or missing DSP effects. You can check progress on SA1 sound emulation here.

With the above things taken into account I can’t recommend redream over Demul or flycast for emulating SA1, but it certainly has the potential to become the best Dreamcast emulator for this purpose.

Recently, a new way to play emulated SA1 became available: the SA1 DC-HD project. It’s a patch for the SA1 US GDI image that adds various enhancements and improves the experience on the flycast emulator. It can be played on any platforms flycast is compatible with. Here are some improvements it adds:

  • The game runs at 60 FPS during gameplay without framerate-related glitches.
  • Widescreen hack without model clipping or HUD stretching.
  • All FMVs can be skipped by pressing Start.
  • Cutscenes can be skipped by holding B before a cutscene loads.
  • If you cannot run in a straight line with your controller/keyboard, there is a patch to fix that.
  • Minor bugfixes for some levels such as object placement, Z fighting fixes etc.
  • Better level and object draw distance.
  • Optional cheats.

This is what the game looks like with these enhancements applied:

You might also 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 use any resolution you want without performing any hacks. The Mod Loader allows the game to run in true widescreen without stretching.
  • While the PC version doesn’t have 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). You can also develop your own mods that change levels, lighting, models etc.