PS1 改造コード総合
0338名無しさん@お腹いっぱい。
垢版 |
2017/03/11(土) 20:22:32.62ID:miuDGmSY
PSのチートの改造で使われているPARコードの仕組みについて
より詳しいことが知り焚けば「PARコード 解説」で検索してみるといいよ

30コードってのは1バイト=8ビット(最大FF=255まで)の領域の数値を改造するもので
よってコードのアドレスに付け足された数値は常に「00FF」とか前二桁の部分はゼロになってるはず
30コードだとアドレスは1バイトずつ並んでても隣のアドレス値と重ならない事になる

たとえばこういう30コードがあったとすると

> 30122108 0063

これの後ろ側の二桁(1バイト=8ビット)分の「63」の部分だけが30コードにおいては有効となる
前の二桁についてはあくまで無効なので気にせず完全スルーしてしまって構わない


80コードってのは2バイト=16ビット(最大FFFF=65535まで)の領域の数値を改造するもので
よってコードのアドレスに付け足された数値は4桁で最大FFFFまで改造可能
だがこれだと1バイトずつアドレスをズラしてだと前二桁分が前のアドレスの数値部分と重なってしまい
バグや誤作動の原因になるので、この場合は必ず各コードのアドレス値の間を必ず2バイト以上ずつズラしてやらないと駄目
0339名無しさん@お腹いっぱい。
垢版 |
2017/03/11(土) 20:29:21.13ID:+YKb3vJe
ただし「80コード」までだと2バイト(16ビット分)で最大FFFFまでという事で
10進数換算だと最大「65535」までしか改造できなくなってしまう
そこで応用を働かせてやって、2バイト分アドレスをズラして、2コードを連続して続けてやることで
FFFF+FFFFという風にやることで疑似的に32ビット最大「FFFFFFFF」=4294967295まで改造してやることが可能となる

つづき

たとえば「資金のコード」なんかでゴールドのMAX値が9999万9999とかの場合

コードが必ず2バイトずつで連続で続いているのはこれを利用して、
2バイト分の範囲しか改造できない80コードを連続で繋げてやることで
32ビットの範囲(FFFF+FFFF)を「疑似的に数値固定してやる」仕組みになっているわけだ

>>323のこのコードとかはこのパターンに当てはまる
"GP (MAX_9999999=98967F)"
80122028 967F
8012202A 0098

まぁこれの場合は3バイト=24ビット分の範囲しか改造しないので
2バイト(80コード)+1バイト(30コード)ということで
80122028 967F
3012202A 0098
こうして繋げてやってもいいと思うけどね

これの応用で例えば>>328のコードでこういうコードがあるけど
> ■敵 技出せない
> 8008C7E0 FFFF
> 8008C7E2 FFFF
> 8008C7E4 FFFF
> 8008C7E6 FFFF
> 8008C7E8 FFFF

この場合には2バイト(16ビット)分のコードを5つ連続させ並べてやることで
5バイト=16ビット×5=80ビットということで、合計80ビット分の範囲の数値を
疑似的に1つのコードとして改造していることになる

他にもD0コードとか色々な種類の命令パターンがあったりするけど、
まぁ一般レベルっていうか大方の人は小難しく考えずとも
PARコヒードにおける80コードと30コードの命令パターンの違いだけ頭に入れておけば大抵は大丈夫だと思う
レスを投稿する


ニューススポーツなんでも実況