Nintendo Controller Teardown
fictiv.com
fictiv.com
That said, one of the cool things about how they designed the NES and SNES pads electrically/logically is that an SNES pad will actually work with an NES if you make an adapter for the different connectors, since it's the same protocol with a different number of data bits clocked. But the best part is that they didn't simply add X, Y, L, and R at the end of the bit stream for the SNES pad; instead they transposed it so that SNES Y is NES B and SNES B is NES A, which translates the common idioms used in action games on the two systems.
That confuses the development process; they likely were using NES controllers during the development of the SNES hardware for some time, before creating a SNES controller. (Similar things can be observed in more modern Nintendo SDKs: before the Wii U GamePad was finalized, for example, the Wii U SDK console unit just exposed a Wiimote extension port, and expected a Wii Classic Controller to be plugged into it. You could then treat this in software—at least for HID purposes—as if it was the GamePad.)
So it was more that for a while they had two face buttons, A and B, and then when they decided to add two more, the A and B buttons got re-labelled "B" and "Y" on the controller and in the SDK. (You can observe many games released early in the SNES lifecycle that were programmed under the assumption of only two face-buttons; these games either leave the "A" and "X" buttons functionless, or just mirror the functions between "X"<->"Y" and "A"<->"B".)
---
As an aside, I like to look at the Nintendo controller bitplane as existing in a sort of "order of complexity" for the development of arcade hardware—which Nintendo has always targeted their platform to alongside home consoles[1].
For example, the first button in the bitplane—0x1—is always "Select". This makes very little sense (hell, what game even uses that button?[2]) until you realize that, in arcade machines, this is the "button" triggered by inserting a coin![3] After that, you get A and B, because some games just need button inputs and nothing more. Then, the directional inputs, because the next level of complexity up is an arcade cabinet with a joystick. And then the rest of the buttons, in an arbitrary order.
In more recent SDKs, you'll sometimes see L and R inserted early on in the bitplane, earlier even than the directional inputs. Why? Because those buttons are for a simpler kind of arcade machine: they're flipper-signals for pinball machines! (I'm kind of surprised Nintendo cares about pinball machines, given that pinball isn't really a thing in Japan and pachinko—which is—doesn't use flippers. My guess at this point is that Nintendo IRD has a tradition of writing quick one-off pinball prototypes to test their hardware.)
---
[1] Nintendo VS., Ultra 64, Triforce, etc. Nintendo loves arcades! Though they seem to get more subdued about this fact over time; their newer arcade platforms are effectively white-labelled embedded-hardware SDKs for third-parties to use, rather than a side-effect of the creation of first-party cabinets.
[2] The Nintendo SRD "lotcheck" and Nintendo QA "burn-in test" ROMs for each console use Select and Start as their only functional buttons. (I would bet that, in the earliest console generations, before they had millions of mass-manufactured controllers laying about, the hardware developers would just have a breadboard with two resistors for Select and Start, with leads going through the 74LS165 and then over to the console. You'd just tap some wires together to simulate a button-press. Note that if all you need is Select, you don't even need the 74LS165; it doesn't matter if you're sending 0x11111111 if the console is only looking for (i & 0x1). You can accomplish that by just sticking wires directly into the console.)
[3] Run any arcade-platform ROM in an emulator; you'll have to press Select to get it going.
I totally agree with the gist of your statement but as someone who has an absurd amount of Xbox 360 controllers I'm positive that they changed the components at least twice in the standard controllers (not including the obvious redesign of the gray special D-pad controller or all the various special editions) in ways (weight distribution, outer materials) that you can totally feel without taking the controller apart.
I haven't researched this to know if this was due to changes over time or different factories or what but of the 9 or 10 controllers I had over the years (used on both the actual Xbox 360 and a PC) there were 3 distinct different types of feel that were subtle but obvious if A/B testing.
It was the right analog controller that was 'loose'
..
EDIT : eh...stupid question anyway
..
Thanks for the contribution and wiki article -- will update the post accordingly and welcome any other feedback/suggestions. Teardowns are all about learning + community input so keep the comments coming :)
Basically you write high voltage to the "strobe" line of the shift register in the controller, putting it in a state where it continuously updates to reflect current button presses. Once you remove the high voltage, it "freezes" its 8-bit state representing whatever combination of the eight buttons were last depressed, and then you make 8 successive reads from the shift register's serial line, reading off the state 1 bit at a time. It's up to the game software to be robust against bouncing, as well as against a tricky hardware bug where the DMC module of the NES's audio processing unit conflicts with the latching mechanism used by the controller's serial line. Needless to say, this must all be emulated by accurate NES emulators, too :)
[1] http://www.datasheetcatalog.com/info_redirect/datasheet/phil...
http://eskerda.com/arduino-nes-gamepad/
Repo with full instructions: https://github.com/eskerda/arduines
http://www.nxp.com/documents/data_sheet/HEF4021B.pdf http://www.nxp.com/documents/data_sheet/74HC_HCT165.pdf (pinout for LS is the same)
http://www.ti.com/lit/ds/symlink/cd4021b.pdf
http://www.ti.com/lit/ds/symlink/sn74ls165a.pdf
I don't think the differences are relevant in this application, though.
Here's a short article on the configuration: http://www.gamefaqs.com/snes/916396-super-nintendo/faqs/5395
Sega Master system had basically an atari standard port, Genesis 3 button pads added select signal for swapping two pages (alternating between a/b c/start), finally 6 button controller added third page, but to trigger it you needed to pulse select line 3 times, and this was deemed to complex for discrete logic, hence microcontroller in 6 button pads.
It would be very interesting if someone had a chart of BOM costs for the various controllers and systems, to see if the budget for controllers has changed since the NES/Famicon days.
Also of course, if Nintendo really wanted to make a killing, putting the original NES in a controller and selling that with an HDMI port on the end would be sweet. I'd pay $50 for a low-hassle, no-legal-ambiguities way to play NES games with my kid.
The main place you'll encounter problems playing legally on new equipment is with games where licensing issue have cropped up—we'll possibly never see a re-release of Goldeneye for the N64, for example, and some newer versions of games have been stripped of their original soundtracks (Crazy Taxi).
(Source: I took apart every nintendo console I own for sport/boredom when I was a kid.)
Maybe Nintendo's famous insularity is showing in their hardware designs as well as software?
Contrary anecdote: the bumpers on my SNES controller lost their resiliency before the face buttons.