EXTRAモード制限解除

ちょっと今回は難しい内容になります
解析を始めたばかりの人にはツライと思いますが
PS2では浮動小数点が当たり前の様に使われているので
「それらを理解する必要があるな」
と思う方は読んでみて下さい。


最初は別のコードを探していて
その結果_??classと書かれたラベルが
ゲームに大きく関係している事が分かりました
(_9classRule$m_ariPointがポイントなど)

この_9class周辺をラベル一覧で探してみた所
_14classにOmakeViewと書かれています

$の後の文字もAngleやXRot、YRotなど
明らかに視点に関係する文字ばかりです
早速このラベルの存在するアドレスへ飛んでみると
数値は何も書き込まれていない状態です
どうやらここはワークアドレスとして使われるようです
今度は、そのアドレスを参照している命令を探します
Angleから飛んで見た所、やはり何箇所もヒットします
どこで制限をしているかは経験とカンが必要です

近くの処理にそれらしき物が無いか見て行くと
00139C2C〜00139C88あたりで
操作処理&制限をしている事が分かります

00139C50までは普通の浮動小数点の計算ですが
それ以降を見ると、特定の数値と現在値を比較して
その結果によって特定値に修正しています

修正されなければ制限が外れるので
修正するストア命令を潰して
実際に使えるか試してみると・・・
視点制限が外れていませんが
ズームアップorアウトの制限が外れました
どうやら回転制限は別の場所の様です・・・


先ほど、Angle以外にも
「XRot」「YRot」の二つを挙げました。
良くキャラモデルなどのデバッグで
「XYZ軸」という文字が使われます
キャラの傾きなどはこれらXYZ軸で成るので
これこそ回転に関係していそうです

Angleと同じ様に調べて行くと
00139858から回転に関する処理がされています
(長いのでここの画像は省かせて頂きます)
その中で、00139930あたりから
制限をしているであろう命令が多数存在します

Angleと同じ様にストア命令を潰して
効果があるか試してみると・・・
見事に回転制限が解除されました。


しかしこのゲーム・・・
読み込みがあまりにも長過ぎる・・・
一瞬、止まったかと思う時も・・・
コードが使えるかチェックするのも面倒です(汗)
ついでにディスク容量も200MBちょいで少なめ
でも音声はちょっと入ってるんですね。