CKPatch extended for other games: Released!

CKPatch is a set of patching tools for all Keen episodes.
NY00123
Posts: 76
Joined: Thu Sep 24, 2009 8:03 am

Post by NY00123 » Thu Oct 24, 2013 9:12 am

After more than 2 years since the last unofficial update, another such (unofficial) update is ready!

The following version of CKPatch (again, unofficial) adds support for (unpacked) Monster Bash executables. Registered game release, version 2.1, is supported, and the same applies to the shareware release (not the lite one).

Use "%ext mb1" (or mb2; or mb3), "%version 2.1" for the registered release and "%version 2.1s" for the shareware release.

Note that you should use UNP v4.11 (DOS version is supported) for unpacking any of the Monster Bash executables.
For CKPatch itself (version 0.11.1, unofficial) and possibly a few more related files check out this web page: http://ny.duke4.net/files.html

levellass
Posts: 2637
Joined: Wed Oct 11, 2006 12:03 pm
Location: Ngaruawahia New Zealand

Post by levellass » Thu Oct 24, 2013 9:47 pm

Well well now, this is a welcome development!

NY00123
Posts: 76
Joined: Thu Sep 24, 2009 8:03 am

Post by NY00123 » Sat Apr 09, 2016 11:58 am

Again after around 2.5 years (since the last release), there is another unofficial update available, being version 0.11.2. As before, it can be downloaded from the following place (hosted by Duke4.net): http://ny.duke4.net/files.html

First of all, A FEW SENTENCES OF WARNING: BACKWARDS COMPATIBILITY MAY BE PARTIALLY BROKEN WITH EXISTING KEEN DREAMS PATCHES. Reason is, if the line "%ver 1.31" is used in any Keen Dreams patch, it should now be "%ver 1.13" instead. As expected, this change has been applied since 1.13 is the actual version number.

It should also be noted that I haven't done much regarding Keen 6 v1.0, although CK6PATCH appears to have at least partial support for this.

And now, on to the list of changes (other than the KDreams %ver 1.13 fix):
- Support for CGA versions of Keen 4-6 is now in. This covers Apogee v1.4 of Keen 4-5 and FormGen v1.4 of Keen 6. Use "%ver cga-1.4" to filter by the corresponding CGA version.
- As a little bonus, Keen Dreams v1.05 (CGA release) is also supported now. "%ver 1.05" is the corresponding version filter. Reason I consider this a "bonus" is that it may be somewhat less useful. Ignoring the general lack of interest in CGA modding, not to talk about CGA KDreams modding, the availability of Keen Dreams sources is expected to make this redundant for very few individuals (if any).
- Note that the level names of the warp-only levels (6,8,11,13) in version 1.05 differ from the ones in 1.13, so bounds on alternative level names' lengths also differ.
- Added a new %wholemaphead directive. It's similar to %maphead, but patches in the whole MAPHEAD.EXT/MTEMP.TMP file, including the tileinfo, in case you have this ready. See e.g., any version of MAPHEAD.KDR from this repository (Keen Dreams sources, "static" subdirectory): https://github.com/keendreams/keen/tree/master/static
- %audiohed and %audiodct definitions have been fixed, so these should actually be usable now.
- Also fixed %egadict definitions in at least one place, as well as level names' lengths and %maphead maximum size for Keen Dreams v1.13.
- Previously, CKPATCH could patch xGAHEAD files to be a little bit larger than the originals. Reason is, these were defined to be segments in the EXEs, so the actual size of each piece of embedded data would be divisible by 16 bytes. For instance, a 630 bytes long file would be stored with additional following 10 bytes. As of this version of CKPATCH, this further applies the audio and map headers (including the tileinfo).

NY00123
Posts: 76
Joined: Thu Sep 24, 2009 8:03 am

Re: CKPatch extended for other games: Released!

Post by NY00123 » Sun Mar 26, 2017 7:57 pm

Think it's time for the first update since K:M has moved to new hands!

This is a bit of a possible less stable update, numbered 0.11.3. It may currently be downloaded from this link: https://www.dropbox.com/s/e2031k72aunk8 ... 0.11.3.zip

It's also (still) possible to get it from this page (again hosted by Duke4.net): http://ny.duke4.net/files.html

Summary of changes:
- Added support for Keen 6 v1.5. This covers the CGA and EGA executables altogether. They don't have to be unpacked.
- When used with Monster Bash, you don't need to unpack the executables any more.

Note that a few changes were required for the above, so again this release may be somewhat less stable:
- In contrast to other LZEXE-packed executables, the Keen 6 v1.5 exes have the "LZ91" signature censored (that is, replaced with NUL bytes). So now, the first 232 bytes of the embedded LZEXE decompressor stub are checked, instead. This is the method used by UNLZEXE 0.8 (compared to 0.7 which checks for the "LZ91" signature).
- The Monster Bash executables were originally packed with PKLITE v1.15, so some work was required to support this. Surprisingly enough (or maybe not so), it wasn't very different from supporting LZEXE-packed exes, since the decompressor is again run from the exe itself. A check similar to the one from UNLZEXE 0.8 is in use.

A few more points on the above:
- You may have spotted that a few txt files (like README.TXT) are marked as modified on July 30th, 2016, even though the recent version number of 0.11.3 is mentioned. This is because I'd already added support for Keen 6 v1.5, after lemm had started his work on support for Keen 6 in Omnispeak (https://github.com/sulix/omnispeak/). Back then, though, only the EGA version was supported, and the EXE had to be unpacked.
- My interest in PKLITE decompression is actually a kind-of recent thing, stemming from some interest to support Keen Dreams v1.00 in Reflection Keen (https://github.com/NY00123/refkeen/commits/). The latter made P4R4D0X lead me to this discussion: https://github.com/afritz1/OpenTESArena/issues/51.
Eventually, after contributors to OpenTESArena successfully got a working decompressor written in C++11, I modified it as required for Keen Dreams v1.00 and ported it to C for Reflection Keen. Furthermore, I asked for a bit more assistance, mainly to get CKPATCH working with PKLITE-packed EXEs. Eventually, though, again it wasn't very different from supporting LZEXE-packed EXEs.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest