shigobu が 2023年05月12日14時09分50秒 に編集
「欲しい人いますか」追加
本文の変更
# Raspberry Pi Pico WでGCコンをSwitchのワイヤレスコントローラに Pico Wを使用した面白そうな工作無いかなとネットの海をさまよっていたら、見つけました!! [retro-pico-switch(Github)](https://github.com/DavidPagels/retro-pico-switch) 今回は、これを使用してGCコンをSwitchにワイヤレスで接続しようと思います。 ## ゲームキューブコントローラ  根強い人気を誇るゲームキューブコントローラ(GCコン)。20年以上前に発売されたにも関わらず、再販され続けています。スマブラをプレイするのにこのコントローラでないと無理って人もいるのでは無いでしょうか?一応、公式でも「ニンテンドー ゲームキューブ コントローラ接続タップ」なるものが用意されていて、Nintendo SwitchにGCコンをつなげることができます。有線ですが。 # 接続のために基板を作成 コントローラと接続するのに、延長ケーブルを使用する方法が紹介されています。この方法が一番シンプルで簡単でしょう。 https://github.com/NicoHood/Nintendo/wiki/Gamecube しかし、なんか販売業者が怪しいし切断したら延長ケーブルとして使えないので、違う方法を考えました。 基板むき出しのUSB端子みたいに、基板を差し込んで使えたら良いなと思ったので、プリント基板を設計しました。KiCadで設計し、KiKitというプラグインで面付けをしてJLCPCBに発注しました。4×4で5枚発注したので、80個できました。厚さが心配でしたが、1.6mmがピッタリでした。
欲しい人いますか?
  # 接続 GCコン側は、作成した基板を差し込むだけです。UPと書いてある方を上にして差し込みます。 Raspberry Pi Pico Wとの接続は以下の表のとおりに接続します。また、3V3とGP18の間に1kΩのプルアップ抵抗が必要です。 | コントローラ | Raspberry Pi Pico W | |:---:|:---:| | 1 | VBUS(振動用) | | 2 | GP18 | | 3 | GND | | 4 | GND(振動用) | | 5 | NC(無接続) | | 6 | 3V3 | コントローラの1番ピンと4番ピンは振動用で、振動がいらない場合は接続しなくても動作します。 # ファームウェア書き込み ビルド済ファームウェアが公開されているので簡単です。 1. [Githubのリリースページ](https://github.com/DavidPagels/retro-pico-switch/releases)を開き、「bt.uf2」ファイルをダウンロードします。 2. Raspberry Pi Pico W を、BOOTSELボタンを押しながらPCにつなげます。 3. ファイルエクスプローラでPicoを開き、そこへ手順1のbt.uf2ファイルをドラッグ・アンド・ドロップします。 4. 終わり # 電源 電源は、USBから供給するか、VSYS端子へ電池をつなぐかで供給できます。今回は、ファームウェアを書き込むためにPCに繋いでいたので、そのままUSBから供給しました。 # Switchとの接続 「コントローラー」→「持ちかた/順番を変える」を押して、GCコンのLボタンとRボタンを同時に押すと接続できます。 # ボタン割り当て だいたい同じ名前のボタンに割り当てられています。 ## 表面 | ゲームキューブコントローラ | Switchコントローラ | |---|---| | A | A | | B | B | | X | X | | Y | Y | | START/PAUSE | + | CスティックはRスティックに割り当てられています。 ## 側面 ゲームキューブコントローラのL・Rボタンは二段階のボタンになっていて、浅い押しとカチッとなるまで押し込むので異なる信号が出ます。 | ゲームキューブコントローラ | Switchコントローラ | |---|---| | L 浅い | ZL | | L 押し込み | L | | R 浅い | ZR | | R 押し込み | R | | Z | L | | L + R + START/PAUSE | HOME | ## 無いボタン - Lスティックボタン - Rスティックボタン - ーボタン - キャプチャーボタン ## L・Rボタンの制限 ゲームキューブのL・Rボタンの仕様上、以下の制限があります。 - L と ZLの同時押しができない - R と ZRの同時押しができない - L 入力の前に ZL 入力が入る - R 入力の前に ZR 入力が入る # テストプレイ 実際にゲームをプレイしてみます。 ## マリオカート8DX 普通にプレイできます。 側面にあるボタンの上下が同じアクションなので、プレイに影響しない。また、スティックボタンも使わない。 ## スプラトゥーン3 プレイできません。 スティックボタンが無いので、スペシャルが使えません。 # まとめ 今回、ビルド済ファームウェアを使用したので、とても簡単にできました。一番の難点は、コントローラの信号を引き出すところでした。これには、自作のプリント基板を使用することで解決しました。面付けをしてみたかったので、80個も作っちゃいました。ほしい人いますか? ちなみに、今回使用したファームウェアは、64コントローラ版もあります。メインはむしろそっちらしいです。Switchで64のゲームができるようになったので、それを本物の64コントローラでプレイ出来るということですね。