スコア&タイム表示


このゲームの特徴はスコアによって変わる称号ですね
敵に見つかったのか見つかっていないのか
微妙で分からない時もしばしば。

文字列をラベルから探していったところ
"SCORE:%d"
というラベルが見つかりました
文字列のすぐ近くには
"TIME %03d:%02d"
という文字列も存在します


「C言語で文字列を扱うと%が入る」
というような事がゲームラボで書かれています
(2002,4月号のP158〜P159参照)
・・・私はC言語とかサッパリな人間なので
勝手にこう解釈しちゃってるんですが(笑)
とりあえずプログラムに関係する文字列では?
と予想できます。

早速"SCORE:%d"を参照先に指定しF3で検索
すると一箇所だけヒットしました
そこから下方向を探してみると
"TIME %03d:%02d"の参照先も存在します

デバッグモードを探す時のように
文字列をスキップしようとしている命令を探し
潰して効果が無いか調べて見ようと思います

怪しい命令のあるアドレスは以下の2つ
00271450 10400044
00271464 1443003f
どちらも大きく分岐する命令で
文字列をスキップする可能性があります

とりあえず00271450の方を潰してみます
今回はnopではなく、私のいつも使う方法の
分岐先を2命令先に変更する物を使ってみましょう
nopでも問題は全く無いのですが、暗号化した時にコードを見ても
一目で「このコードは分岐を潰しているな」
というのが分かり易いようこういう方法を取っています。

A0271450 10400001
〜暗号化〜
9CB29778 0496E7A6

さあ、早速使ってみると・・・
スコアとステージプレイタイムが表示されています
00271464の方は潰さなくても表示されるので
この1行だけでも大丈夫なようです。
聞いた話によると、このスコア表示などは
隠しコマンドで出現するとの事なので
そのコマンド実行後の関数なのかなと思います。