Actual VM implementation of Another World game, with intro
C++
20
4 commits
updated Sep 28, 2026
A Z80 port of the actual Another World virtual machine, by antirez, operating GPT6 Astra. It runs the game's adapted bytecode and draws its polygons in real time on a vanilla ZX Spectrum 48K. The silent intro goes from the car's arrival through opening the Coke can, then loops forever. Please note that everything fits into the 48k Spectrum RAM: the VM implementation and the intro data, so there is no streaming whatsover from the tape. You load the program in an actual ZX Spectrum 48k and it runs the full demo, in real time, executing the game code in the VM.

Recorded at normal emulated speed, with the opening credits shortened to one second.
Load anotherworld.tap with LOAD "" on a 48K Spectrum or compatible emulator. The title waits ten seconds, or until a key is pressed.
You need make and a C++17 compiler, such as Clang or GCC. On macOS, Apple's Command Line Tools provide both; on Debian/Ubuntu, install build-essential.
make
This builds the bundled assembler and creates anotherworld.tap. make tap does the same; make assembler builds only the assembler; make clean removes generated files. No downloads, Python, original game installation, or external data files are needed.
anotherworld.asm contains the commented Z80 engine, packed intro data, and BASIC loader. Its reading guide explains the memory map, VM, drawing routines and data formats. The data is already converted; this repository rebuilds this particular intro rather than converting other game scenes.
Another World was created by Éric Chahi. Copyright in this port's code is assigned to Éric Chahi, the original author and copyright holder of Another World. The original game's artwork, script and other included game data remain his work.
The Z80 assembler is sjasmplus, by its contributors, based on Sjoerd Mastijn's SjASM. This repository includes the buildable source subset of version 1.24.0, upstream commit bf5e81eb3083bba672bf5cd2ae4f1fb40c95a7d5, without optional Lua support (about 660 KiB). Its BSD license and the zlib notices in individual source files, including the CRC-32C component, are preserved. These third-party sources retain their own copyrights and licenses.
C++
57.1%
Assembly
39.3%
C
2.4%
Makefile
1.1%
Actual VM implementation of Another World game, with intro
C++
20
4 commits
updated Sep 28, 2026
A Z80 port of the actual Another World virtual machine, by antirez, operating GPT6 Astra. It runs the game's adapted bytecode and draws its polygons in real time on a vanilla ZX Spectrum 48K. The silent intro goes from the car's arrival through opening the Coke can, then loops forever. Please note that everything fits into the 48k Spectrum RAM: the VM implementation and the intro data, so there is no streaming whatsover from the tape. You load the program in an actual ZX Spectrum 48k and it runs the full demo, in real time, executing the game code in the VM.

Recorded at normal emulated speed, with the opening credits shortened to one second.
Load anotherworld.tap with LOAD "" on a 48K Spectrum or compatible emulator. The title waits ten seconds, or until a key is pressed.
You need make and a C++17 compiler, such as Clang or GCC. On macOS, Apple's Command Line Tools provide both; on Debian/Ubuntu, install build-essential.
make
This builds the bundled assembler and creates anotherworld.tap. make tap does the same; make assembler builds only the assembler; make clean removes generated files. No downloads, Python, original game installation, or external data files are needed.
anotherworld.asm contains the commented Z80 engine, packed intro data, and BASIC loader. Its reading guide explains the memory map, VM, drawing routines and data formats. The data is already converted; this repository rebuilds this particular intro rather than converting other game scenes.
Another World was created by Éric Chahi. Copyright in this port's code is assigned to Éric Chahi, the original author and copyright holder of Another World. The original game's artwork, script and other included game data remain his work.
The Z80 assembler is sjasmplus, by its contributors, based on Sjoerd Mastijn's SjASM. This repository includes the buildable source subset of version 1.24.0, upstream commit bf5e81eb3083bba672bf5cd2ae4f1fb40c95a7d5, without optional Lua support (about 660 KiB). Its BSD license and the zlib notices in individual source files, including the CRC-32C component, are preserved. These third-party sources retain their own copyrights and licenses.
C++
57.1%
Assembly
39.3%
C
2.4%
Makefile
1.1%