© David Thomas, 2013-2022
17th April 2022
This is a port to C of “The Great Escape”: the classic isometric 3D game for the 48K Sinclair ZX Spectrum in which you execute a daring escape from a wartime prison camp. Very loosely based on the film of the same name, it was created by Denton Designs and published in 1986 by Ocean Software.
Over here I reverse engineered the original game from a binary snapshot of the Spectrum version, decoding the graphics, data tables and all of the logic. Originally written in Z80 assembly language, I have translated it into portable C code where now builds and runs exactly like the original on macOS, Windows and RISC OS but without the need of an emulator.
The portable C sources have allowed builds for the web, using emscripten and even the BBC Micro, via a Raspberry Pi second processor.
http://www.davespace.co.uk/the.great.escape/ (2019)
The port is an exact recreation of the ZX Spectrum version of The Great Escape including the input device selection menu. It builds and runs on macOS, Windows and RISC OS. The macOS version is currently the "best" featuring the menu music and sound effects which the Windows port lacks.
When you start the game hit 0
to start - this will let you define your preferred keys. You could also choose 3
for Sinclair (keys 6/7/8/9/0). The macOS port will let you choose Kempston and use the arrow keys and .
for fire.
There are various other controls which vary by OS. On macOS consult the menus for keyboard shortcuts.
The front-ends attempt to always preserve the game's aspect ratio and snap to whole pixels.
Port | Maintained? | Notes |
---|---|---|
macOS CMake | Yes | My default build; the most likely to be up-to-date. To build use cd <src> && mkdir build && cd build && cmake .. && cmake --build . , or build.sh which does the same. |
macOS native | Probably | To build open up the Xcode project platform/osx/The Great Escape.xcodeproj and build that using ⌘B. Run using ⌘R. |
Windows CMake | Yes | CMake build - like above |
Windows native | Probably | Needs Visual Studio 2013. Trunk build lacks sound and UI niceties (but there are improvements on a branch somewhere...) To build open up the Visual Studio solution platform/windows/TheGreatEscape/TheGreatEscape.sln and build that using F7. Run using F5. |
RISC OS | Yes | Runs on RISC OS 3.1 or later. Sound requires a Risc PC or later with a 16-bit sound system. To build this uses GCCSDK and CMake. If you're nutty enough to want to build the RISC OS version then you might want to talk to me first, or take a look at riscos-ci-build.sh . |
Makefile | Occasionally | This builds a minimal headless (no display) version of the game for testing. It runs the game for 100,000 iterations of the main loop then stops. |
SDL | Perhaps | SDL build. No sound or UI niceties and broken timing. |
Browser, via emscripten | Maybe | Try it here using the arrow keys and . for fire. This uses the SDL build but targets emscripten. The structure of the game is not exactly amenable to the browser world (the RISC OS build has a similar issues). |
Consult the github actions file for exact build commands.
TheGreatEscape
This is the main game reimplemented in a single (static) library.
ZXSpectrum
Defines an interface to a virtual ZX Spectrum to which the game talks, replacing the bare-metal IN
and OUT
instructions and providing a screen to draw to, its border, a keyboard and a speaker. This can convert the Spectrum screen memory to 4bpp or 32bpp pixel formats pretty quickly.
./
include/ - public headers
TheGreatEscape/
ZXSpectrum/
libraries/ - sources
TheGreatEscape/
include/ - private headers
ZXSpectrum/
platform/ - platform-specific source
generic/ - generic Makefile build environment
osx/ - Xcode build environment
riscos/ - RISC OS build environment
windows/ - Windows build environment