Skip to content
Memory map
Address color
Code
Game status
Data
Text
Unused
Address
Description
4000
Loading screen
5B00
Ball A state
5B10
Ball B state
5B28
Brick-hit and sweep pointers
5B33
Bounce codes for the frame
5B37
Ball selector
5B38
Ball-B-live flag and the ball's per-axis step flags
5B3C
Unused bytes
5B42
Overlap-test operands
5B44
Unused bytes
5B45
Bat impact side
5B46
Prize flags and the struck brick's index
5B52
Brick-break and sweep positions
5B56
Golden-twinkle timer
5B58
Secondary-object and missile-bat state
5B61
Effect-driver arm flags
5B67
Blast center, death pause and level-clear state
5B6B
Safety net animation state
5B6F
Pending points and combos
5B73
Bat movement inputs
5B7A
Object scratch and step
5B82
Prize and despawn requests
5B88
Ball-capture slide flags
5B8A
Brick hit-type code
5B8B
Step-collision result
5B8D
Wave-script spawn throttle
5B8E
Global freeze and its counter
5B91
Bat freeze and its counter
5B93
Unused bytes
5B94
Spawn parameters
5B97
Unused bytes
5B9B
Bat-movement gate
5B9C
Unused bytes
5C00
Visor and capsule sprite slots at the sprite bank's base
5C78
ROM FRAMES counter, inside the sprite bank
5C7B
Capsule sprite slots
5CE0
Ball sprite slot
5D00
Normal-bat sprite slot
5D20
Expanded-bat sprite slots
5D60
Missile-bat sprite slot
5D80
Missile-shot sprite slots
5DC0
Death-burst sprite slots
5EC0
Spawn-flash sprite slots
5F40
Ball-gem sprite slots
5FC0
Hockey-mask sprite slots
6000
Inhabitant sprite slots
6720
Unused bytes
6754
Per-level brick-field slot layouts
86F8
Per-level spawn-cell table
8888
Per-level wave/spawn scripts
8BA8
Program entry and the main per-frame loop
8D9C
Quit-confirmation handler (per-frame)
8DF9
Poll the quit key (Q)
8E09
Quit confirmation prompt
8E25
Pause control (per-frame)
8E63
Poll the pause key (1)
8E73
Pause banner
8E83
GAME OVER
8E8F
Anti-stuck idle tracker for ball A
8E92
Clear the work buffers
8E9C
Current level and lives in hand
8E9E
Options-screen settings
8EA4
Inertia ramp rate
8EA5
Rally acceleration interval
8EA6
Warp level-skip state
8EA8
Reset the play state for a new game or level
8ED3
Initialize the score and game counters for a new game
8F0A
Re-arm the object pool to serve a ball
8F67
Object pool
8FB9
Game font glyphs
9191
Brick attribute byte per slot code
921A
Brick tile-glyph groups
943E
Shared death/explosion burst animation
9460
Ball-gem animation
948A
Second-ball spawn animation
94B2
Orb chew-and-spit animation
9508
Comet animation
950E
Hive idle animation
9520
Hive spawn-burst animation
9532
Bee animation
9536
Starburst animation
953C
Visor animation
954C
Face-monster animation
9564
Diamond animation
957C
UFO animation
9584
Capsule animation
9594
Dart animation
95A4
H-rotor animation
95BC
Bowling-ball animation
95C8
Warp gate animation
95D0
Wheel animation
95E0
Draw the playfield border
9610
Draw a corner block
9635
Draw or color the mirror side wall on the bat's side
9667
Draw a top/bottom border strip
9695
Copy a run of bytes
969C
Draw the side border wall
96EB
Blank the safety net band
9731
Compose the level's brick field into the tile map
97BD
Side-wall tile pattern
97E1
Top/bottom border strip tiles
9819
Playfield corner tiles
9829
Clear the screen bitmap to zero
9837
Fill the attribute file with the color in A
9844
Print a font string to the screen
987B
Print a font string at double height
98C0
Move a screen address down one pixel line
98E0
Draw one glyph to a display-file cell and color it
98F7
Advance a buffer pointer down one 32-column row
98FE
Step a display-file pointer down one character row
990B
Render the tile map to the screen
995C
Clear the tile map to empty
996B
Clear the dirty counters
997A
Clear the back buffer
9988
Move the player's bat
9AF3
Drag every caught ball up with the bat
9B23
Drag every caught ball down with the bat
9B28
Compute the tile-map probe origin for a ball
9B67
Inertia speed ramp
9BEE
Move the bat with inertia
9C99
Drag the bat's extension up
9CA6
Drag the bat's extension down
9CB3
Per-frame prize/effect object animation manager
9F9D
Remove a ball that has passed the bat's losing edge
9FFF
Handle the loss of a ball
A0A1
Animate the safety net prize's timed barrier (per-frame)
A14F
Per-slot heading codes, one per object-pool slot
A157
Pending inhabitant-deflection headings, one cell per pool slot
A15F
Apply-queued-heading flags, one cell per pool slot
A167
Update the balls for this frame
A299
Test for a collision ahead of the ball
A2D8
Set a ball's velocity from its heading code
A341
Active ball's tile-map probe origin (two bytes, little-endian)
A343
Move the active ball and detect bounces
A4E6
Unused bytes
A4F6
Advance the active ball by its velocity
A594
Ball velocity vectors by heading
A66C
Bounce-axis reference headings for the wall/brick reflection
A674
Corner-bounce lookup for a two-axis hit
A680
Deflect the active ball off a solid pool object it overlaps
A717
Overlap test between two named objects
A75D
Which-ball selector for bounce resolution
A75E
Resolve both balls' bounces for the frame
A777
Resolve a ball bounce
A889
Point IX at an object-pool slot by index
A898
Bat-bounce angles (normal bat)
A8D8
Bat-bounce angles (expanded bat)
A938
Speed the ball up as the rally continues
A954
Hold a ball on the bat, and release it
A99A
Prize-reveal tune gate
A99B
Register a brick hit
AA79
Brick state map
AB1B
Tile-code to durability-class table
AB60
Brick break-animation sequences
AF1E
Pointer to the brick state map entry of the slot the sweep is at
AF20
Scan and process the brick field
B0AE
Advance the 15-step golden-twinkle timer
B0BF
Maybe start the golden brick's idle twinkle
B0DF
Apply the prize on a removed prize glyph
B20D
Detonate the bomb prize: clear the eight slots around the hit slot
B269
Convert a brick's tile-map address to a screen pixel position
B283
Score an ordinary brick, but not a revealed prize glyph
B295
Score a struck brick
B2C9
Lives-indicator icon glyph codes
B2CB
Draw the "LEVEL nnn" status caption
B306
Draw the lives indicator
B351
Draw the score and high-score readouts
B37A
Add the pending score to the displayed score
B396
Add the points to the score and redraw it
B3FD
High-score overtake flag
B3FE
Increment one score digit with carry
B412
Check whether the just-finished score makes the high-score table
B446
Name entry: cursor index along the name-entry strip
B447
Enter a name for the high-score table
B585
Step the name-entry cursor left
B59C
Step the name-entry cursor right
B5B3
Draw the high-score table screen
B5E0
Lose a life
B5ED
Award an extra life
B5FB
Award a bonus life when the score passes a milestone
B609
Busy-wait to slow name-entry key repeat
B612
High-score screen captions
B75A
High-score entry buffer
B770
Level caption
B779
Spare-lives caption
B77B
Saved ten-thousands score digit
B77C
Play the key-press blip
B787
Play one run of shorter and shorter periods
B78F
Play the second-ball spawn sound
B79B
Sound effect: death burst
B7D2
Sound effect: inhabitant spawns
B803
Sound effect: orb chews the ball
B85A
Sound effect: name-entry cursor move
B873
Sound effect: tape-load error
B883
Sound effect: the orb spits the ball
B898
Sound effect: ball-bat bounce
B8A7
Sound effect: brick hit
B8B7
Sound effect: brick destroyed
B8DC
Sound effect: brick survives the hit
B8EC
Sound effect: bomb detonation (one step)
B915
Sound effect: bat grows
B953
Sound effect: bat shrinks
B991
Sound effect: safety net flash
B9B4
Emit one square-wave cycle (the sound primitive)
B9C2
Effect step counters
B9C6
Sprite drawer's saved stack pointer
B9C8
Update and draw all active objects
B9D2
Process every active on-screen object
B9FC
Draw one object's sprite into the back buffer
BA8B
Blit an object's sprite shifted N pixels, over three columns
BB11
Compute an object's back-buffer address from its pixel position
BB38
Recompose flagged cells into the back buffer
BBA4
Blit dirty cells to the display and age their counters
BBE2
Draw the next pseudo-random byte
BC01
Horizontally mirror the object sprite bank in place
BC23
Player control state
BC25
Read the player's controls into the control bitfield
BCAD
Wait until no key is pressed
BCB9
Front end: title screen, input-device menu, and attract cycle
BE03
Draw the KRAKOUT title logo
BE3C
Print the front-end menu text
BEF9
KRAKOUT title-logo glyph bitmaps
C073
Options / start menu
C1D4
Post-load handler for the LOAD LEVELS tape read
C207
Redraw the options screen, then poll Q to quit
C21C
Draw the options screen
C2A3
Busy-wait delay of BC iterations
C2A9
Options-row screen addresses
C2B5
Options-screen lines
C3BD
Options-menu cursor and credits-marquee state
C3C1
Reset the title-screen credits marquee to the start of its message
C3D0
Advance the credits marquee one pixel and report exhaustion
C41E
Load the next credits glyph into the marquee's load column
C443
Credits and greetings scroll
C5C4
Compute an object's spawn position
C61D
Spawn objects from the current level's wave script
C73D
Initialize an object from the spawn tables
C76D
Fill the free inhabitant slots with wheels
C7E8
Steer an object around solid playfield tiles
C872
Saved probe-tile pointer
C874
Test whether a candidate tile blocks movement
C897
Bias a replacement heading for the wheel
C8C2
Pick a new wander heading on a timer
C91C
Steer an object toward a target object
C977
Remove an inhabitant that has left the far playfield edge
C9A2
Test the level tiles in the path of an object in motion for a collision
CA08
Classify one tile-map cell and update the step-collision flags
CA54
Advance an object one step along its heading
CAF0
Per-type initial heading
CB04
Per-type movement speed
CB18
Per-type singleton flag
CB2C
Secondary object's logic record
CB3C
Logic records – the five inhabitants
CB8C
Per-heading test-cell offset table
CBCC
Step-collision probe offsets
CBDC
Advance an object's animation
CBFE
Spawn and death reaction state machine
CC56
Update the objects' behaviors
CCD2
Ball kill, the shared overlap helpers, then the per-type handlers
CD16
Sweep this inhabitant against the pool objects that are not balls
CD6B
Wide overlap test between two named objects
CDB1
Face-monster behavior handler
CDE8
UFO behavior handler
CE27
Diamond behavior handler
CE5F
Bowling-ball behavior handler
CEB3
Hive behavior handler
CFB1
Bee behavior handler
D00C
Capsule behavior handler
D05B
Orb (ball-capturer) behavior handler
D186
H-rotor behavior handler
D1B9
Wheel behavior handler
D20F
Visor behavior handler
D27E
Starburst behavior handler
D398
Hockey-mask behavior handler
D44B
Comet behavior handler
D47C
Warp-gate behavior handler
D4E8
Dart behavior handler
D566
Active tune pointer
D568
Play the next note of the active tune
D5A5
Note period/duration table
D605
Game-over tune
D642
Title tune
D743
Prize-reveal tune
D748
Unused bytes
D800
Bit-reverse lookup table
D900
Tile graphics
E000
Visor sprite source, 3 frames
E060
Capsule sprite source, 4 frames
E0E0
Ball sprite source
E100
Bat sprite source, 4 bitmaps
E180
Missile shot sprite source and its mirror
E1C0
Death burst sprite source, 8 frames
E2C0
Spawn flash sprite source, 4 frames
E340
Ball gem sprite source, 4 frames
E3C0
Hockey mask sprite source, armed and unarmed
E400
Comet sprite source, 3 frames
E460
Hive sprite source, 6 frames
E520
UFO sprite source, 2 frames
E560
Bee sprite source, 2 frames
E5A0
Warp gate sprite source, 2 frames
E5E0
Starburst sprite source, 3 frames
E640
Orb sprite source, 16 bitmaps
E840
Face monster sprite source, 3 frames
E8A0
Bowling ball sprite source, 3 frames
E900
Diamond sprite source, 4 frames
E980
Dart sprite source, 3 frames
E9E0
Wheel sprite source, 4 frames
EA60
H-rotor sprite source, 6 frames
EB20
Back buffer tail
F800
Tile map
FB00
Dirty counters
FE00
Unused bytes
Fork me on GitHub