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ちょいで少なめ でも音声はちょっと入ってるんですね。