M5Stickでプログラム!その1

M5Stackでプログラムしてる流れで、なんとなくだけどM5Stickも入手した事は、前回のブログでご報告した!

f:id:PocketGriffon:20210916170858j:plain

FIREも一緒に手に入れてるけど、こちらはまだ未開封…(^^;; このまま行くと積みマシン確定の予感w

 

M5StackとM5Stick、画面解像度が違っているけれども、内部のスペックはそんなに違ってない…というような、超漠然とした解釈をしていた。

今回は、この赤いM5Stickでのプログラムのお話(^-^)

プログラムの雰囲気が似てるんだったら、そのままの感覚で行けるでしょ!(^-^)

 

まずは電源を入れてみる。

f:id:PocketGriffon:20210922165943j:plain

あ、この画面はネットの記事とかで見たことある!ちゃんと立方体がぐりぐり動く(^^)

そういえばM5Stackの初期画面とか、どうやったらもう一度見られるんだろ…?

そのためだけにもう1台手元にあるヤツを空ける?(^^;;;

 

f:id:PocketGriffon:20210922170101j:plain

M5Stick自体の大きさはこんな感じ。

学生っぽく言えば筆箱に入るサイズ!

画面の大きさも相当小さい!画面に出てる数字なんて読めないよ…。

ルーペルーペ…

 

よし、Macに接続をして、Hello Worldを表示させてみる!

f:id:PocketGriffon:20210922170258j:plain

え!?その角度で表示されるのね…。想像と違う方向でびっくりw

ということは、こっちが上なのか…なるほど。

今回は最初っからLovyanGFXを利用させていただく事にした(^-^)

このライブラリは本当に手放せない!(*^_^*)

 

f:id:PocketGriffon:20210922170946j:plain

lcd.setRotation(3) としたら描画の基準が横になった!(^-^)

もしかしたらDMA出来ないとか弊害があるのかも知れないけれど、脳内で縦横を逆にしまくるのは避けたいので、まずはこれを基準としてみよう!

同時にビットマップのテストもしてみる。

この辺りのプログラムは全く同じだ!

よし、これでM5Stack的な感覚でプログラミングができそうだ!

 

外部記憶がない!メモリがない!

M5Stickの画面サイズは240x135となっていて、M5Stackの320x240に比べても面積比で約42%狭い。

この狭さになると、この上でエミュレータを動かそうなんて考える人はいないだろう(^^;;

横640ドットあるタイプのマシンからの移植は絶望的かも?640→240に変換するって事は、8ドットを3ドットに変換するって事だ!そりゃ無茶(ToT)

 

この画面サイズで、ちゃんと元画像が表現できるのは、PC-8001(160x100)とかMZ-80(80x50)くらいだろうか…。

とりあえずカラーが出るPC-8001を移植してみる事にする!

 

さっそくM5Stackのコードを持ってきて移植をし始めたのだが………

SDカードが入らないことに、今気がついた!!!

あちゃー……必要なデータをSDカードからロードするようにしていたので、その部分はまるっと作り直すことに…(T-T)

 

SPIFFSというのを利用すると、内臓のフラッシュメモリ(4MB)にデータを入れておくことが出来るらしい。これは近々試してみたい。

 

その後、さらにPSRAMが存在しないことに気がついた!PC-8001は出来る限り内蔵RAMで動くように調整してあったのでさほど問題にならなかったけれど、PSRAMに依存している他のマシンは移植出来ないな…。

 

結局、PC-8001エミュレータは、必要なメモリを内蔵メモリから確保した。確保出来た!これが出来なかったらヤバかった(^-^; この辺りの空き容量感覚はまだわかってない。

 

f:id:PocketGriffon:20210922173827j:plain

そして無事に動いたPC-8001エミュレータ。「移植してみるか」と思ってから2時間くらいの作業で動かせた!問題はあったものの、やはり移植性は高いんだと思う。

f:id:PocketGriffon:20210922173939j:plain

ちゃんとDot by Dotで表示されてる!

ちなみにこのサイズだと私はルーペが必須だ!とてもじゃないけどROGANには無理!

f:id:PocketGriffon:20210922174422j:plain

40x20文字表示でプログラムを打ち込んで実行させてみたところ。もはや文字として認識する事は出来ないが、なーんとなくやってることが想像出来るw

 

移植してる最中に気になったこととしては、M5Stick本体が少し熱を持つ。M5Stackはまーったく熱を感じなかったので新鮮!全体がほんのり温かくなっているので、風通しの良い場所で開発したほうが良いかも!(^^)

 

 

無茶移植をしてみたくて!

もうひとつ、やっぱりアルフォスは動かしてみたいじゃないのさ!(^-^)

 

でも……割と初期の段階から「無理だよそれは…」と悟っていた。

まず上にも書いたけれど、横640ドットの絵を240ドットに縮めるのが厳しすぎる。

縦方向も200ドットを135ドットにするのが簡単ではない(T-T)

 

それからPC-8801は大量にメモリを積んでいる。初代であってもメインメモリ64KB、N-BASIC24KB、N88-BASIC32KB+8KB、VRAM48KBと豪華絢爛!これに加えてアルフォスのデータが必要になるのだ…。これをSDカードなしで実行しなければならない。

やっぱりSPIFFSかなぁ…と思って調べ始めたが、それでも「無理」が頭から離れない(^^;

 

そうこうしてるうちに、2つのアイディアが浮かんだ。

1つめはメモリ関連。アルフォスをロード→起動するまでの過程でBASICやmonを使うので、BASICのROMが必要なのだが、実はアルフォスが起動したあとはBASIC ROMは使われないのだ。ということは、アルフォスのロードが終わった瞬間のメモリイメージ(64KB)を持っておいて、エミュレータのメモリにコピーしてやれば、メモリは最小限で済むのでは???

 

2つめが表示系。内部的にはM5Stackと同じく横320ドットでイメージを生成し、それをLovyanGFXの機能を用いて縮小表示してやればどうだろう…と考えた。

f:id:PocketGriffon:20210922181444j:plain

f:id:PocketGriffon:20210922181421j:plain

f:id:PocketGriffon:20210922181403j:plain

おおお……思ったよりも悪くない!(^-^)

縦方向は縮めていないので下が映っていないが、まずは動かすことが先よ(^-^)

 

f:id:PocketGriffon:20210922181917j:plain

だがゲームのデモ画面になると、画面が壊れてしまう事がわかった。デモが初期値から始まるのではなく、変な場所から始まってしまうのだ。うーん…これは直すのが大変そうな気がする。なにせ思い当たり原因となりそうな事が山のようにあるのだ。BASIC ROMが無いとかw

 

なんとなく動かせそうな雰囲気は感じられたので、今回はここまで!

開発している最中に、BASIC ROMを載せられそうな算段も立ったので、次回チャレンジする時はちゃんと正規の方法で起動させてみたい。

 

ではまた次回!(^-^)ノ