見出し画像

Windowsで.hexファイルを作成する(Switch-Fightstick)

はじめに

皆さんこんにちは。ゲーム好きの和菓子です
noteを備忘録として書く事にしました
書くジャンルは主にゲームとPC関連(arduinoやraspberry pi含む)になると思います
こういったブログ形式で書くのは初めてなため拙い文章になりますがお許しを
これから不定期で更新していくつもりなのでよろしくお願いします。

本題(経緯)

去年発売してDLC発表で盛り上がってるゲームあるじゃないですか、スマブr...ポケモンですね!!!(DLC購入済)
そのポケモンも改造なしで乱数調整ができるようになったわけですが、狙った個体を出現させるには日付を所定の回数変えまくるしかないのです
場合によっては1万回以上にもなるので、マクロコントローラーか何かで自動化したいと思う人もいるでしょう
僕も同じ考えでした。以下にその考えと結果を記しますと

マクロコン買うか...?でもお金は使いたくないな...

そういえばマイコンにSplatoon2でドット打ちさせるやつあったな!調べてみよう

なるほど、対応マイコンがあれば自由に操作できるのか
家にそんなのあったかな...(5分後)あったわ(Arduino UNO R3)

さて、じゃあプログラム書き込んで動かすか...え!?.hexファイルは環境整えてコンパイルしないといけないの!?でもやり方わからん...
↓(数日後)
とりあえずコンパイルと書き込みできるようになったから記事としてまとめておこう!

そして今に至ります
てな訳で長くなりましたが今回のお題は「Windowsで.hexファイルを作成する(Switch-Fightstick)」です。

環境を整えよう

多分この手の記事調べてる人はこれが一番知りたいと思うであろう
必要なソフトはこちら

Git

WinAVR

WinAVRのパッチファイル

(もし上記だけでmakeが実行できなかった時)make for Windows

意外と少ないと思うかもしれませんがこれだけです
すべてリンク先からダウンロードしてインストールできます

画像1

インストールの注意については「Add to PATH」に必ずチェックを付けておく事以外は無いのですが、
WinAVRだけパッチファイルを当てないとコンパイル時にエラーが出るので別に解説します。

パッチファイルを当てる

WinAVRは約10年前からアップデートがありません
なので64bit版のOSにインストールしてコンパイルしようとするとエラーが生じます
ダウンロードしたzipファイルを解凍すると「msys-1.0.dll」が出てきます
それをインストール先のutils\binに上書き保存するだけ
(デフォルトのインストール先の場合はC:\WinAVR-20100110\utils\binです)

msys保存場所

これだけエラーは出なくなります(多分)

Githubからソースを取ってくる

Switch-Fightstickのソースコードをgitを使って落とします

// in コマンドプロンプト or PowerShell
// わかりやすいようにCドライブ直下にcloneする
cd C:\
git clone https://github.com/progmem/Switch-Fightstick.git

// LUFAも必要なのでSwitch-Fightstickの中にcloneする
cd C:\Switch-Fightstick
git clone https://github.com/abcminiuser/lufa.git

コードブロック使ったらhttps以降がコメントになってますね...気にせず文の最後までコピーしてください。

makefileを編集する

上の操作を行うとC:\Switch-Fightstickに「makefile」と言うテキストファイルがあるはずです
これの中のMCU = ●●●でターゲットにするボードを変えられます
Arduino UNO R3の場合は

MCU = atmega16u2

Arduino micro(他pro micro等の互換ボード)の場合は

MCU = atmega32u4

と書き換えて保存します。

コンパイルする

// in コマンド(以下略
// Switch-Fightstickのディレクトリに移動する
cd C:\Switch-Fightstick
// コンパイル
make

上のコマンドを実行します

[INFO]    : Finished building project "Joystick".

この表示が出てC:\Switch-Fightstickに「Joystick.hex」があれば成功です
後はこれをマイコンに書き込めばC:\Switch-Fightstick\Joystick.cに書いた
内容の通りに動くようになります(書き込むのは別の機会に)
追記:コンパイル時に

Fatal error: can't create obj/Joystick.o: No such file or directory

このエラーが出たときはC:\Switch-Fightstick内に「obj」フォルダを作成してやり直すと正常にコンパイルできるはずです。
さらに追記:atmega16u2向けのコンパイル時に

Joystick.c: error: 'clock_div_1' undeclared (first use in this function)

と表示された場合はこちらを参考にpower.hを修正し、コマンドプロンプト(またはpowershell)にて下記のコマンドを実行してください。

// Switch-Fightstickディレクトリに移動
cd C:\Switch-Fightstick
// コンパイル前にクリーンな状態に戻す
make clean
// コンパイル
make

最後に

もしコマンドを打った時に「その操作は登録されていないよ」と表示された場合は「Add to PATH」にチェックを付けずにインストールした可能性があります(環境変数に追加されていない)
もしPATHを通してなかった場合はインストールしなおすか

左下の検索でシステム環境変数の編集と入力

出てきたウィンドウの環境変数をクリック

システム環境変数(S)に
AVR32_HOME という名前でインストール先の\WinAVR-20100110 フォルダを指定して新規作成
Path を選択し編集 インストール(ry \WinAVR-20100110\bin
\WinAVR-20100110\utils\bin
 \Git\cmd の中で足りない文を追加

これで改善するはずです
長々と書きましたが解説は以上です
また見に来てください~

この記事が気に入ったらサポートをしてみませんか?