第6章 解析してみたけど・・・



StunrmanSNake氏から貰い受けたとある人物が作成したカメラアングルを変更するツールを使ってみたが残念ながらそれは自分が欲していたものとは違っていた。

これは、チートツールみたいなもので、ゲーム中に自分の好きな場所でRAM値を変更して、カメラアングルを一時的に変更するものであった。
つまり、大元となるRDTファイルの編集を直接可能にするものではなかったのである。

しかし、このツールをうまく使えば、そのRDTファイル内のどの場所からカメラアングルに関係するデータを引っ張ってくるのかを追跡することができるのではないかとと考えたのである。

そして、その場所を特定できれば、RDTファイル内のカメラ関係のデータのアドレスがわかり、そのデータ郡の構造がわかるかもしれないと…。

このような内容を書くと短いが、ほぼ素人の自分にとっては、それを調べる方法の知識と技術がない。(少しは想像できるくらいのレベルだ)

頑張って昔書かれたフォーラムの内容を調べて、そのツールを作った人が書き込んだ内容をなんとか理解しようと努力した。

そして多少は理解できた。
下記画面は、「初心」のスタート地点で一歩も動かない時のツールで表示される値である。


表示されている数値は次の順番である
60
249
246
80
218
71



左に少し歩いたら、「218」であった数値が「212」に変化した。
60
249
246
80
212
71

こんな感じで移動するとどのような数値の変化が起きるのかを確認しつつ、その数値の意味を考察した。
どうもこれらの数値は、カメラの焦点からの距離を示していると思われた。
つまり、横方向、奥行き、高さのそれぞれの距離である。
カメラの焦点はプレイヤー(この場合ケビンの背中から少しずれた位置にあると思われ、それを中心に横方向、奥行き、高さのそれぞれの距離を示している。
その値は、それぞれ2バイト?である。(実は後ほど4バイトであることが判明)

これは、StuntmanSnake氏が保存していたCAPCOM公式のオフィシャル動画で観れたこの画像を見て推測できる。


この青い旗みたいなのがカメラの焦点であり、この場合常に画面の中央にある。
カメラは常にその中央の「旗」を追いかけている。
そしてケビンはその旗からの距離が一定値を超えるとその旗も同時にケビン追いかけてカメラもそれと同時に動いていることがわかる。
つまり旗の位置は常に画面の中央にあることがわかる。

そしてプレイヤーが移動すると、その値は変化する。
つまり、どこかのRAMの値をポーリング(定期的に読み取り)表示をしているのである。

そして「LOCK」ボタンを押し、▲▼ボタンで数値の上げ下げができるが、その範囲は0から255である。
つまり16進数の00H〜FFHまでであり、1バイトであることがわかった。

その数値を変えるとRAM値に書き込む仕組みのようである。(その場合は、カメラ移動がしなくなるモードになる)

ふむ。このツールの仕組みというか機能は理解できた。

今度は、この値をどこのRAMアドレスからポーリングしたり書き換えているのかを知る必要がある。


初心の初期値は下記である。
60
249
246
80
218
71

これを16進数にすると下記の値になる。
3C
F9
F6
50
DA
47

これらの値がどこかのRAMに書き込まれているわけである。
問題はそのアドレスがどこなのかであるが、これはフォーラムに書かれていたので理解できた。

@
3C
A
F9
B
F6
C
50
D
DA
E
47

そして、PCSX2のデバック機能を使用してRAMのダンプをみて検証してみた。
このツールで値を変えると、下記のアドレスの内容がその値になることがわかった。



RAMアドレス
@
2031354E
3C
A
20313549
F9
B
2031354A
F6
B
2031355E
50
D
20313551
DA
E
20313552
47


ここまではなんとか理解できた。
そして、この値を決定するなにかの処理があり、その元とするRDTファイルのどこかの情報を参照しているハズである。
つまり、これらの値を書き込む処理をみつければ、その手前でRDTの情報を参照する部分があるはすだと予想した。

そして、それを見つけるには、これらのRAMを書き込むところにBreak pointを設定し、Breakしたら、そこから逆アセンブルさせたコードを追えばなんとかわかるのではないかと…

しかし…それに大きな問題があった。

私にはアセンブラのニーモニックがまったく理解できないことであった。



自分には解析なんかできっこないのである。
ついに限界に到達してしまった。
完全にお手上げの状態である。
トーシローの自分にこれ以上のことなどできないのである。


だめだ完全にギブアップだ…もう無理


もう諦めよう
そうだ中断していた別のことをやり遂げよう。


てことで続く