Sonic Adventure 2's analog stick readings

13 January 2026

i got a little handheld gaming thingy (RG40XX H) for myself as a holiday present, specifically because it's the cheapest model that can run Sonic Adventure 2 (dreamcast version). being able to play this game whenever i want, on a device that's the size of a GBA, fills 12-year-old-Azure with excitement and astonishment at the wonders that the future holds. neopossum floof happy

this event sent much-older-Azure on a wild journey about this game's analog stick readings though, and how every version messes it up in different ways. (except maybe the Gamecube version? i can't find any info, maybe that one's fine!)

i got the dreamcast PAL version because 50hz runs much better on this device. but it had a real weird bug where the stick's inputs seemed to be rotated a bit, so pushing straight forward actually runs at an angle about 5° to the left. neopossum confused i swapped to the US version, suspecting it was a regional difference or a weird emulator bug, but this game's analog stick is just messed up, and my device's intentional analog stick deadzone really magnified the problem. there's a patch file to fix it at least! the patch is for the US version, but it turns out that that one lets you run in 50hz anyway if your region's set to Europe, so it's fine for me.

details about the bug that's only interesting to programmers the analog stick returns values representing its horizontal position from (for example) -100 to +100. they wanted to implement a deadzone in the middle, so that it's easier to run straight ahead, so they wanted a small amount of values (say, between -10 and +10) near the center that are all precisely 0. they don't want it to suddenly jump from 0 to +11 though, so all other values need to get adjusted towards the center too.

they do this with: "move all values towards zero by 10"

when they should've done: "move all values towards zero, by either 10, or the magnitude of the existing value, whichever is smaller"

it's honestly a really easy mistake to make, it's pretty subtle. with their version, a value of +6 "overshoots" to -4. all values around zero are still doubled-up though so it does make it easier to run forwards, but there's essentially rounding errors meaning it won't be perfectly straight. i bet the devs just thought it was their controller being a little wonky?

and of course, the PC/Steam port made everything worse. the analog stick is so garbled that everything basically always snaps to cardinals+diagonals, and rail grind balancing is impossible. there's a fan patch to fix that and many other things (on gamebanana/github) which i'd say is pretty essential if you'll be playing that version. maybe not as essential as BetterSADX for its prequel though, which is one of the worst ports i've seen in my entire life. make sure to enable Dreamcast mode so everything actually has colors and lighting! at least there's dedicated fans putting in tons of work to undo all the damage that Sega's chain of bad ports did to these wonderful games. neopossum scream

so that's "push Up to make sonic run forwards", failed in three different ways. thanks for reading! neopossum heart



Comments


Sunfluffs mode

Copy Kitty mode