YouTube のほうで「FC版ゼビウス 1万点グロブダーを倒したい」という企画をやってみた結果、破壊には成功しました。詳しくはチャレンジ動画のほうを見ていただくとして、少し考察してみたいと思います。なお、プログラムを解析した訳では無く、あくまで推測レベルの話になります。
アルゴリズムの考察
見た目から分かるアルゴリズムは、下記のような割と単純なものだと思います。この場合、ブラスターの投下地点と着弾時間、グロブダー移動速度の関係で、破壊可能かどうかが決まるはずです。
停止状態 ブラスター投下中の赤い照準に重なっていれば、高速で下方向に移動開始(等速) 3キャラ(AC版は2キャラ半)分移動したら、初期状態に戻る
AC版との比較では、グロブダーの移動距離が半キャラ長くなっており、着弾のタイミングはほぼ同じに見えます。照準と自機の距離が違いますが、投下開始を合わせて比較すると同じタイミングで着弾するのが分かります。
移動距離はAC版より長い3キャラ分
論理的には破壊不可能?
このようなアルゴリズムではランダム要素も無く、反応する最下端を狙ってブラスターを落として間に合わないのであれば、破壊することはできないと思われます。そもそもロジック的に「破壊不可能なプログラムがされているのでは無いか」というのが私の見解です。
それにも拘わらず、1万点グロブダーが破壊できてしまうのは、恐らく何らかのバグが関係しているのでは無いかと言う訳です。
AC版の破壊シーンから考察
破壊成功シーンをスローで再生してみると、グロブダーの発進が2~3フレーム遅れているように見えます。いっぽうで失敗シーンでは直ちに発進していて、この数フレームの違いが破壊の成否に繋がっていると思われます。
この数フレームの遅れはどこから来るでしょうか? 非常に疑わしいのはキャラクタの座標が何らかの理由で、微妙にブレているのでは無いかという点です。反応するかギリギリのところにブラスターを落とした場合、グロブダーとの位置関係がフレーム間で1ドット程度ブレていると説明が付きます。
そして最も疑わしいのは、処理する CPU の違いです。スクロールによる位置の計算を担当する CPU と、当たり判定をする CPU が異なる場合、グロブダーと照準のスクロール計算が終わってから当たり判定が行われるパターンと、片方のスクロール計算が終わっていないときに行われるパターンがあると思います。その結果、重なっていると判定されたり、重なっていないと判定されたりするブレが生じるのでは無いでしょうか。
1万点グロブダーはバグから生まれた?
ギドスパリオのオレンジフィルム(爆発時に赤く四角いパターンが混じるバグ)は「バグと分かっていたが面白いので残した」ということですが、1万点グロブダーもこれに似た状況で生まれたのでは無いでしょうか。
つまり、本来は破壊不可能な高速回避のアルゴリズムだが、バグ(あるいは仕様)により稀に破壊可能なプログラムが偶然できたとします。そうとは知らずに「破壊がかなり難しいから1万点にしよう」という判断をして、今の状態になったというものです。
FC版が正攻法で破壊できない理由
ファミコン版の1万点グロブダーはアーケードと同じ方法では破壊できません。これは、アーケードで存在したバグ(あるいは仕様)がファミコン版には無いためでは無いでしょうか。
敵のアルゴリズムがアーケードを再現しているとすれば、1万点グロブダーのアルゴリズムは破壊不可能なものになって当然です。ファミコン版はシングル CPU で処理されているため、座標計算と判定のタイミングが完全に同期してブレないのだと考えています。
FC版の破壊シーンから考察
チャレンジ動画で破壊に成功してから、レトロフリークのクイックセーブを使って確認したところ、やはり相討ちが鍵のようです。ただし、クイックセーブを使っても何十回~百回繰り返してようやく成功するという、かなりシビアなタイミングでした。
照準ロック位置はグロブダーが反応しない限界(これより2ドットほど上でも反応しません)よりも離れているので、この位置を狙っても反応すらしないはずです。
恐らく相討ちになって爆発パターンの再生が終わった後、僅かの時間だけ座標計算が停止してしまうのでは無いでしょうか。動画をよく見てみると、爆発パターンが終わった瞬間に照準が消え、数フレーム後に爆発しています。この仮定が正しければ、下記のような推論が成り立ちます。
自機の爆発パターンが再生し終わると同時に照準が消える(この時点で自機関係のスクロール座標計算が停止) 自機の存在は消え、ブラスターの存在は内部的に残ったままになる リスタートに移る前の数フレームの間、グロブダーはスクロール座標計算により下方向に移動する 照準は消滅しスクロール座標計算が停止しているが、グロブダーはスクロールにより照準位置に入ってくる ブラスターの着弾までに残った数フレームが処理される 更新されなくなった照準位置とグロブダーの位置で当たり判定が行われる この結果、当たったと判定され、グロブダーは破壊される
FC版の失敗シーンから仮説の強化
この仮説を思い至ったのは、チャレンジ動画の中で気になっていた現象があったためです。こちらも発生頻度が20時間中2回と、かなり低いため探し出すのに苦労しました。
成功パターンと同じように相討ちになっていますが、こちらは成功時よりも早いタイミングで自機が爆発しています。このためグロブダーが高速発進し、再スタートで画面が切り替わった後にブラスターが着弾しています。再スタートで自機の存在が復活したことで、照準とブラスターが表示され、残りのフレームが処理されたと考えられます。
結びに
1万点グロブダーの破壊はゼビウスにおいて、上達した後も挑戦したくなる重要なギミックであり、ファミコン版でも破壊可能な存在として入れて欲しかったと思います。当時の攻略本には「このグロブダーはなんと1万点、余裕があれば挑戦してみよう」みたいに紹介されているのですが、とんでも無かったですね。
実は、子供の頃に破壊できた記憶があったため、このチャレンジ企画もこんなに大変だと思っていませんでした。今思うと、その記憶が正しかったのか疑問です。恐らくは、ファミコン版以外のゼビウスの記憶か、単にアーケードより簡単なのだからそうに違いない、と思い込んでいたのだろうと思います。