トップページ 本棚 メモ帳 告知板 道具箱 サイトの表示設定 リンク集 Twitter

.pcx形式とは何か

Tags:
目次

はじめに

このメモを書いている2019年からもう十年近く前にあれこれ弄っていた「M.U.G.E.N.」(*1)という格闘ゲームエンジンがあるのだが、このゲームではキャラクターやステージを構成するスプライトのファイル形式として「.pcx」形式が使われていた(*2)。当時は特に気にしていなかったのだが、今になって「あの.pcxファイルってなんだったんだ?」とふと疑問に思い、.pcxとそれをとりまくアレコレについて調べてみた。

.pcx形式について

.pcx形式の概要

.pcxは米国のソフトウェア会社ZSoft Corporationが開発したMS-DOS向けの画像編集ソフト「PC Paintbrush」が標準形式として採用する形で開発されたラスタ形式の画像フォーマットで、そのPC Paintbrushが広範に受け入れられたことからMS-DOSにおけるラスタ画像のデファクトスタンダードとして広まったという経緯がある。先にソフトありきで、ソフトが幅広く支持されたのでそれに追随する形で.pcx形式も広まったということのようだ(*3)。

フォルダ内に保管された.pcxファイル

.pcxという拡張子の由来

拡張子の「.pcx」とは何か。察しが付く人もいそうだが、これは「PiCture eXchange」(画像交換)の略(*4)である。

……とずっと思っていたのだが、今回ちょっと調べてみたところGIMPLibreOffice Drawなどでは「Personal Computer eXchange」の略として扱われている。どちらにせよ意味は通るが、前者は頭文字の取り方がやや不自然、後者は何の交換フォーマットなのかが不明瞭、と今一つスッキリしない。

.pcxファイルのプロパティシート

どちらにせよ「Exchange」が含まれていることは間違いなく、「Graphics Interchange Format」由来の.gifや「Data eXchange Format」由来の.dxfなんかとノリは同じと言えるだろう。画像ファイル(Picture)のデータ交換用(Exchange)に作られたフォーマットということである。

.pcxフォーマット

サポートする形式

さて、.pcxがMS-DOS時代の画像データ交換目的で作られた形式であると分かったところで、次は具体的に.pcxファイルがどのようなファイルかについて記載する。フォーマットが定められた時代が時代だけに、中身は非常にシンプルである。

圧縮形式

色数

パレット形式

……と、ここまで書いておいてなんだが、サポートしている画像の形式は.bmpと大体同じである。圧縮形式としてRLEを採用している辺りも似ている(*5)。

データ構造

128byteのヘッダとデータ部分、そして768byte(*6)のパレット部からなる。

ヘッダについては以下のような構造になっているようだ。

struct PCXFileHeader {
    uint8_t  Identifier;
    uint8_t  Version;
    uint8_t  Encoding;
    uint8_t  BitsPerPixel;
    uint16_t XStart;
    uint16_t YStart;
    uint16_t XEnd;
    uint16_t YEnd;
    uint16_t HorizontalResolution;
    uint16_t VerticalResolution;
    uint8_t  EGAPalette[48];
    uint8_t  Reserved1;
    uint8_t  NumBitPlanes;
    uint16_t BytesPerScanline;
    uint16_t PaletteType;
    uint16_t HorizontalScreenSize;
    uint16_t VerticalScreenSize;
    uint8_t  Reserved2[54];
};

chikuchikugonzalez氏のサイトに詳しい構造が載っている(*7)。

PC PaintbrushとZSoft Corporation

.pcx形式がどんなファイルなのか大まかに理解できたところで、.pcx形式を採用したペイントソフト「PC Paintbrush」と、それを開発した「ZSoft Corporation」について述べる。

PC Paintbrush

PC Paintbrushのファーストバージョンがリリースされたのは1984年。時期的にはMS-DOS 1.xに相当する。マウスを使って直感的に絵が描けるという点が高く評価されて大ヒット商品となり、1987年にはマイクロソフトのマウス製品にMicrosoft Paintbrush 2.0の名称でバンドルされ広く販売された。

このような形で広まりつつもPC Paintbrushとしても併存し、バージョンV(*8)までバージョンアップされた。その後マイクロソフト系OSの主流がMS-DOSからWindowsへ移り変わってゆく過程でバージョン番号がリセットされ、1993年にWindows 3.0向けへPC Paintbrush for Windows 1.0の名称でリリースされた(*9)。これより新しいバージョンはリリースされておらず、公に知られているPC Paintbrushの最終バージョンとなっている。

ZSoft Corporation

開発元であるZSoft Corporationはどうか。PC Paintbrushのヒットで一躍有名になるも、1989年にActivisionのビジネスソフト部門であるMediagenic社に買収される。その後Mediagenicの解散に伴い再度独立するも、1993年にはWordStar社に買収され、そのWordStar社は1994年にSoftkey社と合併、そしてSoftkey社は1995年にThe Learning Company社に買収された(*10)(*11)。

短期間に何度も起きた買収や合併の過程のどこかで、PC Paintbrushはもはや不要と判断されたのだろう、SoftKey社時代に上記のPC Paintbrush for Windows 1.0をリリースして以降、今に至るまで音沙汰がない。ZSoft Corporationも同様である。

なぜM.U.G.E.N.は.pcx形式を採用したのか

.pcx形式とPC Paintbrush、そしてZSoft Corporationについては以上のとおりである。画像形式もソフトウェアも開発元もMS-DOS時代に一世を風靡したが、それらは皆Windowsへ移っていく過程で静かに消えていったというのがお分かりいただけたかと思う。ここで話が冒頭へ戻って、M.U.G.E.N.はなぜこの.pcx形式のファイルを標準的な画像フォーマットとして採用したのかについて考えてみたい。

リリース時期から探る採用理由

これについては具体的に誰かが背景について語ったわけではないので、大部分が推測・想像に過ぎない点はご容赦いただきたい。

M.U.G.E.N.の開発元であるElecbyteの公式サイトをInternet Archiveで遡ってみると、M.U.G.E.N.の初回リリース日が1999-07-27であることが分かる(*12)。M.U.G.E.N.のそれなりに複雑な機能を鑑みると、恐らく2年くらいは開発に充てていたのではないかと思われる。なので、開発が始まったのは早くとも1997年中頃と推測する。この頃はまだMS-DOS上で動作するゲームが数多く存在(*13)し、特にレスポンスの早さが求められるアクションゲームはMS-DOS向けのものが大半を占めていた。よってM.U.G.E.N.はMS-DOSをターゲットとして開発が開始されたと想像がつく。(*14)

先の通り.pcx形式の画像はMS-DOS上での利用を前提としている側面があり、MS-DOSでは扱いやすかったと考えられる。ドキュメントやライブラリの類も充実していたのだろう。ここから考えると、MS-DOS向けに開発されたM.U.G.E.N.の標準画像フォーマットが.pcxとなるのも納得、ではなかろうか。

仮にWindows版のM.U.G.E.N.が当初予定通りに正式リリースされていればそこで.bmpなり.pngなりがサポートされた可能性もあるが、Windows版開発途中の2001年頃にElecbyteが失踪、実際に.pngのサポートが追加されたのは実に10年後にリリースされたM.U.G.E.N. 1.0からである(*15)。

*1:今もオフ会にだけはたまーに顔を出させてもらっています。
*2:2011年にリリースされた「M.U.G.E.N. 1.0」では.png形式も使えるようになったが、.pcxしか使えない時代が約12年とあまりに長かったゆえに、今もスプライトが.pcx形式のファイルになっているキャラクターは多い。
*3:Adobe Illustratorの「.ai」ファイルやAdobe Photoshopの「.psd」ファイルが業界標準となっていることと同じようなものである。
*4:少なくともWikipedia (en)にはそう書かれている。ただ、残念ながら出典が付いていない。
*5:データの持ち方は全然違っているが、普通の使い方をする限りは.bmpも上に書いた範囲のいずれかのフォーマットに落ち着くのでやはり似ていると言える。
*6:R/G/Bがそれぞれ0~255の値を持ち得るので1byte*3の塊があり、それをパレットのインデックス番号0~255に対応させるため256個分用意……ということで3*256=768byteのデータ領域が使われる。分かりやすい。
*7:いわゆる丸投げである。
*8:このソフトはバージョン番号の表記にローマ数字を使っていた。
*9:紛らわしいが「Windows 1.0向けのPC Paintbrush」ではなく「Windows向けのPC Paintbrush 1.0」である。
*10:蛇足だがThe Learning Companyも1998年にマテルに買収され、かと思いきや2年後の2000年にはマテルからThe Learning Companyが分離、間髪入れずにGores Technologyに買収され、また2年後の2002年にはGores TechnologyからThe Learning Companyが分離。同社は現在単独で事業を行っている……と波乱万丈の歴史を刻んでいる。
*11:この途中で出て来たWordStarという会社も相当な回数あっちへ行ったりこっちへ行ったりした結果、それだけで一つのページが成り立ってしまうほどの物凄い経歴になってしまっている。詳しくはWordStar History業界に痕跡を残して消えたメーカー ワープロソフトWordStarで分裂したMicroProをご覧いただきたい。後者のタイトルが示す通り、WordStarもいわゆる「最初の会社」ではない辺りに深みを感じてほしい。
*13:かの有名なDuke Nukem 3Dのリリースが1996年である。
*14:この頃はWindows向けのゲーム開発用APIが整備されていたとは言い難く、MS-DOSからゲームを起動してハードウェアへ直接アクセスするという手法がまだ生きていた時代である。1997年~98年はDirectX 5.0の時期に相当するが採用されたゲームの数は多いとは言えず、アクションゲームとなるとさらに限られてくる。例として1998年6月発売の「Unreal」は当初動作モードとしてDirect3Dをサポートしておらず、後からパッチでサポートが追加されている。
*15:なお、Elecbyteはその後2013年頃になって再び失踪した(公式サイトが403に)。7年後に戻ってきた前回の実績を踏まえるならそろそろ復活する頃合いであるが、果たして。