Snake

- 1989 -

In this well-known game, the player takes control of a worm (or snake) which is constantly moving forward, eating mushrooms. The player can use the arrow keys to turn the worm, but must take care not to run into the surrounding walls, the obstacles, or the worm itself. Once the worm has eaten 5 regular mushrooms, doors open in the walls, through which the player can advance to the next level.

Every time the worm eats something, it grows and goes a little faster. Special items can also increase or decrease the worm speed, give extra lives, and so on. For special items, the increase in speed is proportional to the benefit otherwise gained from the item.

The game features 52 levels, which take at least 40 minutes to complete.

Prerequisites

  • IBM compatible PC, a 80286 processor is recommended
  • Graphics adapter that can display a 40x25 character text mode (e.g. CGA, EGA, VGA). Hercules users can use their CGA emulation.
  • MS-DOS 3.x and up

Technology

  • Turbo Pascal 4.0 (TP4)
  • DOS 3.x
  • CGA Graphics (40x25 character text mode, screenshots)
  • keyboard input only
  • PC speaker (snake-sounds.mp3)

Adjustable worm speed allows playing this game on machines of different speeds, in theory even Pentiums. The legendary CGA graphics card could display 16 different colors at the same time in text mode. A monochrome mode was still available if needed by the physical display.

The game maintains its runtime status in video memory. In other words, there is no abstract representation of the level other than what is stored in video memory. In theory, you could actually cheat by having a TSR program modify the screen while the game runs (e.g. paint some blank areas where there used to be obstacles). In order to read obstacle info or write the current image of the worm, Snake performs a PC equivalent of the famous PEEK and POKE operations known from Commodore home computers.

Screenshots

The following screenshots were adapted to fit modern-day screen dimensions. Since they were originally taken in CGA 40x25 character text mode, their pixel dimensions were 320x400. However, screens had a 4:3 ratio, so a pixel was not square but rectangular. These screenshots were stretched to 533x400 pixels to give you the authentic 4:3 impression on a screen which probably features square pixels. A side effect of the stretching algorithm (Lanczos Filter) is that the number of colors in the resulting GIF image is greatly increased above the original 16. All of this serves to provide the most authentic rendition.

They show a selection of levels from the game.

snake03.gif snake02.gif snake04.gif snake05.gif snake06.gif snake07.gif snake08.gif snake09.gif snake10.gif snake11.gif snake12.gif snake13.gif snake14.gif snake15.gif snake16.gif snake17.gif snake18.gif snake19.gif snake20.gif snake21.gif snake22.gif snake23.gif snake24.gif snake25.gif snake26.gif snake27.gif snake28.gif snake29.gif snake30.gif snake31.gif snake32.gif snake33.gif snake34.gif snake35.gif snake36.gif

The minimalistic game sounds (MP3 format; length: 25 seconds) can easily drive anyone insane who isn't playing the game. The TP4 API under DOS allowed the programmer to direct the internal PC speaker to play a sound at a certain frequency, and to turn the speaker on and off. For example, when the worm eats a regular mushroom, this is accompanied by a 600 Hz beep. Effects like the "Extra Life" sound (second 17 in the MP3) are achieved by turning the speaker off and on at a very high speed, while playing a very short sound fragment in between.

Download

If you own a machine that can run this, feel free to download your personal, free copy of Snake right here:

Note that this is not going to work on most modern machines (2006) because of timing differences. The text files contained in the archive are 8bit-cp437 encoded (DOS code page 437). The game and docs are in German.

ThomasJensen.com vi improved