HOME → 情報 → 懐かしのパソコンネタ
■ レトロパソコンでBMPファイルを表示させる
2012.1.7
"何を今さら"的企画、「レトロパソコンのお絵描きプログラム」の番外編(?)です。 一応、お絵描きプログラムは完成しました。ソフトウェアのダウンロードはこちらです。
今回は自分のクルマ(AE85・・・以下の写真)を描いてみようと試みましたが、この様な絵を描くのはかなり大変そうですね。
まず、写真を8色に原色させて、線画で(それぞれの色を縁取り)させるのですが、かなり面倒です。 ※以下の画像は、フリーソフトのAzPainterを使用して作成しています。
面倒なので、「すぐに、諦めました!」
しかし、「レトロパソコンで写真ぽい絵を表示させてみたい」・・・そう思ったのです。
では、以下のBMPファイルを、テキストデータにして、レトロパソコンで読込み(と表示)が出来るようにしてみましょう。
※本タイトルの「レトロパソコンでBMPファイルを表示させる」を正確に言えば、 「レトロパソコンでBMPファイルから変換されたファイルを表示させる」・・・ですね。
以下もフリーソフトのAzPainterを使用して作成しています。 もちろん、デジタル8色縛り(黒、青、赤、紫、緑、水色、黄、白)です。 とは言っても下の絵は黒、青、白、水色の4色のみなんですけどね。
「4色だけにしては、良く描けていませんか?」
早速、BMPファイルをテキストデータに変換するプログラムを作ってみました。
このプログラムを使いたい(奇特な方)はこちらからダウンロードできます。 BMPファイルを読込ませると同一のTXTファイルに書き出されます。(ただそれだけ)
ファイルサイズを少しでも小さくする為に、連続した色は圧縮するようにしました。 (例えば、COLOR番号7が123個連続である場合のデータは、123×10+7 =1237としています)
ファイルサイズを減らす事だけが目的ならば、もっと圧縮率の良い方法も考えられますが、レトロパソコンでの表示を考えると(複雑な圧縮方法だと復号に)時間が掛かりすぎそうです。
描画速度を考えると(レトロパソコンから)ファイルを読み取るのではなく、プログラムにデータを埋め込みたかったのですが(READ、DATAを使用して)メモリが足りませんでしたので、やむなくこの手法になってしまいました。
※実行速度を本気で考えればレトロパソコンの実行は機械語が望ましいのですが、それだとあまりにも汎用性に欠けてしまいます。
これを以下のプログラム(F-BASIC版)で描いてみます。
10 CLS 20
I=0 1000 OPEN "I",#1,"1:AE85" 1010 INPUT#1,A$:A=VAL(A$) 1020
Y=INT(I/640):X=I-Y*640 1030 IF A<=7 THEN PSET(X,Y,A):I=I+1 ELSE
E=INT(A/10):C=A-E*10:FOR J=0 TO
E:Y=INT(I/640):X=I-Y*640:PSET(X,Y,C):I=I+1:NEXT 1040 IF EOF(1)=0 THEN
1010 1050 CLOSE #1
※
1000行にある、"1:AE85"がファイル名です。
この絵を数値データ化したのがこちら
実行してみましょう。
「スゴク遅い!!!」
次は、ある程度、”写真ぽく”減色させたのが、以下の絵です。 ※こちらは、ソフトウェアで減色しているだけで、手を加えていません。 この絵を数値データ化したのがこちら
もうひとつ・・・・ バイクを描いてみました。 (古チャンが乗っているバイクと同じだと思うのですが、よく分かりません。バイクは詳しくないのです)
もうチョット時間を掛ければ、マシになったかもしれませんが、大分手を抜いています。 (全体的に赤が強すぎますね)
・・・・で、もうチョット時間を掛けてみました。 どうせ、時間を掛けるならば、やはり自分のクルマ(AE85)でやってみましょう。
「そうそう、こんなの(写真みたいな、絵みたいなの)が作りたかった」
いずれにせよ、全て正しく表示されました。 しかし、スゴク実行速度が遅いです。やはりBASICじゃダメかな?
|