HPバーについて(初代)

この記事では、初代ポケモンにおけるHPバーの長さ・色・ピンチ音について説明します。

HPバーの長さ

現在HPが 0 の場合は HPバーの長さ = 0 で、以下の計算は行わない。現在HPが 1 以上の場合、HPバーの長さ = (X / Y) を 256 で割った余り。ただし、 計算結果が 0 となった場合は 1 とする。なお、小数点以下は出るたびに切り捨てる(これ以降も同様)。

X と Y の値は以下の通り。

最大HPが 256 未満のとき:

  • X = 現在HP * 48
  • Y = 最大HP

最大HPが 256 以上のとき:

  • X = 現在HP * 48、その後下位 2 バイトを 4 で割る
  • Y = (最大HP / 4) を 256 で割った余り

最大HPが 256 以上のときの X の値について、例を示します。

現在HPが 200 のとき
現在HP * 48 の値は 9600 (2580h)、下位 2 バイトを 4 で割った値は 2400 (960h)

現在HPが 1400 のとき
現在HP * 48 の値は 67200 (10680h)、下位 2 バイトを 4 で割った値は 65952 (101A0h)

ハマりが起こるケース

Y が 0 となった場合、ゼロ除算によるハマりが起こります。ハマりが起こる条件(すなわち、Y が 0 となる条件)は、現在HPが 1 以上で、最大HPが以下のどちらかの条件を満たすときです。

  • 最大HPが 0
  • 最大HPが 1024 以上かつ 1024 で割った余りが 0 ~ 3

HPバーの長さが不正になるケース

以下のいずれかの条件を満たす場合、HPバーの長さは最大HPに対する現在HPの割合ではなくなります。

  • X / Y の値が 256 以上
  • 最大HPが 256 以上かつ現在HPが 1366 以上
  • 最大HP が 1028 以上

なお、ステータス計算においてHPを含む各ステータスは 999 が上限となります。そのため、現在HP・最大HPが 1000 以上となるのは、セレクトバグなどで HP の値を直接書き換えるか、そのような値を持ったポケモン(に相当するデータ)と入れ替える場合に限られます。

HPバーの色

スーパーゲームボーイでプレイしている場合、HPバーの長さによって色が変わります。

  • 9 以下: 赤
  • 10 以上 26 以下: 黄
  • 27 以上: 緑

ピンチ音

プレイしているハードウェアによらず、戦闘中自分のポケモンのHPバーの長さが 9 以下のときにピンチ音が鳴ります。スーパーゲームボーイでプレイしている場合、HPバーの色が赤のときにピンチ音が鳴るとも言えます。