DQ3/6 モンスター画像の構造2

思ったよりフィールドマップの変更に手間取って更新ができませんでした。現時点で残作業は差し替えるマップ座標の情報をどう設定するかが解析できればロマリア~ノアニールのストーリー変更はフラグとセリフの変更等で実現できそうです。何がいいたいかというと、マップデータの追加はもうやりたくないということです。まあこれで察してくださいwww。しかしダンジョン追加とかちゃんとできるのかね。さて、前回モンスター画像の構造の全体について解説しましたが、スプライト情報より下位の部分の説明をします。

20090529193925.jpg

スプライトグラフィックインデックス($0542A6-)は、0-2バイト、3-5バイトにそれぞれ何らかの開始アドレスを持っています。0-2バイトから始まるアドレスはどうやらアニメーション情報のようです。3-5バイトから始まるアドレスは各スプライト1枚分の画像情報のようです。例えば、じんめんちょう系(スプライトID:#$0D)のアニメーション情報アドレスからはじまる情報は以下のようになっています。(見ずらくてすいません…)

2EA410… 26 A4 EE C7 A4 EE 40 A5 EE F5
2EA420A5 EE 82 A6 EE 00 01 00 00 01 01 00 01 02 02 00
2EA42000 03 01 00 01 04 …

これを見る限り、EEA426、EEA4C7、EEA540、EEA5F5、EEA682も開始アドレスを意味しているようです。断片的な情報から推察するにおそらくアニメーション制御情報(どのスプライトをどの座標でどれくらい表示するとか)の定義だと思われますが、詳細は不明です。ちなみに行動時のアニメーションパターンが多いほどこの部分のデータ量が増えます。この部分が解明できればDQ6からの移植だけでなく、それなりの画像が用意できればDQ3、DQ6にアニメーションをするモンスターを新規追加することができます。正直だれかの解析待ちです。パッチの作成が一通り終わるまでは手を出す気にはなれません。(あまりに時間がかかりすぎるので)

次は各スプライトの画像情報です。

2EA740…3F
2EA750A8 EE 6A A8 EE AF A8 EE F4 A8 EE 39 A9 EE 7C A9
2EA760EE C1 A9 EE 06 AA EE 4B AA EE 8E AA EE D3 AA EE
2EA77018 AB EE 5D AB EE A0 AB EE E5 AB EE 2A AC EE 6F

じんめんちょう系のアニメーションはパターンが多く、全部で80パターンあるようです。(EEA83F-EEA74F=240バイト,3バイトx80スプライト?)それぞれが各スプライトの画像構成情報の先頭アドレスを意味しているようです。例として1枚目(静止画像)を見てみます。

2EA830…12
2EA84000 12 00 6E 54 6F 54 86 54 85 54 0C FF 7A 54 7B
2EA85054 06 00 E0 02 40 17 E0 02 00 08 E0 03 40 0F E0
2EA86003 00 00 D0 00 50 0F D0 00 10 1C

これが何を意味しているかというと、以下の情報のようです。(文中のアドレスはオリジナルのDQ3のものです)

スプライト個別情報は大きく分けて

  • A)実グラフィック情報
  • B)画像配置情報

の2つの部分から構成されており、A)には表示するグラフィックのインデックス($0E0080から始まるグラフィックデータのインデックス)が格納されており、B)にはA)の情報をどの座標に配置するかの情報が格納されている。

A),B)それぞれの内容は以下のようになっている。

A)実グラフィック情報

00-01: 画像配置情報へのオフセット

02-03: 不明

・・・・ : グラフィックインデックス

以降$00-01のオフセットに到達するまで、以下のルールで2バイトづつデータが格納されている。

  • i) $FFXXの場合 スプライト内インデックスを$XXジャンプする
  • ii) a)以外の場合 画像実データへのインデックス。($0E0080 + $20 * $XXXXで実アドレスを取得できる)。

格納されている実データへのインデックスを先頭から読んでいき、0から始まるスプライト内インデックスを振っていく。ジャンプした場合はジャンプした先からインデックスを振る。

B)画像配置情報

00: 画像配置情報数?

01: X座標(Singed Byte,マイナスもありうる)

02: Y座標

03: スプライト内画像インデックス A)の先頭から0,1,2で付番したもの

04: 4bit 0: 8×8の1マスを配置 1: 16×16の4マスを配置。

6bit 1: 左右反転

以降$00回$01-04を繰り返す。なお、画像配置が16×16の場合は、$03のインデックスの値が$Xとすると、

左上:$X, 右上:$X+1, 左下:$X+$10, 右下:$X+$11

のインデックスの画像をそれぞれ配置する(左右反転の場合は左右逆に配置し、画像自体も反転させる いっかくうさぎ、さそりばちなどで使用されている)。

例:スライムの場合

静止画像のデータ($F3546E-$F35480)

A)0E 00 12 00 79 82 7A 82 0E FF 87 82 88 82

-> $00:8279, $01:827A, $10:8287, $11:8288

B)01 00 F0 00 10

-> 16×16の画像を ($00,$F0)を開始座標にして$00(左上),$01(右上),$10(左下),$11(右下)に配置

一応この解析でDQ3のモンスター画像は静止画に関しては全て正しく表示できています。

コメント

タイトルとURLをコピーしました