1985 · Melbourne House

Way of the Exploding Fist

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

A bull that falls to one move at one range, a blow that crashes the game when a stray timer runs, slips in the scoring, and the questions still open.

01 · The bonus round

Secret: only one blow fells the bull

After a rank is cleared in front of the Buddha, a bull charges across the screen. One of the player's moves, at one distance, fells it.

The bull felled, the fighter in a low punch, the score at 6100

The bull's frames drawn from its own tables (shape frames $3B-$4C, animations $1C-$1F), its sprites shown directly by pointer from memory nobody else uses: past the fighters' buffers at $C940, under the I/O chips and in unused characters of the font. Below: the emulator, after felling the bull at a distance of 26.

bull_round ($132C) fells the bull only when the player is in move 7, the down-forward blow from a crouch, on its striking frame $0D, with the bull between 25 and 29 units ahead ($136C-$1381). That is worth 3,000 points. Any other blow, or the right blow at the wrong distance, does nothing, and the bull runs the player over. If the bull passes without touching the player, the round ends with 500 points ($1406).

The crouch matters: from standing, down-forward is a different move ($18), so the player has to be crouching already when the bull comes into range. In the emulator, holding down and adding forward when the bull was 28 units away felled it at 26.

02 · A trap

Bug: a blow can crash the game if a timer is running

After every scoring blow the game reads a register it never sets, and if that register is not zero it throws its own stack out of balance.

The reaction to a blow ($2CA8) reads the control register of CIA 2's timer A ($DD0E). The game never starts that timer, so on a normal machine the read gives 0 and nothing happens. If it is running, the routine pushes two bytes and jumps into the animator, and the return address is lost. In the emulator, with the timer started by hand before a blow, the screen filled with garbage and the processor ended up executing the speech table at $0201. Why the check is there is not known; a cartridge or tool left running in the background is one thing it would catch.

03 · Bugs

Bug: three slips in the scoring and the opponent

Small mistakes in the code, each read from the routine; none of them stops the game.

04 · Odds and ends

Things the manual never says

05 · Open questions

What is not settled