2022年にもなった今
今更PS2の改造コードをサーチしている人なぞ世界に2人か3人くらいでしょうが、忘備録の為にまとめてみました。
PS2の改造をするにあたっては実践あるのみだと自分は思っています。なので、他の人の作ったコードを参考にするのが自分の理解力を上げることにつながるはずです。
と言っても各コードの意味が分からなくては仕方ないので、各コードの意味を理解してそのコードを作った人の意図を読み取れるようなるのが解析者への一歩だと思います。
よく見かけるもの
ちなみにPS2PARのコードについて自分はコードの先頭文字を取って呼ぶことが多いです。
0で始まるものはゼロコード、Dで始まるものはディーコード等と言った風にです
0、1、2コード(単純書き込み)
0xxxxxxx 000000yy
1xxxxxxx 0000yyyy
2xxxxxxx yyyyyyyy
改造のもっとも基本となる単純書き込みです。
アドレスx番地に、値yを書き込むと言う物で先頭の0、1、2で書き込むバイト数が変わります。
0なら1バイト、1なら2バイト、2なら4バイトです。
4コード(反復書き込み) ※PCSX2使用不可
4xxxxxxx nnnnmmmm
yyyyyyyy 00000000
4で始まるコードは開始アドレスから一定のアドレスおきに反復書き込みを行うコードになります。
例えばRPG等で味方のキャラ10人分のHPの値を変化させる時など、データの並び順が一定間隔で決まっている場合に0,1,2コードでは10行必要なコードが2行で済むようになります。
意味としてはアドレスx番地を開始アドレスとして値yをm×4バイトおきにn回書き込むと言う動作をします。
PCSX2にはそのままでは利用できませんが、0,1,2コードに展開することにより適用は可能です。
Aコード(一度だけ書き込み) ※PCSX2使用不可
Axxxxxxx yyyyyyyy
アドレスx番地に、値yを1回だけ書き込むと言う物
ゲームタイトルによってはメモリに保存されたプログラムが動的に変化する場合もあるので、恒久的に値を変更し続ける0,1,2コードでは不具合が出る可能性があるため、このような危険性に対するものとして利用する。
良く見る方に分類していますが、頻度してはたまに見るくらいです。(どちらかと言うとPS2よりPSのコードで良く見たかも)
PCSX2ではAコードのままでは利用できませんが、2コードに置き換えることによって使える可能性があります。ただし、不正な処理が発生する可能性が高いので、適切なタイミングで外部メモリエディタを使うなどで対応するのが吉
D、Eコード(条件比較) ※PSCX2使用不可
Dxxxxxxx 0000yyyy
Dxxxxxxx 0010yyyy
Dxxxxxxx 0020yyyy
Dxxxxxxx 0030yyyy
Exxxxxxx 0nnnyyyy
Exxxxxxx 1nnnyyyy
Exxxxxxx 2nnnyyyy
Exxxxxxx 3nnnyyyy
右側の0,1,2,3を比較条件として
アドレスx番地の値とyの比較条件がTrueならコードを実行する
0,同一だったならON
1,同一ではなかったらON
2,yの方が大きければON
3,yの方が小さければON
Dコードの場合は直下1行のみを実行し
Eコードの場合はnで指定した行数実行する
Dコード、Eコードはよくパッドコードで使われるものです
このコード自体はPCSX2では使用できませんが、適切なタイミングで
併用される0,1,2コードを実行することでPCSX2でも適用可能
マスターコード ※PSCX2使用不可
Fxxxxxxx yyyyyyyy
PS2PARを有効化するためのコード
当然PCSX2では利用不可
あまり見ないコード
3コード(減算)※PSCX2使用不可
300100yy xxxxxxxx
3002yyyy xxxxxxxx
30030000 xxxxxxxx
yyyyyyyy 00000000
アドレスx番地のデータをyの値だけ減算しつづけるそうです
あまり見たこと無いのと、どういったシーンで使うのかも理解できず・・・
5桁目の1,2,3で書き込むバイト数が異なる感じです
3003で始まるコードは4バイト書き込むため1行ではコードが書ききれないので、2行で1セットのコードになっています
例えばRPGで歩くごとにエンカウント期待値が増えるような時に
1歩ごとにエンカウント期待値が10上がるとして、
コードで5づつ減算させると実質的にエンカウント率が半減するとか?
しかし、止まっていても減らしちゃうので意味ないような・・・?
使い方不明
3コード(加算)※PSCX2使用不可
301000yy xxxxxxxx
3030yyyy xxxxxxxx
30500000 xxxxxxxx
yyyyyyyy 00000000
上の逆です。
こちらも利用シーンが不明
5コード(コピーコード) ※PSCX2使用不可
5xxxxxxx nnnnnnnn
dddddddd 00000000
アドレスx番地からnバイトのデータをアドレスd番地ににコピーする
4コードの場合は4バイトまでしか書き換え出来ないので、
構造体が大きい場合はこちらの方が有用なのかな
PCSX2では利用できませんが、適切に展開できればPCSX2適用可
Cコード(一致の時実行) ※PSCX2使用不可
Cxxxxxxx yyyyyyyy
アドレスx番地の値がyと一致したら以降すべてのコードを実行する
以降すべてのコードを実行するというのがポイント
Eコードで代用可能なため、特にこだわりが無ければCコードを使う事は無いようです
Cコード自体はPCSX2では利用できませんが、
Cコード以降の0,1,2コードを適切なタイミングでPCSX2で実行すれば適用可能
コメント