決まる! 転ぶ!?・・・着地のおはなし
私は反射神経ものは苦手です(きっぱり) なので、FF7のミニゲームには非常に苦しみました(^^;
ベストスコアは狙えないものの・・・「どうすれば高得点が狙えるか」は、やはり気になるところです。でわでわ:
波乗りのルーチンは、ROM3E:4071〜 でかなり大がかりなプログラムです。
【着地】
どんなに格好良くジャンプしても、転ぶとなんにもなりません。うまく着地できる/転ぶ条件の部分を解析してみました。(ROM3E:45ECで始まるルーチン)
着地の判断に使われるのは、着地ポイントと、その時のピカチューの姿勢です(まぁ、あたりまえでしょう)
波の部分は具体的には、この図のようにコード化されています(C5EF #実際は16進です)。この着地ポイントと、その時のピカチュウの姿勢(C51D:左から、1,2,3,4,5,6,7) で判断されます。
ちなみに回転中のピカチュウの姿勢は、08〜0EHで、転んで転覆してしまった時は10Hです。次の表で、着地した時の処理を、着地した場所と、そのときのピカチュウの姿勢(上の絵の1〜7)で、どう評価されるかまとめましょう。
姿勢 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
上り坂(6) | × | × | × | △ | ○ | ◎ | ○ |
波頭(20,18) | × | △ | ○ | ◎ | ◎ | ○ | △ |
下り坂(7) | ○ | ◎ | ○ | △ | × | × | × |
それ以外 | × | △ | ○ | ◎ | ○ | △ | × |
×:ころぶ △:なんとか着地 ○:まずまずの着地 ◎:ばつぐんの着地
着地の仕方で、次の波でのジャンプの高さが決まります。
ちょっと難しいですけど、プログラム中での処理は・・・(ROM3E:45EC〜)
ジャンプの高さ H = z *8 /256
(1) H=10以下の場合はジャンプできない(転ぶとしばらくジャンプできないのはこれですね)
(2) 1歩進むごとに、z=z+2 ただしz=512になった段階で打ち止め
(3) なんとか着地の場合は、z=z-128 まずまずの着地だと、z=z-64 ばつぐんは減点なし
(4) ころぶと z=64
要するに z>320でないと、ジャンプできなくて、着地での減点が少ない程、高くジャンプできる(=たくさん回れる)ってことです。
また、ジャンプは十字キーを押すタイミングではなくて、Hの値だけで決められるので、
波に乗り上げたら、とりあえず「→」か「←」を押していればジャンプして回ってくれます(その後の回転とか着地はタイミングがすべてだけどね)
【かっこよさのポイント】
かっこよさの評価は、ROM3E:4BD5H〜でやってます。ポイントは・・・
500点:3回転していて、前転後転どっちもやってる
350点:どっち回りでもいいから、3回転
180点:2回転していて、前転後転どっちもやってる
150点:どっち回りでもいいから、2回転
50点:どっち回りでもいいから、1回転
ちなみに前転、後転どっちかだけの得点の計算は、50x(1+2+4+8+・・・)=Σ2^(n-1) (nは回転の数)で計算されますから、もし4回転ウルトラジャンプができれば、50x15=750点が出る(はず)です。
かっこよさの情報は10進数の形で、(C5DA,B)に書かれます。
【HP】
HPは1歩(画面が書き換えるたびに、−1ずつされていくので、必ず減っていきます。あとは、どこでゲームが終了するかで、その減り分をなるべく少なくできるかがポイントですね。
ゲーム終了(途中でゲームオーバーじゃなくて)の条件は、上の【着地】のところで出てきた、zの値の累積で決まっていて、z>17FFFH(10進数だと1,572,863)になると波乗り終了です。なので、転びまくっていると、ゲームがなかなか終わらずに、結局HP=0となって、途中で「ざんねん」になってしまうわけですね。
なので、HPを高得点にしたかったら、着地をズバっと決めて、なるべく早めにゲーム終了させるというのが秘訣です。
結論:すべては着地! 要するに動体視力と反射神経です・・・・(^^; こんなのできね〜
戻る