1985 · Ocean Software

The NeverEnding Story

This minisite awaits a maintainer’s check. Models this site has not proven yet worked on it (gpt-6 and one whose name was not recorded), so its claims have not been tested against the game (how the check works). It is not complete either: 1 of its 4 parts is analysed, and 100 % of that is explained. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to continue games/c64/neverending-story to Silver.

An illustrated adventure controlled with text commands. This page records Part 1 at its first command prompt.

01 · Picture browser

Pictures stored one row at a time

Each location illustration is a rectangle of character cells. A descriptor tells the renderer where to place it and where to find its bytes. The captured Part 1 holds the 21 pictures below.

Decoded from the six-byte records at $0BF9. All 21 records passed a live comparison of the native blitter’s bitmap, screen and colour output. Colors use the game’s multicolor selection and an illustrative C64 palette. Pictures 21–56 need other loaded parts and are not drawn from these bytes.

Reconstructed frame

One screen, two graphics modes

The picture and text share screen memory, but the interrupt changes how the video chip reads it. This frame is drawn from the captured memory and the eight display-register changes during that frame.

All 104,448 pixels matched the emulator’s frame. The orange marker shows the raster line where the interrupt selects text mode.

02 · Inside the game

Ten bytes per cell

The blitter at $05BF reads a row of bitmap bytes, then that row’s screen colors, then its color-RAM values. A whole picture therefore takes width × height × 10 bytes. The sources of pictures 1–20 form a contiguous chain; picture 0 is stored separately.

Within each character rowLength
Bitmap bytes8 × width
Screen color pairswidth
Color-RAM valueswidth
Choosing each pixel color

The picture split at $A7E3 enables multicolor bitmap mode with a black background. Bit pairs 00, 01, 10 and 11 select that background, the screen byte’s high nibble, its low nibble, and the color-RAM nibble. Each pair covers two horizontal pixels.

01 · In play

Atreyu in the Great Forest

Atreyu in a clearing in the Great Forest, with a command prompt beneath the illustration

Captured after booting the Ocean disk and dismissing the opening narrative with Space.

02 · Display

A picture above a custom alphabet

The interrupt switches between a bitmap illustration and character text. The picture phase at $A7E3 selects bitmap memory at $E000. The text phase at $A80A selects the game’s character set at $F800. The video chip reads this font from RAM beneath the KERNAL ROM.

03 · Scope

The first loaded part

The Source tab comes from a fresh Part-1 snapshot and imported annotations. The loader parks code beneath I/O at $DC00, exchanges it with the screen pages and calls it at $CC00. Later parts require their own captures. The retained page at $D000 holds the boot decompressor’s repair pointers and copied tail.