ゲーム : してログ

1年以上の放っておいた作業をお正月休み中(長期休みなためだいぶ捗りました)に再開させています。散らかっていたバージョンを整理して、以下の5つにまとめる作業及びデバッグ・バランス調整がひと通り完了です!

バージョン内容
完全版(debug)
オリジナル版のバグ修正と敵配置を美しく修正した完全版
  • エリア6ソル消失バグ修正
  • エリア7ドモグラム解散バグ修正
  • エリア14空中物設定ミス修正
  • その他敵配置の微修正
  • グラフィック修正
  • フォント修正(より Countdown に近づけた)
  • エリア表示の追加
  • 残機表示の修正
デバッグ版(debug_min)
敵配置やプログラム改変を除くデバッグ版
  • エリア6ソル消失バグ修正
  • グラフィック修正
ミラー版(mirror)
背景マップ及び敵配置を左右反転したゼビウス
  • 背景マップは埠頭の影のみ修正(左右反転のみだと影の方向がおかしいため)
  • 敵配置及びドモグラムの移動パターンは反転ツールを開発
レド版(redo)
追加要素を盛り込んだゼビウス
  • オリジナル版をベースに改変
  • 各エリアに1本以上のソルを追加
  • 難易度のアップ(SUPERの要素、オリジナルの要素を追加)
  • 新しい裏設定を追加
  • フォント変更(ゼビ文字=Redo版は逆輸入版という設定)
  • Redo は「改める」の意味
ハーロ版(haro)
まったく新しい敵配置のゼビウス
  • 背景マップはオリジナルの左右反転したものをベースに、左右がループするように修正
  • 敵配置は仕様を目いっぱい活用(消失ソル修正テクニックを駆使した詰め込み)
  • アンドアジェネシスとナスカの地上絵の夢の競演が実現(胸アツ)
  • フォント変更(オリジナルフォント)
  • Haro は「希望」の意味(語呂が悪いが他にいいものがない)

新しく考えた設定など

高速連射型ログラム(デロータ試作機)

ログラムにグロブダーのパワーパックを組み合わせた新型砲台の試作機である。この新型砲台はデロータとして小型化、結実されることになるが、非常に高価なブロック 3A のグロブダーに採用されているパワーパックが必要なことから配備数は伸び悩んだ。後に、可搬性や経済性の観点からこの試作機が見直され、配備済みのログラムのアップグレードが行われることとなる。このログラムは単基での攻撃力はさほど変わらないが、グロブダーとパワー結合することによりデロータに迫る連射性能を発揮する。

ログラムのアップグレードは、グロブダーのパワーパックを接続する中継機を搭載するのみで済み、グロブダーはダッシュ性能のあるブロック 3A もしくは 3C の機体が必要である。この中継機は非常に安価なため、配備済みのログラムの改修が盛んに行われていると報告されている。改修が進めば、地上配備型砲台と移動型砲台の利点を併せ持つ新たな脅威となりうるであろう。

なお、パワー接続されたグロブダー側を破壊しても連射性能はしばらく維持されるのに対し、ログラム側を破壊するとサージによるダメージのため再起動に時間を要する(グロブダーは動けない)。従って、同時に爆撃することが困難な場合は、ログラム側をプライマリターゲットとするのが有効である。

シオナイトのエスコート

レド版とハーロ版の最終エリアにシオナイトが出現するのは、ナスカの地上絵の空域にワープさせるためです。「最終エリアらしい演出が欲しい」ただそれだけで入れたのですが、ノーミスで抜けられた際にだけ見られるご褒美と捉えていただければと思います。なお、シオナイトの分のキャラクターテーブルが削られるので、若干弾幕が温くなっているのは内緒です。

新たなゼビ文字フォント

素直にゼビ文字フォントを作ると、細い線だけで見栄えがあまりしません。たて、よこ、ななめ、線が重なるので 8x8 ドットだとどうしても無理が来るため、太くするとかは何回か挑戦するものの、無理というのが結論です。今回ひげ(セリフ体)と内側を結線しない、というルールでどうにかオシャレなゼビ文字フォントを作ることに成功しました。

新たなゼビウスのトリビア

正月の解析成果で新たなトリビアが生まれました。

一番最初に出てくるガルデロータが最強

ガルデロータは発弾頻度が設定できるのですが、全エリアを通じて最も発弾頻度を高く設定されているのがエリア3最後のガルデロータでした。実際に観察してみて分かるくらい発弾数が違いますので、いちど確かめてみてください。

ちなみに、こいつと同じ設定をガルデロータ全基(共通設定なのでデロータにも適用されます)にすると、攻略がかなり辛くなります。

エリア8のドモグラムは最も弱い

ドモグラムも発弾頻度が設定できますが、なぜかエリア8の設定が最低の値になっています。このためエリア8のドモグラムはほとんど弾を撃ってきません(1発撃つか撃たないか程度)。覚えておくと攻略の参考になるかも知れませんが、逆に意識外からスナイプされてしまうかも知れません。

設定値としては、0x00~0xFF までで、値が小さいほど発弾頻度が高くなります。他のエリアは 0x0F~0x3F くらいを設定してあるのに対し、エリア8は 0xFF と極端な設定になっています。そう考えると限りなく設定ミスっぽい気がします。

エリア7のドモグラムの盆踊りの解散

エリア7の回転するドモグラムの集団を破壊しないで観察していると、消える直前に列を離れて解散していく様子が目撃できます。プログラム的には最後の方向転換を指定していないだけなのですが、まるで「あーあ、終わった終わった、解散~」などと言っているようで笑えて来ます。デバッグ版その他では、これを修正しています。

ガルザカートの中からゾシーが登場

ゾシーを連れてガルザカートを破裂させると、ガルザカートの中からゾシーがワープして出てくることがあるっぽい。狙って出せるものでは無いですが、絵的にシュールな光景で今まで聞いたことがありませんでした。

「ゾシー」実は2タイプある

ゾシーは、自機を正確に追尾してくるものと、ランダムに方向転換するもの、の2タイプがあるようです。前者は方向転換の度に自機の方向に転進しますが、後者は完全にランダムに転進します。方向転換の頻度が少ない設定だと分かり難いため、今までこれに気づきませんでした。

ドモグラムのかわいい行動

エリア6のグロブダーの直後に右上から斜めに横切るドモグラムですが、袋小路に入ってスクロールアウトしますよね。実はスクロールアウト後も動きがプログラムされていて、袋小路内を行ったり来たりを数回繰り返しています。見ていないと思って油断してたらダメですよ^^;

ちなみにスクロールアウト後の動きは、エリア8のドモグラムにも見られます。こっちは道に沿って角を曲がっているだけですけどね。

出現位置を早く改造して観察できるようにしてみた

チラ見せ!ゼビウス復路(かえりみち)

箱根駅伝を見ていて思いついたネタです。とりあえず簡単に作れる部分のみやってみました。内容はお察しのとおり、マップを180度回転させてエリア16からエリア1まで戻っていくというものです。

地上物や空中物はプログラムで反転させるのは簡単です。ただし、ドモグラムやグロブダー、アンドアジェネシスなどは調整しないとダメそうです。グロブダーはほとんど停止させるとして、ドモグラムは出現位置を調整して移動パターン自体を反転する必要があり、これらはすべて手作業になるでしょう。

ここが超難関!ブラグザカートのせいで専制攻撃ができない
ここが超難関!ブラグザカートのせいで専制攻撃ができない
エリア15最後の要塞は割と簡単に突破できます
エリア15最後の要塞は割と簡単に突破できます
アンドアジェネシスが崩壊してしまいました^^;
アンドアジェネシスが崩壊してしまいました^^;

サイバーガジェットから、レトロフリーク対応のゲームパッドが出たので購入してみました。レトロフリークには、HOME や OPTION の特殊ボタンが必要なので、普通のコントローラだとボタンの割り当てとプロファイル登録が面倒です。レトロフリーク対応を謳っているので、付属の専用パッドのように使えるものと考えていたのですが...

結論から言うと、一般のパッドと代わりありません。認識も「USB コントローラ」となります。結局、利用するにはボタンの割り当てとプロファイルの登録が必要、これで対応なの?

レトロフリークでの使用感

設定すれば使用できますし、方向キーの重さや入力のしやすさ、ボタンの加減も悪く無いです。とりあえずシューティングを少しプレイしてみましたが、まったく問題ありませんでした。製品ハードとしてはかなりいい造りをしていると思います。

分かり難いモード設定

レトロフリーク、Windows、MacOS の切り替えは、START + B or X or A の長押しで設定する、と説明書に書いてあります。具体的には以下のとおり。

  1. 本製品付属の USB ケーブルをコントローラに接続します
  2. 使用する器機に応じて START + 各ボタンを同時に長押しします
  3. コントローラに付属した USB ケーブルを、仕様器機の USB ポートに接続します
  4. 必要に応じて器機の設定やゲーム内のコントローラ設定を行います

字づらどおりに設定をすれば良いっちゃ良いのですが、多くの人は1の段階で接続器機にも繋げてしまうと思います。そしてこの状態だと2をすると電源が切れるだけで、思った結果にはなりません。そうでは無く器機に接続する前に、組み合わせボタンを長押して、ランプで確認してから器機に接続するのが正解です。果たしてこの説明で一発で理解できた人はいるでしょうか?

STEAM では使えない(かと思った)

STEAM でも使うつもりだったのですが、これがまったく使えなくて焦りました。コントローラの設定で方向キーがうまく認識できず、設定しようとすると、軸0、軸1、と表示され2方向しか設定することができません。これは START + B の設定のときなので、START + A(PS4 コントローラとして認識されます)か START + X(XBOX コントローラとして認識されます)の設定であれば使用できます。

ザリガニ
ザリガニ
クマノミ
クマノミ
イシダイ
イシダイ
キングサーモン
キングサーモン
ホソアカクワガタ
ホソアカクワガタ

ナンヨウハギはスクリーンショット撮るの忘れてましたが、いちばん先に捕れました(出現率も高め)。キングサーモンとホソアカクワガタがなかなか出なかった。

出現率の調整があったのか、マグロとナポレオンフィッシュがよく出てくるように。代わりに川のネオンテトラが最近見ていません。お願いされる、タイ、カブトムシ、ブラックバスは、状況に応じて出現率が高く調整されるような気がします。

エリアマップ編集用に描いた下書きが出てきたので記事に残しておきます。

左右繋がったマップにしました

オリジナルのゼビウスは左右ループしたエリアはありません(そういうデザインになっていない)が、プログラム上はループしてても問題が無いような作りになっています。そこで、新16エリアは左右ループしたマップデザインに変更しようと思いました。オリジナルマップを半分シフトして、左右がうまく繋がるよう編集していくのですが、その前に手書きイメージを作成しています。なお、基本としたマップはオリジナルを左右反転したものです。

編集作業

ハチドリの砂漠をうまく閉じるのに、2面や16面の道路(右半分)を潰して自然にしています。ストーンサークルのような地形が欲しいので、それを真ん中あたりに作り、川は上に蛇行&合流させて森へ消えるよう処理します。他は、湖に島を作る、森に砲台サイトを作る、反転した影を修正などを行っていきます。

その他

今回左右繋げた結果、同じような背景のエリアが多くなるのを少し改善できますが、なくせる訳ではありません。16エリア切り出すには圧倒的に足りませんし、使い勝手の面で同じような背景マップを使わざるを得ないのが実情です。マップチップのグラフィックは2段階で反転が可能にしているように、マップ自体も左右・上下反転したものも使えるようプログラムしてあったら良かったのにと思います。

実機でも出た!
実機でも出た!

やっぱり実機で出ている姿は格別なものがあります。いくらアプコンの絵がヘロヘロでも、なんとなく格式の高さを感じてしまいます。EPROM が足りなくて、スプライトのドット絵は修正できていませんが、なんとか確保してこれからプレイするデバッグ版基板にしたいですね。

動画はキャプチャー機材を持っていないのでスマホ撮影ですみません。しかし、昨日アップしたんですが、あいかわらずゼビウス動画の再生数は少ないですね。ニコニコはしばらく後にまた削除することになると思います(アップロード数に制限があるので)。

ようやくこのときが来ました(当初の目標はこれだったはず)。

出現テーブルの解析から始めて、バグの原因と解決方法が分かってエミュレータ上や、ナムコヒストリーの改造では確認できていたものの、本物の基板上で出すというのは非常に感慨深いものがあるはずです。今回は作業に使った機材とか、確認に使った基板などをご紹介します。なお、直接録画できる環境が無いので、動作している様子は後日公開します。

これがゼビウスの基板だ

これが私の所有するゼビウスの基板で、2枚持っているうちの最近買ったほうかな(改造するから保存用と別に揃えたのだよ)。昔は1万以下で手に入れられたけど、最近は3~4万に値段が上がってるっぽい。

ご覧のようにシールが破損して読みにくくなっているので、写真を撮って分かるようにしておきました。作業前に一度通電させて遊んだら、いつの間にか1周していました(やはり本物はいいですネ)。ちなみにこの基板、電源投入直後は背景が時おりフラッシュするような不具合があるみたいですが、時間が経つと安定するようです。

表側?プログラムと出現テーブルの ROM が乗っています
表側?プログラムと出現テーブルの ROM が乗っています
裏側?こちらはスプライトのデータとかの ROM です
裏側?こちらはスプライトのデータとかの ROM です
左はシールが破れたのか補修してある XVI 1 の ROM
左はシールが破れたのか補修してある XVI 1 の ROM
XVI 2 以外の 4KB はこの三菱の M5L2732K です
XVI 2 以外の 4KB はこの三菱の M5L2732K です
右側の XVI 6 が出現テーブルを格納しています
右側の XVI 6 が出現テーブルを格納しています
表側は XVI 7 でラスト(なぜか 8 は欠番)
表側は XVI 7 でラスト(なぜか 8 は欠番)
ここから裏側で、背景マップとかスプライトとかです
ここから裏側で、背景マップとかスプライトとかです
文字データや背景キャラクタの ROM
文字データや背景キャラクタの ROM
この辺がスプライト(容量の大きい ROM がいくつか)
この辺がスプライト(容量の大きい ROM がいくつか)
小さいのはパレットなどの ROM です
小さいのはパレットなどの ROM です
発熱するのか焦げた色になっています
発熱するのか焦げた色になっています
この辺は文字も読み取れないほどシールが痛んでいます
この辺は文字も読み取れないほどシールが痛んでいます

差し替え ROM の調達

これがなかなか厄介でした。ゼビウスで使われているものは、UVEPROM で 2732 と 2764 なのですが、もう希少パーツになっています。最初、ヤフオクでウォッチしていたんですが、所有の安いプログラマで書き込める型番のがなかなかありません。オリジナルが使っている三菱の M5L2732K は結構出てるのですが、サポートリストにないしダメ元で1個買ってみましたが、やっぱりダメでした。この三菱のやつは、吸い出しはできるのですけどね、うまく行かないもんです。

ずっとこんな状態でしたので諦めかけてたわけですが、最近少ないながら新品在庫を持っている会社を発見します。そこでサポートリストにある富士通の MBM2732A-25 というのをどうにか4個ゲットできました(ちなみに、そこの最終在庫でした)。これだと数が足りなくて、スプライトやマップの書き換えまでは無理ですが、幻のソルを出すだけなら2個あればできる状態になりました。ちなみに1個700円くらいで割高&希少、消去する機材も無いので失敗は許されません。

ようやく見つけた 2732
ようやく見つけた 2732

まずはオリジナルデータのバックアップ

この作業は過去やっておりますが、念のため全 ROM のバックアップを取りました。取り外すときのパキパキっていう音が心臓に悪い、基板にあまりストレスかけると半田クラックしそうで心配です。ちなみに、これらのチップはプログラマのデバイスリストに無いものでしたが、問題なく読み込めました。

プログラマにセットして読み取っている様子
プログラマにセットして読み取っている様子

データの書き込み

まず届いた EPROM をプログラマに乗せ、とりあえずブランクチェックをしてみました。ここまでは問題なし、次に書き換えたデータを読み込み、プログラム(書き込み)をしたところ問題発生です。なんか開始した途端にエラーで中止されてしまいます。型番は合っているし、認識もできている、しばらく悩んでしまいました。結局、データシートを確認し書き込み時のボルテージが低いためだと気づきました。データシートどおりの設定に変更し、再プログラムを行ったところうまく行きました。

デフォルトの VPP Voltage だとエラーになる
デフォルトの VPP Voltage だとエラーになる

そして乗せ換え

この辺はアーケード基板を触ったことある人ならやったことあると思います。ドライバーなんかでもできますが、IC の脚を折らないように引き抜き器具を使ったほうがいいです。今回は新しい ROM なので脚を少し曲げてあげないとダメなのですが、こちらは専用器具を使わず定規と机のカドを使って曲げました。ソケットの幅に合ったら、向きを間違えずに差し込めば交換完了です。

今回は用意できた EPROM の数が揃わなかったので、出現テーブルとプログラムの2つを交換しました。プログラムの方は ROM チェックのバイパスと、エリア表示と残機表示の改善も含んでいます。写真で黄色いマルで囲った ROM がそれで、取り外したオリジナルは脇に置いてあります。後はデータが消えないようにシールを貼れば OK ですが、適当なのが無いのでしばらくここままでいいでしょう。

黄色のマルが交換した ROM
黄色のマルが交換した ROM

緊張の動作確認

接続確認を入念に行い電源投入、安いアプコンのロゴの後、おなじみのキャラモザイク、ROM, RAM チェック、デデーンっとタイトル画面が。クレジット、スタート、ファンファーレ、おお、ここまで問題無ければほぼ間違いなくうまく行っています。それではエリア6まで軽くフライトと行きましょう。。。。次回に続く。

さあてどうなるか。。。
さあてどうなるか。。。

今回はマップテーブルの解析から分かった、ドモグラムの移動指定テーブルについて情報提供します。ご存じのようにドモグラムは移動砲台なため、出現位置だけではなく移動パターンの記述があります。

移動テーブルの例

08 30 00 A0 04 A0 10 80 0C 40 10 80 18 A0 18 20 00

全体的なテーブル構成

まず最初のバイトがテーブルの長さを表しており、長さ×2バイトの移動指定が続きます。上の例では、出現位置から8回(最初を除けば7回)方向転換しており、全体で1+8×2バイトで構成されています。

方向転換の記述は2バイトで表され、最初が移動距離(単位は不明)、後ろが移動方向です。これが先頭バイトで指定された数分、繰り返されています。

移動距離の指定

移動距離は移動を継続するフレーム数で指定する(らしい)です。ただし、8フレーム単位(恐らく)でしか指定できず、細かい動きは表現できないようです。これは移動プログラムのロジックが、整数の足し算引き算のパターンで実装されているためだと思われます。

なお、ドモグラムの水平垂直方向の速度はスクロールと同一です。従って、上方向に移動するドモグラムは画面に対して静止して見えます(上方向にフレームアウトすることは絶対にありません)。

方向の指定

方向は図のような番号が割り振られており、32方向へ進行することができます。なお、ドモグラムは方向によって移動速度が違います。この頃のゲームによくあるように、斜め45度は1.4(√2)倍の速度になります。プログラム上は方向によって、1フレーム毎に1ずつ進む、2フレーム毎に1ずつ進む、またはその方向には進まない、といった具合のX,Yの組み合わせで表現されているのだと思います。

移動方向番号(16進数)
移動方向番号(16進数)

ちなみに「エリア15では高速ドモグラムが出現する」という情報を見たことがあるかも知れませんが、これは半分合っていますが、全体的に見れば間違っています。ロジックの関係で斜め45度の移動が最も速いため、その角度のみで移動するドモグラムは速く見えますし、事実速いのです。しかし、他の場所でも斜めに移動するドモグラムはまったく同じ速度であり、エリア15だけが特別な訳ではありません。その証拠に、エリア10のドモグラムは水平または垂直に移動するものと、斜めに移動するもののタイミングが完全に合っています。

また、エリア7は斜めに動くとき速くなり、水平あるいは垂直に動くときは遅くなります(盆踊りと呼ばれる所以のひとつ)。それから良く見ていると、スクロールアウト直前に草地の方へ離脱していく姿が見えます。最後の方向転換をプログラムしていないためなのですが、なんとなく幕が下りた後に気を抜いてフライング解散しているように見えて笑えます。

仕様上はかなり滑な動きができる

このようにドモグラムの移動方向はかなり細かく設定できるのですが、エリア7の盆踊りは45度で多角形を描くように動かしています。これは実際に自分で設定してみれば分かりますが、出現開始がスクロールと同期させるしかなく、最初にスクロールインするドモグラムとそれに続くドモグラムでは出現位置をずらして設定しなければならない(32フレーム後に出現するほうは、そのフレーム分動いた後の場所から動きをプログラムする)ため、複数のドモグラムの動きを同期させるのが難しいのです。そういった制約もあり、盆踊りを手打ちでプログラムするのが当時としては大変だったんだろうと推察します。もし適切にプログラムできれば、非常に滑らかな曲線を運動するドモグラムを作ることも可能です。

また、この部分は解析しておりませんが、角度毎の動きパターンはテーブル化されていると思います。角度は32ありますが、1バイトなため物理的には33~255まで設定でき、それらを設定すると奇妙な動きをします。これには法則性が無いことから、パターン定義の領域を超えて他のメモリを参照していると思われます。中には、スクロールスピードを超えた超速になる値もあるので、うまく活用すると面白い動きをプログラムできそうです。

設定する上での注意点

まず、必ず画面の上からしか出現させられないことです。出現のタイミングは他の固定地上物と同様にスクロール位置で取ってる関係で、画面横や下からは出現させることはできません。このため複数の機体で同調して動かしたいときに、かなり面倒なことになります。当時としては、方眼紙や手計算で行ったはずですから、盆踊りやマイムマイムの動きには苦労したはずです。

先ほど、画面横からは出現させられないと言いましたが、画面外を走らせて横から出現したっぽい演出ができます。具体的には、横位置を0x00にして画面の1キャラ右を下方向に走らせ、出現させたい位置で画面内へ転進させるようにします。ただし、画面外の走行中も弾を撃って来ますので、攻撃頻度を最低にしておいたほうがいいでしょう(途中で頻度は変更できないので、ほとんど攻撃してこない機体にはなってしまいますが)。

また、地上物の管理テーブルは14個しかありませんので、北上させてずっと画面内に出しておく場合、14個目の地上物が現れる前に画面外へ行かせましょう。そうしないと、突然消えたりワープしたりしてしまいます。また、斜め上方向で画面外へ出す場合は、画面外で下方向へ転進させておくと安心です。

黒チューリップまで完了
黒チューリップまで完了

ガーデンイベントの中断でなかなかコンプリートできませんが、ロックンローズ前に黒チューリップまで完了しました。レアリティの低い順に集めましたが、逆の高い順に集めると一石二鳥、三鳥になるので効率的かも知れません。基本的には店売りのオレンジを、集めている色のチューリップに交配して増やしました。これから紫と青ですが、オレンジとの交配だと低確率なのですが、白が出るので溜めて交配の二段階手法でいけそうです。