Spellbound (video game)

Spellbound is a video game that was designed and programmed by David Jones with music by Rob Hubbard and released in 1985 for the ZX Spectrum and Amstrad CPC (also with Ed Hickman) home computers. Versions for the Commodore 64 (with Richard Darling) and the Atari 8-bit computers (with Adrian Sheppard) and an enhanced 128K Spectrum version with music and additional graphics were all released in 1986. It is the second game in the Magic Knight series and was published by Mastertronic as part of their Mastertronic Added Dimension label.

Spellbound
Publisher(s)Mastertronic (M.A.D. label)
Designer(s)David Jones
Programmer(s)David Jones
Composer(s)Rob Hubbard
Platform(s)ZX Spectrum, Commodore 64, Amstrad CPC, Atari 8-bit
Release1985, April 1986 (C64)
Genre(s)Graphic adventure
Mode(s)Single-player

Plot

Magic Knight is transported to a castle with a collection of other characters and must rescue his friend Gimbal the wizard. Gimbal has become trapped by a self-inflicted "white-out" spell whilst trying to create a better-tasting rice pudding. Magic Knight must rescue Gimbal from his self-inflicted imprisonment and then ensure both she and the castle's other inhabitants are all returned to their correct time and place.

Gameplay

Unlike the previous game in the series, Finders Keepers, the game is less action-oriented and more of a graphic adventure although it still contains some platform game elements.

The player controls Magic Knight as he wanders around the castle. As well as the player character, the cast also contains various other characters who have found themselves there. Like Magic Knight, these characters move around (albeit off-screen, they are always static when on-screen) and can fall asleep and grow hungry. Magic Knight needs to look after and "maintain" these other characters (as well as himself) and this adds a further strategic element to gameplay.

Magic Knight interacts with his environment and other characters using a drop-down window system called "Windimation", which is full of commands such as "take object" and "talk to character". Because of this, much of the gameplay is quite similar to later graphic adventures such as The Secret of Monkey Island. Most of the game's puzzles are solved by using objects in the correct place or giving objects to the correct character and then having them assist the player. Another method of solving problems is to use Magic Knight's spellcasting abilities. Most of his spells require him to have collected certain objects first.

The castle itself consists of several floors (including a roof garden and a basement) that can be accessed via a lift. Some of these areas are only fully accessible once some puzzles are solved.

Magic Knight only has a certain amount of energy and if he runs out of this he dies and it is game over. His energy is depleted both by moving between rooms and when dangerous objects such as bouncing balls hit him. Finding a way of topping up Magic Knight's energy is one of the first puzzles the player must solve. There are also a few rooms that cause Magic Knight to die just by entering them. These can be passed by solving puzzles.

The game is also played against a time limit: there are only 48 hours of in-game time until Gimbal is destroyed by his spell and Magic Knight and the other characters are trapped in the castle forever.

Sequels

There were further two Magic Knight games released. These are Knight Tyme (1986) and Stormbringer (1987). Both of these games have similar gameplay to Spellbound.

Crime Busters

A game with striking similarities to Spellbound, called Crime Busters, was released in 1986 but featured a detective in a mansion. This game was withdrawn following a demand for a written apology from the author of Crime Busters (Harry S Price) and the threat of legal action by Mastertronic.[1]

Mastertronic claimed that the code was so similar that the anti-hacker protection they had written into Spellbound was largely unchanged. The protection relies on the fact that the Spectrum holds numbers in BASIC programs twice in memory, one (ASCII) copy for displaying on screen and one (binary, tagged as unlistable by a CHR$14 character copy for executing. These are usually the same but by directly amending the appropriate memory address they can be made to differ. This is used by Spellbound as a rudimentary form of protection; after loading the game, the copy for execution jumps to the proper start point, but the copy for display shows a different address pointing to a routine which displays a greeting to the hacker ("HELLO HACKER / FANCY MEETING YOU HERE !") and resets the computer when a key is pressed, thus making the proper start address more difficult to find. This message was changed in Crime Busters to read "NAUGHTY NAUGHTY NAUGHTY,NICE TRY! / !" but the BASIC loader does not have the same protection so there is no way of executing this code without prior knowledge of its existence in Spellbound.

The routine was later amended in the 128K version of Spellbound to show multiple screens of text and to play the game's music in the background; the messages are as follows:

HELLO HACKER. / FANCY MEETING YOU HERE ! / SPELLBOUND 128K COPYRIGHT 1986 / BY DAVID JONES, IF YOU HAVE A PROGRAM THAT YOU / WOULD LIKE TO PUBLISH WHY NOT / SEND IT TO US? / MASTERTRONIC / 8-10 PAUL STREET / LONDON EC2A 4JH, OTHER MAGIC KNIGHT PRODUCTS :- / THE GAMES FINDERS KEEPERS AND / KNIGHT TYME / ALSO AVAILABLE IS THE T-SHIRT / AND COMING SOON THE ADVENTURE / GAME BOOK, PRESS ANY KEY TO SEE WHAT MY / SPECTRUM DOES WHEN I KICK IT

As with Crime Busters, there is no reference to the start point of this routine so prior knowledge of it is required in order to see it.

gollark: ```c#include <stdio.h>#include <signal.h>#include <string.h>#include <stdlib.h>#include <sys/mman.h>#include <unistd.h>static void handler(int sig, siginfo_t *info, void *literally_bee) { printf("oh bee oh apio segfault %08x\n", info->si_addr); int ps = getpagesize(); long ad = (long)info->si_addr; ad = ad - (ad % ps); mmap((void*)ad, 0x10000, PROT_NONE, MAP_ANONYMOUS|MAP_FIXED, -1, 0);}int main() { struct sigaction sa; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_NODEFER; sa.sa_sigaction = handler; sigaction(SIGSEGV, &sa, NULL); *(int*)NULL = -3; printf("thing done\n"); return 0;}```
gollark: Unfortunately, mmap appears to be uncooperative.
gollark: I wanted to implement coral's `idea: trap segfaults and mmap data at the erroring position`.
gollark: 🐝 that, safety = 🐝.
gollark: Well, Windows bad.

References

  1. "Sinclair User No. 57, News". EMAP Business and Computer Publications. December 1986. Archived from the original on 2009-06-07.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.