romm icon indicating copy to clipboard operation
romm copied to clipboard

[Feature] Implement on-the-fly patching for IPS/BPS files

Open zeedif opened this issue 6 months ago • 1 comments

Is your feature request related to a problem? Please describe. RomM is excellent at identifying different types of ROM files, including hacks, translations, and patches, by categorizing them into special folders like patches, hacks, or translations. This is reflected in the RomFileCategory enum, which correctly identifies these files.

However, there is currently no way to apply these patch files (such as .ips or .bps) to a main ROM directly within the application. To play a patched version of a game, the user must:

  1. Use an external patching tool (like Lunar IPS).
  2. Manually apply the patch to a copy of the main ROM.
  3. Place the newly patched ROM back into the library to be scanned.

This process is cumbersome, requires external software, and leads to duplicate entries in the library (the original ROM and the patched ROM).

Describe the solution you'd like I would like to propose a feature that allows applying patch files to a main ROM on-the-fly when launching a game, especially through the integrated EmulatorJS player.

The ideal workflow would be:

  1. When a user clicks "Play" on a game that has one or more associated patch files (e.g., an .ips file in the patches subfolder), RomM's interface should present an option to "Play with patch..." or open a dialog.
  2. This dialog would list the available patches for that game (e.g., MyAwesomeHack.ips, EnglishTranslation.ips).
  3. Upon selecting a patch, the backend would apply it to the main ROM in-memory or to a temporary copy.
  4. This newly patched ROM would then be served to the emulator for the user to play, without permanently altering the original ROM file.

This would make playing ROM hacks and translations a seamless, integrated experience.

Describe alternatives you've considered The only current alternative is the manual patching process described above. This is not ideal because it requires users to manage multiple files and use third-party tools outside of the RomM ecosystem. It also clutters the library with multiple versions of the same game.

Additional context This feature would be incredibly valuable for the retro gaming community, where ROM hacking and fan translations are extremely popular. It would allow users to easily enjoy translated versions of games that were never released in their region or play enhanced versions of classic games without manual file management.

Implementing on-the-fly patching would streamline the user experience significantly and solidify RomM as a premier, all-in-one solution for managing and playing a retro game collection.

Thank you for considering this feature

zeedif avatar Jul 19 '25 22:07 zeedif

This has been asked before but there is this project:

https://github.com/marcrobledo/RomPatcher.js/

Which will let people patch on the fly and the code is available, so if this is ever looked into this could be something used.

danblu3 avatar Jul 20 '25 21:07 danblu3