Splatoon2で自動ドット打ちしてくれるやつをWindos10のWSLで使う

More than 1 year has passed since last update.


おおまかまとめ


  • Switch-Fightstickすごい


    • マイコンボードにポッ拳コントローラのフリをさせて1ドットずつ描画する



  • スプラトゥーン2とPCを持っていれば、3,000円くらいで可能


    • teensy++ 2.0を買う、teensy 3.xは未対応なので買ってもできない

    • Arduino UNO R3やArduino microでも可能



  • ソフトウェア開発・マイコンボードに対する知識があると良い

  • Windows10ならWSLを利用すると、環境をあまり汚さなくてよい


必要なもの


  • ハードウェア


    • Nintendo Switch(本体)

    • Splatoon2(ソフト)

    • Windows10 PC(cmdがあるWindowsやLinux PCやMac PCでも可能、本稿では手順の違いを述べない)


    • teensy++ 2.0(マイコンボード)


      • 3,000円くらい

      • Switch-Fightstick公式によれば、Arduino UNO R3とArduino Microでも動作確認済みらしい

      • teensy 3.xはarm cpuになっておりLUFAライブラリが非対応

      • うっかりteensy 3.2を買ってしまったよ…



    • (追記:なくてもOK)USB-A to USB Type-C変換コネクタ(teensy++ 2.0についているUSB-A/USB-Micro-BのケーブルをNintendo Switchに接続する)


      • Switchのクレードルを使えば、必要ない

      • 500円くらい

      • これが安かったし、動作もした





  • ソフトウェア(少なくとも、個人利用ならどれも無料)


    • GIMP(画像編集ソフト、白黒化とpngデータ吐き出しをする。手持ちのソフトでもOK)

    • Switch-Fightstick(偉大なツール、LUFA同梱・非同梱のどちらかを使う)

    • LUFA(AVRマイコン用USBライブラリ、上記ツールが使用する)

    • teensy.exe(teensy公式のバイナリ書き込みソフト)

    • WSL (Bash on Windows)


      • python2.7(LL言語、WSLにすでに入っているはず)

      • gcc-avr、avr-libc(avrコンパイラとライブラリ、WSLでのUbuntuパッケージ)

      • git(バージョン管理ツール、Switch-Fightstickを落とすのに使う)

      • WSLを準備する方法については、本稿では取り上げない






手順


下準備


GIMPのインストール


  • GIMP公式からdirectlyダウンロードし、gimp-xxx-setup.exeを実行する




WSL上に必要なパッケージをインストール

WSL上で作業する


  • git、avrコンパイラとライブラリをインストールする

  • python2.7(パッケージ名python)がなければ入れておく


    • たぶん元から入っている


    • png2c.pyを動かすのにPILライブラリが必要



sudo apt install git gcc-avr avr-libc python-pil


Switch-Fightstickをダウンロード

WSL上で作業する


LUFA同梱版で行う場合(簡単)

Switch-Fightstickの最新には追従しきれていないが、LUFAライブラリが同梱されている。

(追記)最近、高速化コミットを取り入れた。

git clone https://github.com/EsProgram/Switch-Fightstick.git

cd Switch-Fightstick
git checkout 1.1.0f


非同梱版でやる場合(ちょっと手間だけど最新版)

こちらはLUFAライブラリが同梱されていない。

そのため、自分でダウンロードし配置してから作業する。

本稿執筆時点では、GithubのPRにて高速化バージョンが提案され、マージされた。

git clone https://github.com/abcminiuser/lufa.git

git clone https://github.com/shinyquagsire23/Switch-Fightstick.git
cd Switch-Fightstick


本作業

本節以降を繰り返せばいろいろなドット絵を扱える


元画像の準備


  • 320x120サイズを良いする

  • jpgでもpngでも、GIMPで開ければ良い


画像を白黒化

GIMPで作業する

もちろんGIMPを使わず、各自手元のIllustratorやPhotoshopやCOMIC STUDIOなどを使って320x120サイズの白黒画像を用意してもよい。(トーン使ってみたい)


  • 画像を開く


    • 画像をGIMPにドラッグアンドロップで開ける




  • 白黒化


    • [Image] -> [Mode] -> Grayscale]


      • 2値化はSwitch-Fightstickツールがやってくれるため、やらなくてもよい

      • [Image] -> [Mode] -> [Indexed]の「Use black and white (1-bit) paltette」を使い、自分で2値化してもよい

      • 2値化の処理によって見え方がだいぶ変わるため、自分でやるほうが綺麗な画像をつくれる

      • 拘るなら、明るさ、コントラスト、フィルター、2値化処理方法をいじる

      • さらに拘るなら、生成されたpngのドットを微修正する

      • さらにさらに、2値化前に、[Fileters] -> [Artistic] -> [Cartoon]で先に輪郭を強調しておくと、よりキレイにできる








  • PNG画像で保存


    • [File] -> [Export As...]

    • [PNG image]を選択

    • ファイル名は.pngにしておく




画像をc言語ソースファイルに埋め込み

WSL上で作業する

git cloneしたSwitch-Fightstickディレクトリ内で作業する


  • python2.7とpng2c.pyでcソースファイルに埋め込むため、下記コマンドを打つ


    • ファイル名は自分が保存したパスと名前にする

    • PNGが2値化してあるなしを認識し、良しなにしてくれる

    • 用意した画像がraw data(.data)ならbin2c.pyを使えばよい



python png2c.py [image.png]

うまく行けば、下記のメッセージが出る。

また、git statusimage.cが更新されているのを確認できる。

image.png converted with original colormap and saved to image.c


teensy++ 2.0用のバイナリファイルの作成

WSL上で作業する

git cloneしたSwitch-Fightstickディレクトリ内で作業する



  • makeを叩きビルドする


    • 成功すると、[INFO] : Finished building project "Joystick".と出る

    • Makefile内のMCU項目を書き換えることで、Arduino UNO R3/Microへ対応できる(らしい)



  • 生成されたJoystick.hexをWindows側Cドライブ内へコピーする。

make

...(ログ省略)
cp ./Joystick.hex /mnt/c/[いい感じのところ]


  • LUFA非同梱版を使った場合はmakeコマンドでLUFAライブラリのパスを指定する


    • もしくは、自分でmakefile内のLUFA_PATHの項目を正しく書き換える



make LUFA_PATH=../lufa/LUFA

...(ログ省略)
cp ./Joystick.hex /mnt/c/[いい感じのところ]


teensy++ 2.0への書き込み

Windows10環境にて作業する。

先項で生成されたJoystick.hexを、公式の書き込みツールでteensy++ 2.0へ書き込む


  • teensy.exeを起動する

  • tennsy++ 2.0をPCに接続する

  • [File] -> [Open HEX File]



    • Joystick.hexを指定する



  • tennsy++ 2.0のスイッチを押す

  • [Operation] -> [Program]

  • [Operation] -> [Reboot]

teensy-exe.png


Nintendo Switchで画像描画を実行

Nintendo Switchとスプラトゥーン2で作業する


  • 投稿画像編集画面へ行く

  • ペンを一番細いものにする


    • (追記)開始点への移動、キャンバスのクリア、は勝手にやってくれる。



  • Nintendo Switchにteensy++ 2.0を接続する


    • 画像はUSB Type Cで接続している図

    • (追記)SwitchのクレードルのUSB-A端子に接続してもできる




  • 1時間30分ほど待つ


    • 高速版なら30分くらいかかる

    • (追記)LUFA同梱版も高速化された



switch-teensy.JPG


参考文献