Famicom network controller HVC-051

The controller

A while ago I documented how the NTT Data Keypad (NDK10) for Super Famicom communicates. I did not know it at the time, but a similar controller also existed for the Famicom: The HVC-051!

The HVC-051 controller

The HVC-051 controller

The HVC-051 controller

The HVC-051 controller



Of course I decided to get one to figure out how it works.... my results are published here.


How it works

To learn about how NES/SNES controller works, I recommend this page: Super Nintendo Entertainment System: pinouts & protocol. Yes, it's for SNES controllers, but it's almost the same. NES/Famicom controllers only need 8 clock cycles to be read since there are fewer buttons.

But to read the status of the HVC-051, a total of 24 clock cycles are required. Here are waveforms comparing the HVC-051 bit sequence with that of a normal controller.

Standard Famicom/NES controller:


HVC-051 controller:


And the same data in a table:
BitHVC-051 ButtonStandard controller button
0A / 目次A
1B / 実行B
2前ページ (Previous page)Select
3次ページ (Next page)Start
4UpUp
5DownDown
6LeftLeft
7RightRight
80
91
102
113
124
135
146
157
168
179
18*
19#
20.
21C
22
23通信終了 (End of communication)




Methodology

I thought it could be interesting to also talk about what I did to find out the bit sequence.

Knowing that Famicom/NES controllers are very similar to SNES controllers (they are just shift registers, with a clock, latch and data signal), I built a simple adapter (wire-to-wire, no micro-controller) to connect a Famicom controller to an SNES console.

Famicom pinSignalSNES controller reference
1GND
13Data
12Latch
14Clock
15+5v


Famicom to SNES

Famicom to SNES



Such an adapter would normally be useless since games expect SNES controllers. But I intended to use my own SNES program, the simple controller test I developed during the 2018/09 RetroChallenge. This tester simply reads 32 bits from the controller and displays the result on screen (a green square means a 0 was present on the wire).

With the HVC-051 and the adapter connected to port 2, I just had to press every button, writing down the corresponding bit.



Here is the ROM I used, in case it might be useful: test32.sfc


Disclaimer

I cannot be held responsible for any damages that could occur to you or your equipment while following the procedures present on this page. Also, I GIVE ABSOLUTELY NO WARRANTY on the correctness and usability of the informations on this page. Please note, however, that the procedures above have worked in my case without any damages or problems.

Now you cannot say that I did not warn you :)