スペランカー考古学講座では、今回は趣向をかえて外から現象を観察するだけでなく、スペランカーのプログラムの内部を発掘していきたいとおもう。 今回のテーマは、諸説飛び交っているスペランカー裏技は実際に存在するのか?という問題である。スペランカーの裏技(とくに無敵技)には大きくわけて2つの流れをくむものがあると考えられる。
1 はさておき、 2 であるがこれに関しては肯定も否定する記事もほとんどなく、有力な手がかりがえられていない。そこで、我々はこちらの方を謎を解明するべく発掘作業を行うこととなった。なお、今回の調査はStormさんと共同で行われております。 無敵というからには死亡が関係するはずである。我々はまず分かりやすい人数(残機数)のデータを探し出し、それが減っている死亡処理のルーチンを発掘した。その結果、このルーチンにはメモリー$022B番地ににある謎のフラグが0以外であると処理がスキップされ死亡しないプログラムが組まれていることを発見した。 このフラグを操作する命令を中心に発掘したところ、、、以下に示すコードから始まる驚くべきコードの発掘に成功した。
SPELUNKER/ by Tim Martin and Micro
Graphic Image (c)1985 IREM Corp. Licensed from broderband
これのルーチンは前回のパッドのデータと今回のパッドのデータの比較を行う。つまり、セレクトボタンの状態の移り変わりをしらべているのだ。簡単にいうと、SELECTが押されてない→押されてるに変化したかどうかを調べているのだ。(そうしないと押しっぱなしにしたときにON/OFFしてしまう) で、セレクトボタンがおされるとメモリの $022B に置かれているデバッグモードのビットをすべて反転しているのだ。(これでON/OFFが1行でおこなえる。) しかし、アドレス86E8でコントローラのステータスを0とANDしているので(0とANDするとすべて0になってしまう)次の命令によってデバッグモードへ入ることができなくなってしまう。この行は出荷時のROMではデバッグモードにはいれないようにした痕跡である。 さて、ここの命令を$20に書き換える事で我々はSELECTを押すとあたり判定を無視し、縦横無尽に歩き回る無敵のスペランカーを目撃することができた。 なお、空中でデバッグモードを解除するともやっぱり即死します、、、さすがや(T−T そんなわけでスペランカーに無敵モードがあった事が判明した。しかし、残念ながら出荷時に使えないようになっているようである。なお、ゲームスタート時にちゃんと初期化されており「スーパーマリオがテニスで好きな面から始められる」系の裏技も通用しないようである。コマンドを複雑にして、裏技として残して欲しかったなぁ、、、。 なので(唐突)、、、やり方が分かる人はこの情報を元に遊んでみてね。分からない人にはちょっとひそかに考えてることがあるので、、、それはまた次回! (2001.1.20) |
MAIN
|
SPELUNKER
|
MIND SEEKER
|
LINKS
|
HOMEWORK
|
AUTHORS
|
MAIL
|