2023年9月15日金曜日

DIYレトロゲーム機「Nibble」の開発環境構築 その3

前回からの続きです。


各ゲームのソースコードのダウンロードとビルド

クラウドファンディングサイト「Makuake」でオーダーした、DIYレトロゲーム機「Nibble(ニブル)」。

Nibble


前回まで工場出荷時の状態に戻す方法を探ってきました。

そうしないと、怖くて色々実験できませんからね!

「Nibble-Launcher」というのが工場出荷時の状態でインストールされているソースコードだと思い、GitHubからダウンロードして「Arduino IDE」でビルドをしたのですが、失敗。

エラーコードの内容は、ソースコードが足りないとのこと。

調べてみると、各ゲームのソースコードは「Nibble-Launcher」には含まれず、各々GitHubからダウンロードする必要がある…というのが前回までのあらすじ。

では、その作業を行っていきましょう!

まず「Cygwin」ターミナルを開いて、以下のディレクトリへ移動しましょう。


$ cd /cygdrive/c/Users/<ユーザー名>/Documents/Arduino/Nibble-Launcher/src/Games

Cygwinターミナル - 1


まずは、原始的なテニスゲーム「BonK」のソースコードのダウンロードです。

CircuitMess社のGitHubから「Nibble」用のものを探しましょう。


https://github.com/CircuitMess


あった!

コレですね。

GitHub - 1


「Cygwin」ターミナルで以下のコマンドを打ち込んでダウンロードしましょう。


$ git clone https://gitbub.com/CircuitMess/BonK-Nibble.git

Cygwinターミナル - 2


無事ダウンロードができましたか?

Windowsのエクスプローラーで上記のパス、つまり…


c:\Users\<ユーザー名>\Documents\Arduino\Nibble-Launcher\src\Games


…を見てみると、以下のように今回ダウンロードした「BonK-Nibble」が追加されていることが分かります。

「BonK-Nibble」が追加されたディレクトリ


これを見ると、元々あった「BonK」(中身は空)と新たな「BonK-Nibble」の2つが存在していることが分かります。

ビルドで必要なのは「BonK」という名前のディレクトリでしょう。

なので、元々あった「BonK」を一旦削除してから、新たな「BonK-Nibble」を「BonK」に名前を付け替えるという作業を行います。

それには「Cygwin」ターミナルで以下のコマンドを使います。


$ rm -rf ./BonK

$ mv ./BonK-Nibble/ ./BonK/

Cygwinターミナル - 3


次は、隕石をひたすら破壊するシューティングゲーム「SpaceRocks」のソースコードのダウンロードです。

GitHub - 2


「BonK」の時と同じ要領です。

ダウンロード→「SpaceRocks」ディレクトリの削除→「SpaceRocks-Nibble」を「SpaceRocks」ディレクトリに名称変更…ですね。


$ git clone https://gitbub.com/CircuitMess/SpaceRocks-Nibble.git

$ rm -rf ./SpaceRocks

$ mv ./SpaceRocks-Nibble/ ./SpaceRocks/

Cygwinターミナル - 4


さてさてお次は、ヘビを操ってエサを食いまくるゲーム「Snake」のソースコードのダウンロードです。

GitHub - 3


今までと同じ要領でお願いします。


$ git clone https://gitbub.com/CircuitMess/Snake-Nibble.git

$ rm -rf ./Snake

$ mv ./Snake-Nibble/ ./Snake/

Cygwinターミナル - 5


最後に、工場出荷時にはインストールされていなかったゲーム「Invaderz」のソースコードのダウンロードです。

どんなゲームでしょうね?って名前からして、ああいうのでしょうけど…。

GitHub - 4


こちらも、今までと同じ要領で。

$ git clone https://gitbub.com/CircuitMess/Invaderz-Nibble.git

$ rm -rf ./Invaderz

$ mv ./Invaderz-Nibble/ ./Invaderz/

Cygwinターミナル - 6


これで準備は整いました!

いざビルド!!

「Arduino IDE」で「Nibble-Launcher」のプロジェクトを開いて、画面左上の「V」マークをクリック!

Arduino IDE - 1


よし!!

無事ビルドが通ったみたいですよ~。

Arduino IDE - 2


プログラムを「Nibble」へ転送

ビルドしたプログラムを「Nibble」へ転送して動かしてみましょう。

まず「Nibble」と開発用のパソコンをUSBケーブルで接続します。

そして必ず「Nibble」のスイッチをONにしてください。

そうしないと、パソコンに認識されません。

このとき、デバイスマネージャを確認してみてください。

もし「Nibble」とパソコンを接続したのに、以下のように「ほかのデバイス」以下「USB Serial」と表示されている場合は、デバイスドライバのインストールが必要です。

デバイスマネージャ - 1


この「Nibble」にはUSB-Serial変換のICとして「CH340C」という石が使われているようです。

そのため、このIC用のデバイスドライバをパソコンにインストールしなければなりません。

ダウンロードは、メーカーのWCH社のページからダウンロードできます。

以下のページを開いて「下載?」(多分ダウンロードという意味)という部分をクリックします。


https://www.wch.cn/downloads/CH341SER_ZIP.html

WCH社のダウンロードページ


中国の会社のWebページからソフトウェアをダウンロードしてインストールするのは怖いですよね!?

でも私の環境では、特に悪さをすることもなく正常に動いているので安心してください。

ダウンロードしたZIPファイルを展開して、勇気を出してその中の「SETUP.EXE」をダブルクリックします。

ダウンロードしたZIPファイルを展開したディレクトリ


以下のように、インストーラが起動しますので「INSTALL」をクリック!

インストーラ


インストールが完了すると以下のダイアログが表示されますので「OK」ボタンをクリックしてインストーラを終了させましょう。

インストール終了ダイアログ


デバイスドライバが正常にインストールされると、デバイスマネージャは、以下のように変化するはずです。

ちゃんと「ポート(COMとLPT)」以下「USB-SERIAL CH340」と表示されており、私のパソコンの場合は、ポート番号は4番に振り分けられたようですね。

(ポート番号は、パソコンによって異なります。)

このような表示になっていれば、パソコンは「Nibble」を正常に認識しています。

デバイスマネージャ - 2


それでは「Arduino IDE」に戻って、プログラムの転送を行いましょう。

「Arduino IDE」画面上部の「Tools」メニューから「Port」→「COMx(デバイスマネージャで確認したポート番号)」と各項目を順にクリックしていきます。

Arduino IDE - 3


そして、いよいよだ…いよいよプログラムの転送を行います!

「Arduino IDE」の画面左上の「」マークをクリック!

Arduino IDE - 4


緊張の時間は、結構長く感じます。

「Arduino IDE」の出力エリアに以下の表示出れば転送成功です!!

Arduino IDE - 5


転送後の「Nibble」の表示はどうなっているでしょう?

再起動の後に…。

映りました!

ああ!これは「Invaderz」というゲームのアイコンみたいですね!

Invaderzアイコン


この「Invaderz」というゲーム、まあ、まんまインベーダーですけど、他のゲームの中で一番面白いかも!

名古屋打ちができるかどうかは試していませんが…。

Invaderzゲーム


他のゲームも一通り動作確認しましたが、正常に工場出荷時の状態に戻せるようになったみたいです。

しかも「Invaderz」という新しいゲームも追加されました!

手間はかかりましたが、この一連の作業で開発環境の基本的な操作や仕組みは理解できたような気がしますね。


さて、これでオリジナルのゲームが作れるようになりました。

ゲームのライブラリなどの使い方は、既存のゲームのソースコードを参考にすれば解析できるでしょう。

取っ掛かりとしては、一番シンプルそうな「BonK」のソースコードなんかがいいかも。

機会があれば、何か作ってこのブログで紹介できるといいですね~。

お付き合い、ありがとうございました。


<終わり>

2023年9月12日火曜日

DIYレトロゲーム機「Nibble」の開発環境構築 その2


「Nibble-Launcher」のビルド

クラウドファンディングサイト「Makuake」でオーダーした、DIYレトロゲーム機「Nibble(ニブル)」。

Nibble


執筆時点では、まだコチラで購入できますよ~。

これを使って色々なゲームをプログラミングしたいのだけれど、プログラムを書き込んだ後に元に戻せなかったらどうしよう!?

…というわけで、工場出荷時の状態に戻す方法を探っています。

工場出荷状態で書き込まれているプログラムは、この「Nibble」の開発メーカーであるCircuitMess社のGitHubから入手できるようです。

どうやら、そのプログラムは「Nibble-Launcher」というもののようです。

つまり、コイツをダウンロード、ビルドして「Nibble」に転送すれば工場出荷時の状態に戻せるのでは?

早速やってみましょう!

CircuitMess社のGitHubのURLは以下の通り。


https://github.com/CircuitMess


このページから、その「Nibble-Launcher」を探していきましょう。

ページを下の方に移動してもらって…。

GitHub - 1


以下のように「View all repositories」の部分をクリックして、全てのリポジトリを展開しましょう。

GitHub - 2


「Nibble-Launcher」どこかなぁ~?

GitHub - 3


あった!

これだね!!

GitHub - 4


さて、この「Nibble-Launcher」は、そのルートディレクトリに「.ino」という拡張子のファイルがあることから、開発環境は「Arduino IDE」を使う必要があるみたいです。

まずは「Nibble-Launcher」をどこにダウンロードしましょうか?

ここでは、前回の作業で「Arduino IDE」のインストール時に自動的に作成された以下のディレクトリ以下にダウンロードすることにしましょう。


C:\Users\<ユーザー名>\Documents\Arduino


「Nibble-Launcher」のダウンロードは、GitHubのサイトからZIPファイルをダウンロードをして、それを展開して上記のディレクトリにコピーしても良いのですが、ここではナウい方法として「git clone」コマンドを使いましょう。

その場合は「Cygwin」を使うと良いでしょう。

「Cygwin」のインストール方法は、こちらのページを参考にしてください。

「Cygwin」のインストールが終了しターミナルを開いたら、以下のコマンドで上記のディレクトリまで移動します。


$ cd /cygdrive/c/Users/<ユーザー名>/Documents/Arduino

Cygwinターミナル - 1


そうしたら、ここのディレクトリに以下のコマンドで「Nibble-Launcher」をダウンロードしましょう。


$ git clone https://github.com/CircuitMess/Nibble-Launcher.git

Cygwinターミナル - 2


「Arduino IDE」のインストール時に自動的に作成されたディレクトリを確認してください。

以下のように「Nibble-Launcher」というディレクトリが作成されていますか?

「Arduino IDE」のインストール時に自動的に作成されたディレクトリ


では「Arduino IDE」を起動させましょう。

画面左上の「File」メニューから「Open...」の項目をクリックします。

Arduino IDE - 1


「開く」ダイアログが表示されますので、ダウンロードした「Nibble-Launcher」直下にある「Nibble-Launcher.ino」というファイルを選択し、「開く」ボタンをクリックです。

「開く」ダイアログ


新たに「Nibble-Launcher」用の画面が開きましたね。

元の画面はもう閉じちゃって構いません。

試しにこの状態でビルドしてみましょう。

「Arduino IDE」の画面左上の「V」マークをクリック!

Arduino IDE - 2


ビルド通るかなぁ~?

う~ん、エラーが出てしまいました。

エラーメッセージを見てみると、ターゲットのボードが有効ではない…とかなんとか。

あーそうか!

この「Nibble-Launcher」のプロジェクトを開いてから、ターゲットの設定をしてないや!

Arduino IDE - 3


というわけで、ターゲットの設定をします、

「Arduino IDE」画面上部の「Tools」メニューから「Board」→「CircuitMess ESP6266 Boards」→「Nibble」と各項目を順にクリックしていきます。

Arduino IDE - 4


これで再度ビルド!

しかし、またダメ~!!

Arduino IDE - 5


うーむ、どうやらビルドに必要なソースコードが足りないみたいですね。

その場所というのが以下のディレクトリです。


C:\Users\<ユーザー名>\Documents\Arduino\Nibble-Launcher\src\Games

ソースコードを追加しないといけないディレクトリ


この中のディレクトリは「Nibble」の工場出荷時にインストールされている各ゲームの名前です。

まあ「Invaderz」というゲームは記憶にありませんが…。

そして、各ディレクトの中は案の定、空っぽです!

ということは、各ゲームのソースコードは「Nibble-Launcher」とは分離されていて、各々のソースコードをGitHubからダウンロードしないといけないのでしょうね。


さて、長くなっちゃうので一旦ここで区切りましょう。

次回は、各ゲームのソースコードをダウンロードしてビルドを通し「Nibble」へ転送して動作確認を行っていきます。

この一連の作業をもって、開発環境を学んでいきましょう。


<続く>

2023年9月1日金曜日

TOPPERS/ASP - PIC32MX版 その6

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


雛形プロジェクトの作成

まずは「MPLAB X IDE」を起動して下さい。

前回から続いて作業している場合は、すでに起動していますかね。

画面上部の「File」、「New Project...」メニューを順にクリックしていきます。

「MPLAB X IDE」 - 1


以下のような「New Project」ダイアログが表示されます。

ここから「Categories」リストから「Microchip Embedded」を、「Projects」のリストから「32-bit MPLAB Harmony Project」をそれぞれ選択して、ダイアログ下方の「Next >」ボタンをクリックしてください。

「New Project 」ダイアログ - 1


すると、以下のような表示に切り替わります。

ここでは「Harmony Path:」のテキストボックスの右側のディレクトリボタンをクリックしましょう。

「New Project 」ダイアログ - 2


ディレクトリの選択ダイアログが表示されたはずです。

ここでは、先程インストールした「MPLAB Harmony」の場所を選択しましょう。

特に変わった操作をしていなければ、その場所は以下のパスになります。

このパスを指定したあとは「開く」ボタンをクリックです。


C:\microchip\harmony\v2_06

ディレクトリの選択ダイアログ


元の「New Project」ダイアログに戻ります。

ここで思い出してください。

現在は、TOPPERS/ASPのプロジェクトを作成するのではなく、そのために必要な「MPLAB Harmony」のソースコードを出力させるための雛形プロジェクトを作成する作業をしています。

したがって、今回作成するプロジェクト名、すなわち「Project Name:」のテキストボックスには「Hinagata」とでも入力しておきましょう。

「New Project 」ダイアログ - 3


続いて「Target Board」のコンボボックスでは、今回使用する評価ボードの「PIC32MX1/2/5 Starter Kit」を選択します。

「New Project 」ダイアログ - 4


以下のように正しく設定できたら、ダイアログ下方の「Finish」ボタンをクリック!

「New Project 」ダイアログ - 5


なにか「MPLAB X IDE」でワチャワチャ始まりました!

「MPLAB X IDE」 - 2


画面下方の「Output」エリアでは、次々とメッセージが表示されていますね。

「仕事してます」感バリバリ。

「MPLAB X IDE」 - 3


この処理の終盤に、以下のようなダイアログが表示されたら「Save」ボタンをクリックしましょう。

「Save Configuration」ダイアログ - 1


さて、処理が終了すると、メインの画面は以下のような表示になっていると思います。

ここで「Harmony Framework Configurarion」の項目をクリックしてください。

「MPLAB X IDE」 - 4


「Harmony Framework Configurarion」の項目が展開されて、更に色々な項目が出てきましたね。

その中で「Drivers」という項目があるので、これをクリックして展開します。

「MPLAB X IDE」 - 5


TOPPERS/ASPは、外部のハードウェアとしてOSタイマーである「Timer」と、デバッグシリアルに使用する「USART」の2つが必要です。

(正確には、「割り込み」もそうですが、ここでは特に意識する必要はありません。)

では、まずOSタイマーに使用する「Timer」の設定からいきましょう。

展開された「Drivers」という項目の中に「Timer」という項目がありますので、これをクリックして展開します。

「MPLAB X IDE」 - 6


すると、なにやら細々した項目が展開されましたね?

これを以下の通りに設定してください。

間違えると、後々面倒になりますのでここは慎重に!

「Timer」の設定


次にデバッグシリアルに使用する「USART」の設定にいきましょう。

展開された「Drivers」という項目の中に「USART」という項目がありますので、これをクリックして展開します。

「MPLAB X IDE」 - 7


またまた細々した項目が展開されました。

これを以下の通りに設定してください。

こちらも間違えないよう慎重にお願いします!

「USART」の設定


まだまだ、作業は続きます。

次は、PIC32MXマイコンのピンの設定です。

メインの画面のタブを現在の「Options」から「Pin Disgram」に切り替えてください。

「MPLAB X IDE」 - 8


すると以下のようにマイコンの絵が出てきましたね。

この中で74番ピン「RC14」と73番ピン「RC13」に注目してください。

これらのピンは、現在のデフォルト状態では何も機能が割り振られていない(GPIO入力?)ので、これらをUSART、いわゆるシリアル通信のためのRX(受信)とTX(送信)として使えるように設定します。

ピンの設定 - 1


まずは、74番ピン「RC14」をUSARTのRX(受信)に設定します。

ピンの部分をクリックすると、ドロップダウンリストが表示されます。

ここでは、このピンに割り当て可能な機能が列挙されます。

今回はUSARTのRX(受信)、すなわち「U1RX」を選択します。

ピンの設定 - 2


次は、73番ピン「RC13」をUSARTのTX(送信)に設定します。

同じ要領でUSARTのTX(送信)、すなわち「U1TX」を選択します。

ピンの設定 - 3


以下のように、74番ピンに「U1RX」、73番ピンに「U1TX」と、それぞれ表示が変わったでしょうか?

ここはミスるとシリアル通信ができなくなるなど、後々非常に厄介なので必ずご確認を!

ピンの設定 - 4


さて、以上で全ての設定が終了です。

メインの画面の左上のフロッピーディスクのマークをクリックして設定を保存しましょう。

「MPLAB X IDE」 - 9


以下のようなダイアログが表示されたら「Save」ボタンをクリックして、この雛形プロジェクトを保存しましょう。

「Save Configuration」ダイアログ - 2


もしこの先、無事に「TOPPERS/ASP」の起動に成功して、イザ何かを作ろう!となった場合、今回追加した「MPLAB Harmony」ライブラリだけでは絶対に足らなくなることでしょう。

評価ボードにセンサーを繋げて、そのセンサーとSPIで通信するとか、AD変換を使いたいだとか…。

その際には、再び今回の手順で必要になった「MPLAB Harmony」ライブラリを追加して、ソースコードを吐き出させて、更にそれを「TOPPERS/ASP」のソースツリーにコピーしなければなりません。

そういう意味では、この雛形プロジェクト、結構使用頻度が高くなるかもしれませんよ?

大切に取っておきましょう!


ではいよいよ、この雛形プロジェクトからソースコードを吐き出させてみましょう。

先程のフロッピーディスクのマークの右側、「歯車→Code」というアイコンのボタンをクリックします。

「MPLAB X IDE」 - 10


以下のような「Generate Project」ダイアログが表示されるので「Generate」ボタンをクリック!

「Generate Project」ダイアログ - 1


以下のように雛形プロジェクトからソースコードが生成されていきます。

「Generate Project」ダイアログ - 2


ソースコードの生成が終わると「Generate Project」ダイアログは自動的に消えます。

これで雛形プロジェクトから必要なソースコードを抽出できました。

雛形プロジェクトのソースコードは、以下のディレクトリに出力されています。


C:\microchip\harmony\v2_06\apps\Hinagata


どんなものが出力されているのか?

ちょっと見てみるのも良いでしょう。


さて次回は、この雛形プロジェクトから必要なソースコードを「TOPPERS/ASP PIC32MX版」のソースツリーにコピーし、コマンドのラインでOSのビルドを透すところまでやっていきましょう!

ここまで出来てしまえば、面倒くさいのはもう少しで終わりです。

最後までお付き合いいただけると嬉しいです。


<続く>

MLAA License

 名称:「MLAAライセンス」(MLAA) タイプ: ・コピーレフト…× ・ライセンス文の掲示…〇(ソースコード頒布のみ) ・コピーライト(著作権)…〇(ソースコード頒布のみ) ・その他…〇(バイナリ頒布のみ) 原文: Copyright: 2010 Jorge Jimenez ...