HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2022/06/25

ファミコン、スーパーファミコンのゲーム コントローラの信号線の通信仕様のまとめ ファミコン、スーパーファミコンのゲーム コントローラの信号線の通信仕様のまとめ

(NES、SNESのコントローラの信号の仕様、4021、W545、V520、V520B、シフトレジスタ)

Tags: [FPGA], [電子工作], [Xilinx XC6SLX9], [FPGA 2022]




● ファミコン、スーパーファミコンのゲーム コントローラの信号線の通信仕様のまとめ

 NES、SNESのコントローラの信号の仕様、4021、W545、V520、V520B、シフトレジスタ。

 下記の FPGAでファミコンを動かす、では本物のファミコンのコントローラを使用しています。
 なのでファミコンのコントローラの通信仕様を調べてみました。

2022/06/25
FPGA Spartan-6 XC6SLX16でファミコンを動かす!
FPGA Spartan-6 XC6SLX16でファミコンを動かす!

  Xilinx FPGA Spartan-6 XC6SLX16 NES clone in ALINX AX309

 ちなみに MSX等の D-SUB 9pinのジョイスティックの信号は単純に各 pinにボタンの配線がしてあるだけです。
 通称 MSX仕様 ジョイスティック

1 UP
2 DOWN
3 LEFT
4 RIGHT
5 (+5V)
6 A
7 B
8 GND
9 (NC)


● NES

 コントローラの内部には 4021と言う汎用のシフトレジスタが使われています。

 全部で 8bit長で各ボタンの状態を送信します。
 ボタンの状態は負論理(Lowで押した状態)です。

CD4021BE
MN4021B MNは松下
MC14021B MCはモトローラ
TC4021BP TCは東芝

CD4021B-Q1 CMOS 8-Stage Static Shift Register datasheet

白 +5V
オレンジ LATCH(P/S)
赤 CLOCK
茶 GND
黄 DATA

LATCH _|~~~|_____________________________________________________________________

CLOCK ~~~~~~~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~~~

DATA  -|    A      |   B   |SELECT | START |  UP   | DOWN  | LEFT  | RIGHT |-----

DATA
High = None
Low  = Pushed

・ Player 1
4016H bit 0 Set
4016H bit 0 Reset

4016H Read bit 0
4016H Read bit 0
4016H Read bit 0
4016H Read bit 0
4016H Read bit 0
4016H Read bit 0
4016H Read bit 0
4016H Read bit 0

CPUからの bitの読み値は Highと Lowが逆転しています。
0 = None
1 = Pushed

・ Player 2
4017H bit 0 Set
4017H bit 0 Reset

4017H Read bit 0
4017H Read bit 0
4017H Read bit 0
4017H Read bit 0
4017H Read bit 0
4017H Read bit 0
4017H Read bit 0
4017H Read bit 0

・ Player 2 Mic
4016H Read bit 2


● SNES

 コントローラの内部には W545や V520と言うミツミ製のシフトレジスタが使われています。

 全部で 16bit長で、最後の 4bitは機器 IDとなっています。
 ボタンの状態は負論理(Lowで押した状態)です。

初期型、W545 12pin 2個使用
中期型、V520 20pin
後期型、V520B 20pin

白 +5V
黄 CLOCK
オレンジ LATCH(P/S)
赤 DATA

茶 GND

16.67ms = 1/60 sec

LATCH _|~~~|______________________________________________________________________________________________________________________________________

CLOCK ~~~~~~~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~|___|~~~~~~

DATA  -|    B      |   Y   |SELECT | START |  UP   | DOWN  | LEFT  | RIGHT |   A   |   X   | Top-L | Top-R | ID(H) | ID(H) | ID(H) | ID(H) |------

DATA
High = None
Low  = Pushed

SHVC-005 ID=HHHH



Tags: [FPGA], [電子工作], [Xilinx XC6SLX9], [FPGA 2022]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】
【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】

  夏休みが明けたら 僕のキーボードが最強になって クラスのみんなから MMK 大作戦

BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法
QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法

  QMK firmware How to Reduce Program Size、Reducing QMK firmware size

QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use IO Expander Multiplexer / Demultiplexer / Decoder

QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575

QMK firmwareで Audio機能を試してみる
QMK firmwareで Audio機能を試してみる

  QMK firmware test Audio function with Piezo buzzer

QMK firmwareで OLED機能で SSD1306を試してみる
QMK firmwareで OLED機能で SSD1306を試してみる

  QMK firmware test OLED Driver with SSD1306

QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる
QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる

  QMK firmware test Analog Joystick function with PSP2000 Analog Stick

最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法
最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法

  QMK Bugfix Create New Keyboard new_keyboard.sh command No such file or directory Error

QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法
QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法

  refusing to allow an OAuth App to create or update workflow `.github/workflows/api.yml` without `workflow` scope

中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物
中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物

  中華製のプログラマブル USBキーボード KeyboardSetter.exe

社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2022 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/nes_snes_pad/