1991 · Imageworks (Mirrorsoft)

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/speedball-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.

This game is in 2 parts, and the map is of one of them: Intro. The Source tab has the listing of each part that has one.

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 21 wrong, so between 18 and 37 % of the listing’s comments are likely wrong. How listings are checked
Build analysedMirrorsoft's 1991 disk release, speedball_2[mirrorsoft_1991].g64 from the C64 Preservation Project's 10th Anniversary Collection on the Internet Archive (SHA-256 c379e7c1…4dc4)
Copyagent-draft
Toolshost: Linux 6.18 x86_64, cloud container with no display, emulator: VICE, release v3.14.0, v3.14.0-linux-x86_64-gui.zip (vice-mcp), driven through kit/c64/vice.py; check-emulator 57 of 57, disassembler: regenerator2000 0.9.20, built with cargo install --locked, one session for each part, depacking: each file's decryptor and unpackers run in the emulator to the jump into the part; the game's four packed routines unpacked with a Python port of its own unpacker at $498E, python: 3.13.17, node: v22.22.0
Modelclaude-opus-5-5
Kit version0.0.268

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-5Looked the game up online (its manual, reviews or wiki pages) before reading its code.
Annotationclaude-opus-5-5Wrote the listing’s comments. 100 % of the program is described, in 1,092 comments.
Sample 1claude-opus-5-521 of 80 comments wrong, so between 18 and 37 % of the listing is likely wrong. All 21 were then corrected.
Port checkclaude-opus-5-5Checked a page’s port or widget against the game and corrected 4 comments it showed wrong.
the tune player, held to the intro's own player over 6,643 frames; the pickups' sprites and the score panel's frame, rebuilt from the listing's bytes and compared with the game in the emulator, which corrected the comments on the match's sprite blocks and mirror pairs at game $2657, $2A0B, $A1D0 and $A5BB

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
Menu: 1 PLAYER GAME, 2 PLAYER GAME, DEMO; up, down and fire on port 2 (manual: also REPLAY GOALS)live
One player: KNOCKOUT, LEAGUE, CUP, PRACTICElive
Knockout: play ever tougher teams until you lose; through the gym; cannot be savedlive
League: Brutal Deluxe in division 2 of two divisions of 8; 14 weeks a season; first is promoted, second plays off against the second-bottom team of division 1traced: two halves of seven weeks, places 0-7 division 2; top of division 2 and bottom of division 1 change places; the play-off is replayed until one winsgame $715D, $71A1, $721E
League points: 10 for a win, 5 for a draw, 1 for every 10 scored; points difference splits tiestraced: ties go to goals for less goals againstgame $5431, $5558
Cup: four rounds of two legs each; a draw is settled by a decidertraced: 8, 4, 2 and 1 ties; a tie level after two legs is played againgame $703F, $7159
Practice: no oppositiontraced: mode $FF, the other team's energy clearedgame $7452, $2551
League and cup submenu: NEW GAME, TEAM GAME (the computer plays your matches), LOAD GAMElive
Two players: ONE MATCH, BEST OF THREE, BEST OF FIVE; stick 1 blue, stick 2 red; teams swap ends at half timetraced: player one plays team 1, in red, on joystick port 2, and player two on port 1; both squads start at 170 in every attribute with 1100 in the bankgame $6F7B, $22CC, $1D40
Demo: computer against computer; RUN/STOP leaves it (manual: ESC)live
Manager screen: squad of 12 (9 on the pitch, 3 substitutes), each with a portrait, name, position and eight attributes; keys TRA, ESC, SAV, TAB, FIX, GYM, STA, SUB, two cycle arrows, the banklive
Gym: train one player (I), a group (G) or the team (T); the eight attribute buttons, ALL (+10 to every attribute), BUY; prices AGR 5, ATT 10, DEF 10, SPD 15, THR 10, POW 10, STA 15, INT 15live
Bank starts at 1100 credits; buying ALL for the team took it to 320live
Transfer screen: buy star players for a player and a fee (only when players are on the market)traced: 14 stars, three places on offer, the first seven in division 2 and the last seven in division 1game $56A9, $6C11
Fixture screen (NEXT FIXTURE): both teams' points, places and defence, midfield, attack and substitutes ratingslive
League table (DIVISION 1, DIVISION 2) and cup fixtureslive
Statistics (STA): shots at goal, goals scored, goals saved, time in possession, time in opponents' half, successful tackles, substitutions, bonus pointstracedgame $5878, $5EB6
Save and load a league or cup to disk (SAV, LOAD GAME)traced: the file SAVESPEED, $CC00-$CD60game $78BF, $79FF
Substitution (SUB) and changing positionstraced: fire on one squad place and then another swaps themgame $68A0, $6C99
Match: two halves of 90 seconds; ends swap at half time; play restarts with the ball launched from the centrelive
You control the player nearest the ball, marked with an arc; a letter over the ball carrier's head gives his positionlive
Fire: in possession, throw (short press low, long press high); without the ball, jump for a high ball, slide for a low one, tackle a player with the ball; aftertouch steers a thrown balltraced: fire throws; fire still held when the throw ends, three frames later, lobs the ball; the stick then steers itgame $3AA4, $37D2, $3DB1
Goalkeeper: under control when nearest; dives with fire and left or right; stays in his own goal areatracedgame $3AA4, $3A52, $23A6
Tackles decided by the players' attack and defence; the loser loses energy; injured players are stretchered off and replacedtracedgame $3B2C, $3868, $39CF
Scoring: goal 10, star 2, all five stars 10 more, bounce dome 2, injuring a player 10tracedgame $34C7, $1C6E
Score multiplier ramp: +50 % after one throw up it, +100 % after two; the opponents' throws take it backtracedgame $2C61, $34C7
Electrobounce: four units electrify the ball, which tackles the next opponent it hits (ZZAP!64: on the C64 it tackles one opponent and runs out)differs: two units, one on each side wall; the ball knocks down 1 to 3 opponents, more as the multiplier favours the thrower's teamgame $2F18, $1C82
Warp gates: four, which move the ball from one side of the pitch to the otherlive: two on each side wall, at the same rowsgame $33D3
Tokens: freeze team, reverse joystick, reduce team, increase team, manic, slow team, grab ball, transport, goal door, shield, full energy, zap team; most last 6 secondsdiffers: all twelve, each running for 10 seconds; reverse joystick only in a two-player gamegame $30AF, $3195, $2FE8
Coins: 100 credits (200 in a cup match)differs: 100, in a cup 200 in the first two rounds and 400 in the semi-final and final; a most per match by game typegame $7586, $7459
Armour on the pitch: boots, helmet, chestplate, shoulder pads, glove, bottle, armplate, Bitmap shades; each raises one attributediffers: eight pieces, each raising one attribute halfway to 255 until its wearer is tackled; the gym names them BITMAP SHADES, BARGE PADS, CHEST GUARD, SPEED BOOTS, POWER ELBOWS, POWER GLOVES, THUNDA THIGHS and BRAIN BOOSTgame $3106, $315B, $62D5
GOAL screen with the scorer's team, a lap of the players, a result picture (A WIN FOR THE RENEGADES)live
Pause on any other key; F for fast mode in a team gamediffers: only P pauses, until fire; there is no fast mode, and F acts only with the cheat ongame $212E, $2143
Each league team has its own colours (ZZAP!64)differs: four colours, by the low two bits of the team's numbergame $1D34

Beyond the documentation

Found in the code, not in the manual.

Open questions

Each part of the game has its own symbol map and listing: Intro, symbols.json and listing.json; Game, symbols.json and listing.json. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.