How difficult is it to recreate the CGA versions?
We have the Keen Dreams CGA source code, right?
Probably not too difficult. The main CGA code is already in this package. The Catacomb 3-D source code had all the CGA code in place, despite being an EGA-only game. There may be a couple of changes necessary to make enemies flash white when they get shot in Keen 5 and 6. I had to add the code responsible for these draw modes to the EGA files, so I would guess that it would need to be added for CGA as well.
Now that's impressive. I think I've seen some very, very old forum threads wondering if, and hoping that, this was possible. This might just mark the beginning of the source modding era proper. Imagine that, twenty years after modding began and we are still making new advances.
I guess having the Keen CGA source code will make it easier to create a 320x200 16 color Tandy version. And Keen 6 in 16 color CGA composite mode.K1n9_Duk3 wrote: ↑Sat Jul 03, 2021 20:47 Honestly, I don't really see the point, except for some obsessive-compulsive desire to recreate every posible version of Keen 4-6 that ever existed. The CGA versions are clearly inferior versions of the games, both in terms of the number of colors and the smoothness of the movement in-game. If you want the CGA look, you could just fake that in EGA, so I'd consider CGA support a low priority.
I didn't think of or know all differences, but obvious examples I recall are the star wars text and the palette fades; Also the less smooth horizontal scrolling. I still don't think it'll be too much work, especially as we already have the CGA drawing routines from the Keen Dreams and Catacomb 3-D sources. My general assumption was that CGA support was originally added to Keen Dreams in order to potentially increase the sales for Softdisk, while the ability to re-use the code in Keen 4-6 was essentially a bonus. I recall reading about the lower sales of the CGA versions of Keen 4-5 proving to Apogee that the CGA market was dead at the time. As things turned out later, the next id-owned title, Wolfenstein 3D, also abandoned the EGA, albeit Apogee still didn't, and a few later games published by Apogee still support the EGA.K1n9_Duk3 wrote: ↑Sat Jul 03, 2021 20:47I just browsed through a Keen 4 CGA v1.4 disassembly earlier today and found that almost all of the actor code is identical for the CGA version, only the HandleRiding routine in CK_KEEN.C differs. And of course there's a lot of code to disable, like the Star Wars text and the Terminator intro. The Keen 5 game over sequence would need to be reprogrammed for CGA, since the current version is low-level EGA code.
Hehe, I know that it was maybe a bit confusing, but I haven't been doing any related work on this; Doesn't mean that others can't, of course!Judging by NY00123's post, a CGA version might already be in the works, so for the moment I'm gonna wait and see what happens.
For small or existing changes, patches can still be used, at least as long as nothing gets broken as a consequence. On the other hand, scripting and source modding should both be significantly more straightforward than creating new patches from scratch. The latter requires analysis of EXE's contents - either as machine mode or as x86 assembly - along with figuring out how to make changes within the original EXE's limits.proYorp wrote: ↑Sun Jul 04, 2021 7:14I wonder about how usable/accessible this will be for the average modder, though. This sounds like it would require actual knowledge and understanding of low-level programming languages (namely C++) to use, which can take years to learn from what I hear. Whereas copy-pasting patches from KeenWiki (possibly with minimal alterations) does not take much skill to accomplish. This is just my at-a-glance impression (correct me if I'm wrong here), but for smaller, less ambitious projects (as far as code modification goes) I'm inclined to think it might be simpler to stick with that. (Certainly patching should still be an option. ) Nevertheless, this is undoubtedly a great achievement.
I think the source code is far more accessible than patching. If you don't know anything about programming in C and you can't even be bothered to learn the basics (which is still much easier than trying to learn machine language for writing new patches), then you probably shouldn't be messing with the code in the first place. As was pointed out, the average user doesn't even (need to) know a thing about patching, they're just copying stuff from the KeenWiki and inserting it into their patch file. If the community wants to, we could have similar Wiki pages for commonly used source code changes.
I don't know exactly how Tandy graphics work, but 16 colors means that it will need 4 bits per pixel (= 2 pixels per byte) instead of the 2 bits per pixel (= 4 pixels per byte) layout that CGA uses. You would probably need to rewrite all of the low-level CGA code to make this work. Using a 160x200 16 color mode would be closer to the CGA layout and probably make things easier to implement.
That's great! I knew that it would probably not take too much time at this point, given the circumstances, but still.K1n9_Duk3 wrote: ↑Tue Jul 06, 2021 22:34 I just got the code to compile new CGA executables that are 100% identical to the original v1.4 CGA releases. Still need to check Keen 6 CGA v1.5 and then set set up a couple of new directories and project files to make it easier to compile CGA versions without interfering with the EGA versions.
Code: Select all
2019-12-19:
- implemented Keen 4-6 version of VW_SetScreen (in _ID_VW_AE.ASM) and my
customized version of the routine (in ID_VW_AE.ASM). swap the files if you
want to use the original code
mortimermcmirestinks wrote: Now I wish MoffD wasn't allergic to me.
Levellass wrote:You're an evil man.