Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Analog control as real analog (not digital) input



  • I'm not sure how much of this stuff is relevant, but....

    Pi Model or other hardware: 3B
    Power Supply used: 2.5A 5v
    RetroPie Version Used: 4.4
    Built From: retropie-4.4-rpi2_rpi3.img from retropie webset
    USB Devices connected: wireless keyboard dongle
    Controller used: ps3 wireless bluetooth controller (brand unknown).
    Error messages received: none
    Emulator: lr-mame2003

    If anything more is needed, please advise.

    I'm having some difficulty using the analog joystick on my controller in some games. The contoller I'm using is this: https://www.amazon.com/gp/product/B0711X143N/

    I find that I can generally use the joystick on my controller as well as the D pad by making changes in the retroarch menu after launching a game, and specifying that I have an analog controller and mapping joystick input to digital. With some fumbling around on the menus I was even able to figure out how to make this default behavior for all games.

    However, this seems to have issues with some games that use real analog controllers in their original arcade cabinet, such as a trackball. What I find, in particular, is that the joystick does not produce as strong of an input as might be desired or sometimes even necessary, and when using either the joystick or digital controls in these games, the character or aiming icon moves only very slowly, whereas in the actual arcade game, spinning the trackball really quickly will actually result in a measurable speed difference. I would expect that using an analog joystick, how far one moves it off center will correspond with how quickly one is spinning a trackball, but even pushed all the way to the side, it doesn't move anywhere nearly as quickly as the arcade game.

    Games that best illustrate this are Missile Command and Marble Madness. In the case of the latter game, not being able to make the character go faster makes the game essentially unplayable past the beginner level.

    Beyond the aforementioned changes in the retroarch menu, and changing the default config menu key in all games to Right Trigger+Left D (because I found I was accidentally tapping the right trigger by itself far too often), I have not made any other changes to any configurations.

    What do I need to do to fix this?

    Thanks,
    Mark



  • @markt I'd try it in a game that has actual analog controls - a driving game like OutRun works fine for testing and then you'll be able to see whether they're being detected as analog or not.

    A trackball isn't really an analog control in the true sense of the word, even though I understand where you're coming from, so I wouldn't expect that to work as you intend out of the box. That's not how emulators interpret analog controls.

    I had similar issues with mapping trackball controls to my joysticks as well. If you find a specific configuration that does what you expect, do share as I'd also be interested



  • @pjft Thanks for the input... for clarification, the only real reason I had suspected that the reason it is an analog issue is because the joystick never gets things moving any faster than the D pad, owing, I imagine, to translating the analog joystick to digital per the retroarch menu change I did. It seemed very much of an on-off thing, where the original cabinet game, I remember that how fast you spun the trackball would affect how fast the things you were controlling would move.

    In Marble Madness, which is where I was doing most of my experimentation, I know that it is possible on some levels to get completely stuck, and have no option but to let the game time out because one cannot get the charcter to move fast enough to achieve certain tasks, like go up steep hills or jump over sometimes necessary gaps.

    The way the missile command cursor moves so steadily in response to input had me thinking that it may have the same issue.

    What I want, of course, is for how far I push the joystick in one direction to actually appear as input to the game how fast the trackball is being spun in that direction.

    Honestly, it wouldn't surprise me if my controller isn't even being detected as analog for some reason, although running jstest on the device I can clearly see the signed 16 bit values for the controller's x and y axes for each joystick.

    Edit: And testing just now, it actually seems as if setting the analog to digital option in retroarch causes the joystick to be simply equal to the D-pad, and act as a digital rather than analog input at all. So what I want is what I originally said... for the analog joystick to work as analog input for games like what I've mentioned above, and for the joystick to move the appropriate objects at a rate commensorate with the amplitude instead of at some fixed speed that can only be adjested by changing the strength of each axis in the analog controls menu for the game.



  • @markt correct. As I said, and from reading your jstest tests, your joysticks are effectively being recognized as analogs correctly, it's just that they don't really map to the trackball the way you think they could.

    You may try another emulator (lr-fba vs lr-mame vs AdvMame) and see if they handle it differently, or maybe someone has a different idea on how to configure it to make it work the way you want.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.