DQ3 呪文・特技エフェクトの移植可能性の調査3

ここ数日エフェクトの調査とか移植作業をしていて他の部分はまるで進展しておらず、「よくわからない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追記)
単なるグラフィックインデックスのグラフィック読み込み数の設定ミスでした。お騒がせしました。というわけで完成版の動画。
火の息


燃え盛る火炎