Scott Adams games screen effects

Continuing the discussion from Essential must-play text adventures prior to 1998?:

I’m not sure if this is what you are talking about, but I remember now that there was a discussion at the Spatterlight Github repo about which room changes that should be noticeable in ScottFree:

At first I made the interpreter pause a little on every room switch, but in the end we decided that it was better to not do that.

Now I found this old discussion:
Here people are talking about the screen flickering as something very cool and important.

Perhaps I should just add those pauses back in as an option.


I distinctly remember those effects in a few of the Scott Adams games. They added to the mystery and intrigue where you get a taste of what’s in the next room, but had to solve one or two puzzles to get there. I seem to recall Scott talking about this effect somewhere. I’ve also got a feeling that the delay was dependent on the speed of the computer’s screen update. (This was no doubt discussed in the old discussions you referred to.) If that’s the case, then a pause might be appropriate to overcome the speed of modern computers.


What’s supposed to happen is probably best illustrated with a video, so I’ve made one of the start of Strange Odyssey played on an Apple II running at the computer’s regular speed.

Important things to note:

When you begin a new game, you immediately get a flash of another location. (At 2 seconds)

The sequence with the touchable piece of plastic is built around this flash mechanic. (First touch at 59 seconds). Puzzle spoiler alert for random onlookers: Each time you touch the plastic with the rod in the IN position, you get a glimpse of a location corresponding to the number of times you’ve touched the plastic. So it’s like a teleport destination selector. Working out that it is, and how it operates, is the puzzle.

The Count uses this other locations flash mechanism in similarly important/atmospheric ways.



Here is a preliminary simulation of this in Spatterlight (contains mild spoilers for The Count and Strange Odyssey). The delay is probably a little too long:

As far as I can tell, this effect is a glitch caused by programming tricks, or rather by hacks that work around the limitations of the game engine.

The game engine has a special variable holding a room number, referred to by ScottKit as “backup location”. This is commonly used to dynamically teleport the player back-and-forth between two locations, as illustrated by the hexagonal room in Strange Odyssey. There is no way for the game to set the backup location variable to a particular room directly. Instead you have to temporarily move the player to the room you want to set it to, and issue a swap_room instruction, which will set it to the current location number.

From the ScottFree documentation:

  • swap_room – Swaps the player between the current location and a backup location. The backup location is initially undefined, so the first use of this should be immediately followed by a goto to a known room; the next use will bring the player back where it was first used.

This is exactly what happens in Strange Odyssey: At the very start, the player is temporarily moved to the hexagonal room, the backup location is set, and the player is returned to the starting location. Later, when alien machine is set to teleport the player to a new location (i.e. when the player touches the piece of plastic), the player is again temporarily moved to this new location in order to set the variable, and then moved back.

Things are a little more interesting in The Count: when the player falls asleep, some crucial items will be removed from the game unless they are in a safe place, i.e. in a locked closet. The way the game checks this is by temporarily moving the player to the closet and then running a number of tests to see if any of the relevant items are here, in the current location. If not, they will be moved there, and the message “I’ve a hunch I’ve been robbed!” will be printed at the end.

Doing it this way may seem strange at first. Why not just check if those items are in the closet directly instead? Well, if the closet door isn’t locked, then the player is moved to room 0 (the “out of play room”) instead of the closet, and all the code that checked if the items were in the closet, and moved them there if not, can now be reused. The exact same code will now check if they are in room 0 instead of the closet, and if any of the items are not in room 0 already, the same code will now move them there instead.


Out of curiosity, what does the description look like if it moves the player to room 0?

It definitely does on the TRS-80 version. IIRC, it’s when you get bitten, your life flashes before you in a brief scrolling text effect. It’s cleverly too fast to read and gain any spoilers. I tried :slight_smile:

Here is a video with the effect exaggerated, demonstrating what happens when you go to sleep with the closet door open.

EDIT: As you can see, it fiirst moves the player to the closet, as this always happens unconditionally when the player goes to sleep. Then, when the game has noted that the closet door is open, it moves the player to room 0.

1 Like

My pull request implementing this in ScottFree (using the metacommand #flicker) was accepted into the Gargoyle Github repo, so it will be included in the next release.

1 Like