ごちゃペディア

はなまるデジタル創作紀行(DTM、TAS、いろいろな技術)

IPSフォーマット仕様書(バージョン 1.1)日本語

IPSは、データにパッチを当てるための、シンプルなシステムです。

ファイル構造

IPSパッチの大まかな構造は次の通りです。

項目 説明
Magic IPSパッチのシグネチャです。"PATCH"の5バイトでなければなりません。
Clusters パッチの集合体です。詳細は後述。
EOF IPSパッチの終端を示します。"EOF"の3文字です。

なお、Amiga発祥のフォーマットなので、数値はすべてビッグエンディアンです。

クラスタの構造

IPSパッチは、小さなパッチの集合体です。その小さなパッチをクラスタと呼びます。クラスタのフォーマットを以下に示します。

項目 サイズ 説明
Address 3 パッチを適用する位置を示す3バイトの値です。先頭からのオフセットで位置を示します。
Patch Size 2 パッチを適用するサイズを示す値です。単一クラスタで65,535バイト以上のデータはパッチできません。0のときの解釈は後述。
Bytes to Patch 可変 変更後のデータです。データのサイズはPatch Sizeです。

ただし、Patch Size == 0 のときは次のような解釈をします。

項目 サイズ 説明
(Patch Size) 2 0 := 続くバイトでデータを埋める
Patch Size 2 パッチを適用するサイズを示す値です。
Byte to Fill 1 コピーすべき値。指定領域はすべてこの値に設定されます。

その他

代表的なIPSパッチャにはWinIPSがあります。ソースコードも参考になります。