別プロジェクトで使ったLCD表示用の8×8ドットのフォントデータをパタンテーブルに埋め込んでみました。
これはグラフィックモードⅡで表示していますが、文字だけであれば別にテキストモードというのもあってこれであれば横40桁×縦24行まで表示できます。
任意の絵を描くにはグラフィック描画関数を用意しなければなりませんが、まずは手っ取り早く出来あいのイメージデータをグラフィックプレーンに転送することを考えてみます。
色情報を16色に減じるのは簡単ですがTMS9918の横8ドット同じ色でなければならないという制約下でどのように圧縮するか思いつかなかったので簡単に白黒にしてしまいます。
ペイントツールでディザを使った誤差分散による2値化をかけてみました。絵を裏返しておくのがミソ。bmpファイルは左下隅が原点なんですね
一番の問題はbmpファイルのデータがラスタ順に並んでいるのに対し、TMS9918のパタンテーブルは8×8のブロックの並びになっていることです。
BMPファイルからヘッダ、パレットテーブルを除いたベタデータをいったんバッファに読み込みパタンテーブルのフォーマットに合わせて並び替える外部ツールを作成しました
これで変換されたバイナリデータをモニタを通じてVRAMのパタンテーブルに転送しました。
ギリ今日に間に合いましたw
着色は大変なので上段・中段・下段のエリアごとにベタ指定してしまってます
昔、インベーダゲームが白黒のブラウン管だった頃、画面の前に色セロファンを入れて疑似カラー化したみたいな感じです