2025年2月13日木曜日

MSX版ザ・キャッスルのステージデータ圧縮方法を解析・その6。

 横ランレングスの部分について、今のところ分かっているところまで。
もう、図の上にバイナリデータを書いたものと、実際のバイナリデータを見てもらえれば一発かと。城の一番左上(データ番号00)のステージです。




ランレングス(Run Length)というデータ圧縮方法は「どのデータを何個」という形で書いています。
で、キャッスルの横ランレングス部分のキャラクタは、手書きの図(ちゃんと作りたかったけど、面倒くさいので手書き)のように「2文字」で作られています。
で、バイトの上4ビットがキャラクタの種類、下4ビットが横に置く数(0なら1個、Fなら16個)ということになります。なもので、4Cと指定するだけで一番上のガタガタ部分の1行が書けてしまえると。ただ、並べられるのは横に13個分(26文字)なので、14~16個を指定した場合は次の行にもその余り部分が書かれる…というようになっているかと。
そうして見ていくと、ほぼそのルール通りのデータになっているかと。

城の作りで、斜めにカットされている部分は後で書きますので、ここでは無視します。

しかし、その中で( )で書いた(08)は、白ブロックが敷き詰められているので、本来は18にならなければいけないのでは?(・・? というのが今の疑問です。でも、今は後回しにして他のステージ例なども見ていこうかなと。

0 件のコメント:

コメントを投稿