ゲームがなければ生きていけない・・・そう ゲームこそ人生!!

興味ある事だけを取り上げたいと思います。

パッチコードを作ってみよう~ ゲームの改造等  メモメモ

ゲームして飽きたら改造して遊んでみたら結構たのしいですよ^^

まずは・・・・・

 

 

 

10進数と16進数を理解し、アドレスの見方も理解していればパッチコードの作成が可能です。

パッチコードは2013/07/27時点で3種類あります。3種類と言っても、書き込む範囲が1バイト/2バイト/4バイトの違いがあるだけです。

■0コード(1バイト書き込み)
0xxxxxxx 000000yy

■1コード(2バイト書き込み)
1xxxxxxx 0000yyyy

■2コード(4バイト書き込み)
2xxxxxxx yyyyyyyy

 上記のようにパッチコードは左側8桁、右側8桁の16桁で構成されています。頭文字で形式指定、左側のxでアドレスを指定、右側のyに書き込む値を指定するという具合。

 基礎知識で例に使ったG1グランプリの場合「A8から4バイトが所持金」でした。

 4バイト書き込みたいので2コード(4バイト書き込み)を使用。ですのでパッチコードの頭文字は「2」。

 アドレスはA8ですので、左側のxでアドレスを指定すると、

200000A8 yyyyyyyy

 と、なります。
 右側のyに書き込む値を指定するのですが注意点があります。パッチコードはビッグエンディアンで書き込むということ。現在「5C300400」と記載されていますが、ここが「FFE0F505」になれば所持金9999億9999万円になります。パッチコード化すると、

■所持金9999億9999万円
200000A8 05F5E0FF

 と、なります。16進数/ビッグエンディアンで「05F5E0FF」と書いた部分が、パッチコード適用時に自動でリトルエンディアンに変換されて「FFE0F505」と書き込まれます。

 アドバンスモードで書き込むなら「5C300400」の部分を「FFE0F505」に上書きすればいいですが、パッチコードの場合は自動でリトルエンディアンに変換されるという仕様のため、ビッグエンディアンでコード作成する必要があるということ。基礎知識の10進数と16進数で「この知識は絶対に必要ですので完璧に理解してください」と書いたのも、この変換仕様をしっかり理解できるようにするためです。

 4バイトの書き込みなので2コードを使うのが普通ですが、理解を深めるために0コードと1コードでもやってみると、

■所持金9999億9999万円(0コード)
000000A8 000000FF
000000A9 000000E0
000000AA 000000F5
000000AB 00000005
※0コードは1バイトの書き込みなのでエンディアンの変換は関係ありません。

■所持金9999億9999万円(1コード)
100000A8 0000E0FF
100000AA 000005F5

 4バイトを2つの1コードに分けて書くと変換を考えて混乱しますね。