きゅうしょにあたった!の確率

出した技がきゅうしょに当たるかどうかを判断している部分を解析してみました。ここではクリティカル率と言っておきますが、ドラクエが好きな方には「会心の一撃」の方がわかりやすいかも(^^;



解析は黄色でやりましたので、アドレスも黄色のものです。他の色も、アドレスは 違うけど、処理は多分同じでしょう。

    クリティカルになる/ならないは、ROM0F:6450Hから始まるルーチンで判断して、結果として、(D03B)が[1]ならクリティカル、[0]なら普通のダメージになります。処理の流れは、こんな感じです。

      (1) ポケモンの種類できまる「すばやさ」を読み込む(D099H) この値を a とします。

      ここでいう素早さは、戦闘やレベルアップで増えるものではなくて、ポケモンの種類であらかじめ決まっている値で、
      戦って強くなれ〜っ! 努力値のおはなしのページで表になってる値のことです。


      (2) a=a÷2

      (3) ここで(D040)or(D045)のビットの状態をチェックしてます。どういう時このアドレスが書かれるか不明ですが、この処理はパスされます。通常の戦闘ではパスされないようで次の計算がされます。

       a = a × 2, a>255 の時はa=255

      (4) ここからは技によって処理が違います。

      「からてチョップ」「はっぱカッター」「クラブハンマー」「きりさく」の場合:

        a<64 なら、 a=a×4 それ以上だと、a=255

      他の技の場合: a=a÷2

      結果として、クリティカルが出やすいと言われる上の4つの技だと、もともと読み込んだ「すばやさ」の4倍(または255)、それ以外の技だと、半分にされた数字が得られることになります。

      (5) 0〜255のランダムな数字を作って、(1)〜(4)でできた数字(a)と比較します。

       a>(ランダムな数字) なら(D03B)に[1]が書き込まれて、クリティカルになります。




    例えば、サンドの「きりさく」場合、ポケモンの種類で決まる「すばやさ」は40です。「きりさく」は上の(4)のチェックに引っかかる特別な技なので、計算された「クリティカル指数」は40×4=160です。つまり、確率は160/256=63%です。

    これがサンドパンの「きりさく」だと、65X4=260で、255を越えるので、クリティカル指数は255になって、(5)のランダムな数字が255でない限り、クリティカルになります。確率だと99.6%ってとこになります。

結論:意外なところで「すばやさ」が関係してました・・・・

戻る