走ってなンぼ!!みなみよ泣くな(「星をみるひと」の移動速度改善)


概要

伝説のクソゲーとして名高い「星をみるひと」。ゲームの仕様中、最もキツいと思われた 「移動速度の遅さ」を解消する為、パッチを作成した。


序文 〜 STARGAZERをプレイして 〜

皆さん、もう「STARGAZER」は遊ばれましたか?え?ご存知ない?
昔、ファミコン出ていた「星をみるひと」のリメイクを作った方がいて、しかもフリーソフトで公開されているのです。


「みなみ」「しば」「みさ」「あいね」の4人のエスパーが主人公のRPG

遊んでみての感想ですが、大変面白かったです。

・ゲームボーイ「魔界塔士サガ」のようで、かつ軽快な戦闘システム
・ゲームを盛り上げる楽曲(特に、新フィールドに到着後、フィールドや戦闘シーンの音楽が変わる演出)
・回復、セーブ、ダッシュ等、その他のシステムの改善(と思われる)

など、フリーのソフトとは思えないほど丁寧に作られています。

最近、昔のゲームのリバイバル・リメイクが流行っていますが、中にはかなり凄まじいデキのものもあるようで・・・。
そんな中、フリーでこのような品質のゲームを見せられると、フリーでないゲーム製作業界の方にはもっと頑張って欲しくなってしまいます。

さて、このSTARGAZERの元となった「星をみるひと」なのですが、私はクリアしたことがありません。
そのため、STARGAZERを単体のゲームとして見たときの面白さはわかるのですが、リメイク版としての素晴らしさについては、 残念ながらピンと来ない部分も無いとは言えませんでした。

・ゲーム中の「IDカード」「各個人の能力を駆使して進む」等、リメイクによるシステム周りの改善具合(元のゲームの酷さからどの程度改善されているのか)
・ゲームのシナリオはなかなか面白かったが、これは元のゲームが面白いからなのか?リメイク版で変更されたものなのか?
・ゲーム中の音楽は全て元ゲームのアレンジか?それともオリジナルか?

これらの点を解明するには、やはり覚悟を決めて、元ネタのゲームを遊んでみるしかないようです。


「星をみるひと」新たなる伝説

久しぶりに少し遊んでみると、さすが伝説のゲーム、かなり凄いことになっています。

特に気になるのが、フィールドでのプレイヤーの移動速度が大変遅いことです。1フレームあたり1ドット単位での移動のようですね。
百歩譲って、伝説を彩るその他の怪現象(「2番目の町から出ると1番目の町の前に出る」「戦闘が遅い」「ESPを覚えるまで戦闘シーンから逃げられない」)には目をつぶるとしても、 この移動速度の遅さにゲーム終了まで付き合わされると考えると、決心も揺らいでしまいます。
なんとか、移動速度を改善する方法が見つかればよいのですが・・・。

例によって、エミュレータを使い、適当にメモリビュワー、トレースログ等を見つつ遊んでみます。
ざっと見たところ、星をみるひとのフィールド移動時には、以下のような手順で処理が行われています。
  1. 任意の方向の方向キーを押す。

  2. BG(バックグラウンド。地面や木など)を1ドットスクロールする。

  3. ゲーム中のオブジェクト(町の人などのスプライト、町の入り口、洞窟など?)の位置をスクロールに合わせて補正。 スクロールが1ドット単位なので、こちらも当然1ドット単位で位置をずらす。

  4. iiに戻る。これを、主人公みなみの一歩分である16回、まったりと繰り返す。
改善の方針としては、例えば、これらを「2ドットスクロール/移動するのを8回 繰り返す」ようにすれば、歩く速さは2倍になりそうではないでしょうか?

ただし、実際の改造は、一筋縄では行かないようです。
まず、スクロールやオブジェクトの移動には、定数の加算ではなく、inc/dec命令で処理されています。
これはつまり、スクロールなどを行う際に、

 lda $1A :レジスタAに、メモリ1Aの内容を代入。メモリ1Aは、画面のスクロール量を保持しているものとする
 adc #$01 :レジスタAに定数1(スクロール量)を加える
 sta $1A :レジスタAの内容をメモリ1Aに代入

という方法が取られておらず、代わりに「inc $1A」が利用されているということです。
もし前者の方法であれば、「adc #$01」の定数1の部分を別の値に置き換えることで、改造もより容易となったはずでした。

星をみるひとの改造にあたっては、これらのinc/dec命令の前後に、さらにinc/decを加える、という形で移動速度を増加させます。
ただし、これらの命令を加えるといっても、周囲にはぎっしりとその他の命令が記述され、隙間はなかなか見当たりません。

そんなときは、元のinc/dec命令を、サブルーチン呼出し命令やジャンプ命令と置き換え、ジャンプ先で新ルーチンを書き直す、という 方法をとります。これなら、たとえ初めのジャンプ命令の置き換えで削除されてしまう命令があっても、ジャンプ先でその命令を実行してやればよいのです。

しかし、通常、ゲームソフトでは飛び先に使えるようなエリアはほとんど無いのが常識です(注)。
というか、常識だと思っていたのですが・・・。
星をみるひとのROMイメージを見てみると、なにか末尾に「FF」で埋められた領域が・・・1Kバイト(=1024バイト)はあるようです。

これらの「FF」データ群ですが、ゲーム中のデータにしては同じデータが長く続きすぎています。恐らくプログラムをROMに収めた時の、余り領域なのでしょう。
この領域があれば、移動ルーチンを書き直すことも十分可能なようです。

それにしても、まさかこれらの領域、将来このような目的で使われる為に、わざと確保されていたのでしょうか・・・
だとしたら新たなる伝説になってしまいますね。

 今日のトリビア:
  「星をみるひと」には、将来行われるクソゲー対策改造を見越して、ROM末尾に未使用の領域が確保されていた


(注)
ハドソンの高橋名人の著書「名人はキミだ!」の中に、『ハドソンのゲームは容量をムダに使っていないんだ!』という記載があったような、なかったような・・・。 「忍者ハットリ君」のステージラスト、ちくわに混じる鉄アレイは、余った容量ギリギリで最後に入れたそうです。


改造 〜 Bダッシュつけちゃいました 〜


   hosimiru-rundash.exe(hosimiru-rundash.lzh : ファイルサイズ 8,752バイト)

LZH形式で圧縮された、Windowsの実行ファイルです。プログラムはWdiffで作成しました。
展開後、生成されたhosimiru-rundash.exeをhosimiru.nesと同一のフォルダに移動し、実行してください。

また、.exeファイルを実行できない、実行したくない方向けに、テキスト形式のリストも用意しました。
このリストを元にバイナリエディタで修正しても良いでしょう。
一部、改造内容のコメントもつけてあります。

(2016年追加)本パッチをレトロフリーク上で実行できるよう、ipsファイル版のパッチを作成しました。
レトロフリークで使用しているSDカードのRetroFreakフォルダ内に、さらにpatchフォルダを作成し、その中に展開した.ipsファイルを置いてください。
そのファイルをゲーム実行時に「ゲーム設定>パッチ選択」で適用する事で効果が得られます。

※ただし、ROMイメージの形式、ROM出荷時期等により、うまくパッチ適用を行えない場合もあります。ご了承ください。


このパッチを、「星をみるひと」ROMイメージに適用することにより、フィールド(街含む)での移動速度が2倍になります!
(パッチ適用版で遊ぶ前に15分ほど適用前版で遊んでおくと、より速さを実感できます)

また、容量に余裕があったので、STARGAZERを見習ってダッシュ機能もつけてみました。
Bボタンを押しながら十字キーを押すことにより、移動速度は4倍になります。
(ちなみに暴走を防ぐ為、ダッシュON/OFFの判定は非スクロール時にのみ行っています。)

今までの遅さが遅さですので、ダッシュしている様子が、かなり可笑しいです。

スクロールとオブジェクト移動ルーチンの全書き直し、およびBダッシュ機能の付加で、400バイト程度を使用しました。


なお、このパッチ作成後、ゲームを最後まで進めていません。以下のような問題が発生する可能性があります。

・BGが乱れたり、ダンジョンに入れない等の現象が発生する。
・ゲーム進行に不具合が出る(Bボタンの状態保存の為、RAMを1バイト($bf)こっそり使用していますが、ゲーム本編でこのアドレスが使われているかも!?)


追記

(2005/04/01追記)

ものすごく苦労して、ついに「うちゅうタワー」に到着しました。
ゲーム開始からこの時点までの不具合(ゲームそのもののデキを除く)としては、「木の実を拾うとき、複数回拾ってしまう」「ダンジョンのドアから出られないことがある」 というものがありました。

  • 木の実を拾うとき、複数回拾ってしまう・・・
    木の実が取れる木にキャラクタを移動させた際、たまに「きのえだに 〜のみが、なっています。とりますか?」の表示が複数回出る場合があります(その都度「はい」と答えると複数回木の実を拾えます)。また、その際、マップ表示に若干乱れが発生します。

  • ダンジョンの入り口ドアから出られないことがある・・・
    ダンジョンから出た直後、そのダンジョンの入り口に重なった状態で上に一歩進むと、またその入り口からダンジョンに入ってしまい、ダンジョンから二度と出られなくなってしまうかのように見えます。
    この現象が発生したら、ダッシュしながら上に移動してみてください。

  • いずれの現象も、「主人公の現在位置に何があるのか?」の判定が行われるタイミングにより発生するようです。


    終わりに

    今回の「星をみるひと」改造はいかがだったでしょうか?
    私のようにSTARGAZERを遊んだ後、「星をみるひと」をもう一度遊びたい方、また、この機会に伝説を体験したい方にはオススメです。

    え?エミュレータの「フレームスキップ」を使えば良い?
    でも、音楽なども早回しになってしまいますし、何より、ROMにあらかじめ未使用領域が確保されていたわけですから、 それを有効活用したほうが良いのではないでしょうか?

    ともかく、これでやっと「星をみるひと」を遊ぶことができます。
    さーて、さっそくドリキャスで・・・以下自粛


    この場面を遊んでいるとき、丁度「リングワールド」を読んでいたのでちょっと驚いた。



    (以下、2005/06/28追記)

    なんとか元祖「星をみるひと」をクリアしました。

    いやー、クリアしたから言えるんですけど、ひどい・・・いや、実に個性的なゲームでしたね!
    多少移動速度が速くなったところで、ゲーム本体の凄まじさを紛らわすことはできなかったというか・・・
    そもそも中盤以降、敵にダメージを与えられるのが実質「みなみ」だけというのはどうなんでしょうか?

    あーくCITYで挫折しそうになった方、よりゲームを快適に進めたい方は、次のページをご参照ください。
    星をみるひと(特設会場)

    敵の落とす経験値、武器のパワーアップなどでバランス調整を行うための改造です。

    それにしてもこのゲーム、ネタになったり叩かれたりすることも多いのですが、ファンサイトが多かったり、リメイク版が出たり、バランス調整版が出たりと、 結構、みんなに愛されているゲームなんですね。


    参考にしたサイト・コンテンツ
    ・Rxo Inverse氏による、「余計な味がしない。」STARGAZERのページ
     原作へのリスペクトに溢れた素晴らしいリメイクです。原作をクリアして改めて悟りました。

    ・M氏による、「Memories」重装機兵ヴァルケンのページ
     買わずに済みました。

    ・降雷昇炎氏による、「DASTARD」星をみるひと(特設会場)のページ
     バランス調整版を公開されています。


    ips版パッチを追加。(2016/02/07)
    色々と手直しした。(2005/06/28)

    サイトトップへ戻る