libcaca
MZ-700でアイマスMADを再生してみよう、の実験報告をみて最近のCPUパワーならリアルタイムに全部できるに違いないってことで、Java+JMFかQTで頑張ろうとしたらどっちも最近のコーデック読めなかった。
気を取り直して調べてたらまんまcacaxineというのがあったので試してみると中間色がくすんで見える。
mpgのデコードがxine、テキスト化がlibcacaという構成らしい。
ソースを調べた限りでは
- ANSI色の実際のRGB値は端末依存なのにソースに値が埋まってる。
- 文字' ', '.', ':', ';', 't', '%', 'S', 'X', '@', '8'の10文字の面積が0%,5%,…,50%と仮定。
- 中間色を文字色と背景色に分解する時、背景色が最近傍色に固定。
って感じ。
- PuTTYの色設定をlibcacaの設定にあわせる
- UTF-8を使って表示する文字数増やして10階調→34階調に
- 使ってるフォントでの各文字の面積をソースに埋め込む
- 16x16色の全組み合わせから最適な色を選択
で色はそこそこまともに。
libcacaは普通に空間方向に誤差拡散してたのを、MZ-700にならって時間方向に誤差拡散するようにしてみたけどフレームレートを十分確保できてないせいか画質落ちた気がする。全探索止めて速度稼いでからじゃないと駄目そう。
水平同期中の書き換えとか音声再生はどうやっても無理かな〜