CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

表示テスト(2)

別プロジェクトで使ったLCD表示用の8×8ドットのフォントデータをパタンテーブルに埋め込んでみました。
 

イメージ 1

これはグラフィックモードⅡで表示していますが、文字だけであれば別にテキストモードというのもあってこれであれば横40桁×縦24行まで表示できます。
任意の絵を描くにはグラフィック描画関数を用意しなければなりませんが、まずは手っ取り早く出来あいのイメージデータをグラフィックプレーンに転送することを考えてみます。
 
例えばこんな画像。
最終的な画像出力と同じ256×192ドットのbmpファイルを作成します
 
 
イメージ 3

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