Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
29
Help us understand the problem. What is going on with this article?
@keita44_f4

Splatoon2で自動ドット打ちしてくれるやつをWindows10の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

参考文献

29
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
keita44_f4
よんたった

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
29
Help us understand the problem. What is going on with this article?