//***************************************************************************** //* prefix S equals search data, R equals replace data * //* Two bytes per character: * //* 0x00xx means match or replace * //* 0xFFFF means we don't care what the byte is * //* 0xFFFE means end of search string * //* The first byte is the current byte offset to compare within the string * //* The second byte contains the status of the search * //***************************************************************************** #define APPLICATION "Paint Shop Pro" #define VERSION "5.03" #define DATE "5th October 1999" #define TIME "6 Hours" #define PATCH_TOTAL 2 uChar sd1[] = {0x02, \ 0x00, 0x39, 0x00, 0x3d, \ 0x00, 0x50, 0x00, 0xba, \ 0x00, 0x62, 0x00, 0x00, \ 0x00, 0x74, 0x00, 0x12, \ 0x00, 0x33, 0x00, 0xc0, \ 0x00, 0x5f, 0xFF, 0xFE}; uChar rd1[] = {0x02, \ 0x00, 0x39, 0x00, 0x3d, \ 0x00, 0x50, 0x00, 0xba, \ 0x00, 0x62, 0x00, 0x00, \ 0x00, 0x90, 0x00, 0x90, \ 0x00, 0x33, 0x00, 0xc0, \ 0x00, 0x5f, 0xFF, 0xFE}; uChar sd2[] = {0x02, \ 0x00, 0x45, 0x00, 0x76, \ 0x00, 0x61, 0x00, 0x6c, \ 0x00, 0x75, 0x00, 0x61, \ 0x00, 0x74, 0x00, 0x69, \ 0x00, 0x6f, 0x00, 0x6e, 0xFF, 0xFE}; uChar rd2[] = {0x02, \ 0x00, 0x52, 0x00, 0x65, \ 0x00, 0x67, 0x00, 0x69, \ 0x00, 0x73, 0x00, 0x74, \ 0x00, 0x65, 0x00, 0x72, \ 0x00, 0x65, 0x00, 0x64, 0xFF, 0xFE}; //***************************************************************************** //* The list of pointers to the search and replace data * //***************************************************************************** const uChar *Patch1[] = {(uChar *)sd1, (uChar *)rd1, (uChar *)sd2, (uChar *)rd2, 0}; //***************************************************************************** //* A list of files to search and replace data in * //* Note: PatchData is compared in every file (so make unique). * //***************************************************************************** struct _patch_info_ { char *FileName; uChar **pArray; } PatchData[] = { {"psp.exe", Patch1}, {0, 0} };