Skip to content

Releases: skx/lighthouse-of-doom

release-1.6

26 Jul 15:56
@skx skx
Compare
Choose a tag to compare

This release updates the implementation to make it more easily possible to define custom actions against specific objects - doing this improves the codebase and prevents some prior weirdness.

In the past most actions were carried out by "USE", internally. But we implemented synonyms/aliases to allow them to work, and that meant that "READ BOOK" would be the same as "USE BOOK". However a side-effect of that was that "READ TORCH" would also work, which was clearly crazy!

Adding support for real custom actions means that it is now possible to READ BOOK but not possible to READ RUG, for example.

Otherwise this release adds a link to my CP/M emulator, allowing the game to be played on Linux, MacOS, and other Unix flavours. I've also fixed a few minor irritations, shrunk the size of the game a little, and fixed a bug where invisible items could be interacted with - even though that shouldn't have been possible.

What's Changed

Here's a list of pull-requests which were merged:

  • Delete trailing whitespace on input by @skx in #59
  • Work towards having custom actions for objects by @skx in #60
  • Examining invisible items no longer succeeds. by @skx in #62

Full Changelog: release-1.5...release-1.6

release-1.5

03 Apr 03:30
@skx skx
f921ad1
Compare
Choose a tag to compare

This release features a few minor changes, and a small number of buxfixes:

  • The BIOS command which was previously undocumented is now revealed!
    • Two new options have appeared in the menu:
      • Word-Wrap test.
      • Size dump.
  • Dropping an item which was in the same room as you, but not in your inventory is now forbidden.
    • Reported as a bug in #54, fixed in #55.
  • Leading spaces are ignored when processing input.
    • Reported as a bug in #51, fixed in #53.
  • Removed a lot of needless bytes from our text area, saving over 200 bytes in our generated binaries.
    • Reported as a bug in #50, fixed in #52.
  • Turning the torch off in the basement does what it should now.
    • Reported as a bug in #49, fixed in #56.
  • Examining the rug outside the ground-floor lead to an error-message
    • Reported as a bug in #48, fixed in #57.
  • Added some aliases.
    • 112 is now an alias for 999/911, for our European friends.
    • CLEAR is now a public alias for the undocumented CLS command.
    • Q is now an alias for QUIT.
  • Bugfix regarding text-wrapping, now a new game won't reset the word-wrap column to the default.
    • Also I removed some hardcoded linefeeds, to improve the output with regard to wrapping.

release-1.4

01 Apr 09:56
@skx skx
92af95d
Compare
Choose a tag to compare

This release contains only a single change compared to the previous release.

When the game is over (either due to success, death, or the user entering quit) the user is prompted "play again (y/n)?" we now exit cleanly to BASIC or CP/M if the user declines the opportunity to have more fun.

This was reported in #44, and resolved in #45.

release-1.3

01 Apr 05:41
@skx skx
Compare
Choose a tag to compare

This release adds support for word-wrapping, which is used for the display of output messages.

The wrapping is pretty naive, we allow a column to be defined as the wrap-column. Each time we output a string we output a character one at a time, counting the number of characters since the previous newline.

When we display a space, if the current column is wider than the wrap-column, we force a newline and reset our count.

This provides are rough guideline for wrapping, rather than a fixed one, but in practice it works well enough.

You can see the wrap-column via the new wrap command, and change it by entering wrap 40 (for example).

release-1.2

28 Mar 16:34
@skx skx
e0f7076
Compare
Choose a tag to compare

This release features a bugfix that prevented the code from running upon CP/M systems when encryption was enabled.

This issue was reported in #37, and resolved in #39.

A second change was to add support for the encryption code into the ZX Spectrum version of the code - this was reported in #38, and resolved in #40 - with the intention that future issues with our text-scrambling/encryption would be more likely to be spotted.

As of this release the artifacts contain an "x" suffix in their filename if they contain the encrypted/scrambled contents.

release-1.1

11 Aug 19:22
@skx skx
b0a3740
Compare
Choose a tag to compare
  • A couple of minor issues were resolved regarding the torch and trapdoor.
    • Spoilers I guess!
  • Turning the torch off failed, reported in #34
  • It was possible to open/use the trapdoor before discovering it, reported in #33.

release-1.0

09 Aug 15:03
@skx skx
Compare
Choose a tag to compare

This release features a bunch of internal changes to the Z80 codebase, most notably a number of optimizations relating to the use of the ix register.

There were some minor changes to the text, and internal details, but the biggest visible difference is the introduction of "widescreen output". The ZX Spectrum's text-mode is limited to 32 characters in width. Via the use of a custom text-drawing routine, and a tiny font, the game now outputs 64-characters of text per line.

The game feels a little more cramped, but the poor word-wrapping of the previous release is now less significant.

release-0.9

30 Apr 17:39
@skx skx
3ebf963
Compare
Choose a tag to compare

This release features a number of small changes to the game output, but nothing terribly significant.

The biggest difference between this release and the previous is the internal changes, relating to objects. We're now taking advantage of the "state" byte associated with game-objects to handle the use of the trapdoor and torch.

Using a state-byte within the objects simplifies the code logically, and allows the trapdoor to be closed (for example).

You can play the most recent version of the code online here:

release-0.8

27 Apr 04:59
@skx skx
Compare
Choose a tag to compare

This release features a couple of minor tweaks to the game for the ZX Spectrum, to make it more playable:

  • Backspace will delete a character at the input-prompt.
  • The input will be capped at 30 characters, to avoid scrolling issues.
  • Escape continues to discard any text input.
  • Finally the "unrecognized command" message was reworded to avoid word-wrapping issues.

release-0.7

26 Apr 15:47
@skx skx
60fb6ec
Compare
Choose a tag to compare

This release features a brand new port, "Lighthouse of Doom" is now available as a .tap image for the ZX Spectrum 48k!

This was briefly documented upon my blog, here:

In brief the port involved creating a simple "bios" which could be used to abstract the differences between the APIs supported by CP/M and the ZX Spectrum ROM. I wrote routines like "bios_clear_screen" which would either call the ROM, or CP/M as appropriate.

There are no major changes to the CP/M code here, and the C-code was left alone. There were some minor additions such as:

  • The prompt to replay the game upon failure.
    • This required resetting the game-state between runs.
  • More correct handling of termination conditions.
    • If you get killed by too much magic we don't need to see the boat-crash message, for example.

There's a small amount of debugging code present in the game now, accessible via bios.