Page 1 of 3

Ok, want to settle this

Posted: Wed Nov 20, 2013 22:45
by Levellass
Was Keen 6 or Keen 4 coded (Not released, coded) first? Because Keen 6's code is far more primitive than Keen 4s.

As an example look at the stunned sprites; Keen 6 reads stun star positions off a list and it's possible to crash the game if an 'invalid' sprite type is stunned. Keen 4 dispenses with this and has a far more robust system where any unlisted type is given a position of 0,0. (Keen 5 is even more efficient.)


But people keep telling me Keen 6 was coded even after Keen 5 and I'd like to settle this, for the sake of pedantry.

Posted: Thu Nov 21, 2013 2:34
by Keening_Product
I've just asked Tom Hall on Twitter. If he replies I'll report back.

Posted: Thu Nov 21, 2013 6:05
by KeenRush
Or maybe they took an older version of the basic engine when they started Keen 6, a version they had left blank for making future Keens, but they forgot they had improved some of the code during K4 and K5 development, and when everything seemed to work as it should, they just didn't notice it.

Posted: Thu Nov 21, 2013 8:53
by Paramultart
I think KeenRush is right. I'm guessing that John Carmack had little to no involvement with the Keen 6 code, and the game was probably slapped together in a short amount of time, leading to some pretty inefficient rigging.
Perhaps there were originally more memory-exhaustive features that required the engine to be stripped down a bit? Who knows.

Posted: Thu Nov 21, 2013 23:43
by Litude
According to the 20th anniversary look back, the games were finished in the order 4, 6 and 5. There's no doubt regarding the fact that Keen 5 was finished last, but Keen 6 certainly seems to use an older code base than Keen 4 does.

But I don't think Keen 6 as coded first. I think the suggested reason, that they started working on Keen 6 before Keen 4 was finished and therefore used an older code base sounds very plausible. They probably used Keen 4 to test new improvements to the code and as such the code base of that game was pretty well updated. They probably didn't think it was worth the effort to port these improvements to Keen 6 in case something would break (though some of the improvements were implemented in the 1.4 and 1.5 patches).

In version 1.0 of Keen 6 you can find similarities to the pre-release demo of Keen 4 where the debug keys don't need to be activated, pressing a button during the introduction takes you directly to the menu etc.

But Keen 4 certainly began development earlier, e.g. the tileset doesn't allow room for the F10+Y borders (but both Keen 6 and Keen 5 do, suggesting these were made later).

Posted: Fri Nov 22, 2013 4:58
by Levellass
An interesting and convoluted story emerges.

Posted: Wed Dec 04, 2013 14:50
by RoboBlue
Litude wrote:But Keen 4 certainly began development earlier, e.g. the tileset doesn't allow room for the F10+Y borders (but both Keen 6 and Keen 5 do, suggesting these were made later).
Was there ever a patch to fix F10+Y on Keen 4? (It works on Keen 6?)
I know the idea was brought up, but I haven't heard anything about it for years.

Posted: Wed Dec 04, 2013 15:08
by Nospike
Does it work in every version of Keen 6? I don't know about 1.4 but I know for a fact that in 1.0 it gives you garbage, just like Keen 4.

Posted: Thu Dec 05, 2013 1:30
by Levellass
Nospike is correct, working F10-Y is not a feature of Keen 6. There is space for it in the tileset, but these tiles have likely been removed by their memory saving program.

The same is true in Keen 4, but actual graphics have been placed over where they were, this is also not surprising, look at the demo version of Keen 6.


F10-Y as a development tool probably wasn't needed as things wrapped up. its survival in Keen 5 might attest to greater caution in testing or simple luck.

Posted: Thu Feb 12, 2015 20:16
by NY00123
Hey all,

I've considered adding details as follows for a little while, and now as it's February 12 of 2015, it may look like a good chance to do so. (If you're wondering why, it looks like today, 23 years ago, version 1.4 of each of Keen 4-6 was finalized for Apogee and FormGen. A few details are given below.)




=== Part 1 (A few guessed bits about the development progress of the episodes) ===




To begin with, I don't know everything about this, but what I think we do know by now is that Keen 4-6 eventually became a single codebase. There may be some parts which were not in sync, but it's clear that a lot was shared and updated for all episodes. I think that version 1.4 of each episode as prepared for Apogee and FormGen is a good example of us.

Also, it was told that it took 3 months to complete Keen 4, then 2 months to complete Keen 6 and finally 1 month to complete Keen 5 (taken off http://planetromero.com/2005/12/happy-birthday-keen-4-6). However, as it looks like the original release of Keen Dreams was prepared on July of 1991, while Keen 5 became available on December, I think it should be quite obvious that some work was done on more than one episode in parallel. Catacomb 3-D was also made, sharing a lot of code (mostly the ID Engine, but possibly some other code pieces copy-and-pasted from one of the Keens and/or another title). Romero has recently confirmed they further worked on a canned title named "Complete Planetary Domination" during these times, which should answer this: https://github.com/FlatRockSoft/Catacom ... S_2.C#L252




=== Part 2 (PicturePause stuff) ===




It's probably good to clarify about the role of the F10-P debug keys combo. In the Keen Dreams sources, it just leads to a wait for a key press, but it looks like there was a replacement made for Keen 4-6. Taking a hint from the publicly available Catacomb 3-D sources (and also the Wolfenstein 3D sources), a function named PicturePause was written to be called following a press on F10-P. The exact behaviors may depend on the game version, but in general this was made to do some shuffling in video ram and then wait for a key press before quitting. There are chances this was made in order to be able to print an in-game screenshot, and/or send such a screenshot to another program in some way. There may be a few times this reproduces a bit glitchy shot on the screen, but then it's just a debug key combo again.




=== Part 3 (A few diffs between game versions, but not all of them) ===




Alright, it may be a good chance to look at some versions of games. Only EGA released were checked in general, and not all known changes are listed; Most of these can be found in the KeenWiki. What is added here is notes about the F10+P debug keys somewhat differing from what's currently described in the KeenWiki. Comparisons between the versions in what looks like a chronological order is done, with the addition of the related Catacomb 3-D title.

- Keen 4 Special Demo Version 1.0: It was (probably) prepared on October 9 of 1991. This may be the earliest revision of any of Keen 4-6 which was ever released back in the 90s. While it does look like both Keen 6 and Catacomb 3-D were developed in the meanwhile, there are enough signs that Keen 4 wasn't yet ready (like the worldmap music). Pressing a key during the introduction skips the title screen and takes you right into the control panel. The debug keys are always enabled, and F10+P seems to call PicturePause, leading to a playback of the 1-UP sound effect, the video memory shuffling described above, and a wait before exit. Furthermore, there's no "Quiet Adlib/Sound Blaster" option and Paddle War has no speed limit (hence it may be too fast on anything newer than, say, a 386).

- Catacomb 3-D v1.00 (apparently later releases were not prepared by id): Seemingly formed on November 15, the "Quiet Adlib/Sound Blaster" option is missing again (although it's probably less useful in this title). While Cat3D's version of Paddle War (aka Skull 'n' Bones) is fixed, it's a bit slower than Paddle War as known from the various releases of Keen 4-6. Again, debug keys are always enabled, and F10+P leads to PicturePause again. While a few internal details about PicturePause are possibly different, this seems to lead again to the same kind of memory shuffling, although it results in clear graphical glitches. Chances are this code was simply written for Keen 4-6 and merely copied into Catacomb 3-D with some other cheat codes.

- Keen 6 v1.0: Prepared on November 15, this has Paddle War fixed and the "Quiet Adlib/Sound Blaster" option added. Debug keys are permanently enabled again, previous notes about F10+P still apply, and again pressing on a key during the introduction doesn't lead to the title screen.

- Keen 4 v1.0: While all files from the game may have the common timestamp of "December 1 1991 13:00", it looks like this was a part of some policy coming from Apogee (I don't remember the source for that as of typing this). However, an original ZIP archive (e.g., _1GALAXY.ZIP) can be found with an installer file named #1GALAXY.EXE and having the timestamp of "November 22 1991 04:32". Changes from version 1.0 of Keen 6 apply. In addition, debug keys have to be enabled by pressing on A+2+Enter (the /NOWAIT command-line argument can also be used). Furthermore, F10+P simply leads to a wait for a key press. The EXE still seems to have PicturePause, but it's not called at all. Finally, if one presses on a key during the introduction then the title screen is shown.

- Keen 6 Special Demo Version 1.0: Possibly prepared on the same day of Nov 1991 as Keen 4 v1.0 (an installer has the timestamp of "November 22 1991 11:21"), this looks based on the little-bit older codebase for Keen 6 v1.0. At least a few of the changes between Keen 6 v1.0 and Keen 4 v1.0 (if not all) don't apply here.

- Keen 4 v1.1: Again, files may have the timestamp of "December 1 1991 6:00", while another installer file named #1GALAXY.EXE can be found in an archive (1GALAXY.ZIP) with the timestamp of "November 23 1991 20:11". As expected, this release looks very close to Keen 4 v1.0.

- Keen 4 v1.2 and Keen 5 v1.0: While the numbers may differ, it looks like these two actually came from the same revision of the codebase, so v1.0 was probably chosen for Keen 5 since it was the first public release of this episode. The game files from both of these are stamped "December 15 1991", possibly with different times. Among other changes from earlier releases of Keen 4 and 6, it looks like PicturePause waits for a key press here, usually leading to a return to the game. However, if it's the Enter key which is pressed then the usual memory-shuffing-and-quit sequence is executed. In addition, the jumping Keen sound effect is played back before the 1-UP sound in such a case.

- Keen 6 Promotional Release Version 1.0: This one is a bit weird. Prepared on January 17 of 1992, the title screen is shown after pressing a key during the introduction. However, it is the same as the Demo Version in other manners (like the debug keys).

- Keen 4-6 v1.4 as prepared for Apogee and FormGen: The game files from the FormGen releases of Keen 4 and 6 v1.4 share the common timestamp of "February 12 1992 22:34" (I'm not sure there was a separate FormGen release of Keen 5, although it's obvious they at least offered the game, possibly Apogee's title). While the situation is again less clear with Keen 4-5 v1.4 for Apogee, I do think all of these come from the same revision of the codebase and prepared around the same time. Comparing the Apogee and FormGen releases of Keen 4 with EGA graphics, they seem to differ just by the EGA data (including the EGAHEAD and EGADICT chunks embedded in the EXEs).

- Keen 6 v1.5: Was probably prepared on May of 1993 due to Keen 6 v1.4 being a bit of a rushed release for some reason, with a couple of bugs that should be very obvious to anybody who gets to properly finish the game (ok, at least one of these bugs). As for the F10+P cheat, I think the implementation here as built into the EXE (EGA and CGA releases) is a bit buggy. Rather than waiting for a key press in PicturePause, there are *very* high chances the game will effectively freeze in a never-ending loop (unless you're *really* quick with keyboard tapping, and that's a very big "maybe"). Interestingly, the released Catacomb 3-D sources have zero mentions of "volatile" (and also very few mentions of "const"), which may explain this bug (i.e., a query of a variable's value that should change following a key press is replaced with an access to a copy of the original value in a register).

- Keen 4-5 v1.4 as prepared for GoodTimes Software (GT Interactive Software): The latest release known, from July of 1993. No known CGA release is available, and chances are it was not made at all by that time. A couple of bugs are known to be fixed in Keen 5 here. The "Order info" section is removed from the list of sections available by pressing on F1 (in Keen 4 and 5 altogether), but the list itself is there as usual. When one thinks about it, it may seem a bit weird the same was not done for Keen 6. Similarly, it may look a bit weird that the "Read This!" section from Wolfenstein 3D wasn't enabled in Spear of Destiny and later releases of Wolfenstein 3D for DOS, just without the ordering info.

Posted: Thu Feb 12, 2015 20:30
by VikingBoyBilly
NY00123 wrote:and now as it's February 12 of 2014,
No it's not. Check your facts.

Posted: Thu Feb 12, 2015 20:35
by NY00123
VikingBoyBilly wrote:
NY00123 wrote:and now as it's February 12 of 2014,
No it's not. Check your facts.
I've known it's weird that Keen 4-6 are supposedly going to be "just" 23 years old by the end of this year. Thanks for notifying me of the typo!

Posted: Thu Feb 12, 2015 20:35
by szemi
Maybe off-topic, maybe not:

After Keen 6...
The only shame is ID sooo mentioned in Keen 5 "It'll be the biggest Keen ever!" "See you in '92 christmas" (aka Keen 7-9) (when Keen and Mort will fight for the universe).

And the strange thing they planned the Universe is toast, but during Keen 5 they knew Wolf3d will be their next project (not kidding).



But thanks to Ceilick we have the unofficial Keen 7-9, which should be revised quickly, especially Keen 7.

Posted: Thu Feb 12, 2015 21:51
by Calvero
NY00123 wrote:- Keen 4 v1.0: While all files from the game may have the common timestamp of "December 1 1991 13:00", it looks like this was a part of some policy coming from Apogee (I don't remember the source for that as of typing this). However, an original ZIP archive (e.g., _1GALAXY.ZIP) can be found with an installer file named #1GALAXY.EXE and having the timestamp of "November 22 1991 04:32".
The first time I read of that policy was in a post by Litude.

Posted: Thu Feb 12, 2015 21:54
by VikingBoyBilly
One of my pet theories is they might have wanted to use a modified wolf3D engine to build TUIT. Not necessarily as an FPS, but... come to think of it, Mario 64 revolutionized the whole moving 3rd person camera thing, didn't it? Tom Hall said mario 64 is what he imagined TUIT would be like, and I'm thinking a 3rd person camera might have been one of his ideas.