SSブログ
English Version

ポケコン(G850)LCDで階調表示 [ポケコン]

 「ポケコン(G850)用拡張基板(その8)CP/MでBadApple!!」で書いたように PC-G850V(以降、G850と記す)の CP/M 環境で SD カードに保存した画像データを使った動画再生ができ、 LCD の描画能力が結構高いことが判りました。
 動きが速い部分では二値化した動画の輪郭がグレーに見えたことから、今回は LCD を使った階調表示について書いてみます。

 ネットで検索すると G850 を使った4階調表示のゲームがあるようなので、今回は8階調表示に挑戦してみようと思います。
 原理は「階調表示用に8面の画面データを用意して、表示を高速で切替える」という単純なものです。
 8面の中の任意のピクセルについて明るいドットの総数が0~8個の9通りできるので0個の場合を除いたグレー部分の階調が8通りになります。

★追記 2022/02/22 {
 実際の画面データは8画面分無くても良く、8回の表示につき、それぞれ1,2,4回表示する3画面分のデータがあれば良く、複数回表示する画面についてはフリッカー対策のために等間隔(例えば4回表示の画面は2回に一回表示)に表示するようにすればいい。
}
 実際やってみると画面のちらつき(フリッカー)が発生してしまうので
  • 画面表示を如何に高速にするか
  • 画面表示間に適当なウェイト時間を入れフリッカーを最小限にする
等が肝になります。

 実験用の画像は、高品質なフリー素材を提供している pixaboy さんのサイトからダウンロードしたものを使用させて頂きました。

 G850 用の階調表示データを作成するために下記の処理を行っています。
  1. 画像ファイルのリサイズ
     ffmpeg を使ってポケコンの LCD のドットサイズである 144 x 48 の bmp ファイルにリサイズ

  2. 階調変換
     自作ツールにより、bmp ファイル内の各ピクセルを RGB データから8階調に分類
     8階調への分類手法は R+G+B の値で(最大値 - 最小値)を8つに等分割して分類するという簡易な方法を採用した

  3. 画面の連結
     最後に G850 の LCD イメージに並べた8画面分のデータを作成
     ※実際には上記の2と一緒に自作ツールで一括処理している

 上記の 1項 を行ったリサイズした画像が下図になります。

リサイズした画像サンプル


 下の写真は G850 で表示している様子です。タイミング調整したことでフリッカーもほとんど出なくなり結構綺麗に表示されるようになりました。
 下の写真では縮小した関係で少しモアレの縞模様が発生していますが、クリックして拡大すると無くなります。

G850での8階調表示例


 今回の実験で作成したヘキサファイルを下記からダウンロードできます。商用利用以外であれば自由に使用可能とします。
 使用方法は USER21FFコマンド(21FFより大きければ可)でメモリを確保後、ダウンロードし G100 のコマンドで実行できます。BREAK キーで終了します。
★追記 2022/01/15
 G850V以外の機種では表示タイミングの関係でフリッカーが発生する可能性があります。
その場合は 0159H からの2バイトデータを調整してみてください。

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。