Texture quality downgrades

When Sonic Adventure was redesigned with the “DX” branding, some of its Action Stages and Adventure Fields received new textures. In some cases those textures are higher resolution than the Dreamcast version, in other cases they aren’t. Some offer more variety than the original game, most of them don’t. In some cases the textures are completely new, in other cases the new textures are recycled or slightly edited Dreamcast textures, sometimes in lower resolution (Final Egg) or with reduced color saturation (Ice Cap). You can read more about textures used in a particular level on each level’s page. This page is about texture quality in general. It examines the problems with texture quality in SADX Gamecube and PC and explains the possible reason why the quality reduction happened.

Textures that were reused from the original Dreamcast game (which make up the majority of textures in SADX) were recompressed each time the game was ported to a platform that used a different texture format. The Dreamcast’s native PVR format is rather limited and allows only a couple of texture formats. The Gamecube’s GVR format is more flexible than PVR, and allows several more texture formats, however its pixel formats are different and in a way more limited than PVR. Both formats are lossy (unlike BMP or PNG for example), which means some source information will be lost when a texture is saved in a format like that. The Dreamcast version has pretty sharp textures for an old and limited format like PVR. Normally there would be no issue with converting a PVR texture into some other format, but in SADX there is visible quality loss. Let’s see why.

Here are the most common PVR texture formats used in the Dreamcast version:

  • RGB565 – an opaque texture where each pixel uses 5 bits for red and blue and 6 bits for green.
  • ARGB1555 – a transparent texture where each pixel uses 1 bit (on/off) for transparency and 5 bits for red, green and blue channels.
  • ARGB4444 – a transparent texture that uses 4 bits for red, green, blue and transparency.
  • VQ and SmallVQ are compressed formats that rely on making a palette of most used colors in the texture and approximating other colors using the palette

The GVR format used in the Gamecube version has different formats. Here are the ones used in the Gamecube version of SADX:

  • RGB5A3 – can be either an opaque texture (RGB555) or transparent texture (ARGB3444). These are rough equivalents of RGB565 and ARGB4444, but they are lower quality than PVR because they’re missing 1 bit in Green (for RGB555) and 1 bit in Alpha (for ARGB3444). Although there is an RGB565 format for GVR, most textures use RGB5A3 or DXT1 described below.
  • DXT1 – a variation of the S3TC texture compression algorithm. It is lossy and can perform better or worse than VQ depending on the texture.

When the Dreamcast textures were converted to GVR, the original format was often neglected, and the destination format didn’t accommodate for all the color information that was present in the original texture (for example, instead of 6 bits for green, only 5 were used because an RGB565 texture was converted to RGB5A3/RGB555). Many textures went through DXT1 compression. As a result, some information was lost when the textures were converted, and most textures in the Gamecube version are lower quality. The recompression happened again in the PC version, which switched the textures back to PVRs. Although a few textures were reused from the Dreamcast version (such as those related to menus), many of the already lossy Gamecube textures were converted to PVR, which reduced their quality even further. There is some evidence that texture conversion was done in bulk. On the retail Gamecube disk of Sonic Adventure 2: Battle there is a leftover script that was used to convert the Dreamcast PVM texture archives into Gamecube GVM archives. It’s highly probable that something similar was used for SADX.

It must also be said that there are at least several textures in the Gamecube version of SADX that are higher quality than their Dreamcast counterparts. These textures are sometimes found in levels that were redesigned in SADX. At the moment only six textures in the entire game have been confirmed to have better compression in the Gamecube version. One texture is found in the Mystic Ruins main area (see below), the rest are in the first segment of Final Egg.

(Thanks BlueSpikeball for finding these textures in the Gamecube version!)

Other than these few, the Gamecube version’s texture quality suffers quite significantly. The PC version’s textures are even worse. Depending on the source texture the difference may be barely noticeable, but in many cases it looks like a bad JPEG recompression. It’s especially noticeable with low-resolution textures and gradients. Here are some examples:

Apart from lower texture quality, the PC version suffers from lack of mipmaps. Mipmaps are smaller copies of a texture used to display it from a distance. Here is a typical texture with mipmaps from the Dreamcast version:

Mipmaps are beneficial because they give the textures a smoother look. The 2004 PC version doesn’t have mipmaps, which makes the game look significantly worse because the distant textures are reduced to pixelated garbage. It’s especially noticeable in motion with a lot of flickering. Thankfully the Mod Loader has a built-in feature that generates mipmaps for all textures, and before the Mod Loader there were texture edits for the PC version that added mipmaps. These fixes are essential if you’re playing the 2004 PC version with original textures.

The Steam/nextgen console ports don’t have built-in mipmaps either, instead they generate mipmaps on the fly like the Mod Loader. The textures themselves are the same between these ports and the 2004 PC port. While those ports don’t have the flickering caused by lack of mipmaps, all other points regarding texture quality mentioned in this post apply to the Steam/nextgen console versions as well.

Here are some comparisons with mipmaps on/off in the 2004 PC version:

No mipmapsMipmaps
No mipmaps + Anisotropic 16xMipmaps + Anisotropic 16x

Although anisotropic filtering improves the look of distant textures, it can’t completely remove distant flickering that you often see in motion. The only real solution for that is to use mipmapped textures. But even when not in motion, the mipmapped textures look a little smoother. For comparison, here is what the “maxed out” texture quality looks like.

Anisotropic filtering 16x, Dreamcast textures (SADX Mod Loader + DC Conversion)

Another issue with the PC/Steam/nextgen console ports is texture mirroring. Although the game engine supports mirroring natively, for some reason the developers decided to mirror some of the textures manually and adjust UVs on some models to accommodate the change. This wouldn’t have caused problems on its own, but the mirrored texture is often squeezed into the same resolution as the original unmirrored texture, which means the resolution of the final texture that is applied to the model is reduced. In addition, the mirroring in the PC version is usually done by flipping the texture horizontally or vertically, while it would’ve looked a lot better if the texture was rotated. Here’s an example illustrating both problems:

Here’s another example of mirrored textures from Twinkle Park. Although the light texture’s horizontal resolution was increased (or the texture was just stretched), the trap door texture is quarter the size (half the resolution) of the original Dreamcast texture:

In addition, the developers adjusted UVs on some models to use a mirrored texture, but didn’t mirror the texture, and vice versa. There are several noticeable problems with texture mirroring in different levels in the PC version. You can read more on that in posts dedicated to each level. Twinkle Park and Lost World are good examples.

It may be hard to discuss artistic changes in SADX because everyone’s aesthetic preferences are different. Someone may prefer the more “realistic” look of the new textures introduced in SADX. Those who prefer the original Dreamcast look may think those new textures look lifeless and boring (in some cases they are literally the same textures but desaturated), but to each their own. However, when it comes to textures that weren’t redesigned, the Dreamcast version has the highest quality textures, and each subsequent port has more and more problems coming from recompression.

This is an unfortunate situation because the Dreamcast version is now the least accessible release, while the PC and nextgen console ports, which are the most accessible ways to play the game right now, have got the worst quality textures out of all versions of the game. Combined with broken lighting and a plethora of other problems in the ports, people who play them first without knowing what the Dreamcast version was like may get a wrong impression of the game. This could be part of the reason Sonic Adventure is no longer remembered as fondly as it used to be. The Steam and nextgen console ports in particular have done a lot of damage to the reputation of the Dreamcast classic.

Thanks to the efforts of the SADX modding community, the textures in the 2004 PC version are no longer an issue. The developers of SADX Mod Loader have added a texture pack feature, which allows to load custom textures in lossless formats like PNG for any part of the game. The Dreamcast Conversion mod restores original PVR textures for the whole game, and the HD GUI mod adds custom high resolution textures for HUD, menus and other 2D items. There’s also a Gamecube Project mod if you want Gamecube textures. To read on how to install mods, head over to the “Fixing the PC version of SADX” section of this blog.