IPS

From Sega Retro

Retrocdn-round.svg
This file or page has been flagged for relocation to Retro CDN, the Wikimedia Commons-esque service for all Retro wikis. This message is for the benefit of Sega Retro wiki staff.

International Patching System, or simply IPS files are patches which modify the contents of another file. They are not self-applying, so a patching program such as StealthPatch is required. IPSes are used in the distribution of ROM hacks.

History

The creation of IPS is unknown; but the file format it had was considered to be malformed. It had no version number designated in the structure, allowing no future emendation without disorder amongst the software supporting the file. More problems that arose were: 1. the original files ended with the three bytes: EOF, which soon became excluded by future software that generated IPS files; 2. the future RLE addition; 3. the limit to only being able to patch 16 MB files. These three problems actually made most of the software that applied patches not function correctly. Despite all this, the file was still used as the standard for small patches.

RLE Addition

This addition isn't believed to be created by the original creators; but it allowed run-length encoding and it was supported.

File Format

Header

  • 5 byte ASCII string: "PATCH"

Record Data

  • 3 byte offset where the data is to be placed in the target file
  • 2 byte length of the data
  • the data itself

N.B. Numbers of record data may vary.

End of File

  • 3 byte ASCII string: "EOF"

Restrictions

  • IPSes can't patch files larger than 16Mb
  • Some patching programs can't add extra data to the end of the target file (although StealthPatch can)
  • IPSes can't apply data to offset 0x454F46, because it reads in ASCII as "EOF"!