スペースインベーダーの仕様

ふと、スペースインベーダー(元祖アーケード版)の仕様について興味が湧いたので、メモを兼ねてまとめてみる。

画面の解像度

256x224(註)を横倒し状態で使っている。8x8 の文字キャラクターに換算して、ピッタリ 32 列 28 行になる。

さらに、自機下部の画面を水平に区切る赤線を除いて、上下左右におそらくアナログ時代なので表示用のマージンとして各 1 文字分ずつが空けてある。その分を考慮に入れると 240x208(30 列 26 行)となる。

また、画面上部の 3 行分はスコア表示用の領域として使われ、画面下部の 1 行分は残機やクレジット表示用の領域として使われているので、これらの分も除いたゲームのメイン画面の表示領域は 208x208(26 列 26 行)の正方形となる(画面が横倒しになっている点に留意)。

註:Computer Archeology で Screen Geometry 情報として 2400 - 3FFF (1C00 bytes = 256 * 28) 28*8=224. Screen is 256x224 pixels. と記されているように、VRAM のアドレス割り当てから 256x224 であるという技術的根拠が明確である。一方、なぜか日本語の Wikipedia には 260x224 と記載されており、それを元にしたものと思われる日本語のブログ情報の多くが 260x224 としているが、間違っていることになる。MAME でキャプチャーすると 260x224 で画面キャプチャーされるため、それを元に日本語の Wikipedia に誰かが記載し、そこから流布したのだろう。Linux を「リナックス」と読んだり、Indie game(s) を「インディーズゲーム」と読んだりして、普及初期の誤ちが流布してそれが正しいものと思い込んでいたりするようなものか。

メイン画面の行構成

上記、メイン画面として残った 208x208(26 列 26 行)の部分について分析する。

用途
1外れた自弾が爆発
2UFO
3 ~ 4
5 ~ 8 エイリアン
9 ~ 12水色エイリアン
13 ~ 16エイリアン
17 ~ 20エイリアン
21 ~ 22トーチカ
23
24水色自機
25水色
26外れた敵弾が爆発
下部ボーダーライン

エイリアンや UFO の左右の移動範囲は、基本的にメイン画面の幅一杯を意図しているようだが、なぜか右端ではあと一歩(2 ピクセル)分余裕のある状態でエイリアンが折り返す。UFO は左右 4 ピクセル(スプライトの透明部分を含めると 0 ピクセル)余裕があり、ちょうど左右対称になっている。

自機の移動範囲とトーチカの配置がちゃんと左右対称になっていないのも謎である。

自機は、左 10 ピクセル(スプライトの透明部分を含めると 8 ピクセル)、右 16 ピクセル(スプライトの透明部分を含めると 15 ピクセル)という歪な配置になっており、特に右側は 1 文字分ずらせばピッタリなので、単なるミスの可能性がある。さらに左はスプライトの透明部分を含めないで 2 ピクセルずらせば完全に左右対称になる。

トーチカにしても、左側が 3 文字分、右側が 3 文字分+ 3 ピクセル多いので、この余った 3 ピクセルを 3 つのトーチカの間に 1 ピクセルずつ分ければ、配置が完全に左右対称になるはずなので、やはりミスなのではないだろうか。

最前列の配置

トーチカとの間の空間
17 文字分
24 文字分
32 文字分
41 文字分
51 文字分
61 文字分
70 文字分
80 文字分
90 文字分

3 種類の敵弾

敵弾には 3 種類あるが、ネット上では、弾によって性能に違いがあるというまことしやかな噂を目にし、当初信じてしまったが、どうやら都市伝説のように思われる。ソースコードを見ても、そのような意図があるようには思われないのである。

都市伝説 1:自弾と敵弾の相打ち

外見の異なる敵弾は、それぞれ「ショットで相殺できる」「ショットで一方的に打ち消して貫通できる」「ショットで打ち消せずこちらのショットだけが遮られる」の3種類。

ゲームカタログ@Wiki ~名作からクソゲーまで~

YouTube のプレイ動画などを、コマ送りしたりして確かめてみたが、真っ赤な嘘だった。相殺が本来の正常な処理で、プログラムのバグによってタイミング的にすり抜けが時々起ってしまうだけのようで、決して敵弾の種類による性能などではないというのが真相のようである。その動画では、敵弾の種類によらず、互いの弾がすり抜けるのみならず、弾が当たったはずの UFO が 1 コマだけ一瞬エイリアンの爆発画像と重なったかと思うと、死なずにそのまま飛んでいくなどの現象も確かめられる。要するに、このゲームは、プログラムの構造上、処理タイミング的な問題が発生しやすいということである。

都市伝説 2:トーチカの破壊力に違い

この動画を観察すると、バリケード(シールド)への貫通度が、敵弾の種類によって異なるように思われます。

下図は左端のインベーダからT字型(Plunger)の敵弾が発射されたところです。敵弾が左端のバリケードに着弾しました。深く潜って(貫通度=7)爆発しています。

同じく左端のインベーダからジグザグ型(Squiggly)の敵弾が発射されたところです。敵弾が左端のバリケードに着弾しました。浅く潜って(貫通度=3)爆発しています。明らかに敵弾の種類により貫通度が異なっています。

FSマイクロ株式会社 ブログ

この件も、特にソースコードに「貫通度」を意図するような箇所は見つけられなかったので、たまたま、処理タイミング的な問題ではないかと思う。敵弾の種類による性能の違いではないはず。

3 種類の敵弾の違いの本当のところ

性能には違いはないものの、グラフィックス以外に、実は唯一の違いがある。それは、弾の発射されるタイミングである。Rolling Shot は自機を狙って発射され、Squigly Shot と Plunger Shot は、それぞれ一定周期で決まった列のエイリアンから発射される。さらに Squigly Shot は UFO と管理領域が共用されているため、UFO 出現中には発射されない。

コメント

このブログの人気の投稿

EP-805A 廃インク吸収パッド交換

WireGuard の OpenWrt での運用

e-Tax: このアプリは作成コーナーの画面内でご利用いただくものです。直接クリックして起動することはできません