I tried to compile Keen 4 1.4 and Keen 5 1.4 today, but oddly, I run into an issue that after pressing enter on the ASCII text intro screen, and when the Terminator screen should appear, the game screen stays blank and is effectively hung.
I am running on a 486 DX 80 MHz, with Borland Turbo C++ 3.0 installed from original disk box that I bought on eBay in 2020 (yeah, I did Borland Turbo C++ collecting
).
Got Keen 4 1.4 from
https://keenwiki.shikadi.net/wiki/Keen_4_Versions , Keen5 1.4 I had lying around. Then followed the readme.txt (copied exes into keen4-6\static and ran ripnmake.bat). That gave me this:
https://imgur.com/a/xR2v9S0
Despite the error messages, I think it worked? (maybe the errors related to attempting to process nonexisting KEEN6 files?) I did get various .OBJ files in the directories:
https://imgur.com/a/PLY33g3 (that listing also contains post-build files after the steps below)
I then opened one of the .PRJ files with e.g. "TC RCK4.PRJ" in KEEN4-6 directory, updated the INCLUDE and LIB directories in the build, and compiled.
Everything build correctly and I got a KEEN4-6\KEEN4\OBJ\RCK4.EXE. But unfortunately still a black screen.
In the README I found a notice about non-volatile variable accesses getting optimized out in a spinloop, so I tried declaring the extern LastScan as volatile. Although README states that optimization issue should only have affected Borland Turbo C++ 3.1 and not 3.0.
Tried also compressing it with ..\..\..\LZEXE RCK4.EXE. (although I understand this should not be necessary to successfully run; just to make the binary smaller)
I did also try getting Borland Turbo C++ 2.0 from WinWorldPC (first try was without, just using Turbo C++ 3.0 and setting LIB dir to point there. Ran CLEANUP.BAT in between attempts)
Resulting tree looks like
https://imgur.com/a/DO4rGPR
Though unfortunately no success, just a black screen.
I did see a bug message in Quit() about VW_ClearVideo "bricking the system if screenseg is 0". Added a null check at beginning, but that did not affect the issue (well, there should not be EMS/XMS issues either). The original KEEN4E.EXE in the above directory does run ok.
Any help would be appreciated, I would be curious to play around with some timing code.
Btw, has there been any thought on pushing the Keen source code to GitHub, along with the needed toolchains? Maybe one branch could contain the "this branch builds the byte precise original output", and other branches could then evolve with fixes and ports, etc.