2023年9月29日金曜日

「MSX0 Stack」がやってきた!

ついに我が家にも「MSX0 Stack」が到着しました!

「MSX0 Stack」 - 1


「MSX」とは何ぞや?…という方は、コチラを参考にしてください。

入手方法はクラウドファンディングで、すでに受付は終了し新たに入手することはできませんが、そのうちAmazonなどでも気軽に買えるようになるかもしれません。

入手し損ねた方は、期待して待ちましょう!

早速、届いたダンボールを開封。

丁寧に梱包されています。

ダンボール開封


私がオーダーしたのは、最もスタンダードな「PLAN A」というもの。

2つのパッケージが出てきました。

2つのパッケージ


このうち「BOTTOM2」というのは拡張バッテリーのようです。

本体は「FACES」と書いてあるプラスチックの箱の中に入っているみたいです。

では、プラスチックの箱を開けてみましょう。

こういう瞬間が楽しいのです!

ご丁寧に、アダプタ付きのSDカードとUSB Cのケーブルが見えますね。

ここでも発泡スチロールで厳重に梱包されています。

開封 - 1


では、一番上に被さっている発泡スチロールを除けてみましょう。

ついに本体と対面です!

コンゴトモヨロシク!

開封 - 2


今回届いたものを全て展開すると以下のようになります。

ゲーム用のパッドや、簡単な工具、ステッカーなども入っていますね。

内容物全て


何はともあれ動作チェックです。

工場出荷時の設定では、充電池の保護のために給電がオープンになっていますので、本体背面のスイッチを「0」から「1」に切り替える必要があります。

「MSX0 Stack」 - 2


これ以降は、本体右側の電源スイッチでON/OFFができるようになります。

ONはワンプッシュ

OFFは長押しですね。

さて、通電しているはずなので、画面を観てみましょう!

ノスタルジックな「MSX」ロゴが表示されましたよ~!!

「MSX0 Stack」 - 3


「MSX」ロゴが消えると、すぐにROMベーシックが立ち上がります。

流石に、文字が小さいです。

「MSX」で遊んだ世代の中では私は若輩者の方だと思うのですが、老眼が始まっているのか結構キツい…。

みんな大丈夫なの!?

「MSX0 Stack」 - 4


動作チェック完了!

マニュアルやソフトウェアは、付属のSDカードの中に記録されています。

ソフトウェアは、以下のものが収録されているようです。


●Windows版リモートコントロールパネル

●MSX0システムメニュープログラム

●MSX-DOS TOOLS

●MSX-S BUG(デバッガ)

●MSX-DOS2(英語)

●MSX-DOS2(日本語)

●MSX-DOS2 TOOLS

●MSX-S BUG2(デバッガ)

●MSX-C(Cコンパイラ)

●MSX-C Library

●IoT BASIC サンプルプログラム


これだけあれば、色々なプログラムを作って遊べそうですね!

特に、Cコンパイラはありがたい!

当時は高嶺の花でしたからね~。

…と言っても2万円くらいでしたが、子供にとっては…ねぇ。

最後に「MSX0 Stack」と以前ご紹介した「1chip MSX」の2ショットです。

クリアブルーの筐体が、妙な統一感を醸し出していて素敵です。

「MSX0 Stack」と「1chip MSX」


さて、しばらくは付属のSDカードの中のマニュアル類を読み漁って暇(暇じゃない!)を潰すのも良し。

いきなりプログラムを書き始めるのも良し。


何をしようか考える前に、何ができるかを考える…。

何ができるかを考える前に、何をしようか考える…。


仕事なら前者、趣味なら後者でもOKでしょ!

2023年9月22日金曜日

TOPPERS/ASP - PIC32MX版 その7

前回からの続きです。

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


Harmony Frameworkのコピー

既にインストール済みの「MPLAB Harmony」のディレクトリと、「TOPPERS/ASP PIC32MX版」のソースツリーのディレクトリを同時に2つエクスプローラーで開いておきましょう。

記事通りに作業すると、「MPLAB Harmony」は以下のディレクトリに保存されているはずです。


C:\microchip\harmony

「MPLAB Harmony」のディレクトリ - 1


同じく、TOPPERS/ASPのソースツリーは以下のディレクトリに保存されているはずです。

「asp_pic32mx_gcc」や「asp_pic32mx_gcc_master」を「asp_1.9.2」に改名した場合。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2

TOPPERS/ASPソースツリーのディレクトリ - 1


さて、2つ開いたエクスプローラーでそれぞれ以下の場所を表示するようにします。

まず、「MPLAB Harmony」の方は、以下のディレクトリへ移動させます。


C:\microchip\harmony\v2_06

「MPLAB Harmony」のディレクトリ - 2

次に、TOPPERS/ASPのソースツリーの方は、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\arch\pic32mx_gcc

TOPPERS/ASPソースツリーのディレクトリ - 2


「MPLAB Harmony」の方のディレクトリに注目!
以下のディレクトリを確認して下さい。


●framework

「MPLAB Harmony」のディレクトリ - 3


この「framework」ディレクトリの中には「MPLAB Harmony」で使用できる様々な周辺機器のデバイスドライバのソースコードやヘッダーファイルが大量に入っています。

「TOPPERS/ASP PIC32MX版」で使用するタイマーやシリアル通信のデバイスドライバもこの中に含まれています。

この「framework」ディレクトリを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 3


これで、HarmonyのFrameworkのソースコードの回収は完了です。


雛形プロジェクトで生成したソースコードのコピー

現在、2つ開いているエクスプローラーでそれぞれ以下の場所を表示するようにします。

「MPLAB Harmony」の方は、以下のディレクトリへ移動させます。

ここは、既に作成した雛形プロジェクトのソースが格納されている場所です。


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

「MPLAB Harmony」のディレクトリ - 4


次に、TOPPERS/ASPのソースツリーの方は、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\1_2_5_starterkit_gcc

TOPPERS/ASPソースツリーのディレクトリ - 4


「MPLAB Harmony」の方(ていうか、雛形プロジェクトの方)のディレクトリに注目!

以下の3つのディレクトリとソース/ヘッダーファイルを確認して下さい。


●system_config

●app.c

●app.h

「MPLAB Harmony」のディレクトリ - 5


雛型プロジェクトは、今回使用する「PIC32MX1/2/5 Starter Kit」評価ボードで動作する基本的な設定や定義を行うソースコードを生成させるために作成しました。

これらのディレクトリやファイルは、まさにその生成されたソースコードというわけです。

この3つを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 5


これで、雛形プロジェクトによって生成されたソースコードの回収は完了です。


コマンドラインでのビルド

さて、これで全ての準備は整いました。

早速ビルドしてみましょう。

ここまで長かったですね!

お疲れ様です。

Cygwinを開いて、TOPPERS/ASPソースツリーの場所まで移動しましょう。


$ cd asp_1.9.2/


次にその直下の「OBJ」ディレクトリに移動します。


$ cd OBJ/


コンフィギュレーターのパーミッションを実行可能に設定します。


$ chmod 755 ../cfg/cfg/cfg.exe


ここまで、大丈夫ですか?

Cygwinターミナル - 1


そうしたら、プロジェクトのコンフィグファイル(sample1.cfg)の情報を元に、OSに必要な定義を記したソースコード(「kernel_cfg.c」と「kernel_cfg.h」)を生成します。


$ make depend


以下のような表示にならずエラーが出力される場合は、残念ながらこれまでの作業に誤りがあります。

お手数ですが、最初からご確認を!

Cygwinターミナル - 2


ここまで上手くいったら、本番のビルド。

以下のコマンドを実行します。


$ make all


以下のように無事にビルドが通ったでしょうか?

Cygwinターミナル - 3


今回はここまで!

長々と面倒な作業でしたが、お疲れ様でした。

ここまで付いてきてくれた方がいたら、本当にありがとうございました。


コマンドラインではビルドが通るようになりましたので、次回はIDE(統合開発環境)で開発できるようにプロジェクトを作りましょう。

今回は、デバッガを使うための純正IDEである「MPLAB X IDE」とコーディングとビルドを行うための「Eclipse」、2つのプロジェクトを作らなければなりません。

またまた面倒ですが、どうかお付き合いを!


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」へ転送して動作確認を行っていきます。

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


<続く>

MLAA License

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