スプラトゥーン3で使えるドット打ち自動化ツール(windows+ArduinoUNO3)
概要
スプラ3でも動作するものを探して導入した手順の備忘録です。実際に手を動かしたことは1から100まで書いて残そうとおもいます。
結論
投稿できました。複数有志の手で改良が進められているため使用したリポジトリを気が向いたときに追加していきます。
progmem / Switch-Fightstick | GitHub
ベースとなるリポジトリshinyquagsire23 / Switch-Fightstick | GitHub
splatoon2用のドット打ち自動化のリポジトリ
Loloweb / Switch-Fightstick | GitHub
shinyquagsire23さんのリポジトリのフォークです。スプラ3にも対応していますがbin2c.pyとpng2c.pyに修正が必要です。これを使用する場合はpng2c.pyを開いてfor i in range~の部分を次のように変更してください
//この1行をコメントアウトする
#for i in range(0, 320*120) / 8):
//この1行を追加する
for i in range(0, 4800):
https://github.com/Sp4rkR4t/splat3draw
shinyquagsire23氏のリポジトリのフォークです。Loloweb氏のbin2c.py、png2c.pyで発生していたエラーを修正済です。自分は初回これを導入しました。
参考
実際の手順やトラブルシューティングの際非常に助かりました。感謝します。
また必要ソフトウェアの導入やマイコン環境構築そのものに関してはこちらを参考にしました。
C言語(WinAVR)で開発する
WinAVRインストールに関しての解説WindowsにGitをインストールする手順(2022年9月更新)
Git for windowsインストールに関しての解説Python 2.7.16 のインストール(Windows 上)
pythonのインストールに関しての解説ポケモン用マイコンの選び方と導入
マイコン選びやドライバのインストール方法、DFUモードへ移行する方法に関しての解説【ポケモン剣盾】マイコンへのプログラムの書き込み方と使い方
マイコンへの書き込みや元のファームウェアへ戻す方法に関しての解説'clock_div_1' undeclared (first use in this function) のようなエラーがmake時に表示される #1
ATmega16U2宛てにPowershellでmake実行時に
clock_div_1 undefinedのような表示とともに数行のエラーが出る場合の修正方法に関しての解説
必要品
・ハードウェア
switch本体(Lite含む)
windowsPC
Arduino UNO R3(マイコンボード、自分はポケモンで使ってるものを流用)
USB2.0ケーブル A-Bタイプ(データ転送用)
USB-typeCハブ(USB Type-CポートとUSB 3.0ポートが存在するもの)
自分が使用しているピンチケArduinoのリンクはこれです。USBケーブルも同梱で2500円以下とアドです。amazonレビューにある通りハズレ個体引くリスクはあります。
ELEGOO Arduino用UNO R3コントロールボード ATmega328P +USBケーブル
スイッチサイエンスで買える正規品はこっち(初めてswitch自動化用のマイコンを導入したりポケモン・モンハン等いろいろ流用したいなら正規品のほうが保証もついてておすすめです。
基盤むき出しが嫌なので自分はケースも買いました。組立時に小さいナット回すのが若干ダルいです。
Arduino UNO R3 透明 アクリル エンクロージャー ケース 薄型 コンパクト
ソフトウェア
splatoon3
Switch-Fightsitck
AVR
Git for windows
python2.7
LUFA
dfu-programmer
Arduino IDE
テキストエディタ
画像編集ソフト(クリスタ、無料ならGIMP等)
導入
■下準備
1.WinAVRのインストール
sourceforgeから最新版をダウンロードする。インストールはデフォルト設定のまま連打でいい。
WinAVRのpower.hを開く
[WinAVRインストール先]\avr\include\avr\power.h
WinAVRのデフォルトのインストール先はC:\WinAVR-20100110このファイル内を clock_div_1 = 0 で検索
ファイル内の検索の仕方はエディタごとに異なるが大体"Ctrlキー"と"Fキー"の同時押しそのすぐ上にある #if defined(__AVR_AT90CAN32__) から始まる部分に次の行を追加
|| defined(__AVR_ATmega16U2__) \
2~4の手順を忘れるとatmega16u2宛てにmakeするとエラーが返されるので必ず行ってください。自分は忘れて苦労しました。
2.Git for windowsのインストール
公式サイトからインストーラをダウンロードする。downloadを押せば32bit版か64bit版か自動で判別してDLが始まります。こちらもインストール時はnext連打でOKです。設定に関しては参考先の方が丁寧に解説なさっています。
3.python2.7のインストール
公式サイトからOSが64bit版ならWindows x86-64 MSI installer、32bit版ならWindows x86 MSI installerをダウンロードする。インストール時のカスタム設定でAdd python.exe to Pathにチェックを入れてインストールする。
Git Bashで以下のコマンドを実行してPillow(Pythonの画像処理ライブラリ)をインストール
pip install Pillow
インストール出来たか確認するには以下のコマンドを実行します。
pip list
■作業
1.必要リポジトリを入れる
Git Bashを起動して作業していきます。C直下に新規でディレクトリを作成しそこに必要なリポジトリを入れていきます。
//新規ディレクトリ作成
cd /c
mkdir spla3
//作成したディレクトリに移動
cd spla3
LUFAライブラリとSwitch-Fightstickを作成したディレクトリにクローンします。
//LUFAライブラリとSwitch-Fightstickをクローン
git clone https://github.com/abcminiuser/lufa.git LUFA
git clone https://github.com/Sp4rkR4t/splat3draw.git
//クローン先に移動
cd splat3draw
Switch-Fightstick が1つ上の階層のLUFAディレクトリ(大文字)を参照するので、/c/spla3/以下にSwitch-Fightstickディレクトリ とLUFAディレクトリ が存在している状態にします。
2.用意した画像をドット絵に変換する
用意した画像(例としてika3.png)をSwitch-Fightstickフォルダに入れておく。以下のコマンドで用意したika3.pngからimage.cファイルを作成する。なお画像は自分でクリスタなりGIMPなりで編集して縦横320*120pxの2値化済のものを用意する方が仕上がりは綺麗になる。
python png2c.py ika3.png //用意した画像がpng形式の場合
python bin2c.py ika3.data //用意した画像がraw形式の場合
python png2c.py -p ika3.png //変換後のika3.pngのプレビュー
3.MCUの変更
Switch-Fightstickフォルダ中にあるmakefileをテキストエディタで開き、14行目付近のMCU = at90usb1286の部分を以下のように変更しておく。
# Set the MCU accordingly to your device (e.g. at90usb1286 for a Teensy 2.0++, or atmega16u2 for an Arduino UNO R3)
MCU = atmega16u2
4.ビルドする
Git bashに戻って作業する。
正常にビルドが完了するとjoystick.hexというファイルが作成される。
make
5.ドライバのインストール
こちらからdfu-programmer-win-0.7.0.zipをダウンロード&解凍し、
dfu-programmer.exeをコピーしてjoystick.hexと同じフォルダに貼り付けておきます。PCとマイコンをUSBで接続しマイコンをDFUモードに移行させます。
DFUモードはPCとマイコンを接続後、RSTとGNDのピン(購入リンクを貼った上述の2つのボードはUSB端子に一番近い2つのピン)をジャンパワイヤ、ダルい場合ははさみ、イヤホンジャック等金属で短絡させると移行できます。デバイスマネージャーを開いて不明なデバイスを右クリック→ドライバの更新を選ぶ。コンピューターを参照してドライバソフトウェアを検索を選択し、参照先にdfu-programmer-win-0.7.0のフォルダを指定。最下層のファイルを指定しなくても自動で適切なドライバがインストールされる。
ATmega16U2のドライバがインストールされ、デバイスに表示されれば成功。
6.Arduinoへの書き込み
PowerShellを開き、joystick.hexが存在するディレクトリへ移動しマイコンに書き込まれていたプログラムを消去・上書きを実行する。
//joystick.hexが存在するディレクトリへ移動
cd c:\spla3\splat3draw
//既にマイコンに書き込まれているプログラムの消去
.\dfu-programmer.exe ATmega16U2 erase
//joystick.hexの書き込み
.\dfu-programmer.exe ATmega16U2 flash Joystick.hex
実際にgit bashでコマンド打ち込むと以下のような出力が得られると思います。
上記の画像の通りにビルド出来たらpowershellでマイコンに書き込んでいきます。たぶんこんな感じになると思います。
以下実際にマイコンをswitchに挿して動作させた結果を示す。