MAG画像の表示ができたので、PIC画像も表示できないかとフォーマット情報を見てみたのですが、なんと、フォーマット書庫にはCで書かれたPIC画像ローダーのソースが!これ、そのまま使えるじゃないですか!
PICフォーマット仕様書
https://www.vector.co.jp/soft/dl/data/art/se003198.html
ということで、表示部分をM5Stackに合わせて実装してみます。
PIC表示で問題となるのが、X68000の画面縦横比。512×512ドットが4:3で表示されてるんですよね。これをM5Stackの320×240画面にどう表示するか…。
考えた結果、横方向は 512/ 1.5 = 341.333、上下10ドット削って320。縦方向は 512 / 2 = 256、上下8ドット削って240 としました。 (微妙に入りきってないです。)
横方向は、X68000の3ドット分を、M5Stack 2ドットで表示する感じです。ちょっと複雑ですね。それぞれのドット位置(左・真ん中・右)によって処理を場合分けして実装しました。
X68000 PIC画像の表示できました!M5Stackで稲妻走る! pic.twitter.com/6ZYcwJK1lz
— Nochi (@shikarunochi) 2020年5月6日
キレイに表示ができました!感動…!
全体を変換した後に一括表示すればもう少し速く表示できると思うのですが「PIC表示するからには稲妻を走らせなければ…!」という強い思いのもと、変換中も無駄に計算して画面描画していますw
512 x 512 の int バッファ取るのにPSRAM 使ってます。なので M5Stack FIRE 専用です。
→ MAGに引き続き、らびやんさんが PSRAM なしでも動作するよう、改善してくれました!まさか可能と想像もしてなかったのでビックリ。そして動作速度もUP!すばらしい…。
ソースはこちら。
shikarunochi / M5StackGraphicLoader
https://github.com/shikarunochi/M5StackGraphicLoader/tree/master/PICLoader