Git Product home page Git Product logo

ips.js's Introduction

ips.js

Create and apply IPS patches, like the kind you'd use for a ROM hack.

Installation

yarn global add ips.js

Usage

Command line

# Creating a patch
ips create clean.rom changed.rom patch.ips

# Applying a patch
ips apply clean.rom patch.ips changed.rom

JavaScript

Note: All files are expected to be Buffer instances.

import { createIpsPatch, applyIpsPatch } from 'ips.js';

// Creating a patch
const patchFile = createIpsPatch(sourceFile, targetFile);

// Applying a patch
const targetFile = applyIpsPatch(sourceFile, patchFile);

Notes

When creating an IPS patch, this tool does a byte-by-byte comparison between the source and target files. Only the bytes that have changed are included in the patch, which can result in slightly larger patches than other tools.

Those tools seem to save bytes in the patch by combining differences that are close together. Such patches "fill in the gaps" between changes with extra unchanged data from the original file for a smaller filesize. This isn't necessarily a good or a bad thing, just a different approach.

The side-effect would be that these smaller-size/larger-changeset patches might do surprising things when multiple patches are applied to the same file. Does this matter? Probably not! Anyway, thanks for reading this.

License

ISC © Keith McKnight

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.