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バーの色が赤のときにピンチ音が鳴るとも言えます。