Mysterious Adventures lamp expiration handling?

Perhaps this belongs in the Scott Adams interpreter discrepancies thread. I’m working on support for the Brian Howarth Mysterious Adventures in Spatterlight, and noticed this post:

I started playing the game using the modern ScottFree interpreter, but the Mysterious Adventures handle lamp expiration in a different way than the Adams games, causing some odd behavior. So I switched to the vintage Commodore 64 version

What exactly are the difference in the handling of lamp expiration? Of course, the only way to find out is to play the games in both interpreters and compare the results, but I was just wondering if anyone had already investigated this.


So many different versions of the Mysterious Adventures… with the earlier ones using Howarth’s own, but similar tech before he tweaked things to fit in with the Scott Adams system.

The BBC micro guys might be the best people to chat to as I think they’ve investigated the Mysterious Adventures pretty thoroughly; with that machine being one of Howarth’s preferred systems.

(That blog entry is pretty old now… I think we’ve learned quite a few things since 2009 about the games… Many of the Mysterious Adventures, for instance, did get US releases.)

1 Like

I’m not sure. But here are some initial findings from the ScottFree source code:

A game consists of a header of 14 values each apparently 16 bit …
[value number 9:] Time light source lasts. This counts down every time item 9 is in game. Brian Howarths games allow -1 for never run down. When it runs out the light item (9) is dumped in room 0 and a look done. Messages vary between interpreters and include things like ‘Your light is flickering and dying’ as well as ‘Light runs out in %d turns’.

I don’t know if there’s more to the Howarth-style timer than just allowing -1 for never-run-down.

1 Like

Thanks! I’m going to assume for now that the Mysterious Adventures are pretty much working as intended in ScottFree, although it shouldn’t be too hard to, say, hack the ZX Spectrum executable to set the light remaining time to a low value and then check if the number of turns before lights out match the ScottFree behavior.

I don’t really know how to hack Spectrum games, but in the BBC Micro version of Golden Baton (Howarth #1), the timer lasts for 200 turns, as in ScottFree. After you light the lamp in the Beeb version, 175 turns later you get the message “Light runs out in %d turns” on each and every subsequent turn till the light runs out — whereas in ScottFree you get “Your light is growing dim” every five turns, when you’ve less than 25 turns’ worth of light remaining.

1 Like

I just tried the same thing here with the ZX Spectrum version of The Golden Baton, with pretty much the same results. If the “light time” value is set to 25, it will say “Light runs out in 24 turns!” the moment you turn the lamp on, and then count down every turn.

By the way, anyone interested in hacking the ZX Spectrum or other 8-bit systems should take a look at Tiny Emulators. I’ve only really used the Spectrum emulator, but it has a lot of features I haven’t seen anywhere else and is very easy to use. Make sure to click the “UI” icon to get the debug menu.

EDIT: To get back on topic, the Howarth light messages are actually already implemented in ScottFree, and can be activated with the -s command line switch.

Note that the ScottFree README says this:

-s	Generate authentic Scott Adams driver light messages rather than
	other driver style ones (Light goes out in %d turns..)

Heh, I found the important difference: In ScottFree, the lit lamp is not removed automatically by default when the light runs out. For that you need the -p switch (PREHISTORIC_LAMP). Otherwise you end up still holding the lit lamp while an empty lamp appears on the floor.

Made a small video of the now hopefully correct lamp behaviour in Spatterlight (and some other random stuff):

1 Like

Are you somehow autodetecting the games that need the PREHISTORIC_LAMP setting?

No, I just assumed that all the Mysterious Adventures need it. And it will only autodetect the C64 and ZX Spectrum versions, not the extracted text-only ScottFree DAT versions of them, though I guess that would be trivial to do with a list of checksums.

1 Like