小ネタ 2007-008

Wiiクラシックコントローラーとヌンチャクの中身の互換性

Wiiリモコンの拡張コントローラーの「クラシックコントローラー」と「ヌンチャク」を調べてみたところ、中身に互換性があるということが分かった。


1. 分解調査

 クラシックコントローラーとヌンチャクを分解して調べてみたところ、両者ともにコントローラーの制御用のICとして「FNURVL」という型番のICが使われていた。

  
 クラシックコントローラーの基板の"FNURVL"と、ヌンチャクの基板の"FNURVL"

 同じICが使われていることから推測すると、このICはワンチップマイコンで、コントローラー基板の製造後にファームウェアを書き込んで、ヌンチャク基板のICはヌンチャク版ファームウェアを書き込んだFNURVLになり、クラシックコントローラー基板はクラコン版ファームウェアになるのだと予想していた。以下、実験で色々と調べてみたのだが、実はもうちょっと複雑な仕掛けになっていることが分かった。



2. ヌンチャクとクラシックコントローラーのICの交換

 それぞれのコントローラー基板からFNURVLを取り外して、入れ替えて再度ハンダ付けして実装してみた。

 結果、
 ・ヌンチャク基板に、クラシックコントローラー基板から取り外したFNURVLを実装したものは、ヌンチャクとしてWiiに認識された。
 ・クラシックコントローラー基板に、ヌンチャク基板から取り外したFNURVLを実装したものは、クラシックコントローラーとしてWiiに認識された。

 ただし、センサーのキャリブレーション値がずれるせいか、IC交換したヌンチャクの加速度センサは正常に動作しなかった。

 この結果から、FNURVLというICには、ヌンチャク用のファームウェアとクラシックコントローラー用のファームウェアの2つともあらかじめ書き込まれていると予想される。ファームウェアの切り替えは、基板上の配線でどちらかに切り替わるのだろう。



3. ヌンチャクとクラシックコントローラーの回路を調べてみる

 基板上のどこで切り替えが行われているか調べてみた。

 結果、FNURVLの36番ピンで切り替えしていることが分かった。
 FNURVL 36pin → H (high, +3.3V) の場合、クラシックコントローラーになり、
 FNURVL 36pin → L (low, GND) の場合、ヌンチャクになる。

 実際に、ヌンチャクの基板を加工して36pinをHにすると、クラシックコントローラーとしてWiiに認識された。
 クラシックコントローラーの基板を加工して36pinをLにすると、ヌンチャクとしてWiiに認識された。
 ただし、両者は、ボタンやスティックの回路が異なるため、コントローラー自体の動作は、当然、正常に動作しない。

 FNURVLのピンを調べたメモを書いておく。推測なので、あまり当てにしないように。
 pin1 - i2c SCL
 pin2 - i2c SDA
 pin3..pin17 - Digital Input
 pin18..pin19 - TEST
 pin20..pin22 - ??? (for debug??)
 pin23 - Vcc
 pin24 - GND
 pin25..pin32 - Analog Input
 pin33 - output?
 pin34..pin39 - Digital Input
 pin40 - RESET
 pin41 - ???
 pin42..pin43 - TEST
 pin44..pin45 - TEST?
 pin46 - Capacitor
 pin47 - GND
 pin48 - Vcc



4. ヌンチャクの部品を改造してクラシックコントローラー互換品を製作する

 ヌンチャクから取り外したFNURVLを使用して、コントローラーの回路を真似て実際に作ってみたところ、動作するものができた。
 ヌンチャクを材料にしてクラシックコントローラーっぽいものを製作することが可能である。

 
 作製した基板



5. WiiのVC用ジョイスティックを製作する

 上記と同様にFNURVLを使って、VC用にジョイスティックを作ってみた。
 素材として、SFC用のジョイスティックを使っており、機能はデジタルPad機能のみ。
 Wiiリモコンの拡張ポートに接続すると、クラシックコントローラーとして認識される。
 WiiのVCのストリートファイター2(SFC)で試してみて、正常に機能しているのを確認した。

 
 作製したジョイスティック



6. FNURVL自作クラシックコントローラー/自作ジョイスティックの配線メモ

 ・Memo for My Classic Controller/Joystick (w/FNURVL)
 pin6 - Left Trigger
 pin7 - (BACK)
 pin8 - HOME
 pin9 - START
 pin10 - Right Trigger
 pin12 - Z Left Trigger
 pin13 - B Button
 pin14 - Y Button
 pin15 - A Button
 pin16 - X Button
 pin17 - Z Right Trigger
 pin27..pin28 - (Analog Trigger Input)
 pin29..pin32 - (Analog Stick Input)
 pin34 - LEFT
 pin35 - UP
 pin38 - RIGHT
 pin39 - DOWN



7. ヌンチャクの配線メモ

 ・Memo for Nunchaku Controller
 pin10 - C Button
 pin11 - Z Button
 pin28..pin30 - 3Axis Acceleration Sensor Input
 pin31..pin32 - Analog Stick Input



--
クラシックコントローラー、ヌンチャク用の配線の未使用のピンはVccにつなげておく。
pin5、pin20..pin22、pin33は未接続でOK。




(後日加筆 2008.4.19)

クラブニンテンドーの景品のSFCコントローラー型のクラシックコントローラーを入手したので、中身を見てみた。使われているICはFNURVL。
  





(後日加筆 2009-03)

Related