This page is for readers who want to see the interesting parts of the game
without wading through 20,000 lines of Z80. Every entry below links into the
full disassembly; each block has a plain-English header comment, so you can
get the idea from the prose even if you skip the instructions.
Gallery — the graphics, straight off the tape
Every image below is rendered by SkoolKit directly from the bytes of the tape
image — nothing has been redrawn. The captions link to the data (and the
routines that draw it) in the disassembly.
The crew
Seven 24×24-pixel portraits (
CrewPortraits), shown in the
bottom-left corner of the room view by
DrawCrewPortrait and on the
crew-roster screen. Shown here at 4× scale, blue-on-white as in the game.
 |
 |
 |
 |
 |
 |
 |
| Dallas |
Kane |
Ripley |
Ash |
Lambert |
Parker |
Brett |
The alien
The 48×63-pixel body that looms over the encounter screen — a 4-frame
animation blitted by
BlitAlienFrame.
Jones the cat
The 5-frame run cycle that sends Jones sprinting across the encounter screen,
XOR-erased and redrawn 4 pixels at a time by
BlitJonesFrame.
The map markers
The two animated markers on the corridor map: the walking crew figure
(
AnimateCrewA, a two-frame walk cycle) and the blinking room cursor
(
AnimateCrewB, four shrinking boxes). All are 24×12-pixel
XOR-blit sprites.
The Nostromo — three decks
The deck backgrounds of the room view, stored as plain 20×19 tile grids
at
ShipMapData.
Upper deck:
Middle deck:
Lower deck:
The air ducts
The Narcissus
The title screen
The tilesets
The complete
CharBitmaps tileset — font, wall pieces, doors, arrows
and sprites, 8 bytes per tile. Every room, corridor and menu in the game is
built from these:
And the separate title-screen tile sheet at
TileBitmaps:
How the game draws things
There is no general-purpose graphics library — just a handful of tricks.
- CharBitmaps — the game's entire font and tile set, 8 bytes per
glyph. Squint at the 1s and 0s of each DEFB row and you can see the pixels.
- RoomNameTable — the cleverest data structure on the tape: a table
of 10-character strings ("Bridge", "Elctrc Prd"...) that the renderer also
treats as sprite strips — the ASCII text is the drawing command
list.
- DrawSprite and DrawSpriteRow — the two blitters that put
everything on screen, one 8×8 tile column at a time.
- DrawIntroScreen — the animated ALIEN title screen.
- ScreenTransition — the top-to-bottom wipe to black between
screens.
- BlitAlienFrame and BlitJonesFrame — the alien-encounter
screen: a 4-frame alien body animation, and Jones the cat sprinting across the
screen with a 5-frame run cycle, erased and redrawn with XOR.
- NarcissusBackground — the shuttle screen is stored
run-length-encoded and expanded at draw time.
- DrawDoorArm — draws a corridor "arm" by literally walking along
the wall data, steered by corner glyphs embedded in the map.
- ShipMapData — the three deck maps of the Nostromo, stored as
plain tile grids you can read by eye.
The alien's brain (and everyone else's)
The game has no random number generator. All "randomness" comes from walking
the ZX Spectrum's ROM and using the bytes found there as a script.
- ResetScriptPtr — where that trick starts: the script pointer is
seeded from the ROM's 50 Hz frame counter, so behaviour is
time-dependent but fully deterministic.
- UpdateAlienAI — the alien's decision loop: attack room-mates,
rip out a duct grille, slip into the ducts, or wander.
- PickNextRoom — how any actor picks its next room from the ship's
corridor and air-duct graphs.
- TriggerAlienEvent — the film's Ash twist, in code: once the alien
has taken enough wounds, a hidden crew member turns hostile.
- UpdateAndroid — what the activated Android actually does each
frame.
- CrewAction5_AlienAttack — the alien's attack tick; it can even
drag a corpse off into the ducts.
- UpdateJones — Jones the cat's wander logic. He avoids the room
the alien is in, and there's a message when the crew spots him.
Gameplay worth reading
- GameEntry — the entry point; the main-loop structure is
documented step by step from here.
- HandleInput — one cursor, one action key: how a whole strategy
game is driven with five keys (or a joystick, via self-modifying code that
patches the scanner CALL).
- CrewHitsAlien — the weapon table in code form: nets disable,
the harpoon gun kills (and takes bystanders with it), extinguishers only
scare, trackers shatter when used as clubs.
- UpdateRoomActors — the ship simulation: self-destruct countdown,
oxygen clock, motion trackers, engine fires.
- LaunchGate — the escape-shuttle launch check (all living crew +
Jones aboard). Also home to the best bug on the tape — see the Bugs page.
- EndgameScreen — how your final "competence rating" is scored.
- PlayMusic — beeper music: one channel, hand-timed loops.
Data tables you can read like a document
- RoomAdjCorridors and RoomAdjDucts — the ship itself:
which rooms connect by door and by air duct. The whole map is ~350 bytes.
- ActorRecords — 8 bytes per character: room, destination,
strength, courage, morale, status. The whole cast's state fits in 64
bytes.
- ItemLocations — one byte per portable item says where it is,
including which hand of which crew member holds it.
- MessageTextTable — every status message in the game, with the
trigger conditions documented alongside.
- CrewNameTable — ALIEN, Dallas, Kane, Ripley, Ash, Lambert,
Parker, Brett.