●このラリーXは何? (開発の経緯)
私が個人で楽しむためにナムコ社の許諾を受けずに勝手に移植したX1用ラリーXです。
X1用ラリーXは電波新聞社から当時発売されていましたが、個人的にその出来栄えに不満を持っていました。
(ゲームとしては十分遊べる物でしたが、主に見た目の部分でいろいろと不満がありました。)
X1用ラリーX (内容はニューラリーX)
(C)ナムコ、電波新聞社
まず、道路が黒いこと。車のタイヤが水色。車の形も違う?
車のパターンが上下左右向きの計4パターンしかないこと。(斜めのパターンがない。)
全てPCGで描画しているようで、キャラクタが重なるとチラつくのと、
レッドカーのスピードが常に一定であること。(移動が8ドット単位なので。この点が最悪。)
という訳で、「私ならラリーXはX1でこう動かす!」という物を作ってみることにしました。
(もちろん当時の開発者の方々は仕事として開発されていたのですから納期もありますし、
私の納期なし・嫌になったらいつ辞めてもいい趣味の開発とはまったく事情が異なったと思います。
開発環境も現在とは雲泥の差ですから、単純に成果物だけで比較できないことは理解しているつもりです。)
今回は、ニューラリーXではなく初代ラリーXを作ることにしました。その理由は、
車のパターンが初代の方が好きなのと、ニューのあの軽快なBGMが個人的に食傷気味なのと、
あとはラッキーフラッグ等がないので初代の方が楽だろうと考えたからです。
アーケード版のプログラムの解析等はせずに、当時の移植作業と(多分)同じように
自分の目で見て再現しましたので細かな点ではいろいろ違いがあると思います。
もしご質問があればメールでどうぞ。
ここではプログラムの技術的な内容やアーケード版の調査結果(マップ等)を紹介していきます。
●PCG・グラフィック画面の用途 | |||||||||||||||||||||||||||||||||||
本移植作では、道路・岩・煙幕・フラッグ等はPCG表示で、車とレーダーをグラフィック表示としています。 (表示プライオリティ設定でグラフィックがテキストよりも前面になるように指定。)
これにより、レッドカーのドット単位の追い上げ、車と煙幕等の重ね合わせ表示を実現しています。 パレットは下表のように設定しています。
マイカー・レッドカーのグラフィックデータは上記パレット設定を受けてこのようになります。 (それぞれ左側がグラフィックデータで、右側がゲーム中の表示です。)
マイカー・レッドカーとも、G-RAMの2プレーンをセットすれば済むようにしています。 |
●画面構成 | |
アーケード版の画面解像度は288×224ドット(キャラクタ単位だと36×28)で、X1は320×200ドット(同40×25)です。 マップ表示部はキャラクタ単位で28×25となります。 |
●マップデータとスクロール処理 | ||||||||||||||||
初代ラリーXのマップデータは、私が探した限りではネット上で見付けることができませんでしたので、 それぞれ左側(青色)が初代ラリーX、中央(赤色)がニューラリーX、右側(紫色)が比較のための合成画像です。
1つのマップデータは32×56マスです。各マスは道路か道路でないか(1ビット)なので、32÷8×56=224バイトとなります。これをマップA〜Dの4枚分持っています。(計896バイト)
実際に画面表示する際は1マスを3×3キャラクタとして表示します。
単純に3×3倍にするだけでなく、道路と路肩の境目(上記画像で紫色の部分)がありますので、1キャラクタ毎に周囲の状況によって表示するキャラクタを決定します。(この処理はラウンド開始時に実施しています。なぜ予めそういうデータを持たないのかは後述。)
スクロール処理は、例えばマイカーが上へ向かう時(下スクロール時)、下から2番目のラインを一番下へコピーして下から3番目のラインを2番目にコピーして…というような処理はせずに、
メモリ上に持っている上記の121×190バイトのスクロール用マップデータのうちの「現在表示中の左上位置」から一画面分(28×25)をテキストV-RAMに毎回転送しています。
マイカーが移動すると「現在表示中の左上位置」をずらすだけです。
余談になりますが、当初、上記の121×190バイトのスクロール用マップデータを圧縮して4枚分持とうとしたところ、メモリが足りませんでした。 |
●レーダー表示 | |||||||||||||||||
ラリーXと言えば画面右側にあるレーダー表示が特徴的です。(ボスコニアンも)
レーダーのサイズは64×112ドット(8×14キャラクタ)で、これはマップデータ(32×56ドット)の縦横2倍のサイズです。 車・フラッグの表示サイズは2×2ドットですので、表示位置は単純計算で求められます。
しかし、アーケード版をじっくり見ると気付きますが、フラッグの表示位置は計算上の位置と微妙に(上下左右いずれかに1ドット)ずれている場合があります。
表示は、背景の青色はキャラクタで表示し、レーダー上のドットはグラフィックで表示しています。
つまり、G-RAMのBプレーンにはマイカー(白の時)とフラッグ、Rプレーンにはレッドカーとフラッグ、Gプレーンにはマイカー(白と黒の時両方)とフラッグを表示します。
また余談ですが、このレーダー表示、実は結構苦労しました。 |
●サウンド | |||||||||||||||||||||||||||||||||||||||||||
ALL ABOUT NAMCO(電波新聞社 1985年刊)には、初代ラリーXのサウンドデータとして下記の曲が記載されています。
ゲーム中の音はほぼ網羅されており、本移植作ではアーケード版の印象に近くなるように音階を多少上下しているぐらいで、基本的には上記のデータをそのまま使用しています。 問題が3点ありました。 ます、上記(13)のゲーム・スタート・ミュージックが、ALL ABOUT NAMCOでは「ニューラリーXと同じ」とありましたが、 Youtubeで動画を探して聴き比べてみるとアレンジが全然違いました。 掲載されているのはニューの方で初代はもっと軽快な感じです。これは自分なりに変更しました。
参考までにアーケード版のYoutube動画のリンクを張っておきます。(いつ切れるか分かりませんが。)
2つ目の問題点は、マイカーがやられた時の爆発音が上記に載っていないことです。
3つ目はエンジン音です。アーケード版を注意して聴いているとエンジンの音が鳴っていますが、これも記載がありません。
(ニューでも一応鳴っているようですがBGMにかき消されていて分かりづらいです。) |
●岩とフラッグの位置 | |||||||||
岩とフラッグの位置もマップデータと同様にYoutubeの動画を材料に自分で調べました。
岩はアーケード版では各マップで予め16箇所が定義されており、そのうちの最大8箇所がランダムで出るようでした。 本移植作でもそのようにしています。 フラッグはアーケード版でどのようなアルゴリズムで出しているのか不明でしたが、同じような位置に出ることが多いので おそらく岩と同様に予め場所が定義されているのだろうと考え、本移植作ではそのようにしています。 全部は調査しきれていないと思いますが、各マップでアーケード版と同じ位置の90箇所ほどを定義しています。 |
●レッドカーのアルゴリズム | |||||||||||||||||||||||||||||||||||||||||||||||||||||
レッドカーのアルゴリズムについて、ALL ABOUT NAMCOでは次のように記載されています。
上記を踏まえ、レッドカーのアルゴリズムを自分なりに考えました。
レッドカーのアルゴリズムは概ね上記のとおりですが、無限パターン(レッドカーが同じ所をぐるぐる回る時がある)防止のため、
同じモードが一定期間続いた場合は強制的にモードを変更するような処理も入れています。 |
●タイトル画面 | ||||||||||
タイトル画面と言ってもタイトルは表示されません。(ニューラリーXではテキストで表示されます。) ナムコフォントはやっぱりいいです。当時、X1付属のDEFCHR TOOL(PCGデータ作成ツール)で本の写真を見ながらフォントを作成して自作BASICゲームで使用していました。 今ではネットで簡単に実寸大イメージが見付かるので何の苦労もなく本物と同じフォントを作成できます。(当時作成した物を検証してみると微妙に間違っている文字がいくつかあり興味深かったです。)
左から右へマイカーが走った跡に文字がでてくる演出ですが、これは次のように処理しています。
これらの画像では分かりやすいように、マイカーを下に1キャラクタ分ずらし、パレット設定もゲーム本編中と同じ設定にしています。
(実際のタイトル画面ではタイトル画面用のパレット設定で、青を白に、レッドカーをマイカーに色変更しています。 徐々に表示される文字は画面に予め書いておき、その上にグラフィックで青色の横長の長方形を描いて隠しておき、 マイカー(レッドカー)が通過した所の青色をドット単位で消して、スムーズに文字が出てくるようにしています。
アーケード版のニューラリーXでは、このスムーズに文字が表示される演出が省略され、普通に一文字ずつ表示されるのが個人的に残念でした。
チャレンジングステージ開始画面も同様に処理しています。 |
(C) 2015 T. INABUKI / イナブキタケノ