SNES controller schematic

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
Post Reply
hyvax
Posts: 5
Joined: Sun Feb 22, 2015 12:04 pm

SNES controller schematic

Post by hyvax »

Hello everyone. I was trying to build an arcade controller for my SNES, I found and build two versions of the controller (one using 2x 4021 and the other one using 2x 74ls165 and 1x 74ls04). I was following these schematics:

http://www.raphnet.net/electronique/arc ... rol_en.php
http://www.gamesx.com/controldata/nessnes.htm

My goal was to connect my custom db15 neogeo compatible controller to the snes by using one of the above scenarios, so far without success. Unfortunately I have no idea what im missing here. Both scenarios are not working for me and i have no idea what may be the cause (assuming the schematics are fine). I very quickly made simple one sided boards in eagle, take a look at it, maybe You will find some flaws in it:
snes_controller.zip
Eagle schematics
(52.69 KiB) Downloaded 393 times
Both controllers act the same, only "B" button is working fine, other buttons are not working at all. The strange thing is - when I hold the B button, im able to use left, right, start, select and A buttons - I wonder if schematics found on the web are correct, or maybe I made some mistakes while designing that simple boards. I have already build an arcade controller for NES and Sega MD without bigger issues.

Looking forward for some help!
lidnariq
Posts: 10677
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: SNES controller schematic

Post by lidnariq »

hyvax wrote:Both controllers act the same, only "B" button is working fine, other buttons are not working at all. The strange thing is - when I hold the B button, im able to use left, right, start, select and A buttons - I wonder if schematics found on the web are correct, or maybe I made some mistakes while designing that simple boards
That sounds kinda like the B button is shorted to P/S. Or at least, something is definitely wrong with IC1's P/S pin, anyway.
Markfrizb
Posts: 540
Joined: Sun Dec 02, 2012 8:17 am
Location: East Texas

Re: SNES controller schematic

Post by Markfrizb »

This is the sch I use (works of course).
this is for a single controller. so for 2 controllers, you'd need x 2.

Edit: resistor network is 10k value
Attachments
ScreenHunter_131 Feb. 22 21.58.jpg
Last edited by Markfrizb on Sat Dec 10, 2016 9:33 am, edited 1 time in total.
hyvax
Posts: 5
Joined: Sun Feb 22, 2015 12:04 pm

Re: SNES controller schematic

Post by hyvax »

Thanks for posting guys - looks like schematics are OK, after checking on the one You posted Markfrizb... according to the schema You posted - just to be 100% sure:

Image

1) +5V
2) Clock
3) Latch (P/S)
4) Data (Dataout)
7) GND

is this correct? If Yes I still have no clue what I'm missing here :(
User avatar
whicker
Posts: 228
Joined: Sun Dec 13, 2009 11:37 am
Location: Wisconsin

Re: SNES controller schematic

Post by whicker »

I don't have Eagle so I can't view your files.
hyvax
Posts: 5
Joined: Sun Feb 22, 2015 12:04 pm

Re: SNES controller schematic

Post by hyvax »

PNG versions here:
whicker wrote:I don't have Eagle so I can't view your files.
Attachments
snes_controll_PNGs.zip
(84.74 KiB) Downloaded 295 times
Markfrizb
Posts: 540
Joined: Sun Dec 02, 2012 8:17 am
Location: East Texas

Re: SNES controller schematic

Post by Markfrizb »

hyvax wrote:Thanks for posting guys - looks like schematics are OK, after checking on the one You posted Markfrizb... according to the schema You posted - just to be 100% sure:

Image

1) +5V
2) Clock
3) Latch (P/S)
4) Data (Dataout)
7) GND

is this correct? If Yes I still have no clue what I'm missing here :(

Yes, that's correct
hyvax
Posts: 5
Joined: Sun Feb 22, 2015 12:04 pm

Re: SNES controller schematic

Post by hyvax »

Good news :D while looking for the answer and a possible solution to the problem I found this schematic on the web:

http://arcadecontrols.com/images/stephan_snes_cc.gif

it caught my attention, that not used "SI" pin11 on the 2nd 4021 is not grounded there, so I tried it and un-grounded this pin in my circuit... and everything is working like a charm now! That did the trick.

So... I guess (in mine experience) that unused serial data input on the 2nd 4021 should not be grounded ! Any idea why on almost every schematic on the web it is? Strange...
User avatar
whicker
Posts: 228
Joined: Sun Dec 13, 2009 11:37 am
Location: Wisconsin

Re: SNES controller schematic

Post by whicker »

so what happens if you pull that SI pin up to +5V instead of leaving it floating?
nocash
Posts: 1405
Joined: Fri Feb 24, 2012 12:09 pm
Contact:

Re: SNES controller schematic

Post by nocash »

That SI pin is not "not used". It is used to define the padding bits that appear after reading the first 16 bits. That bits are used for detecting if a controller is connected - and as far as I can tell they should be LOW, so GNDing that pin was correct.

When not GNDing it, at least some games should stop working (if they contain a controller detection function). I don't know why your circuit worked better without GNDing - unless maybe you did have shortcut SI with some nearby pin(?).

Aside from that, if you want to use the circuit on a PAL console, then you will need pull-up resistors on the open-collector outputs from SNES side, ie. on the CLK and LATCH lines.

Maybe... if you are using a PAL console, then your floating open-collectors signals might have been "healed" by leaving SI floating, too. But of course, relying on floating signals wouldn't be a good solution.
hyvax
Posts: 5
Joined: Sun Feb 22, 2015 12:04 pm

Re: SNES controller schematic

Post by hyvax »

nocash wrote:That SI pin is not "not used". It is used to define the padding bits that appear after reading the first 16 bits. That bits are used for detecting if a controller is connected - and as far as I can tell they should be LOW, so GNDing that pin was correct.

When not GNDing it, at least some games should stop working (if they contain a controller detection function). I don't know why your circuit worked better without GNDing - unless maybe you did have shortcut SI with some nearby pin(?).

Aside from that, if you want to use the circuit on a PAL console, then you will need pull-up resistors on the open-collector outputs from SNES side, ie. on the CLK and LATCH lines.

Maybe... if you are using a PAL console, then your floating open-collectors signals might have been "healed" by leaving SI floating, too. But of course, relying on floating signals wouldn't be a good solution.
Thanks for that explanation nocash!

Im using this circuit on a PAL console :) so far every game i tried works OK and detected the controller without any issues. I already tried putting pullups on clk and latch lines (with grounded 2nd SI line) while trying possible solutions to the problem. Pullups just like I did in the NES controller, according to this schema:

https://projects.drogon.net/wp-content/ ... ematic.png

and it was not working :) - to be honest I have no idea why it works with floating 2nd SI... double checked on a original PAL SNES controller - this pin IS grounded, no doubt about that. I already checked for shorted lines like 10x times, and Im 100% sure everything is connected as it should.

Maybe signal lines are to close to eachother on the PCB are interferencing somehow... no idea, im not that good in electronics. Also, IC's used in original controller from what I saw are 4021B - IC's that I put in mine are 4021N (not sure about that "N" - will check and confirm - anyway they differs) maybe some characteristics of that ICs differ... ?
srepmub
Posts: 1
Joined: Sun Nov 27, 2016 10:57 am

Re: SNES controller schematic

Post by srepmub »

hi all,

I ran into the exact same problem using multiple schematics from the web, so just the B button works, and refused to give up.. turns out that the exact value for the pull-up resistors for latch/data/clock is pretty important.

on a breadboard version of the schematics from raphael assenat, I ended up using a 1.2kohm resistor just on clock, and on an (identical) PCB version that I made the same value wouldn't even work, so I went down to 467ohm.. now everything is working consistently.

note that I use 10kohm pull-ups for all buttons. I also put a little bit of aluminum tape on the conductive little plates under the select and start buttons, or there was too much resistance in them. looks like this might be solvable as well by varying the 10kohm resistors, but I've had enough.. :-)

here's a link to my project, which also includes a precisely 3d-modeled and printed controller (electronics go inside):

http://www.thingiverse.com/thing:337896

I hope to write a detailed summary of this project on my blog soon:

http://blogfarts.blogspot.nl/
Post Reply