IPS PATCHER v1.3 (9 August 1993) Amiga version Coding by ARaGoRN/ViSION What?? ~~~~~~ This program will patch a file (most often a console game). It does this by reading a file in IPS or IPS2 format. You can also create an IPS(2) patchfile. When you start the program a window will open with 3 gadgets in it: PATCH GAME FILE ~~~~~~~~~~~~~~~ Use this to patch a game. You are asked to select 2 files. The first file is the game file which is to be patched, the second file is the patcher file. CREATE PATCH FILE ~~~~~~~~~~~~~~~~~ Use this to create a patch file. You are askes to select 3 files: The first file is the original, not patched file, the second file is the patched game file and the third file is the patch file you want to create QUIT ~~~~ Guess what? This quits the program... Note: This program needs the reqtools.library! Make sure it is installed ~~~~~ in your libs: directory. Bugs!? ~~~~~~ If you find one, please report it to me (Aragorn/Vision) at Terminal Zone, +31-73-130138 Credits to the deserving ~~~~~~~~~~~~~~~~~~~~~~~~ IPS format was originaly designed by DAX. He also wrote the first PC version. MCA/Elitendo wrote the first ATARI version. ARaGoRN/ViSION wrote the first Amiga version. The idea for the IPS2 format was by EMPiRE/Mystic, the implementation is done by ARaGoRN/ViSION. Beta-testing of this version is done by EMPiRE/Mystic. Thanx dude!! IPS File format ~~~~~~~~~~~~~~~ "PATCH" ;5 ascii bytes for id purpose. Then, as often as needed: $123456 ;3 binary bytes: 24 bit address calculated from start. $3456 ;2 binary bytes: number of bytes to copy/replace (range 1-FFFF) $AABBCCDDEE... ;these are the replacement bytes ($3456 bytes in total) or $123456 ;address as above $0000 ;size 0 is a special case: Block fill $3456 ;number of repeating bytes (range 1-FFFF) $AA ;This byte is repeated $3456 times (RLE encoding) And at the end of the file: "EOF" ;3 ascii bytes end-of-file. IPS2 File format ~~~~~~~~~~~~~~~~ Upto the "EOF" code it is the same as the original IPS format, but for the IPS2 format it is possible that there are 3 extra bytes AFTER the "EOF" code. These bytes are the size of the destination file. So this way we can shrink files! This extra size should only be included when the original file size is larger than the size of the output file. Because "older" IPS patchers will stop at the "EOF" code (or at least they should) this IPS2 format is fully backwards compatible to the IPS format. History ~~~~~~~ v1.0: -Original release. v1.1: -A little imcompatibilty between the PC and AMIGA version caused the file length of the patched file to be wrong. Somebody changed the patcher specs and the PC version did not write an end marker and the AMIGA version did expect one, so it gave an error and the last couple of bytes of the patch were not copied. Fixed now. (Thanx to Papillon for telling me about this problem) v1.2: -Fixed the filesize problem with patches created with this amiga version. Also changed the *.IPS into #?.IPS v1.21: -Damn, I forgot to take out some debug code that would cause a guru when the patcher is started from wb... Fixed now. v1.3: -Rewrote the complete patch creator code, now it should work. If it doesn't: LET ME KNOW! I can't fix bugs if nobody tells me about them! (Not just: "It doesn't work!", but give me some example where the patcher fucks up) -Added IPS2 format (File shrinking) -Added keyboard control. -============================================================================- ____ ____ ____ __ __ __ ____ ____ ___ _/ . ¬\_/ _¬\_/ ¬\_/ V ¬\_/ ¬\_/ .¬\_/ .¬\_/ /__ \_ | \_ ___/\_ . \_ · \_ \_ | \_ | \_ V ¬\ / | \_V \_ | \ \_ \_ | \_ . \_ · \_ \___| V· V |___/ _ _ V V | V | V V. .. . ..::A_______A______A___A____V_____A____A_|____A_|____A______A::.. . .. ·:::+9¹¹+::·· ·______ ____ ____ ____ · ··::::::::::· \____¬\_/ .¬\_/ .¬\_/ _¬\ zONE wARDEN: / ____/\_ | \_ | \_ ___/\ sNES/gENESiS/gAMEGEAR aRAGORN/viSiON _/ V \_ | \_ | \_V \_ gAMEBOY/sNES-cODiNG ==============.V · V · V | V· V.=================== .. .. ..::A__________A______A_|____A______A::.. .. .. ·::::::::::·· · · · ··::::::::::· -============================================================================-