1987 · Firebird

About this page

This minisite was contributed by JonathanWacks. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/i-ball 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 6 wrong, so between 3 and 15 % of the listing’s comments are likely wrong. How listings are checked
Build analysedone-file whole-memory image, $0314-$FFFF, started by an IRQ hook at $033C (I_Ball.prg, MD5 ab57fa0a25cfa9ab7b411317f9a305ca); from the OneLoad64 games collection v5; original release unknown
Copyagent-draft
Toolsemulator: release v3.13.2, v3.13.2-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20, host: Linux x86_64 (Ubuntu 24.04.5, cloud container)
Modelclaude-opus-5-5
Kit version0.0.242

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 813 comments.
Sample 1claude-opus-5-56 of 80 comments wrong, so between 3 and 15 % of the listing is likely wrong. All 6 were then corrected.
60 hand-written and 20 generated comments, from 647 and 166, checked by a fresh agent against the code; 19 others that shared the wrong ones' beliefs were corrected with them

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:

C64-Wiki names Andrew Betts as the programmer, Wikipedia Timothy Closs; the title page says "COMMODORE VERSION BY ANDREW BETTS". C64-Wiki's version "improved" by REMEMBER (trainer, two extra keys) is not this image: neither of its keys is read (see the last row).

Features

FeatureStatusWhere
Vertically scrolling shoot 'em up, one playerconfirmedscroll_step, draw_playfield
16 levels; a friend rescued after every fourth (Lover Ball, Eddy Ball, Glow Ball, No Ball)confirmedlevel_ptr_lo, rescue_screens; live: level 4's end showed YOU HAVE RESCUED LOVER BALL
50-second time limit per level; running out costs a lifedifferstimer_tick, time_up: the timer starts at 50 and running out kills, but its seconds are 50 logic passes, so with aliens about the limit lasts longer than 50 seconds (live: on a screen with only Iball, 30 timer seconds in 30 real ones; with seven aliens, the logic ran in 695 of 1,350 frames)
Four livesconfirmednew_game sets lives to 3 and the game ends only when a death takes them below 0: four tries
Plain and electrified obstacles on the track; the goal is the home straight at the topconfirmedbounce_iball, hit_wall (characters $06 and up solid, $EE and up kill); the goal is a wall hit at the top of the map
Bonus points for the time left at the end of a levellivelevel_end: 10 a second; live: 25 left gave 250
Extra lives only from bonus disksconfirmedBonus Ball ($647A) is the only increment of lives
Bonus disks always arrive in the same order; losing a life removes the latest extra; disks can be shotconfirmeddisc_order, disc_rollback (a death goes back to a checkpoint and removes the extra given there, not always the latest), alien_shot; live: places 0, 12, 14 and 31 gave Turbo Boost, Faulty Disc, Bonus Ball, Extra Score
Extra: Turbo Boost (faster movement)livevertical speed limit 3 to 4 ($63C6)
Extra: Single Laser (fires sideways, the way Iball faces)confirmedlaser_fire, laser_right, laser_left
Extra: Smart Missile (destroys all aliens, once; Space)confirmedsmart_key, smart_missile; live: fired with SPACE
Extra: Bullet Spray (fires up and down at once)confirmedfire with spray_on
Extra: Molecule Bomb (no new aliens for a while, once; M)confirmedmolecule_key, spawn_step: 255 logic passes
Extra: Electro Shield (immune to electric obstacles for a while)confirmedhit_wall, shield_meters: about 441 logic passes
Extra: Hyperspace (straight to the goal)confirmedscroll_step, draw_playfield with hyper_on
Extra: Twin Laser (fires left and right at once)confirmedlaser_fire with the Single Lazer and twin_laser
Extra: Fuel Injection (faster vertical movement)confirmedvertical speed limit 5 ($6475)
Extra: Hyper Brakes (stronger braking for a while)confirmed$6483, shield_meters: for about 441 logic passes the controls are read every run of irq_top instead of every second, so a push against the motion stops Iball twice as fast (and one with it speeds him up as fast); friction is unchanged
Extra: Laser Cooling Unit (no overheating)confirmedfire skips the heat with cooler_on
Extra: Rainbow Ripple Laser (wide, many-coloured)confirmedripple_fire, ripple_step: a band seven characters wide, from two columns left of Iball to four right, rows in changing colours
Faulty Disk: electrifies every obstacle until a life is lost or the level ends; offered only after Twin Laserconfirmedhit_wall, faulty_disc; it also ends once the map pointer is below $0B00; first in disc_order at place 13, after Twin Laser Set at 9; live: given at place 12
Other disk rewards: bonus time, points, extra livesliveExtended Play (+20), Timer Rewind (+40), Extra Score, Bonus Ball (live: a life)
The laser overheats with continuous firelivefire: overheated after 700 frames of fire, LASER OVERHEATED shown
Aliens are harmless while they flicker in as they formconfirmedalien_touch skips aliens in forming (except discs)
Extras' status shown in the top and bottom screen areaslivepanel_top_colours, panel_bottom_colours: each icon lights when its extra is given
Inertia: Iball drifts and bouncesconfirmedpush_up to push_right, friction, move_iball, bounce_iball
Joystick moves in all directions; fire shootsliveport 2 (read_controls, fire); fire in port 1 did nothing
Keys in play: Z left, X right, O up, K down, P fireliveeach is one of a group of keys (facts.md, Controls)
RUN/STOP pauses and resumeslivecheck_pause; V, N, comma, / and left SHIFT do too
Title screen: 1 music, 2 sound effectslivetitle_irq, music_flag
Title screen: I, O, G play the samples "IBALL!", "OH NO!", "GAME OVER!"differslive: I starts a game, O and G do nothing; X (or its group) says sample 0, Z sample 1, SPACE sample 2 (title_irq)
Title screen: joystick forward and back raise and lower the samples' pitchconfirmedtitle_irq, sample_pitch from $5A to $FA
Rob Hubbard's music, after Cabaret Voltaire's "Whip Blow" and "I Want You"tracedmusic_play and its data; the credit is the sources', not the game's
Three digitised speech samples (credited to Simon Pick)confirmedsay, sample_nmi, three samples at $A000; the contributor heard them say "IBALL!", "OH NO!" and "GAME OVER!" (26 October 2026); the credit is C64-Wiki's
No high-score tableconfirmednothing stores the score past game_over_screen
REMEMBER version only: CLR/HOME abandons the game, Q returns to the last starting point, trainer optionsopennot this image: no test reads CLR/HOME alone; Q is only one of the up keys; searched every $DC00 write in the listing
The game's own list of disc rewards, 17 names in screen codesconfirmedextra_names
Messages: COMPLETED LEVEL, YOU HAVE RESCUED, THAT WAS INCREDIBALL, GAME OVERlivelevel_end, rescue_screens, game_over_text

Beyond the documentation

Found in the code, not in the manual.

Open questions

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.