14.jpegデコーダと組み合わせるときのLCDコントローラの設定
picocalcのLCDコントローラ ILI9488 (以下LCDC)のデータシートを眺めて設定すべきレジスタを特定する。
LCDCは、Memory Write コマンドに続くデータをLCDC内部のRAM(以下VRAM)に連続的に書き込む。
現行の displayドライバは、320x320ピクセル分のデータをひたすら転送する処理をやっている。
その処理を無効にして、勝手にデータを LCDC へ送ることにする。
前回の再掲
jpeg画像は画像を分割して圧縮しているので、展開するときは画像の一部が展開される構造。これを利用して、展開が済んだ部分からLCDコントローラに転送するという仕掛けだった。
実現するためのLCDCのコマンドは Column Address Set と Page Address Set の二つ
これで Memory Writeコマンドが送信するデータの画面上の位置(縦位置、横位置、縦サイズ、横サイズ)を指定できる。
これだけで一応画像は出た。しかもdisplay ドライバの文字表示は、4bit/pixelのモードのままなのでメモリも節約できる。
問題は、デコードしながらLCDCにデータを転送するせいで上から下に描画していくのが、なんとなく見えるのだ。性能実測で 100ms 弱。10fps だとそりゃ見えるよね。なんとも美しくない。
仮想的に2画面を作れれば解決なのだが、どうなることやら。