&gt; instead they transposed it so that SNES Y is NES B and SNES B is NES A<p>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.)<p>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 &quot;B&quot; and &quot;Y&quot; 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 &quot;A&quot; and &quot;X&quot; buttons functionless, or just mirror the functions between &quot;X&quot;&lt;-&gt;&quot;Y&quot; and &quot;A&quot;&lt;-&gt;&quot;B&quot;.)<p>---<p>As an aside, I like to look at the Nintendo controller bitplane as existing in a sort of &quot;order of complexity&quot; for the development of <i>arcade</i> hardware—which Nintendo has always targeted their platform to alongside home consoles[1].<p>For example, the first button in the bitplane—0x1—is always &quot;Select&quot;. This makes very little sense (hell, what game even <i>uses</i> that button?[2]) until you realize that, in arcade machines, this is the &quot;button&quot; 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 <i>then</i> the rest of the buttons, in an arbitrary order.<p>In more recent SDKs, you&#x27;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&#x27;re flipper-signals for pinball machines! (I&#x27;m kind of surprised Nintendo cares about pinball machines, given that pinball isn&#x27;t really a thing in Japan and pachinko—which is—doesn&#x27;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.)<p>---<p>[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.<p>[2] The Nintendo SRD &quot;lotcheck&quot; and Nintendo QA &quot;burn-in test&quot; 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&#x27;d just tap some wires together to simulate a button-press. Note that if <i>all</i> you need is Select, you don&#x27;t even need the 74LS165; it doesn&#x27;t matter if you&#x27;re sending 0x11111111 if the console is only looking for (i &amp; 0x1). You can accomplish <i>that</i> by just sticking wires directly into the console.)<p>[3] Run any arcade-platform ROM in an emulator; you&#x27;ll have to press Select to get it going.