起動ロゴのアニメーションパレット指定について

 Windows95/98では、Windowsの起動時に、色の帯が横に移動する起動ロゴを表示することは、 ユーザーならすでにご存じのことと思います。 そして、この画像は、Windowsのブートドライブのルートディレクトリに"LOGO.SYS"という名前で、 決められたサイズ・色数のビットマップファイルをおくと差し替えられることもすでに有名な業です。 しかし、ただ単に普通のビットマップファイルをおいただけでは、 先ほどの色の帯を動かすためのカラーパレット置き換えのため色が変な風にちかちかすることがあります。 そこで、この現象を起こらないようにしたり、 思い通りにパレットを置き換えさせてしまおうという方法を紹介します。

 ちょっと長いんで(笑)、休み休み読み進めることをおすすめします。

 まず、バイナリエディタ (僕は窓の杜かどっかにあった"BZ"というのを愛用してます。 BITMAP関係の構造体を扱いやすくできてて便利。) を御用意ください。 そして、PC/AT互換機をお使いの方は、320x400、256色のビットマップ画像を、 PC-98シリーズをお使いの方は、640x400、16色のビットマップ画像を用意して、 それをバイナリエディタで開いてみてください。 画像はこの条件に合えばどんな物でも良いです。

 さて、000032 〜 000035 をご覧ください。 この部分が、カラーパレットのアニメーションの条件を指定する場所です。 この場所は BITMAPINFOHEADER という、 ビットマップファイルの様々な情報を格納する構造体のなかの、 biClrImportant というメンバに相当していて、 「ビットマップの表示において重要と思われるカラーインデックスの個数を指定する」 という用途のために用意されています(この辺がよくわからない方は、 「まぁそんなものがあるんだ」と納得してください)。 ちなみに、この BITMAP 関係の構造体のメンバは、 1バイトごとに区切って後ろから見る (たとえば、000032 〜 000035 が、[ 67 45 23 01 ]となっている場合、 これは実際には[ 01234567 ]を表しています。) というややこしい構造をしているのでご注意を。

 と、ここからがようやく核心です。 この000032に書かれている数字以降のパレットがアニメーションされるパレットとなり、 000033に書かれている数字は、 デフォルトの起動ロゴで言うところのアニメーションの方向が単方向[ 00 ]か双方向[ 01 ]かを表しています。 具体的に例を挙げると、000032が[ EC (236) ]、000033が[ 00 (0) ]のとき、 この画像のパレット番号236以降のパレットを順にひたすらシフトして置き換えるようになります。 もちろん、000032は、16色しか起動ロゴで扱えないPC-98シリーズでは[ 0F (15) ]までしか指定できません (というか、それ以降を指定したときにどうなるかは未確認なのですが)。 また、すでにお気づきの方もいらっしゃるかもしれませんが、アニメーションに割り当てられるパレットは、 最初あるいは途中のパレットから途中のパレットまで、という指定の仕方はできません。 必ず最後のパレットまでを指定することになるので、それを画像の作成時に考慮しないといけません。

 上記の通り、アニメーションさせたいパレットの始まるパレット番号を000032に、 アニメーションの方法を000033で指定したら、その変更を保存し、 さらに画像ファイルの名前を"LOGO.SYS"とします。 これをブートドライブのルートディレクトリに置いて作業完了。 再起動してみてちゃんと想像通りに表示されたら成功です。おつかれさま。

<サンプルファイル>

LOGO.SYSのサンプル(非常に適当なやつですが)をおいておきます。