MCL(45)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (45)

45. PIC

 BAStoCの導入により、速度の問題はある程度は解決したように思えた。
 次に、それに匹敵するくらい大きく、深い問題があった。メモリ不足である。
 一番大きな障害になるのが、画像データである。例えば、敵のデータを純粋に画像データとして持つ事にしよう。ところが、この時の私には、画像を圧縮して保存するという手段がなかった。無圧縮画像というのは、かなり厳しい。仮に65536色の512x512、つまりX68kの目一杯の画像を保存するとなると、無圧縮で512kバイトになる。これでは、1.2Mのフロッピーディスクに2枚しか入らない。64k色とか512x512とかは極端だとしても、これじゃメモリ的にも保存メディア的にも難しい問題が出てくるのは火を見るより明らかだ。
 敵に限らず、タイトル画面とか、その他画像を使いたいところが多数あるじゃないですか。それを全てベタデータで保存するのは現実的ではない。容量的にかさばるし、それを読むのに必要な時間も相当かかる。

 後から考えるなら、PICなどの画像圧縮フォーマットを使うなり、あるいはLHAのような汎用圧縮ツールを使うのはどうか、となるだろう。しかしその当時は、そんな便利なツールは持っていなかった。
 PICフォーマットについては、すぐに知った。Oh!Xにその存在だけは書いてあったからだ。しかし、本体が無い。「ネットで簡単に手に入る」との事だが、まだ買ったばかりの私は当然ネット環境などあるわけがなく、手に入らない。このように、「ネットで当たり前に手に入る」状態になっているものが、ネットをやっていない人間には全く手に入らないという状況には、かなり歯がゆさを感じた。
 調べてみると、pic.r自体はOh!Xの1990年6月号の付録ディスク(これが同誌初の付録ディスクだそうだ)に収録されていたらしい。という事は、バックナンバーを手に入れれば良いのだ。
 もう一つ、1990年6月号の付録ディスクに収録されていると書いてあったもので欲しいソフトがある。それがGCCというフリーのコンパイラだった。Oh!Xやその他の本なんかにも、「コンパイルをシャープ純正のXCでやってる奴は馬鹿。GCCしかないね」みたいに書いてあるので、どうしても手に入れたかったのだ。
 そういうわけで、Oh!Xの後ろにある「バックナンバー常備店」なんてのにいくつか行ってみたが、どこも置いてやがらない。こんちくしょう。
 それから、秋葉原のラオックスに行った。ここにはさすがにズラーッとバックナンバーが揃っていたが、私の欲しい90年6月号はなかった。
 結局、最後まで90年6月号を手に入れる事はなかった。

 画像圧縮のためのフォーマットというのはいくつかあるのだが、この時点ではすでにPICフォーマットがX68kの世界では勢力を伸ばしていた。
 私は手に入れるより先に圧縮の原理を知ったのだが、それはかなり綺麗なものだった。
 PICの基本的な考え方は、ランレングス圧縮である。つまり、赤のドットが5つ並んでいたら、それを「赤赤赤赤赤」という形式で格納するのではなく、「赤x5」という情報に直す。従って、同じような情報が連続する事の多いファイルを圧縮するのには適している。
 これを画像圧縮に使うとなると、横方向(あるいは縦でもいいが)にしか圧縮が効かない事が分かる。同じ色が横方向に並んでいるような画像では、きっと縦方向にも広がっているだろう、と想像できる。極端な話、1色で塗りつぶされた画像は、縦にも横にも連続した情報が現れる。これを横方向のラインごとにしか圧縮できないのはもったいない。
 そこで、横も縦も圧縮しようというのがPICである。だから、同じ色で囲まれた部分の情報を小さくできる。
 とは言え、その「同じ色で囲まれた部分」が長方形のようなきれいな形をしている事はまれだろう。そこでPICは、大雑把に言えば「同じ色で囲まれた部分の輪郭線」についての情報を記録する。
 このような原理のため、PICは俗に言うアニメ塗りのような、単一色が続く画像の圧縮にかなり強かった。
 PICは他にも、輪郭線の記録のためにADPCMのような考えを持ち込んだり、色情報を小さくするためにキャッシュを用いるなど細かい工夫が凝らされているが、それでも圧縮・展開にかかる処理の負担は小さく、ゲームの組み込みなどを考えてもかなり優秀なフォーマットだと思う。

 結局、pic.rそのものはすぐには手に入らなかったのだが、最初に買ったOh!Xの付録ディスクにAPICLOADおよびAPICSAVEという外部関数が収録されている事に気づいた。これがあれば、X-BASICからpicファイルの読み書きができる。というより、最初は知らなかったのだが、pic.rそのものがあったとしてもX-BASICには関係がない。むしろ、そのAPICLOADとAPICSAVEのみが必要なのであった。

 しかし、そもそも元のpic画像を作る手段がなかったので、例えプログラム側にAPICLOADを組み込んだりしても、あまり意味がない。というか、良く考えれば「画像を作る」という手段自体なかった。
 そこでとりあえず、X-BASICで簡単なグラフィックエディタ作ったりしたけどね…。ちょうどドラクエとかやってたんで、ドラクエIVに出てくる「コドラ」のイラストとか描いたっけ。マウスオンリーでね。やってみて、「これマウスのみでRPG作るの無理じゃない?」とか思った。
 前途は多難だ。


前のMCLへ  次のMCLへ

戻る

TOM 2005