DQ3 ストーリー変更(ロマリア~ノアニール3)

前回の作業で一応新しいマップパーツを2個追加する余裕が出来ました。1つのマップパーツは16×16なのでSnes4bpps(8×8)4つから構成されることになります。というわけで、今回は画像を追加し、マップに適用する部分の作業を行うことにします。前回の作業で各種データの位置を移動したりサイズを拡張しているのでアドレス等は必ずしもオリジナルと同じではないことに注意してください。

まずはSnes4bppsに「壊れた橋」の画像データを追加するわけですが、私の技術力のなさゆえに奇特な方に送ってもらった壊れた橋のグラフィックをそのまま使うことが出来ませんでした。しかたなくオリジナルの橋のデータと海のデータを流用し、みようみまねでYY_CHR上でぽちぽちとドットを打つ事でとりあえずの対処としました。グラフィックの追加位置は$56C800-C900です。

次にグラフィック読み込み位置データ($100000-)に↑の画像データの位置を設定します。前回$8F1Cまでデータをコピーしているので$8F1Dから続けて$56C800-C900のインデックス($AE3C-43)を設定します。

Index Value
8F1D AE3C
8F1E AE3D
8F1F AE3E
8F20 AE3F
8F21 AE40
8F22 AE41
8F23 AE42
8F24 AE43

次にマップパーツ1($2543A0-)の#$260、#$261に追加画像データの配置情報をセットします。

Index 左上 右上 左下 右下
0260 256 3 0 0 257 3 0 0 258 3 0 0 259 3 0 0
0261 260 3 0 0 261 3 0 0 262 3 0 0 263 3 0 0

次にフィールドマップパターン$22E、$22Fがロマリア東部の橋を含むマップパターン(4×4)ですが、この一部を変更します。フィールドパーツ構成データ($3C9F22-)の$9BDF番目のレコードを$EDに、$7D23番目のレコードを$EEに変更します。場所の計算方法はそれぞれ2623 x 15(4×4のパターンの右下) + 558、2623 x 12(4×4のパターンの左下) + 559で位置を算出しています。EDというのは↑の260-173(16進です)、EEというのは261-173(16進です)のことです。

今回の変更は、船および鳥入手前に元のマップに戻ってしまうのであまり考える必要はありませんが、鳥入手後にも表示されるマップを変えたい場合はラーミア用($0251B1E-)の部分についても変更する必要があるでしょう。

今回はフィールドマップパーツを構成するビットマップパターンの数を増やしている(256→264)影響のためか、鳥に乗るとフィールドの描画がおかしくなります。これは、フィールドマップの描画に使用するビットマップパターンの数を見てラーミア用の付加情報($251B1E-)を読む/読まないを判断している部分があるためです(この不具合は実装してからかなり後になって気がつきました)。

  • SR: $0063C0 グラフィック付加情報展開?
0063D1 CMP #$0109 A>=#$0109? #$0101から変更

この条件をパスしないと、グラフィックインデックスの「付加データのアドレス」に設定してあるデータを読まなくなるようです。結果ラーミアに乗っている間のグラフィックが

このようになってしまうので注意してください。(どっかのデータを間違えて潰してしまったかと焦りました)

さて、作業が終わったので期待通りにマップが変わっているかチェックしてみます。

もともとゲーム内に存在しているグラフィックを使いまわしているので違和感はあまりないですが、橋のたもとに白い波打ち際がないので若干変な感じです。通行できないかも確認してみましたが、通行できないようでとりあえずはいい感じです。