A patch is a file that contains all the differences between two related files. In the context of ROM hacking, a patch typically contains the differences between the original version of a ROM and the hacked version. The patch is distributed, and end users apply the patch to a copy of the original ROM, which produces a playable version of the hack.
When distributing a hack, patches are preferred over complete ROMs. One reason for this is that patches are smaller than their respective ROMs. Another compelling reason for this is because hacked ROMs still contain copyrighted data owned by the game's original creator. By creating and distributing a patch, the hacker ensures he is sharing his work only, and that he does not infringe upon the game's copyright.
IPS, or International Patching System, is a common format generally used for older consoles or consoles with relatively small ROMs. There is a wide variety of tools that can create IPS patches, such as Lunar IPS and WinIPS.
IPS is still widely used, but is losing favor due to some potential problems with the format. IPS patches do not work with ROMs larger than 16 MB. Not all IPS patching utilities support expanding or truncating (reducing the size of) ROMs. IPS patches can also unintentionally contain copyrighted data. This occurs if data is relocated within a ROM, as the IPS format does not have provisions for delta-encoding, treating the moved data as entirely new data, causing the copyrighted content to be included in the patch and increasing the size of the patch.
UPS is designed to be a direct replacement for IPS. It solves some of the problems with the IPS format, but still suffers from the lack of delta-encoding (for moved data), causing copyrighted data to be included in the patches and unnecessarily increasing the size of the patch.
BPS is a patch format intended to be the successor to IPS and UPS. It supports a variety of features, including delta-encoding (moved data), multi-file/folder patches, support for large files, metadata, and file verification. Patches can be created and applied using beat.
The term "XDelta" can refer to either the XDelta software, or the format used by said software. XDelta is a command-line program, but there are multiple front-ends available as well.
XDelta does not have the same limitations as the IPS format, and has additional features such as verifying that a patch is applied to the correct file. XDelta patches take more time to create, but are typically smaller than other formats.
The term "NINJA" can refer to the NINJA utility, the NINJA 1.0 patch format, or the NINJA 2.0 patch format.
PPF, or PlayStation Patch Format, is a patch format used for disc-based games. PPF patches can be applied with a utility such as PPF-O-Matic.
In some cases, hackers create custom patching programs specific to a hack rather than using existing formats and software. These patchers are generally trivial to use or include instructions on how to properly identify and patch a game.