flyinghead / flycast

Flycast is a multiplatform Sega Dreamcast, Naomi, Naomi 2 and Atomiswave emulator
GNU General Public License v2.0
1.38k stars 168 forks source link

Axial Deadzones #1010

Open squiddingme opened 1 year ago

squiddingme commented 1 year ago

Flycast currently has a simple radial deadzone, but could additionally benefit from an axial deadzone (the input is locked to a cardinal direction if it is close enough to one). The lack of axial deadzones is most noticeably a problem in Soul Reaver, where it becomes incredibly difficult to walk straight forward -- especially while carrying an enemy (the game switches to tank controls).

squiddingme commented 1 year ago

I would actually like to implement this myself but I am struggling trying to build flycast to test my implementation.

BakerIsHungry commented 1 year ago

I've been dealing with this issue in Sonic Adventure, Toy Story 2 and 102 Dalmatians as well, with TS2 having the most whack reaction out of all three as Buzz kinda just slingshots from one direction to the next no matter how subtly you push the stick. It really is an odd issue and I'll be excited when it gets fixed, though in my case, it's an Xinput controller.

SixelAlexiS90 commented 6 months ago

axial deadzone

I confirm that this is still and issue, in particular Toy Story 2 is unplayable, when using the left stick the character will only run in diagonal directions.

flyinghead commented 6 months ago

This is isn't an emulator issue. Toy Story 2 acts exactly the same on real hardware: it's impossible to run straight with the analog stick. And although the Dreamcast controller analog stick is of good quality, it has no dead zone. GameSpot review:

While the game can be played with both the analog stick and digital keys, the former is way too responsive, bordering on oversensitive and temperamental. Truth be told, it's nearly impossible to move Buzz in a straight line, making precarious movement more annoying than challenging.

Flycast 2.3 now has settings to adjust the dead zone and saturation of each controller type.

I compared the analog stick values on real hardware with the ones on Flycast with a DS3 controller and the values are similar for end of ranges, both on the vertical and horizontal axes. A dead zone is needed for the DS3 controller as mine has a variable bias up to 8-10% when centered, which the Dreamcast controller doesn't have. So the SA and SA2 issues (see #287) also aren't an emulation problem.

nexus382 commented 2 months ago

JUST FOR YOU ALL WITH THIS ISSUE: You can easily solve this, and get BUZZ running perfect.Just go in to your controller bindings and swap the Dpad and Left stick (Dpad binding to left stick, left stick bindings to Dpad) in settings >controllers> Bindings,and now you can use your stick to properly control buzz with out running in zig zags.