1987 · Cascade Games

About this page

This minisite was contributed by air. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/ace-2 with me to Gold.

Footprint

Every byte of the C64's 64 KB, one pixel each, 512 to a row. Lit pixels are what this game is: its code, graphics, level data, sound, text, tables and variables, exactly where they sit in memory. Dim areas are screen and working memory; dark is unused.

Status

Tiersilver
Coverage100 % of the bytes the game uses have a description
Comments checkedNot audited. No audit has checked every comment, and the last sample of 80 comments had 12 wrong, so between 9 and 24 % of the listing’s comments are likely wrong. How listings are checked
Build analysedCascade Games UK disk, labelled v1.1L by the C64 Preservation Project
Copyagent-draft
Toolsemulator: release v3.13.2, v3.13.2-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20 (cargo install from crates.io), host: Linux x86_64, Ubuntu 24.04, no display (cloud container), node: 22
Modelclaude-opus-5-5[1m]
Kit version0.0.236

How the listing was checked

Every step that measured the Source tab’s comments or made them more accurate, in the order it happened, with the models that did it. Accuracy of the Source explains each step and what the row above makes of them.

StepByWhat it foundOf the listing
Researchclaude-opus-5-5[1m]Looked the game up online (its manual, reviews or wiki pages) before reading its code.
Annotationclaude-opus-5-5[1m]Wrote the listing’s comments. 100 % of the program is described, in 925 comments.
Sample 1claude-opus-5-5[1m]12 of 80 comments wrong, so between 9 and 24 % of the listing is likely wrong. All 12 were then corrected.
60 hand-written comments (12 wrong) and 20 generated (none wrong); 7 more corrected with them, those that repeated their beliefs

likely wrong the sample’s range corrected right, or likely right not yet measured

Contributors

Other places to love this game

What the game does, and where we found it

Read this before annotating code. What the game is documented to do, with verification status against the binary. Statuses: open (documented, not found yet), traced (in the code, could not be exercised; say what was tried), confirmed (in the code, consistent with the emulator), live (observed directly), differs (the code does something else). "Absent" is not a status.

Sources:

Features

FeatureStatusWhere
One or two players, each flying a different fighter; plane one from a carrier, plane two from an airbasediffersthe two planes fly by the same code with the same numbers ($4252, $5A1C, loadouts at $74E9-$7508); only their hangar pictures ($F2B3, $F3C1), panels and bases differ. Plane one takes off from the west edge of the map, plane two from the east ($2F8E)
One player: the computer flies plane two, at a skill level the options settraced$5A1C clears plane two's stick and keys and calls $5B47, which acts on a throw of 0-21 only when it is below the skill ($090D); side panel COMPUTER LEVEL ($1C44)
Two games: a close-range dogfight (cannon and heat-seekers, both planes already flying, placed close together at random) and the full-scale aerial and ground attack (spy ship, radar station, airbase)traced$090E; take-off $2F8E: in the dogfight 20,000 feet plus up to 1,023, a random heading, within 20 of the other plane when it is flying, loadout 3,000 rounds and 8 heat seekers; in the full-scale game the two ground targets are placed by $308C
A pilot shot down gets a fresh plane; the game ends when one pilot has none leftdiffers$0E1D: a pilot with no planes left sees ALL AIRCRAFT DESTROYED ($6339), or MISSION COMPLETED in the full-scale game, and the game ends only when both pilots are out of planes ($54C0) or a pilot with none presses fire; the full-scale game also needs the other side's ground target destroyed ($64B4)
Options: one or two players, the computer's skill level, the scenario, planes each, crash detection on or off, missile hits to kill an aircraft, save the options to diskliveoptions screen (reference/options.png), $2970, $635D; the record $0903 is written to track 18 sector 2
Colour code security system: the colour of a square of the grid on the inlay; three wrong answers wipe the gamelive$37E1; the game's own copy of the 40 squares asked about is at $FA00. Asked for square DD 5, the game accepted orange (8), the colour in its table
Plane one: joystick in port 1, F more power, S less, X map view, E select weapon, Q flares and chafftracedkey flags $0200-$020D ($366B): F $0205, S $0204, X $0201 ($0DAF), E $020B ($0D7D), Q $0209 ($0D6E)
Plane two: joystick in port 2, H more power, K less, V map view, U select weapon, T flares and chaffdiffersK is more power and H is less ($4252 is passed K, $0207, as more and H, $0206, as less; $21B6 presses them the same way); V $0202 ($1008), U $020C, T $020A
F3 held: quit the game and restart; F5 held: music on or off during the gametraced$11E9: each needs ten passes held; F3 ends the game through $54C0; F5 swaps the music and the sound effects ($4EAD, $E574)
Stick up and down changes the pitch, left and right banks; a steep bank with the stick pulled back turns quickly; in a steep bank the stick has little effect on pitchtraced$29FC: how often the stick changes the pitch depends on the bank ($6F56); the heading turns by $5143 from the bank, the roll and the stick, in the interrupt ($43FC)
Above 75 % power the afterburners light: much more thrust, heavy fuel use; needed above Mach 1.0 (about 760 knots)traced$4252 halves the thrust below throttle $C0 (75 % of 255); $43FC halves the fuel burnt below $C0
Stall speed 140 knots; ceiling 60,000 feettraced$5A1C: below a speed of 140 STALL WARNING and the nose is pushed down; above 58,880 feet CEILING 60000 and the nose is pushed down now and then
The plane is faster and more agile in thin air (high altitude)traced$4252: thrust is multiplied by 126 plus the altitude / 512
Cannon: less than 1 milediffersa hit needs the enemy drawn as a medium or large picture ($D8, $2C86), which is a range below 2.0 on the RANGE read-out ($3F2E), and in the sight ($1769); then a chance of one in four a pass ($181B)
Heat-seeking missile: less than 8 milestraced$23E0: range below 8 and ten passes with the enemy boxed lock it; once fired it needs nothing more
Radar-guided missile: less than 25 miles, guided to the targettraced$23E0: range below 25; the box must stay on the target or the lock breaks (LOCK BROKEN)
Air-to-ground (ship) missile: below 2,000 feet, slower than 500 knots, guideddiffers$23E0: range below 4 and below 2,304 feet; no speed is checked, there or at the launch ($2243)
Arming the aircraft: the pilots choose the weapon load in the full-scale gametraced$5852: up to 9 heat seekers, 7 radar missiles and 2 of the third kind, within a load of 16 ($5949); the computer arms its plane by chance ($109D)
Six flares and six chaff pods; the game picks the one that fits the missile; best at about 1 miletracedsix each at $0BFF and $208E; $2531 drops chaff against a radar missile and flares against a heat seeker; $265B: a flare turns a heat seeker within 2
A hit leaves the controls dead for a few secondstraced$27FB sets the hit timer $0254 (8 for a cannon hit, 25-32 for a missile); while it runs $5A6F takes the stick over and shakes it; it counts down every fourth tick of the 50 a second clock ($43FC): about 0.6 seconds for a cannon hit, 2 to 2.6 for a missile. CONTROL LOST shows only in the spin after a kill ($5A1C)
Return to base: plane one off the west edge of the map below 1,000 feet, plane two off the east edge; repaired, rearmed and refuelledtraced$3D57 holds a plane at its own edge (state 2); $1FAD: below 1,024 feet with the nose near level OK FOR LANDING, landing with the wings level resets the plane ($208E: fuel full, six flares and six chaff, damage cleared)
Surface-to-air missiles defend the ground targetstraced$64CD: the enemy within 6 of the target and below 13,824 feet, a chance of 10 in 256 a pass
The planes can collidetraced$282F: within $1A across and $1E in height
Map view: both planes' positionstraced$13EA: the planes, the missiles and both ground targets, blinking
Scoring: 20 a cannon hit, 50 a missile hit, 200 a plane destroyed, 2,000 a ground targettraced$181B (20), $2531 (50), $282F (200), $250C (2,000); scores are kept in tens ($1C25)
Fuel runs out; "FUEL IS LOW"traced$43FC burns fuel by the throttle; $282F flashes FUEL IS LOW below $30; $594F runs the throttle down with none left
Greatest Aces: the top five scores with names, entered by the pilot, saved to the disktraced$54C0, $5738; $1F30 writes the table to track 18 sector 3
Demo mode: the computer flies both planes between title pageslivereference/demo-mode.png; $0BCA: a one-player dogfight at skill 20
Title music by Rob Hubbardlivedriver $E03F; the tune runs 5,880 steps (5 minutes 14 seconds) before it starts again

Beyond the documentation

Found in the strings and the code, not in the manual.

Open questions

None.

The symbol map for this game is symbols.json; the listing behind the Source tab is listing.json. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.