DQM2 リセットバグの謎
先日twitterで「全ステータスが『え』のバグドラゴスライムの生成に実機で成功した」という報告と、その様子の動画が公開された。以前、themellinさんがこのバグ発見した当初は、テトラさんと検証を行った上で、「エミュ特有のバグであり、実機では再現不可能」という結論を得たのだが、そうではない可能性が出てきた。
この方に詳しく話を聞いた所、次の情報を得た。
「なんかこいつのレベルが変わる度に鍵束も変わってる?」(ツイート)
「こいつの習得経験値が1500~1700くらいではざまの鍵出る」(ツイート)
「特技(俺注:リンク先の画像参照のこと)」(ツイート)
このことと「バグドラゴ1匹パーティにしたあと7匹逃せばいい」という情報から、次の仮説を建てた
1.特技の並びについて
不気味な光が80h、凍える吹雪が46h、輝く息が47hなので、特技の並びは「80,46,??,??,80,47,??,??」
これは、明らかにC71Aからの鍵データの並び「80,46,FF,FF,80,47,FF,FF」(天空~エルフ)に一致している。
画像のうち、片方は「マルタ、砂漠、海賊」の3本、他方はエルフの森までの7本の鍵を所持した状態だったとのことなので、特技の食い違いにも説明がつく。
2.このことから、このモンスターのデータの開始位置はC71A-34h=C6E6、経験値の書き込み先はC6E6+58h=C73E。
たしかに0x601~0x700(1537~1792)の経験値を得ると、C73Fが06となり、狭間の鍵が出現する
3.メモリを確認すると、この7匹先の先頭アドレスC6E6+A5*7=CB69は、会話ウィンドウが表示されている間は(?)02hとなっており、バグの条件に合う。
4.おそらく牧場番号として読み込まれているのは、砂漠の鍵のデータC70Bの42h。
(「マルタ、砂漠、海賊未クリア」の状態での生成に成功したとの報告から推測)
ということは、CB69が読み込まれるには、従来の計算式「A000+A5*(牧場番号)」よりもDF大きい値が必要。
このズレが何によるものなのかが現時点の所不明。
各種エミュレータでは読み込みアドレスのズレ現象は確認されていない。
なお報告者の方によると、異なる3本のソフトで、イルルカどちらのバージョンでも成功を確認しているとのこと。
(15/06/06追記)また、複数のプレイヤーによりGBP,SGB, GBA, GBASPでの成功が確認されている(追記終わり)
実機を実家においてきたのが悔やまれる…… 自分で検証できない……
この方に詳しく話を聞いた所、次の情報を得た。
「なんかこいつのレベルが変わる度に鍵束も変わってる?」(ツイート)
「こいつの習得経験値が1500~1700くらいではざまの鍵出る」(ツイート)
「特技(俺注:リンク先の画像参照のこと)」(ツイート)
このことと「バグドラゴ1匹パーティにしたあと7匹逃せばいい」という情報から、次の仮説を建てた
1.特技の並びについて
不気味な光が80h、凍える吹雪が46h、輝く息が47hなので、特技の並びは「80,46,??,??,80,47,??,??」
これは、明らかにC71Aからの鍵データの並び「80,46,FF,FF,80,47,FF,FF」(天空~エルフ)に一致している。
画像のうち、片方は「マルタ、砂漠、海賊」の3本、他方はエルフの森までの7本の鍵を所持した状態だったとのことなので、特技の食い違いにも説明がつく。
2.このことから、このモンスターのデータの開始位置はC71A-34h=C6E6、経験値の書き込み先はC6E6+58h=C73E。
たしかに0x601~0x700(1537~1792)の経験値を得ると、C73Fが06となり、狭間の鍵が出現する
3.メモリを確認すると、この7匹先の先頭アドレスC6E6+A5*7=CB69は、会話ウィンドウが表示されている間は(?)02hとなっており、バグの条件に合う。
4.おそらく牧場番号として読み込まれているのは、砂漠の鍵のデータC70Bの42h。
(「マルタ、砂漠、海賊未クリア」の状態での生成に成功したとの報告から推測)
ということは、CB69が読み込まれるには、従来の計算式「A000+A5*(牧場番号)」よりもDF大きい値が必要。
このズレが何によるものなのかが現時点の所不明。
各種エミュレータでは読み込みアドレスのズレ現象は確認されていない。
なお報告者の方によると、異なる3本のソフトで、イルルカどちらのバージョンでも成功を確認しているとのこと。
(15/06/06追記)また、複数のプレイヤーによりGBP,SGB, GBA, GBASPでの成功が確認されている(追記終わり)
実機を実家においてきたのが悔やまれる…… 自分で検証できない……
コメント
No title
Re: No title
>CB69ではなくそのミラーであるEB69を参照しているのであれば、EB69=A000+A5*75でぴったり一致します。
ミラーが存在していることを知りませんでした。(DQM2のデータ構造については詳しくないので……)
再度検証してみます。情報ありがとうございます。
ミラーが存在していることを知りませんでした。(DQM2のデータ構造については詳しくないので……)
再度検証してみます。情報ありがとうございます。
No title
返信ありがとうございます。
別ゲームのバグの解説を見ていてGBのE000-FDFFはC000-DDFFのミラー領域であることを知ったのですが、もしかするとDQM2のバグモンスターもここを参照しているのではないかと思いコメントさせていただきました。
内部データを見たわけではないので、見当違いの情報でしたらすみません。
問題解決の助けになれば幸いです。
別ゲームのバグの解説を見ていてGBのE000-FDFFはC000-DDFFのミラー領域であることを知ったのですが、もしかするとDQM2のバグモンスターもここを参照しているのではないかと思いコメントさせていただきました。
内部データを見たわけではないので、見当違いの情報でしたらすみません。
問題解決の助けになれば幸いです。
コメントの投稿
トラックバック
CB69ではなくそのミラーであるEB69を参照しているのであれば、EB69=A000+A5*75でぴったり一致します。