日付操作

このゲームは、残りの日数までに色々をこなす
タイムリミット付きのゲームですが
どうせなら制限無しで遊んでみたいものです

まず、日付のワークアドレスを探します
こういうゲームの場合、基本的にはお金のアドレスの近くに
その他諸々のデータを格納する事が多いので
お金のアドレスを頼りに探してみたいと思います

お金(コール)のアドレスを探すために
PS2解析ではお馴染みの最大値検索をします
その結果、最大値は000F423F(999999)
チェック個所は002f8580という事が判明しました

上限チェックされる数値が格納されているアドレスは
lwで値をロードしている参照先である
00F76430 xxxxxxxx
どうやらここがお金のアドレスのようです
早速000F423Fを書き込むようにPARに入力します
20F76430 000F423F
〜暗号化〜
1C62E758 144F25CC

予想した通り、所持金がMAXに変更されています
ここがお金のワークアドレス確定です
次に周辺のアドレスの数値を変更してみて
日付に何か変化が無いか調べて見ます、すると
10F76434 00000000
〜暗号化〜
4C62E75C 1456E7A5
を入力したら日付が最初の物に固定されています
思惑通り、日付のワークコードを見付ける事が出来ました

しかし残り200日くらいになってから
日付を最初の日付に戻してしまった場合
通常、日付は巻き戻ることの無い要素なので
何か不具合が出てしまう可能性があります
そこで、プログラム面から操作して
日付が増えないを作る事にしました

どうやってプログラムを探すかというと
PS2DISで簡単なHBPに似た方法を使います

PSのX-Linkなどに実装されているHBP機能に
「値を変化させたらブレイク」
「値をロードしたらブレイク」
「命令を通過したらブレイク」
の3つの機能が付いていますが
この「値をロードしたらブレイク」に似た機能を
PS2DISで再現する事が可能です

方法は至って簡単「参照先を調べるだけ」です
00F76434のアドレスをスペースキーでマークして
F3ボタンを押すだけで探すことが出来ますが
この下の画像のように__00f76434というように
アドレスが表示されていない場合は参照先は見つかりません
(ちなみに、基本解析のアドレスでアセンブルと同じ方法です)


日付は0001刻みで増加しているようなので
いくつかある候補の中から
数値のロード後に値を0001加算して
同じアドレスにストアしている場所を探します
すると、001439A8でヒットした後の処理を見ると
0001を加算して同じアドレスにストアしています


試しにこの001439ACの加算命令を潰してみます
201439AC 24630000
〜暗号化〜
1C83BAD4 3873E7A5
この状態で調合や遠くまで採取に出てみても
一切日付が進まなくなりました、改造成功です
しかし、ここでまた新たに問題点が出てきました
それは「やすむとゲームが進まない」という事です

これはパッド操作で切り替えるように作らないと
回避出来ないような問題なのですが
肝心のパッドアドレスの探し方については
今の私自身の解析の主力になる方法になので
残念ながら今回は紹介出来ません(汗)
(シンボル解析のパッドアドレス特定方とは違う方法です)
時期が来たら公開しようかなと思っています。