【RTA】【tools】ESS Adapterを自作する

よくわからない(!?) よくわかる
ESS Adapterの自作方法

f:id:Mirai_Scarlet:20200313230331j:plain

最初に

当記事はESS AdapterをArduinoを使って作成記事となっております。
前提として、ハードウェアに干渉するためWii本体やコントローラーを最悪破壊する可能性があります。*1
記事に記載されている事項を試した際に生じたいかなる損害について、私Miraiは責任を負いかねますのでご了承ください。
自己責任の元、各自制作して頂けるようよろしくおねがいします。

RetroSpy(NintendoSpy)と似たような改造を行いますが、難易度はこちらの方が高いので作りたい方は心してかかりましょう。

そもそもESS Adapterとは?

ESS Adapterってそもそも何ぞ?という人向けに簡単に解説します。

Wiiに収録されている(されていた)N64Virtual Console(以下VC)は、エミュレーション等の特性上スティック入力のデッドゾーンN64実機に比べて広く設定されており、照準合わせなどが難しいという特性を持ち合わせています。
特に64ゼルダ作品*2ではスティックを微妙な位置に傾け、維持することが必要なスライド技「Extended SuperSlide(ESS)」が存在し、感度とデッドゾーンの影響で実機に比べて非常に難しい技*3となっております。

この現象を改善するために、コントローラーのマッピングをソフトウェアを用いて変更するアダプターを海外にて開発され、先述のESSが用意に出来るようになったことから「ESS Adapter」と呼称されるようになりました。

2020年現在、このアダプターは海外の通販サイトで販売されているものが存在しますが、順番待ちが発生していたり、そもそも海外通販ということもあり日本からでは気軽に入手しづらいものとなっております。

WiiVCが主力となっているゼルダ作品のRTAでは便利なツールとなっておりますが、必須かと言われるとそうでもなく無くてもRTAは問題なく可能です。
あった方が便利というのは確かなのですが、世界記録狙いをするでも無い限りは無くても大丈夫です。って姫が言ってた

また、外部ツールということもあり出始めた頃にゼルダコミュニティでは議論が行われ、時のオカリナでは使用しても記録が認められますが、ムジュラの仮面では使用が禁止されていますので注意しましょう。
正直どうしてこうなった。当時ムジュラの方がHESS使う難しい技あったのに解せぬ。

ESS Adapterの説明はこちらを参照しました(リンク先英文)

danielkraak.com

必須ではないと言ったものの、ソースコードが公開されているものが存在しており自作することが可能となっております。(現状時オカのみ対応しているが、数値を変えれば他のゲームでも使えると思います)

github.com今回はこちらのgithubのものを用いて、ESS Adapterを自作する手順を紹介して行きたいと思います。

必要なもの

Readme.mdに書いてありますが、作成に必要なものは下記の通りになります。
※現状、GameCubeコントローラ(以下GCコン)の入力のみに対応しているので、GCコンので必要になるものを記述します。*4
 また、私が作成した際に必要に感じたものを記述していきますので、Readmeの内容とは一部異なる場合があります。

必須

  • ESS-Adapterのプログラム一式
    リンク先のclone or download→download zipからダウンロードできる
    github使っている場合はリポジトリをチェックアウトしても大丈夫
  • ATmega328が搭載されたArduinoボード
    Arduino UNOArduino nanoであれば確実に使用できる
    同じチップを搭載していれば互換機でも大丈夫
    今回はnanoの互換機を使用しましたが、nanoの互換機はヘッダピンがついてないことが殆どなので自力でつける必要があることには注意*5
    またnanoの端子は懐かしのmini-B端子*6なので互換機を買う際はケーブルの有無に注意
  • Arduino IDE
    Arduinoボードに書き込む為のソフトウェア
  • 750Ω抵抗
    配線をブリッジする際に使用する
    電圧が違うため、無いと反応しないか壊れる
    500Ω~1000Ωの間の抵抗ならなんでも大丈夫らしい
    ネットで買うと大量に来るので、これだけを作るなら実店舗で必要数だけ買うといいかも*7
  • はんだごて・はんだ
    RetroSpyでは必須ではなかったが、今回は抵抗をつける関係上必須
  • ジャンパワイヤー(オス-オス)
    やすいのでok
  • 絶縁テープ
    100均のビニールテープで大丈夫
    ダイソーには絶縁用として置いてあると思う
  • GCコン or GCコン延長ケーブル
    GCコンのケーブルを剥くことでも作れなくはないが、かなりリスキーな為延長ケーブルを強く推奨
  • 検電テスター
    GCコンのpin配列を調べるために必要となる
    なくても行けるが、配線を間違えるとWii等を壊してしまう危険性があるのでほぼ必須となる
    自分は持ってなかったので弐寺専コンとジャンプワイヤを使って無理やり確認しました
  • ブレッドボード
    配線チェックをする為に必要
    なくても大丈夫だが、nanoを使う場合は本体が小さいためほぼ必須となる
  • 電子工作に対する知識(少量でok)
    中学校の技術の授業の範疇でできる
    はんだ付けができるなら特に問題ない(できないと無理)

あると便利

  • ワイヤーストリッパー
    銅線の被膜を取るのに非常に便利
    無くても爪とかではがせるが、余計な銅線まで切れてしまう可能性もあるのであるに越したことはない
    (もし買う時は安物だとうまく剥がれない可能性があるので注意)
  • エレクトロタップ
    被膜を剥がさずにケーブルを分岐できるのであるとすごい捗る
    サイズを間違えると断線したりそもそも通電しなかったりするので注意

手順

大まかな流れは以下のとおりです。

  1. GCコンケーブルの被膜を取り、テスターを使い配線を確認する
  2. Dataケーブルを分断し、ジャンプワイヤを取り付ける
  3. 残りの配線にジャンプワイヤを取り付け分岐させる
  4. Arduinoにソフトウェアを書き込み、配線する
  5. 時オカを起動して動作確認する
  6. Dataケーブルのcontroller側と3.43V supplyを抵抗を用いつつブリッジする
  7. 完成!!

1.GCコンケーブルの被膜を取り、テスターを使い配線を確認する

外側のケーブルシールドをワイヤーストリッパーやはさみなどで剥がします。
外すと5色のケーブルが出てくると思うので、これらをワイヤーストリッパーを用いて銅線を露出させます。

露出させたらテスターを用いて、各色の配線がどのpinに割り当てられているのかを調べます。
延長コードのメス側の端子と、各導線をテスターで繋ぐ事で調べられます。
http://www.int03.co.uk/crema/hardware/gamecube/images/gc-socket1.gif
▲メス側のpin位置(Nintendo Gamecube Controller Pinoutより)

pin情報は以下の通りになります。

1pin.5V Power Supply(Yellow)
2pin.Data(Red)
3pin.Ground(Green)
4pin.Ground(White)
5pin.none
6pin.3.3V loggic Supply(Blue)
(7.ケーブルシールド(Black))

 

 

大体赤がDataなことが多いですが稀に違ったりするので、調べるのが確実かつ重要となります。

以降の項目では純正のケーブル色を用いて解説しますので、自分の使用するケーブル色に置き換えるようにしてください。

2.Dataケーブルを分断し、ジャンプワイヤを取り付ける

どの色がどの配線かを調べたら、2pinのDataケーブル(赤)を切断します。
切断したら、切断部分の銅線にジャンプワイヤを取り付けてArduinoボードに差し込む準備をします。
この際、Wii本体に差し込む側とコントローラーを差し込む側を区別できるようにしておくと次の作業が捗ります。

銅線とジャンプワイヤを接続する際にはんだ付けをすると固定しやすくなります。
(ぐるぐる巻にして絶縁テープで覆ってしまうのも一つの手)

 

3.残りの配線にジャンプワイヤを取り付け分岐させる

前の工程までに使用しなかった残りの4本(1,3,4,6pin)にもジャンプワイヤを取り付けて、ボードに刺しこめるように分岐させます。

この工程は(6pinを除き)Arduinoに直接電源供給をするためのコードを分岐させているだけな気がするので、ArduinoにUSB接続で電源供給する場合は行わなくても大丈夫かもしれません。

4.Arduinoにソフトウェアを書き込み、配線する

ここまで来たら用意したArduinoをPCと接続し、DLしたファイルから「(ESS-Adapter/)ESS-Adapter.ino」を開いてボードに書き込みます。(予めIDEをインストールしておいて下さい。)

書き込む際、Arduino Nanoの互換機を使用している場合に書き込みに失敗する可能性があります。
その場合は「ツール→プロセッサ」から「ATmega328P(Old Bootloader)」を選択することによって書き込むことが出来ると思います。

f:id:Mirai_Scarlet:20200314021210p:plain

書き込みが終わったら、ブレッドボードを用いて下図のように配線を行います。
この際、青と赤をブリッジするのに抵抗を使用するのを忘れずに行います。
https://raw.githubusercontent.com/Skuzee/ESS-Adapter/master/ESS-Adapter-Schematic.png

f:id:Mirai_Scarlet:20200314021701j:plain

図通りの色の場合は以下のように配線します。

1pin(黄):VIN
2pin(赤)コントローラー側:D6
2pin(赤)本体側:D8
3pin(緑) or 4pin(白):GND
抵抗:D6-ボードの任意の場所*8*9
6pin(青):抵抗と繋がっている列と同じ列

USB接続で電源供給している場合、VINとGNDは無くても動作します。

5.時オカを起動し動作確認をする

配線が完了したらコントローラーと本体にそれぞれ繋いで時オカを起動し、正常に動作するかどうかを確認します。
PracticeROMを導入している場合は搭載されている入力表示を見るのが確実です。
正常に動作している場合、スティックを倒しても75前後で入力が止まるはずです。(通常時は128まで入力される)

youtu.be

動作確認が取れたらケーブル部の絶縁をして完成となりますが、ブレッドボードを用いずケーブル単体で動作するようにする場合は次項に進んで下さい。

※正常に動作しない場合

そもそも操作できない場合は配線が間違っている可能性があるので見直して下さい。
入力は出来るけど動けない、入力が途切れ途切れになる場合は、ESS-Adapter.inoを開いて下記の1行を注釈文扱いにするか丸々消してから再度Arduinoに書き込みをしてみて下さい。(2020/03/14時点)

(368行目)
writeToUSB_BYTE(data);

f:id:Mirai_Scarlet:20200314024134p:plain

6.Dataケーブルのcontroller側と3.3V supplyを抵抗を用いつつブリッジする

ケーブル単体で動作させる場合は、先程配置した抵抗をケーブルに直接取り付けます。
Dataケーブル*10のコントローラー側と、3.3V supply*11を750Ωの抵抗でブリッジさせます。
Data側はジャンプワイヤを付けた位置から接続3.3V側は配線確認した際に出した銅線部分で接続すると比較的簡単に接続出来ると思います。
抵抗が小さいので、なにかで固定できるようにしておくと捗ります。

この工程は1.の直後に行っても大丈夫ですが、間違って配線して動かないとなると再配線が大変なので注意しましょう。

配線したら絶縁テープを巻いて完成となります。

※間違って配線するとwii本体などが壊れる可能性があるので注意!

f:id:Mirai_Scarlet:20200314014844p:plain
▲絶縁できればだいぶ適当でも大丈夫 識者に怒られそう…

7.完成!!

f:id:Mirai_Scarlet:20200313212948j:plain
▲めちゃくちゃごちゃごちゃしてしまった自分の1号機
 緑が途中で断線していたりと散々だった

ケーブル周りと整えたら完成です。お疲れさまでした。

終わりに

今回掛かった費用はNano互換機(450円)・ブレッドボード(220円)・抵抗(8円)*12・延長コード(元々あるのを使ったけど800円ぐらい?)・ジャンプワイヤ(255円)でだいたい1800円弱ぐらいでした。2000円あれば作れそうですね。
はんだごてがある前提ですが、無くても1500円ぐらいで揃えられると思うので作業時間を考慮しなければ非常に安価で制作できることが分かりました。
海外通販だと送料込で6000円程掛かってしまうので、多少の電子工作知識を必要としますが自作するのは一つの手段として有りなのかな、と思いました。
作業中にwiiの電源が入らなくなったのは冷や汗書きましたがね…

自分が作った際は色が違ったり配線が間違ってたりと散々で、動作確認まで3日近く掛かってしまいました。
動作したと思ったら明らかにArduino通ってなくてぬか喜びしたりと色々大変でしたが本当になんとかって感じでした。NintendoSpyのときとは比にならないぐらい難しい…

時オカの海外鯖に専用のチャンネルがあり、google翻訳を駆使してアドバイスを頂きました。
特にコード修正に関しては製作者から聞いたので、これがなかったら恐らく作れなかったまであるので非常に助かりました。Thank You!

とりあえず人柱的に作ったはいいものの、ムジュラでは使えないのが悲しいところです。
時オカ走るしかないかな…

 

質問等あればコメントか筆者のTwitterまでお願いします。(多分Twitterの方が早いです)

*1:特に今回は配線をブリッジさせる為、誤った配線にするとWii本体に過電流が流れてしまい破損する危険性が高い

*2:時のオカリナムジュラの仮面

*3:人力でできない訳ではない

*4:将来的にN64コントローラーにも対応するらしい

*5:しかし正規品はバカ高いというデメリットがある。今回使用したnanoの互換機は秋葉原のラジオデパートで450円にて購入しました

*6:PSPの通信やDS3の充電とかに使うケーブル

*7:秋葉原千石電商で1個8円

*8:ボードの他の端子に干渉しないよう注意

*9:6pinに直接繋いでもいい

*10:2pin

*11:6pin

*12:予備で4つぐらい買った