The serial report is as follows:
Code: Select all
0-7 - Standard controller
8-11 - Y axis, inverted (high bits first; real positive is down)
12-15 - X axis, inverted (high bits first; real positive is right)
16 - L/R switch (1 = left)
17 - Lo/Hi switch (1 = lo)
18 - (Always 0)
19 - (Always 1)
20-23 - (Always 0)
24+ - (Always 1)Note that the speed switch does, in fact, cause the controller to report faster values. The handedness switch, however, appears to merely control a single bit of the report, signaling to the game that it should interpret the inputs differently. That is, handedness is entirely software-driven.Stationary is 0. Slow positive movement is 1, slow negative movement is F, etc.
Lo/Hi switch in Hi mode appears to produce larger values from the same amount of movement.
Supposedly an unreleased NES version of this controller inverts bits 18 and 19 (signature).
I did not note whether the report was on $4016.1 or $4017.1, which tells me almost certainly that it's the more obvious $4016.1; It is supposed to be able to work as a standard controller, after all.
The controller uses a custom 28-pin BU3219 chip. lidnariq identified a pinout from the photos, which I've illustrated below:
Code: Select all
_____ _____
| V |
A -> | 1 28 | -- 5v
B -> | 2 27 | ?? nc
Select -> | 3 26 | ?? GND
Start -> | 4 25 | ?? nc
Up -> | 5 24 | ?? nc
Down -> | 6 23 | ?? nc
Left -> | 7 22 | ?? nc
Right -> | 8 21 | ?? GND
UpdownQ1 -> | 9 20 | <- handedness
UpdownQ2 -> | 10 19 | ?? nc
LeftrightQ1 -> | 11 18 | <- speedswitch
LeftrightQ2 -> | 12 17 | -> data
nc ?? | 13 16 | <- delayedLOAD
GND -- | 14 15 | <- delayedClock
|_________|One note about the attached photos: there is a difficult-to-see hole punched through a trace underneath the BU3219 that is partially obscured by the bodge wire. The hole punch and wire reroute the handedness signal from pin 19 to pin 20.