Fire button problem using lr-Stella with Atari2600 USB Joystick
Short version: My USB Atari2600 Joystick fire button does not work when running games in lr-Stella.
I've Googled this problem to death, and no luck. Here are my parameters & stats:
Pi model 3
Power: CanaKit 2.5A USB Power Supply
Retropie version: retropie-4.1-rpi2_rpi3.img
Built from: SD image on retropie website
USB devices connected: Keyboard & "SyzygyCo.USBClassic2"
Here are the pertinent setups from my main config file:
input_driver = "udev"
input_up_axis = "-1"
input_b_btn = "0"
input_down_axis = "+1"
input_right_axis = "+0"
input_left_axis = "-0"
The "B" button is set correctly in the main retroarch config file. The fire button (B button) works within emulationstation (backs out of menus like the "B" button would do on the keyboard). On a previous attempt using a different retropie build, the button fired correctly in Stella, but not in lr-stella. (this current build does not appear to have the standard Stella installed yet). The fire button also works on the PC, so I'm sure it's not a hardware issue.
I've tried hardcoding the config data above into the Atari emulator folder itself, but no change (\RETROPIE\configs\atari2600\retroarch.cfg)
The joystick only has 1 button, in classic 2600 style, so I realize I'll need a keyboard plugged in to actually start the game, (select button/ start button/ etc), but was hoping to use the fire button once I get the game started.
At the end of the day, I'd like the play the Atari games with my original style 2600 controller (USB) on a regular basis, but also be able to use my Logitech Gamepad F710 as a backup, just in case. So, I'd prefer to stick with lr-stella if possible.
I can't seem to find anyone with the same problem. Closest issue was a player 2 fire button issue from 2015, but looks like that should be fixed.
I have not tried to update anything beyond using the newest image file (4.1).
Let me know if you've been able to get a standard Atari2600 controller (USB) with a single fire button to work within lr-stella. and, possibly, where I can dig to find a solution to my issue.
edmaul69 last edited by edmaul69
@yortdog add this to your joystick configuration:
Input_player1_a_btn = "1"
Let me know if you've been able to get a standard Atari2600 controller (USB)
There really isn't a standard Atari 2600 USB controller. Every manufactuer handles their implementation of USB just differently enough to cause issues here and there. The closest thing to a standard would be an original 2600 controller hooked up through a USB Stelladapter.
Is it all games you're having trouble with or just some? I ask because lr-stella does not support games that make use of paddles, keypads, booster-grips or trackballs. Also, you seem to be coming from a much older version of lr-stella and if memory serves, the fire button may have been switched to the 'A' button. I can't swear to that, but I seem to remember having to map it back to 'B' at some point. If this is the case, you can invoke the RetroArch GUI while in a game by pressing 'Select+X' and navigae to 'Quick Menu' and then 'Controls' where you can then remap for that particular core.
Thanks for the quick replies.
Side note, to be clear, I should have indicated I'm using an RPi3 Model B v1.2
@edmaul69 > I tried that extra line of code in several places, but no luck.
Also tried with & without "player1_" just in case that made a difference.
@mediamogul > I meant "standard Atari2600 controller" in the sense of "a joystick that looks like the original, and only has 1 button" verses an xbox type with several buttons. :)
The fire button doesn't work in all the games I've tried (H.E.R.O/Enduro/Laser Blast/Megamania -- none of which are paddle driven).
When you said: "you seem to be coming from a much older version of lr-stella," could you elaborate? Should I use the Retropie-setup script to "Update all installed packages"?
I jumped into the RetroArch GUI while in a game, under controls, but wasn't sure of my next step. And, at the time, the Atari joystick button wouldn't allow me advance within the menus. (and pressing 'enter' on my keyboard pushed me back to emulationstation).
Thanks again for your time, everyone. I've spent months (off & on) trying to troubleshoot this solo without luck.
When you said: "you seem to be coming from a much older version of lr-stella," could you elaborate?
I may have misread the situation, but after mentioning the previous build you used, you seemed surprised that Stella was not installed by default and it's been that way for a while now. Also, within that time, I believe lr-stella has seen at least one update.
at the time, the Atari joystick button wouldn't allow me advance within the menus.
If it comes down to it, you'll need to use a keyboard or your F710 to remap. However, rather than just jumping in and changing the control scheme, why don't you first try playing a game with the F710 and see if the 'A' button will let you fire. If it does, use the controller to switch 'A' and 'B', then save the core mapping. After that, you can relaunch the software with your 2600 controller and the mappings will still be switched.
@mediamogul > Correct, again.
...after mentioning the previous build you used, you seemed surprised that Stella was not installed by default and it's been that way for a while now.
Sadly, I guess that reveals how long I've been struggling with this issue. I had the same problem with the Retropie 4.0.2 image, but gave up on this issue temporarily to chase other tweaks. I figured I'd try again on the 4.1 image.
As another confirmation test, I can use my retro NES USB controller to fire using the "B" button in lr-stella. (Keyboard plugged into upper left usb port & NES controller plugged into lower left usb port). lr-stella recognizes the NES controller on port 0 right away. The NES controller B button is correctly mapped the main retroarch config & works properly in the default NES emulator and emulationstation home screens.
The keyboard "B" button also fires in lr-stella, but the Atari2600 joystick does not. If I unplug both NES controller & keyboard, and add the atari2600 controller (lr-stella recognizes the joystick in port 0 again), but still can't fire.
On the previous build, the F710's "B" button also fired in lr-stella, so I assume it would work on 4.1, too.
So to summarize, both the NES USB controller & Keyboard can fire using the mapped "B" button in lr-stella, but the Atari 1-button joystick cannot. Although, the joystick fire button does act like a B button in the emulationstation menu, and I presume, the original Stella emulator.
I found a link to the exact joystick I'm using: Syzygy Co USB Classic 2
I assume it doesn't matter which usb slot I use for the keyboard and joystick?
edmaul69 last edited by edmaul69
@yortdog i made a mistake. In the controllers specific config you dont put player1 just player. Add this to your controllers config. If this doesnt work there swap 1 and 0 on a and b
Input_player_a_btn = "1"
Also if you made config settings inside rgui you probably need to delete that config file.
@edmaul69 : I tried the new line of code, but no dice.
In the main .cfg file (here:\RETROPIE\configs\all\retroarch-joypads\SyzygyCo.USBClassic2.cfg), it seems "player" isn't needed either, but I tried every conceivable combination of "player", a_btn, b_btn, "0" and "1" to no avail.
My next attempt to fix the problem was to "Update all core packages from binary." After the updates were completed, the "B" button still did not fire in lr-stella.
Next, I installed "Stella" (using the setup script --> manage optional packages --> install from binary). Using this emulator, the "B" button worked as expected. The single button joystick fires in the games using Stella, and follows retroarch B-button assignments in emulationstation (backs out of menus, etc).
I'll have to work on screen aspect ratio if I keep "Stella" my default emulator, but that's for another thread...
Meanwhile, is there anything else I can try to get lr-stella to recognize the fire button of this single joystick controller? It's nice to see regular Stella recognize the joystick directions & fire button properly by default.
This has been my 3rd attempt at a Retropie build, so I'll be surprised if starting over again will be the fix.
I don't see anything relevant in the /dev/shm/runcommand.log
In the "read this first" post, it requests to explain how to replicate the problem, but I think I'm at the mercy of anyone else that has a single button usb joystick controller and can back me up.
Thanks again team.
I wanted to follow up on my progress. After a lot more experimentation and re-reading the help in this thread, I found the answer to my problem. I'll spare you the 100 things I tried that didn't work & jump right to the good part:
Using my single button SyzygyCo.USBClassic2 controller, I ran a jstest and received this result when pressing the fire button:
Axes: 0: 0 1: 0 Buttons: 0:on 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off
This led me to believe this line in the config file for this joystick was correct:
input_b_btn = "0"
But the button wouldn't fire.
I jumped into the RGUI menu while playing an Atari2600 game.
Specifically, 1.4.1 - Stella 3.9.3 cdbc9cc
Main Menu --> Settings --> Input --> Input user 2 binds -->
Found this setting:
User 2 fire = auto: 0 (N/A) (Key:...)
On this line, RGUI allowed me to click & define the actual fire button.
Screen pop up displayed this:
[B button (down]
press keyboard or joypad
When I hit the button, a "6" showed up instead of the default "0" as originally defaulted.
I changed my specific controller's .cfg file
input_b_btn = "0"
input_b_btn = "6"
And now it works perfectly. Is it weird that the jstest showed a different result than what's needed inside the RGUI lr-stella emulator? In any case, I'm stoked this one is finally solved.
Thanks for all the tips along the way.
edmaul69 last edited by
@yortdog that is odd to be that far off in numbers. Glad you got it working.