以下のネタは実はどこかですでに解析が終っているネタなのかもしれませんが…。お約束ですが、以下の内容は私個人が解析を行なった結果であり、内容の正確さに関しては保証できません。
MI-EX1/MI-E1用の壁紙ファイルフォーマットを調べて「かべこん」を作成したわけですが、ものは試しと「かべこん」のデバッグバージョン(MI-EX1/E1以外でも壁紙の設定/解除が可能)でMI-506の壁紙データを変更してみたところ、インデックス画面の背景が真っ白に!いろいろ調べてみたところ、MI-506/MI-110MにはROM上に壁紙データ(拡張子WPP)が存在しており、MI-EX1/MI-E1と同様にSYSCONF.PRFのCWPPを変更することで壁紙を変更できることがわかりました。ただ、壁紙データ(ファイル拡張子WPP)の構造が全然違います。
MI-506/MI-110Mで使用されているデフォルトの壁紙データ(サイズ17161バイト)のフォーマットは以下のようになっています。
offset | 長さ | 備考 |
+0000h | 16バイト | 壁紙ファイルのヘッダ |
+0010h | 12バイト | 壁紙(小)ヘッダ |
+001Ch | 2914バイト | 壁紙(小)ビットマップデータ |
+0B7Eh | 12バイト | 壁紙(大)ヘッダ |
+0B8Ah | 14194バイト | 壁紙(大)ビットマップデータ |
+42FCh | 12バイト | 空ヘッダ(オール00h) |
+4308h | 1バイト | 空データ(00h) |
MI-506/MI-110Mでは、一つの壁紙ファイルの中に、2種類のビットマップが格納されています。壁紙(大)は横302×縦47ピクセルです。横方向302ピクセルというのはインデックス画面の横幅とほぼ同じで、これを縦方向にタイリングしてインデックス画面全体の壁紙とします。
壁紙(小)は、インデックス画面に表示されるアイコン(横4×縦4の16個)のバックに表示するためのビットマップデータのようです。壁紙(小)のサイズは横62*縦47ピクセルです。
これら二つのビットマップファイルは各ピクセルをザウルスのGUIカラーを用いて1ピクセル1バイトで表現します。GUIカラーに関してはSZABのマニュアルをご覧ください。