Live data from Hacker News

Building a USB SNES Controller

blog.chybby.com

61–70 of 101 posts

Re: Building a USB SNES Controller

#61
These, as well as NES dittos, were all over eBay and AliExpress for $3 a piece some 10 years ago. Probably still are. I've got one of each, just to get the right feeling when playing Zelda 1 and Pocky & Rocky on emulators.

Re: Building a USB SNES Controller

#63

RetroUSB has adapters for those not looking for a project. I bought one of their NES adapters years ago. https://www.retrousb.com/product_info.php?cPath=21&products_...

I just got a RetroUSB Genesis adapter to use a 22-year-old Asciiware Power Clutch SG I had rotting in the basement for some JavaScript Gamepad API experiments. The adapter works great, feels good to breathe new life into an ancient peripheral!

Re: Building a USB SNES Controller

#64
post #2

Of course completely awesome to make a modification like this. However, if you yourself want a USB SNES controller, consider buying one instead. 8BitDo offers them with the SN 30 Pro - the quality is good, they work with the Nintendo Switch or PC (including Linux), they have the additional buttons needed for modern games, there is a wired and a wireless version and the newer variant has afaik a replaceable battery (u…

[deleted]

Re: Building a USB SNES Controller

#67
post #59

I once modified a SNES controller and put a whole Raspberry Pi Zero, battery and boost/charger board inside for a portable retropie setup.

Wow, that would be incredible! Did you document the project at all? I'd love to know more and maybe attempt something similar.

I just followed this guide. It’s pretty straightforward! https://hackaday.io/project/16288/instructions

Re: Building a USB SNES Controller

#68
post #2

Of course completely awesome to make a modification like this. However, if you yourself want a USB SNES controller, consider buying one instead. 8BitDo offers them with the SN 30 Pro - the quality is good, they work with the Nintendo Switch or PC (including Linux), they have the additional buttons needed for modern games, there is a wired and a wireless version and the newer variant has afaik a replaceable battery (u…

I speed run Zelda 2, though using an SNES controller. My experience with 8BitDo controllers is that they're stiffer than OEM, especially with the d-pad arrow keys. If you can use the analog inputs, they're great -- I use a Pro 2 with my Switch all the time. The d-pad, though, is a deal-breaker for classic gaming. iBuffalo used to make a controller that really did feel like OEM, but they've been out of the business fo…

Can only recommend the iBuffalo SNES controller too, I have two of them and they are quite good. Didn't know the brand stopped making them, it's a pity.

Re: Building a USB SNES Controller

#69

RetroUSB has adapters for those not looking for a project. I bought one of their NES adapters years ago. https://www.retrousb.com/product_info.php?cPath=21&products_...

Kind of amazing that you can get a whole controller (including buttons etc.) for a fraction of the cost of an adapter. Probably a less authentic experience though: https://www.aliexpress.com/item/1005005998083106.html

I picked up my NES controllers at Goodwill. Super cheap and the real thing.

Re: Building a USB SNES Controller

#70
post #26

Looking at the described protocol it seems the SNES controller uses a simple 16-bit parallel-in-serial-out shift register - and a quick Google confirmed that. This means the timing is almost certainly quite loose, and there's a pretty decent chance you might even be able to poll it as the 1kHz "needed" for "serious" gaming. And it'd be pretty trivial to offload the readout to the MCU's SPI peripheral.

It's extremely loose! Using a custom PCB to connect the controller over RJ45 to a custom Pi hat I wrote some code to simply display the button presses on screen, to test the functionality of the controller (we are modifying hundreds). I had to play around a lot with the timings to match up the response of the program with the speed of my finger pushing a button, else the program would return "you pushed B" a dozen ti…

Were you checking to see if the button state changed between reads? Or were you reading a 1 as "down" regardless of whether the previous read was "up"?
Post reply on HN