DQバイナリ改造 @Wiki

圧縮 - SFC-DQ5

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

スプライト

0FD63D-: スプライト構成データアドレス
0FD787-: スプライト構成データ(先頭3Byteがスプライトデータアドレス)

展開後のデータは4色なので, yy-chr などで見るときは 2BBP NES で見る.

  • 圧縮法
まず1Byte読み込み, それの値(Aとする)よって3つの場合に分類される.
1. A = 128 のとき
 データはここで終了
2. A < 128 のとき
 次の A+1 Byteをそのままグラフィックデータに書き込む.
3. A > 128 のとき
 次の1Byteの値を(A + 1 - 128) Byte だけグラフィックデータに書き込む.

この2~3の繰り返しで1が来るまで読み込む.

04 0D 07 1F 3F 1F 86 00 01 30 58 83 7F 00 90 80
という圧縮データならば, 展開後は
0D 07 1F 3F 1F 00 00 00 00 00 00 00 30 58 7F 7F 7F 7F 90 
というデータになる.

  • SNES形式への変換

このままでは4色しか使えないと思われるが, 実はもう一度直後のデータに対して
同じ処理を行って色の上位bitを取ってくるのである. 上位bitを使用頻度の少ない
色にして圧縮効率を高めている.

そこで 2BPP NES で見れるデータを SNES 用(8*8 が 32 Byte)に変換しなければならない. 
最初の16Byteを8Byteずつに分け, 奇数番目に最初の8Byte, 偶数番目に次の
8Byteが来るように並べかえればよい. 次の16Byteは2回目の読み込みの分を使う.

最初のデータの先頭の展開後
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
次のデータの先頭の展開後
1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 
→(SNES用に変換)
00 02 04 06 08 0A 0C 0E 01 03 05 07 09 0B 0D 0F
1F 1D 1B 19 17 15 13 11 1E 1C 1A 18 16 14 12 10 

モンスターグラフィック

128C45:モンスターグラフィック1アドレス							(2B*42)
128C99:モンスターグラフィック1
130F99:モンスターグラフィック2アドレス							(2B*45)
130FF3:モンスターグラフィック2
1382E4:モンスターグラフィック3アドレス							(2B*27)
13831A:モンスターグラフィック3

  • 圧縮法
データの最初の6Byteが情報
00: 
01: 影X座標
02: 影Y座標
03: 中心X座標
04: 中心Y座標
05: bit0-3: 大きさ{$0D9B}
    bit4-7: 大きさ{$0D13}(-1される, ただし0Fのときは13をとる)
次の(大きさ * 大きさ) bit がブロック位置
次の(ブロック数 * 4) bit がブロック情報
 bit1: 0 なら 8*8 ブロック, 1 なら 16*16 ブロック
 bit2-3: 値が 00 でなければ左右反転?
以降が各 8*8 マスの構成データ, 各8*8 マスは展開後 32 Byte 分のデータになる. 

  • 構成データ
1 Byte 基本情報: bit7: 処理の Byte 数
           bit6: 定数値を00にしない
           bit2-3: 処理2の種類
           bit0-1: 処理1の種類
                   00: 0x10分全て00
                   01: 0x10分, 上位00固定, 01の各bitが1なら非定数の次の値を取る
                   02: 01の上位下位逆バージョン
                   03: 次の2Byteが定数使用状況
(1 Byte 定数: 基本情報の bit6 が 1 なら存在, なければ定数値は 00 になる)
フラグ: 長さは各処理につき 00 なら 0Byte, 01 または 02 なら 1Byte, 03 なら 2Byte
データ: 長さはフラグの 1 な bit の数

8B 02 AF 03 01 01 03 0C 03 10 0F 03 0F 
→
{8B} {02 AF} {03} {01 01 03 0C 03 10 0F} {03 0F} 
処理1: 03
処理2: 02
定数値: 00
フラグ1: 0000001010101111
フラグ2: 00000011
→(展開)
00 00 00 00 00 00 01 00 01 00 03 00 0C 03 10 0F
00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 0F

CF 20 FF FF 40 FF D0 A0 F0 80 F0 80 70 80 78 C0 38 C0 38 C0 39 C0 00 10 10 10 10 10 10 10 00 
→
{CF} {20} {FF FF} {40 FF} {D0 A0 F0 80 F0 80 70 80 78 C0 38 C0 38 C0 39 C0} {00 10 10 10 10 10 10 10 00} 
→(展開)
D0 A0 F0 80 F0 80 70 80 78 C0 38 C0 38 C0 39 C0
20 00 20 20 20 20 20 20 10 10 10 10 10 10 10 00

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー