Floating IPS is a patcher for IPS and BPS files.
Go to file
2020-06-04 02:14:59 +02:00
.vscode Implement #5 2018-04-02 14:21:40 +02:00
data Flips isn't shell, also losslessly recompress the screenshots 2020-02-24 11:48:22 +01:00
flatpak Replace flatpak define with runtime test, should make reproducible builds work better (except I don't have that configured, but maybe one of my users do.) 2020-04-15 01:41:59 +02:00
libdivsufsort-2.0.1 Include this one. 2016-01-17 18:17:20 +01:00
profile Let's just check in the PGO Firefox binaries, one build step less 2020-01-26 05:21:31 +01:00
.gitattributes Add a fake configure script to point people to make.sh 2020-03-20 13:05:37 +01:00
.gitignore Let's just check in the PGO Firefox binaries, one build step less 2020-01-26 05:21:31 +01:00
appveyor.yml Add AppVeyor file for CI 2019-04-29 01:38:45 +02:00
bps_spec.md Add BPS spec 2020-06-04 02:14:59 +02:00
bps.ico Initial commit - version 1.31 2016-01-17 18:14:53 +01:00
configure Misc cleanups, add performance regression test 2020-03-29 06:40:28 +02:00
COPYING Let's make use of this new config. 2016-05-03 21:04:25 +02:00
COPYING.gpl3 Rename those to something more normal. 2016-05-01 17:43:43 +02:00
crc32.cpp Clean up formatting a bit. 2016-01-19 09:43:19 +01:00
crc32.h Clean up formatting a bit. 2016-01-19 09:43:19 +01:00
divsufsort.c and of course I forgot adding the new files. 2016-01-17 18:16:54 +01:00
divsufsort.h and of course I forgot adding the new files. 2016-01-17 18:16:54 +01:00
flips-cli.cpp Use more mmap, per #10 2018-04-21 11:20:12 +02:00
flips-gtk.cpp Replace flatpak define with runtime test, should make reproducible builds work better (except I don't have that configured, but maybe one of my users do.) 2020-04-15 01:41:59 +02:00
flips-w32.cpp Fix 'Run in emulator' option with mingw-w64 8.1.0 2019-04-28 18:29:14 +02:00
flips.cpp Don't strip by default, allow custom flags in make.sh, fix some win64 warnings 2020-02-08 11:28:01 +01:00
flips.h let's see if this shiny new CI thingy actually catches stuff 2019-04-29 13:39:45 +02:00
flips.ico Initial commit - version 1.31 2016-01-17 18:14:53 +01:00
flips.Manifest Initial commit - version 1.31 2016-01-17 18:14:53 +01:00
flips.rc Deduplicate the version number a bit 2019-04-28 22:51:09 +02:00
global.h Move bps_create_delta_inmem to a .cpp, close #30 2020-03-23 13:14:02 +01:00
ips.ico Initial commit - version 1.31 2016-01-17 18:14:53 +01:00
libbps-suf.cpp Misc cleanups, add performance regression test 2020-03-29 06:40:28 +02:00
libbps.cpp Switch to smaller profiling data - seems to give better results, anyways 2018-12-30 19:15:29 +01:00
libbps.h Move bps_create_delta_inmem to a .cpp, close #30 2020-03-23 13:14:02 +01:00
libips.cpp This warning isn't needed 2018-09-17 04:18:22 +02:00
libips.h Move bps_create_delta_inmem to a .cpp, close #30 2020-03-23 13:14:02 +01:00
libups.cpp Fix #1 2017-01-13 16:36:25 +01:00
libups.h Move bps_create_delta_inmem to a .cpp, close #30 2020-03-23 13:14:02 +01:00
make-maintainer.sh Misc cleanups, add performance regression test 2020-03-29 06:40:28 +02:00
make.sh -fprofile-generate isn't thread safe 2020-04-26 18:13:30 +02:00
Makefile Might as well add a 'use make.sh' notice here too 2020-04-26 17:46:48 +02:00
README.md Various fixes and updates 2019-04-28 22:00:11 +02:00
special.sh Initial commit - version 1.31 2016-01-17 18:14:53 +01:00

Floating IPS (or Flips) is a patcher for IPS and BPS files, aiming for a simple interface yet plenty of power under the hood.

Features:

  • Creates the smallest BPS patches of any known tool in existence, and is faster than any other comparable creator
  • Creates the smallest IPS patches of any known tool in existence, too (but only a little smaller, Lunar IPS is quite good)
  • Fully-featured GUIs under Windows and GTK+, including command line support; can also be a pure command line program
  • Can apply multiple patches to the same ROM, creating a huge pile of ROMs (GUI only)
  • Can remembers which ROMs you've used, and use them again if it thinks it's correct (BPS only, GUI only)
  • Can launch other programs after patching the ROMs; together with the above, this allows you to double click a BPS to launch an emulator (GUI only)

Planned features:

  • Better autodetection for CLI apply/create; if the first one is a patch, apply, else create
  • Better support for ROM database in CLI; the -d flag, or DB enabling from the GUI (for pure-CLI, existence of flipsdb.bin file beside Flips), will store ROMs in the database; the filename "." will read from it, and "wrong ROM" will look for the right one (but not automatically use it)
  • Use path of patch as output filename, not the ROM path
  • Less automatic UI, so it's clearer what's happening
  • Remove emulator chooser, use OS file associations instead
  • Automatic source ROM chooser for creation

Not planned (feel free to fork Flips, I'll list it below; I don't have suitable hardware, so I won't be able to merge most of those):

  • OSX GUI support; Flips/Windows works in Wine, and there are several other OSX patchers. I can't test them, so I can't endorse anything.
  • Qt GUI support; my distro prefers GTK+, and all distros I've seen can run both GTK+ and Qt, not worth the effort (and QString's UTF-16 irritates me)
  • Android/iOS/etc GUI support; I have no interest in phone gaming

Third-party forks, or separate tools, covering usecases this version doesn't (this only acknowledges their existence, and is not an endorsement; I haven't used most of them):

  • Floating IPS; the original Floating IPS, in case you're currently looking at a fork
  • MultiPatch, OSX, applies BPS/IPS/UPS/PPF/Xdelta/bsdiff/Ninja2, creates BPS/IPS/XDelta/bsdiff
  • QtFloatingIPS, Flips port to OSX (may work on others too)
  • Wh0ba Floating IPS, Flips port to iOS/Cydia
  • CPS, JavaScript, applies BPS, creates nothing
  • There are many tools that offer a strict subset of Flips functionality (Lunar IPS, beat, etc). I'm not listing them here.

Compilation - Linux (Debian/Ubuntu):

  • sudo apt-get install g++ build-essential; for GUI support, also sudo apt-get install libgtk-3-dev pkg-config
  • ./make.sh to build an optimized binary; for development, use make CFLAGS=-g (ignore make-maintainer.sh)

Compilation - other Linux:

  • Install make and g++; for GUI support, also install pkg-config and GTK+ 3 headers; for profiling support, also install curl or wget
  • ./make.sh to build an optimized binary; for development, use make CFLAGS=-g (ignore make-maintainer.sh)

Compilation - OSX, other Unix, or anything else with a C++ compiler:

  • Install a C++ compiler
  • clang++ *.c *.cpp -O3 -o flips (with changes as appropriate)
  • For GTK GUI support, use some suitable variant of clang++ *.c *.cpp -O3 -o flips -DFLIPS_GTK -lgtk3
  • For better optimizations (profiling/etc), extract the appropriate commands from Makefile and make.sh

Compilation - Windows:

  • Install mingw-w64
  • mingw32-make CFLAGS=-O3 (GUI is automatically enabled), or extract the appropriate optimization commands from make.sh
  • Alternatively, here's a binary (though it's slightly outdated).

Usage:

  • If GUI is enabled, just run the program. File pickers' window titles tell what they want; Enable automatic ROM picker and Run in Emulator can cause file pickers to appear and disappear depending on the chosen patch, making usage less predictable, so it's disabled by default.
  • For CLI use, see ./flips --help. Available both with or without GUI support (though Windows CLI use from interactive prompts is slightly screwy, due to OS limitations).