ここ数日エフェクトの調査とか移植作業をしていて他の部分はまるで進展しておらず、「よくわからないRAMを追っかけるのはもう勘弁だお…」状態だったのですが、不完全ながら移植ができました。注意すべき点は「DQ6のエフェクトはパレットアクセスの2番目のパレットを使用するがDQ3では1番目のパレットを使用する」という点です。従って、DQ6からDQ3に移植したマップパーツ1のパレット使用番号を1から0に変えないといけません。
- SR: $04F991 火の息エフェクト処理(新SR)
04F991 | JSR $B7A7 | SR: $04B7A7 | |
---|---|---|---|
04F994 | JSR $8508 | SR: $048508 | |
04F997 | LDX #$0008 | X=#$0008 | |
04F99A | LDA #$0044 | A=#$0044 | |
04F99D | JSL $C02ABA | SR: $002ABA 引数:1#$C4F9D2 | |
04F9A4 | JSL $C1E32E | SR: $01E32E 引数:1#$00DB | BGM設定 |
04F9AA | LDA #$03BD | A=#$03BD | パレットアクセスID |
04F9AD | STA $4F74 | $4F74=A | |
04F9B0 | LDX #$0000 | X=#$0000 | |
04F9B3 | LDY #$0008 | Y=#$0008 | |
04F9B6 | LDA #$0018 | A=#$0018 | 火の息エフェクトID(追加) |
04F9B9 | JSR $B65B | SR: $04B65B | 呪文使用時エフェクト描画用データセット |
04F9BC | PHX | Push X | |
04F9BD | JSL $C02ABA | SR: $002ABA 引数:1#$C4B212 | |
04F9C4 | JSR $AFA7 | SR: $04AFA7 | エフェクト実行 |
04F9C7 | JSR $8548 | SR: $048548 | |
04F9CA | PLX | Pull X | |
04F9CB | JSR $B6DA | SR: $04B6DA | |
04F9CE | JSR $B7A7 | SR: $04B7A7 | |
04F9D1 | RTS | return |
- SR: $04F9E5 燃え盛る火炎エフェクト処理(新SR)
04F9E5 | JSR $B7A7 | SR: $04B7A7 | |
---|---|---|---|
04F9E8 | JSR $8508 | SR: $048508 | |
04F9EB | LDX #$0008 | X=#$0008 | |
04F9EE | LDA #$0088 | A=#$0088 | |
04F9F1 | JSL $C02ABA | SR: $002ABA 引数:1#$C4F9D2 | |
04F9F8 | JSL $C1E32E | SR: $01E32E 引数:1#$00DB | BGM設定 |
04F9FE | LDA #$03BD | A=#$03BD | パレットアクセス設定 |
04FA01 | STA $4F74 | $4F74=A | |
04FA04 | LDX #$0000 | X=#$0000 | |
04FA07 | LDY #$000A | Y=#$000A | |
04FA0A | LDA #$0019 | A=#$0019 | 燃え盛る火炎エフェクトID(追加) |
04FA0D | JSR $B65B | SR: $04B65B | 呪文使用時エフェクト描画用データセット |
04FA10 | PHX | Push X | |
04FA11 | JSL $C02ABA | SR: $002ABA 引数:1#$C4B21F | |
04FA18 | JSR $AFA7 | SR: $04AFA7 | エフェクト実行 |
04FA1B | JSR $8548 | SR: $048548 | |
04FA1E | PLX | Pull X | |
04FA1F | JSR $B6DA | SR: $04B6DA | |
04FA22 | JSR $B7A7 | SR: $04B7A7 | |
04FA25 | RTS | return |
- SR: $04F9D2 ? DQ3に同じ組成のSRがなかったので作成(新SR)
04F9D2 | JSL $C48371 | SR: $048371 | |
---|---|---|---|
04F9D6 | LDY #$0100 | Y=#$0100 | |
04F9D9 | JSL $C4B844 | SR: $04B844 | |
04F9DD | LDY #$0100 | Y=#$0100 | |
04F9E0 | JSL $C4B8D8 | SR: $04B8D8 | |
04F9E4 | RTL | return |
というわけで、結果はごらんの有様だよ!
心霊写真の顔探しみたいになってますが炎のエフェクトの各所に8×8の四角い空白が各所に見て取れます。
まだ何か足りないんでしょうねー。DQ3SFCEditorで炎の画像をデコードしても上記のような欠けは発生しないので、データの移植自体に失敗しているという可能性は低いです。なお、SR群はDQ6とDQ3でやっていることが同じと思われる(ひどすぎる)SRを見つけ出してDQ3側で再構成しています。一連のエントリで「同じ組成のSR」という表現をしていますが、これはRAMの参照/セット先が異なる以外はまったく同じことを行っているSRのことを指します。ちなみに$04F9B1を$13に、$04FA12を$14に変えるとそれぞれ、ギラ、ベギラマの炎のエフェクトになり、当たり前ながら画像欠けは発生しません。もうちょっと調査が必要です。しかし、エフェクトのもうひとつの肝であるスプライト表示の調査も終わっていないというのにこの体たらく…。ちょうどリリース予定日まで1ヶ月というのに間に合うのか心配になってきました。
(20:00追記)
単なるグラフィックインデックスのグラフィック読み込み数の設定ミスでした。お騒がせしました。というわけで完成版の動画。
火の息
燃え盛る火炎
コメント