「ハック&解析研」の編集履歴(バックアップ)一覧に戻る

ハック&解析研 - (2006/11/04 (土) 13:16:21) の編集履歴(バックアップ)


メモリを覗いてゲーム内タイムをチェックする

Terimakasih氏のメッセージを転載


別スレッドお借りしますね。

[必要なもの]
PCとSnesエミュレータ
リアルタイムメモリエディタ(DBxSTANDとか)
関数電卓(16進数を10進へ変えられれば何でも良いです)
暇人レベルの時間

[前提]
大切なのは「再生時間」ではなく「ゲーム内の計測時間」とします。
エンディングで出るクリアタイム優先ってことです。
部屋の移動中はゲーム内タイムは計測されないことを利用する。

[やり方]
コードサーチしてメトロイド内のゲーム時間を記録しているアドレスを見つけます。下記の通り。
7E09E0 - Hours
7E09DE - Minutes
7E09DC - Seconds
7E09DA - Frame Count
です。まぁ、秒とフレームがメインになります。

メトロイドの場合、前提の通り部屋移動中は時間が停止します。
最初に部屋へ入る時の部屋切替時間中に現在のゲームタイムを書きとめます。
次に、別の部屋への部屋切替中にタイムを控えます。
後は、この差を出せば、それがその部屋で掛かった時間です。
1フレームの誤差も無く計測出来ます。

部屋の任意の場所では駄目です。フレームなんて人間が認知出来る時間の単位じゃないですから、かなりの確率で誤差が出ます。
必ず時間の計測が止まっている状態で差を出すのがポイントです~。

リアルタイムメモリエディタが必要なのは、例えばSnes9xのチート機能だけですと、値を見るのが凄く大変だからです。
DBxSTAND等ですと、一度設定してしまえば楽に値を見られます。


[注意点]
大きく2点あります。

まず、何がタイムにどれだけ影響しているかは解明されていません。
その時の敵の数、弾の数、サムスの状態、アイテムの数etc
例えば最終ボスが良い例です。
体感的にはマーダービーム使用は早く感じるかもしれないですが、
実際には別の方法が7秒も早いコトは計測から明らかになったと思います。(ご存知ないかも?(汗))
「見た目」や「体感」は一番当てになりません。
尚、Snes9xで表示しているフレームカウント数(画像に映っている数字)も信用出来ません。
これは再生時間であり、ゲームクリアタイムとは全くの別物だからです。

もう一つ、直接の注意とは違いますが。。
この方法は、正確には部屋を出る時のサムスの状態が全く同じでなければ意味がないです。
歩いて部屋を出た時と、加速して出た時では、次の部屋で大きな差が出てしまいます。

つまり、「何が最も最速か」を誰かに納得させるならば、
『ドアからドアまでの間で計測し、かつ同じ状態でドアへ入っていること』という状態で計測した結果が必要です。

計算は面倒になりますが、他人のsmvと自分のsmvにて、比較することも可能です。
私がフレーム単位で「MFさんの方が1秒と24フレ早い」と言ったりしているのは、こうやって計測したものです。
間違いがあるとすれば、私の計算ミスってコトです。
「1F」とかは良いですが、「24」とかはつい10進数への変換を忘れて差を計算してしまったりしますから。。

リアルタイムメモリエディタの使用方法は省略しましたが、以上です。
特に(Emuでは)メトロイドはフレーム単位での正確な計測は必須スキルです。
LRダッシュが無かった頃、Jecyさんと私を比較して見ましたが、彼は私より正確で速かったです。
LRダッシュ抜きで彼のセレス脱出タイムを抜ける人は居ない気がします。



チート関連

特殊な条件で実験をしたい場合はチートを使った方が便利なので、少しずつチートに関する情報を集めたいと思います。