CKPatch extended for other games: Released!

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

Re: CKPatch extended for other games: Released!

Post by NY00123 »

Due to Mercurial support being deprecated in Bitbucket, with all existing Mercurial repositories expected to be deleted this June, I've just replaced my Mercurial repository, consisting of differing ckpatch revisions, with a git conversion (using hg-fast-export): https://bitbucket.org/NY00123/ckpatch/

There's no update to ckpatch itself otherwise.

I'll use this chance to write something here (in addition to e.g., the PCKF Discord and/or any other possible forum I don't recall atm).

It might be true that I added support for patching Keen 6 v1.5 (interestingly before missing the release which I called "v0.11.0-20090414", adding such support earlier). However, I still recommend modding Keen 6 v1.4 instead.

Why mod v1.4 over 1.5 anyway?
- As revealed by past inspection of the EXEs, I suspect 1.5 to had been built with somewhat differing compilation settings, probably more optimizations. So it can be more difficult to adapt existing Keen 4-5 v1.4 patches to Keen 6 v1.5, and vice-versa. One example I recall is the game hanging (at least with very great chances) in the PicturePause function after pressing on F10+P. There's a while loop aiming to check for updated keyboard scan code, but apparently the corresponding variable wasn't defined as volatile (in C), so its value is really read just once, before the loop body in the EXE.

Why did I add support for v1.5, then?
- This was originally done for Omnispeak. While I still preferred supporting 1.4 first, it's also true that 1.5 was the last known released build of Keen 6, fixing an important functional bug towards the game's end (and also a visual bug, similarly in the end-of-game sequence).
- I wrote a few patches in order to assist with testing demo compatibility in Omnispeak, basically recording internal in-game data to file. So, of course, I had to write a v1.5-compatible patch: https://github.com/sulix/omnispeak/tree ... ls/kdumper
- Eventually, I did add support for v1.4 in Omnispeak, so both versions should be supported now.
User avatar
Nisaba
Posts: 320
Joined: Fri Jan 01, 2016 11:15 pm
Location: patch.pat
Contact:

Re: CKPatch extended for other games: Released!

Post by Nisaba »

thanks for sharing all these in-depth information. very helpful and enlightening
Post Reply