現在スコアとグラインド距離 実際にソフトを持っている方ならすぐ分かると思いますが 現在スコアとグラインド距離のコードを複合化しても 参照先がない事に気付くと思います ではどうやって見つけたのか? 原理は意外と簡単だったりします まずは、最大値検索でこの場所を見つけましたちょっとだけ変わった動作ですが 普通の最大値チェックとほとんど変わりませんね 案の定、a3をストアさせるようにしてみた所 スコアが加算されると同時にMAXになりました ここからどうやってワークアドレスを見つけたのか? 答えは「書き込むレジスタを変える」です a3にはスコアの最大値が入っています では、a1には何が入っているのでしょうか? a3をストアさせるとスコアがMAXになるという事は a1はスコアのアドレスが入っているという事になりますね ストアするレジスタをa3ではなくa1に変えると (sw a1, $0000(a1)です) ゲーム中にスコアが加算されると スコア値にスコアアドレスが書き込まれるようになり あとは表示された数値を16進数に直すだけです 16進数化した数値がそのままスコアアドレスになります グラインド距離は、昔のような 根性サーチで近くのアドレスを調べます(笑) 移動距離などのかなり細かい数値を扱う処理は 浮動小数点を使っている可能性が非常に高く キャラの移動に関する物はほぼ確実に浮動小数点です (座標やポリゴンサイズなどもfloatですね) とりあえず、100.000000(42C80000) を書き込んで調べてみる事に。 通常数値と浮動小数点数値の変換には ネット上でフリーで公開されているツールを使用しました すると、スコアアドレスに+20hしたアドレスに 100.000000を書き込んだところ ゲーム開始直後に「10M」と表示されました これで現在グラインドのアドレスが判明し 値は10倍値で管理されているという事も分かりました。