文書の過去の版を表示しています。
ハイハイスクールアドベンチャー PicoCalc版
概要
おい、PicoCalc出るってよ! ……と、いうわけで、この、見るからに、ハイハイスクールアドベンチャーを移植せよ、と、いわんばかりのデバイスを見たら、正座して待機しつつ、移植する準備をするでしょう? そして、ほぼ一日で移植しました。
導入
本プログラムは、VSCode + PlatformIOで開発しています。なので、遊ぶためには、まず VSCode と PlatformIOを準備してください。 ソース一式は、こちらから取得してください。
READMEにも書いてありますが、色々なターゲットが定義されていますが、つまるところ、pico2 しか動作確認できていません1)ので、それ以外でbuildはしないでください。
ビルドできたら、data フォルダの下にあるHHSAdv フォルダーをまるっとSDカードのルートディレクトリにコピーしてください。 ルートにHHSAdv というフォルダーができて、その下に中身が全部コピーされる形です。
あとは、firmware.uf2 を書き込んでスタートです。
まあいろんな話
開発環境
Raspberry Pi Picoの開発環境についてはいくつかある。
まずは、公式に提供されているpico-sdkを利用する方法である。 cmake を手書きして、プロジェクトを構成する。 なんでもできるが、むき出しで、決して使いやすいわけではない。
次に Arduino IDEを利用して、Arduinoフレームワークでプログラムを作成する方法。 Arduino用の多くのライブラリを利用できるので、チョイスとしては悪くない。
だが、結局のところ Visual Studio Code + Platform IOが鉄板だといえるだろう。 コーディングを支援してくれるintellisense はいうに及ばず、Copilotや Geminiを利用したコーディング支援は、一度利用してしまったらもう戻れないくらいの絶対的な差別化要因だ。
当然、Visual Studio Code + Platform IOで開発することにする。
LovyanGFX
ハイハイスクールアドベンチャーを移植するにあたってはグラフィックス機能がキモとなる。 PicoCalcに組み込まれている液晶は ILI9488 で駆動されているので、LovyanGFXのパラメータだけ調整すれば制御可能である。
SPIのピンアサインと、向き、色の制御あたりができていれば問題なく動く。
名前 | 番号 |
---|---|
SPI | 1 |
PIN_SCLK | 10 |
PIN_MOSI | 11 |
PIN_MISO | 12 |
PIN_CS | 13 |
PIN_DC | 14 |
PIN_RST | 15 |
なお、offset_rotationが 6で、invertを trueにする。 どういう都合でかはわからないが、下端が上で、座標系は上下反転、色も反転するという状態がデフォルトになっているので、上記の設定で、左上が(0,0)になるように設定される。
PicoCalcが届いた日に、LovyanGFXが動いて画面に表示ができたので、もう勝ったも同然と、移植作業を開始したのだったが、落とし穴が待っているとはこの時はまだ気づいてなかった。
落とし穴があったとはいえ、スムースに動かすことができたのは、LovyanGFXのおかげなので、ありがたいことに違いはない。
待っていた落とし穴
Arduinoフレームワークで、LovyanGFXが使えて、SDカードもSPIのピン設定を済ませれば使える上に、キーボードもPicoCalc用のFUZIXのコードからちょいと拝借すればすぐに動いてしまう。
実は、動くようになるまでに一日しかかからなかった。 ほとんど M5Stack版と同じで済むからだ。 テストプレイでゲームクリアまで行ったので、あとはコードを整理して、GitHubに置けばいいなと思っていたら、そうは問屋が卸さなかった。
電源を切って、入れなおすと、画面が真っ黒のまま動かないのだ。
LovyanGFXのテスト用に書いた小さなアプリはそんなことはない。 何か触っちゃいけないところに触ってしまって、電源のOFF/ONではきれいに初期化されない問題があるのだという前提であれこれ調べた。
二日ほど調べたところで、どうもらちが明かないと、デバッグプローブを発注した。
三日目にはデバッグプローブで落ちる箇所は特定できた。