1987 · System 3

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/ik-plus 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 5 wrong, so between 3 and 14 % of the listing’s comments are likely wrong. How listings are checked
Build analysedSystem 3's original disk, as a G64 bit image (C64 Preservation Project, verified dump)
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.22.0
Modelclaude-opus-5-5[1m]
Kit version0.0.119

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.
Sample 1claude-opus-5-5[1m]7 of 80 comments wrong, so between 4 and 17 % of the listing is likely wrong. All 7 were then corrected.
60 hand-written and 20 template comments; 12 others sharing their errors corrected with them
Sample 2claude-opus-5-5[1m]5 of 80 comments wrong, so between 3 and 14 % of the listing is likely wrong. All 5 were then corrected.
60 hand-written and 20 template comments the first sample left out; 3 others sharing their errors corrected with them
Annotationclaude-opus-5-5[1m]Wrote the listing’s comments. 100 % of the program is described, in 1,115 comments.
the unused byte at $E76F between tune patterns $13 and $14 typed and described; the RAM under the I/O area above $D3FF excluded as the emulator's power-on pattern

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
Three karateka fight at once in one arena; the first to six points wins the roundconfirmedround_over ($13CB) ends the round at six dots or when TIME runs out; round_end ($11E3) ranks by dots, then the round's points
The fighter with the fewest points drops outconfirmedonly a human placed last alone drops out; a tie for last drops nobody (round_result, $11AC); the computer fighters always fight on
One player against two computer fighters (F1/F2)liveF1 (the same key as F2) or fire in port 2 ($18D2); the white fighter is the player
Two players, against each other or as a team, against one computer fighter (F3/F4)confirmedF3 or fire in port 1 ($18C2); there is no team setting: each fighter scores alone, and a computer fighter attacks the leader of the other two (choose_target, $29BE)
Eight joystick directions give eight moves, and eight more with fire; the moves mirror with the fighter's facingconfirmedjoy_moves ($1BBB) and its mirror ($1BDB); forward becomes move $14 near an opponent
Moves listed on the wiki: jump up; high punch backward with a turn; punch; walk back or block; walk forward; low punch; shin kick; foot sweep; flying kick; high double kick; head butt; back flip; stomach kick; turning back kick to the face; high face kick; turned foot sweep backwardtracedsixteen move numbers in joy_moves; each move's frames in the script at $1F41; the wiki's names were not matched to move numbers
Holding a direction carries the move through; a quick next direction chains moves without a pauseconfirmedframe flags ($211D): bit 3 holds a frame while the move is still requested, bit 4 lets a new request break in (fighter_anim, $1D06)
Each round is timed (TIME counts down from 30)live$011C, BCD, one off every 50 frames (measured)
A bonus round after every two rounds: deflect bouncing balls with a shield; all of them deflected gives a 5,000-point survival bonusliveround 3 was the bonus round (bonus_round, $F2AB); 100 points a deflection; the 5,000 comes for surviving all 64 balls, whether deflected or dodged
Belt colour by score: white 0, yellow 8,000, green 16,000, purple 25,000, brown 35,000, black 50,000confirmedbelt_scores ($262F), shown under TIME by belt ($263E)
Level counter (LV) on the score lineliveLV 01 at the start; $010C, one up a round
F5/F6 music on and offconfirmed$186C (F5; F6 is the same key)
F7/F8 samples (the digitised shouts) on and offconfirmed$18A1, $FD51; it also silences the bonus round's sound effects
RUN/STOP pauseslivepause ($10BB)
Keys 1 to 5 set the speed; 3 is normallive3 to 7 frames a game step on PAL, 5 for key 3 (step_frames, $15FE, measured)
Cheat: pressing RUN/STOP twice when knocked down stands you up againlivepause clears every fighter's move and does not restore it
Easter egg: E and S together drop the fighters' trouserslivestart_move ($1C40) starts move $20 for a fighter with no move to make, on the first two levels only
Easter egg: * changes the sun's reflectionlivefour colour sets (reflection_colours, $178B)
Easter egg: D, O and M change the water and sky coloursliveeight sets (sky_water_colours, $179B)
The untouched high-score table's names spell a hint: "WHY NOT TRY PRESSING THE ASTERISK KEY OR THE S AND E KEYS TOGETHER AND OTHERS"livethe initials at $BE80, copied to the table by game_init
Background antics: a fish jumps, a spider lets itself down, a bird flies by, the sun glints on the waterlivethe antics module ($71C0-$7CFF); each creature put on screen in work/shots/antics-sheet.png; a fourth, a worm, is in "Beyond the documentation"
Digitised fighting criesconfirmedsix 4-bit shouts at $BF00-$CFFF, played by sample_play ($0934)
Music by Rob Hubbardconfirmeda three-voice tune and its driver at $E000-$ECE1; the program does not name its composer
An attract mode with a demo fight and the TOP 30 SCORES tablelive
Gold Edition for three players with a four-player interfacediffersnot this release: the code reads two joysticks and has two human flags ($45, $46)

Beyond the documentation

Found in the code, not in the sources above.

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.