DQ6 ルイーダ熟練度表示バグの解析(不完全版)

相変わらずrcで止まっているDQ6インターフェース改良パッチですが、ルイーダの酒場での熟練度表示バグについて説明して欲しいというコメントがあったので回答します。まずはどういう現象かというと、以下の動画を見て下さい。

どうやらルイーダの酒場に待機中の仲間のうち、1ページ目の職業熟練度一覧の内容が2ページ以降?の仲間のものになっているようです。このバグ自体は深刻なものではなく、パーティに加えて職業熟練度を見ると本来の情報が表示されます。まあそもそもルイーダで1ページ目にいるということは早々に戦力外通告を受けている*1ようなキャラクターなのでどうでもいいような問題ではありますが。

次に実装面でどうなっているのかを調べてみます。

  • SR: $03A4EA ウィンドウ描画処理アドレスリスト_SR_0093
03A4EA LDX $3868 X=$3868
03A4ED JSL $C42C26 SR: $042C26 引数:1#$03 引数:2#$FE 引数:3#$FD キャラクターインデックス取得?
03A4F4 JSL $C42DB2 SR: $042DB2 引数:1#$FD 引数:2#$00 引数:3#$FE 職業熟練度アドレス取得?
03A4FB STX $3868 $3868=X
03A4FE BRL #$FF74 goto $03A475

$03A4F9で、#$00を指定していることがどうやら問題のようで、ここを#$03に変えると問題は修正されます。

ただ、直前にも似たようなSRがありますが、こちらはオリジナルの実装が正しいようで、#$00を#$03に変えるとまたおかしなことになります。デバッガでブレークポイントを貼るとどちらもルイーダ待機中の仲間の職業熟練度表示中にコールされるのでどこかで使われていることは確かなのですが、コール元を特定できていないのでどういう用途かはまだわかっていません。

  • SR: $03A4D3 ウィンドウ描画処理アドレスリスト_SR_0092
03A4D3 LDX $3868 X=$3868
03A4D6 JSL $C42C26 SR: $042C26 引数:1#$03 引数:2#$FE 引数:3#$FD キャラクターインデックス取得?
03A4DD JSL $C42DB2 SR: $042DB2 引数:1#$FD 引数:2#$00 引数:3#$FE 職業熟練度アドレス取得?
03A4E4 STX $3868 $3868=X
03A4E7 BRL #$FE7B goto $03A365

詳細な解析は現状手がまわらないので後日SR: $042DB2の中を調べたり、これらの箇所の使われ方を調べてここに追記します。

さて、snes9x 1.51自動SS版をリリースしてから、手元でももう1回DQ6インターフェース改良パッチを当てた状態でDQ6を初めからプレイしてみたのですが、結局クリアまでフリーズバグは再現しませんでした。現状わかっているのは、

  1. 鏡の塔で熟練度上げ中に口笛実行時にフリーズした(スレからの情報)
  2. 初回クリア後に魔術師の塔の入り口でインパス実行時にフリーズ(手元で発生)

というものです。現象は似ているので原因は同じだ思われます。手元で発生したときは直前にベストドレッサーコンテストのランク7,8をクリアした、というのがイレギュラーな操作ですが、鏡の塔での熟練度上げ中(おそらく下ムドー撃破直後)にも発生しているとのことなので、条件としてはあまり関係ないかなーという感じです。どうしても自分一人だと何度やってもある程度プレイパターンが固定化してしまうのでなかなかバグが再現しないという限界があります。今のところ未解決の問題はこのフリーズバグだけなのでご協力頂ける方はぜひsnes9x 1.51自動SS版を使ってもらって、再現するSSを送って頂ければと思います。snes9x 1.51自動SS版は当たり前といえば当たり前ですが珍しく問題なく使用できているようなので(少なくともDQ3,6では)、ぜひ使ってみて下さい。

(2016-04-04追記)
以下のエントリで原因を更に調査しています。
DQ6ルイーダ熟練度表示バグの解析(完全版)

*1:後からルイーダに送られた仲間が後に来るので

コメント

  1. マジックソース より:

    解説ありがとうございました。
    インターフェース改良パッチを適用して最初からゆっくりプレイしてましたが、ようやくクリアしました。フリーズには遭遇しませんでした。
    おかしな点といえば、オープニング見てるとエニクスが焚き火を消すところから挙動がおかしくなることくらいでしょうか。既出だったらすいません。

    管理者より返信:

    フリーズ起きなかったですか…。手元でも1回起きてるのでなんかの条件で発生するのは確かなんですけどねえ…。オープニングの問題については飛ばし気味にやってるので認識していませんでした。あとでやってみます。

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