Thursday, 28 January 2016

Alien 8 vs Knight Lore

I've done a first-pass through the source and labelled all of the subroutines. The code is in roughly the same order as Knight Lore, which suggests they started with the original source file as a basis. A lot of the lower-level routines are identical and a few have minor enhancements. The game-specific routines have the same structure. There are certainly no surprises.

There's no evidence of any significant enhancements to the engine that I've seen. In particular, the maths for the rendering appear almost - if not actually - identical. There are a couple of routines that have unrolled loops, but that's really the only enhancement to the core that I've seen.

There's no appreciable difference in the size of the code, although Alien 8 has (reportedly, I haven't counted) more rooms but (as evidenced in the source) less sprites. Many magazine reviews at the time praised the "improved graphics" but given the above, that's obviously a ludicrous statement.

I'll spend another few sessions taking a closer look at the code but I think it's safe to say that it would make little difference whether I ported Knight Lore or Alien 8 (first) to the Coco3. Taking a quick look at the Pentagram video on YouTube though, it's interesting to see a new mechanic added to the game play - shooting! I might have to take a look at that as well before I start the Coco3 port...

I'm in two minds atm as to what to do with the Alien 8 disassembly. I don't really see the point in commenting 10,000 lines of Z80 when half of them are the same as Knight Lore. I'll probably mark all the identical routines and comment only the differences.

Ditto for a C port - it would probably make sense to have a 'filmation library' with common code.

It wouldn't take much work to make the Alien 8 code relocatable and do another TRS-80 port. Hopefully there'll be some enhancements that can squeeze a bit more performance out of the TRS-80 hardware, although it is at least playable as-is.

No comments:

Post a Comment