1987 · Firebird

Bubble Bobble

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

The twelve tunes, played by the game's own music driver, ported, through the site's model of the SID.

01 · The sound

Twelve tunes, played by the game's own driver

The music is a list of events per voice (a note and a length, or a command), read once a frame by a driver of 1,200 bytes. The player below is that driver, ported, playing through the site's model of the SID.

The driver's writes, frame by frame ($F53C). A tune record ($F922) is the three voices' data addresses and a tempo, the frames in the shortest note. A voice's data is notes 0-$5E with a length index, rests, and commands $80-$9C for loops, pattern calls, transposition, instruments, arpeggios and the filter ($F240). An instrument is 29 bytes ($F2AE): a four-step frequency slide, a pulse sweep, a waveform, an envelope and a release time. The filter runs on one chip's curve; real 6581s differ. The title tune lives at $8B00, where the first game writes its copy of the screen, so the C64 plays it once; here it plays as often as you like.

Six sound effects share voice 1 with the music ($F887): the jump, a bubble, a burst, an item, an extra life and the EXTEND letter. An effect is a frequency slide and a pulse sweep of its own, started when no tune is playing over it, and the round tune resumes on that voice when the effect ends.