Monday, 1 February 2016

Pentagram on the TRS-80

They say practice makes perfect, and porting filmation games to the TRS-80 is certainly no exception. The third and final installment - Pentagram - is now running, albeit slowly.

Pentagram title screen on the TRS-80

A rather busy screen on the TRS-80

Initially I was a little surprised that the game runs so noticeably slower than the previous two titles, however on reflection there is a fair bit of additional code manipulating the graphics objects that I'm yet to reverse-engineer.

I should also reiterate that the TRS-80 code is still a quick hack and far from optimal.

I also discovered the pause control (SPACEBAR) in all three games, and have updated (my copies of) the disassemblies accordingly. I have also implemented pause in the Pentagram TRS-80 port.

As was the case for Alien 8, I think there's little value in taking this disassembly too much further for the purposes of implementing Knight Lore on the Coco3 or any other platform for that matter. I don't believe the core filmation engine is any more enhanced (or even faster) than that originally coded for Knight Lore. I might check my theory on the shooting, but I'll leave the remainder of the program as an exercise for later (or others).

Preliminary alpha disassembly and TRS-80 binary available.

Next? Another Z80 port to the Australian-made Microbee (Premium) is on the cards. I'm considering then tackling the Amiga and Neo Geo ports (of my C source) - they shouldn't take a huge amount of time, and then I'll get stuck into the Coco3 6809 port of Knight Lore.


  1. Wow, you're a machine. Pretty amazing that you can do what you do *that* fast.
    How different from the Spectrum is the TRS-80 screen layout, and what is your process for getting the output onto that computer?

  2. Once Knight Lore has been optimised for the TRS-80, I'll release the source for that and you'll see how little code is required to get it running on the TRS-80 once you have fully relocatable code and you know what everything is doing!

    FYI the same source file builds both spectrum and trs-80 versions using .ifdef assembler directives.

    In a nutshell, you only need to modify two routines and a few places where it reads the keyboard. The first routine simply copies the off-screen video buffer to spectrum/trs-80 video memory, and the second blits a rectangular area of the same. The rest of the code runs as-is, even writing to the spectrum attribute memory space on the trs-80, where it is duly ignored.