SFCコントローラーをパラレル風の信号に変換





概要
SFC(スーパーファミコン)コントローラーの仕組みを理解する。



SFC(スーパーファミコン)の標準コントローラー(SHVC-005)の通信はシリアル通信をしているので
信号線の本数がボタンの数よりも少なくて済む構造になってます。
これは、メーカーが機器を作る時にコード代をコストダウンでき、
接点部分の削減になるので故障も減る事と思います。

しかし、ジョイスティックなどを自作しようと思った場合、
この事が足かせになり、思うように使えなかったりします。

長い前置きになってしまったけど、要は「これ使って信号線をばらそう」って事っす。



*注意点

使った物リスト
部品名 個数・量
PIC 16F84A-20/P
発振機 セラロック10Mhz
抵抗 750オーム 8
LED 適当な物を 8
基板 (サンハヤトICB-288など)
導線、ハンダ 適量
SFCのコントローラーコネクター メス コネクターの入手について



HEXファイルとソース
書き込みモード
Oscillator HS
WDT OFF


回路図(すいません、手抜きっす。)

bmp版はこちら
図中での表記は省略してますが、電源はジャスト5V、抵抗は全て750オーム、セラロックは10Mhzです。



  • コネクターの入手について。
    コネクターだけでは市販されていないので流用もしくは抜き取りします。
    が上げられます。


    エクステンダーの抜き取りは非常に安価(500円程度)でできるのでおすすめですが、
    メスコネクター付きケーブルになる以上、コネクターをケース等に収めるのが不向き(もしくはできない)と思います。

    マルチタップの抜き取りはコネクターが一度に4、5個も入るのでいいように思います。
    普通にゲームショップで買うと2000円程度なので1個当たり400〜500円程度でしょうか。
    ハードオフなどのジャンクで500円くらいで売ってる事もあります。

    最後のSFCの本体からの抜き取りはハッキリ言ってメリット少ないです。
    私は、たまたま壊れた本体が手に入ったりしたのでこの方法でしましたが、
    普通にやると1個当たりの単価も高く、しかもSFCは専用ドライバーが無いと分解すらできないので
    コネクター取りだけの場合はおすすめできません。






  • 図中の解説
    コネクターのピンアサイン

    bmp版はこちら

    SFCパッドの構造ですが、信号線は負論理のDAT。正論理のP/S、CLKから成ってます。
    かなり適当ですが、下の図のように電圧が+5V(Hiレベル)になったり、0V(Loレベル)になったり変化してます。


    変化の順序は次の流れで行われます。

    1:P/S、CLKがHiになる。
    2:パッドのBボタンが押されてなければHi、押されていればLoにDATが変化する。
    3:CLKがLoになり、再びHiになる。
    4:パッドのYボタンが押されてなければHi、押されていればLoにDATが変化する。
    5:CLKがLoになり、再びHiになる。
    ・・・・・・
    と繰り返し、CLKが17回目のHiになる時に再びP/SもHiになるわけです。

    なお、ボタンの割り当てとCLKの回数の表は以下のようになってます。(汚い表でごめんなさい。・・・上手く表が書けなかった。(泣)
    CLKの回数 1 2 3 4 5 6 7 8
    割り当てボタン B Y SELECT START
    CLKの回数 9 10 11 12 13 14 15 16
    割り当てボタン A X L R 識別符1 識別符2 識別符3 識別符4
    *標準パッド(SHVC-005)では識別符は全てHiになります。

    とまぁ、SFCのパッドはこんな風に通信をしてたわけです。
    ちなみに、FC(ファミコン)パッドも互換があり、上記表のYをAに変えると上2段がFCのパッド仕様になります。(解り難いかな?)



    コントローラーを作りたいって人へのヒント
    4021ってデジタルICを2つ使うとスーファミコントローラーは作れます。
    ジョイスティックを作ろうって場合とか、コントローラーを1つ潰さずに4021とエクステンダーのオスコネクターを使えばOK。
    作り方は・・・他のHPで取り上げてる人もいるみたいなんで、そっちを。(他力本願な。(笑))
    っていうのも、他がやってない事をやるのが一応の「あんかけ」の趣旨なんで。





  • 後記
    いやはや、最初はプロトコル(っていうとオーバーかな?)の話しまでするつもりなかったのですが、
    それじゃあPICのソースを付けた意味ないよな?なんて思い、結局書いてしまいました。

    上にはややこしくなるんで書きませんでしたが、識別符って処理的に省略できるんですよね。
    ソースには一応、識別符の分もCLK出してますが、Rボタンまで取りこんだらP/SをHにして、
    Bボタンの取りこみに行っても問題なかったです。
    これがどういう意味かと言うと、取りこみ時間が短縮できるんです。
    10Mhzの場合1サイクルが0.4usecなんで、1識別符当たり3サイクル x 4識別符分 =12サイクル(4.8usec)節約できます。
    取りこみ時間が限られてる場合なんかには有効な手段かと。



    参考文献
    Analyze Hardware in Video Games  Kashima氏

    トランジスター技術2001年12月号



    戻る  インデックスに戻る