してログ

追記:残念ながら意図してプログラムされたものでは無いと思われます。 詳しくは(5)を見てください。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (3) からのつづき)

書き忘れがあったので続けます。

地上物レイヤーにいる敵はブラスターで撃墜可能

照準器が赤く点滅することがあるので、薄々気づいてはいました。コマ送りで確認したところ、ブラスターによるタルケン撃墜の様子が撮れていたので、スロー再生動画にしました。タルケンの50点もちゃんと加算されているようです。

爆撃によるタルケンの撃墜

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (5) につづく)

追記:残念ながら意図してプログラムされたものでは無いと思われます。 詳しくは(5)を見てください。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (2) からのつづき)

検証用コードを準備しましたので、試せる環境のある方は参考にしてください。なお、書き換えにあっては自己責任でお願いいたします。

総攻撃検証コード

検証に必要なもの

ROM データはご自身の所有するアーケード基板より取得していただきますようお願いします。検証にはバイナリエディタ(Stirling 以外でも構いません)を準備してください。Stirling は Windows10 でも動作しますが、アップデートされていないためか遅い場合があります。

書き換え箇所とデータ

XVI6 に相当するデータファイルを Stirling で開いて 0x003C からの3バイトを下記のように変更します。以降の 0x003F ~ 0x00C6 まではすべて 00 で埋めていただければ OK です。書き換え終わったら保存(Stirling なら変更前のバックアップファイル .bak も保存されます)して終了です。

CODE A2
#003C: F0 02 A2

下記のスクショでハイライトした部分を参考にしてください。

書き換え箇所
書き換え箇所
エミュレータ実装の市販ソフトなどを書き換える場合

EXE ファイルなどをバイナリエディタで開き「20 10 C8 10」のバイト列を検索すると、変更箇所付近がヒットすると思います。前項のスクリーンショットを参考にして対応する箇所を書き換えてください。

なお、ISO イメージにバックアップしたものを直接バイナリエディタで書き換えても構いません。その場合は複数個所がヒットすると思いますが、ベンチマーク版かと思いますので両方書き換えてください。SUPER は微妙な違いがあるので前述のバイト列ではヒットしません(攻撃パターンのマップも異なると思いますので動かないと思います)。

他の総攻撃パターンを試す場合

書き換えコードの A2 の箇所を、B2 または A3 にするとそれに対応する総攻撃パターンを試せます。

CODE B2
#003C: F0 02 B2
CODE A3
#003C: F0 02 A3

最後に

書き換え箇所がちょうどエリア1の範囲になり、エリア2からは通常のゼビウスに戻ります。ただし、A2 と B2 はスパリオがキャラ化けしてしまい、つぶつぶや色のおかしいカピやザカート弾(一度ミスすれば戻る)を撃ってきます。とは言え、恐らくこの攻撃を抜けられる方はいないでしょう。しかし、A3 は頑張れば抜けられると思いますので、腕に自信のある方はぜひ挑戦してみてください。

上記のコードでは強制発動を維持させるため、結構な範囲を書き換えています。しかし、条件としては最小1バイトで済むため、何らかの理由(ROM の読み出しに失敗したり)でバグった場合に発動する(していた)可能性はあると思われます。もし、当時この光景を目撃していたとしたら相当な騒ぎになったはずですが、今まで聞いたことがありません。

またひとつ、ゼビウスの謎が解かれました。

もしかしたら、エリア1のボザログラムをある順番で破壊したら...、とか何らかのトリガーが全16エリアのどこかに存在している可能性は依然として残ります。いつかすべての謎が解かれ、真のエンディングが訪れることを期待します。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (4) につづく)

検証報告お待ちしております
追記:残念ながら意図してプログラムされたものでは無いと思われます。 詳しくは(5)を見てください。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (1) からのつづき)

発見した攻撃パターンコード(A2 / B2 / A3)は、通常の出現テーブルセットの後ろのものになります。これとは別の出現テーブルセット(使われていないと思う)にも、同じ攻撃パターンコード(E2 / F2 / E3)がありますが、先に発見したコードで識別しています。

CODE A2 の攻撃パターン

ゼビウスの通常攻撃でテラジは最大5機までですが、この攻撃では6機も同時に出現します。これだけでもお手上げしそうなのに、加えザカート大量、ブラグザカート、バックゾシー、その他という信じられないほどの物量攻撃です。スパリオがキャラ化けしていて、つぶつぶや、カピなどの断片で飛んできます。

CODE A2
CODE A2

数の正確な確認は困難

  • テラジ×6
  • カピ×8
  • ジアラ×2
  • タルケン×2
  • ザカート×16(落下タイプと自機狙いが混じるが判別困難)
  • ブラグザカート×2
  • ギドスパリオ×8
  • バックゾシー×6

CODE B2 の攻撃パターン

テラジの代わりにゾシーが大量に出る以外、A2 と大差ないと思います。A2 もそうですが、ほとんどの敵はこちらの攻撃を弾きます。

CODE B2
CODE B2

数の正確な確認は困難

  • トーロイド×2
  • タルケン×5
  • ジアラ×8
  • カピ×4
  • テラジ×1
  • ザカート×16
  • ギドスパリオ×6
  • ゾシー×7
  • バックゾシー×3

CODE A3 の攻撃パターン

バキュラバリアが無く、スパリオも通常弾です。タルケン以外はゴーストなので、当たってもミスになりませんが、こちらの攻撃も通りません。スパリオを良くみて避けることは十分可能な範囲です。

CODE A3
CODE A3

数はだいたい合っていると思います

  • タルケン×6
  • ジアラ×2
  • カピ×2
  • テラジ×1
  • ギドスパリオ×6

考察(1):どうやってこの物量を出しているのか?

ゼビウスの空中物は同時に6機しか出ないため、管理領域も6機分と考えられます。総攻撃ではざっと数えただけでも50機以上は出現しているので、普通のやり方では実現できないはずです。だいたい想像はついているので、先に言っちゃうとバキュラや地上物の管理テーブルも使って出していると思われます。

実は、アンドアジェネシスもこの手法を使っていて、出現範囲には一切地上物は置けないのです。なので14面は、アンドアジェネシスが2基出現するために、一切の地上物が設定されていないと言う訳です。ただ、アンドアジェネシスは地上物と共存できないだけで、バキュラとは共存可能です。

次のスクショでは、バキュラを出してから A2 と A3 の攻撃をそれぞれ開始させています。A2 は攻撃が開始された途端バキュラの出現が止まってしまいますが、A3 は止まりません(敵の出現量を少なくしてバキュラの領域まで使っていないと思われます)。

考察(2):A2 と B2 はただのお遊びでは無いのか?

どのぐらいまでキャラを出しても行けるか確認するため、もしくは単に大量に出してみたいという好奇心を満たすためです。たいていの人(プログラマ)はこういうことを考えるもの(ファミコンロッキーが証明しています)だと思いますし、自分も似たような経験があります。

それに、この物量はあまりにもかけ離れていて、もはや別のゲームであり、本気で組み込もうと思っていたとは思えません。発動後に完全に元の状態に戻らないのも、おかしな幻影弾を撃ってくるのも、限界量さえ分かればいいというロジックであれば理解できます。

ただ、わざわざイレギュラーな処理をしてまで地上物やバキュラの領域を使うプログラムを組んだ、という点はどうでしょう。ここまでは無いにしても、実験的に限界点を探っていたというのが事の真相かも知れませんし、私だったら面倒を承知でも好奇心のほうが勝ったと思います。

いずれにしても、これは採用する目的でプログラムはしていなかった、というのはかなり信憑性があると思います。

考察(3):A3 は本作のラストとして組み込もうとした残骸なのか?

他の2つと違い A3 は避けようと思えば可能なレベルに抑えてあり、バキュラや他の地上物と共存が可能になっています。また地上物の領域を潰して空中物を増やしてはいますが、その領域は10個分(上限は14個まで)に留めており、こちらとも共存可能となっています。この配置できる地上物を残した、というのがこの考察のポイントです。

残りの領域は4個、仮に16面と同じくガルデロータ2基(ガル系は領域を2個消費します)とすれば、ドモグラムや他の地上物はあと2つ置ける計算になります。ちょうど置ける計算になります(夜書いたので計算間違えたわ)。ほらほらほら、最終要塞を組むのに十分な気がしてきませんか? 光景が目に浮かぶようです。

エリア16のラストの川付近はデロータで固められています。もし、この付近の地上物(もしかすると第2防衛ラインのガルデロータまで)を排除して、A3 の空中戦が展開されたとしたらどうでしょう。激しい空中戦を何とか潜り抜けた先に、ガルデロータ2基が鎮座しています。もしかしたら、警備用のドモグラムが周囲を警戒しているかも知れません。今までのエリアと違ったラストに相応しいドラマティックな展開になったはずです。

なぜバキュラの領域を使わなかったのか? という点が残りますが、これについてはエリア7に繋ぐためとも考えられます。もし領域を使ってしまうと、少なくとも1.5画面前くらいまでに攻撃を停止させ、領域をクリアにしておかねかればならないはずです。ゼビウスは制約が多くてエリア間もうまく調整しないと、前のエリアの影響を受けてしまうのです(エリア7は、6→7 と 16→7 両方とも調整が必要なのです)。つまり16面のラストに A3 の攻撃を展開しようとすると、必然的にバキュラの領域は使えない、ということになるのです。

ではなぜ採用しなかったのか? という点についてはこうです。出現させるまでは簡単にできても、重ね合わせや当たり判定その他もろもろ、イレギュラーな使い方をするが故にその調整に掛かるコスト(コード量)が確保できなかったのでは無いでしょうか。爆発痕の下を潜ってしまうのは無視できても、健在な地上物の下を空中物が潜るのは明らかに変です。作ってみたはいいけど、こういった点を解消するために更にコード量がかさむとなれば、諦めるのも仕方がありません。

追記: 16面最後のガルデロータ2基の管理領域番号を確かめたところ 18 1A と 1C 1E でした。 これは A3 の総攻撃パターンが使わない 18 1A 1C 1E にぴったりと当てはまります。

結びに

現代であれば容量など気にしなくてもいいし、欲しいだけメモリや、CPU、GPU のリソースを使えます。しかしゼビウスが作られた当時は、16進から10進に変換する処理すら削ったり、論理演算をうまく使って計算したりして節約していました。例えば残機表示がずらっと並ぶのや、10機以上になるとアルファベットや記号になるのも、そういった背景があります。

今回の発見はゼビウスの基板は貧弱で、キャラオーバーでソルは消えちゃうし、敵機も弾幕もこの程度しか出せなかったんだ、というのが思い過ごしだったことに気づかされました。あえて性能の半分も使わない代わりに、世界観の表現やゲームバランスを箱庭のように丁寧に作り込んで行った。正にあの当時として、ゼビウスはあらゆる面でオーパーツだったんだなあ、と思った次第です。

なお、ここで書いたことは筆者の妄想であり、恐らく半分も合っていないでしょう。巷では「もう深まる謎など残っていない」などと言われる本作ですが、久しぶりの新しい発見を楽しんでいただければ幸いです。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (3) につづく)

追記:残念ながら意図してプログラムされたものでは無いと思われます。 詳しくは(5)を見てください。
CODE A2 総攻撃パターン
CODE A2 総攻撃パターン

お正月休みにゼビウスの複合攻撃について調べていたとき、偶然発見した総攻撃プログラムについてまとめておきます。

まず、前知識として空中物の攻撃パターンのテーブルについては128パターンあり、得点やゾルバク破壊その他により進んだり戻ったりして変化するようになっています。プレイの内容によって早回しや巻き戻しが起きますが、これが127(最後)までテーブルが進むと64に戻されて以降64~127の間を繰り返す形になっています。ここでもし128以降に進んでしまったら何が起こるんだろうって疑問が湧きますよね? そう実はこの128以降にも攻撃パターンの設定がされていたんです。

正規の攻撃パターンの最後 "0x7F" は「ブラグザカート×2」になっています。では次の "0x80" にコマを進めてみると何が起こるでしょう? 実際にやってみると...、リセットが掛かってチェックパターンになってしまいました...、これはある程度想定ができます。何らかのバグにより想定外のポインタに移行してしまったらリセットを掛けるという、いわゆるセーフティ機能だと思います。ここで検証を止めないのがO型の私でした。その次の "0x81" を試してみると「トーロイド×5、ジアラ×1」という面白い複合攻撃が出て来ました。「おお、もしかしたらゼビウスの開発時にいろいろと複合攻撃の組み合わせをテストしてみたのかも知れない」と探索モードにスイッチが入ったのです。

地道な探索作業を繰り返していると、「タルケン×5、ジアラ×1」「ゾシー×4、ギドスパリオ×2」「ゾシー×1、カピ×1、画面右からスパリオ」など面白い組み合わせは見つかるものの、大半はリセットやフリーズといったものばかりでした。

それは 0xA2 で突然やってきた

不毛な作業だと思いつつ探索を続けていると、コード A2 のところで「ん?」ってなったんです。「いまチェックパターンのようなキャラぐちゃ画面出たな、何だったんだろう...」(探索作業はノーウェイト=早送りでやってましたので)

それでノーウェイト解除して再スタートしてみると、地獄を見るような総攻撃が展開されたのです。あまりの物量攻撃で数秒しか生き残れない無理ゲー、恐ろしいものを見つけてしまいました。

ゼビウスというものは空中物は6機までという制約があるハードなんです。それがざっと数えても30機以上もの空中物が出ている...、目の前にしてもにわかには信じられない光景です。しかもただ出ているだけじゃなく、普通に動いて弾を撃って〇しに掛かっている。これはバグってるという状態じゃない、明らかにプログラムされた攻撃パターンであるのは間違いない。

[ゼビウス] AC版ゼビウスに総攻撃がプログラムされていた (2) につづく)

関連動画
仮想マシンのコピー

ディスクイメージは、cp コマンドを使うとシンがシックになってしまうので、vmkfstools -d thin のコマンドを使用してコピーします。

vmkfstools -i /vmfs/volumes/src_vol/src_vm/src_vm.vmdk /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmdk -d thin

その他のファイルは vmx を普通にコピーすれば良いです。

cp /vmfs/volumes/src_vol/src_vm/src_vm.vmx /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmx

ウェブサーバのストレージを HDD から SSD に換装したところ、Google Analytics のグラフで明らかなパフォーマンスの向上が確認できました。最近では大容量のモデルが低価格で出ているので、サーバ機の入れ替えの前に検討すべきだと思います。

今回購入したのは、SanDisk SSD Ultra 3D 2TB SATA3.0 で Amazon サイバーマンデーの 22,108 円でした。

Windows であればタスクバーなどに時計は表示されていますが、なかなか目に入らなくて時間を知りたいときイライラするものです。普通の据え置きタイプの時計だと大きすぎて、必要なときにどこか別の場所あったりするし、何かいい手は無いものかと思っていました。そこで思いついたのが、車用のデジタル時計をディスプレイのフレームに張り付けてみるというものです。

車用デジタル時計のいいところは、外部電源がいらないこと、小さくて邪魔にならないこと、取り付け用ステーが付いていること、電波時計なこと(これは欠点にもなりますが)などです。実際に張り付けてみると、邪魔にならず非常に見やすいし、これがなかなかすばらしい。

NAPOLEX Fizz-940

形状的にディスプレイのフレームにステーを使わず両面テープで貼り付けることができます。文字も大きく見やすいのですが、24時間表示に設定すると一番左の数字が細く表示されてしまいます。また、車載用なのにアラームも付いていて、室内での利用に不足はありません。

今回の目的のために購入したものですが、個人的には横長の文字(見やすいですが)と24時間表示時の不ぞろいの文字サイズが気になりました。ただ後で気づいたことですが、この点は多くのデジタル時計に共通しています。24時間表示で十の位を細く表示するものの方が多く、12時間表示しかできないものは1しか表示しないため更に余白を削っています。

SEIWA W690

NAPOLEX と似た表示の SEIWA 製品がありました。説明書を見ると、24時間表示が可能で十の位を細く表示される点が共通していて、字形はすらっと縦長です。外形が NAPLEX より若干大きいようですので、この点が判断材料です。

SEIWA W661

これは何年か前に買って、今も車載用として使っているものです。W661 と違い24時間表示でも均等の幅で数字が表示され、縦長のすらっとした表示が気に入っていたので、これをもう1個買っても良かったです。買わなかった理由は、裏側のソーラーパワーのパネルが室内ではいらないと思ったためです。

ただ、形状や文字スタイルなど2個手にして比べてみると、こちらをもう1個買った方が正解だったと思います。

まとめ

シンプルなデジタル時計は百均にも売っていて通常はそれでも十分なのですが、自分の場合は特殊な要件があるので最適な製品はありませんでした。

  • 24時間表示が良い(24時間表示にすると不ぞろいな文字幅で表示する製品が多い)
  • 日付と曜日の表示が欲しい(百均のだと表示されるものが無い)
  • 貼り付けやすいスクウェアなデザイン(室内用だと角度が付いている)
  • 電波時計が邪魔(UTC を表示した時計も欲しいので勝手に時刻設定されると困る)

最後の UTC 表示の要件があるので、24時間表示が欲しいのですが、百均のものは12時間表示しかできません。12時間表示だと、せっかく UTC に調整していても朝なのか夜なのか一瞬考える必要があります。逆に車載用や室内用だと電波時計になりますので、UTC を表示したままにできません。

SEIWA W661 の見た目で、ソーラーなしのスクウェアな形状、電波時計ではない(または自動設定をオフにできる)製品があればベストです。百均だとセリアで売ってる RY-01-Aがスクウェア形状で、これで24時間表示ができればコスパ最強なんですが、なかなかうまく行かないものですね。