{
 "schema": 1,
 "platform": "c16",
 "game": "tycoon-tex",
 "build": "Gremlin Graphics cassette, Novaload, from the TOSEC raw tape (2016-11-11)",
 "source": "live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    16384,
    32767,
    "RAM a 16 KB C16 does not have"
   ],
   [
    32768,
    65535,
    "the ROMs and I/O"
   ],
   [
    2048,
    4095,
    "screen RAM"
   ],
   [
    0,
    2047,
    "runtime: nothing of the game is loaded below $1000. Zero page, which start clears from $07 and the game uses for its variables; the stack; the KERNAL's vectors at $0314-$0315, which install_irq points at irq; Tex's characters saved at $0400 while he dies (tex_death); the menu's saved characters at $0560 (show_logo_chars); and the leftovers of the Novaload loader in pages 1 to 3"
   ],
   [
    2048,
    4095,
    "runtime: the screen, its colours at $0800 and characters at $0C00. At the hand-over they hold the Novaload loader's screen (TYCOON TEX and NOVALOAD A100000); start clears it through the KERNAL and the menu, the HUD and the play field are drawn by the game"
   ]
  ],
  "extra": [
   [
    15360,
    16383,
    "character set"
   ],
   [
    4096,
    6143,
    "the 256-character set of the skyline and the pipeline, which TED reads from $1000 in irq_skyline and irq_pipe"
   ]
  ],
  "edges": [
   0,
   256,
   512,
   2048,
   3072,
   4096,
   16384,
   32768,
   49152,
   64768,
   65344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 4095,
   "type": "Undefined"
  },
  {
   "start": 4096,
   "end": 6143,
   "type": "Byte"
  },
  {
   "start": 6144,
   "end": 6181,
   "type": "Code"
  },
  {
   "start": 6182,
   "end": 6188,
   "type": "Byte"
  },
  {
   "start": 6189,
   "end": 6271,
   "type": "Code"
  },
  {
   "start": 6272,
   "end": 6276,
   "type": "Byte"
  },
  {
   "start": 6277,
   "end": 6431,
   "type": "Code"
  },
  {
   "start": 6432,
   "end": 6433,
   "type": "Byte"
  },
  {
   "start": 6434,
   "end": 6535,
   "type": "Code"
  },
  {
   "start": 6536,
   "end": 6592,
   "type": "Byte"
  },
  {
   "start": 6593,
   "end": 6732,
   "type": "PETSCII Text"
  },
  {
   "start": 6733,
   "end": 6845,
   "type": "Byte"
  },
  {
   "start": 6846,
   "end": 6859,
   "type": "PETSCII Text"
  },
  {
   "start": 6860,
   "end": 7196,
   "type": "Code"
  },
  {
   "start": 7197,
   "end": 7316,
   "type": "PETSCII Text"
  },
  {
   "start": 7317,
   "end": 7436,
   "type": "Byte"
  },
  {
   "start": 7437,
   "end": 7800,
   "type": "Code"
  },
  {
   "start": 7801,
   "end": 7832,
   "type": "Byte"
  },
  {
   "start": 7833,
   "end": 7979,
   "type": "Code"
  },
  {
   "start": 7980,
   "end": 8171,
   "type": "Byte"
  },
  {
   "start": 8172,
   "end": 8483,
   "type": "Code"
  },
  {
   "start": 8484,
   "end": 8490,
   "type": "Byte"
  },
  {
   "start": 8491,
   "end": 8656,
   "type": "Code"
  },
  {
   "start": 8657,
   "end": 8728,
   "type": "Byte"
  },
  {
   "start": 8729,
   "end": 8873,
   "type": "Code"
  },
  {
   "start": 8874,
   "end": 9165,
   "type": "PETSCII Text"
  },
  {
   "start": 9166,
   "end": 9213,
   "type": "Code"
  },
  {
   "start": 9214,
   "end": 9221,
   "type": "Byte"
  },
  {
   "start": 9222,
   "end": 9670,
   "type": "Code"
  },
  {
   "start": 9671,
   "end": 9720,
   "type": "Byte"
  },
  {
   "start": 9721,
   "end": 9758,
   "type": "Code"
  },
  {
   "start": 9759,
   "end": 9764,
   "type": "Byte"
  },
  {
   "start": 9765,
   "end": 9814,
   "type": "Code"
  },
  {
   "start": 9815,
   "end": 9838,
   "type": "Byte"
  },
  {
   "start": 9839,
   "end": 10068,
   "type": "Code"
  },
  {
   "start": 10069,
   "end": 10075,
   "type": "Byte"
  },
  {
   "start": 10076,
   "end": 10099,
   "type": "PETSCII Text"
  },
  {
   "start": 10100,
   "end": 10366,
   "type": "Code"
  },
  {
   "start": 10367,
   "end": 10371,
   "type": "Byte"
  },
  {
   "start": 10372,
   "end": 10451,
   "type": "PETSCII Text"
  },
  {
   "start": 10452,
   "end": 10650,
   "type": "Code"
  },
  {
   "start": 10651,
   "end": 10706,
   "type": "Byte"
  },
  {
   "start": 10707,
   "end": 10904,
   "type": "Code"
  },
  {
   "start": 10905,
   "end": 10912,
   "type": "Byte"
  },
  {
   "start": 10913,
   "end": 11060,
   "type": "Code"
  },
  {
   "start": 11061,
   "end": 11105,
   "type": "PETSCII Text"
  },
  {
   "start": 11106,
   "end": 11108,
   "type": "Byte"
  },
  {
   "start": 11109,
   "end": 11396,
   "type": "Code"
  },
  {
   "start": 11397,
   "end": 11434,
   "type": "Byte"
  },
  {
   "start": 11435,
   "end": 11571,
   "type": "Code"
  },
  {
   "start": 11572,
   "end": 11619,
   "type": "Byte"
  },
  {
   "start": 11620,
   "end": 11999,
   "type": "Code"
  },
  {
   "start": 12000,
   "end": 12015,
   "type": "Byte"
  },
  {
   "start": 12016,
   "end": 12075,
   "type": "Code"
  },
  {
   "start": 12076,
   "end": 12099,
   "type": "Byte"
  },
  {
   "start": 12100,
   "end": 12243,
   "type": "Code"
  },
  {
   "start": 12244,
   "end": 12249,
   "type": "Byte"
  },
  {
   "start": 12250,
   "end": 12415,
   "type": "Code"
  },
  {
   "start": 12416,
   "end": 12429,
   "type": "Word"
  },
  {
   "start": 12430,
   "end": 12550,
   "type": "Code"
  },
  {
   "start": 12551,
   "end": 12554,
   "type": "Byte"
  },
  {
   "start": 12555,
   "end": 12606,
   "type": "Code"
  },
  {
   "start": 12607,
   "end": 12630,
   "type": "Byte"
  },
  {
   "start": 12631,
   "end": 12787,
   "type": "Code"
  },
  {
   "start": 12788,
   "end": 12803,
   "type": "Word"
  },
  {
   "start": 12804,
   "end": 12862,
   "type": "Code"
  },
  {
   "start": 12863,
   "end": 12868,
   "type": "Byte"
  },
  {
   "start": 12869,
   "end": 13036,
   "type": "Code"
  },
  {
   "start": 13037,
   "end": 13081,
   "type": "Byte"
  },
  {
   "start": 13082,
   "end": 13125,
   "type": "Code"
  },
  {
   "start": 13126,
   "end": 13130,
   "type": "Byte"
  },
  {
   "start": 13131,
   "end": 13208,
   "type": "Code"
  },
  {
   "start": 13209,
   "end": 13298,
   "type": "Byte"
  },
  {
   "start": 13299,
   "end": 13399,
   "type": "Code"
  },
  {
   "start": 13400,
   "end": 13401,
   "type": "Byte"
  },
  {
   "start": 13402,
   "end": 13591,
   "type": "Code"
  },
  {
   "start": 13592,
   "end": 13627,
   "type": "Byte"
  },
  {
   "start": 13628,
   "end": 13679,
   "type": "Code"
  },
  {
   "start": 13680,
   "end": 13743,
   "type": "Byte"
  },
  {
   "start": 13744,
   "end": 13783,
   "type": "Code"
  },
  {
   "start": 13784,
   "end": 13793,
   "type": "Byte"
  },
  {
   "start": 13794,
   "end": 14050,
   "type": "Code"
  },
  {
   "start": 14051,
   "end": 14497,
   "type": "Byte"
  },
  {
   "start": 14498,
   "end": 14686,
   "type": "Code"
  },
  {
   "start": 14687,
   "end": 14728,
   "type": "PETSCII Text"
  },
  {
   "start": 14729,
   "end": 14886,
   "type": "Code"
  },
  {
   "start": 14887,
   "end": 14896,
   "type": "Byte"
  },
  {
   "start": 14897,
   "end": 15123,
   "type": "Code"
  },
  {
   "start": 15124,
   "end": 15133,
   "type": "Byte"
  },
  {
   "start": 15134,
   "end": 15234,
   "type": "Code"
  },
  {
   "start": 15235,
   "end": 16383,
   "type": "Byte"
  },
  {
   "start": 16384,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "zpf_00",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "message_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "skyline_cols_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5,
   "name": "skyline_char",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6,
   "name": "skyline_scroll",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "ctl_left",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "ctl_right",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "ctl_up",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10,
   "name": "ctl_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "ctl_fire",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "ctl_any",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "rnd0",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 14,
   "name": "rnd1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15,
   "name": "rnd2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "rnd3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17,
   "name": "text_cell",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "tex_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "tex_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "tex_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "pipe_scroll",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "message_scroll",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29,
   "name": "skyline_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30,
   "name": "zpa_1E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "char_counter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32,
   "name": "leg_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33,
   "name": "leg_frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34,
   "name": "bullet_flying",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35,
   "name": "jumping",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36,
   "name": "jump_steps",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37,
   "name": "tex_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38,
   "name": "bullet_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "pressure_fine",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "pressure_cells",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42,
   "name": "completed_fine",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43,
   "name": "completed_cells",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44,
   "name": "work_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45,
   "name": "zpa_2D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "piece_index",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47,
   "name": "piece_char",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48,
   "name": "piece_length",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51,
   "name": "row_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "colour_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "refilling",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56,
   "name": "menu_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 57,
   "name": "name_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "arrow_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "jet_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "arrow_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "jet_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "bouncy_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "bouncy_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "bouncy_old_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "jet_bomb_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "explosive_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "explosive_old_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 78,
   "name": "zpa_4E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "explosive_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "explosion_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "explosion_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "glyph_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "glyph_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "glyph_colour_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "break_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "the_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "end_cell",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "last_skyline",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 98,
   "name": "level",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 100,
   "name": "break_parts",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 102,
   "name": "star_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 103,
   "name": "star_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 104,
   "name": "loop_pace",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 105,
   "name": "drain_rate",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 106,
   "name": "message_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 107,
   "name": "irq_band",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 108,
   "name": "skyline_speed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 109,
   "name": "pipe_speed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 110,
   "name": "move_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 111,
   "name": "pressure_gone",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 112,
   "name": "speed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 114,
   "name": "left_blocked",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 115,
   "name": "right_blocked",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 116,
   "name": "half_rate",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 117,
   "name": "skyline_bg",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 118,
   "name": "pipe_bg",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 119,
   "name": "jump_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 120,
   "name": "bullet_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 121,
   "name": "leg_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 122,
   "name": "dying",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 123,
   "name": "tex_hit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 124,
   "name": "sink_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 125,
   "name": "sink_steps",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 126,
   "name": "game_ended",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 127,
   "name": "controls_off",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 128,
   "name": "lives",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 129,
   "name": "hiscore_offset",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 130,
   "name": "hiscore_rank",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 131,
   "name": "name_cursor",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 132,
   "name": "entry_offset",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 133,
   "name": "rank_digit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 134,
   "name": "name_offset",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 135,
   "name": "row_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 136,
   "name": "digit_seen",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 137,
   "name": "count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 138,
   "name": "item_work",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 139,
   "name": "legs_still",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 140,
   "name": "demo_ran",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 141,
   "name": "menu_done",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 142,
   "name": "menu_anim_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 144,
   "name": "logo_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 145,
   "name": "unused_91",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 146,
   "name": "roll3_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 147,
   "name": "piece_pick",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 148,
   "name": "field_colour1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 149,
   "name": "field_colour2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 150,
   "name": "field_bg",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 151,
   "name": "skyline_colour1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 152,
   "name": "skyline_colour2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 153,
   "name": "skyline_cell_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 154,
   "name": "pipe_colour1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 155,
   "name": "pipe_colour2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 156,
   "name": "pipe_cell_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 157,
   "name": "level_done",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 158,
   "name": "arrow_active",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 159,
   "name": "arrow_gone",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 160,
   "name": "arrow_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 161,
   "name": "arrow_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 162,
   "name": "jet_active",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 163,
   "name": "jet_gone",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 164,
   "name": "jet_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 165,
   "name": "jet_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 166,
   "name": "enemy_mask",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 167,
   "name": "arrow_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 168,
   "name": "jet_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 169,
   "name": "bouncy_active",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 170,
   "name": "bouncy_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 171,
   "name": "bouncy_height",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 172,
   "name": "bouncy_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 173,
   "name": "bouncy_gone",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 174,
   "name": "bouncy_steps",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 175,
   "name": "bouncy_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 176,
   "name": "bouncy_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 177,
   "name": "break_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 178,
   "name": "jet_drop_column",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 179,
   "name": "jet_bomb_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 180,
   "name": "jet_bomb_rows",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 181,
   "name": "jet_bomb_falling",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 182,
   "name": "jet_bomb_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 183,
   "name": "jet_bomb_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 184,
   "name": "explosive_active",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 185,
   "name": "explosive_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 186,
   "name": "explosive_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 187,
   "name": "explosive_flight",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 188,
   "name": "explosive_moved",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 189,
   "name": "explosive_gone",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 190,
   "name": "explosive_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 191,
   "name": "explosive_level",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 193,
   "name": "tex_falling",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 194,
   "name": "exploding",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 195,
   "name": "explosion_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 196,
   "name": "explosion_shown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 197,
   "name": "explosion_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 198,
   "name": "ring_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 199,
   "name": "hit_char",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 200,
   "name": "shot_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 201,
   "name": "score_add",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 202,
   "name": "score_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 203,
   "name": "scored",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 204,
   "name": "ring_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 205,
   "name": "glyph_rows",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 206,
   "name": "countdown_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 207,
   "name": "glyph_bits",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "drain_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 210,
   "name": "pressure_loss",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 212,
   "name": "the_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 213,
   "name": "end_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 214,
   "name": "the_rows",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 215,
   "name": "end_rows",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 216,
   "name": "glyph_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 217,
   "name": "paused",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 218,
   "name": "shot_playing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 219,
   "name": "hit_playing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 220,
   "name": "shot_freq_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 221,
   "name": "shot_frames",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 223,
   "name": "saved_mask",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 224,
   "name": "keep_hud",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 225,
   "name": "bouncy_delay_base",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 226,
   "name": "explosive_delay_base",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 227,
   "name": "arrow_delay_base",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 228,
   "name": "jet_delay_base",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 229,
   "name": "spawn_threshold",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 230,
   "name": "quit_pressed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 231,
   "name": "last_ten_thousands",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 232,
   "name": "menu_turns",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 788,
   "name": "a_0314",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1376,
   "name": "f_0560",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2048,
   "name": "f_0800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2098,
   "name": "f_0832",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2168,
   "name": "f_0878",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2410,
   "name": "f_096A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2426,
   "name": "f_097A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2430,
   "name": "f_097E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2450,
   "name": "a_0992",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2465,
   "name": "a_09A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2470,
   "name": "a_09A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2485,
   "name": "a_09B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2490,
   "name": "f_09BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2510,
   "name": "f_09CE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2928,
   "name": "f_0B70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3072,
   "name": "f_0C00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3084,
   "name": "a_0C0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3085,
   "name": "f_0C0D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3111,
   "name": "a_0C27",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3122,
   "name": "f_0C32",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3124,
   "name": "a_0C34",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3125,
   "name": "f_0C35",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3151,
   "name": "a_0C4F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3158,
   "name": "f_0C56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3159,
   "name": "a_0C57",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3173,
   "name": "a_0C65",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3186,
   "name": "f_0C72",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3192,
   "name": "f_0C78",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3193,
   "name": "f_0C79",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3232,
   "name": "f_0CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3233,
   "name": "f_0CA1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3272,
   "name": "f_0CC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3273,
   "name": "f_0CC9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3312,
   "name": "f_0CF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3313,
   "name": "f_0CF1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3352,
   "name": "f_0D18",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3353,
   "name": "f_0D19",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3434,
   "name": "f_0D6A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3437,
   "name": "f_0D6D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3450,
   "name": "f_0D7A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3454,
   "name": "f_0D7E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3474,
   "name": "a_0D92",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3476,
   "name": "f_0D94",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3477,
   "name": "f_0D95",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3489,
   "name": "a_0DA1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3494,
   "name": "a_0DA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3496,
   "name": "f_0DA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3506,
   "name": "f_0DB2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3509,
   "name": "a_0DB5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3514,
   "name": "f_0DBA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3522,
   "name": "f_0DC2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3534,
   "name": "f_0DCE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3562,
   "name": "a_0DEA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3582,
   "name": "a_0DFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3602,
   "name": "f_0E12",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3614,
   "name": "f_0E1E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3629,
   "name": "a_0E2D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3642,
   "name": "a_0E3A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3654,
   "name": "a_0E46",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3662,
   "name": "a_0E4E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3669,
   "name": "a_0E55",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3671,
   "name": "f_0E57",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3677,
   "name": "f_0E5D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3682,
   "name": "f_0E62",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3694,
   "name": "f_0E6E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3709,
   "name": "a_0E7D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3762,
   "name": "f_0EB2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3770,
   "name": "a_0EBA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3771,
   "name": "a_0EBB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3952,
   "name": "f_0F70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3953,
   "name": "f_0F71",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3991,
   "name": "a_0F97",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3992,
   "name": "f_0F98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3993,
   "name": "f_0F99",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4031,
   "name": "a_0FBF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4032,
   "name": "f_0FC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4033,
   "name": "f_0FC1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4071,
   "name": "a_0FE7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4096,
   "name": "skyline_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4416,
   "name": "skyline_piece_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4736,
   "name": "skyline_piece_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5056,
   "name": "skyline_piece_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5376,
   "name": "skyline_piece_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5696,
   "name": "pipe_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6144,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6166,
   "name": "b_1816",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6182,
   "name": "scene",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6183,
   "name": "lives_setting",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6184,
   "name": "sound_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6185,
   "name": "menu_item",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6186,
   "name": "joystick_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6187,
   "name": "difficulty",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6188,
   "name": "demo_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6189,
   "name": "read_controls",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6197,
   "name": "b_1835",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6205,
   "name": "b_183D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6243,
   "name": "b_1863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6249,
   "name": "b_1869",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6264,
   "name": "controls_fire_shift",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6272,
   "name": "raster_lines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6277,
   "name": "install_irq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6285,
   "name": "b_188D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6313,
   "name": "irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6328,
   "name": "b_18B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6337,
   "name": "b_18C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6344,
   "name": "b_18C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6351,
   "name": "b_18CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6358,
   "name": "b_18D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6365,
   "name": "b_18DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6379,
   "name": "seed_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6389,
   "name": "b_18F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6398,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6421,
   "name": "b_1915",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6432,
   "name": "unused_ldx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6434,
   "name": "delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6436,
   "name": "b_1924",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6446,
   "name": "clear_play_area",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6463,
   "name": "b_193F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6465,
   "name": "b_1941",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6500,
   "name": "clear_zero_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6504,
   "name": "b_1968",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6510,
   "name": "refill_pipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6520,
   "name": "b_1978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6536,
   "name": "tex_layout",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6551,
   "name": "tex_lying_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6566,
   "name": "skyline_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6571,
   "name": "skyline_piece_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6579,
   "name": "leg_frame_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6583,
   "name": "leg_frame_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6587,
   "name": "scene_shape_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6590,
   "name": "unused_scene_bytes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6593,
   "name": "bad_news_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6732,
   "name": "f_1A4C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6733,
   "name": "hiscore_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6747,
   "name": "hiscore_entry_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6845,
   "name": "hiscore_spill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6846,
   "name": "phone_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6860,
   "name": "irq_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6936,
   "name": "b_1B18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6942,
   "name": "j_1B1E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6945,
   "name": "irq_skyline",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6947,
   "name": "b_1B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6988,
   "name": "irq_field",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6995,
   "name": "b_1B53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7039,
   "name": "irq_pipe",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7051,
   "name": "b_1B8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7085,
   "name": "irq_scroller",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7087,
   "name": "b_1BAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7119,
   "name": "b_1BCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7122,
   "name": "draw_hud",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7124,
   "name": "b_1BD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7142,
   "name": "b_1BE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7150,
   "name": "b_1BEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7160,
   "name": "b_1BF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7187,
   "name": "b_1C13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7197,
   "name": "hud_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7317,
   "name": "hud_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7437,
   "name": "scroll_skyline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7442,
   "name": "b_1D12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7457,
   "name": "b_1D21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7473,
   "name": "shift_skyline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7475,
   "name": "b_1D33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7514,
   "name": "scroll_pipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7519,
   "name": "b_1D5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7535,
   "name": "shift_pipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7537,
   "name": "b_1D71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7558,
   "name": "feed_skyline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7565,
   "name": "b_1D8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7575,
   "name": "b_1D97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7588,
   "name": "next_skyline_piece",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7619,
   "name": "move_tex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7624,
   "name": "b_1DC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7631,
   "name": "b_1DCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7671,
   "name": "b_1DF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7678,
   "name": "b_1DFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7724,
   "name": "b_1E2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7735,
   "name": "b_1E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7746,
   "name": "b_1E42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7749,
   "name": "j_1E45",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7753,
   "name": "move_divider",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7763,
   "name": "b_1E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7765,
   "name": "set_speed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7769,
   "name": "b_1E59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7779,
   "name": "b_1E63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7800,
   "name": "r_1E78",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7801,
   "name": "speed_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7809,
   "name": "pipe_speeds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7817,
   "name": "skyline_speeds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7825,
   "name": "leg_delays",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7833,
   "name": "draw_tex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7853,
   "name": "b_1EAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7854,
   "name": "a_1EAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7855,
   "name": "a_1EAF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7866,
   "name": "b_1EBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7882,
   "name": "erase_tex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7886,
   "name": "b_1ECE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7887,
   "name": "a_1ECF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7888,
   "name": "a_1ED0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7895,
   "name": "check_hole",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7921,
   "name": "r_1EF1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7922,
   "name": "animate_legs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7927,
   "name": "b_1EF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7932,
   "name": "b_1EFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7937,
   "name": "b_1F01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7942,
   "name": "b_1F06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7955,
   "name": "b_1F13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7967,
   "name": "b_1F1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7980,
   "name": "leg_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8172,
   "name": "fire_bullet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8177,
   "name": "b_1FF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8200,
   "name": "move_bullet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8205,
   "name": "b_200D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8210,
   "name": "b_2012",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8218,
   "name": "b_201A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8233,
   "name": "b_2029",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8261,
   "name": "b_2045",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8277,
   "name": "b_2055",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8282,
   "name": "b_205A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8329,
   "name": "b_2089",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8377,
   "name": "b_20B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8418,
   "name": "b_20E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8463,
   "name": "b_210F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8470,
   "name": "bullet_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8474,
   "name": "b_211A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8484,
   "name": "stop_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8491,
   "name": "start_jump",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8509,
   "name": "r_213D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8510,
   "name": "step_jump",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8550,
   "name": "b_2166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8563,
   "name": "b_2173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8567,
   "name": "b_2177",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8572,
   "name": "draw_pressure_bar",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8580,
   "name": "b_2184",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8596,
   "name": "b_2194",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8600,
   "name": "b_2198",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8609,
   "name": "b_21A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8621,
   "name": "b_21AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8625,
   "name": "lose_pressure",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8652,
   "name": "b_21CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8654,
   "name": "b_21CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8656,
   "name": "r_21D0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8657,
   "name": "bar_fill_patterns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8729,
   "name": "draw_completed_bar",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8737,
   "name": "b_2221",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8753,
   "name": "b_2231",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8757,
   "name": "b_2235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8766,
   "name": "b_223E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8778,
   "name": "b_224A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8782,
   "name": "add_completed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8804,
   "name": "r_2264",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8805,
   "name": "b_2265",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8810,
   "name": "scroll_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8815,
   "name": "b_226F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8831,
   "name": "b_227F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8833,
   "name": "b_2281",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8850,
   "name": "b_2292",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8868,
   "name": "b_22A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8874,
   "name": "message_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9166,
   "name": "turn_tex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9174,
   "name": "b_23D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9176,
   "name": "b_23D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9178,
   "name": "b_23DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9194,
   "name": "b_23EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9214,
   "name": "turn_buffer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9222,
   "name": "tex_death",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9227,
   "name": "b_240B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9232,
   "name": "b_2410",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9239,
   "name": "b_2417",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9268,
   "name": "b_2434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9311,
   "name": "b_245F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9319,
   "name": "b_2467",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9331,
   "name": "b_2473",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9336,
   "name": "b_2478",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9414,
   "name": "j_24C6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9421,
   "name": "sink_tex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9438,
   "name": "b_24DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9457,
   "name": "b_24F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9491,
   "name": "next_pipe_piece",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9510,
   "name": "b_2526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9541,
   "name": "b_2545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9558,
   "name": "b_2556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9588,
   "name": "b_2574",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9605,
   "name": "b_2585",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9638,
   "name": "b_25A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9640,
   "name": "b_25A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9652,
   "name": "j_25B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9654,
   "name": "b_25B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9671,
   "name": "scene0_pieces",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9672,
   "name": "f_25C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9677,
   "name": "scene1_pieces",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9678,
   "name": "f_25CE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9683,
   "name": "common_pieces",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9684,
   "name": "f_25D4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9691,
   "name": "rare_counts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9694,
   "name": "rare_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9697,
   "name": "piece_buffer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9698,
   "name": "f_25E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9721,
   "name": "random_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9730,
   "name": "feed_pipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9755,
   "name": "b_261B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9758,
   "name": "f_261E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9759,
   "name": "final_score",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9765,
   "name": "check_hiscore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9771,
   "name": "b_262B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9780,
   "name": "b_2634",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9808,
   "name": "b_2650",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9815,
   "name": "hiscore_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9823,
   "name": "hiscore_name_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9824,
   "name": "f_2660",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9839,
   "name": "enter_hiscore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9852,
   "name": "b_267C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9863,
   "name": "b_2687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9867,
   "name": "b_268B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9910,
   "name": "b_26B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9932,
   "name": "j_26CC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9940,
   "name": "b_26D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9956,
   "name": "b_26E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9962,
   "name": "b_26EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9966,
   "name": "b_26EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9980,
   "name": "b_26FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9986,
   "name": "b_2702",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9990,
   "name": "b_2706",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9999,
   "name": "b_270F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10001,
   "name": "b_2711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10012,
   "name": "b_271C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10014,
   "name": "j_271E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10016,
   "name": "b_2720",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10031,
   "name": "b_272F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10051,
   "name": "colour_name_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10053,
   "name": "b_2745",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10061,
   "name": "b_274D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10063,
   "name": "b_274F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10069,
   "name": "name_buffer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10076,
   "name": "tycoons_title",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10088,
   "name": "menu_title",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10100,
   "name": "draw_hiscores",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10102,
   "name": "b_2776",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10141,
   "name": "j_279D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10145,
   "name": "b_27A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10178,
   "name": "b_27C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10199,
   "name": "b_27D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10203,
   "name": "b_27DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10205,
   "name": "b_27DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10222,
   "name": "b_27EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10271,
   "name": "r_281F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10272,
   "name": "draw_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10295,
   "name": "b_2837",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10304,
   "name": "b_2840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10333,
   "name": "b_285D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10367,
   "name": "menu_row_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10372,
   "name": "menu_items",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10373,
   "name": "menu_difficulty_word",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10401,
   "name": "menu_lives_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10413,
   "name": "menu_sound_word",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10452,
   "name": "menu_input",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10459,
   "name": "b_28DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10478,
   "name": "b_28EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10495,
   "name": "b_28FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10499,
   "name": "draw_menu_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10501,
   "name": "b_2905",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10596,
   "name": "b_2964",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10614,
   "name": "b_2976",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10630,
   "name": "b_2986",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10632,
   "name": "b_2988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10651,
   "name": "logo_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10671,
   "name": "control_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10683,
   "name": "control_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10695,
   "name": "control_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10707,
   "name": "start_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10788,
   "name": "main_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 10803,
   "name": "b_2A33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10821,
   "name": "b_2A45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10849,
   "name": "b_2A61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10856,
   "name": "b_2A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10863,
   "name": "b_2A6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10866,
   "name": "game_over",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 10893,
   "name": "b_2A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10905,
   "name": "completed_rates",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10913,
   "name": "quit_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10918,
   "name": "b_2AA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10941,
   "name": "menu_choose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10955,
   "name": "b_2ACB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10971,
   "name": "b_2ADB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10982,
   "name": "b_2AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11001,
   "name": "b_2AF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11016,
   "name": "b_2B08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11030,
   "name": "b_2B16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11038,
   "name": "b_2B1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11053,
   "name": "b_2B2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11060,
   "name": "r_2B34",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11061,
   "name": "off_on_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11067,
   "name": "difficulty_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11106,
   "name": "difficulty_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11109,
   "name": "menu",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11206,
   "name": "b_2BC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11225,
   "name": "b_2BD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11227,
   "name": "b_2BDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11239,
   "name": "b_2BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11246,
   "name": "animate_menu_chars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11251,
   "name": "b_2BF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11265,
   "name": "b_2C01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11294,
   "name": "b_2C1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11311,
   "name": "b_2C2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11324,
   "name": "b_2C3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11337,
   "name": "b_2C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11342,
   "name": "b_2C4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11364,
   "name": "b_2C64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11368,
   "name": "twinkle_star",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11377,
   "name": "b_2C71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11384,
   "name": "b_2C78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11397,
   "name": "star_frame_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11403,
   "name": "star_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11435,
   "name": "menu_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11442,
   "name": "cycle_logo_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11450,
   "name": "b_2CBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11459,
   "name": "b_2CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11465,
   "name": "b_2CC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11486,
   "name": "set_scene_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11572,
   "name": "scene_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11573,
   "name": "f_2D35",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11574,
   "name": "f_2D36",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11575,
   "name": "f_2D37",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11576,
   "name": "f_2D38",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11577,
   "name": "f_2D39",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11578,
   "name": "f_2D3A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11579,
   "name": "f_2D3B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11580,
   "name": "f_2D3C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11581,
   "name": "f_2D3D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11582,
   "name": "f_2D3E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11583,
   "name": "f_2D3F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11584,
   "name": "f_2D40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11585,
   "name": "f_2D41",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11586,
   "name": "scene_colours_rest",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11620,
   "name": "move_arrow_and_jet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11625,
   "name": "b_2D69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11630,
   "name": "b_2D6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11650,
   "name": "b_2D82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11653,
   "name": "b_2D85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11675,
   "name": "b_2D9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11682,
   "name": "b_2DA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11716,
   "name": "b_2DC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11732,
   "name": "b_2DD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11747,
   "name": "b_2DE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11754,
   "name": "b_2DEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11768,
   "name": "r_2DF8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11769,
   "name": "b_2DF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11799,
   "name": "b_2E17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11804,
   "name": "b_2E1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11818,
   "name": "b_2E2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11831,
   "name": "b_2E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11836,
   "name": "b_2E3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11853,
   "name": "drop_jet_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11878,
   "name": "move_jet_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11883,
   "name": "b_2E6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11913,
   "name": "end_jet_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11946,
   "name": "r_2EAA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11947,
   "name": "draw_arrow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11964,
   "name": "b_2EBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11979,
   "name": "b_2ECB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11987,
   "name": "b_2ED3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11999,
   "name": "r_2EDF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12000,
   "name": "arrow_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12008,
   "name": "arrow_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12016,
   "name": "draw_jet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12023,
   "name": "b_2EF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12040,
   "name": "b_2F08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12055,
   "name": "b_2F17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12063,
   "name": "b_2F1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12075,
   "name": "r_2F2B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12076,
   "name": "jet_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12088,
   "name": "jet_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12100,
   "name": "draw_jet_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12139,
   "name": "move_bombs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12148,
   "name": "b_2F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12157,
   "name": "r_2F7D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12158,
   "name": "clear_enemies",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12185,
   "name": "draw_bouncy_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12193,
   "name": "b_2FA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12205,
   "name": "b_2FAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12210,
   "name": "b_2FB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12227,
   "name": "b_2FC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12244,
   "name": "bouncy_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12250,
   "name": "move_bouncy_bomb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12264,
   "name": "r_2FE8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12265,
   "name": "b_2FE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12311,
   "name": "b_3017",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12362,
   "name": "b_304A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12369,
   "name": "b_3051",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12392,
   "name": "b_3068",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12399,
   "name": "b_306F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12416,
   "name": "bouncy_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12417,
   "name": "f_3081",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12430,
   "name": "build_break",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12434,
   "name": "b_3092",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12463,
   "name": "b_30AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12466,
   "name": "b_30B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12500,
   "name": "b_30D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12509,
   "name": "b_30DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12533,
   "name": "b_30F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12551,
   "name": "break_middles",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12555,
   "name": "break_pipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12563,
   "name": "b_3113",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12579,
   "name": "b_3123",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12587,
   "name": "b_312B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12607,
   "name": "break_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12619,
   "name": "break_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12631,
   "name": "move_explosive",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12645,
   "name": "r_3165",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12646,
   "name": "b_3166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12688,
   "name": "b_3190",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12712,
   "name": "b_31A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12732,
   "name": "b_31BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12760,
   "name": "explosive_lands",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12787,
   "name": "r_31F3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12788,
   "name": "explosive_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12789,
   "name": "f_31F5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12804,
   "name": "draw_explosive",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12812,
   "name": "b_320C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12824,
   "name": "b_3218",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12829,
   "name": "b_321D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12846,
   "name": "b_322E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12863,
   "name": "explosive_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12869,
   "name": "add_score_units",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12871,
   "name": "add_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12875,
   "name": "b_324B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12894,
   "name": "b_325E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12919,
   "name": "r_3277",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12920,
   "name": "start_explosion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12950,
   "name": "tick_explosion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12959,
   "name": "b_329F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12963,
   "name": "r_32A3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12964,
   "name": "b_32A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12977,
   "name": "b_32B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12984,
   "name": "draw_explosion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12989,
   "name": "b_32BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12999,
   "name": "b_32C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13020,
   "name": "b_32DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13037,
   "name": "explosion_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13045,
   "name": "explosion_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13066,
   "name": "explosion_rings",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13067,
   "name": "f_330B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13082,
   "name": "countdown",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13094,
   "name": "b_3326",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13126,
   "name": "countdown_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13131,
   "name": "draw_big_glyph",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13135,
   "name": "b_334F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13159,
   "name": "b_3367",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13169,
   "name": "b_3371",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13209,
   "name": "countdown_glyphs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13299,
   "name": "the_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13332,
   "name": "b_3414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13400,
   "name": "the_end_colours",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13401,
   "name": "a_3459",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13402,
   "name": "bounce_the",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13433,
   "name": "r_3479",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13434,
   "name": "b_347A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13457,
   "name": "r_3491",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13458,
   "name": "bounce_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13489,
   "name": "r_34B1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13490,
   "name": "b_34B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13513,
   "name": "r_34C9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13514,
   "name": "draw_big_glyph_2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13518,
   "name": "b_34CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13542,
   "name": "b_34E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13552,
   "name": "b_34F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13592,
   "name": "the_glyph",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13610,
   "name": "end_glyph",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13628,
   "name": "menu_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13642,
   "name": "b_354A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13656,
   "name": "b_3558",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13667,
   "name": "b_3563",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13680,
   "name": "keyboard_icon",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13712,
   "name": "joystick_icon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13744,
   "name": "read_keys",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13750,
   "name": "b_35B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13765,
   "name": "test_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13782,
   "name": "b_35D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13784,
   "name": "key_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13789,
   "name": "key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13794,
   "name": "check_play_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13798,
   "name": "r_35E6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13799,
   "name": "b_35E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13817,
   "name": "b_35F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13831,
   "name": "b_3607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13836,
   "name": "b_360C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13846,
   "name": "b_3616",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13851,
   "name": "tick_sounds",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13857,
   "name": "b_3621",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13864,
   "name": "shot_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13870,
   "name": "b_362E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13902,
   "name": "tick_shot_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13914,
   "name": "b_365A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13923,
   "name": "b_3663",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13946,
   "name": "r_367A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13947,
   "name": "hit_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13953,
   "name": "b_3681",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13976,
   "name": "tick_hit_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13981,
   "name": "b_369D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13993,
   "name": "b_36A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14006,
   "name": "set_scene_graphics",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14014,
   "name": "b_36BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14051,
   "name": "cheat_space",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14066,
   "name": "arrow_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14210,
   "name": "bouncy_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14354,
   "name": "explosive_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14498,
   "name": "level_complete",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14551,
   "name": "b_38D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14629,
   "name": "b_3925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14667,
   "name": "b_394B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14687,
   "name": "congrats_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14708,
   "name": "level_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14729,
   "name": "pressure_out",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14775,
   "name": "b_39B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14786,
   "name": "b_39C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14816,
   "name": "b_39E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14818,
   "name": "b_39E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14875,
   "name": "b_3A1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14887,
   "name": "enemy_delays",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14891,
   "name": "loop_paces",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14894,
   "name": "drain_rates",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14897,
   "name": "next_level",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14916,
   "name": "b_3A44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14933,
   "name": "b_3A55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14935,
   "name": "b_3A57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14949,
   "name": "b_3A65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14959,
   "name": "b_3A6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14969,
   "name": "b_3A79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14973,
   "name": "b_3A7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14998,
   "name": "b_3A96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15023,
   "name": "b_3AAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15031,
   "name": "b_3AB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15043,
   "name": "b_3AC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15124,
   "name": "enemy_pairs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15130,
   "name": "enemy_triples",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15134,
   "name": "demo_controls",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15138,
   "name": "b_3B22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15158,
   "name": "b_3B36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15162,
   "name": "b_3B3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15180,
   "name": "b_3B4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15190,
   "name": "b_3B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15200,
   "name": "b_3B60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15216,
   "name": "r_3B70",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15217,
   "name": "show_logo_chars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15219,
   "name": "b_3B73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15235,
   "name": "logo_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15347,
   "name": "unused_ff",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15360,
   "name": "font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15576,
   "name": "control_icon_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15696,
   "name": "star_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15840,
   "name": "lettering_strip",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15842,
   "name": "f_3DE2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15850,
   "name": "f_3DEA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15858,
   "name": "f_3DF2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15866,
   "name": "f_3DFA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15872,
   "name": "tex_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15873,
   "name": "f_3E01",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15896,
   "name": "a_3E18",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15897,
   "name": "f_3E19",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15920,
   "name": "a_3E30",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15921,
   "name": "f_3E31",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15944,
   "name": "f_3E48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15945,
   "name": "f_3E49",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15968,
   "name": "a_3E60",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15969,
   "name": "f_3E61",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15992,
   "name": "bar_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16000,
   "name": "pressure_part_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16040,
   "name": "post_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16048,
   "name": "completed_part_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16064,
   "name": "menu_frame_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16065,
   "name": "f_3EC1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16071,
   "name": "a_3EC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16072,
   "name": "f_3EC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16073,
   "name": "f_3EC9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16079,
   "name": "a_3ECF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16080,
   "name": "a_3ED0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16081,
   "name": "f_3ED1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16087,
   "name": "a_3ED7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16088,
   "name": "f_3ED8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16096,
   "name": "f_3EE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16104,
   "name": "enemy_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16152,
   "name": "jet_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16232,
   "name": "bouncy_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16280,
   "name": "jet_bomb_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16296,
   "name": "explosive_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16344,
   "name": "block_char",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65490,
   "name": "KERNAL_BSOUT",
   "type": "Predefined",
   "kind": "system"
  }
 ],
 "comments": [
  {
   "address": 2,
   "type": "line",
   "text": "The character of message_text last put into column 39 by the scroller, $02/$03: scroll_message moves it on before it reads."
  },
  {
   "address": 4,
   "type": "line",
   "text": "Columns of the current skyline picture still to come, 7 down to 0 (feed_skyline)."
  },
  {
   "address": 5,
   "type": "line",
   "text": "The next skyline character to put in column 39 (feed_skyline)."
  },
  {
   "address": 6,
   "type": "line",
   "text": "The skyline's fine scroll, 0 to 7, for TED's $FF07 in irq_skyline."
  },
  {
   "address": 7,
   "type": "line",
   "text": "Left held, bit 7 (read_controls, read_keys, demo_controls)."
  },
  {
   "address": 8,
   "type": "line",
   "text": "Right held, bit 7."
  },
  {
   "address": 9,
   "type": "line",
   "text": "Up held, bit 7: jump in play, the next item at the menu, the next letter in name entry."
  },
  {
   "address": 10,
   "type": "line",
   "text": "Down held, bit 7."
  },
  {
   "address": 11,
   "type": "line",
   "text": "Fire held, bit 7."
  },
  {
   "address": 12,
   "type": "line",
   "text": "Set to 1 when a control is found held: by read_controls for the joystick, which never clears it, and by test_key for any key it finds down, J, K, ESC, SPACE and C= included (read_keys clears it first). No instruction reads it."
  },
  {
   "address": 13,
   "type": "line",
   "text": "The random generator's four bytes, $0D-$10 (random, seed_random); each routine that wants chance reads one of them."
  },
  {
   "address": 14,
   "type": "line",
   "text": "The second of the random generator's bytes."
  },
  {
   "address": 15,
   "type": "line",
   "text": "The third of the random generator's bytes."
  },
  {
   "address": 16,
   "type": "line",
   "text": "The fourth of the random generator's bytes, which takes the new bit from TED's timers."
  },
  {
   "address": 17,
   "type": "line",
   "text": "A screen pointer, $11/$12, where pressure_out types bad_news_text."
  },
  {
   "address": 21,
   "type": "line",
   "text": "Tex's top-left cell on the screen, $15/$16: $0EA9 (row 17, column 1) to $0EC3 (column 27), five rows higher at the top of a jump."
  },
  {
   "address": 23,
   "type": "line",
   "text": "The colour cell under tex_cell, $17/$18 (draw_tex)."
  },
  {
   "address": 25,
   "type": "line",
   "text": "Tex's colour, from the scene (set_scene_colours); clear_play_area and the bullet use it too."
  },
  {
   "address": 27,
   "type": "line",
   "text": "The pipeline's fine scroll, 0 to 7 (scroll_pipe, irq_pipe)."
  },
  {
   "address": 28,
   "type": "line",
   "text": "The message row's fine scroll, 0 to 7 (scroll_message, irq_scroller)."
  },
  {
   "address": 29,
   "type": "line",
   "text": "Column 39 of row 3, $1D/$1E, where feed_skyline writes."
  },
  {
   "address": 31,
   "type": "line",
   "text": "A character code counted up or down while a routine draws a shape (draw_tex, draw_bouncy_bomb, draw_explosive, draw_explosion)."
  },
  {
   "address": 32,
   "type": "line",
   "text": "Frames between leg frames at the current speed (leg_delays)."
  },
  {
   "address": 33,
   "type": "line",
   "text": "The running-leg step, 0 to 3 (animate_legs)."
  },
  {
   "address": 34,
   "type": "line",
   "text": "1 while the bullet is on its way."
  },
  {
   "address": 35,
   "type": "line",
   "text": "1 while Tex jumps."
  },
  {
   "address": 36,
   "type": "line",
   "text": "The jump's steps left, 10 down: up while 5 or more."
  },
  {
   "address": 37,
   "type": "line",
   "text": "1 when Tex moved left or right this frame, which stops a jump starting."
  },
  {
   "address": 38,
   "type": "line",
   "text": "The bullet's cell on the screen, $26/$27."
  },
  {
   "address": 40,
   "type": "line",
   "text": "The oil pressure's part cell, 0 to 7 eighths."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The oil pressure's full cells, 25 at the start of a level."
  },
  {
   "address": 42,
   "type": "line",
   "text": "% COMPLETED's part cell, 0 to 7 eighths."
  },
  {
   "address": 43,
   "type": "line",
   "text": "% COMPLETED's full cells, 0 to 26."
  },
  {
   "address": 44,
   "type": "line",
   "text": "A pointer or counter for one routine at a time, $2C/$2D (turn_tex, draw_menu, pauses)."
  },
  {
   "address": 46,
   "type": "line",
   "text": "How far feed_pipe is through piece_buffer, two characters a column."
  },
  {
   "address": 47,
   "type": "line",
   "text": "The first character of the piece being copied (next_pipe_piece, build_break)."
  },
  {
   "address": 48,
   "type": "line",
   "text": "The length of the piece in piece_buffer, in characters."
  },
  {
   "address": 51,
   "type": "line",
   "text": "A screen pointer, $33/$34, for routines that draw row by row."
  },
  {
   "address": 53,
   "type": "line",
   "text": "The colour cell matching row_ptr, $35/$36, or a text pointer (pressure_out)."
  },
  {
   "address": 55,
   "type": "line",
   "text": "1 while refill_pipe lays a new pipeline and at the menu: no breaks then."
  },
  {
   "address": 56,
   "type": "line",
   "text": "1 at the menu and between screens: the interrupt runs the menu's work instead of the game's."
  },
  {
   "address": 57,
   "type": "line",
   "text": "The colour cells of the name being entered, $39/$3A."
  },
  {
   "address": 59,
   "type": "line",
   "text": "The arrow's top-left cell, $3B/$3C."
  },
  {
   "address": 61,
   "type": "line",
   "text": "The jet's top-left cell, $3D/$3E."
  },
  {
   "address": 63,
   "type": "line",
   "text": "The arrow's colour cell, $3F/$40."
  },
  {
   "address": 65,
   "type": "line",
   "text": "The jet's colour cell, $41/$42."
  },
  {
   "address": 67,
   "type": "line",
   "text": "The bouncy bomb's top-left cell, $43/$44."
  },
  {
   "address": 69,
   "type": "line",
   "text": "The bouncy bomb's colour cell, $45/$46."
  },
  {
   "address": 71,
   "type": "line",
   "text": "Where the bouncy bomb was, to rub out, $47/$48."
  },
  {
   "address": 73,
   "type": "line",
   "text": "The jet's bomb, $49/$4A; it is drawn on the row below."
  },
  {
   "address": 75,
   "type": "line",
   "text": "The crash explosive's top-left cell, $4B/$4C."
  },
  {
   "address": 77,
   "type": "line",
   "text": "Where the crash explosive was, to rub out, $4D/$4E."
  },
  {
   "address": 79,
   "type": "line",
   "text": "The crash explosive's colour cell, $4F/$50."
  },
  {
   "address": 81,
   "type": "line",
   "text": "The top-left corner of the explosion's five by five cells, $51/$52: two rows above the place of what was hit, so that the explosion is centred on that row, two columns to the right."
  },
  {
   "address": 83,
   "type": "line",
   "text": "The explosion's colour cells, $53/$54."
  },
  {
   "address": 85,
   "type": "line",
   "text": "Where a big glyph is drawn, $55/$56."
  },
  {
   "address": 87,
   "type": "line",
   "text": "The big glyph's bytes, $57/$58."
  },
  {
   "address": 89,
   "type": "line",
   "text": "The big glyph's colour cells, $59/$5A."
  },
  {
   "address": 91,
   "type": "line",
   "text": "The address break_pipe works from, $5B/$5C."
  },
  {
   "address": 93,
   "type": "line",
   "text": "Where THE is, $5D/$5E (the_end)."
  },
  {
   "address": 95,
   "type": "line",
   "text": "Where END is, $5F/$60."
  },
  {
   "address": 97,
   "type": "line",
   "text": "The skyline_piece_chars entry used last, so the next is different."
  },
  {
   "address": 98,
   "type": "line",
   "text": "The level, in decimal (BCD), 01 to 99."
  },
  {
   "address": 100,
   "type": "line",
   "text": "2 for levels 1 to 3, 3 from level 4: whether a break can have a third middle."
  },
  {
   "address": 102,
   "type": "line",
   "text": "The star's twinkle step, 0 to 5."
  },
  {
   "address": 103,
   "type": "line",
   "text": "Counts four frames between twinkle steps."
  },
  {
   "address": 104,
   "type": "line",
   "text": "The main loop's pause, from loop_paces."
  },
  {
   "address": 105,
   "type": "line",
   "text": "Main-loop passes for each eighth of pressure, from drain_rates."
  },
  {
   "address": 106,
   "type": "line",
   "text": "The colour of the message row (draw_hud)."
  },
  {
   "address": 107,
   "type": "line",
   "text": "The band the interrupt ran last, 0 to 4."
  },
  {
   "address": 108,
   "type": "line",
   "text": "The skyline's scroll in pixels a frame."
  },
  {
   "address": 109,
   "type": "line",
   "text": "The pipeline's scroll in pixels a frame."
  },
  {
   "address": 110,
   "type": "line",
   "text": "move_divider's count, 3 calls to each of Tex's steps: one step every third frame while one direction is held, since each direction held calls move_divider once a frame."
  },
  {
   "address": 111,
   "type": "line",
   "text": "1 when the pressure has run out."
  },
  {
   "address": 112,
   "type": "line",
   "text": "Tex's speed, 0 to 7, set by his column (set_speed)."
  },
  {
   "address": 114,
   "type": "line",
   "text": "1 after a death or a new game, until Tex moves right: left does nothing."
  },
  {
   "address": 115,
   "type": "line",
   "text": "Tested before Tex moves right, but nothing sets it to anything but 0."
  },
  {
   "address": 116,
   "type": "line",
   "text": "Toggles each frame, so the skyline at speed 1 moves every other frame."
  },
  {
   "address": 117,
   "type": "line",
   "text": "The skyline band's background colour."
  },
  {
   "address": 118,
   "type": "line",
   "text": "The pipe band's background colour."
  },
  {
   "address": 119,
   "type": "line",
   "text": "Counts two frames between jump steps."
  },
  {
   "address": 120,
   "type": "line",
   "text": "Set and counted by the bullet's routines, though no routine waits on it: the bullet moves every frame."
  },
  {
   "address": 121,
   "type": "line",
   "text": "Counts down the frames to the next leg frame."
  },
  {
   "address": 122,
   "type": "line",
   "text": "1 once tex_death has started."
  },
  {
   "address": 123,
   "type": "line",
   "text": "1 when Tex has touched an enemy or fallen into a break."
  },
  {
   "address": 124,
   "type": "line",
   "text": "Counts two frames between sink steps."
  },
  {
   "address": 125,
   "type": "line",
   "text": "tex_death's count, 24 down."
  },
  {
   "address": 126,
   "type": "line",
   "text": "1 when the last life has gone."
  },
  {
   "address": 127,
   "type": "line",
   "text": "1 when Tex cannot move: between screens, while dying, at the menu."
  },
  {
   "address": 128,
   "type": "line",
   "text": "Lives left, up to 9; the HUD shows them as TYCOONS."
  },
  {
   "address": 129,
   "type": "line",
   "text": "check_hiscore's place in the table."
  },
  {
   "address": 130,
   "type": "line",
   "text": "The entry the score beat, 0 to 7."
  },
  {
   "address": 131,
   "type": "line",
   "text": "The letter of the name being changed, 0 to 6."
  },
  {
   "address": 132,
   "type": "line",
   "text": "Where the new entry starts in hiscore_table."
  },
  {
   "address": 133,
   "type": "line",
   "text": "The rank draw_hiscores is printing, 1 to 8."
  },
  {
   "address": 134,
   "type": "line",
   "text": "Where the new entry's name starts in hiscore_table."
  },
  {
   "address": 135,
   "type": "line",
   "text": "The colour of the table's line being drawn."
  },
  {
   "address": 136,
   "type": "line",
   "text": "1 once draw_hiscores has printed a digit other than 0."
  },
  {
   "address": 137,
   "type": "line",
   "text": "A loop count of draw_hiscores and draw_menu."
  },
  {
   "address": 138,
   "type": "line",
   "text": "The menu item draw_menu is drawing, or the digit draw_hiscores is printing."
  },
  {
   "address": 139,
   "type": "line",
   "text": "1 while Tex dies: his legs stop."
  },
  {
   "address": 140,
   "type": "line",
   "text": "1 once the demo's Tex has reached column 16."
  },
  {
   "address": 141,
   "type": "line",
   "text": "1 when the menu has an item to start."
  },
  {
   "address": 142,
   "type": "line",
   "text": "Counts two frames between steps of animate_menu_chars."
  },
  {
   "address": 144,
   "type": "line",
   "text": "Counts 20 calls between steps of cycle_logo_colours."
  },
  {
   "address": 145,
   "type": "line",
   "text": "Set to 2 by menu; nothing reads it."
  },
  {
   "address": 146,
   "type": "line",
   "text": "next_pipe_piece's count of rolls of 3, up to 9."
  },
  {
   "address": 147,
   "type": "line",
   "text": "The piece next_pipe_piece picked."
  },
  {
   "address": 148,
   "type": "line",
   "text": "The play field's first colour (irq_field)."
  },
  {
   "address": 149,
   "type": "line",
   "text": "The play field's second colour."
  },
  {
   "address": 150,
   "type": "line",
   "text": "The play field's background."
  },
  {
   "address": 151,
   "type": "line",
   "text": "The skyline's first colour (irq_skyline)."
  },
  {
   "address": 152,
   "type": "line",
   "text": "The skyline's second colour."
  },
  {
   "address": 153,
   "type": "line",
   "text": "The colour of the skyline's cells (draw_hud)."
  },
  {
   "address": 154,
   "type": "line",
   "text": "The pipe's first colour (irq_pipe)."
  },
  {
   "address": 155,
   "type": "line",
   "text": "The pipe's second colour."
  },
  {
   "address": 156,
   "type": "line",
   "text": "The colour of the pipe's cells (draw_hud)."
  },
  {
   "address": 157,
   "type": "line",
   "text": "1 when % COMPLETED is full: the main loop runs level_complete. Plus/4 World's cheat sets it by hand."
  },
  {
   "address": 158,
   "type": "line",
   "text": "1 while the arrow is on the screen."
  },
  {
   "address": 159,
   "type": "line",
   "text": "1 when the arrow is to be rubbed out."
  },
  {
   "address": 160,
   "type": "line",
   "text": "The arrow's delay, then its frame count."
  },
  {
   "address": 161,
   "type": "line",
   "text": "1 when the arrow is to be drawn."
  },
  {
   "address": 162,
   "type": "line",
   "text": "1 while the jet is on the screen."
  },
  {
   "address": 163,
   "type": "line",
   "text": "1 when the jet is to be rubbed out."
  },
  {
   "address": 164,
   "type": "line",
   "text": "The jet's delay, then its frame count."
  },
  {
   "address": 165,
   "type": "line",
   "text": "1 when the jet is to be drawn."
  },
  {
   "address": 166,
   "type": "line",
   "text": "The level's enemies: bit 0 the arrow, 1 the bouncy bomb, 2 the jet, 3 the crash explosive; bit 4 lets the jet's bombs break the pipe."
  },
  {
   "address": 167,
   "type": "line",
   "text": "The arrow's colour."
  },
  {
   "address": 168,
   "type": "line",
   "text": "The jet's colour."
  },
  {
   "address": 169,
   "type": "line",
   "text": "1 while the bouncy bomb is on the screen."
  },
  {
   "address": 170,
   "type": "line",
   "text": "The bouncy bomb's colour."
  },
  {
   "address": 171,
   "type": "line",
   "text": "The bouncy bomb's height in its bounce, 0 (row 10) to 9 (row 19)."
  },
  {
   "address": 172,
   "type": "line",
   "text": "1 when the bouncy bomb is to be drawn."
  },
  {
   "address": 173,
   "type": "line",
   "text": "1 when the bouncy bomb's old place is to be rubbed out."
  },
  {
   "address": 174,
   "type": "line",
   "text": "The bouncy bomb's steps so far, to 38."
  },
  {
   "address": 175,
   "type": "line",
   "text": "1 while the bouncy bomb goes down, 0 up."
  },
  {
   "address": 176,
   "type": "line",
   "text": "The bouncy bomb's delay."
  },
  {
   "address": 177,
   "type": "line",
   "text": "Counts 18 pieces between breaks (next_pipe_piece)."
  },
  {
   "address": 178,
   "type": "line",
   "text": "The low byte of the cell where the jet drops its bomb."
  },
  {
   "address": 179,
   "type": "line",
   "text": "1 when the jet's bomb is to be drawn."
  },
  {
   "address": 180,
   "type": "line",
   "text": "Rows the jet's bomb has fallen, to 12."
  },
  {
   "address": 181,
   "type": "line",
   "text": "1 while the jet's bomb falls."
  },
  {
   "address": 182,
   "type": "line",
   "text": "The jet's bomb's colour."
  },
  {
   "address": 183,
   "type": "line",
   "text": "Counts two frames between the bomb's rows."
  },
  {
   "address": 184,
   "type": "line",
   "text": "1 while the crash explosive is on the screen."
  },
  {
   "address": 185,
   "type": "line",
   "text": "The crash explosive's delay."
  },
  {
   "address": 186,
   "type": "line",
   "text": "The crash explosive's row, counted from row 10, to 11 when it lands."
  },
  {
   "address": 187,
   "type": "line",
   "text": "Columns the crash explosive flies level before it drops."
  },
  {
   "address": 188,
   "type": "line",
   "text": "1 when the crash explosive is to be drawn."
  },
  {
   "address": 189,
   "type": "line",
   "text": "1 when the crash explosive's old place is to be rubbed out."
  },
  {
   "address": 190,
   "type": "line",
   "text": "The crash explosive's colour."
  },
  {
   "address": 191,
   "type": "line",
   "text": "1 while the crash explosive flies level, 0 while it drops."
  },
  {
   "address": 193,
   "type": "line",
   "text": "1 when Tex has fallen into a break: no jump."
  },
  {
   "address": 194,
   "type": "line",
   "text": "1 while an explosion is on: no shot."
  },
  {
   "address": 195,
   "type": "line",
   "text": "The explosion's step, 1 to 8."
  },
  {
   "address": 196,
   "type": "line",
   "text": "1 while the explosion is to be drawn."
  },
  {
   "address": 197,
   "type": "line",
   "text": "Counts two frames between explosion steps."
  },
  {
   "address": 198,
   "type": "line",
   "text": "Cells left to draw in the explosion's ring, less one: 0 while its last cell is drawn (draw_explosion counts it down to a borrow)."
  },
  {
   "address": 199,
   "type": "line",
   "text": "The character the bullet hit; nothing reads it."
  },
  {
   "address": 200,
   "type": "line",
   "text": "1 while move_bullet removes a shot bomb or explosive, so that it breaks nothing."
  },
  {
   "address": 201,
   "type": "line",
   "text": "What add_score adds."
  },
  {
   "address": 202,
   "type": "line",
   "text": "Counts 24 main-loop passes between points for running."
  },
  {
   "address": 203,
   "type": "line",
   "text": "1 when the bullet's hit scored."
  },
  {
   "address": 204,
   "type": "line",
   "text": "The colour of the explosion's step."
  },
  {
   "address": 205,
   "type": "line",
   "text": "Rows of the big glyph left to draw."
  },
  {
   "address": 206,
   "type": "line",
   "text": "The countdown's glyph, 0 to 4, or the_end's steps left from 80."
  },
  {
   "address": 207,
   "type": "line",
   "text": "The 16 bits of the glyph's row being drawn, $CF/$D0."
  },
  {
   "address": 209,
   "type": "line",
   "text": "Counts main-loop passes to the next eighth of pressure."
  },
  {
   "address": 210,
   "type": "line",
   "text": "What lose_pressure takes."
  },
  {
   "address": 212,
   "type": "line",
   "text": "1 while THE goes down."
  },
  {
   "address": 213,
   "type": "line",
   "text": "1 while END goes down."
  },
  {
   "address": 214,
   "type": "line",
   "text": "THE's rows from the top of its bounce, 0 to 5."
  },
  {
   "address": 215,
   "type": "line",
   "text": "END's rows from the top of its bounce, 0 to 5."
  },
  {
   "address": 216,
   "type": "line",
   "text": "The big glyph's colour."
  },
  {
   "address": 217,
   "type": "line",
   "text": "1 while SPACE has paused the game."
  },
  {
   "address": 218,
   "type": "line",
   "text": "1 while the shot's sound plays."
  },
  {
   "address": 219,
   "type": "line",
   "text": "1 while the hit's sound plays."
  },
  {
   "address": 220,
   "type": "line",
   "text": "The high bits the shot's sound should step down, 3 at the start."
  },
  {
   "address": 221,
   "type": "line",
   "text": "Frames of the shot's sound left, from 20."
  },
  {
   "address": 223,
   "type": "line",
   "text": "enemy_mask kept while Tex dies."
  },
  {
   "address": 224,
   "type": "line",
   "text": "1 while next_level redraws only the HUD's colours."
  },
  {
   "address": 225,
   "type": "line",
   "text": "The least delay before a bouncy bomb comes back (enemy_delays)."
  },
  {
   "address": 226,
   "type": "line",
   "text": "The least delay before a crash explosive comes back."
  },
  {
   "address": 227,
   "type": "line",
   "text": "The least delay before an arrow comes back."
  },
  {
   "address": 228,
   "type": "line",
   "text": "The least delay before a jet comes back."
  },
  {
   "address": 229,
   "type": "line",
   "text": "Enemy delays count down only when a random byte is at least this."
  },
  {
   "address": 230,
   "type": "line",
   "text": "1 when ESC was pressed."
  },
  {
   "address": 231,
   "type": "line",
   "text": "The score's ten-thousands digit as add_score last saw it, kept whenever it changes; a change gives a life unless there are 9 already."
  },
  {
   "address": 232,
   "type": "line",
   "text": "The menu's turns, counted up from 0 by menu; the count's wrap to 0 starts the demo, after 255 turns."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The 256-character set the skyline band and the pipe band show (irq_skyline and irq_pipe point TED at $1000 with 256 characters). Characters $00-$C7 are five skyline pictures of 40 characters, each 8 columns of 5, filled bottom to top (feed_skyline): $00, $28, $50, $78 and $A0 (skyline_piece_chars). This first piece is characters $00-$27. Its bytes $1001-$1002 hold $1009, the link a BASIC line at $1001, where BASIC's program starts, has (the address after the zero at $1008): BASIC's, not the drawing's. The tape carries them, and Novaload's store at $0395 writes them."
  },
  {
   "address": 4416,
   "type": "line",
   "text": "Skyline picture 1 of the 256-character set: characters $28-$4F, 8 columns of 5 characters, each column bottom to top (feed_skyline)."
  },
  {
   "address": 4736,
   "type": "line",
   "text": "Skyline picture 2 of the 256-character set: characters $50-$77, 8 columns of 5 characters, each column bottom to top (feed_skyline)."
  },
  {
   "address": 5056,
   "type": "line",
   "text": "Skyline picture 3 of the 256-character set: characters $78-$9F, 8 columns of 5 characters, each column bottom to top (feed_skyline)."
  },
  {
   "address": 5376,
   "type": "line",
   "text": "Skyline picture 4 of the 256-character set: characters $A0-$C7, 8 columns of 5 characters, each column bottom to top (feed_skyline)."
  },
  {
   "address": 5696,
   "type": "line",
   "text": "Characters $C8-$FF of the 256-character set, the pipeline on rows 22 and 23: the plain and decorated lengths next_pipe_piece picks ($C8-$D5 for every scene, $EA-$F3 for scene 0, $F4-$FF for scene 1) and the edges and middles of a break ($D6-$E9, build_break and break_pipe)."
  },
  {
   "address": 6144,
   "type": "line",
   "text": "The game's first instruction, where the loader's stub jumps. Clears zero page from $07 (clear_zero_page), clears the screen through the KERNAL's BSOUT (character $93), points the scroller at message_text, takes the first pipe piece, then fills the skyline and the pipeline by shifting them 46 times (shift_pipe, shift_skyline) and goes to the menu (menu). Plus/4 World's \"G 1800\" restart enters here."
  },
  {
   "address": 6182,
   "type": "line",
   "text": "The scene of the level, 0 to 2: which pipe pieces, colours and enemy shapes it has (next_pipe_piece, set_scene_colours, set_scene_graphics). next_level steps it 0, 1, 2, 0 at each level; start_game sets $FF so the first level is scene 0."
  },
  {
   "address": 6183,
   "type": "line",
   "text": "NO. OF LIVES on the menu, 1 to 6 (menu_choose); start_game copies it into lives. 3 as loaded."
  },
  {
   "address": 6184,
   "type": "line",
   "text": "SOUND on the menu, 0 off or 1 on (menu_choose). Every sound routine returns at once while it is 0. 0 as loaded."
  },
  {
   "address": 6185,
   "type": "line",
   "text": "The menu item in the highlighted window: 0 difficulty, 1 lives, 2 sound, 3 play, 4 demo (draw_menu, menu_input, menu_choose). 3, PLAY THE GAME, as loaded."
  },
  {
   "address": 6186,
   "type": "line",
   "text": "1 for the joystick, 0 for the keyboard (read_controls). J and K at the menu set it (menu_keys). 1 as loaded."
  },
  {
   "address": 6187,
   "type": "line",
   "text": "EASY 0, HARD 1, IMPOSSIBLE 2 (menu_choose); next_level takes the main loop's pace and the pressure drain from it. 0 as loaded."
  },
  {
   "address": 6188,
   "type": "line",
   "text": "1 while the demo plays: read_controls takes its input from demo_controls, and the end of the demo goes back to the menu without the high-score table. Set by WATCH THE DEMO, or by the menu after 255 turns ($E8)."
  },
  {
   "address": 6189,
   "type": "line",
   "text": "Fills the controls: $07 left, $08 right, $09 up, $0A down, $0B fire, each with bit 7 set while held, and $0C to 1 when anything is. In the demo it hands over to demo_controls, in keyboard mode to read_keys. Otherwise it reads joystick port 2 (writing $FD to $FF08), then port 1 ($FA) if port 2 shows nothing. Before each read it rewrites the instruction at $1878: LSR for port 2, whose fire is bit 7, NOP for port 1, whose fire is bit 6, so that one ROR puts fire into $0B. With nothing held it clears $07-$0B and leaves $0C as it was."
  },
  {
   "address": 6264,
   "type": "line",
   "text": "The instruction read_controls rewrites before each joystick read: LSR ($4A) for port 2, so that fire, bit 7, reaches the carry, or NOP ($EA) for port 1, whose fire is bit 6."
  },
  {
   "address": 6272,
   "type": "line",
   "text": "The five raster lines of the interrupt, in band order: 23, 65, 176, 192, 204 (decimal). irq writes the one for the band it has just run, so band 1 runs at line 23, band 2 at 65, band 3 at 176, band 4 at 192 and band 0 at 204."
  },
  {
   "address": 6277,
   "type": "line",
   "text": "Points the KERNAL's interrupt vector at $0314 to irq unless it already points there, enables only TED's raster interrupt ($FF0A = 2), sets the first raster line from raster_lines and the band to 0. Called by menu each time it starts."
  },
  {
   "address": 6313,
   "type": "line",
   "text": "The game's raster interrupt, reached through the KERNAL's handler and $0314. Acknowledges TED, steps the band $6B through 0 to 4 and jumps to that band's code, which returns to $18DD: there it sets the next raster line from raster_lines, pulls the registers the KERNAL's handler pushed and returns with RTI. Band 0 irq_frame, 1 irq_skyline, 2 irq_field, 3 irq_pipe, 4 irq_scroller."
  },
  {
   "address": 6379,
   "type": "line",
   "text": "Takes the character set from RAM (clears bit 2 of $FF12) and copies $FF0B, the raster compare TED was last given, into all four bytes $0D-$10 of the random generator. Called by menu each time it starts."
  },
  {
   "address": 6398,
   "type": "line",
   "text": "Stirs the random generator's four bytes $0D-$10. Adds TED's timer 1 low byte (masked with $48) to timer 2's low byte, shifts its bit 6 into the bottom of $10 and rotates the four bytes together, then adds each byte to the old value of the one before it, $29 for $0D, with the carry running through. Called every frame from irq_field, and by next_skyline_piece, build_break and next_level."
  },
  {
   "address": 6432,
   "type": "line",
   "text": "The bytes of LDX #$20 just before delay, an entry that no instruction in the program refers to."
  },
  {
   "address": 6434,
   "type": "line",
   "text": "Busy wait: X times 256 turns of three NOPs, 256 times 256 when X is 0. Paces the main loop (X = loop_pace) and every pause between screens."
  },
  {
   "address": 6446,
   "type": "line",
   "text": "Fills rows 8 to 21, columns 0 to 38, with spaces in Tex's colour ($19). Column 39 is left as it was."
  },
  {
   "address": 6500,
   "type": "line",
   "text": "Zeroes zero page from $07 to $FF: every variable of the game."
  },
  {
   "address": 6510,
   "type": "line",
   "text": "Lays a fresh pipeline across rows 22 and 23: takes a new piece, then shifts the pipe 65 times with $37 set, which holds back the breaks next_pipe_piece would otherwise put in. Interrupts are off meanwhile. Called by next_level, tex_death, level_complete and pressure_out."
  },
  {
   "address": 6536,
   "type": "line",
   "text": "Where draw_tex and erase_tex put Tex's 15 characters $40-$4E, as offsets from his top-left cell: three columns by five rows, row by row. tex_death patches both routines to read tex_lying_layout instead, and back."
  },
  {
   "address": 6551,
   "type": "line",
   "text": "Tex's 15 characters laid on their side, five columns by three rows in rows 2 to 4 of his box, for the characters turn_tex has turned: $40-$42 down column 4, $43-$45 down column 3, and so on to $4C-$4E in column 0. tex_death points draw_tex and erase_tex here while he dies."
  },
  {
   "address": 6566,
   "type": "line",
   "text": "The five row offsets of a skyline column, $00 to $A0 in steps of 40 (feed_skyline, which writes them from the bottom up); pressure_out reads these five and the byte after them for the sides of its frame."
  },
  {
   "address": 6571,
   "type": "line",
   "text": "The first character of each of the eight skyline choices (next_skyline_piece): $00, $28, $50, $78, $A0, then $28, $50 and $78 again, so pictures 1 to 3 have two entries each."
  },
  {
   "address": 6579,
   "type": "line",
   "text": "The order animate_legs shows Tex's four running-leg frames in: 1, 3, 0, 2."
  },
  {
   "address": 6583,
   "type": "line",
   "text": "Where each running-leg frame starts in leg_frames: 0, 48, 96 and 144."
  },
  {
   "address": 6587,
   "type": "line",
   "text": "Where each scene's enemy shapes start in arrow_shapes, bouncy_shapes and explosive_shapes: 0, 48 and 96 for scenes 0 to 2 (set_scene_graphics)."
  },
  {
   "address": 6590,
   "type": "line",
   "text": "Three bytes, 0, 5 and 10, that no instruction refers to by address."
  },
  {
   "address": 6593,
   "type": "line",
   "text": "The message when the pressure runs out, five lines of 28 characters (pressure_out): BAD NEWS ! / OIL PRODUCTION HAS CEASED. / YOU HAVE BEEN PERSUADED TO / HAND IN YOUR RESIGNATION.! / BETTER LUCK NEXT TIME TEX."
  },
  {
   "address": 6732,
   "type": "line",
   "text": "The last character of bad_news_text. check_hiscore's LDA $1A4C,X names it as the base of hiscore_table, which it reads from X = 1."
  },
  {
   "address": 6733,
   "type": "line",
   "text": "THE TYCOONS!, eight entries of 14 bytes, best first: six score digits, seven name characters and a 0. As loaded: 005000 GREMLIN, 004000, 003000, 002000, 001000, 000500 and 000250 with patterns of stars for names, and 000100 M.P.LTD. Digits and the loaded names are PETSCII; a name typed in is stored as screen codes; draw_hiscores prints both with AND #$3F. check_hiscore, enter_hiscore and draw_hud read it."
  },
  {
   "address": 6747,
   "type": "line",
   "text": "hiscore_table from its second entry on: enter_hiscore's shuffle writes each byte it moves down through STA $1A5B,X, one entry (14 bytes) further on than it read it."
  },
  {
   "address": 6845,
   "type": "line",
   "text": "The byte after the table. enter_hiscore's shuffle moves the first digit of the eighth entry here, as the old eighth entry drops off; as loaded it holds a \"0\"."
  },
  {
   "address": 6846,
   "type": "line",
   "text": "TEL 0727 34566, in PETSCII after the high-score table. No instruction refers to it."
  },
  {
   "address": 6860,
   "type": "line",
   "text": "Band 0, at raster line 204, below the last row: the top of the next frame. Sets 128 characters, multicolour and 40 columns with no scroll, the HUD's colours ($70 background and border, $51 and $31), and the character set at $3C00. Scrolls the pipe, the skyline and the message (scroll_pipe, scroll_skyline, scroll_message). In play ($38 = 0) it then draws both bars, the explosion, the arrow, the jet, the bouncy bomb and the crash explosive, moves the bullet and reads the play keys; at the menu it reads K and J and animates the menu's characters (menu_keys, menu_tick)."
  },
  {
   "address": 6945,
   "type": "line",
   "text": "Band 1, at raster line 23: the skyline, rows 3 to 7. Waits out the line, then sets 256 characters at $1000, multicolour, 38 columns (the border hides the column being filled) with the skyline's fine scroll ($06) and the scene's colours ($75, $97, $98), and steps Tex's legs (animate_legs)."
  },
  {
   "address": 6988,
   "type": "line",
   "text": "Band 2, at raster line 65: the play field, rows 8 to 21. Sets the background ($96), 128 characters at $3C00, 38 columns with no scroll, and colours $94 and $95. Then stirs the random numbers and runs Tex's controls, his death, the explosion's clock and the arrow and jet (random, move_tex, tex_death, tick_explosion, move_arrow_and_jet)."
  },
  {
   "address": 7039,
   "type": "line",
   "text": "Band 3, at raster line 176: the pipeline, rows 22 and 23. Sets colours $9A and $9B, 256 characters at $1000, 38 columns with the pipe's fine scroll ($1B) and background $76, and reads the controls (read_controls)."
  },
  {
   "address": 7085,
   "type": "line",
   "text": "Band 4, at raster line 192: the message on row 24. Sets 128 characters at $3C00, 38 columns with the message's fine scroll ($1C), runs the sounds (tick_sounds) and every fourth frame turns the star character (twinkle_star)."
  },
  {
   "address": 7122,
   "type": "line",
   "text": "Draws rows 0 to 2, OIL PRESSURE, % COMPLETED and SCORE, TYCOONS and HIGH-SCORE, from hud_text and hud_colours, but only when $E0 is 0 (next_level sets it to 1, so a new level keeps the score on screen). Always colours rows 22 and 23 with $9C and row 24 with $6A, rows 3 to 7 with $99, puts the bars' end caps ($53, $54) at both ends of both bars, and copies the best score in the table into HIGH-SCORE."
  },
  {
   "address": 7197,
   "type": "line",
   "text": "Rows 0 to 2 of the play screen in PETSCII, printed with AND #$3F (draw_hud): OIL PRESSURE, % COMPLETED, then SCORE:000000*TYCOONS:0*HIGH-SCORE:000000. The bars are drawn over the spaces from column 13."
  },
  {
   "address": 7317,
   "type": "line",
   "text": "The colour of each cell of rows 0 to 2 (draw_hud), 120 bytes. OIL PRESSURE and % COMPLETED are $71. Each bar's columns 12 to 39 rise in bands through luminances 4 to 7, colour 6 on row 0 and colour 4 on row 1. On row 2 SCORE and HIGH-SCORE are $53, both six-digit numbers $57, TYCOONS $42 and its digit $44, the colons $71 and the stars $41."
  },
  {
   "address": 7437,
   "type": "line",
   "text": "Scrolls the skyline left at the speed in $6C pixels a frame, half that at the lowest speed, and not at all while paused. When the fine scroll ($06) passes a character, falls into shift_skyline."
  },
  {
   "address": 7473,
   "type": "line",
   "text": "Moves rows 3 to 7 one character left and fills column 39 with the next column of the skyline (feed_skyline)."
  },
  {
   "address": 7514,
   "type": "line",
   "text": "Scrolls the pipeline left at the speed in $6D pixels a frame, not at all while paused. When the fine scroll ($1B) passes a character, falls into shift_pipe."
  },
  {
   "address": 7535,
   "type": "line",
   "text": "Moves rows 22 and 23 one character left and puts the next column of the pipe in column 39 (feed_pipe)."
  },
  {
   "address": 7558,
   "type": "line",
   "text": "Writes the next column of the skyline into column 39 of rows 3 to 7: five consecutive characters from $05, bottom row first. After 8 columns ($04) it picks the next picture (next_skyline_piece)."
  },
  {
   "address": 7588,
   "type": "line",
   "text": "Picks the next skyline picture at random, never the same entry of skyline_piece_chars twice running ($61), and starts it: its first character in $05 and 8 columns to go in $04."
  },
  {
   "address": 7619,
   "type": "line",
   "text": "Runs Tex's controls, every frame from irq_field. Nothing while paused; while he cannot move ($7F) only his jump goes on. Unless he is jumping, right and left each move him one column every third frame (move_divider), between columns 1 and 27, and set the scroll speed from where he stands (set_speed); $25 says he moved. After a death or a new game left does nothing until he has moved right ($72). Up starts a jump in a frame he did not move, fire shoots when no bullet is flying. Then draws him and steps the jump."
  },
  {
   "address": 7753,
   "type": "line",
   "text": "Counts $6E down and returns carry set every third call. Both directions call it, so holding left and right together uses it twice a frame."
  },
  {
   "address": 7765,
   "type": "line",
   "text": "When Tex's column is one of the eight in speed_columns, sets the speed index $70 (0 to 7) and from it the pipe's speed ($6D), the skyline's ($6C) and the delay between leg frames ($20). Between those columns the speed stays as it was."
  },
  {
   "address": 7801,
   "type": "line",
   "text": "The low bytes of the eight screen addresses on row 17 where Tex's speed changes: columns 1, 4, 7, 10, 13, 16, 19 and 22."
  },
  {
   "address": 7809,
   "type": "line",
   "text": "The pipe's scroll for each speed, in pixels a frame: 0, 2, 3, 4, 5, 6, 7, 7."
  },
  {
   "address": 7817,
   "type": "line",
   "text": "The skyline's scroll for each speed, in pixels a frame: 0, 1, 1, 1, 2, 2, 2, 3. Slower than the pipe, so the skyline seems further away."
  },
  {
   "address": 7825,
   "type": "line",
   "text": "Frames between Tex's leg frames at each speed: 0 (standing), 22, 16, 14, 10, 7, 3, 1."
  },
  {
   "address": 7833,
   "type": "line",
   "text": "Draws Tex's 15 characters $40-$4E at his cell ($15/$16) in his colour ($19), using the layout whose address is in its operand at $1EAE (tex_layout, or tex_lying_layout while he dies). First checks the cell under him for a hole (check_hole). Any cell it covers that holds a character $5C or above, an enemy, kills him ($7B = 1, the operand at $1EB7 that Plus/4 World's invulnerability cheat sets to 0)."
  },
  {
   "address": 7854,
   "type": "line",
   "text": "The low byte of the layout address in draw_tex's LDY $1988,X: $88 for tex_layout, $97 for tex_lying_layout, written by tex_death."
  },
  {
   "address": 7855,
   "type": "line",
   "text": "The high byte of the same layout address, which tex_death writes as $19 both times."
  },
  {
   "address": 7882,
   "type": "line",
   "text": "Puts spaces in Tex's 15 cells, through the same layout as draw_tex (operand at $1ECF)."
  },
  {
   "address": 7887,
   "type": "line",
   "text": "The low byte of the layout address in erase_tex's LDY $1988,X, which tex_death switches with draw_tex's."
  },
  {
   "address": 7888,
   "type": "line",
   "text": "The high byte of erase_tex's layout address, $19 both times."
  },
  {
   "address": 7895,
   "type": "line",
   "text": "Looks at the cell five rows below Tex's top-left, on the pipe's top row. Characters $D9 to $E9, except $DB and $DD, are the gap of a break: he dies and falls ($7B and $C1 = 1, from the operand at $1EEC that Plus/4 World's invulnerability cheat sets to 0)."
  },
  {
   "address": 7922,
   "type": "line",
   "text": "Steps Tex's running legs while the speed ($70) is above 0 and he is not dying ($8B) or paused: every $20 frames copies the next of four frames from leg_frames over characters $49-$4E, his bottom two rows."
  },
  {
   "address": 7980,
   "type": "line",
   "text": "Tex's legs running, four frames of 48 bytes: characters $49 to $4E for each (animate_legs)."
  },
  {
   "address": 8172,
   "type": "line",
   "text": "Fires Tex's sixgun unless an explosion is going on ($C2): marks the bullet flying ($22), puts it two rows down and two columns right of his top-left cell ($26/$27), the row of his gun, and starts the shot's sound (shot_sound)."
  },
  {
   "address": 8200,
   "type": "line",
   "text": "Moves the bullet one cell right a frame, from irq_frame, not while paused. Rubs out the cell it leaves, then looks at the next one. Character 0 (bullet_stop) ends the flight. A character below $5C is empty sky or ground: the bullet ($52) is drawn there in Tex's colour. Anything else is a hit, kept in $C7. Below $63, the arrow: 25 points, the arrow restarts after a delay, an explosion where it was. $63 to $72, the bouncy bomb: 50 points, the bomb restarts after a delay, an explosion where it was. $73 and $74, the jet's bomb: 250 points, the bomb removed (end_jet_bomb with $C8 set so it breaks nothing). $75 to $7A, the crash explosive: 200 points, removed the same way (explosive_lands). $7B and above stop the bullet and score nothing. Every scoring hit plays the hit sound and adds 3 to % COMPLETED (add_completed)."
  },
  {
   "address": 8470,
   "type": "line",
   "text": "Writes character 0 into column 39 of rows 14 to 20 each frame the bullet flies, so that move_bullet stops at the right edge; the border hides that column. They cover every row Tex's gun can be on, standing or at any height of a jump."
  },
  {
   "address": 8484,
   "type": "line",
   "text": "Seven row offsets, 0 to 240 in steps of 40, for bullet_stop."
  },
  {
   "address": 8491,
   "type": "line",
   "text": "Starts a jump unless Tex is falling into a break ($C1) or already jumping: $23 = 1, ten steps in $24."
  },
  {
   "address": 8510,
   "type": "line",
   "text": "Steps a jump every second frame: rubs Tex out, then moves him up a row for the first five steps ($24 = 9 to 5) and down a row for the next five, redraws him, and ends the jump when the steps run out. The top of a jump is five rows up."
  },
  {
   "address": 8572,
   "type": "line",
   "text": "Draws OIL PRESSURE on row 0 from column 13: $29 full cells (character $4F), then the part cell (character $50, which it redraws from bar_fill_patterns with the fine part $28, 0 to 7), then empty cells ($51) to make 26 cells."
  },
  {
   "address": 8625,
   "type": "line",
   "text": "Takes A off the pressure, unless it has run out already ($6F). A borrow from the fine part $28 takes a whole cell from $29 and sets the fine part to 7, whatever was left. When the last cell goes, $6F = 1 and the main loop goes to pressure_out. Called by the main loop (1 at a time), break_pipe (4, or 2 for a break that is there already) and level_complete (1 a step while it counts the pressure into the score)."
  },
  {
   "address": 8657,
   "type": "line",
   "text": "Nine character patterns for a bar's part cell, 8 bytes each: a frame line top and bottom and a fill from none to all eight pixels, left to right. The bars' fine parts run 0 to 7, so the ninth, full, is never copied."
  },
  {
   "address": 8729,
   "type": "line",
   "text": "Draws % COMPLETED on row 1 from column 13: $2B full cells, the part cell (character $56, redrawn from bar_fill_patterns with $2A) and empty cells, 26 in all, as draw_pressure_bar does."
  },
  {
   "address": 8782,
   "type": "line",
   "text": "Adds A to the fine part of % COMPLETED ($2A); passing 8 adds a cell to $2B. When the call finds $2B already at 26 ($1A, the operand at $2255 that Plus/4 World's cheat lowers), it sets $9D instead and the level is complete. Called by the main loop, as Tex runs, and move_bullet, 3 for each hit."
  },
  {
   "address": 8810,
   "type": "line",
   "text": "Scrolls row 24 one pixel left a frame, not while paused. When the fine scroll ($1C) passes a character, moves the row left and puts the next character of message_text ($02/$03) in column 39, starting again at the end mark $FF."
  },
  {
   "address": 8874,
   "type": "line",
   "text": "The message along the bottom of the menu and the play screen, in PETSCII, printed with AND #$3F so @ shows as the character set's (C): TYCOON-TEX (C) 1985 , ANOTHER CLASSIC FROM GREMLIN GRAPHICS BY THE TYCOONS AT MICRO-PROJECTS LTD. ** TRY OUR OTHER GAMES - XARGON WARS AND THE PETALS OF DOOM. ** AS USUAL THANKS TO MATTHEW,JASON,MARK,IAN AND EVERYONE AT GREMLIN ! ** HI TO KATH,JOHN,CHRIS,DAVE AND THE OTHERS ! **--** and spaces, then $FF, the end mark."
  },
  {
   "address": 9166,
   "type": "line",
   "text": "Turns each of Tex's 15 characters $40-$4E ($3E00-$3E77) a quarter turn clockwise in place, through turn_buffer, for tex_death to lay him down."
  },
  {
   "address": 9214,
   "type": "line",
   "text": "Eight bytes of work space for turn_tex, which builds each turned character here before copying it back. As loaded they hold the digits 0 to 7."
  },
  {
   "address": 9222,
   "type": "line",
   "text": "Tex's death, every frame from irq_field, in play only. Waits for $7B. At game over ($7E) only sets the flags again. The first frame saves the enemy mask ($A6 to $DF) and clears it, so no enemy moves, freezes the legs ($8B), saves characters $40-$54 at $0400, switches draw_tex and erase_tex to tex_lying_layout, stops the controls ($7F), turns the characters (turn_tex), clears the enemies and the play field and draws him lying down. Then every second frame he sinks a pixel (sink_tex), 23 times, while $7D counts down from 24. At the end the characters and the layout go back, a life goes from the TYCOONS digit at $0C65 and from $80 (the two DEC instructions at $249D and $24A0 that Plus/4 World's unlimited-lives cheat changes to loads), and either the game is over ($7E and $7F set) or Tex starts again at column 1 with a fresh pipeline and the enemies back."
  },
  {
   "address": 9421,
   "type": "line",
   "text": "One step of Tex sinking: on every second step slows the pipe ($6D down by one, the skyline to half of it), then moves each of the five columns of the lying Tex down one pixel, characters $40-$42, $43-$45, $46-$48, $49-$4B and $4C-$4E, each a strip of 24 bytes."
  },
  {
   "address": 9491,
   "type": "line",
   "text": "Chooses the next piece of pipeline and copies its characters into piece_buffer. While the pipe is not being refilled ($37), every 18th call ($B1) made while $0D is negative builds a break instead (build_break). Scenes 0 and 1 pick one of three pieces of their own (scene0_pieces, scene1_pieces) at random, a roll of 3 counting in $92 and the ninth sending it to the common pieces; scene 2 always uses the common pieces (common_pieces), where a roll of 1 to 3 counts towards a decorated piece (rare_counts, rare_limits) and anything else gives the plain one."
  },
  {
   "address": 9671,
   "type": "line",
   "text": "Scene 0's three pipe pieces, each a first character and a length in characters, two characters a column: $EA (4), $EE (4) and $F2 (2)."
  },
  {
   "address": 9672,
   "type": "line",
   "text": "The length half of scene0_pieces, read as $25C8,X."
  },
  {
   "address": 9677,
   "type": "line",
   "text": "Scene 1's three pipe pieces, first character and length: $F4 (4), $F8 (4) and $FC (4)."
  },
  {
   "address": 9678,
   "type": "line",
   "text": "The length half of scene1_pieces, read as $25CE,X."
  },
  {
   "address": 9683,
   "type": "line",
   "text": "The four pipe pieces every scene can have, first character and length: the plain pipe $C8 (4), and three decorated pieces $D2 (4), $CC (4) and $D0 (2) that next_pipe_piece gives every 9th, 14th and 12th time their roll comes up."
  },
  {
   "address": 9684,
   "type": "line",
   "text": "The length half of common_pieces, read as $25D4,X."
  },
  {
   "address": 9691,
   "type": "line",
   "text": "How many times each decorated piece's roll has come up since it last appeared; next_pipe_piece writes them, and the play snapshot holds other values than the hand-over."
  },
  {
   "address": 9694,
   "type": "line",
   "text": "The counts at which each decorated piece appears: 9, 14 and 12."
  },
  {
   "address": 9697,
   "type": "line",
   "text": "The characters of the pipe piece being laid, up to 24, read two at a time by feed_pipe: the odd one goes to row 22, the even one to row 23."
  },
  {
   "address": 9698,
   "type": "line",
   "text": "The second byte of piece_buffer: feed_pipe reads the row-22 character of each column as $25E2,X."
  },
  {
   "address": 9721,
   "type": "line",
   "text": "Returns one of the random bytes $0D-$10, picked by the low two bits of TED's timer 1."
  },
  {
   "address": 9730,
   "type": "line",
   "text": "Puts the next column of the piece into column 39 of rows 22 and 23 from piece_buffer, and takes a new piece when this one is used up (next_pipe_piece)."
  },
  {
   "address": 9758,
   "type": "line",
   "text": "The RTS of feed_pipe. check_hiscore's SBC $261E,Y names it as the base of final_score, which starts a byte after it (Y runs 6 down to 1)."
  },
  {
   "address": 9759,
   "type": "line",
   "text": "The score at game over, six digits as screen codes, copied from the HUD by game_over for check_hiscore; enter_hiscore sets it back to 000000 once it is in the table."
  },
  {
   "address": 9765,
   "type": "line",
   "text": "Compares final_score with each entry of hiscore_table from the top, digit by digit, and at the first entry it beats enters it there (enter_hiscore) and redraws the table. A score equal to an entry does not beat it. Called by menu each time it starts."
  },
  {
   "address": 9815,
   "type": "line",
   "text": "Where each of the eight entries starts in hiscore_table: 0 to 98 in steps of 14."
  },
  {
   "address": 9823,
   "type": "line",
   "text": "The screen address of each entry's name on the table, rows 13 to 20 at column 11, for name entry."
  },
  {
   "address": 9824,
   "type": "line",
   "text": "The high bytes of hiscore_name_cells, read as $2660,X."
  },
  {
   "address": 9839,
   "type": "line",
   "text": "Puts final_score into the table at entry $82, moving the entries below it down one (the last drops off; the moved entry keeps the first digit of the one that was below it, since the copy stops a byte short), then runs name entry until fire: up and down step the letter under the cursor through A to Z, a space, and the characters ! to : (digits among them), left and right move the cursor over the seven letters. Each turn redraws the name with the cursor in another colour, stores it into the entry and waits."
  },
  {
   "address": 10051,
   "type": "line",
   "text": "Colours the seven cells of the name being entered: $71 under the cursor ($83), $11 for the rest."
  },
  {
   "address": 10069,
   "type": "line",
   "text": "The seven letters of the name being entered, as screen codes; enter_hiscore starts them all at A. As loaded they hold the digits 0 to 6."
  },
  {
   "address": 10076,
   "type": "line",
   "text": "THE TYCOONS! and, after it, \"  THE MENU  \", the two headings draw_hiscores puts over the table and the menu."
  },
  {
   "address": 10088,
   "type": "line",
   "text": "\"  THE MENU  \", the heading over the menu, which draw_hiscores prints after THE TYCOONS!."
  },
  {
   "address": 10100,
   "type": "line",
   "text": "Draws the high-score table, rows 13 to 20 from column 2, and its two headings. Each line has its rank, a dot, the score with its leading zeros left blank (the tens digit always shows), a dash and the name; the rank, the dot and the name take a colour picked at random from TED's timer (never 0), and the score and the dash keep the colour their cells had."
  },
  {
   "address": 10272,
   "type": "line",
   "text": "Draws the five menu items, starting with the one in the window ($1829) at row 14, column 23, then the other four on rows 17 to 20 in turn, each 14 characters and each in its own colour ($51 plus its number)."
  },
  {
   "address": 10367,
   "type": "line",
   "text": "The steps between the menu's lines, read from the end: 120 after the window line (three rows), then 40."
  },
  {
   "address": 10372,
   "type": "line",
   "text": "The five menu items, 16 bytes each, of which draw_menu shows 14: the difficulty (\"     EASY     \"), NO. OF LIVES:3, SOUND: OFF, PLAY THE GAME and WATCH THE DEMO. menu_choose rewrites the difficulty, the lives digit at $28A1 and the OFF or ON at $28AD."
  },
  {
   "address": 10373,
   "type": "line",
   "text": "The difficulty in the first menu item, 12 characters, which menu_choose rewrites from difficulty_text."
  },
  {
   "address": 10401,
   "type": "line",
   "text": "The lives digit of NO. OF LIVES, which menu_choose rewrites and start_game copies into the HUD."
  },
  {
   "address": 10413,
   "type": "line",
   "text": "OFF or ON in the SOUND item, rewritten by menu_choose from off_on_text."
  },
  {
   "address": 10452,
   "type": "line",
   "text": "The menu's controls: fire carries out the item in the window (menu_choose), up brings the next item into the window and down the one before, round the five. Then redraws the items."
  },
  {
   "address": 10499,
   "type": "line",
   "text": "Draws the menu's frame: two boxes of character $58, the window's top and bottom lines ($59, $5A) and its ends ($5B, $5C), the top three rows filled with $58, the logo (show_logo_chars, logo_row) on row 1, and the control picture on rows 9 to 11, columns 18 to 21, between the two boxes (control_cells, control_chars, control_colours)."
  },
  {
   "address": 10651,
   "type": "line",
   "text": "The characters of TYCOON TEX in the logo's own characters $5D-$6A, for row 1 from column 10, ending with a 0 that is also the first entry of control_cells."
  },
  {
   "address": 10671,
   "type": "line",
   "text": "Where each of the 12 cells of the control picture goes, as offsets from row 9, column 18: four columns by three rows."
  },
  {
   "address": 10683,
   "type": "line",
   "text": "The 12 characters of the control picture: a strip of small lettering ($3C-$3F) on top and the keyboard or joystick picture ($1B-$1E, menu_keys) between two posts ($55, $57)."
  },
  {
   "address": 10695,
   "type": "line",
   "text": "The colours of the control picture's 12 cells."
  },
  {
   "address": 10707,
   "type": "line",
   "text": "Starts a game: clears zero page, takes the lives from the menu, draws the HUD and the lives digit, puts Tex at column 1, then sets level 0 and scene $FF and starts level 1 (next_level), draws both bars and counts down 3, 2, 1, GO! (countdown). The DEX at $2A0B that makes the level 0 is where Plus/4 World's starting-level cheat calls its patch at $36E3. Then the main loop."
  },
  {
   "address": 10788,
   "type": "line",
   "text": "The main loop. Waits while paused; goes to game_over when the game ends ($7E) and to quit_game when ESC was pressed ($E6). Each pass waits loop_pace ($68), and every drain_rate passes ($69) takes 1 from the pressure. Then moves the bouncy bomb and the crash explosive (move_bombs). While Tex's speed is above 0, every 24th pass adds 1 to the score and a step to % COMPLETED that grows with the speed (completed_rates). Then the level is complete when $9D is set (level_complete) and lost when the pressure has run out (pressure_out)."
  },
  {
   "address": 10866,
   "type": "line",
   "text": "The end of a game. From the demo it goes to quit_game, which clears the demo flag and comes back here. Otherwise stops play, clears the enemies and the play field, bounces THE END (the_end), copies the score from the HUD into final_score and goes to the menu, which checks it for the table."
  },
  {
   "address": 10905,
   "type": "line",
   "text": "How much each pass of the main loop that adds to % COMPLETED adds at each speed: 0, 1, 2, 3, 3, 3, 4, 4 eighths of a cell."
  },
  {
   "address": 10913,
   "type": "line",
   "text": "The way out after ESC or the end of the demo: sets the score on screen back to 000000, clears the quit flag, the bullet, the jump and the demo flag, sets $37, then goes through game_over, which for the demo flag now clear runs THE END and the table. Leaving the demo this way shows THE END too."
  },
  {
   "address": 10941,
   "type": "line",
   "text": "Carries out the menu item in the window. PLAY THE GAME and WATCH THE DEMO end the menu ($8D), the demo with $182C set. NO. OF LIVES counts 1 to 6 and round, and writes the digit into the item. SOUND switches between OFF and ON (off_on_text). The difficulty steps EASY, HARD, IMPOSSIBLE and round, writing the word into the item (difficulty_text)."
  },
  {
   "address": 11061,
   "type": "line",
   "text": "OFF and ON, three characters each, for the SOUND item."
  },
  {
   "address": 11067,
   "type": "line",
   "text": "The three difficulty words as the menu shows them, each ending with a 0: \"    EASY    \", \"    HARD    \" and \"IMPOSSIBLE !\"."
  },
  {
   "address": 11106,
   "type": "line",
   "text": "Where each difficulty word starts in difficulty_text: 0, 13 and 26."
  },
  {
   "address": 11109,
   "type": "line",
   "text": "The menu, entered at power-on from start and after every game. Stops play, sets the scene's colours and the menu's own, seeds the random numbers, puts Tex at column 19 running on the spot with the pipe scrolling at 3 pixels a frame, draws the HUD, the frame and the items, installs the interrupt and checks the last score for the table (check_hiscore). Then, every turn, redraws the table (in new colours) and reads the controls (menu_input) until PLAY THE GAME or WATCH THE DEMO ends the menu. Its 256th count of $E8 starts the demo, after 255 turns, however many settings were changed meanwhile: only those two items end the count. On the way out it puts back the characters the logo borrowed and starts the game (start_game)."
  },
  {
   "address": 11246,
   "type": "line",
   "text": "Moves the menu's patterned characters a pixel every second call: the boxes' character $58 and the window's top line $59 roll down, its bottom line $5A rolls up, its left end $5B rolls right and its right end $5C left, so the arrows of the window all creep inwards; and rows 2 to 5 of characters $3C-$3F, the strip of lettering in the control picture, scroll left as one 32-pixel strip."
  },
  {
   "address": 11368,
   "type": "line",
   "text": "Every fourth frame (irq_scroller) copies the next of six frames over the star character $2A, so every star on the screen grows and shrinks: frames 0, 1, 2, 3, 2, 1 of star_frames."
  },
  {
   "address": 11397,
   "type": "line",
   "text": "The six steps of the star's twinkle, as offsets into star_frames: 0, 8, 16, 24, 16, 8."
  },
  {
   "address": 11403,
   "type": "line",
   "text": "The star character in four sizes, 8 bytes each, from a dot to a large star."
  },
  {
   "address": 11435,
   "type": "line",
   "text": "The menu's work in the interrupt (irq_frame): the logo's colours, then the moving characters (cycle_logo_colours, animate_menu_chars)."
  },
  {
   "address": 11442,
   "type": "line",
   "text": "While the logo is on row 1, every 20th call moves each of its 20 cells on to the next colour, 1 to 7 and round, keeping the brightness."
  },
  {
   "address": 11486,
   "type": "line",
   "text": "Copies the scene's 15 colours from scene_colours: the pipe's two colours, its cells' colour and background ($9A, $9B, $9C, $76), the skyline's ($97, $98, $99, $75), the play field's two colours and background ($94, $95, $96), Tex's colour ($19), the message row's ($6A) and the two colours of THE END (the_end_colours)."
  },
  {
   "address": 11572,
   "type": "line",
   "text": "The colours of each of the three scenes, 16 bytes each in the order set_scene_colours reads them; the 16th byte of each is not read."
  },
  {
   "address": 11573,
   "type": "line",
   "text": "The second colour of each scene, the pipe's second colour ($9B), read as $2D35,X."
  },
  {
   "address": 11574,
   "type": "line",
   "text": "The third colour of each scene, the colour of the pipe's cells ($9C)."
  },
  {
   "address": 11575,
   "type": "line",
   "text": "The fourth colour of each scene, the pipe's background ($76)."
  },
  {
   "address": 11576,
   "type": "line",
   "text": "The fifth colour of each scene, the skyline's first colour ($97)."
  },
  {
   "address": 11577,
   "type": "line",
   "text": "The sixth colour of each scene, the skyline's second colour ($98)."
  },
  {
   "address": 11578,
   "type": "line",
   "text": "The seventh colour of each scene, the colour of the skyline's cells ($99)."
  },
  {
   "address": 11579,
   "type": "line",
   "text": "The eighth colour of each scene, the skyline's background ($75)."
  },
  {
   "address": 11580,
   "type": "line",
   "text": "The ninth colour of each scene, the play field's first colour ($94)."
  },
  {
   "address": 11581,
   "type": "line",
   "text": "The tenth colour of each scene, the play field's second colour ($95)."
  },
  {
   "address": 11582,
   "type": "line",
   "text": "The eleventh colour of each scene, the play field's background ($96)."
  },
  {
   "address": 11583,
   "type": "line",
   "text": "The twelfth colour of each scene, Tex's colour ($19)."
  },
  {
   "address": 11584,
   "type": "line",
   "text": "The thirteenth colour of each scene, the colour of the message row ($6A)."
  },
  {
   "address": 11585,
   "type": "line",
   "text": "The fourteenth colour of each scene, THE END's colour going up ($3458)."
  },
  {
   "address": 11586,
   "type": "line",
   "text": "From the fifteenth colour of scene 0, THE END's colour going down ($3459), read as $2D42,X, to the end of scene_colours: the rest of scene 0 and scenes 1 and 2."
  },
  {
   "address": 11620,
   "type": "line",
   "text": "Moves the arrow and the jet, every frame from irq_field, in play and not while paused. The arrow (mask bit 0): while it is away its delay ($A0) counts down on frames when $0D is at least the level's threshold ($E5); then it appears at row 19, column 36, and moves one column left a frame to column 0, where it goes and a new delay starts from $E3. In between, every second frame, the jet's bomb falls a row (move_jet_bomb). The jet (mask bit 2): its delay ($A4) counts on frames when $0F reaches the threshold; it appears at row 8, column 0, with a column picked at random from 2 to 33 to drop its bomb at, and moves one column right every second frame to column 36, where a new delay starts from $E4."
  },
  {
   "address": 11853,
   "type": "line",
   "text": "Drops the jet's bomb one row below and three columns right of the jet ($49/$4A), with its fall count ($B4) at 0."
  },
  {
   "address": 11878,
   "type": "line",
   "text": "Moves the jet's bomb down a row, every second frame; after 11 rows it reaches the pipe (end_jet_bomb)."
  },
  {
   "address": 11913,
   "type": "line",
   "text": "Ends the jet's bomb: rubs it out, and unless it was shot ($C8), from level 7 on (mask bit 4) it breaks the pipe under it (break_pipe)."
  },
  {
   "address": 11947,
   "type": "line",
   "text": "Draws the arrow (irq_frame) when it has moved ($A1): eight cells at arrow_cells, four columns by two rows, in its colour ($A7); the fourth column is a space that rubs out its trail. When it has gone ($9F), rubs the eight cells out."
  },
  {
   "address": 12000,
   "type": "line",
   "text": "The arrow's eight characters, $5D-$5F and a space, then $60-$62 and a space."
  },
  {
   "address": 12008,
   "type": "line",
   "text": "Where the arrow's eight characters go: offsets 0 to 3 and 40 to 43."
  },
  {
   "address": 12016,
   "type": "line",
   "text": "Draws the jet's bomb when it has moved (draw_jet_bomb), then the jet (irq_frame) when it has moved ($A5): twelve cells, six columns by two rows, in its colour ($A8), the first column a space that rubs out its trail. When the jet has gone ($A3), rubs the twelve cells out."
  },
  {
   "address": 12076,
   "type": "line",
   "text": "The jet's twelve characters: a space and $63-$67, then a space and $68-$6C."
  },
  {
   "address": 12088,
   "type": "line",
   "text": "Where the jet's twelve characters go: offsets 0 to 5 and 40 to 45."
  },
  {
   "address": 12100,
   "type": "line",
   "text": "Draws the jet's bomb, characters $73 and $74 in its colour ($B6) on the row below its position, after rubbing out the row it has left."
  },
  {
   "address": 12139,
   "type": "line",
   "text": "The main loop's enemies: the bouncy bomb (mask bit 1, move_bouncy_bomb) and the crash explosive (mask bit 3, move_explosive), so these two move at the main loop's pace, which the difficulty sets."
  },
  {
   "address": 12158,
   "type": "line",
   "text": "Clears the enemy mask ($A6) and every enemy's active and draw flags, and the jet's bomb. Called when Tex dies, at game over, when a level is complete and when the pressure runs out."
  },
  {
   "address": 12185,
   "type": "line",
   "text": "Draws the bouncy bomb (irq_frame): rubs out its last place ($AD, at $47/$48), then draws its six characters $6D-$72, two columns by three rows, at its place ($43/$44) in its colour ($AA) when it has moved ($AC)."
  },
  {
   "address": 12244,
   "type": "line",
   "text": "Where the bouncy bomb's six characters go: offsets 0, 1, 40, 41, 80 and 81, for $6D to $72."
  },
  {
   "address": 12250,
   "type": "line",
   "text": "Moves the bouncy bomb, once each pass of the main loop. While it is away its delay ($B0) counts down on passes when $0F is at least the threshold ($E5). It appears at column 37 on one of rows 12 to 18, picked at random (bouncy_starts), going down, then moves one column left each pass and a row down or up, turning at rows 10 and 19, for 37 steps; at column 0 it goes and a new delay starts from $E1."
  },
  {
   "address": 12416,
   "type": "line",
   "text": "The screen addresses where a bouncy bomb can appear: column 37 of rows 12 to 18."
  },
  {
   "address": 12417,
   "type": "line",
   "text": "The high bytes of bouncy_starts, read as $3081,X."
  },
  {
   "address": 12430,
   "type": "line",
   "text": "Builds a break in the pipe into piece_buffer: the left edge (characters $D6-$D9), one to three middles picked at random from $DE, $E2 and $E6 (four characters each; only up to two before level 4, $64 = 2), and the right edge ($DD down to $DA). Each part is two columns."
  },
  {
   "address": 12551,
   "type": "line",
   "text": "Work space for build_break: the first character of each middle of the break being built."
  },
  {
   "address": 12555,
   "type": "line",
   "text": "A bomb or a crash explosive hitting the pipe at the address in X and Y. If any of the ten cells two rows below, from five columns left to four right, already holds a break character ($D7 to $E9), it takes 2 from the pressure. Otherwise it draws a new break six columns wide across rows 22 and 23 (break_chars at break_cells) and takes 4. The pipe then scrolls the break towards Tex like any other."
  },
  {
   "address": 12607,
   "type": "line",
   "text": "The twelve characters of a break a bomb makes: the top row $D7, $D9, $DF, $E1, $DC, $DA, then the bottom row $D6, $D8, $DE, $E0, $DD, $DB, the same edges and middle a break in the pipe's feed has."
  },
  {
   "address": 12619,
   "type": "line",
   "text": "Where break_pipe puts the twelve characters: offsets 79 to 84 and 119 to 124 from the given address, two and three rows down."
  },
  {
   "address": 12631,
   "type": "line",
   "text": "Moves the crash explosive, once each pass of the main loop. While it is away its delay ($B9) counts down on passes when $0E is at least the threshold. It appears at column 35 on one of rows 10 to 17, picked at random (explosive_starts), flies left 3 to 10 columns, then drops a row and a column left each pass until it lands on row 20 (explosive_lands)."
  },
  {
   "address": 12760,
   "type": "line",
   "text": "The crash explosive ends: marked away, rubbed out, a new delay from $E2, and unless it was shot ($C8) it breaks the pipe under it (break_pipe). move_bullet calls it too, with $C8 set, when the explosive is shot."
  },
  {
   "address": 12788,
   "type": "line",
   "text": "The screen addresses where a crash explosive can appear: column 35 of rows 10 to 17."
  },
  {
   "address": 12789,
   "type": "line",
   "text": "The high bytes of explosive_starts, read as $31F5,X."
  },
  {
   "address": 12804,
   "type": "line",
   "text": "Draws the crash explosive (irq_frame): rubs out its last place ($BD, at $4D/$4E), then draws its six characters $75-$7A, three columns by two rows, at its place ($4B/$4C) in its colour ($BE) when it has moved ($BC)."
  },
  {
   "address": 12863,
   "type": "line",
   "text": "Where the crash explosive's six characters go: offsets 0, 1, 2, 40, 41 and 42."
  },
  {
   "address": 12869,
   "type": "line",
   "text": "Adds A to the score's last digit (add_score with Y = 5)."
  },
  {
   "address": 12871,
   "type": "line",
   "text": "Adds A to digit Y of the score, which lives on the screen at $0C56-$0C5B (0 the hundred thousands, 5 the units), carrying into the digits to its left. Each time the ten-thousands digit changes ($E7) Tex gets a life, up to 9, and the TYCOONS digit goes up: a life for every 10,000 points."
  },
  {
   "address": 12920,
   "type": "line",
   "text": "Starts an explosion at the screen address in X and Y, the place of what was hit: $51/$52 is set two rows above it (its colours at $53/$54), the top-left corner of the explosion's five by five cells, whose centre is the address's own row two columns to the right. It is shown ($C4), Tex cannot fire meanwhile ($C2), and its step ($C3) starts at 0."
  },
  {
   "address": 12950,
   "type": "line",
   "text": "Moves the explosion on a step every second frame (irq_field), not while paused; after 8 steps it is over and Tex can fire again."
  },
  {
   "address": 12984,
   "type": "line",
   "text": "Draws the explosion's step (irq_frame): steps 1 to 4 draw rings of 1, 4, 8 and 8 solid blocks (character $7B) in the step's colour, steps 5 to 8 rub out the same rings in the other order, from the tables explosion_colours, explosion_cells and explosion_rings."
  },
  {
   "address": 13037,
   "type": "line",
   "text": "The colour of each of the explosion's eight steps; the last four only rub out."
  },
  {
   "address": 13045,
   "type": "line",
   "text": "The explosion's cells as offsets from its origin: the centre, then the four round it, then two rings of eight."
  },
  {
   "address": 13066,
   "type": "line",
   "text": "For each of the eight steps, how many cells less one and where they start in explosion_cells."
  },
  {
   "address": 13067,
   "type": "line",
   "text": "The start halves of explosion_rings, read as $330B,X."
  },
  {
   "address": 13082,
   "type": "line",
   "text": "Counts down at the start of a game: 3, 2, 1, GO! and a blank, each a big glyph of solid blocks at row 11, column 13 (draw_big_glyph) in its own colour, with a pause after each."
  },
  {
   "address": 13126,
   "type": "line",
   "text": "The colours of the countdown's five glyphs."
  },
  {
   "address": 13131,
   "type": "line",
   "text": "Draws a glyph 16 cells wide and 9 high at the address in $55/$56 from the 18 bytes at $57/$58: each set bit a solid block ($7B), each clear bit a space, in the colour $D8."
  },
  {
   "address": 13209,
   "type": "line",
   "text": "The countdown's five glyphs, 18 bytes each (nine rows of 16 bits): 3, 2, 1, GO! and a blank that rubs out the last."
  },
  {
   "address": 13299,
   "type": "line",
   "text": "THE END at the end of a game: THE starts at row 8, column 2, and END at row 12, column 22, and for 80 steps each bounces up and down five rows, the two in opposite directions, in a colour that changes with its direction (the_end_colours). The glyphs' blank top and bottom rows rub out the row each leaves."
  },
  {
   "address": 13400,
   "type": "line",
   "text": "The colours of THE END, one going down, one going up, written by set_scene_colours from the scene; the play snapshot holds other values than the hand-over."
  },
  {
   "address": 13401,
   "type": "line",
   "text": "THE END's second colour, for the word going down."
  },
  {
   "address": 13402,
   "type": "line",
   "text": "Moves THE a row down or up and turns it after five rows."
  },
  {
   "address": 13458,
   "type": "line",
   "text": "Moves END a row down or up and turns it after five rows."
  },
  {
   "address": 13514,
   "type": "line",
   "text": "A second copy, byte for byte, of draw_big_glyph, which the_end calls."
  },
  {
   "address": 13592,
   "type": "line",
   "text": "THE as a big glyph, nine rows of 16 bits, the first and last blank."
  },
  {
   "address": 13610,
   "type": "line",
   "text": "END as a big glyph, nine rows of 16 bits, the first and last blank."
  },
  {
   "address": 13628,
   "type": "line",
   "text": "The menu's keys, every frame from irq_frame: J sets joystick mode and K keyboard mode. Then copies the matching picture, keyboard_icon or joystick_icon, into characters $1B-$1E for the control picture."
  },
  {
   "address": 13680,
   "type": "line",
   "text": "Characters $1B-$1E of the control picture in keyboard mode: a key with a K on it, four characters of 8 bytes."
  },
  {
   "address": 13712,
   "type": "line",
   "text": "Characters $1B-$1E of the control picture in joystick mode: a joystick, four characters of 8 bytes. The hand-over's character set holds this picture."
  },
  {
   "address": 13744,
   "type": "line",
   "text": "The keyboard's controls, in keyboard mode (read_controls): Z left, X right, ; up and jump, / down and RETURN fire, into $07-$0B, and $0C set when any is held."
  },
  {
   "address": 13765,
   "type": "line",
   "text": "Selects the keyboard row in Y (writing it to $FD30 and $FF08) and tests the column bits in A: carry set and $0C = 1 when the key is down."
  },
  {
   "address": 13784,
   "type": "line",
   "text": "The column bit of each of read_keys's five keys: Z, X, ;, / and RETURN."
  },
  {
   "address": 13789,
   "type": "line",
   "text": "The keyboard row of each of read_keys's five keys."
  },
  {
   "address": 13794,
   "type": "line",
   "text": "The keys in play (irq_frame), not while Tex dies: ESC quits the game ($E6); SPACE pauses ($D9) and C= carries on."
  },
  {
   "address": 13851,
   "type": "line",
   "text": "Steps both sound effects every frame (irq_scroller) while the sound is on: the shot (tick_shot_sound) and the hit (tick_hit_sound)."
  },
  {
   "address": 13864,
   "type": "line",
   "text": "The sixgun's sound, when the sound is on: voice 1 at frequency $301 (the 3 ORed into $FF12) with every volume bit set, which TED plays at its loudest, for 20 frames."
  },
  {
   "address": 13902,
   "type": "line",
   "text": "Steps the shot's sound: its frequency's low byte falls by 8 a frame, and after 20 frames voice 1 goes off. On each borrow it ORs a lower high byte into $FF10, which is voice 2's, not into $FF12, voice 1's, so voice 1 keeps $3xx: after a moment at $301 the shot sweeps from $3F9 down to $369."
  },
  {
   "address": 13947,
   "type": "line",
   "text": "The sound of a hit, when the sound is on: voice 2's noise at frequency $3FF with every volume bit set."
  },
  {
   "address": 13976,
   "type": "line",
   "text": "Steps the hit's sound: voice 2's frequency falls by 14 a frame until it would pass 0, about 18 frames, then the voice goes off."
  },
  {
   "address": 14006,
   "type": "line",
   "text": "Copies the scene's enemy shapes into the character set: the arrow into characters $5D-$62, the bouncy bomb into $6D-$72 and the crash explosive into $75-$7A, 48 bytes each from arrow_shapes, bouncy_shapes and explosive_shapes. Sets all five enemy colours to $78."
  },
  {
   "address": 14051,
   "type": "line",
   "text": "Fifteen bytes no instruction refers to: the character codes 78 7A 7B 7C 7D, three times with a 79 once. Plus/4 World's starting-level cheat writes its patch here."
  },
  {
   "address": 14066,
   "type": "line",
   "text": "The arrow's six characters for each of the three scenes, 48 bytes each (set_scene_graphics)."
  },
  {
   "address": 14210,
   "type": "line",
   "text": "The bouncy bomb's six characters for each of the three scenes, 48 bytes each."
  },
  {
   "address": 14354,
   "type": "line",
   "text": "The crash explosive's six characters for each of the three scenes, 48 bytes each."
  },
  {
   "address": 14498,
   "type": "line",
   "text": "The level is complete. Waits until Tex is not dying, then stops play and clears the enemies, puts Tex back at column 1, and frames * CONGRATULATIONS ! * on row 13 in stars with LEVEL: nn COMPLETED on row 17, the level from $62. Then counts the pressure into the score, a point for each eighth of a cell left and one more, since lose_pressure runs out only when the cells go below 0, with a tone on voice 2 whose pitch is the pressure left (when the sound is on). Then a pause and the next level (next_level)."
  },
  {
   "address": 14687,
   "type": "line",
   "text": "The two lines of level_complete, 21 characters each: * CONGRATULATIONS ! * and \" LEVEL: 00 COMPLETED \", whose 00 level_complete overwrites on the screen."
  },
  {
   "address": 14708,
   "type": "line",
   "text": "The second line of level_complete, \" LEVEL: 00 COMPLETED \", printed on row 17."
  },
  {
   "address": 14729,
   "type": "line",
   "text": "The pressure has run out: the end of the game, however many lives are left. Stops play, clears the enemies and the field, stands Tex at column 18, frames bad_news_text in stars on rows 9 to 15 and types it out a letter at a time, waits and goes to game_over."
  },
  {
   "address": 14887,
   "type": "line",
   "text": "The base of each enemy's delay before it comes back ($E1-$E4, next_level), one value for each group of levels: 128 for levels 1 to 19, 100 for 20 to 39, 58 for 40 to 59, 1 for 60 to 79. The level is decimal (BCD), and the group comes from bits 5 and 6 of it, so levels 80 to 99 get the first value again."
  },
  {
   "address": 14891,
   "type": "line",
   "text": "The main loop's pace for EASY, HARD and IMPOSSIBLE: 24, 16 and 8 for delay. Less is faster."
  },
  {
   "address": 14894,
   "type": "line",
   "text": "How many passes of the main loop each eighth of a cell of pressure lasts, for EASY, HARD and IMPOSSIBLE: 24, 19 and 14."
  },
  {
   "address": 14897,
   "type": "line",
   "text": "Starts the next level: the level ($62, decimal) goes up by one and the scene ($1826) moves on, 0, 1, 2 and round. The enemies come from the level: level 1 the jet, 2 the bouncy bomb, 3 the crash explosive; levels 4 to 6 two kinds and 7 to 9 three, at random (enemy_pairs, enemy_triples); from 10 all four. The threshold that lets their delays count ($E5) falls as they come: $B0 to level 3, $80 to 6, $40 to 9, then 1. From level 7 the jet's bombs break the pipe too (mask bit 4), and from level 4 a break can have three middles ($64). Then sets the delays (enemy_delays), the pace and the drain from the difficulty, the scene's colours, the HUD's colours, the enemies' shapes, a fresh pipe, a full pressure bar (25 cells and 7 eighths), an empty % COMPLETED, and 12 for each enemy's first delay."
  },
  {
   "address": 15124,
   "type": "line",
   "text": "The enemy masks for levels 4 to 6, two kinds each: arrow and bouncy bomb, arrow and jet, arrow and crash explosive, bouncy bomb and jet, bouncy bomb and crash explosive, jet and crash explosive."
  },
  {
   "address": 15130,
   "type": "line",
   "text": "The enemy masks for levels 7 to 9, three kinds each: all four but the crash explosive, but the jet, but the bouncy bomb, and but the arrow."
  },
  {
   "address": 15134,
   "type": "line",
   "text": "The demo's controls, in place of the player's (read_controls). Holds right until Tex reaches column 16 ($8C), then from column 12 rightwards goes left on about one frame in eight ($0E below $20), otherwise right on about one in eight ($0D from $E0), fires on about one frame in sixteen ($10 below $10), and jumps when the cell of the pipe's top row just ahead of his feet holds a character $D6 to $DC, an edge of a break."
  },
  {
   "address": 15217,
   "type": "line",
   "text": "Saves characters $5D-$6A at $0560 and puts the logo's characters in their place (logo_chars), for the menu; menu puts them back when it ends."
  },
  {
   "address": 15235,
   "type": "line",
   "text": "The 14 characters of the TYCOON TEX logo, 8 bytes each, which show_logo_chars copies over characters $5D-$6A."
  },
  {
   "address": 15347,
   "type": "line",
   "text": "Thirteen bytes of $FF before the character set, which no instruction refers to."
  },
  {
   "address": 15360,
   "type": "line",
   "text": "The character set of the HUD, the play field and the message, 128 characters at $3C00. Characters $00-$3B are a font in the order of the screen codes, with (C) for @: the HUD and every message are printed with AND #$3F. Some are pictures: $1B-$1E the control picture's icon (menu_keys rewrites them), $1F a solid block and $2A the star (twinkle_star)."
  },
  {
   "address": 15576,
   "type": "line",
   "text": "Characters $1B-$1E, the control picture's icon, which menu_keys rewrites every frame at the menu from keyboard_icon or joystick_icon; then characters $1F-$29 of the font, a solid block, the space and the signs."
  },
  {
   "address": 15696,
   "type": "line",
   "text": "Character $2A, the star, which twinkle_star rewrites from star_frames; then characters $2B-$3B of the font, the signs, the digits, the colon and the semicolon."
  },
  {
   "address": 15840,
   "type": "line",
   "text": "Characters $3C-$3F: a strip of small lettering between two lines, the top of the control picture, which animate_menu_chars scrolls left."
  },
  {
   "address": 15842,
   "type": "line",
   "text": "Row 2 of character $3C, the first byte of the lettering strip's moving rows, read as $3DE2,X."
  },
  {
   "address": 15850,
   "type": "line",
   "text": "Row 2 of character $3D, in the lettering strip's moving rows."
  },
  {
   "address": 15858,
   "type": "line",
   "text": "Row 2 of character $3E, in the lettering strip's moving rows."
  },
  {
   "address": 15866,
   "type": "line",
   "text": "Row 2 of character $3F, the right end of the lettering strip's moving rows, where the bit that leaves the left end comes back in."
  },
  {
   "address": 15872,
   "type": "line",
   "text": "Tex, characters $40-$4E, three columns by five rows (tex_layout); animate_legs rewrites the bottom two rows ($49-$4E), turn_tex and sink_tex rework all fifteen when he dies."
  },
  {
   "address": 15873,
   "type": "line",
   "text": "The second byte of Tex's first strip, characters $40-$42, which sink_tex shifts down a byte at a time (STA $3E01,X)."
  },
  {
   "address": 15896,
   "type": "line",
   "text": "Character $43, the top of Tex's second strip, $43-$45, for sink_tex."
  },
  {
   "address": 15897,
   "type": "line",
   "text": "The second byte of Tex's second strip, for sink_tex."
  },
  {
   "address": 15920,
   "type": "line",
   "text": "Character $46, the top of Tex's third strip, $46-$48, for sink_tex."
  },
  {
   "address": 15921,
   "type": "line",
   "text": "The second byte of Tex's third strip, for sink_tex."
  },
  {
   "address": 15944,
   "type": "line",
   "text": "Character $49, the top of Tex's legs and of his fourth strip, $49-$4B: animate_legs copies its frames to $3E48 and sink_tex shifts the strip."
  },
  {
   "address": 15945,
   "type": "line",
   "text": "The second byte of Tex's fourth strip, for sink_tex."
  },
  {
   "address": 15968,
   "type": "line",
   "text": "Character $4C, the top of Tex's fifth strip, $4C-$4E, for sink_tex."
  },
  {
   "address": 15969,
   "type": "line",
   "text": "The second byte of Tex's fifth strip, for sink_tex."
  },
  {
   "address": 15992,
   "type": "line",
   "text": "Characters $4F-$54: a full bar cell, the pressure bar's part cell (draw_pressure_bar rewrites it), an empty cell, the bullet ($52) and the bars' two rounded ends."
  },
  {
   "address": 16000,
   "type": "line",
   "text": "Character $50, the pressure bar's part cell, which draw_pressure_bar rewrites from bar_fill_patterns; then $51, an empty cell, $52, the bullet, and $53 and $54, the bars' rounded ends."
  },
  {
   "address": 16040,
   "type": "line",
   "text": "Characters $55-$57: the top post of the control picture, the % COMPLETED part cell (draw_completed_bar rewrites it), and the bottom post."
  },
  {
   "address": 16048,
   "type": "line",
   "text": "Character $56, the % COMPLETED bar's part cell, which draw_completed_bar rewrites; then $57, the control picture's bottom post."
  },
  {
   "address": 16064,
   "type": "line",
   "text": "Characters $58-$5C, the menu's patterned box and the window's top line, bottom line and two ends, which animate_menu_chars rolls."
  },
  {
   "address": 16065,
   "type": "line",
   "text": "The second row of character $58, the boxes' pattern, where animate_menu_chars moves each row down one."
  },
  {
   "address": 16071,
   "type": "line",
   "text": "The last row of character $58, which animate_menu_chars carries round to the top."
  },
  {
   "address": 16072,
   "type": "line",
   "text": "Character $59, the window's top line, a V that animate_menu_chars rolls down."
  },
  {
   "address": 16073,
   "type": "line",
   "text": "The second row of character $59, for animate_menu_chars."
  },
  {
   "address": 16079,
   "type": "line",
   "text": "The last row of character $59, carried round to the top."
  },
  {
   "address": 16080,
   "type": "line",
   "text": "Character $5A, the window's bottom line, a ^ that animate_menu_chars rolls up: its first row goes round to the bottom."
  },
  {
   "address": 16081,
   "type": "line",
   "text": "The second row of character $5A, which animate_menu_chars moves up one."
  },
  {
   "address": 16087,
   "type": "line",
   "text": "The last row of character $5A, where the first row comes back in."
  },
  {
   "address": 16088,
   "type": "line",
   "text": "Character $5B, the window's left end, a >, whose rows animate_menu_chars rotates right."
  },
  {
   "address": 16096,
   "type": "line",
   "text": "Character $5C, the window's right end, a <, whose rows animate_menu_chars rotates left."
  },
  {
   "address": 16104,
   "type": "line",
   "text": "Characters $5D-$62, the arrow, which set_scene_graphics replaces at every level from arrow_shapes; at the menu show_logo_chars borrows $5D-$6A for the logo."
  },
  {
   "address": 16152,
   "type": "line",
   "text": "Characters $63-$6C, the jet's two rows of five (draw_jet), the same in every scene."
  },
  {
   "address": 16232,
   "type": "line",
   "text": "Characters $6D-$72, the bouncy bomb, replaced at every level from bouncy_shapes."
  },
  {
   "address": 16280,
   "type": "line",
   "text": "Characters $73 and $74, the jet's bomb."
  },
  {
   "address": 16296,
   "type": "line",
   "text": "Characters $75-$7A, the crash explosive, replaced at every level from explosive_shapes."
  },
  {
   "address": 16344,
   "type": "line",
   "text": "Character $7B, a solid block, for the explosions and the big glyphs. Characters $7C-$7F follow: a second solid block and three of what look like leftover bytes; nothing this run found draws them."
  }
 ]
}