{
 "schema": 1,
 "platform": "c64",
 "game": "darkman",
 "part": "level2",
 "build": "PAL original, two-sided G64; level 1 load in play",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    2591,
    "Loader and resident code"
   ],
   [
    39424,
    48895,
    "Loader and resident code"
   ],
   [
    65520,
    65535,
    "Loader and resident code"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    2591,
    "Loader and resident code"
   ],
   [
    39424,
    48895,
    "Loader and resident code"
   ],
   [
    65520,
    65535,
    "Loader and resident code"
   ]
  ]
 },
 "blocks": [
  {
   "start": 2592,
   "end": 2602,
   "type": "Code"
  },
  {
   "start": 2603,
   "end": 2609,
   "type": "Undefined"
  },
  {
   "start": 2610,
   "end": 4001,
   "type": "Byte"
  },
  {
   "start": 4002,
   "end": 4181,
   "type": "Code"
  },
  {
   "start": 4182,
   "end": 4273,
   "type": "Byte"
  },
  {
   "start": 4274,
   "end": 4612,
   "type": "Code"
  },
  {
   "start": 4613,
   "end": 4626,
   "type": "Byte"
  },
  {
   "start": 4627,
   "end": 4627,
   "type": "Undefined"
  },
  {
   "start": 4628,
   "end": 4745,
   "type": "Code"
  },
  {
   "start": 4746,
   "end": 4746,
   "type": "Undefined"
  },
  {
   "start": 4747,
   "end": 4782,
   "type": "Address"
  },
  {
   "start": 4783,
   "end": 4783,
   "type": "Code"
  },
  {
   "start": 4784,
   "end": 4925,
   "type": "Code"
  },
  {
   "start": 4926,
   "end": 5035,
   "type": "Code"
  },
  {
   "start": 5036,
   "end": 5099,
   "type": "Undefined"
  },
  {
   "start": 5100,
   "end": 5191,
   "type": "Byte"
  },
  {
   "start": 5192,
   "end": 5206,
   "type": "Undefined"
  },
  {
   "start": 5207,
   "end": 5327,
   "type": "Code"
  },
  {
   "start": 5328,
   "end": 5363,
   "type": "Undefined"
  },
  {
   "start": 5364,
   "end": 5525,
   "type": "Code"
  },
  {
   "start": 5526,
   "end": 5617,
   "type": "Undefined"
  },
  {
   "start": 5618,
   "end": 5719,
   "type": "Code"
  },
  {
   "start": 5720,
   "end": 5720,
   "type": "Undefined"
  },
  {
   "start": 5721,
   "end": 5958,
   "type": "Code"
  },
  {
   "start": 5959,
   "end": 6022,
   "type": "Undefined"
  },
  {
   "start": 6023,
   "end": 6529,
   "type": "Code"
  },
  {
   "start": 6530,
   "end": 6593,
   "type": "Undefined"
  },
  {
   "start": 6594,
   "end": 6862,
   "type": "Code"
  },
  {
   "start": 6863,
   "end": 6876,
   "type": "Undefined"
  },
  {
   "start": 6877,
   "end": 7013,
   "type": "Code"
  },
  {
   "start": 7014,
   "end": 7086,
   "type": "Undefined"
  },
  {
   "start": 7087,
   "end": 7376,
   "type": "Code"
  },
  {
   "start": 7377,
   "end": 7440,
   "type": "Undefined"
  },
  {
   "start": 7441,
   "end": 7482,
   "type": "Byte"
  },
  {
   "start": 7483,
   "end": 7485,
   "type": "Undefined"
  },
  {
   "start": 7486,
   "end": 7609,
   "type": "Code"
  },
  {
   "start": 7610,
   "end": 7685,
   "type": "Undefined"
  },
  {
   "start": 7686,
   "end": 7809,
   "type": "Code"
  },
  {
   "start": 7810,
   "end": 7873,
   "type": "Undefined"
  },
  {
   "start": 7874,
   "end": 7969,
   "type": "Byte"
  },
  {
   "start": 7970,
   "end": 8033,
   "type": "Undefined"
  },
  {
   "start": 8034,
   "end": 8129,
   "type": "Byte"
  },
  {
   "start": 8130,
   "end": 8131,
   "type": "Undefined"
  },
  {
   "start": 8132,
   "end": 8287,
   "type": "Code"
  },
  {
   "start": 8288,
   "end": 8299,
   "type": "Undefined"
  },
  {
   "start": 8300,
   "end": 8493,
   "type": "Code"
  },
  {
   "start": 8494,
   "end": 8500,
   "type": "Undefined"
  },
  {
   "start": 8501,
   "end": 8532,
   "type": "Address"
  },
  {
   "start": 8533,
   "end": 8533,
   "type": "Code"
  },
  {
   "start": 8534,
   "end": 8537,
   "type": "Undefined"
  },
  {
   "start": 8538,
   "end": 9907,
   "type": "Code"
  },
  {
   "start": 9908,
   "end": 9911,
   "type": "Undefined"
  },
  {
   "start": 9912,
   "end": 10828,
   "type": "Code"
  },
  {
   "start": 10829,
   "end": 10832,
   "type": "Undefined"
  },
  {
   "start": 10833,
   "end": 11246,
   "type": "Code"
  },
  {
   "start": 11247,
   "end": 11248,
   "type": "Undefined"
  },
  {
   "start": 11249,
   "end": 12163,
   "type": "Code"
  },
  {
   "start": 12164,
   "end": 12164,
   "type": "Undefined"
  },
  {
   "start": 12165,
   "end": 12596,
   "type": "Code"
  },
  {
   "start": 12597,
   "end": 12619,
   "type": "Code"
  },
  {
   "start": 12620,
   "end": 13483,
   "type": "Code"
  },
  {
   "start": 13484,
   "end": 13487,
   "type": "Undefined"
  },
  {
   "start": 13488,
   "end": 21765,
   "type": "Code"
  },
  {
   "start": 21766,
   "end": 21766,
   "type": "Undefined"
  },
  {
   "start": 21767,
   "end": 21878,
   "type": "Code"
  },
  {
   "start": 21879,
   "end": 21880,
   "type": "Undefined"
  },
  {
   "start": 21881,
   "end": 22224,
   "type": "Code"
  },
  {
   "start": 22225,
   "end": 22227,
   "type": "Undefined"
  },
  {
   "start": 22228,
   "end": 22415,
   "type": "Code"
  },
  {
   "start": 22416,
   "end": 22484,
   "type": "Undefined"
  },
  {
   "start": 22485,
   "end": 22663,
   "type": "Code"
  },
  {
   "start": 22664,
   "end": 22664,
   "type": "Undefined"
  },
  {
   "start": 22665,
   "end": 22721,
   "type": "Code"
  },
  {
   "start": 22722,
   "end": 22785,
   "type": "Undefined"
  },
  {
   "start": 22786,
   "end": 22801,
   "type": "Byte"
  },
  {
   "start": 22802,
   "end": 22802,
   "type": "Undefined"
  },
  {
   "start": 22803,
   "end": 22818,
   "type": "Address"
  },
  {
   "start": 22819,
   "end": 22820,
   "type": "Undefined"
  },
  {
   "start": 22821,
   "end": 22861,
   "type": "Code"
  },
  {
   "start": 22862,
   "end": 22902,
   "type": "Undefined"
  },
  {
   "start": 22903,
   "end": 22968,
   "type": "Code"
  },
  {
   "start": 22969,
   "end": 22970,
   "type": "Undefined"
  },
  {
   "start": 22971,
   "end": 23075,
   "type": "Code"
  },
  {
   "start": 23076,
   "end": 23101,
   "type": "Undefined"
  },
  {
   "start": 23102,
   "end": 23338,
   "type": "Code"
  },
  {
   "start": 23339,
   "end": 23344,
   "type": "Undefined"
  },
  {
   "start": 23345,
   "end": 23481,
   "type": "Code"
  },
  {
   "start": 23482,
   "end": 23483,
   "type": "Undefined"
  },
  {
   "start": 23484,
   "end": 24141,
   "type": "Code"
  },
  {
   "start": 24142,
   "end": 24221,
   "type": "Undefined"
  },
  {
   "start": 24222,
   "end": 24495,
   "type": "Code"
  },
  {
   "start": 24496,
   "end": 24520,
   "type": "Undefined"
  },
  {
   "start": 24521,
   "end": 24844,
   "type": "Code"
  },
  {
   "start": 24845,
   "end": 24848,
   "type": "Undefined"
  },
  {
   "start": 24849,
   "end": 25082,
   "type": "Code"
  },
  {
   "start": 25083,
   "end": 25202,
   "type": "Undefined"
  },
  {
   "start": 25203,
   "end": 25573,
   "type": "Code"
  },
  {
   "start": 25574,
   "end": 25575,
   "type": "Undefined"
  },
  {
   "start": 25576,
   "end": 25666,
   "type": "Code"
  },
  {
   "start": 25667,
   "end": 25667,
   "type": "Undefined"
  },
  {
   "start": 25668,
   "end": 25954,
   "type": "Code"
  },
  {
   "start": 25955,
   "end": 25955,
   "type": "Byte"
  },
  {
   "start": 25956,
   "end": 25963,
   "type": "Byte"
  },
  {
   "start": 25964,
   "end": 25971,
   "type": "Byte"
  },
  {
   "start": 25972,
   "end": 26017,
   "type": "Code"
  },
  {
   "start": 26018,
   "end": 26021,
   "type": "Byte"
  },
  {
   "start": 26022,
   "end": 26029,
   "type": "Byte"
  },
  {
   "start": 26030,
   "end": 26060,
   "type": "Code"
  },
  {
   "start": 26061,
   "end": 26061,
   "type": "Undefined"
  },
  {
   "start": 26062,
   "end": 26113,
   "type": "Code"
  },
  {
   "start": 26114,
   "end": 26115,
   "type": "Undefined"
  },
  {
   "start": 26116,
   "end": 26619,
   "type": "Code"
  },
  {
   "start": 26620,
   "end": 26631,
   "type": "Byte"
  },
  {
   "start": 26632,
   "end": 26632,
   "type": "Undefined"
  },
  {
   "start": 26633,
   "end": 28962,
   "type": "Code"
  },
  {
   "start": 28963,
   "end": 29506,
   "type": "Undefined"
  },
  {
   "start": 29507,
   "end": 29596,
   "type": "Byte"
  },
  {
   "start": 29597,
   "end": 29602,
   "type": "Byte"
  },
  {
   "start": 29603,
   "end": 29818,
   "type": "Code"
  },
  {
   "start": 29819,
   "end": 29883,
   "type": "Undefined"
  },
  {
   "start": 29884,
   "end": 30041,
   "type": "Code"
  },
  {
   "start": 30042,
   "end": 30044,
   "type": "Undefined"
  },
  {
   "start": 30045,
   "end": 30105,
   "type": "Code"
  },
  {
   "start": 30106,
   "end": 30106,
   "type": "Undefined"
  },
  {
   "start": 30107,
   "end": 30221,
   "type": "Code"
  },
  {
   "start": 30222,
   "end": 30222,
   "type": "Undefined"
  },
  {
   "start": 30223,
   "end": 30432,
   "type": "Code"
  },
  {
   "start": 30433,
   "end": 31032,
   "type": "Undefined"
  },
  {
   "start": 31033,
   "end": 31295,
   "type": "Code"
  },
  {
   "start": 31296,
   "end": 35903,
   "type": "Byte"
  },
  {
   "start": 35904,
   "end": 35978,
   "type": "Code"
  },
  {
   "start": 35979,
   "end": 36027,
   "type": "Undefined"
  },
  {
   "start": 36028,
   "end": 36353,
   "type": "Code"
  },
  {
   "start": 36354,
   "end": 36427,
   "type": "Undefined"
  },
  {
   "start": 36428,
   "end": 36499,
   "type": "Byte"
  },
  {
   "start": 36500,
   "end": 36563,
   "type": "Undefined"
  },
  {
   "start": 36564,
   "end": 36635,
   "type": "Byte"
  },
  {
   "start": 36636,
   "end": 36676,
   "type": "Undefined"
  },
  {
   "start": 36677,
   "end": 36794,
   "type": "Code"
  },
  {
   "start": 36795,
   "end": 36862,
   "type": "Undefined"
  },
  {
   "start": 36863,
   "end": 36919,
   "type": "Code"
  },
  {
   "start": 36920,
   "end": 36921,
   "type": "Undefined"
  },
  {
   "start": 36922,
   "end": 37069,
   "type": "Code"
  },
  {
   "start": 37070,
   "end": 37111,
   "type": "Undefined"
  },
  {
   "start": 37112,
   "end": 37308,
   "type": "Byte"
  },
  {
   "start": 37309,
   "end": 38608,
   "type": "Byte"
  },
  {
   "start": 38609,
   "end": 38638,
   "type": "Undefined"
  },
  {
   "start": 38639,
   "end": 39165,
   "type": "Byte"
  },
  {
   "start": 39166,
   "end": 39423,
   "type": "Undefined"
  },
  {
   "start": 48896,
   "end": 49151,
   "type": "Undefined"
  },
  {
   "start": 49152,
   "end": 53247,
   "type": "Byte"
  },
  {
   "start": 53248,
   "end": 54271,
   "type": "Byte"
  },
  {
   "start": 54272,
   "end": 55167,
   "type": "Byte"
  },
  {
   "start": 55168,
   "end": 55295,
   "type": "Byte"
  },
  {
   "start": 55296,
   "end": 55423,
   "type": "Byte"
  },
  {
   "start": 55424,
   "end": 55551,
   "type": "Byte"
  },
  {
   "start": 55552,
   "end": 55743,
   "type": "Byte"
  },
  {
   "start": 55744,
   "end": 55807,
   "type": "Byte"
  },
  {
   "start": 55808,
   "end": 55935,
   "type": "Byte"
  },
  {
   "start": 55936,
   "end": 56127,
   "type": "Byte"
  },
  {
   "start": 56128,
   "end": 56319,
   "type": "Byte"
  },
  {
   "start": 56320,
   "end": 56383,
   "type": "Byte"
  },
  {
   "start": 56384,
   "end": 56447,
   "type": "Byte"
  },
  {
   "start": 56448,
   "end": 56639,
   "type": "Byte"
  },
  {
   "start": 56640,
   "end": 56959,
   "type": "Byte"
  },
  {
   "start": 56960,
   "end": 57343,
   "type": "Byte"
  },
  {
   "start": 57344,
   "end": 65519,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 2592,
   "name": "level_entry",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2595,
   "name": "nmi_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2603,
   "name": "nmi_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2610,
   "name": "slot_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2624,
   "name": "slot_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2638,
   "name": "slot_multicolour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2652,
   "name": "slot_anim",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2666,
   "name": "slot_phase",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2680,
   "name": "slot_walk",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2694,
   "name": "slot_hurt",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2708,
   "name": "slot_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2722,
   "name": "obj_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2724,
   "name": "obj_type_plus2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2788,
   "name": "obj_type_plus2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2814,
   "name": "obj_counter_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2815,
   "name": "obj_counter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2816,
   "name": "obj_down_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2817,
   "name": "obj_counter_plus2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2881,
   "name": "obj_counter_plus2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2898,
   "name": "obj_flag",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2981,
   "name": "obj_energy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3064,
   "name": "obj_variant",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3147,
   "name": "obj_flag_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3230,
   "name": "obj_left_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3232,
   "name": "obj_left_lo_plus2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3296,
   "name": "obj_left_lo_plus2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3313,
   "name": "obj_left_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3396,
   "name": "obj_right_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3479,
   "name": "obj_right_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3561,
   "name": "obj_x_lo_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3562,
   "name": "obj_x_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3563,
   "name": "obj_x_lo_plus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3564,
   "name": "obj_x_lo_plus2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3628,
   "name": "obj_x_lo_plus2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3644,
   "name": "obj_x_hi_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3645,
   "name": "obj_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3646,
   "name": "obj_x_hi_plus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3647,
   "name": "obj_x_hi_plus2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3711,
   "name": "obj_x_hi_plus2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3727,
   "name": "obj_y_lo_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3728,
   "name": "obj_y_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3810,
   "name": "obj_y_hi_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3811,
   "name": "obj_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3894,
   "name": "slot_object",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3907,
   "name": "obj_slot_minus1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3908,
   "name": "obj_slot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3998,
   "name": "scan_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3999,
   "name": "scan_dx_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4000,
   "name": "scan_dy_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4001,
   "name": "scan_dy_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4002,
   "name": "scan_next_object",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4005,
   "name": "scan_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4007,
   "name": "j_0FA7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4040,
   "name": "b_0FC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4051,
   "name": "b_0FD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4088,
   "name": "b_0FF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4101,
   "name": "b_1005",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4147,
   "name": "j_1033",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4169,
   "name": "a_1049",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4175,
   "name": "b_104F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4181,
   "name": "r_1055",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4182,
   "name": "obj_active",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4272,
   "name": "hit_flag_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4273,
   "name": "hit_flag_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4274,
   "name": "player_hit_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4294,
   "name": "b_10C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4313,
   "name": "b_10D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4330,
   "name": "r_10EA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4331,
   "name": "b_10EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4341,
   "name": "b_10F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4349,
   "name": "b_10FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4379,
   "name": "b_111B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4386,
   "name": "b_1122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4403,
   "name": "b_1133",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4435,
   "name": "b_1153",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4473,
   "name": "b_1179",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4475,
   "name": "j_117B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4482,
   "name": "j_1182",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4512,
   "name": "b_11A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4529,
   "name": "b_11B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4561,
   "name": "b_11D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4604,
   "name": "b_11FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4606,
   "name": "j_11FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4612,
   "name": "r_1204",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4613,
   "name": "queue_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4614,
   "name": "slot_queue",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4628,
   "name": "update_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4634,
   "name": "b_121A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4644,
   "name": "b_1224",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4665,
   "name": "b_1239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4703,
   "name": "a_125F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4704,
   "name": "a_1260",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4705,
   "name": "j_1261",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4710,
   "name": "b_1266",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4720,
   "name": "j_1270",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4740,
   "name": "a_1284",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4745,
   "name": "r_1289",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4746,
   "name": "current_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4747,
   "name": "object_behaviours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4748,
   "name": "behaviour_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4783,
   "name": "no_behaviour",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 4784,
   "name": "behave_shot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4926,
   "name": "behave_inert",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4932,
   "name": "behave_fall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4998,
   "name": "b_1386",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5036,
   "name": "fall_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5037,
   "name": "fall_steps_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5100,
   "name": "fall_steps_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5192,
   "name": "shuttle_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5207,
   "name": "behave_shuttle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5223,
   "name": "b_1467",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5225,
   "name": "b_1469",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5242,
   "name": "a_147A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5268,
   "name": "b_1494",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5288,
   "name": "b_14A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5308,
   "name": "b_14BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5328,
   "name": "shot_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5329,
   "name": "shot_step_dx_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5330,
   "name": "shot_step_dy_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5331,
   "name": "shot_step_dy_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5360,
   "name": "shot_dx_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5361,
   "name": "shot_dx_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5362,
   "name": "shot_dy_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5363,
   "name": "shot_dy_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5364,
   "name": "behave_shooter",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5387,
   "name": "b_150B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5410,
   "name": "b_1522",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5438,
   "name": "a_153E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5470,
   "name": "j_155E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5487,
   "name": "b_156F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5522,
   "name": "a_1592",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5524,
   "name": "a_1594",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5526,
   "name": "anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5618,
   "name": "behave_hazard_anim",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5634,
   "name": "b_1602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5636,
   "name": "b_1604",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5653,
   "name": "a_1615",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5669,
   "name": "r_1625",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5670,
   "name": "slot_right_of_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5684,
   "name": "b_1634",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5687,
   "name": "same_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5704,
   "name": "b_1648",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5707,
   "name": "b_164B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5717,
   "name": "b_1655",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5720,
   "name": "recoil",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5721,
   "name": "behave_attack_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5759,
   "name": "b_167F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5789,
   "name": "j_169D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5800,
   "name": "b_16A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5811,
   "name": "a_16B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5819,
   "name": "a_16BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5829,
   "name": "b_16C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5834,
   "name": "a_16CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5842,
   "name": "a_16D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5895,
   "name": "b_1707",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5925,
   "name": "r_1725",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5926,
   "name": "b_1726",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5934,
   "name": "a_172E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5949,
   "name": "b_173D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5954,
   "name": "a_1742",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5958,
   "name": "r_1746",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5959,
   "name": "walk_left_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5991,
   "name": "walk_left_frames_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6023,
   "name": "behave_walk_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6033,
   "name": "b_1791",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6035,
   "name": "j_1793",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6057,
   "name": "b_17A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6059,
   "name": "j_17AB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6063,
   "name": "b_17AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6094,
   "name": "j_17CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6105,
   "name": "b_17D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6117,
   "name": "b_17E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6147,
   "name": "b_1803",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6153,
   "name": "j_1809",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6173,
   "name": "b_181D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6191,
   "name": "b_182F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6200,
   "name": "b_1838",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6220,
   "name": "b_184C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6263,
   "name": "b_1877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6282,
   "name": "b_188A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6293,
   "name": "behave_attack_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6331,
   "name": "b_18BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6361,
   "name": "j_18D9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6372,
   "name": "b_18E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6383,
   "name": "a_18EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6391,
   "name": "a_18F7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6401,
   "name": "b_1901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6406,
   "name": "a_1906",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6414,
   "name": "a_190E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6466,
   "name": "b_1942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6496,
   "name": "r_1960",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6497,
   "name": "b_1961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6505,
   "name": "a_1969",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6520,
   "name": "b_1978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6525,
   "name": "a_197D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6529,
   "name": "r_1981",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6530,
   "name": "walk_right_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6562,
   "name": "walk_right_frames_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6594,
   "name": "behave_walk_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6604,
   "name": "b_19CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6606,
   "name": "j_19CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6628,
   "name": "b_19E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6630,
   "name": "j_19E6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6634,
   "name": "b_19EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6664,
   "name": "j_1A08",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6675,
   "name": "b_1A13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6687,
   "name": "b_1A1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6717,
   "name": "b_1A3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6723,
   "name": "j_1A43",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6743,
   "name": "b_1A57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6754,
   "name": "b_1A62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6761,
   "name": "b_1A69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6770,
   "name": "b_1A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6790,
   "name": "b_1A86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6833,
   "name": "b_1AB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6852,
   "name": "b_1AC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6863,
   "name": "pickup_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6877,
   "name": "behave_pickup_energy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6898,
   "name": "b_1AF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6909,
   "name": "b_1AFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6911,
   "name": "b_1AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6928,
   "name": "a_1B10",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6941,
   "name": "b_1B1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6995,
   "name": "b_1B53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7010,
   "name": "a_1B62",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7012,
   "name": "a_1B64",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7013,
   "name": "r_1B65",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7014,
   "name": "pickup_bob_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7015,
   "name": "pickup_bob_a_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7062,
   "name": "pickup_frames_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7087,
   "name": "behave_pickup_score",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7103,
   "name": "b_1BBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7114,
   "name": "b_1BCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7116,
   "name": "b_1BCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7133,
   "name": "a_1BDD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7165,
   "name": "a_1BFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7167,
   "name": "a_1BFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7168,
   "name": "r_1C00",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7169,
   "name": "behave_prop_flash",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7190,
   "name": "b_1C16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7192,
   "name": "j_1C18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7196,
   "name": "behave_hazard_arc",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7209,
   "name": "b_1C29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7249,
   "name": "b_1C51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7282,
   "name": "r_1C72",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7283,
   "name": "b_1C73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7309,
   "name": "j_1C8D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7373,
   "name": "a_1CCD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7375,
   "name": "a_1CCF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7377,
   "name": "hazard_arc_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7441,
   "name": "hazard_arc_steps_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7483,
   "name": "follow_limit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7485,
   "name": "follow_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7486,
   "name": "slot_follow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7521,
   "name": "b_1D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7523,
   "name": "j_1D63",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7566,
   "name": "b_1D8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7580,
   "name": "b_1D9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7599,
   "name": "b_1DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7610,
   "name": "follow_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7642,
   "name": "follow_frames_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7674,
   "name": "hazard_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7686,
   "name": "behave_hazard_loop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7696,
   "name": "b_1E10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7707,
   "name": "b_1E1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7709,
   "name": "b_1E1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7726,
   "name": "a_1E2E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7737,
   "name": "b_1E39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7739,
   "name": "j_1E3B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7754,
   "name": "b_1E4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7810,
   "name": "hazard_path_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7811,
   "name": "hazard_path_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7874,
   "name": "hazard_path_x_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7970,
   "name": "hazard_path_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7971,
   "name": "hazard_path_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8034,
   "name": "hazard_path_y_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8130,
   "name": "player_world_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8131,
   "name": "player_world_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8132,
   "name": "level_main",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8135,
   "name": "b_1FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8174,
   "name": "b_1FEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8203,
   "name": "b_200B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8216,
   "name": "b_2018",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8223,
   "name": "b_201F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8233,
   "name": "pause_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8245,
   "name": "b_2035",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8252,
   "name": "b_203C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8259,
   "name": "b_2043",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8271,
   "name": "r_204F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8272,
   "name": "level_end_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8287,
   "name": "r_205F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8288,
   "name": "level_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8289,
   "name": "scroll_x_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8290,
   "name": "scroll_y_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8292,
   "name": "joystick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8293,
   "name": "joystick_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8294,
   "name": "unused_2066",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8295,
   "name": "screen_buffer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8296,
   "name": "saved_camera_y_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8297,
   "name": "saved_camera_y_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8298,
   "name": "saved_camera_x_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8299,
   "name": "saved_camera_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8300,
   "name": "scroll_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8308,
   "name": "b_2074",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8361,
   "name": "b_20A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8367,
   "name": "b_20AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8397,
   "name": "b_20CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8406,
   "name": "b_20D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8411,
   "name": "b_20DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8424,
   "name": "b_20E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8433,
   "name": "b_20F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8438,
   "name": "b_20F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8447,
   "name": "b_20FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8453,
   "name": "j_2105",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8466,
   "name": "j_2112",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8484,
   "name": "a_2124",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8485,
   "name": "a_2125",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8487,
   "name": "j_2127",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8494,
   "name": "scroll_direction",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8495,
   "name": "scroll_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8496,
   "name": "scroll_phase",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8499,
   "name": "unused_2133",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8500,
   "name": "unused_2134",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8501,
   "name": "scroll_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8502,
   "name": "scroll_routines_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8533,
   "name": "scroll_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8534,
   "name": "scroll_x_right_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8538,
   "name": "scroll_right_fine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8560,
   "name": "b_2170",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8567,
   "name": "b_2177",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8584,
   "name": "scroll_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8617,
   "name": "b_21A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8625,
   "name": "b_21B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8633,
   "name": "b_21B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8637,
   "name": "scroll_right_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8645,
   "name": "b_21C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8648,
   "name": "scroll_right_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8663,
   "name": "scroll_right_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8679,
   "name": "b_21E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8690,
   "name": "scroll_right_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8709,
   "name": "b_2205",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8723,
   "name": "shift_left_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8839,
   "name": "a_2287",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8843,
   "name": "shift_left_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8959,
   "name": "a_22FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8963,
   "name": "draw_right_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8975,
   "name": "b_230F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8981,
   "name": "b_2315",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9001,
   "name": "b_2329",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9013,
   "name": "j_2335",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9024,
   "name": "b_2340",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9044,
   "name": "b_2354",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9056,
   "name": "j_2360",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9067,
   "name": "b_236B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9087,
   "name": "b_237F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9099,
   "name": "j_238B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9110,
   "name": "b_2396",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9130,
   "name": "b_23AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9142,
   "name": "j_23B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9162,
   "name": "b_23CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9182,
   "name": "b_23DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9194,
   "name": "j_23EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9205,
   "name": "b_23F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9225,
   "name": "b_2409",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9237,
   "name": "j_2415",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9248,
   "name": "b_2420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9268,
   "name": "b_2434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9280,
   "name": "j_2440",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9291,
   "name": "b_244B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9311,
   "name": "b_245F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9323,
   "name": "j_246B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9336,
   "name": "b_2478",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9356,
   "name": "b_248C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9368,
   "name": "j_2498",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9379,
   "name": "b_24A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9393,
   "name": "b_24B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9399,
   "name": "j_24B7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9426,
   "name": "b_24D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9428,
   "name": "r_24D4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9429,
   "name": "j_24D5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9435,
   "name": "b_24DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9449,
   "name": "b_24E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9455,
   "name": "j_24EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9466,
   "name": "b_24FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9486,
   "name": "b_250E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9498,
   "name": "j_251A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9509,
   "name": "b_2525",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9529,
   "name": "b_2539",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9541,
   "name": "j_2545",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9552,
   "name": "b_2550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9572,
   "name": "b_2564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9584,
   "name": "j_2570",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9604,
   "name": "b_2584",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9624,
   "name": "b_2598",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9636,
   "name": "j_25A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9647,
   "name": "b_25AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9667,
   "name": "b_25C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9679,
   "name": "j_25CF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9690,
   "name": "b_25DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9710,
   "name": "b_25EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9722,
   "name": "j_25FA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9733,
   "name": "b_2605",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9753,
   "name": "b_2619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9765,
   "name": "j_2625",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9778,
   "name": "b_2632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9798,
   "name": "b_2646",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9810,
   "name": "j_2652",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9821,
   "name": "b_265D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9841,
   "name": "b_2671",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9853,
   "name": "j_267D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9880,
   "name": "b_2698",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9882,
   "name": "r_269A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9883,
   "name": "step_map_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9905,
   "name": "b_26B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9908,
   "name": "scroll_y_down_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9912,
   "name": "scroll_down_fine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9934,
   "name": "b_26CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9941,
   "name": "b_26D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9958,
   "name": "scroll_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9992,
   "name": "b_2708",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10000,
   "name": "b_2710",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10008,
   "name": "b_2718",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10012,
   "name": "scroll_down_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10020,
   "name": "b_2724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10023,
   "name": "scroll_down_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10038,
   "name": "scroll_down_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10054,
   "name": "b_2746",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10065,
   "name": "scroll_down_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10084,
   "name": "b_2764",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10098,
   "name": "shift_up_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10208,
   "name": "a_27E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10212,
   "name": "shift_up_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10322,
   "name": "a_2852",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10326,
   "name": "draw_bottom_row_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10361,
   "name": "b_2879",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10384,
   "name": "b_2890",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10400,
   "name": "b_28A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10437,
   "name": "b_28C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10445,
   "name": "a_28CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10446,
   "name": "a_28CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10452,
   "name": "a_28D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10453,
   "name": "a_28D5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10490,
   "name": "b_28FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10492,
   "name": "r_28FC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10493,
   "name": "b_28FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10501,
   "name": "a_2905",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10502,
   "name": "a_2906",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10508,
   "name": "b_290C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10517,
   "name": "a_2915",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10518,
   "name": "a_2916",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10524,
   "name": "a_291C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10525,
   "name": "a_291D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10562,
   "name": "b_2942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10565,
   "name": "draw_bottom_row_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10600,
   "name": "b_2968",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10623,
   "name": "b_297F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10639,
   "name": "b_298F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10676,
   "name": "b_29B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10684,
   "name": "a_29BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10685,
   "name": "a_29BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10691,
   "name": "a_29C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10692,
   "name": "a_29C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10729,
   "name": "b_29E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10731,
   "name": "r_29EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10732,
   "name": "b_29EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10740,
   "name": "a_29F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10741,
   "name": "a_29F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10747,
   "name": "b_29FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10756,
   "name": "a_2A04",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10757,
   "name": "a_2A05",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10763,
   "name": "a_2A0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10764,
   "name": "a_2A0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10801,
   "name": "b_2A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10804,
   "name": "step_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10826,
   "name": "b_2A4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10829,
   "name": "scroll_y_up_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10833,
   "name": "scroll_up_fine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10855,
   "name": "b_2A67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10862,
   "name": "b_2A6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10879,
   "name": "scroll_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10913,
   "name": "b_2AA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10921,
   "name": "b_2AA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10929,
   "name": "b_2AB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10933,
   "name": "scroll_up_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10941,
   "name": "b_2ABD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10944,
   "name": "scroll_up_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10959,
   "name": "scroll_up_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10975,
   "name": "b_2ADF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10986,
   "name": "scroll_up_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11005,
   "name": "b_2AFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11019,
   "name": "shift_down_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11111,
   "name": "call_placeholder",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11129,
   "name": "a_2B79",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11133,
   "name": "shift_down_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11243,
   "name": "a_2BEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11247,
   "name": "row_half_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11248,
   "name": "row_half_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11249,
   "name": "draw_top_row_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11279,
   "name": "b_2C0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11302,
   "name": "b_2C26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11318,
   "name": "b_2C36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11355,
   "name": "b_2C5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11363,
   "name": "a_2C63",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11364,
   "name": "a_2C64",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11370,
   "name": "a_2C6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11371,
   "name": "a_2C6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11406,
   "name": "b_2C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11408,
   "name": "r_2C90",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11409,
   "name": "b_2C91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11417,
   "name": "a_2C99",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11418,
   "name": "a_2C9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11424,
   "name": "b_2CA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11433,
   "name": "a_2CA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11434,
   "name": "a_2CAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11440,
   "name": "a_2CB0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11441,
   "name": "a_2CB1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11476,
   "name": "b_2CD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11479,
   "name": "draw_top_row_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11509,
   "name": "b_2CF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11532,
   "name": "b_2D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11548,
   "name": "b_2D1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11585,
   "name": "b_2D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11593,
   "name": "a_2D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11594,
   "name": "a_2D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11600,
   "name": "a_2D50",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11601,
   "name": "a_2D51",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11636,
   "name": "b_2D74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11638,
   "name": "r_2D76",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11639,
   "name": "b_2D77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11647,
   "name": "a_2D7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11648,
   "name": "a_2D80",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11654,
   "name": "b_2D86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11663,
   "name": "a_2D8F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11664,
   "name": "a_2D90",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11670,
   "name": "a_2D96",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11671,
   "name": "a_2D97",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11706,
   "name": "b_2DBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11709,
   "name": "back_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11729,
   "name": "b_2DD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11732,
   "name": "scroll_right_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11790,
   "name": "b_2E0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11798,
   "name": "b_2E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11806,
   "name": "b_2E1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11810,
   "name": "scroll_ru_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11818,
   "name": "b_2E2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11821,
   "name": "scroll_ru_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11836,
   "name": "scroll_ru_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11852,
   "name": "b_2E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11863,
   "name": "scroll_ru_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11902,
   "name": "b_2E7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11936,
   "name": "shift_ru_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12046,
   "name": "a_2F0E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12050,
   "name": "shift_ru_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12160,
   "name": "a_2F80",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12164,
   "name": "scroll_diag_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12165,
   "name": "scroll_left_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12223,
   "name": "b_2FBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12231,
   "name": "b_2FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12239,
   "name": "b_2FCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12243,
   "name": "scroll_lu_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12251,
   "name": "b_2FDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12254,
   "name": "scroll_lu_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12269,
   "name": "scroll_lu_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12285,
   "name": "b_2FFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12296,
   "name": "scroll_lu_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12335,
   "name": "b_302F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12369,
   "name": "shift_lu_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12479,
   "name": "a_30BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12483,
   "name": "shift_lu_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12593,
   "name": "a_3131",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12597,
   "name": "scroll_left_down_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12620,
   "name": "scroll_left_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12678,
   "name": "b_3186",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12686,
   "name": "b_318E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12694,
   "name": "b_3196",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12698,
   "name": "scroll_ld_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12706,
   "name": "b_31A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12709,
   "name": "scroll_ld_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12724,
   "name": "scroll_ld_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12740,
   "name": "b_31C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12751,
   "name": "scroll_ld_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12790,
   "name": "b_31F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12824,
   "name": "shift_ld_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12934,
   "name": "a_3286",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12938,
   "name": "shift_ld_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13048,
   "name": "a_32F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13052,
   "name": "scroll_right_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13110,
   "name": "b_3336",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13118,
   "name": "b_333E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13126,
   "name": "b_3346",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13130,
   "name": "scroll_rd_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13138,
   "name": "b_3352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13141,
   "name": "scroll_rd_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13156,
   "name": "scroll_rd_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13172,
   "name": "b_3374",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13183,
   "name": "scroll_rd_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13222,
   "name": "b_33A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13256,
   "name": "shift_rd_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13366,
   "name": "a_3436",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13370,
   "name": "shift_rd_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13480,
   "name": "a_34A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13484,
   "name": "scroll_x_left_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13488,
   "name": "scroll_left_fine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13510,
   "name": "b_34C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13517,
   "name": "b_34CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13534,
   "name": "scroll_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13567,
   "name": "b_34FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13575,
   "name": "b_3507",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13583,
   "name": "b_350F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13587,
   "name": "scroll_left_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13595,
   "name": "b_351B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13598,
   "name": "scroll_left_finish",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13613,
   "name": "scroll_left_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13629,
   "name": "b_353D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13640,
   "name": "scroll_left_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13659,
   "name": "b_355B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13673,
   "name": "shift_right_to_c8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13789,
   "name": "a_35DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13793,
   "name": "shift_right_to_cc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13909,
   "name": "a_3655",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13913,
   "name": "draw_left_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13925,
   "name": "b_3665",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13931,
   "name": "b_366B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13951,
   "name": "b_367F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13963,
   "name": "j_368B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13974,
   "name": "b_3696",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13994,
   "name": "b_36AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14006,
   "name": "j_36B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14017,
   "name": "b_36C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14037,
   "name": "b_36D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14049,
   "name": "j_36E1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14060,
   "name": "b_36EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14080,
   "name": "b_3700",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14092,
   "name": "j_370C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14113,
   "name": "b_3721",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14133,
   "name": "b_3735",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14145,
   "name": "j_3741",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14156,
   "name": "b_374C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14176,
   "name": "b_3760",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14188,
   "name": "j_376C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14199,
   "name": "b_3777",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14219,
   "name": "b_378B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14231,
   "name": "j_3797",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14242,
   "name": "b_37A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14262,
   "name": "b_37B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14274,
   "name": "j_37C2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14287,
   "name": "b_37CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14307,
   "name": "b_37E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14319,
   "name": "j_37EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14330,
   "name": "b_37FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14344,
   "name": "b_3808",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14350,
   "name": "j_380E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14375,
   "name": "b_3827",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14377,
   "name": "r_3829",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14378,
   "name": "j_382A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14384,
   "name": "b_3830",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14398,
   "name": "b_383E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14404,
   "name": "j_3844",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14415,
   "name": "b_384F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14435,
   "name": "b_3863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14447,
   "name": "j_386F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14458,
   "name": "b_387A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14478,
   "name": "b_388E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14490,
   "name": "j_389A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14501,
   "name": "b_38A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14521,
   "name": "b_38B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14533,
   "name": "j_38C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14554,
   "name": "b_38DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14574,
   "name": "b_38EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14586,
   "name": "j_38FA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14597,
   "name": "b_3905",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14617,
   "name": "b_3919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14629,
   "name": "j_3925",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14640,
   "name": "b_3930",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14660,
   "name": "b_3944",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14672,
   "name": "j_3950",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14683,
   "name": "b_395B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14703,
   "name": "b_396F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14715,
   "name": "j_397B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14728,
   "name": "b_3988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14748,
   "name": "b_399C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14760,
   "name": "j_39A8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14771,
   "name": "b_39B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14791,
   "name": "b_39C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14803,
   "name": "j_39D3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14828,
   "name": "b_39EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14830,
   "name": "r_39EE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14831,
   "name": "back_map_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14851,
   "name": "b_3A03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14854,
   "name": "colours_from_cc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15877,
   "name": "colours_from_cc_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15880,
   "name": "colours_cc_part2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16903,
   "name": "colours_cc_part2_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 16906,
   "name": "colours_cc_part3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17929,
   "name": "colours_cc_part3_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 17932,
   "name": "colours_cc_part4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18014,
   "name": "colours_from_c8",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 19037,
   "name": "colours_from_c8_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 19040,
   "name": "colours_c8_part2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20063,
   "name": "colours_c8_part2_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 20066,
   "name": "colours_c8_part3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21089,
   "name": "colours_c8_part3_tail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 21092,
   "name": "colours_c8_part4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21174,
   "name": "load_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21176,
   "name": "b_52B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21277,
   "name": "b_531D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21301,
   "name": "level_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21359,
   "name": "b_536F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21457,
   "name": "b_53D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21472,
   "name": "b_53E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21482,
   "name": "b_53EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21633,
   "name": "b_5481",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21718,
   "name": "draw_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21720,
   "name": "b_54D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21740,
   "name": "b_54EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21762,
   "name": "b_5502",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21765,
   "name": "r_5505",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 21766,
   "name": "touch_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21767,
   "name": "touch_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21801,
   "name": "b_5529",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21814,
   "name": "b_5536",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21831,
   "name": "b_5547",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21834,
   "name": "b_554A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21844,
   "name": "b_5554",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21868,
   "name": "b_556C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21878,
   "name": "r_5576",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 21879,
   "name": "hurt_guard",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21880,
   "name": "energy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21881,
   "name": "player_hurt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21894,
   "name": "player_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21917,
   "name": "a_559D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21919,
   "name": "a_559F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21920,
   "name": "r_55A0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 21921,
   "name": "banner_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22007,
   "name": "b_55F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22024,
   "name": "b_5608",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22038,
   "name": "b_5616",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22123,
   "name": "j_566B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22136,
   "name": "banner_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22169,
   "name": "banner_pointers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22225,
   "name": "banner_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22226,
   "name": "banner_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22227,
   "name": "banner_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22228,
   "name": "banner_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22260,
   "name": "b_56F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22304,
   "name": "b_5720",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22308,
   "name": "b_5724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22349,
   "name": "j_574D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22359,
   "name": "r_5757",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22360,
   "name": "b_5758",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22398,
   "name": "b_577E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22415,
   "name": "r_578F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22416,
   "name": "bar_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22420,
   "name": "bar_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22421,
   "name": "bar_shapes_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22422,
   "name": "bar_shapes_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22423,
   "name": "bar_shapes_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22424,
   "name": "bar_shapes_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22425,
   "name": "bar_shapes_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22426,
   "name": "bar_shapes_rest",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22484,
   "name": "bar_counter",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22485,
   "name": "draw_bar",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22487,
   "name": "b_57D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22504,
   "name": "b_57E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22547,
   "name": "b_5813",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22607,
   "name": "b_584F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22609,
   "name": "b_5851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22621,
   "name": "add_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22626,
   "name": "j_5862",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22642,
   "name": "b_5872",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22647,
   "name": "j_5877",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22661,
   "name": "b_5885",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22664,
   "name": "digit_carry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22665,
   "name": "draw_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22675,
   "name": "b_5893",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22684,
   "name": "draw_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22695,
   "name": "b_58A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22722,
   "name": "digit_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22786,
   "name": "digit_shapes_8_9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22802,
   "name": "player_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22803,
   "name": "player_state_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22804,
   "name": "player_state_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22819,
   "name": "player_prev_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22820,
   "name": "player_prev_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22821,
   "name": "player_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22856,
   "name": "a_5948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22857,
   "name": "a_5949",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22858,
   "name": "b_594A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22862,
   "name": "map_temp_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22863,
   "name": "map_temp_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22864,
   "name": "player_state_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22865,
   "name": "anim_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22866,
   "name": "walk_frames_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22884,
   "name": "walk_frames_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22902,
   "name": "anim_toggle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22903,
   "name": "walk_anim_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22923,
   "name": "b_598B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22926,
   "name": "b_598E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22936,
   "name": "walk_anim_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22956,
   "name": "b_59AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22959,
   "name": "b_59AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22969,
   "name": "facing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22970,
   "name": "player_tile_column",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22971,
   "name": "punch_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22992,
   "name": "b_59D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23008,
   "name": "player_punch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23030,
   "name": "r_59F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23031,
   "name": "b_59F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23039,
   "name": "strike_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23060,
   "name": "b_5A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23076,
   "name": "strike_arc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23102,
   "name": "player_strike",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23144,
   "name": "b_5A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23187,
   "name": "j_5A93",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23214,
   "name": "b_5AAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23226,
   "name": "b_5ABA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23250,
   "name": "b_5AD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23261,
   "name": "j_5ADD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23270,
   "name": "b_5AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23288,
   "name": "b_5AF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23302,
   "name": "b_5B06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23326,
   "name": "b_5B1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23338,
   "name": "r_5B2A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23339,
   "name": "strike_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23340,
   "name": "strike_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23341,
   "name": "crouch_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23342,
   "name": "crouch_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23343,
   "name": "punch_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23344,
   "name": "jump_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23345,
   "name": "player_crouch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23382,
   "name": "a_5B56",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23384,
   "name": "a_5B58",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23386,
   "name": "b_5B5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23413,
   "name": "b_5B75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23425,
   "name": "b_5B81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23429,
   "name": "b_5B85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23445,
   "name": "crouch_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23466,
   "name": "b_5BAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23482,
   "name": "punch_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23483,
   "name": "unused_5bbb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23484,
   "name": "player_walk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23493,
   "name": "b_5BC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23529,
   "name": "b_5BE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23551,
   "name": "b_5BFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23564,
   "name": "b_5C0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23576,
   "name": "b_5C18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23601,
   "name": "b_5C31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23625,
   "name": "b_5C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23638,
   "name": "b_5C56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23649,
   "name": "j_5C61",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23666,
   "name": "b_5C72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23689,
   "name": "b_5C89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23695,
   "name": "b_5C8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23715,
   "name": "b_5CA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23738,
   "name": "b_5CBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23760,
   "name": "b_5CD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23782,
   "name": "b_5CE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23793,
   "name": "b_5CF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23842,
   "name": "a_5D22",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23844,
   "name": "a_5D24",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23846,
   "name": "b_5D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23865,
   "name": "b_5D39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23869,
   "name": "b_5D3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23911,
   "name": "a_5D67",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23913,
   "name": "a_5D69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23915,
   "name": "b_5D6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23919,
   "name": "b_5D6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23931,
   "name": "r_5D7B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23932,
   "name": "stand_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23945,
   "name": "b_5D89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23950,
   "name": "r_5D8E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23951,
   "name": "player_fall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23985,
   "name": "b_5DB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24002,
   "name": "b_5DC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24033,
   "name": "b_5DE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24049,
   "name": "j_5DF1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24071,
   "name": "b_5E07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24088,
   "name": "b_5E18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24091,
   "name": "b_5E1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24119,
   "name": "b_5E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24123,
   "name": "fall_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24136,
   "name": "b_5E48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24141,
   "name": "r_5E4D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24142,
   "name": "jump_arc",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24220,
   "name": "jump_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24221,
   "name": "draw_state_override",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24222,
   "name": "player_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24262,
   "name": "b_5EC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24303,
   "name": "j_5EEF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24332,
   "name": "b_5F0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24349,
   "name": "b_5F1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24380,
   "name": "b_5F3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24396,
   "name": "j_5F4C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24405,
   "name": "b_5F55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24423,
   "name": "b_5F67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24437,
   "name": "b_5F75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24461,
   "name": "b_5F8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24473,
   "name": "b_5F99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24477,
   "name": "jump_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24490,
   "name": "b_5FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24495,
   "name": "r_5FAF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24496,
   "name": "climb_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24497,
   "name": "climb_frames_up",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24509,
   "name": "climb_frames_down",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24521,
   "name": "climb_frame_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24541,
   "name": "b_5FDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24544,
   "name": "b_5FE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24554,
   "name": "climb_frame_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24574,
   "name": "b_5FFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24577,
   "name": "b_6001",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24587,
   "name": "player_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24619,
   "name": "b_602B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24643,
   "name": "j_6043",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24692,
   "name": "b_6074",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24697,
   "name": "j_6079",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24711,
   "name": "r_6087",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24712,
   "name": "clear_sprite_list",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24759,
   "name": "sort_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24761,
   "name": "b_60B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24785,
   "name": "b_60D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24812,
   "name": "j_60EC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24821,
   "name": "b_60F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24833,
   "name": "b_6101",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24845,
   "name": "player_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24846,
   "name": "frame_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24847,
   "name": "frame_c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24848,
   "name": "frame_d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24849,
   "name": "player_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24862,
   "name": "b_611E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24865,
   "name": "j_6121",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24877,
   "name": "b_612D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24905,
   "name": "b_6149",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24933,
   "name": "b_6165",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24938,
   "name": "b_616A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24966,
   "name": "b_6186",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25004,
   "name": "object_damaged",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25021,
   "name": "b_61BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25027,
   "name": "b_61C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25038,
   "name": "j_61CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25049,
   "name": "a_61D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25051,
   "name": "b_61DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25081,
   "name": "a_61F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25083,
   "name": "down_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25113,
   "name": "follow_legs_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25143,
   "name": "down_frames_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25173,
   "name": "follow_legs_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25203,
   "name": "behave_knocked_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25242,
   "name": "b_629A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25254,
   "name": "b_62A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25257,
   "name": "b_62A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25273,
   "name": "b_62B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25284,
   "name": "b_62C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25299,
   "name": "b_62D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25320,
   "name": "b_62E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25326,
   "name": "b_62EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25337,
   "name": "b_62F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25343,
   "name": "select_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25359,
   "name": "b_630F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25365,
   "name": "irq_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25486,
   "name": "b_638E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25505,
   "name": "b_63A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25517,
   "name": "b_63AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25557,
   "name": "b_63D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25568,
   "name": "a_63E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25570,
   "name": "a_63E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25572,
   "name": "a_63E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25574,
   "name": "irq_counter_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25575,
   "name": "irq_toggle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25576,
   "name": "irq_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25660,
   "name": "b_643C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25661,
   "name": "a_643D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25663,
   "name": "a_643F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25665,
   "name": "a_6441",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25667,
   "name": "paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25668,
   "name": "attack_sprite_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25688,
   "name": "b_6458",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25698,
   "name": "b_6462",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25718,
   "name": "b_6476",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25727,
   "name": "r_647F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25728,
   "name": "irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25798,
   "name": "b_64C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25878,
   "name": "b_6516",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25894,
   "name": "b_6526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25916,
   "name": "j_653C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25940,
   "name": "a_6554",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25942,
   "name": "a_6556",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25944,
   "name": "a_6558",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25946,
   "name": "delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25947,
   "name": "b_655B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25948,
   "name": "b_655C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25955,
   "name": "cycle_out_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25956,
   "name": "cycle_colours_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25964,
   "name": "cycle_colours_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25972,
   "name": "colour_cycle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26018,
   "name": "cycle_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26022,
   "name": "cycle_colours_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26030,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26047,
   "name": "a_65BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26055,
   "name": "b_65C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26061,
   "name": "random_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26062,
   "name": "disabled_check",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 26071,
   "name": "b_65D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26078,
   "name": "fill_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26080,
   "name": "b_65E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26096,
   "name": "fill_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26098,
   "name": "b_65F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26114,
   "name": "multiplex_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26115,
   "name": "multiplex_limit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26116,
   "name": "multiplex_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26119,
   "name": "b_6607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26128,
   "name": "b_6610",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26133,
   "name": "b_6615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26174,
   "name": "b_663E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26179,
   "name": "j_6643",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26210,
   "name": "b_6662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26215,
   "name": "j_6667",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26218,
   "name": "b_666A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26227,
   "name": "b_6673",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26232,
   "name": "b_6678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26273,
   "name": "b_66A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26278,
   "name": "j_66A6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26309,
   "name": "b_66C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26314,
   "name": "j_66CA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26317,
   "name": "b_66CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26326,
   "name": "b_66D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26331,
   "name": "b_66DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26372,
   "name": "b_6704",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26377,
   "name": "j_6709",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26408,
   "name": "b_6728",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26413,
   "name": "j_672D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26416,
   "name": "b_6730",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26425,
   "name": "b_6739",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26430,
   "name": "b_673E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26471,
   "name": "b_6767",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26476,
   "name": "j_676C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26507,
   "name": "b_678B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26512,
   "name": "j_6790",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26515,
   "name": "b_6793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26524,
   "name": "b_679C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26529,
   "name": "b_67A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26548,
   "name": "b_67B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26573,
   "name": "b_67CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26578,
   "name": "j_67D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26609,
   "name": "b_67F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26614,
   "name": "j_67F6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26620,
   "name": "sprite_bit_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26632,
   "name": "colour_pending",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26633,
   "name": "colour_copy_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27107,
   "name": "colour_copy_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27113,
   "name": "b_69E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28129,
   "name": "colour_copy_b_mid",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 28132,
   "name": "colour_copy_b_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28757,
   "name": "colours_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28765,
   "name": "b_705D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28768,
   "name": "colour_upper",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 28775,
   "name": "b_7067",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28869,
   "name": "b_70C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28963,
   "name": "colour_buffer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29321,
   "name": "colour_buffer_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29443,
   "name": "map_row_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29444,
   "name": "map_row_pointers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29507,
   "name": "map_row_pointers_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29597,
   "name": "map_row_pointers_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29603,
   "name": "draw_first_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29621,
   "name": "b_73B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29623,
   "name": "b_73B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29666,
   "name": "b_73E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29697,
   "name": "player_map_pointer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29819,
   "name": "player_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29820,
   "name": "player_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29821,
   "name": "wipe_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29879,
   "name": "wipe_length_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29880,
   "name": "wipe_line_start_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29881,
   "name": "wipe_line_start_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29882,
   "name": "wipe_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29884,
   "name": "screen_wipe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29910,
   "name": "j_74D6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29916,
   "name": "j_74DC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29961,
   "name": "b_7509",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29973,
   "name": "a_7515",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29975,
   "name": "a_7517",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30005,
   "name": "b_7535",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30042,
   "name": "timer_digits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30043,
   "name": "timer_digit_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30044,
   "name": "timer_digit_hundreds",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30045,
   "name": "draw_timer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30085,
   "name": "draw_timer_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30094,
   "name": "b_758E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30106,
   "name": "timer_phase",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30107,
   "name": "timer_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30137,
   "name": "r_75B9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30138,
   "name": "b_75BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30148,
   "name": "b_75C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30165,
   "name": "b_75D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30182,
   "name": "b_75E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30199,
   "name": "b_75F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30205,
   "name": "timer_expired",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30221,
   "name": "r_760D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30222,
   "name": "timer_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30223,
   "name": "timer_graphics_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30225,
   "name": "b_7611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30262,
   "name": "b_7636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30328,
   "name": "timer_graphics_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30330,
   "name": "b_767A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30367,
   "name": "b_769F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30433,
   "name": "panel_pic_off_row_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30481,
   "name": "panel_pic_off_row_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30529,
   "name": "panel_pic_off_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30577,
   "name": "panel_pic_off_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30625,
   "name": "panel_pic_off_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30673,
   "name": "panel_pic_off_colour_ram_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30679,
   "name": "panel_pic_off_colour_ram_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30685,
   "name": "panel_pic_off_colour_ram_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30691,
   "name": "panel_pic_off_colour_ram_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30697,
   "name": "panel_pic_off_colour_ram_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30703,
   "name": "panel_pic_off_screen_colours_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30709,
   "name": "panel_pic_off_screen_colours_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30715,
   "name": "panel_pic_off_screen_colours_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30721,
   "name": "panel_pic_off_screen_colours_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30727,
   "name": "panel_pic_off_screen_colours_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30733,
   "name": "panel_pic_on_row_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30781,
   "name": "panel_pic_on_row_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30829,
   "name": "panel_pic_on_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30877,
   "name": "panel_pic_on_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30925,
   "name": "panel_pic_on_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30973,
   "name": "panel_pic_on_colour_ram_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30979,
   "name": "panel_pic_on_colour_ram_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30985,
   "name": "panel_pic_on_colour_ram_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30991,
   "name": "panel_pic_on_colour_ram_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30997,
   "name": "panel_pic_on_colour_ram_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31003,
   "name": "panel_pic_on_screen_colours_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31009,
   "name": "panel_pic_on_screen_colours_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31015,
   "name": "panel_pic_on_screen_colours_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31021,
   "name": "panel_pic_on_screen_colours_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31027,
   "name": "panel_pic_on_screen_colours_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31033,
   "name": "draw_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31081,
   "name": "a_7969",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31083,
   "name": "a_796B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31085,
   "name": "blocked_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31092,
   "name": "b_7974",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31099,
   "name": "b_797B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31102,
   "name": "b_797E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31105,
   "name": "b_7981",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31150,
   "name": "blocked_left_below",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 31161,
   "name": "b_79B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31177,
   "name": "b_79C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31187,
   "name": "b_79D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31190,
   "name": "blocked_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31197,
   "name": "b_79DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31204,
   "name": "b_79E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31207,
   "name": "b_79E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31210,
   "name": "b_79EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31255,
   "name": "blocked_right_below",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 31266,
   "name": "b_7A22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31290,
   "name": "b_7A3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31293,
   "name": "b_7A3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31296,
   "name": "tile_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32320,
   "name": "tile_map_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "tile_map_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33344,
   "name": "tile_map_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34368,
   "name": "tile_map_48",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35392,
   "name": "tile_map_64",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35904,
   "name": "draw_continue_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35906,
   "name": "j_8C42",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35922,
   "name": "b_8C52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35925,
   "name": "j_8C55",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35932,
   "name": "b_8C5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35934,
   "name": "j_8C5E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35950,
   "name": "b_8C6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35953,
   "name": "j_8C71",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35960,
   "name": "b_8C78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35979,
   "name": "continue_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35980,
   "name": "briefing_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35981,
   "name": "continue_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36004,
   "name": "credits_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36027,
   "name": "continue_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36028,
   "name": "continue_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36090,
   "name": "b_8CFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36124,
   "name": "j_8D1C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36151,
   "name": "b_8D37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36162,
   "name": "b_8D42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36174,
   "name": "j_8D4E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36204,
   "name": "game_over_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36278,
   "name": "j_8DB6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36294,
   "name": "b_8DC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36297,
   "name": "j_8DC9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36304,
   "name": "b_8DD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36354,
   "name": "game_over_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36364,
   "name": "text_shapes_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36428,
   "name": "text_shapes_a_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36500,
   "name": "text_shapes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36564,
   "name": "text_shapes_b_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36676,
   "name": "key_code",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36677,
   "name": "read_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36709,
   "name": "b_8F65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36720,
   "name": "b_8F70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36723,
   "name": "j_8F73",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36735,
   "name": "j_8F7F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36743,
   "name": "b_8F87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36784,
   "name": "b_8FB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36790,
   "name": "b_8FB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36796,
   "name": "key_row_select",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36797,
   "name": "key_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36798,
   "name": "key_bits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36799,
   "name": "key_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36863,
   "name": "swap_shapes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36865,
   "name": "b_9001",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36900,
   "name": "b_9024",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36920,
   "name": "briefing_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36921,
   "name": "briefing_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36922,
   "name": "show_briefing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36957,
   "name": "j_905D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36969,
   "name": "b_9069",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36976,
   "name": "j_9070",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36985,
   "name": "a_9079",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37005,
   "name": "b_908D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37008,
   "name": "j_9090",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37018,
   "name": "b_909A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37047,
   "name": "b_90B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37054,
   "name": "b_90BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37070,
   "name": "briefing_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37112,
   "name": "briefing_text_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37309,
   "name": "obj_init_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37402,
   "name": "obj_init_counter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37485,
   "name": "obj_init_flag",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37568,
   "name": "obj_init_energy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37651,
   "name": "obj_init_variant",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37734,
   "name": "obj_init_flag_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37817,
   "name": "obj_init_left_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37900,
   "name": "obj_init_left_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37983,
   "name": "obj_init_right_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38066,
   "name": "obj_init_right_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38149,
   "name": "obj_init_x_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38232,
   "name": "obj_init_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38315,
   "name": "obj_init_y_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38398,
   "name": "obj_init_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38481,
   "name": "tile_top_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38482,
   "name": "tile_top_odd",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38546,
   "name": "tile_top_odd_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38639,
   "name": "tile_bottom_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38640,
   "name": "tile_bottom_odd",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38704,
   "name": "tile_bottom_odd_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38766,
   "name": "panel_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38966,
   "name": "panel_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48896,
   "name": "char_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "shape_blank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49216,
   "name": "enemy_shapes_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49976,
   "name": "swap_block_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50112,
   "name": "swap_block_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50256,
   "name": "swap_block_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50336,
   "name": "enemy_shapes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51200,
   "name": "screen_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51960,
   "name": "screen_a_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52216,
   "name": "sprite_pointer_a_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52217,
   "name": "sprite_pointer_a_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52218,
   "name": "sprite_pointer_a_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52219,
   "name": "sprite_pointer_a_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52220,
   "name": "sprite_pointer_a_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52221,
   "name": "sprite_pointer_a_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52222,
   "name": "sprite_pointer_a_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52223,
   "name": "sprite_pointer_a_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52224,
   "name": "screen_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52984,
   "name": "panel_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53240,
   "name": "sprite_pointer_b_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53241,
   "name": "sprite_pointer_b_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53242,
   "name": "sprite_pointer_b_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53243,
   "name": "sprite_pointer_b_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53244,
   "name": "sprite_pointer_b_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53245,
   "name": "sprite_pointer_b_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53246,
   "name": "sprite_pointer_b_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53247,
   "name": "sprite_pointer_b_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "play_charset_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 54272,
   "name": "play_charset_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55168,
   "name": "play_charset_blank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "hazard_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55424,
   "name": "heart_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55552,
   "name": "flame_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55744,
   "name": "spark_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55808,
   "name": "shuttle_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55936,
   "name": "prop_flash_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56128,
   "name": "spike_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56320,
   "name": "medkit_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56384,
   "name": "flame_small_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56448,
   "name": "dash_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56640,
   "name": "disc_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56960,
   "name": "fall_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "player_shapes_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "player_shapes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58624,
   "name": "climb_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58816,
   "name": "walk_right_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59200,
   "name": "walk_left_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59584,
   "name": "attack_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60608,
   "name": "attack_shapes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61568,
   "name": "shapes_unreferenced",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61760,
   "name": "banner_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62784,
   "name": "banner_shapes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63168,
   "name": "shapes_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63424,
   "name": "panel_bitmap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63680,
   "name": "panel_picture_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63728,
   "name": "panel_bitmap_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63960,
   "name": "timer_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64000,
   "name": "panel_picture_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64048,
   "name": "panel_bitmap_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64088,
   "name": "score_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64144,
   "name": "panel_bitmap_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64200,
   "name": "energy_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64264,
   "name": "panel_bitmap_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64320,
   "name": "panel_picture_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64368,
   "name": "panel_bitmap_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64640,
   "name": "panel_picture_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64688,
   "name": "panel_bitmap_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64960,
   "name": "panel_picture_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65008,
   "name": "panel_bitmap_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65344,
   "name": "after_bitmap",
   "type": "Field",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 2592,
   "type": "line",
   "text": "Entry of the level 2 file, jumped to by the resident loader at $0424. Jumps straight to the main loop at $1FC4, which first runs the level setup at $5335."
  },
  {
   "address": 2595,
   "type": "line",
   "text": "Non-maskable interrupt: sets the flag $0A2B to 1 and returns. The main loop at $2010 reads the flag."
  },
  {
   "address": 2603,
   "type": "line",
   "text": "Set to 1 by every NMI ($0A23); cleared by the level setup at $53C1 and read by the main loop at $2010."
  },
  {
   "address": 2610,
   "type": "line",
   "text": "Sprite pointer value of each slot, 14 bytes ($0A32-$0A3F); written by the behaviours and copied into both screens' pointer tables by the multiplexer $6604."
  },
  {
   "address": 2624,
   "type": "line",
   "text": "Sprite colour of each slot, 14 bytes; written by the behaviours and copied to $D02A and on by $6604."
  },
  {
   "address": 2638,
   "type": "line",
   "text": "1 when a slot's sprite is multicolour, 14 bytes; $6604 copies it into $D01C."
  },
  {
   "address": 2652,
   "type": "line",
   "text": "Animation counter of each slot, 14 bytes, stepped by the behaviours that animate ($1457, $15F2, $1ADD, $1BAF, $1E06, $14F4)."
  },
  {
   "address": 2666,
   "type": "line",
   "text": "Walk phase 0 to $1F of each slot, 14 bytes, which picks the frame from the tables at $1747, $1767, $1982 and $19A2."
  },
  {
   "address": 2680,
   "type": "line",
   "text": "Frames left in the current random walk of each slot, 14 bytes; set from $65AE in $1787 and $19C2."
  },
  {
   "address": 2694,
   "type": "line",
   "text": "Hurt timer of each slot, 14 bytes: set to 10 by $10B2, counted down by $1787 and $19C2 before the enemy acts again."
  },
  {
   "address": 2708,
   "type": "line",
   "text": "State of each of the 11 slots (14 bytes): 0 free, 1 and 2 walking, 3 to 13 the other behaviours, 14 and 15 attacking, 16 knocked down; picks the routine in the table at $128B."
  },
  {
   "address": 2722,
   "type": "line",
   "text": "Type and state of each of the 84 objects; 0 means no object, and the value is copied into $0A94 when the object takes a slot."
  },
  {
   "address": 2724,
   "type": "line",
   "text": "The table at $0AA2 read from two entries on: the type of the object two after the one in Y, which $1787 and $19C2 compare with $11."
  },
  {
   "address": 2788,
   "type": "line",
   "text": "The rest of the table at $0AA2 as it is read from two entries on (see $0AA4)."
  },
  {
   "address": 2814,
   "type": "line",
   "text": "The counter table at $0AFF read one entry back; $1C94 sets it to 7 for the object before the one in Y."
  },
  {
   "address": 2815,
   "type": "line",
   "text": "Counter of each object, used by the behaviours as a timer, step or saved state (copied from $921A at the start)."
  },
  {
   "address": 2816,
   "type": "line",
   "text": "The counter table at $0AFF read one entry on; $61AC sets it to $FE when an enemy is knocked down and $6273 counts it down."
  },
  {
   "address": 2817,
   "type": "line",
   "text": "The counter table at $0AFF read two entries on; $1809 and $1A43 test it and $1718 and $1953 set it to $32."
  },
  {
   "address": 2881,
   "type": "line",
   "text": "The rest of the counter table at $0AFF as it is read two entries on (see $0B01)."
  },
  {
   "address": 2898,
   "type": "line",
   "text": "Flag of each object: set to 1 by $1817 and $1A51 when an enemy starts an attack from a distance (probably a shot) and cleared at $1713 and $194E; copied from $926D at the start."
  },
  {
   "address": 2981,
   "type": "line",
   "text": "Energy of each object (hits it can take), counted down by $61AC; for pickups it is set to 1 when taken. Copied from $92C0."
  },
  {
   "address": 3064,
   "type": "line",
   "text": "Variant flag of each object, 0 or 1 (a second set of frames, attack steps and colours); copied from $9313."
  },
  {
   "address": 3147,
   "type": "line",
   "text": "A flag of each object: 1 keeps an enemy standing with its first frame until the hit test $10B2 sets it to 2 (read at $1796 and $19D1); 0 and 2 let it act. Copied from $9366."
  },
  {
   "address": 3230,
   "type": "line",
   "text": "Left limit of the object's walk, low byte, for each of the 84 objects; copied from $93B9."
  },
  {
   "address": 3232,
   "type": "line",
   "text": "The table at $0C9E read two entries on; $170E sets it to 1 and $1949 to 0 for the object two after the one in Y."
  },
  {
   "address": 3296,
   "type": "line",
   "text": "The rest of the table at $0C9E as it is read two entries on (see $0CA0)."
  },
  {
   "address": 3313,
   "type": "line",
   "text": "Left limit of the object's walk, high byte; copied from $940C."
  },
  {
   "address": 3396,
   "type": "line",
   "text": "Right limit of the object's walk, low byte; copied from $945F."
  },
  {
   "address": 3479,
   "type": "line",
   "text": "Right limit of the object's walk, high byte; copied from $94B2."
  },
  {
   "address": 3561,
   "type": "line",
   "text": "The table at $0DEA read one entry back: the world X, low byte, of the object before the one in Y; $138B and $1572 restore a falling or shooting object to it."
  },
  {
   "address": 3562,
   "type": "line",
   "text": "World X of each object, low byte; copied from $9505 and kept up to date by the behaviours."
  },
  {
   "address": 3563,
   "type": "line",
   "text": "The table at $0DEA read one entry on; the walking behaviours store the new X here as well as in $0DEA."
  },
  {
   "address": 3564,
   "type": "line",
   "text": "The table at $0DEA read two entries on: $171D and $1958 store there the X of the enemy that starts a shot."
  },
  {
   "address": 3628,
   "type": "line",
   "text": "The rest of the table at $0DEA as it is read two entries on (see $0DEC)."
  },
  {
   "address": 3644,
   "type": "line",
   "text": "The table at $0E3D read one entry back: the world X, high byte, of the object before the one in Y."
  },
  {
   "address": 3645,
   "type": "line",
   "text": "World X of each object, high byte; copied from $9558."
  },
  {
   "address": 3646,
   "type": "line",
   "text": "The table at $0E3D read one entry on; the walking behaviours store the new high byte here too."
  },
  {
   "address": 3647,
   "type": "line",
   "text": "The table at $0E3D read two entries on: $1722 and $195D store there the high byte of the X of a shot."
  },
  {
   "address": 3711,
   "type": "line",
   "text": "The rest of the table at $0E3D as it is read two entries on (see $0E3F)."
  },
  {
   "address": 3727,
   "type": "line",
   "text": "The table at $0E90 read one entry back: the world Y, low byte, of the object before the one in Y."
  },
  {
   "address": 3728,
   "type": "line",
   "text": "World Y of each object, low byte; copied from $95AB."
  },
  {
   "address": 3810,
   "type": "line",
   "text": "The table at $0EE3 read one entry back: the world Y, high byte, of the object before the one in Y."
  },
  {
   "address": 3811,
   "type": "line",
   "text": "World Y of each object, high byte; copied from $95FE."
  },
  {
   "address": 3894,
   "type": "line",
   "text": "The object each of the slots holds (14 bytes), set by $0FA5."
  },
  {
   "address": 3907,
   "type": "line",
   "text": "The table at $0F44 read one entry back: the slot held by the object before the one in Y, which $1D3E, $796D and $79D6 use to find the other half of an enemy."
  },
  {
   "address": 3908,
   "type": "line",
   "text": "The slot each object holds, for the 84 objects; set by $0FA5."
  },
  {
   "address": 3998,
   "type": "line",
   "text": "Scratch bytes of $0FA5: the difference between an object and the camera, across ($0F9E/$0F9F) and down ($0FA0/$0FA1)."
  },
  {
   "address": 3999,
   "type": "line",
   "text": "High byte of the horizontal distance between an object and the camera in $0FA5."
  },
  {
   "address": 4000,
   "type": "line",
   "text": "Low byte of the vertical distance between an object and the camera in $0FA5."
  },
  {
   "address": 4001,
   "type": "line",
   "text": "High byte of the vertical distance between an object and the camera in $0FA5."
  },
  {
   "address": 4002,
   "type": "line",
   "text": "Target of the beq at $0FAA in scan_objects: a short hop on to the per-object check at $1033, because a branch cannot reach it."
  },
  {
   "address": 4005,
   "type": "line",
   "text": "Scans the 84 objects, last to first (X from $53), against the camera ($FB/$FC across, $FD/$FE down). An object with type $0AA2 of 0, or outside the window (from 26 pixels left of the camera to $015A right of it, and $14 to $C2 below the camera's height) is released: its slot in $0A94 is cleared, its height set to $FE and its flag $1056 cleared. One inside the window that has no slot yet takes the first free slot of the 11 ($0A94 zero), receives its position and type, and $0F36/$0F44 link slot and object."
  },
  {
   "address": 4169,
   "type": "line",
   "text": "Holds the X register saved by $1038: the immediate operand of the LDX at $1048, reloaded after the call or table lookup that follows."
  },
  {
   "address": 4182,
   "type": "line",
   "text": "1 for each object that holds a slot, 84 bytes; set and cleared by $0FA5."
  },
  {
   "address": 4272,
   "type": "line",
   "text": "Set to 1 by $10B2 when it lands a hit, which makes further calls of $10B2 return at once; cleared by the player routines at $5BC7 and $5D91."
  },
  {
   "address": 4273,
   "type": "line",
   "text": "Set to 1 by $10B2 on a hit, with $10B0; cleared by the player routine at $5BCA. $61AC reads it to take 2 instead of 1 from the object's energy."
  },
  {
   "address": 4274,
   "type": "line",
   "text": "For slot X (object Y), when no hit has been scored yet this frame ($10B0, $10B1), the player is striking ($5BBA or $5B2C set) and the slot is in state 1, 2, 14 or 15: compares the slot's height ($A3,X) with the player's ($747C) (10 lines above or $18 below) and its distance across with $747B, on the side the player faces ($59B9). On a hit it pushes the object 9 pixels away along the map unless it is past its limit ($0C9E-$0D97), sets the slot to state 1 (player facing right) or 2 (facing left), starts the hurt timer $0A86 with 10, sets $10B0 and $10B1 and calls $61AC."
  },
  {
   "address": 4613,
   "type": "line",
   "text": "Number of state 7 slots queued in $1206 by $1214."
  },
  {
   "address": 4614,
   "type": "line",
   "text": "List of the slots in state 7 found by $1214 (ended by $FF), handled after the others by $1D3E."
  },
  {
   "address": 4628,
   "type": "line",
   "text": "Per-frame object update, skipped while the game is paused ($6443). Goes through the 11 slots: a slot in state 7 is only queued in the list at $1206; for the others, while the raster is above line $B4, it runs the player-attack test $10B2 and then the behaviour for the slot's state, through the table at $128B and a call whose operand is rewritten at $125F/$1260. The queued state 7 slots are then handled by $1D3E."
  },
  {
   "address": 4702,
   "type": "side",
   "text": "operand $125F/$1260 rewritten from the table at $128B; $12AF shown is the value left in the file"
  },
  {
   "address": 4703,
   "type": "line",
   "text": "Low byte of the address in the JSR at $125E, rewritten by $1252 with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 4704,
   "type": "line",
   "text": "High byte of the address in the JSR at $125E, rewritten by $1258 with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 4740,
   "type": "line",
   "text": "Holds the X register saved by $1275: the immediate operand of the LDX at $1283, reloaded after the call or table lookup that follows."
  },
  {
   "address": 4746,
   "type": "line",
   "text": "The object of the slot being handled by $1214 ($0F36,X), which the behaviours and $10B2 use as Y."
  },
  {
   "address": 4747,
   "type": "line",
   "text": "Table of the 18 behaviour routines, one word each, indexed by the slot state in $0A94 times 2: 0 $12AF (an RTS), 1 $1787, 2 $19C2, 3 $1ADD, 4 $1BAF, 5 $1C01, 6 $1C1C, 7 $1D3E, 8 $1E06, 9 $15F2, 10 $1457, 11 $14F4, 12 $133E, 13 $1344, 14 $1895, 15 $1659, 16 $6273, 17 $12B0 (the word at $12AD)."
  },
  {
   "address": 4748,
   "type": "line",
   "text": "The high bytes of the words of the behaviour table at $128B (every second byte)."
  },
  {
   "address": 4783,
   "type": "line",
   "text": "A lone RTS, the behaviour of a free slot (state 0)."
  },
  {
   "address": 4784,
   "type": "line",
   "text": "Behaviour for state 17, the last word of the behaviour table at $128B, probably a shot that flies sideways, since its frames $73 and $74 are the two short dashes of dash_shapes. Sets the sprite colour $0A40 to $0B (dark grey) and the frame $0A32 to 0. While the counter $0AFF of the object is not 0 it takes 1 off the counter, tests the slot against the player ($5507) and, on contact, hurts the player ($5579), sets the counter to 0 and returns. Without contact it moves the slot 5 pixels a call, to the right with the frame $73 when the byte $0C9E of the object (obj_left_lo) is 0 and to the left with the frame $74 otherwise, and copies the new X to the object ($0DEA and $0E3D). The counter is set to 0 when the slot's screen position $BF is negative, when it moves right with $BF at 1 or more and $87 at $28 or more, or when it moves left with $BF at 0 and $87 below $14. With the counter at 0 it puts the slot and the object at the position of the object two places before it in the tables ($0DE8 and $0E3B). No traced code stores the state 17 in $0A94, so no traced code runs these bytes, and nothing in this routine starts the counter."
  },
  {
   "address": 4926,
   "type": "line",
   "text": "Behaviour for state 12: sets the sprite colour $0A40 to 6 and does nothing else."
  },
  {
   "address": 4932,
   "type": "line",
   "text": "Behaviour for state 13: moves 3 pixels left a frame while the height follows the table at $13AC (16-bit steps) over $64 frames, then puts the object back at the position of the previous object. Probably a falling object."
  },
  {
   "address": 5036,
   "type": "line",
   "text": "Height steps of the falling object of behaviour $1344, 16 bits each, indexed by twice the count in $0AFF (which runs to 99); the first 78 steps end at $1447, where the next table starts."
  },
  {
   "address": 5037,
   "type": "line",
   "text": "The high bytes of the 16-bit height steps at $13AC (every second byte)."
  },
  {
   "address": 5100,
   "type": "line",
   "text": "Steps 32 to 77 of fall_steps ($13AC), the last 46 of its 78 height steps (16 bits each, low byte first, signed): 2 for 1 entry, 3 for 2 entries, 4 for 2 entries, 5 for 2 entries, -4 for 2 entries, -3 for 2 entries, -2 for 2 entries, -1 for 2 entries, 0 for 2 entries, 1 for 2 entries, 2 for 2 entries, 3 for 2 entries, -2 for 2 entries, -1 for 2 entries, 0 for 2 entries, 1 for 2 entries, -1 for 2 entries, 0 for 13 entries. The first 32 steps are at $13AC. The count in $0AFF that indexes the table runs to 99, so the counts 78 to 99 read the bytes after the end of the table at $1447."
  },
  {
   "address": 5192,
   "type": "line",
   "text": "The 15 sprite pointer values ($68 seven times, then $69 eight times) of the shuttling object of behaviour $1457, indexed by $0A5C."
  },
  {
   "address": 5207,
   "type": "line",
   "text": "Behaviour for state 10: moves the object back and forth between its two limits ($0C9E-$0CF1 and $0D44-$0D97), 2 pixels a frame, with the direction in $0AFF and the frame from $1448. It makes no contact test."
  },
  {
   "address": 5242,
   "type": "line",
   "text": "Holds the Y register saved by $146F: the immediate operand of the LDY at $1479, reloaded after the call or table lookup that follows."
  },
  {
   "address": 5328,
   "type": "line",
   "text": "Eight steps of 4 bytes of the shooter of behaviour $14F4: change in X and in Y, 16 bits each, indexed by 4 times $0A5C."
  },
  {
   "address": 5329,
   "type": "line",
   "text": "The second byte of each shot step in the table at $14D0: the change in X, high byte."
  },
  {
   "address": 5330,
   "type": "line",
   "text": "The third byte of each shot step in the table at $14D0: the change in Y, low byte."
  },
  {
   "address": 5331,
   "type": "line",
   "text": "The fourth byte of each shot step in the table at $14D0: the change in Y, high byte."
  },
  {
   "address": 5360,
   "type": "line",
   "text": "Working copy of the change in X, low byte, of the current step of the shot in $14F4."
  },
  {
   "address": 5361,
   "type": "line",
   "text": "Working copy of the change in X, high byte, of the current step of the shot in $14F4."
  },
  {
   "address": 5362,
   "type": "line",
   "text": "Working copy of the change in Y, low byte, of the current step of the shot in $14F4."
  },
  {
   "address": 5363,
   "type": "line",
   "text": "Working copy of the change in Y, high byte, of the current step of the shot in $14F4."
  },
  {
   "address": 5364,
   "type": "line",
   "text": "Behaviour for state 11: hurts the player on contact, otherwise every $1E frames ($0AFF) restarts a shot that moves along the eight steps of the table at $14D0 (4 bytes each: across and down, 16 bits) and plays sound effect $1C."
  },
  {
   "address": 5438,
   "type": "line",
   "text": "Holds the Y register saved by $1516: the immediate operand of the LDY at $153D, reloaded after the call or table lookup that follows."
  },
  {
   "address": 5522,
   "type": "line",
   "text": "Holds the Y register saved by $1589: the immediate operand of the LDY at $1591, reloaded after the call or table lookup that follows."
  },
  {
   "address": 5524,
   "type": "line",
   "text": "Holds the X register saved by $1586: the immediate operand of the LDX at $1593, reloaded after the call or table lookup that follows."
  },
  {
   "address": 5526,
   "type": "line",
   "text": "The 90 sprite pointer values of the animated hazard of behaviour $15F2, indexed by $0A5C."
  },
  {
   "address": 5618,
   "type": "line",
   "text": "Behaviour for state 9: an animated hazard that hurts the player on contact. Steps the counter $0A5C down from $5A and shows the frame from the table at $1596."
  },
  {
   "address": 5653,
   "type": "line",
   "text": "Holds the Y register saved by $160A: the immediate operand of the LDY at $1614, reloaded after the call or table lookup that follows."
  },
  {
   "address": 5670,
   "type": "line",
   "text": "Returns 1 in A when slot X is off the screen to the right or its screen X is at or beyond the player's ($747B), and 0 when it is on the left; the walking behaviours use it to decide when to turn."
  },
  {
   "address": 5687,
   "type": "line",
   "text": "Returns 0 in A when slot X's screen height ($A3,X) is within nine lines above or $1B below the player's ($747C), and 1 when it is not."
  },
  {
   "address": 5720,
   "type": "line",
   "text": "Hit recoil counter, set by $5579 and the enemy attacks and counted down by $6315; while it runs the stored joystick byte is not refreshed."
  },
  {
   "address": 5721,
   "type": "line",
   "text": "Behaviour for state 15: the attack of an enemy that was walking left, started by $1787. Counts $0AFF down from $19 and returns to state 1 at zero; at 4 it shows the first attack frame and steps 8 pixels, at $0E the second and steps 6 back, and then, when the player is within $1C in front of it, writes joystick left into $2064, sets the recoil $1658 to 4 and calls $5586. Frames and offsets differ by the variant flag $0BF8 (operands patched at the start)."
  },
  {
   "address": 5811,
   "type": "line",
   "text": "Immediate operand of the LDA at $16B2, set by $1660 and $1681 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5819,
   "type": "line",
   "text": "Immediate operand of the ADC at $16BA, set by $1665 and $1686 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5834,
   "type": "line",
   "text": "Immediate operand of the LDA at $16C9, set by $166A and $168B to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5842,
   "type": "line",
   "text": "Immediate operand of the SBC at $16D1, set by $166F and $1690 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5934,
   "type": "line",
   "text": "Immediate operand of the SBC at $172D, set by $1674 and $1695 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5954,
   "type": "line",
   "text": "Immediate operand of the LDA at $1741, set by $1679 and $169A to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 5959,
   "type": "line",
   "text": "The 32 sprite pointer values of an enemy walking left (variant 0), indexed by the phase $0A6A."
  },
  {
   "address": 5991,
   "type": "line",
   "text": "The 32 sprite pointer values of an enemy walking left (variant 1), indexed by the phase $0A6A."
  },
  {
   "address": 6023,
   "type": "line",
   "text": "Behaviour for state 1: probably an enemy walking left. Waits out the hurt timer $0A86, walks one pixel left in runs of random length ($0A78 from $65AE) until it reaches its left limit ($0C9E/$0CF1) and then turns (state 2); when the player is near on its left it switches to state 15 (attack). Sprite frames come from $1747 or $1767 by the variant flag $0BF8."
  },
  {
   "address": 6293,
   "type": "line",
   "text": "Behaviour for state 14: the mirror of $1659, for an enemy that was walking right, started by $19C2. Counts $0AFF down, returns to state 2 at zero, and in reach of the player writes joystick right into $2064, sets $1658 to 4 and calls $5586."
  },
  {
   "address": 6383,
   "type": "line",
   "text": "Immediate operand of the LDA at $18EE, set by $189C and $18BD to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6391,
   "type": "line",
   "text": "Immediate operand of the SBC at $18F6, set by $18A1 and $18C2 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6406,
   "type": "line",
   "text": "Immediate operand of the LDA at $1905, set by $18A6 and $18C7 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6414,
   "type": "line",
   "text": "Immediate operand of the ADC at $190D, set by $18AB and $18CC to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6505,
   "type": "line",
   "text": "Immediate operand of the ADC at $1968, set by $18B0 and $18D1 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6525,
   "type": "line",
   "text": "Immediate operand of the LDA at $197C, set by $18B5 and $18D6 to the value for the enemy variant given by the flag $0BF8 (the attack frame, step size or offset)."
  },
  {
   "address": 6530,
   "type": "line",
   "text": "The 32 sprite pointer values of an enemy walking right (variant 0), indexed by the phase $0A6A."
  },
  {
   "address": 6562,
   "type": "line",
   "text": "The 32 sprite pointer values of an enemy walking right (variant 1), indexed by the phase $0A6A."
  },
  {
   "address": 6594,
   "type": "line",
   "text": "Behaviour for state 2: probably an enemy walking right, the mirror of $1787. Walks one pixel right in random runs to its right limit ($0D44/$0D97), turns into state 1 there, and goes to state 14 (attack) when the player is near on its right. Frames from $1982 or $19A2."
  },
  {
   "address": 6863,
   "type": "line",
   "text": "The 12 sprite pointer values of the pickup of behaviour $1ADD ($62 seven times, $63 seven times), indexed by $0A5C."
  },
  {
   "address": 6877,
   "type": "line",
   "text": "Behaviour for state 3, probably an energy pickup. Bobs along the path in $1B66 with frames from $1ACF, and when the player touches it ($5507) sets its done flag $0BA5, adds 10 to the energy $5578 (up to $21) and plays sound effect $10 through $B0EE."
  },
  {
   "address": 6928,
   "type": "line",
   "text": "Holds the Y register saved by $1B05: the immediate operand of the LDY at $1B0F, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7010,
   "type": "line",
   "text": "Holds the Y register saved by $1B59: the immediate operand of the LDY at $1B61, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7012,
   "type": "line",
   "text": "Holds the X register saved by $1B56: the immediate operand of the LDX at $1B63, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7014,
   "type": "line",
   "text": "Height steps of the pickup of behaviour $1ADD, 16 bits each, 24 entries, indexed by twice $0AFF."
  },
  {
   "address": 7015,
   "type": "line",
   "text": "The high bytes of the 16-bit height steps at $1B66 (every second byte)."
  },
  {
   "address": 7062,
   "type": "line",
   "text": "The 25 sprite pointer values of the pickup of behaviour $1BAF, indexed by $0A5C."
  },
  {
   "address": 7087,
   "type": "line",
   "text": "Behaviour for state 4, probably a bonus pickup. Cycles through the frames at $1B96 and, when touched, sets $0BA5, adds 5 to the score digit 4 ($585D) and plays sound effect $0C."
  },
  {
   "address": 7133,
   "type": "line",
   "text": "Holds the Y register saved by $1BD2: the immediate operand of the LDY at $1BDC, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7165,
   "type": "line",
   "text": "Holds the Y register saved by $1BF4: the immediate operand of the LDY at $1BFC, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7167,
   "type": "line",
   "text": "Holds the X register saved by $1BF1: the immediate operand of the LDX at $1BFE, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7169,
   "type": "line",
   "text": "Behaviour for state 5: shows sprite $6B while the counter $0AFF counts down and sprite $6A otherwise; it does nothing else."
  },
  {
   "address": 7196,
   "type": "line",
   "text": "Behaviour for state 6, probably a thrown or falling hazard. On contact with the player ($5507) it hurts him ($5579) and restarts. Otherwise it counts $0AFF up to $6A, moves 4 pixels left between counts 4 and $33, and moves in height by the table at $1CD1 (a value of $5A or more is used as the sprite frame instead). When the run ends it puts itself back near its start and plays sound effect $14."
  },
  {
   "address": 7373,
   "type": "line",
   "text": "Holds the Y register saved by $1CC4: the immediate operand of the LDY at $1CCC, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7375,
   "type": "line",
   "text": "Holds the X register saved by $1CC1: the immediate operand of the LDX at $1CCE, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7377,
   "type": "line",
   "text": "Height steps of the hazard of behaviour $1C1C, one byte each, 106 entries; a value of $5A or more is a sprite pointer."
  },
  {
   "address": 7441,
   "type": "line",
   "text": "Entries 64 to 105, the last 42, of hazard_arc_steps ($1CD1). All are sprite pointers, which are the values of $5A or more: $64 for 5 entries, $65 for 5 entries, $66 for 5 entries, $64 for 5 entries, $65 for 5 entries, $66 for 5 entries, $71 for 6 entries, $72 for 6 entries. $64 to $66 are the three flames of flame_shapes, $71 is flame_small_shape and $72 is the first shape of dash_shapes."
  },
  {
   "address": 7483,
   "type": "line",
   "text": "The sprite pointer limit ($05 or $14, by the variant flag $0BF8) that $1D3E compares the linked slot's frame with."
  },
  {
   "address": 7485,
   "type": "line",
   "text": "The linked slot found by $1D3E, kept while it picks the sprite pointer."
  },
  {
   "address": 7486,
   "type": "line",
   "text": "Behaviour for a slot in state 7, run after the other slots by $1214. Sets the slot's position from its object and picks its sprite pointer from the tables at $6219/$6255, $1DDA or $1DBA by the phase $0A6A and the sprite frame of the slot belonging to the previous object ($0F43), so probably the lower sprite of a two-sprite enemy that follows the upper one."
  },
  {
   "address": 7610,
   "type": "line",
   "text": "The 32 sprite pointer values of the following sprite of $1D3E, used when the linked slot's frame is at or above the limit; indexed by $0A6A."
  },
  {
   "address": 7642,
   "type": "line",
   "text": "The 32 sprite pointer values of the following sprite of $1D3E, used when the linked slot's frame is below the limit; indexed by $0A6A."
  },
  {
   "address": 7674,
   "type": "line",
   "text": "The 12 sprite pointer values of the hazard of behaviour $1E06, indexed by $0A5C."
  },
  {
   "address": 7686,
   "type": "line",
   "text": "Behaviour for state 8: a moving hazard that hurts the player on contact ($5507, $5579). Steps $0AFF by 2 up to $A0 and moves along the offsets in $1E82 (across) and $1F22 (down), with frames from $1DFA."
  },
  {
   "address": 7726,
   "type": "line",
   "text": "Holds the Y register saved by $1E23: the immediate operand of the LDY at $1E2D, reloaded after the call or table lookup that follows."
  },
  {
   "address": 7810,
   "type": "line",
   "text": "Steps across of the hazard of behaviour $1E06, 16 bits each, 80 entries, indexed by twice $0AFF."
  },
  {
   "address": 7811,
   "type": "line",
   "text": "The high bytes of the 16-bit steps across at $1E82 (every second byte)."
  },
  {
   "address": 7874,
   "type": "line",
   "text": "Entries 32 to 79, the last 48, of hazard_path_x ($1E82), 16 bits each, low byte first, signed: -2 for 8 entries, 0 for 26 entries, 2 for 14 entries. The first 32 entries are at $1E82."
  },
  {
   "address": 7970,
   "type": "line",
   "text": "Steps down of the hazard of behaviour $1E06, 16 bits each, 80 entries."
  },
  {
   "address": 7971,
   "type": "line",
   "text": "The high bytes of the 16-bit steps down at $1F22 (every second byte)."
  },
  {
   "address": 8034,
   "type": "line",
   "text": "Entries 32 to 79, the last 48, of hazard_path_y ($1F22), 16 bits each, low byte first, signed: 0 for 8 entries, 3 for 26 entries, 0 for 14 entries. The first 32 entries are at $1F22."
  },
  {
   "address": 8130,
   "type": "line",
   "text": "The player's world X, low byte; with $1FC3 the high byte, worked out by $7401 from the camera and $747B."
  },
  {
   "address": 8131,
   "type": "line",
   "text": "The player's world X, high byte, worked out by $7401 with $1FC2."
  },
  {
   "address": 8132,
   "type": "line",
   "text": "Starts play: runs the level setup $5335, then loops from $1FC7. Each pass calls $65CE (which returns at once), the object scan $0FA5, the energy bar $57D5, the level-end test $2050, the score digits $5889, the banner step $56D4, the timer routines $75FD and $755D, and the pause check $2029. When $0A11 is set, key code $20 in $8F44 ends the level; with $0A11 and the energy $5578 both zero it runs the death screen $8D6C, and the continue screen $8CBC while $0A12 is non-zero, which restarts the level when it sets $8CBB. The level ends through $201F (the wipe $74BC, then the loader at $0407) when $2060 is set; the NMI flag $0A2B sends it back to $0404 to load again from level 1."
  },
  {
   "address": 8233,
   "type": "line",
   "text": "Pause: when the key code in $8F44 is $50, sets $6443, waits for the key to be released, pressed again and released, then clears $6443."
  },
  {
   "address": 8272,
   "type": "line",
   "text": "Sets $2060 to 1 when the vertical scroll position in $FD/$FE is below $00B3, which makes the main loop at $200B end the level."
  },
  {
   "address": 8288,
   "type": "line",
   "text": "Set to 1 by $2050 when the vertical scroll position is in the end zone; the main loop then ends the level."
  },
  {
   "address": 8289,
   "type": "line",
   "text": "Horizontal fine scroll, ORed into the low bits of $D016 by $6480."
  },
  {
   "address": 8290,
   "type": "line",
   "text": "Vertical fine scroll, ORed into $D011 by $6480."
  },
  {
   "address": 8292,
   "type": "line",
   "text": "Joystick port 2 ($DC00) as last read by $6315; bit 0 up, 1 down, 2 left, 3 right, 4 fire, clear when pressed."
  },
  {
   "address": 8293,
   "type": "line",
   "text": "CIA 1 port B ($DC01) as last read by $6315."
  },
  {
   "address": 8294,
   "type": "line",
   "text": "Cleared by the level setup at $53C4; nothing else reads or writes it in this file."
  },
  {
   "address": 8295,
   "type": "line",
   "text": "Which of the two screen matrices is on show: 0 selects $CC00 and 1 selects $C800 (through $62FF); the scroll routines build the other one and flip this at the end."
  },
  {
   "address": 8296,
   "type": "line",
   "text": "The camera's height, low byte, saved by $206C before a scroll step and restored by the fine scroll routines."
  },
  {
   "address": 8297,
   "type": "line",
   "text": "The camera's height, high byte, saved by $206C before a scroll step."
  },
  {
   "address": 8298,
   "type": "line",
   "text": "The camera's X, low byte, saved by $206C before a scroll step and restored by the fine scroll routines."
  },
  {
   "address": 8299,
   "type": "line",
   "text": "The camera's X, high byte, saved by $206C before a scroll step."
  },
  {
   "address": 8300,
   "type": "line",
   "text": "Called by $63E8 each frame unless the game is paused ($6443), when it only reads the keyboard ($2127). Saves the camera ($FB-$FE) and the player position, then, from the player's screen position in $747B,$747C, picks one of ten scroll directions: right at X $DC or more, left below $64, up above Y $41, down at $87 or more (corners combine them). It stores the direction in $212E, starts $212F at $0B steps, and runs the routine for the direction from the table at $2135 through a call whose operand is rewritten at $2124/$2125. While $212F runs it steps $2130 through 0-3 and repeats the direction."
  },
  {
   "address": 8483,
   "type": "side",
   "text": "operand $2124/$2125 rewritten from the table at $2135; the $2B67 shown is only what the file left there"
  },
  {
   "address": 8484,
   "type": "line",
   "text": "Low byte of the address in the JSR at $2123, rewritten by $211A with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 8485,
   "type": "line",
   "text": "High byte of the address in the JSR at $2123, rewritten by $2120 with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 8494,
   "type": "line",
   "text": "Scroll direction chosen by $206C (0 none, 1 down, 2 up, 4 right, 5 right and down, 6 right and up, 8 left, 9 left and down, 10 left and up)."
  },
  {
   "address": 8495,
   "type": "line",
   "text": "Frames of scrolling still to run for the direction in $212E; set to $0B when a scroll starts and counted down by $206C."
  },
  {
   "address": 8496,
   "type": "line",
   "text": "Phase 0 to 3 of the scroll step; picks which part of the screen shift the scroll routines do this frame."
  },
  {
   "address": 8499,
   "type": "line",
   "text": "Cleared at $5409 and $54CE; nothing reads it in this file."
  },
  {
   "address": 8500,
   "type": "line",
   "text": "Cleared at $540C and $54D1; nothing reads it in this file."
  },
  {
   "address": 8501,
   "type": "line",
   "text": "Table of sixteen routine addresses indexed by the scroll direction in $212E times 2: 0, 3 and 7 point at an RTS ($2155); 1 down $26E6; 2 up $2A7F; 4 right $2188; 5 right and down $32FC; 6 right and up $2DD4; 8 left $34DE; 9 left and down $314C; 10 left and up $2F85. Five more words, for the directions 11 to 15, point at $2155 too."
  },
  {
   "address": 8502,
   "type": "line",
   "text": "The high bytes of the words of the scroll routine table at $2135 (every second byte)."
  },
  {
   "address": 8533,
   "type": "line",
   "text": "A lone RTS, the routine for the scroll directions 0, 3 and 7, which do nothing."
  },
  {
   "address": 8534,
   "type": "line",
   "text": "The fine horizontal scroll values for the four phases of a scroll to the right: 4, 2, 0, 6."
  },
  {
   "address": 8538,
   "type": "line",
   "text": "Sets the fine horizontal scroll $2061 from the table at $2156 (4, 2, 0, 6) for the phase in $2130 and returns the phase in Y. When $2061 already holds that value (or is 0 early in a scroll) it restores the camera and player X saved by $206C instead, so that step does not move the view."
  },
  {
   "address": 8584,
   "type": "line",
   "text": "Scroll direction 4, view to the right. Moves the camera X ($FB/$FC) on 2 pixels and the player's screen X ($747B) back 2, takes the fine scroll for this phase from $215A, and runs the phase's work: phase 0 shifts the left half of the screen ($21D7), 1 the right half and a new column ($21F2), 2 builds the colours ($21BD), 3 copies them to colour RAM and flips the screen buffers ($21C8)."
  },
  {
   "address": 8637,
   "type": "line",
   "text": "Phase 2 of a scroll to the right: builds the colour buffer for the screen matrix just made, through $3A06 or $465E by the buffer flag $2067."
  },
  {
   "address": 8648,
   "type": "line",
   "text": "Phase 3 of a scroll to the right: fills the colours for the top rows ($7060) and the lower rows ($6809), then flips the buffer flag $2067."
  },
  {
   "address": 8663,
   "type": "line",
   "text": "Phase 0 of a scroll to the right: shifts columns 0 to $13 of the screen one character left into the other screen matrix, through $2213 or $228B by the buffer flag $2067."
  },
  {
   "address": 8690,
   "type": "line",
   "text": "Phase 1 of a scroll to the right: shifts columns $14 to $25 one character left into the other matrix and draws the new right column from the map ($2303)."
  },
  {
   "address": 8723,
   "type": "line",
   "text": "Copies the screen matrix at $CC00 one character to the left into $C800, 19 rows of 40, for the columns from Y up to the limit in the operand at $2287."
  },
  {
   "address": 8839,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2286, set by $21DE and $21F9 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 8843,
   "type": "line",
   "text": "Copies the screen matrix at $C800 one character to the left into $CC00, 19 rows of 40, for the columns from Y up to the limit in the operand at $22FF."
  },
  {
   "address": 8959,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $22FE, set by $21E9 and $2207 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 8963,
   "type": "line",
   "text": "Draws the new right-hand column of the screen from the tile map: reads 19 map tiles down from the map pointer $A1 plus 20 columns, each as two characters, through the tables at $9651 and $96EF (the half-tile flags $AF and $BD pick the characters), into the matrix at $CC00 or $C800 by $2067."
  },
  {
   "address": 9883,
   "type": "line",
   "text": "Moves the map pointer $A1 on by one tile when the half-column flag $AF wraps from 1 to 0 (it counts $AF up first)."
  },
  {
   "address": 9908,
   "type": "line",
   "text": "The fine vertical scroll values for a scroll downwards: 4, 2, 0, 6."
  },
  {
   "address": 9912,
   "type": "line",
   "text": "Sets the fine vertical scroll $2062 from the table at $26B4 (4, 2, 0, 6) for the phase in $2130 and returns the phase in Y; when $2062 already holds that value (or is 0 early in a scroll) it restores the camera and player Y saved by $206C instead."
  },
  {
   "address": 9958,
   "type": "line",
   "text": "Scroll direction 1, view downwards. Moves the camera Y ($FD/$FE) on 2 and the player's screen Y back 2, takes the fine vertical scroll from $26B8, and runs the phase's work: shift the upper rows up ($2751), the lower rows and the new bottom row ($2736), the colours ($271C), then the colours into colour RAM and the buffer flip ($2727)."
  },
  {
   "address": 10012,
   "type": "line",
   "text": "Phase 2 of a scroll downwards: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 10023,
   "type": "line",
   "text": "Phase 3 of a scroll downwards: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 10038,
   "type": "line",
   "text": "Phase 1 of a scroll downwards: copies columns $26 down to $11 of the screen up one row into the other matrix, with $2772 or $27E4 by the buffer flag $2067."
  },
  {
   "address": 10065,
   "type": "line",
   "text": "Phase 0 of a scroll downwards: copies columns $10 down to 0 of the screen up one row into the other matrix ($2772 or $27E4) and draws the new bottom row into it ($2945 or $2856)."
  },
  {
   "address": 10098,
   "type": "line",
   "text": "Copies the screen matrix at $CC00 up one row into $C800 for the columns from Y down to 0, 19 rows at a time; the limit in $27E0 is patched by the caller."
  },
  {
   "address": 10208,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $27DF, set by $273D and $2758 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 10212,
   "type": "line",
   "text": "Copies the screen matrix at $C800 up one row into $CC00 for the columns from Y down, 19 rows at a time; the limit in $2852 is patched by the caller."
  },
  {
   "address": 10322,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2851, set by $2748 and $2766 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 10326,
   "type": "line",
   "text": "Draws a new bottom row of tiles from the map (the pointer $A1 plus $0280) into the matrix at $CC00, two characters for each tile through the tables at $9651 and $96EF."
  },
  {
   "address": 10445,
   "type": "line",
   "text": "Low byte of the address in the LDA at $28CC, rewritten by $28A0 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10446,
   "type": "line",
   "text": "High byte of the address in the LDA at $28CC, rewritten by $28A9 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10452,
   "type": "line",
   "text": "Low byte of the address in the LDA at $28D3, rewritten by $28A3 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10453,
   "type": "line",
   "text": "High byte of the address in the LDA at $28D3, rewritten by $28AC to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10501,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2904, rewritten by $28A6 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10502,
   "type": "line",
   "text": "High byte of the address in the LDA at $2904, rewritten by $28AF to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10517,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2914, rewritten by $28B2 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10518,
   "type": "line",
   "text": "High byte of the address in the LDA at $2914, rewritten by $28B8 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10524,
   "type": "line",
   "text": "Low byte of the address in the LDA at $291B, rewritten by $28B5 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10525,
   "type": "line",
   "text": "High byte of the address in the LDA at $291B, rewritten by $28BB to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10565,
   "type": "line",
   "text": "The same as $2856 for the matrix at $C800."
  },
  {
   "address": 10684,
   "type": "line",
   "text": "Low byte of the address in the LDA at $29BB, rewritten by $298F to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10685,
   "type": "line",
   "text": "High byte of the address in the LDA at $29BB, rewritten by $2998 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10691,
   "type": "line",
   "text": "Low byte of the address in the LDA at $29C2, rewritten by $2992 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10692,
   "type": "line",
   "text": "High byte of the address in the LDA at $29C2, rewritten by $299B to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10740,
   "type": "line",
   "text": "Low byte of the address in the LDA at $29F3, rewritten by $2995 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10741,
   "type": "line",
   "text": "High byte of the address in the LDA at $29F3, rewritten by $299E to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10756,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2A03, rewritten by $29A1 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10757,
   "type": "line",
   "text": "High byte of the address in the LDA at $2A03, rewritten by $29A7 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10763,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2A0A, rewritten by $29A4 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10764,
   "type": "line",
   "text": "High byte of the address in the LDA at $2A0A, rewritten by $29AA to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 10804,
   "type": "line",
   "text": "Moves the map pointer $A1 on by one row of 64 tiles when the half-row flag $BD wraps from 1 to 0."
  },
  {
   "address": 10829,
   "type": "line",
   "text": "The fine vertical scroll values for a scroll upwards: 2, 4, 6, 0."
  },
  {
   "address": 10833,
   "type": "line",
   "text": "Sets the fine vertical scroll $2062 from the table at $2A4D (2, 4, 6, 0) for the phase in $2130 and returns the phase in Y; restores the camera and player Y saved by $206C in the same cases as $26B8."
  },
  {
   "address": 10879,
   "type": "line",
   "text": "Scroll direction 2, view upwards. Moves the camera Y back 2 and the player's screen Y on 2, takes the fine vertical scroll from $2A51, and runs the phase's work ($2AEA, $2ACF, $2AB5, $2AC0) in the same four steps as the others, shifting the screen down a row with $2B0B and $2B7D and drawing the new top row ($2BF1, $2CD7)."
  },
  {
   "address": 10933,
   "type": "line",
   "text": "Phase 2 of a scroll upwards: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 10944,
   "type": "line",
   "text": "Phase 3 of a scroll upwards: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 10959,
   "type": "line",
   "text": "Phase 1 of a scroll upwards: shifts columns $26 down to $11 down one row into the other matrix with $2B0B or $2B7D by $2067."
  },
  {
   "address": 10986,
   "type": "line",
   "text": "Phase 0 of a scroll upwards: shifts columns $10 down to 0 down one row into the other matrix ($2B0B or $2B7D) and draws the new top row into it ($2CD7 or $2BF1)."
  },
  {
   "address": 11019,
   "type": "line",
   "text": "Copies the screen matrix at $CC00 down one row into $C800 for the columns from Y down to 0, 19 rows at a time."
  },
  {
   "address": 11111,
   "type": "line",
   "text": "Not a routine: the operand of the call at $2123 as the file stores it ($2B67), which falls inside the instruction at $2B65 of the row shift $2B0B. $206C overwrites the operand from the table at $2135 before the call is made."
  },
  {
   "address": 11129,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2B78, set by $2AD6 and $2AF1 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 11133,
   "type": "line",
   "text": "Copies the screen matrix at $C800 down one row into $CC00 for the columns from Y down to 0, 19 rows at a time."
  },
  {
   "address": 11243,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2BEA, set by $2AE1 and $2AFF to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 11247,
   "type": "line",
   "text": "Scratch of the row drawing routines: the vertical half-step (0 or 1) that picks between the tile tables $9651 and $96EF."
  },
  {
   "address": 11248,
   "type": "line",
   "text": "Scratch of the row drawing routines: the horizontal half-step (0 or 1) of the tile being drawn."
  },
  {
   "address": 11249,
   "type": "line",
   "text": "Draws a new top row of tiles from the map (pointer $A1) into the matrix at $CC00, two characters for each tile through the tables at $9651 and $96EF."
  },
  {
   "address": 11363,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2C62, rewritten by $2C36 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11364,
   "type": "line",
   "text": "High byte of the address in the LDA at $2C62, rewritten by $2C3F to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11370,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2C69, rewritten by $2C39 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11371,
   "type": "line",
   "text": "High byte of the address in the LDA at $2C69, rewritten by $2C42 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11417,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2C98, rewritten by $2C3C to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11418,
   "type": "line",
   "text": "High byte of the address in the LDA at $2C98, rewritten by $2C45 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11433,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2CA8, rewritten by $2C48 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11434,
   "type": "line",
   "text": "High byte of the address in the LDA at $2CA8, rewritten by $2C4E to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11440,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2CAF, rewritten by $2C4B to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11441,
   "type": "line",
   "text": "High byte of the address in the LDA at $2CAF, rewritten by $2C51 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11479,
   "type": "line",
   "text": "The same as $2BF1 for the matrix at $C800."
  },
  {
   "address": 11593,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2D48, rewritten by $2D1C to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11594,
   "type": "line",
   "text": "High byte of the address in the LDA at $2D48, rewritten by $2D25 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11600,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2D4F, rewritten by $2D1F to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11601,
   "type": "line",
   "text": "High byte of the address in the LDA at $2D4F, rewritten by $2D28 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11647,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2D7E, rewritten by $2D22 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11648,
   "type": "line",
   "text": "High byte of the address in the LDA at $2D7E, rewritten by $2D2B to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11663,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2D8E, rewritten by $2D2E to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11664,
   "type": "line",
   "text": "High byte of the address in the LDA at $2D8E, rewritten by $2D34 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11670,
   "type": "line",
   "text": "Low byte of the address in the LDA at $2D95, rewritten by $2D31 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11671,
   "type": "line",
   "text": "High byte of the address in the LDA at $2D95, rewritten by $2D37 to point at the tile table $9651 or $96EF, chosen by the half-tile flags."
  },
  {
   "address": 11709,
   "type": "line",
   "text": "Moves the map pointer $A1 back by one row of 64 tiles when the half-row flag $BD runs below 0."
  },
  {
   "address": 11732,
   "type": "line",
   "text": "Scroll direction 6, view to the right and upwards: moves the camera X on 2 and Y back 2, adjusts the player's screen position the other way, takes both fine scrolls ($2A51, $215A) and runs the phase's work, with each copy shifting the screen one row down and one column left ($2EA0, $2F12), and drawing the new top row and right column."
  },
  {
   "address": 11810,
   "type": "line",
   "text": "Phase 2 of the right-and-up scroll: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 11821,
   "type": "line",
   "text": "Phase 3 of the right-and-up scroll: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 11836,
   "type": "line",
   "text": "Phase 0 of the right-and-up scroll: shifts columns 0 to $16 one row down and one column left into the other matrix with $2EA0 or $2F12 by $2067."
  },
  {
   "address": 11863,
   "type": "line",
   "text": "Phase 1 of the right-and-up scroll: shifts columns $17 to $25 the same way, then moves the map pointer and draws the new right column ($2303) and the new top row ($2CD7 or $2BF1)."
  },
  {
   "address": 11936,
   "type": "line",
   "text": "Copies the matrix at $CC00 into $C800 shifted one row down and one column left, for the columns from Y to the limit patched at $2F0E."
  },
  {
   "address": 12046,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2F0D, set by $2E43 and $2E5E to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 12050,
   "type": "line",
   "text": "Copies the matrix at $C800 into $CC00 shifted one row down and one column left, for the columns from Y to the limit patched at $2F80."
  },
  {
   "address": 12160,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $2F7F, set by $2E4E and $2E80 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 12164,
   "type": "line",
   "text": "Set to 1 by the diagonal scroll routines while they draw the new column and row; the row drawing routines return early when it is set. Cleared by $206C ($20B7) when a scroll starts."
  },
  {
   "address": 12165,
   "type": "line",
   "text": "Scroll direction 10, view to the left and upwards: moves the camera X back 2 and Y back 2 and the player's screen position on 2 in both, takes both fine scrolls ($2A51, $34B0) and runs the four phases, with each copy shifting the screen one row down and one column right ($3051, $30C3)."
  },
  {
   "address": 12243,
   "type": "line",
   "text": "Phase 2 of the left-and-up scroll: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 12254,
   "type": "line",
   "text": "Phase 3 of the left-and-up scroll: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 12269,
   "type": "line",
   "text": "Phase 0 of the left-and-up scroll: shifts columns $25 down to $0F one row down and one column right into the other matrix with $3051 or $30C3 by $2067."
  },
  {
   "address": 12296,
   "type": "line",
   "text": "Phase 1 of the left-and-up scroll: shifts columns $0E down to 0 the same way, then moves the map pointer and draws the new left column ($3659) and the new top row ($2CD7 or $2BF1)."
  },
  {
   "address": 12369,
   "type": "line",
   "text": "Copies the matrix at $CC00 into $C800 shifted one row down and one column right."
  },
  {
   "address": 12479,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $30BE, set by $2FF4 and $300F to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 12483,
   "type": "line",
   "text": "Copies the matrix at $C800 into $CC00 shifted one row down and one column right."
  },
  {
   "address": 12593,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $3130, set by $2FFF and $3031 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 12597,
   "type": "line",
   "text": "Start of a left-and-down scroll: sets the diagonal flag $2F84 to 1, then calls back_map_row ($2DBD), draw_left_column ($3659), back_map_column ($39EF), step_map_row ($2A34), draw_top_row_a ($2BF1) and back_map_row again, and runs on into scroll_left_down ($314C). The table at $2135 does not point here and no traced code calls or jumps to it, so these bytes are not run."
  },
  {
   "address": 12620,
   "type": "line",
   "text": "Scroll direction 9, view to the left and downwards: moves the camera X back 2 and Y on 2 and the player's screen position the other way, takes both fine scrolls ($26B8, $34B0) and runs the four phases, with each copy shifting the screen one row up and one column right ($3218, $328A)."
  },
  {
   "address": 12698,
   "type": "line",
   "text": "Phase 2 of the left-and-down scroll: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 12709,
   "type": "line",
   "text": "Phase 3 of the left-and-down scroll: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 12724,
   "type": "line",
   "text": "Phase 0 of the left-and-down scroll: shifts columns $25 down to $0F one row up and one column right into the other matrix with $3218 or $328A by $2067."
  },
  {
   "address": 12751,
   "type": "line",
   "text": "Phase 1 of the left-and-down scroll: shifts columns $0E down to 0 the same way, then moves the map pointer and draws the new left column ($3659) and the new bottom row ($2945 or $2856)."
  },
  {
   "address": 12824,
   "type": "line",
   "text": "Copies the matrix at $CC00 into $C800 shifted one row up and one column right."
  },
  {
   "address": 12934,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $3285, set by $31BB and $31D6 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 12938,
   "type": "line",
   "text": "Copies the matrix at $C800 into $CC00 shifted one row up and one column right."
  },
  {
   "address": 13048,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $32F7, set by $31C6 and $31F8 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 13052,
   "type": "line",
   "text": "Scroll direction 5, view to the right and downwards: moves the camera X on 2 and Y on 2 and the player's screen position back 2 in both, takes both fine scrolls ($26B8, $215A) and runs the four phases, with each copy shifting the screen one row up and one column left ($33C8, $343A)."
  },
  {
   "address": 13130,
   "type": "line",
   "text": "Phase 2 of the right-and-down scroll: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 13141,
   "type": "line",
   "text": "Phase 3 of the right-and-down scroll: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 13156,
   "type": "line",
   "text": "Phase 0 of the right-and-down scroll: shifts columns 0 to $16 one row up and one column left into the other matrix with $33C8 or $343A by $2067."
  },
  {
   "address": 13183,
   "type": "line",
   "text": "Phase 1 of the right-and-down scroll: shifts columns $17 to $25 the same way, then moves the map pointer and draws the new right column ($2303) and the new bottom row ($2945 or $2856)."
  },
  {
   "address": 13256,
   "type": "line",
   "text": "Copies the matrix at $CC00 into $C800 shifted one row up and one column left."
  },
  {
   "address": 13366,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $3435, set by $336B and $3386 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 13370,
   "type": "line",
   "text": "Copies the matrix at $C800 into $CC00 shifted one row up and one column left."
  },
  {
   "address": 13480,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $34A7, set by $3376 and $33A8 to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 13484,
   "type": "line",
   "text": "The fine horizontal scroll values for a scroll to the left: 2, 4, 6, 0."
  },
  {
   "address": 13488,
   "type": "line",
   "text": "Sets the fine horizontal scroll $2061 from the table at $34AC (2, 4, 6, 0) for the phase in $2130 and returns the phase in Y; restores the camera and player X saved by $206C at the end."
  },
  {
   "address": 13534,
   "type": "line",
   "text": "Scroll direction 8, view to the left. Moves the camera X back 2 and the player's screen X on 2, takes the fine scroll from $34B0 and runs the four phases ($352D, $3548, $3513, $351E), shifting the screen one column right ($3569, $35E1) and drawing the new left column ($3659)."
  },
  {
   "address": 13587,
   "type": "line",
   "text": "Phase 2 of a scroll to the left: builds the colour buffer through $3A06 or $465E by $2067."
  },
  {
   "address": 13598,
   "type": "line",
   "text": "Phase 3 of a scroll to the left: fills the colours ($7060, $6809) and flips the buffer flag $2067."
  },
  {
   "address": 13613,
   "type": "line",
   "text": "Phase 0 of a scroll to the left: shifts columns $26 down to $12 of the screen one character right into the other matrix with $3569 or $35E1 by $2067."
  },
  {
   "address": 13640,
   "type": "line",
   "text": "Phase 1 of a scroll to the left: shifts columns $11 down to 0 one character right and draws the new left column ($3659)."
  },
  {
   "address": 13673,
   "type": "line",
   "text": "Copies the matrix at $CC00 one character to the right into $C800, 19 rows of 40, for the columns from Y down to 0."
  },
  {
   "address": 13789,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $35DC, set by $3534 and $354F to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 13793,
   "type": "line",
   "text": "Copies the matrix at $C800 one character to the right into $CC00, 19 rows of 40, for the columns from Y down to 0."
  },
  {
   "address": 13909,
   "type": "line",
   "text": "Loop limit, the immediate operand of the CPY at $3654, set by $353F and $355D to the column the copy loop stops at, which differs for each part of the screen shift."
  },
  {
   "address": 13913,
   "type": "line",
   "text": "Draws the new left-hand column of the screen from the tile map, 19 tiles of two characters each through the tables at $9651 and $96EF, into the matrix at $CC00 or $C800 by $2067. About 880 bytes of unrolled code, with the half-tile flags $AF and $BD picking the characters."
  },
  {
   "address": 14831,
   "type": "line",
   "text": "Moves the map pointer $A1 back by one tile when the half-column flag $AF runs below 0."
  },
  {
   "address": 14854,
   "type": "line",
   "text": "Unrolled loop that looks up the colour of each character of the lower screen rows in the matrix at $CC00 (from $CD90) through the table at $BF00 and stores them in the buffer $7123-$7289. The routine at $465E does the same from the matrix at $C800."
  },
  {
   "address": 15877,
   "type": "line",
   "text": "Last store of colours_from_cc before colours_cc_part2: puts the colour found in the colour table at $BF00 into colour_buffer at $7196. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 15880,
   "type": "line",
   "text": "Second part of the unrolled colour lookup from the matrix at $CC00: the characters from $CE04 on (screen rows 15 and 16), stored in the buffer from $7197."
  },
  {
   "address": 16903,
   "type": "line",
   "text": "Last store of colours_cc_part2 before colours_cc_part3: puts the colour found in the colour table at $BF00 into colour_buffer at $720B. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 16906,
   "type": "line",
   "text": "Third part of the unrolled colour lookup from the matrix at $CC00: the characters from $CE79 on (screen rows 17 and 18), stored in the buffer from $720C."
  },
  {
   "address": 17929,
   "type": "line",
   "text": "Last store of colours_cc_part3 before the end of the routine: puts the colour found in the colour table at $BF00 into colour_buffer at $7280. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 17932,
   "type": "line",
   "text": "Last part of the unrolled colour lookup from the matrix at $CC00: the characters up to $CEF6, stored in the buffer up to $7289, ending with the RTS at $465D."
  },
  {
   "address": 18014,
   "type": "line",
   "text": "Unrolled loop that looks up the colour of each character of the lower screen rows in the matrix at $C800 (from $C990) through the table at $BF00 and stores them in the buffer $7123-$7289."
  },
  {
   "address": 19037,
   "type": "line",
   "text": "Last store of colours_from_c8 before colours_c8_part2: puts the colour found in the colour table at $BF00 into colour_buffer at $7196. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 19040,
   "type": "line",
   "text": "Second part of the unrolled colour lookup from the matrix at $C800: the characters from $CA04 on, stored in the buffer from $7197."
  },
  {
   "address": 20063,
   "type": "line",
   "text": "Last store of colours_c8_part2 before colours_c8_part3: puts the colour found in the colour table at $BF00 into colour_buffer at $720B. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 20066,
   "type": "line",
   "text": "Third part of the unrolled colour lookup from the matrix at $C800: the characters from $CA79 on, stored in the buffer from $720C."
  },
  {
   "address": 21089,
   "type": "line",
   "text": "Last store of colours_c8_part3 before the end of the routine: puts the colour found in the colour table at $BF00 into colour_buffer at $7280. Named only so that the routine's 1,024-byte reach covers it."
  },
  {
   "address": 21092,
   "type": "line",
   "text": "Last part of the unrolled colour lookup from the matrix at $C800: the characters up to $CAF6, stored in the buffer up to $7289, ending with the RTS at $52B5."
  },
  {
   "address": 21174,
   "type": "line",
   "text": "Copies the 84 entries of the 14 object tables from the level data at $91BD-$9650 into the working tables $0AA2-$0EE3, clears the slot links $0F44 and active flags $1056, and zeroes the 14-byte slot tables $0A5C-$0A94 and $0F36."
  },
  {
   "address": 21301,
   "type": "line",
   "text": "Level setup, called first by $1FC4. Banks the ROMs out ($01=$35), selects video bank 3 ($DD00 bits 0-1 cleared), screen at $CC00 ($D018=$30) with extended colour mode on, silences the sound ($B828), starts the countdown digits $755A-$755C (5 in $755C only when $0A10 is set), sets the energy $5578 to $21, clears the level flags and sprite registers, sets the player at $86,$6B and the camera X to $0032 and Y to $0484, the map pointer $A1/$A2 to $89BA. It then draws the briefing text ($903A, with the character-set swap $8FFF), the first screen ($73A3), loads the object tables ($52B6), starts the music ($B0C8), points the NMI at $0A23 and the IRQ at $6315, sets the raster compare to line $82 and enables the raster interrupt with CLI."
  },
  {
   "address": 21718,
   "type": "line",
   "text": "Copies the status panel under the playfield: the 200 characters at $976E to $CEF7 and their colours at $9836 to $DAF7, clears the two rows at $CFC0 and $DBC0, then draws the timer label through $760F when $0A10 is set, otherwise through $7678."
  },
  {
   "address": 21766,
   "type": "line",
   "text": "Scratch of $5507 (the player's height plus $0E) and of the hit tests $796D and $79D6 (the slot's height less $15)."
  },
  {
   "address": 21767,
   "type": "line",
   "text": "Tests whether slot X overlaps the player: compares the slot's screen height ($A3,X) and position ($87,X, $BF,X) with the player's ($747C, $747B), with a height window that depends on the crouch flag $5B2D. Returns 1 in A for overlap, otherwise 0."
  },
  {
   "address": 21879,
   "type": "line",
   "text": "Frames of protection after a hit, set to 3 by $5579 and counted down by $6315."
  },
  {
   "address": 21880,
   "type": "line",
   "text": "The player's energy, $21 at the start of the level; the bar at $57D5 shows it, the pickup at $1ADD adds to it and $5586 takes from it. The main loop ends the game when it is zero."
  },
  {
   "address": 21881,
   "type": "line",
   "text": "Takes one point of energy from the player unless the guard timer $5577 is running: sets $5577 and the recoil $1658 to 3, then falls into $5586."
  },
  {
   "address": 21894,
   "type": "line",
   "text": "Takes one point of energy from $5578 when it is not zero and plays sound effect 4 through $B0EE."
  },
  {
   "address": 21917,
   "type": "line",
   "text": "Holds the Y register saved by $5594: the immediate operand of the LDY at $559C, reloaded after the call or table lookup that follows."
  },
  {
   "address": 21919,
   "type": "line",
   "text": "Holds the X register saved by $5591: the immediate operand of the LDX at $559E, reloaded after the call or table lookup that follows."
  },
  {
   "address": 21921,
   "type": "line",
   "text": "Called by $6480 while the banner flag $56D1 is set. Turns on all eight sprites, sets their colours and multicolours, and then busy-waits on the raster until line $96, setting up eight sprites in a row at height $3C and then $66 (pointers from $CB and $D3 through $5678) and, from line $92, six sprites at height $9B with pointer $C5 and other X positions through $5699, probably to draw a large picture across the screen."
  },
  {
   "address": 22136,
   "type": "line",
   "text": "Part of the banner code: after a short delay, sets the heights of sprites 0-3 to A and of sprites 4-7 to A plus $15, then falls into $5699."
  },
  {
   "address": 22169,
   "type": "line",
   "text": "Sets the eight sprite pointers in both screens' tables ($CFF8-$CFFF and $CBF8-$CBFF) to X, X+1, up to X+7."
  },
  {
   "address": 22225,
   "type": "line",
   "text": "1 while the banner at $55A1 is on; set by $56D4."
  },
  {
   "address": 22226,
   "type": "line",
   "text": "Frames of the banner left; set to $C8 by $56D4."
  },
  {
   "address": 22227,
   "type": "line",
   "text": "Set to 1 by $56D4 once the banner has run, so that it does not start again."
  },
  {
   "address": 22228,
   "type": "line",
   "text": "Called by the main loop. Once only ($56D3 clear): when the player's world X is $0222 or more, the camera's height is below $00E3 and the banner flag $56D1 is clear, it sets $56D1 and the countdown $56D2 to $C8 and blacks the colour RAM of the screen. While $56D1 is set it counts $56D2 down and at 1 puts the colours back from the screen matrix ($2067 picks it) through the table at $BF00, clears $56D1 and sets $56D3."
  },
  {
   "address": 22416,
   "type": "line",
   "text": "The four masks $FC, $F0, $C0 and $00 that $57D5 uses to take pixels off the end of the bar."
  },
  {
   "address": 22420,
   "type": "line",
   "text": "64 bytes of shapes for the eight characters of the energy bar, built by $57D5 and copied to $FAC8."
  },
  {
   "address": 22421,
   "type": "line",
   "text": "Part of the energy bar shapes at $5794: byte 1 of the first character; $57D5 builds the pattern here."
  },
  {
   "address": 22422,
   "type": "line",
   "text": "Part of the energy bar shapes at $5794: byte 2 of the first character."
  },
  {
   "address": 22423,
   "type": "line",
   "text": "Part of the energy bar shapes at $5794: byte 3 of the first character."
  },
  {
   "address": 22424,
   "type": "line",
   "text": "Part of the energy bar shapes at $5794: byte 4 of the first character."
  },
  {
   "address": 22425,
   "type": "line",
   "text": "Part of the energy bar shapes at $5794: byte 5 of the first character."
  },
  {
   "address": 22426,
   "type": "line",
   "text": "The rest of the energy bar shapes at $5794: bytes 6 to 8 of the first character and the other seven characters."
  },
  {
   "address": 22484,
   "type": "line",
   "text": "Counter of $57D5: the energy step it has reached, counting up from $5578 to $21."
  },
  {
   "address": 22485,
   "type": "line",
   "text": "Builds the energy bar: fills 8 characters of the panel ($CF59 on, colour 5 at $DB59) with the code $1D, writes a striped pattern into the eight character shapes at $5795, masks off 2 pixels for each step by which the energy $5578 is below $21 (mask table at $5790) and copies the 64 bytes at $5794 to the character set at $FAC8."
  },
  {
   "address": 22621,
   "type": "line",
   "text": "Adds A to the decimal digit $0A00+X and carries towards the more significant digits (X counting down) until a digit does not overflow. Digit 6 is the units, so the 4 and 8 on digit 5 from $61AC are 40 and 80 points and the 5 on digit 4 at $1BAF is 500."
  },
  {
   "address": 22664,
   "type": "line",
   "text": "Scratch of $585D: the amount or carry added to the digit."
  },
  {
   "address": 22665,
   "type": "line",
   "text": "Draws the seven digits from $0A00 on into the panel's character shapes at $FA58 (8 bytes each from the digit shapes at $58C2) through $589C."
  },
  {
   "address": 22684,
   "type": "line",
   "text": "Copies the 8-byte shape of digit $0A00+X from $58C2 to the pointer $85/$86 and moves the pointer on 8 bytes."
  },
  {
   "address": 22722,
   "type": "line",
   "text": "The shapes of the digits 0 to 9, 8 bytes each (80 bytes)."
  },
  {
   "address": 22786,
   "type": "line",
   "text": "The shapes of the digits 8 and 9 (16 bytes, 8 a digit), the last two of digit_shapes ($58C2). Each row is one byte of four two-bit pixels, of which the last is blank in these two digits."
  },
  {
   "address": 22802,
   "type": "line",
   "text": "The player's state: 1 standing or walking, 2 falling, 3 jumping, 4 climbing, 5 punching, 6 crouching, 7 a strike or hop with a short arc. Chosen by the routine for the current state and read by $5925."
  },
  {
   "address": 22803,
   "type": "line",
   "text": "Table of the eight state routines, one word each: 0 $5950 (an RTS), 1 $5BBC, 2 $5D8F, 3 $5E9E, 4 $600B, 5 $59E0, 6 $5B31, 7 $5A3E."
  },
  {
   "address": 22804,
   "type": "line",
   "text": "The high bytes of the words of the player state table at $5913 (every second byte)."
  },
  {
   "address": 22819,
   "type": "line",
   "text": "The player's X ($747B) before this frame's move; put back when the move would end inside a solid tile."
  },
  {
   "address": 22820,
   "type": "line",
   "text": "The player's Y ($747C) before this frame's move."
  },
  {
   "address": 22821,
   "type": "line",
   "text": "Called from $6480 each frame. Unless the game is paused ($6443) it saves the player position in $5923/$5924 and runs the routine for the player's state $5912 (table at $5913, through a call whose operand is rewritten at $5948/$5949); it then draws the player's frames with $6111."
  },
  {
   "address": 22855,
   "type": "side",
   "text": "operand $5948/$5949 rewritten from the table at $5913; $5BBC shown is the value left in the file"
  },
  {
   "address": 22856,
   "type": "line",
   "text": "Low byte of the address in the JSR at $5947, rewritten by $593E with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 22857,
   "type": "line",
   "text": "High byte of the address in the JSR at $5947, rewritten by $5944 with the routine for the current case, so the call goes to a different routine each time."
  },
  {
   "address": 22862,
   "type": "line",
   "text": "Scratch of $7401: the world X, low byte, then the world height, low byte."
  },
  {
   "address": 22863,
   "type": "line",
   "text": "Scratch of $7401: the world X, high byte, then the world height, high byte."
  },
  {
   "address": 22864,
   "type": "line",
   "text": "A lone RTS, the routine of player state 0, which does nothing."
  },
  {
   "address": 22865,
   "type": "line",
   "text": "Index of the current walk or climb frame, stepped by $5977, $5998 and the climb code."
  },
  {
   "address": 22866,
   "type": "line",
   "text": "The 18 sprite pointer values of the left-facing walk, three for each of six poses."
  },
  {
   "address": 22884,
   "type": "line",
   "text": "The 18 sprite pointer values of the right-facing walk."
  },
  {
   "address": 22902,
   "type": "line",
   "text": "Toggled by $5977 and $5998 so that the walk frame index advances every second call."
  },
  {
   "address": 22903,
   "type": "line",
   "text": "Steps the left-facing walk animation: toggles $5976 and, on every other call, advances the index $5951 through the 18 frames at $5952, and on every call puts the frame in $610D."
  },
  {
   "address": 22936,
   "type": "line",
   "text": "The same for the right-facing walk: advances $5951 and takes the frame from the 18 at $5964."
  },
  {
   "address": 22969,
   "type": "line",
   "text": "1 when the player faces left, 0 when he faces right."
  },
  {
   "address": 22970,
   "type": "line",
   "text": "The tile column under the player, kept by $5BBC at $5C75 for the climb test at $5C96."
  },
  {
   "address": 22971,
   "type": "line",
   "text": "Sets the three frame numbers in $610E-$6110 for the punch: $90, $B4, $BE facing right, $91, $B5, $BF facing left."
  },
  {
   "address": 23008,
   "type": "line",
   "text": "Player state 5, punching. While the timer $5BBA is non-zero it counts it down each frame and sets the punch frames through $59BB. When it has run out the state holds until fire is released, then returns to state 1 with the punch delay $5B2F set to 6."
  },
  {
   "address": 23039,
   "type": "line",
   "text": "Sets the three frame numbers in $610E-$6110 for the strike: $8C, $A3, $B0 facing right and $8D, $B1, $BB facing left."
  },
  {
   "address": 23076,
   "type": "line",
   "text": "Table of the 13 height steps of state 7, 16-bit values: -6 to +6."
  },
  {
   "address": 23102,
   "type": "line",
   "text": "Player state 7: adds the 13 signed steps of the table at $5A24 (-6 up to +6) to his height in turn, steers left and right, sets the strike frames through $59FF while the timer $5B2C runs and returns to state 1 when the steps are used up."
  },
  {
   "address": 23339,
   "type": "line",
   "text": "Set to 10 by $5A3E when a strike ends and counted down there while the timer $5B2C is zero."
  },
  {
   "address": 23340,
   "type": "line",
   "text": "Frames left of the strike (set to $0E by the crouch strike); the hit test $10B2 and the draw routine $6111 read it."
  },
  {
   "address": 23341,
   "type": "line",
   "text": "Set to 1 when the player is crouching; read by $5507 and $6111."
  },
  {
   "address": 23342,
   "type": "line",
   "text": "Delay before the player can crouch again, set to 10 after a state change and counted down by $5CF1."
  },
  {
   "address": 23343,
   "type": "line",
   "text": "Frames before the next punch can start, set to 6 when a punch ends and counted down by $5D3D."
  },
  {
   "address": 23344,
   "type": "line",
   "text": "Delay before the next jump, counted down by $5BBC."
  },
  {
   "address": 23345,
   "type": "line",
   "text": "Player state 6, crouching. Fire starts the strike (state 7, timer $5B2C set to $0E, sound effect 0 through $B0EE). Down held keeps him crouched and turns him with left and right; letting go of down returns to state 1."
  },
  {
   "address": 23382,
   "type": "line",
   "text": "Holds the Y register saved by $5B4D: the immediate operand of the LDY at $5B55, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23384,
   "type": "line",
   "text": "Holds the X register saved by $5B4A: the immediate operand of the LDX at $5B57, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23445,
   "type": "line",
   "text": "Sets the three frame numbers in $610E-$6110 for the crouch: $92, $B6, $C0 facing right, $93, $B7, $C1 facing left."
  },
  {
   "address": 23482,
   "type": "line",
   "text": "Frames left of the punch, set to 9 when it starts; the hit test $10B2 reads it."
  },
  {
   "address": 23483,
   "type": "line",
   "text": "Read at $5CD7 to stop a climb or crouch from starting; nothing writes it in this file."
  },
  {
   "address": 23484,
   "type": "line",
   "text": "Player state 1, standing and walking. Counts down the jump delay $5B30, clears the hit flags and $5B2C, then moves 2 pixels left or right from the stored joystick $2064 (bits 2 and 3), unless $796D or $79D6 blocks it or he is at the map's end (world X below $2A or from $396), and keeps him out of solid tiles through the map pointer from $7401. The tile under his feet decides what comes next: an empty tile, $12 or one above $12 starts a fall (state 2); up on a $12 or $13 tile starts a climb (4), up otherwise a jump (3); fire starts a punch (5) or, with down, the strike (7); down alone crouches (6)."
  },
  {
   "address": 23842,
   "type": "line",
   "text": "Holds the Y register saved by $5D19: the immediate operand of the LDY at $5D21, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23844,
   "type": "line",
   "text": "Holds the X register saved by $5D16: the immediate operand of the LDX at $5D23, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23911,
   "type": "line",
   "text": "Holds the Y register saved by $5D5E: the immediate operand of the LDY at $5D66, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23913,
   "type": "line",
   "text": "Holds the X register saved by $5D5B: the immediate operand of the LDX at $5D68, reloaded after the call or table lookup that follows."
  },
  {
   "address": 23932,
   "type": "line",
   "text": "Puts the standing frame in $610D: $9A when the player faces right, $A0 when he faces left."
  },
  {
   "address": 23951,
   "type": "line",
   "text": "Player state 2, falling. Moves left and right from the joystick as in state 1, then lowers him 3 pixels a frame (2 from line $82, none from $97) until the tile below is solid, which sets state 1. Shows frame $7A or $7B by the facing."
  },
  {
   "address": 24123,
   "type": "line",
   "text": "Puts the falling frame in $610D: $7A when the player faces right and $7B when he faces left."
  },
  {
   "address": 24142,
   "type": "line",
   "text": "Table of the 39 height steps of the jump, 16-bit values, two bytes each, used by $5E9E through $5E9C: from -4 at the start through 0 to +4 at the end."
  },
  {
   "address": 24220,
   "type": "line",
   "text": "Index into the jump or strike height tables ($5E4F, $5A24), two bytes a step."
  },
  {
   "address": 24221,
   "type": "line",
   "text": "When non-zero, the state $6111 draws this frame instead of $5912 (set to 1, 3, 6 or 0 by the state changes in $5BBC and $5E9E); cleared by $6111 after use."
  },
  {
   "address": 24222,
   "type": "line",
   "text": "Player state 3, a jump. Adds the 39 signed steps of the table at $5E4F (rising and then falling, two bytes each) to the height $747C, steers left and right from the joystick, shows the jump frames and returns to state 1 when the table ends or the player lands."
  },
  {
   "address": 24477,
   "type": "line",
   "text": "Puts the jump frame in $610D: $F8 facing right, $F9 facing left."
  },
  {
   "address": 24496,
   "type": "line",
   "text": "1 while the player climbs up and 0 while he climbs down; read by $600B at the end of a climb."
  },
  {
   "address": 24497,
   "type": "line",
   "text": "Twelve sprite pointer values of the climb upwards ($94 to $96), indexed by $5951."
  },
  {
   "address": 24509,
   "type": "line",
   "text": "Twelve sprite pointer values of the climb downwards, indexed by $5951."
  },
  {
   "address": 24521,
   "type": "line",
   "text": "Advances the climb frame upwards: toggles $5976 and, on every other call, steps $5951 through 12, and on every call puts the frame from the table at $5FB1 in $610D."
  },
  {
   "address": 24554,
   "type": "line",
   "text": "Advances the climb frame downwards: toggles $5976 and, on every other call, steps $5951 through 12, and on every call puts the frame from the table at $5FBD in $610D."
  },
  {
   "address": 24587,
   "type": "line",
   "text": "Player state 4, climbing. Sets the jump delay $5B30 to 10, moves him up one pixel (up held, bit 0 clear, with the frames from $5FC9) or down one (down held, bit 1 clear, frames from $5FEA), and goes back to state 1 with the standing frame when the tile below his feet is not one of $10 to $13."
  },
  {
   "address": 24712,
   "type": "line",
   "text": "Fills with $FF the entries of the sorted sprite list at $0010 that each of the 11 slots used last frame (their positions are in $02-$0C)."
  },
  {
   "address": 24759,
   "type": "line",
   "text": "Turns the 11 slots' world positions into screen positions for sprites 3-7 and sorts them by height. For each slot, X from $0A down, it subtracts the camera ($FB-$FE) to get the screen position ($87,X and $BF,X across, $A3,X and $DB,X down); a slot that is off the screen gets position 0, otherwise its number is put at the first free place from height/2 in the list at $0010. Writes $64 in $78 as the list end."
  },
  {
   "address": 24845,
   "type": "line",
   "text": "Sprite pointer value of the player's main frame, set by the state routines from the frame tables ($5952, $5964 and others) by the facing."
  },
  {
   "address": 24846,
   "type": "line",
   "text": "Sprite pointer value for the player's second sprite when the punch, strike or crouch frames are in use, set by $59BB, $59FF and $5B95."
  },
  {
   "address": 24847,
   "type": "line",
   "text": "Sprite pointer value for the player's first sprite when the punch, strike or crouch frames are in use."
  },
  {
   "address": 24848,
   "type": "line",
   "text": "Sprite pointer value for the player's third sprite when the punch, strike or crouch frames are in use."
  },
  {
   "address": 24849,
   "type": "line",
   "text": "Writes the player's three sprite pointers into both screens' tables ($CFF8-$CFFA and $CBF8-$CBFA) from the frame numbers in $610D-$6110, with different arrangements for states 2-4 and for the punch, crouch and strike."
  },
  {
   "address": 25004,
   "type": "line",
   "text": "Called by the hit test $10B2 with X the slot and Y the object. Takes 2 (when $10B1 is set) or 1 from the object's energy $0BA5 and adds 4 to the score digit 5; at zero energy it sets the slot and object to state $10, $0B00 to $FE and adds 8 to the score digit 5."
  },
  {
   "address": 25049,
   "type": "line",
   "text": "Holds the X register saved by $61CE: the immediate operand of the LDX at $61D8, reloaded after the call or table lookup that follows."
  },
  {
   "address": 25081,
   "type": "line",
   "text": "Holds the X register saved by $61EE: the immediate operand of the LDX at $61F8, reloaded after the call or table lookup that follows."
  },
  {
   "address": 25083,
   "type": "line",
   "text": "The 30 sprite pointer values of a knocked-down enemy of variant 0, indexed by the phase $0A6A in behaviour $6273."
  },
  {
   "address": 25113,
   "type": "line",
   "text": "The 30 sprite pointer values for the following sprite of a knocked-down enemy of variant 0, read by $1D3E."
  },
  {
   "address": 25143,
   "type": "line",
   "text": "The 30 sprite pointer values of a knocked-down enemy of variant 1, indexed by the phase $0A6A in behaviour $6273."
  },
  {
   "address": 25173,
   "type": "line",
   "text": "The 30 sprite pointer values for the following sprite of a knocked-down enemy of variant 1, read by $1D3E."
  },
  {
   "address": 25203,
   "type": "line",
   "text": "Behaviour for state 16, probably an enemy that has been beaten down. $0B00 (set to $FE by $61AC) counts down; the frame follows a ramp up and down through the tables at $61FB and $6237 (by the variant flag $0BF8) with the phase in $0A6A. At zero the object gets energy 3 in $0BA5 and returns to the state saved in $0AFF (minus $0D when that is 3 or more), through $0A94 and $0AA2."
  },
  {
   "address": 25343,
   "type": "line",
   "text": "Sets the screen matrix bits of $D018 to $30 (screen at $CC00) when $2067 is zero and to $20 ($C800) when it is not, keeping the other bits."
  },
  {
   "address": 25365,
   "type": "line",
   "text": "Raster interrupt 2 of 3, on line $C5 (set by $6480). Moves sprites 3-7 to line $0A and clears their pointers, turns sprites off, sets $D018 and $D011 for the panel with extended colour mode, counts down $5577 and $1658, reads joystick port 2 ($DC00,$DC01) into $2064 and $2065 unless the recoil counter $1658 is running, sets the character set bits of $D018 to 8, runs the countdown $759B and the list clear $6088, and toggles $63E7. It sets line $CD and the vector $63E8 for the next interrupt."
  },
  {
   "address": 25568,
   "type": "line",
   "text": "Holds the interrupted program's A register: stored here by $6315 on entry and reloaded by the LDA at $63DF before the RTI (the immediate operand of the LDA at $63DF)."
  },
  {
   "address": 25570,
   "type": "line",
   "text": "Holds the interrupted program's X register: stored here by $6318 on entry and reloaded by the LDX at $63E1 before the RTI (the immediate operand of the LDX at $63E1)."
  },
  {
   "address": 25572,
   "type": "line",
   "text": "Holds the interrupted program's Y register: stored here by $631B on entry and reloaded by the LDY at $63E3 before the RTI (the immediate operand of the LDY at $63E3)."
  },
  {
   "address": 25574,
   "type": "line",
   "text": "Counted down every second frame by $6315 while it is not zero; nothing else in this file reads it."
  },
  {
   "address": 25575,
   "type": "line",
   "text": "Toggled every frame by $6315."
  },
  {
   "address": 25576,
   "type": "line",
   "text": "Raster interrupt 3 of 3, on line $CD (set by $6315). Sets bitmap mode in $D011 and multicolour in $D016, with a run of NOPs timing the writes, then sets line 0 and the vector $6480, turns extended colour mode off, runs $206C unless the banner flag $56D1 is set, and restores A, X and Y from the operands at $643D-$6441."
  },
  {
   "address": 25661,
   "type": "line",
   "text": "Holds the interrupted program's A register: stored here by $63E8 on entry and reloaded by the LDA at $643C before the RTI (the immediate operand of the LDA at $643C)."
  },
  {
   "address": 25663,
   "type": "line",
   "text": "Holds the interrupted program's X register: stored here by $63EB on entry and reloaded by the LDX at $643E before the RTI (the immediate operand of the LDX at $643E)."
  },
  {
   "address": 25665,
   "type": "line",
   "text": "Holds the interrupted program's Y register: stored here by $63EE on entry and reloaded by the LDY at $6440 before the RTI (the immediate operand of the LDY at $6440)."
  },
  {
   "address": 25667,
   "type": "line",
   "text": "1 while the game is paused ($2029); the interrupts skip the moving parts while it is set. Also set by the wipe $74BC."
  },
  {
   "address": 25668,
   "type": "line",
   "text": "Moves sprite 0 or sprite 1 by 8 pixels along X while the punch timer $5BBA or the strike timer $5B2C runs, to the right when the player faces right ($59B9 zero) and to the left otherwise."
  },
  {
   "address": 25728,
   "type": "line",
   "text": "Raster interrupt 1 of 3, on line 0 (the line is written by $63E8). Saves A, X and Y in the operands at $6553-$6558 (restored by the LDA, LDX and LDY there), takes the fine scrolls $2061 into $D016 and $2062 into $D011, selects the screen buffer through $62FF, and sets the sprite multicolours. With $56D1 set it runs the banner $55A1; otherwise it sorts the sprites ($60B7), places sprites 0-2 at the player ($747B,$747C), sets the sprite colours and multiplexes sprites 3-7 ($6604), runs the player ($5925), the music ($6526), the colour copy ($69E3) and the object update ($1214). It then sets line $C5 and the vector $6315 in $FFFE/$FFFF."
  },
  {
   "address": 25940,
   "type": "line",
   "text": "Holds the interrupted program's A register: stored here by $6480 on entry and reloaded by the LDA at $6553 before the RTI (the immediate operand of the LDA at $6553)."
  },
  {
   "address": 25942,
   "type": "line",
   "text": "Holds the interrupted program's X register: stored here by $6483 on entry and reloaded by the LDX at $6555 before the RTI (the immediate operand of the LDX at $6555)."
  },
  {
   "address": 25944,
   "type": "line",
   "text": "Holds the interrupted program's Y register: stored here by $6486 on entry and reloaded by the LDY at $6557 before the RTI (the immediate operand of the LDY at $6557)."
  },
  {
   "address": 25946,
   "type": "line",
   "text": "Busy-wait: the outer count is A and the inner count is A as well (X and Y both start from A), so the callers' $14 to $FF give delays from a few milliseconds to about a third of a second."
  },
  {
   "address": 25955,
   "type": "line",
   "text": "The colour that colour_cycle ($6574) takes from cycle_colours_a ($6564) for the current step. It is 0 in the snapshot, and no traced code reads it."
  },
  {
   "address": 25956,
   "type": "line",
   "text": "Eight colours for one step of colour_cycle ($6574): white, light grey, mid grey, dark grey, black, then dark grey, mid grey and light grey again. The routine copies the entry for the step to $6563."
  },
  {
   "address": 25964,
   "type": "line",
   "text": "Eight colours for one step of colour_cycle ($6574): white, cyan, light blue, blue, black, then blue, light blue and cyan again. The routine copies the entry for the step to $65A4."
  },
  {
   "address": 25972,
   "type": "line",
   "text": "Steps a three-colour cycle on every fourth call: while the counter $65A3 is not 0 it takes 1 off and returns; at 0 it sets the counter to 3, moves the step $65A2 on by 1 (back to 0 at 8) and copies the entries for the step from cycle_colours_a to $6563, from cycle_colours_b to $65A4 and from cycle_colours_c to $65A5. No traced code calls or jumps to it, and nothing reads the three bytes it writes."
  },
  {
   "address": 26018,
   "type": "line",
   "text": "Four variables of colour_cycle ($6574), all 0 in the snapshot: the step 0 to 7 ($65A2), the call counter ($65A3), and the colours it copies from cycle_colours_b ($65A4) and cycle_colours_c ($65A5)."
  },
  {
   "address": 26022,
   "type": "line",
   "text": "Eight colours for one step of colour_cycle ($6574): brown, orange, light red, yellow, white, then yellow, light red and orange again. The routine copies the entry for the step to $65A5."
  },
  {
   "address": 26030,
   "type": "line",
   "text": "Mixes CIA 1's timer A, both bytes, with the previous result in $65CD and rotates it: a random number in A and $65CD. The low three bits of $DC04 are written into the offset of the branch at $65BE (at $65BF), which sets how many of the rotates at $65C0 are run."
  },
  {
   "address": 26047,
   "type": "line",
   "text": "The offset of the branch at $65BE, rewritten by $65B3 with the low three bits of CIA 1 timer A so that the random number routine rotates a different number of times on each call."
  },
  {
   "address": 26061,
   "type": "line",
   "text": "The last random number: the seed of $65AE and its result."
  },
  {
   "address": 26062,
   "type": "line",
   "text": "Starts with RTS, so it returns at once. The bytes after it (not traced) would read CIA 2 port A bit 2 and, when it is clear, pull three bytes off the stack and jump to $0810; nothing reaches them while the RTS is there."
  },
  {
   "address": 26078,
   "type": "line",
   "text": "Fills the 1 KB screen matrix at $CC00-$CFFF with A."
  },
  {
   "address": 26096,
   "type": "line",
   "text": "Fills colour RAM $D800-$DBFF with A."
  },
  {
   "address": 26114,
   "type": "line",
   "text": "Index into the sprite list at $0010 of the last slot the multiplexer handled."
  },
  {
   "address": 26115,
   "type": "line",
   "text": "Raster line limit for the multiplexer: $26 for the first pass, $8C for the second."
  },
  {
   "address": 26116,
   "type": "line",
   "text": "Sprite multiplexer for sprites 3 to 7, called from $6480 twice a frame. Takes the next slot from the list at $0010 (from the index in $6602), and, while the raster line is below the limit in $6603, gives it the next of the five sprites whose previous slot has finished (its height more than $15 lines above the raster): height into $D007, $D009, $D00B, $D00D or $D00F, X with its ninth bit in $D010, the pointer into both screens' tables ($CFFB-$CFFF and $CBFB-$CBFF), the colour from $0A40 and the multicolour bit from $0A4E."
  },
  {
   "address": 26620,
   "type": "line",
   "text": "Twelve bytes: the single-bit masks $04, $08, $10, $20, $40 and $80 (the bits of sprites 2 to 7), then the same bits inverted: $FB, $F7, $EF, $DF, $BF and $7F. No traced code reads them."
  },
  {
   "address": 26632,
   "type": "line",
   "text": "Set by $6809 when part of the colour RAM is still to be copied from $7173; read and cleared by $69E3."
  },
  {
   "address": 26633,
   "type": "line",
   "text": "Sets the flag $6808 and copies the colours from the buffer at $7123-$7172 to colour RAM $D990-$D9DF, the first half of the update that $69E3 finishes in the next interrupt."
  },
  {
   "address": 27107,
   "type": "line",
   "text": "When the flag $6808 is set, clears it and copies the colours from the buffer at $7173-$7289 to colour RAM $D9E0-$DAF6, leaving out the last column of some rows. The second half of the colour update that $6809 starts."
  },
  {
   "address": 28129,
   "type": "line",
   "text": "Copies the colour byte at $721F into colour RAM at $DA8C; named only so that colour_copy_b's 1,024-byte reach covers it."
  },
  {
   "address": 28132,
   "type": "line",
   "text": "The second half of the unrolled copy that starts at $69E3: the colours from $7220 on, to colour RAM $DA8D and up to $DAF6."
  },
  {
   "address": 28757,
   "type": "line",
   "text": "Picks the colour builder for the screen matrix in use: $3A06 when $2067 is 0, else $465E. Nothing in the level calls it; $334A and the other scroll phases make the same choice themselves."
  },
  {
   "address": 28768,
   "type": "line",
   "text": "Fills colour RAM for screen rows 0 to 9, columns 0 to $28, through the colour table at $BF00, from the matrix being built (the one at $C800 when $2067 is 0, otherwise $CC00)."
  },
  {
   "address": 28963,
   "type": "line",
   "text": "Colours for screen rows 10 to 18, one byte for each character ($7123 to $7289), built by the routines at $3A06 and $465E from the matrix being built and the colour table at $BF00; copied to colour RAM $D990 on by $6809 and $69E3."
  },
  {
   "address": 29321,
   "type": "line",
   "text": "The last byte of the colour buffer at $7123, for the character at row 18, column 38 ($CAF6 or $CEF6)."
  },
  {
   "address": 29443,
   "type": "line",
   "text": "Table of 16-bit pointers to the map rows, two entries for each row starting at $7A40 with 64 bytes to the row; indexed by the height divided by 4 and made even."
  },
  {
   "address": 29444,
   "type": "line",
   "text": "The high bytes of the row pointers of the table at $7303 (every second byte)."
  },
  {
   "address": 29507,
   "type": "line",
   "text": "Entries 32 to 76, the last 45, of the map row pointers at $7303: the addresses $7A40 + 64 x 31 = $8200 to $8D00 in steps of $40, one entry for each of the map's rows 31 to 75 (the first two entries both point at $7A40). Each entry is two bytes, low byte first, at $7303 + 2 x its number."
  },
  {
   "address": 29597,
   "type": "line",
   "text": "Six bytes after the last row pointer: four zero bytes, then $04 and $04. Nothing reads them, and the purpose of the $04 bytes is not shown."
  },
  {
   "address": 29603,
   "type": "line",
   "text": "Draws the opening view: 9 rows of 19 tiles from the map at $89BB (64 bytes to a row) into the screen at $CC00 through $7939, then sets the colour RAM at $D800-$DAFF from the colour table at $BF00 indexed by each character."
  },
  {
   "address": 29697,
   "type": "line",
   "text": "Works out where the player stands on the map: the world X from the camera and $747B (stored in $1FC2/$1FC3), the tile column from it in Y (divided by 16, less 1), and the map row pointer from the table at $7303, indexed by the camera's height plus $747C, into $E9/$EA. The state routines then read tiles through ($E9),Y."
  },
  {
   "address": 29819,
   "type": "line",
   "text": "The player's screen X (sprite coordinates); sprites 0-2 are placed at it by $6480."
  },
  {
   "address": 29820,
   "type": "line",
   "text": "The player's screen Y; sprites 0 and 2 are placed at it and sprite 1 21 lines below."
  },
  {
   "address": 29821,
   "type": "line",
   "text": "Lengths of the 56 diagonal lines of the wipe in $74BC."
  },
  {
   "address": 29879,
   "type": "line",
   "text": "Characters still to clear on the diagonal line screen_wipe is drawing: loaded from wipe_lengths, counted down by dec until it is zero."
  },
  {
   "address": 29880,
   "type": "line",
   "text": "Low byte of the screen address where the current diagonal line of screen_wipe starts; the pointer is saved here so that the next line can begin one step on."
  },
  {
   "address": 29881,
   "type": "line",
   "text": "High byte of the screen address where the current diagonal line of screen_wipe starts ($CC at the first line)."
  },
  {
   "address": 29882,
   "type": "line",
   "text": "Set to 1 by $74BC; while it is set $6480 skips placing the sprites and running the player and multiplexer."
  },
  {
   "address": 29884,
   "type": "line",
   "text": "Wipes the screen: sets the wipe flag $74BA and the pause flag $6443, then clears both screen matrices ($CC00 and $C800) in diagonal lines, each line stepping 39 characters from its start with the lengths taken from $747D, a delay through $655A after each, and clears the pause flag at the end. Called at the end of a level, by the game over screen and on the NMI exit."
  },
  {
   "address": 29973,
   "type": "line",
   "text": "Holds the X register saved by $7509: the immediate operand of the LDX at $7514, reloaded after the call or table lookup that follows."
  },
  {
   "address": 29975,
   "type": "line",
   "text": "Holds the Y register saved by $750C: the immediate operand of the LDY at $7516, reloaded after the call or table lookup that follows."
  },
  {
   "address": 30042,
   "type": "line",
   "text": "The three digits of the countdown timer, $755A the units to $755C the hundreds; set at the start to 500 when $0A10 is set."
  },
  {
   "address": 30043,
   "type": "line",
   "text": "The countdown timer's tens digit (0 to 9), the middle one of the three timer digits; counted down by timer_tick when the units digit wraps from 0 to 9."
  },
  {
   "address": 30044,
   "type": "line",
   "text": "The countdown timer's hundreds digit (0 to 5); counted down by timer_tick when the tens digit wraps. The timer starts at 500 when $0A10 is set."
  },
  {
   "address": 30045,
   "type": "line",
   "text": "Draws the three timer digits into the panel's character shapes at $F9F0, $F9E8 and $F9D8 through $7585."
  },
  {
   "address": 30085,
   "type": "line",
   "text": "Copies the 8-byte shape of the timer digit $755A+X from $58C2 to the pointer $85/$86."
  },
  {
   "address": 30106,
   "type": "line",
   "text": "Toggles each call of $759B so that the timer counts down every second frame."
  },
  {
   "address": 30107,
   "type": "line",
   "text": "Called from $6315 every frame unless the game is paused. When the three timer digits are zero it clears $0A10 and sets $760E to 1; otherwise on every second call it counts the digits down by one."
  },
  {
   "address": 30205,
   "type": "line",
   "text": "Called by the main loop. When $760E is 1 it sets it to 2 and runs $7678, which replaces the timer's graphics in the panel."
  },
  {
   "address": 30222,
   "type": "line",
   "text": "Set to 1 by $759B when the timer reaches zero; $75FD then steps it to 2 and changes the panel graphics."
  },
  {
   "address": 30223,
   "type": "line",
   "text": "Copies a picture of 6 by 5 characters into the panel: the shapes (48 bytes each to $F8C0, $FA00, $FB40, $FC80 and $FDC0), the screen codes (6 bytes each to $CF18-$CFB8) and the colours (to $DB18-$DBB8). Drawn by $54D6 while $0A10 is set, probably the picture of Darkman while the timer runs."
  },
  {
   "address": 30328,
   "type": "line",
   "text": "The same copy as $760F from the other set of data ($76E1-$7807): drawn by $54D6 when $0A10 is clear and by $75FD when the timer runs out, probably the picture shown when the timer is off."
  },
  {
   "address": 30433,
   "type": "line",
   "text": "Row 0 of 5 of the panel picture off: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_off ($7678) to $F8C0 on. The picture drawn while $0a10 is clear and after the timer has run out."
  },
  {
   "address": 30481,
   "type": "line",
   "text": "Row 1 of 5 of the panel picture off: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_off ($7678) to $FA00 on. The picture drawn while $0a10 is clear and after the timer has run out."
  },
  {
   "address": 30529,
   "type": "line",
   "text": "Row 2 of 5 of the panel picture off: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_off ($7678) to $FB40 on. The picture drawn while $0a10 is clear and after the timer has run out."
  },
  {
   "address": 30577,
   "type": "line",
   "text": "Row 3 of 5 of the panel picture off: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_off ($7678) to $FC80 on. The picture drawn while $0a10 is clear and after the timer has run out."
  },
  {
   "address": 30625,
   "type": "line",
   "text": "Row 4 of 5 of the panel picture off: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_off ($7678) to $FDC0 on. The picture drawn while $0a10 is clear and after the timer has run out."
  },
  {
   "address": 30673,
   "type": "line",
   "text": "Colour RAM nibbles for row 0 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $DB18 (the multicolour pixel pair 11)."
  },
  {
   "address": 30679,
   "type": "line",
   "text": "Colour RAM nibbles for row 1 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $DB40 (the multicolour pixel pair 11)."
  },
  {
   "address": 30685,
   "type": "line",
   "text": "Colour RAM nibbles for row 2 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $DB68 (the multicolour pixel pair 11)."
  },
  {
   "address": 30691,
   "type": "line",
   "text": "Colour RAM nibbles for row 3 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $DB90 (the multicolour pixel pair 11)."
  },
  {
   "address": 30697,
   "type": "line",
   "text": "Colour RAM nibbles for row 4 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $DBB8 (the multicolour pixel pair 11)."
  },
  {
   "address": 30703,
   "type": "line",
   "text": "Screen colours for row 0 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $CF18, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 30709,
   "type": "line",
   "text": "Screen colours for row 1 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $CF40, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 30715,
   "type": "line",
   "text": "Screen colours for row 2 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $CF68, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 30721,
   "type": "line",
   "text": "Screen colours for row 3 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $CF90, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 30727,
   "type": "line",
   "text": "Screen colours for row 4 of panel picture off: 6 cells, copied by timer_graphics_off ($7678) to $CFB8, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 30733,
   "type": "line",
   "text": "Row 0 of 5 of the panel picture on: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_on ($760F) to $F8C0 on. The picture drawn while $0a10 is set."
  },
  {
   "address": 30781,
   "type": "line",
   "text": "Row 1 of 5 of the panel picture on: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_on ($760F) to $FA00 on. The picture drawn while $0a10 is set."
  },
  {
   "address": 30829,
   "type": "line",
   "text": "Row 2 of 5 of the panel picture on: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_on ($760F) to $FB40 on. The picture drawn while $0a10 is set."
  },
  {
   "address": 30877,
   "type": "line",
   "text": "Row 3 of 5 of the panel picture on: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_on ($760F) to $FC80 on. The picture drawn while $0a10 is set."
  },
  {
   "address": 30925,
   "type": "line",
   "text": "Row 4 of 5 of the panel picture on: 6 cells of 8 bytes in multicolour bitmap form (two bits a pixel), copied by timer_graphics_on ($760F) to $FDC0 on. The picture drawn while $0a10 is set."
  },
  {
   "address": 30973,
   "type": "line",
   "text": "Colour RAM nibbles for row 0 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $DB18 (the multicolour pixel pair 11)."
  },
  {
   "address": 30979,
   "type": "line",
   "text": "Colour RAM nibbles for row 1 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $DB40 (the multicolour pixel pair 11)."
  },
  {
   "address": 30985,
   "type": "line",
   "text": "Colour RAM nibbles for row 2 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $DB68 (the multicolour pixel pair 11)."
  },
  {
   "address": 30991,
   "type": "line",
   "text": "Colour RAM nibbles for row 3 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $DB90 (the multicolour pixel pair 11)."
  },
  {
   "address": 30997,
   "type": "line",
   "text": "Colour RAM nibbles for row 4 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $DBB8 (the multicolour pixel pair 11)."
  },
  {
   "address": 31003,
   "type": "line",
   "text": "Screen colours for row 0 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $CF18, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 31009,
   "type": "line",
   "text": "Screen colours for row 1 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $CF40, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 31015,
   "type": "line",
   "text": "Screen colours for row 2 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $CF68, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 31021,
   "type": "line",
   "text": "Screen colours for row 3 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $CF90, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 31027,
   "type": "line",
   "text": "Screen colours for row 4 of panel picture on: 6 cells, copied by timer_graphics_on ($760F) to $CFB8, screen B, where the bitmap's pixel pairs 01 (high nibble) and 10 (low nibble) take their colours."
  },
  {
   "address": 31033,
   "type": "line",
   "text": "Writes tile A as two by two characters at the screen pointer $ED/$EE from the tables at $9651 and $96EF, then moves the pointer on 2 characters; used by $73A3."
  },
  {
   "address": 31081,
   "type": "line",
   "text": "Holds the X register saved by $7939: the immediate operand of the LDX at $7968, reloaded after the call or table lookup that follows."
  },
  {
   "address": 31083,
   "type": "line",
   "text": "Holds the Y register saved by $793C: the immediate operand of the LDY at $796A, reloaded after the call or table lookup that follows."
  },
  {
   "address": 31085,
   "type": "line",
   "text": "Returns 1 in A when a slot in state 7 (which never moves) is close in front of the player on the left: not more than $14 across and within the height window from $A3,X-$15. Returns 0 when $0A10 is set or none is near."
  },
  {
   "address": 31149,
   "type": "line",
   "text": "An RTS after the JMP above it, which nothing reaches."
  },
  {
   "address": 31150,
   "type": "line",
   "text": "Part of $796D: the slot is below the player's height; it is out of reach when the difference is $28 or more, and otherwise the test goes on across at $79B9."
  },
  {
   "address": 31190,
   "type": "line",
   "text": "The same test as $796D for a state 7 slot on the player's right."
  },
  {
   "address": 31254,
   "type": "line",
   "text": "An RTS after the JMP above it, which nothing reaches."
  },
  {
   "address": 31255,
   "type": "line",
   "text": "Part of $79D6: the slot is below the player's height; it is out of reach when the difference is $28 or more, and otherwise the test goes on across at $7A22."
  },
  {
   "address": 31296,
   "type": "line",
   "text": "The level map: 64 tiles to a row, 72 rows. Tile 0 is empty, $01-$11 hold the player up when he stands on them, $10-$13 are the tiles he can climb, higher values are background. Each tile is drawn as two by two characters from the tables at $9651 and $96EF."
  },
  {
   "address": 32320,
   "type": "line",
   "text": "Rows 16 to 31 of the level map (64 tiles to a row), the continuation of the table at $7A40."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "Rows 23 to 31 of the level map; the continuation of $7E40 (see $7A40)."
  },
  {
   "address": 33344,
   "type": "line",
   "text": "Rows 32 to 47 of the level map, the continuation of the table at $7A40."
  },
  {
   "address": 34368,
   "type": "line",
   "text": "Rows 48 to 63 of the level map, the continuation of the table at $7A40."
  },
  {
   "address": 35392,
   "type": "line",
   "text": "Rows 64 to 71 of the level map (the last 8 rows, ending at $8C3F), the continuation of the table at $7A40; the start of the level is at $89BB."
  },
  {
   "address": 35904,
   "type": "line",
   "text": "Writes the continue screen's texts at $CD49 and $CF8C, adding $66 to each character code and turning $20 into 0, and then the digits of $0A12 and $8C8B at $CF94 and $CE1C."
  },
  {
   "address": 35979,
   "type": "line",
   "text": "The countdown shown on the continue screen, from 9; read by $8C40."
  },
  {
   "address": 35980,
   "type": "line",
   "text": "Set to 1 by $903A when the briefing has ended; nothing reads it in this file."
  },
  {
   "address": 35981,
   "type": "line",
   "text": "\"PRESS FIRE TO CONTINUE\" in screen codes, ended by $FF; written by $8C40."
  },
  {
   "address": 36004,
   "type": "line",
   "text": "\"CREDITS\" followed by spaces in screen codes, ended by $FF; written by $8C40, with the digit of $0A12 after it."
  },
  {
   "address": 36027,
   "type": "line",
   "text": "Set to 1 by $8CBC when fire is pressed to continue; read by the main loop at $2003."
  },
  {
   "address": 36028,
   "type": "line",
   "text": "The continue screen, entered from the main loop when the player has no energy left and $0A12 is not zero. Sets up the text screen, clears the score, draws \"PRESS FIRE TO CONTINUE\" and \"CREDITS\" with the digits through $8C40 and counts the digit in $8C8B down from 9 with delays; fire sets $8CBB to 1 and takes one from $0A12, and when the count runs out the level is not restarted."
  },
  {
   "address": 36204,
   "type": "line",
   "text": "The game over screen: runs the wipe $74BC, silences the sound ($B828), sets the text screen, swaps the character shapes ($8FFF), clears the screen and fills colour RAM with 9, writes \"GAME OVER\" from $8E02 at $CD50, waits through six long delays and puts the shapes back ($8FFF, $54D6)."
  },
  {
   "address": 36354,
   "type": "line",
   "text": "\"GAME OVER\" in screen codes, ended by $FF; written by $8D6C with $66 added to each code."
  },
  {
   "address": 36364,
   "type": "line",
   "text": "136 bytes of character shapes that $8FFF swaps with the block at $C338."
  },
  {
   "address": 36428,
   "type": "line",
   "text": "The last nine of the 17 character shapes of text_shapes_a ($8E0C), 8 bytes each: the characters $6F to $77, which the screen codes 9 to 17 (I to Q) reach with $66 added. $8FFF swaps them into the character set at $C378."
  },
  {
   "address": 36500,
   "type": "line",
   "text": "136 bytes of character shapes that $8FFF swaps with the block at $C3C0."
  },
  {
   "address": 36564,
   "type": "line",
   "text": "The last nine of the 17 character shapes of text_shapes_b ($8E94), 8 bytes each: the characters $80 to $88. $80 is the letter Z (screen code 26 with $66 added) and $81 a full stop, the stop code $1B that the texts at $8E02 and $90CE use. The others are punctuation that those two texts do not use: $82 looks like a colon, $83 like a short opening bracket, $84 an equals sign, $85 a question mark, $86 a bar and $87 an exclamation mark, and $88 is blank. $8FFF swaps them into the character set at $C400."
  },
  {
   "address": 36676,
   "type": "line",
   "text": "Key code read by $8F45 and stored by $2127; $50 pauses, $20 can end the level."
  },
  {
   "address": 36677,
   "type": "line",
   "text": "Reads the keyboard with CIA 1 into A. Returns $FF at once when any of the low five bits of $DC00 AND $DC01 reads low (the test at $8F4D, so while the joystick or a key in that range is down); otherwise scans the eight rows from $8F5B, looks the key up in the table at $8FBF and returns its code. $2127 keeps the result in $8F44."
  },
  {
   "address": 36796,
   "type": "line",
   "text": "The row select value written to $DC00 by $8F45 while it scans the keyboard, rotated one bit for each row."
  },
  {
   "address": 36797,
   "type": "line",
   "text": "The number of the keyboard row $8F45 is scanning."
  },
  {
   "address": 36798,
   "type": "line",
   "text": "The column bits read from $DC01 for the row being scanned by $8F45."
  },
  {
   "address": 36799,
   "type": "line",
   "text": "Key codes for the 64 keys of the matrix, indexed by 8 times the column plus the row; $80 and above mean no code. Read by $8F45."
  },
  {
   "address": 36863,
   "type": "line",
   "text": "Exchanges three blocks: 136 bytes at $8E0C and 136 at $8E94 with $C338 and $C3C0, and the 80 bytes of digit shapes at $58C2 with $C450. Called to put the text screens' shapes in and to restore the play shapes."
  },
  {
   "address": 36920,
   "type": "line",
   "text": "Counter of $903A: the characters still to be typed before a press of fire is accepted, from $1E."
  },
  {
   "address": 36921,
   "type": "line",
   "text": "The index of the next character of the briefing text at $90CE, kept by $903A."
  },
  {
   "address": 36922,
   "type": "line",
   "text": "Types the level briefing at $90CE on the screen one character at a time (screen pointer from $CC56, lines 80 apart, a delay of $32 before each character), after clearing the screen and colour RAM (colour 7). Fire is ignored for the first 30 characters and ends the typing after that; when the text is done it waits for fire. Sets $8C8C to 1 and waits through two long delays."
  },
  {
   "address": 36985,
   "type": "line",
   "text": "Holds the Y register saved by $9070: the immediate operand of the LDY at $9078, reloaded after the call or table lookup that follows."
  },
  {
   "address": 37070,
   "type": "line",
   "text": "The level two briefing in screen codes, lines ended by $FF: \"LEVEL TWO\", \"DARKMAN IS DISCOVERED BEFORE HIS PLAN IS HALF GROWN\", \"HIS FIANCE JULIE HAS BEEN SEIZED BY STRACK AND DARKMAN IS CORNERED IN HIS LAIR\", \"FIRED BY GRIEF DARKMAN FIGHTS WITH INHUMAN FEROCITY TO ESCAPE\", \"END OF LINE\". Read by $903A. This block ends at the end of the second screen line ($90F7); briefing_text_b ($90F8) holds the rest."
  },
  {
   "address": 37112,
   "type": "line",
   "text": "The rest of the level two briefing from briefing_text ($90CE), in the same screen codes, lines ended by $FF and the end of the text by a second $FF: \"HIS PLAN IS  HALF GROWN. HIS\", \"FIANCE JULIE HAS BEEN SEIZED\", \"BY  STRACK  AND  DARKMAN  IS\", \"CORNERED IN  HIS LAIR. FIRED\", \"BY GRIEF DARKMAN FIGHTS WITH\", \"INHUMAN FEROCITY TO ESCAPE..\", \"END OF LINE...\". Read by $903A."
  },
  {
   "address": 37309,
   "type": "line",
   "text": "The starting types of the 84 objects, copied to $0AA2 by $52B6 (the 14 tables from $91BD to $9650 are 83 bytes apart)."
  },
  {
   "address": 37402,
   "type": "line",
   "text": "The starting counters of the objects, copied to $0AFF."
  },
  {
   "address": 37485,
   "type": "line",
   "text": "The starting flags of the objects, copied to $0B52."
  },
  {
   "address": 37568,
   "type": "line",
   "text": "The starting energy of the objects, copied to $0BA5."
  },
  {
   "address": 37651,
   "type": "line",
   "text": "The variant flag of the objects, copied to $0BF8."
  },
  {
   "address": 37734,
   "type": "line",
   "text": "The starting values of the second flag of the objects, copied to $0C4B."
  },
  {
   "address": 37817,
   "type": "line",
   "text": "The left limits of the objects' walks, low bytes, copied to $0C9E."
  },
  {
   "address": 37900,
   "type": "line",
   "text": "The left limits of the objects' walks, high bytes, copied to $0CF1."
  },
  {
   "address": 37983,
   "type": "line",
   "text": "The right limits of the objects' walks, low bytes, copied to $0D44."
  },
  {
   "address": 38066,
   "type": "line",
   "text": "The right limits of the objects' walks, high bytes, copied to $0D97."
  },
  {
   "address": 38149,
   "type": "line",
   "text": "The starting world X of the objects, low bytes, copied to $0DEA."
  },
  {
   "address": 38232,
   "type": "line",
   "text": "The starting world X of the objects, high bytes, copied to $0E3D."
  },
  {
   "address": 38315,
   "type": "line",
   "text": "The starting world Y of the objects, low bytes, copied to $0E90."
  },
  {
   "address": 38398,
   "type": "line",
   "text": "The starting world Y of the objects, high bytes, copied to $0EE3."
  },
  {
   "address": 38481,
   "type": "line",
   "text": "For each tile (index times 2, plus 1 for the odd half step) the two screen codes of its top row; the characters count in strips of 40 across the character set."
  },
  {
   "address": 38482,
   "type": "line",
   "text": "The odd bytes of the table at $9651: the second screen code of each tile's top row, first part."
  },
  {
   "address": 38546,
   "type": "line",
   "text": "The rest of the odd bytes of the table at $9651: the second screen code of each tile's top row."
  },
  {
   "address": 38639,
   "type": "line",
   "text": "For each tile (index times 2, plus 1 for the odd half step) the two screen codes of its bottom row."
  },
  {
   "address": 38640,
   "type": "line",
   "text": "The odd bytes of the table at $96EF: the second screen code of each tile's bottom row, first part."
  },
  {
   "address": 38704,
   "type": "line",
   "text": "The rest of the odd bytes of the table at $96EF: the second screen code of each tile's bottom row."
  },
  {
   "address": 38766,
   "type": "line",
   "text": "The 200 screen codes of the status panel (5 rows of 40), copied to $CEF7 by $54D6."
  },
  {
   "address": 38966,
   "type": "line",
   "text": "The 200 colours of the status panel, copied to $DAF7 by $54D6."
  },
  {
   "address": 48896,
   "type": "line",
   "text": "Colour for each character code, indexed by the character; the code reads it to fill the colour RAM ($D800) after a scroll and in $73A3."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Pointer $00: 64 zero bytes, the empty frame (the tables at $1596, $61FB and $6237 name it). The text screens read their character set from $C000 ($D018=$30), so these bytes are also character 0, the blank that the briefing uses for a space."
  },
  {
   "address": 49216,
   "type": "line",
   "text": "Sprite shapes for pointers $01 to $0B and the first 56 bytes of $0C (760 bytes). In use: $02 and $03, an enemy walking right, variant 0 (table $1982); $05 and $06, walking left, variant 0 (table $1747); $08 to $0B, the following sprite of slot_follow (follow_frames_b at $1DDA). The attacks show $05 and $07 (left) and $02 and $04 (right) for variant 0, by the values behave_attack_left ($1659) and behave_attack_right ($1895) store into their own code. Pointer $01 is in no table or constant traced so far."
  },
  {
   "address": 49976,
   "type": "line",
   "text": "136 bytes that swap_shapes exchanges with text_shapes_a ($8E0C). On a text screen they are the font's characters 103 to 119 (the briefing writes letter n as n + $66, so A is 103). During play they are sprite data: the last 8 bytes of the shape for pointer $0C, and all of $0D and $0E (follow_frames_a at $1DBA names $0C to $0F)."
  },
  {
   "address": 50112,
   "type": "line",
   "text": "144 bytes, of which the first 136 are exchanged by swap_shapes with text_shapes_b ($8E94): the font's characters 120 to 136. During play they are sprite data: all of pointers $0F and $10 and the first 8 bytes of $11 ($10 and $11 are an enemy walking right, variant 1, table $19A2). The 8 bytes at $C448 are not exchanged."
  },
  {
   "address": 50256,
   "type": "line",
   "text": "80 bytes that swap_shapes exchanges with digit_shapes ($58C2): the ten digits of the text screens, characters 138 to 147. During play they are sprite data: bytes 16 to 63 of the shape for pointer $11 and bytes 0 to 31 of $12."
  },
  {
   "address": 50336,
   "type": "line",
   "text": "Sprite shapes from byte 32 of pointer $12 to the end of $1F (864 bytes). In use: $14 and $15, an enemy walking left, variant 1 (table $1767); $18 with $19 to $1B, a knocked-down enemy of variant 0 (tables $61FB and $6219); $1C with $1D to $1F, a knocked-down enemy of variant 1 (tables $6237 and $6255). The attacks of variant 1 show $14, $17 and $16 (left) and $10, $13 and $12 (right), by the values behave_attack_left ($1659) and behave_attack_right ($1895) store into their own code."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "Screen matrix A: the playfield's 19 rows of 40 characters (760 bytes) in text mode, written by the scroll routines ($2200 on). $D018 selects it, or screen_b, from screen_buffer ($2067) through select_screen."
  },
  {
   "address": 51960,
   "type": "line",
   "text": "The last 256 bytes of screen A's 1,000 (rows 19 to 24, up to the sprite pointers): no routine traced so far reads or writes them, and they are zero in the snapshot. The panel's colours are only in screen B, because irq_mid always selects $CC00 for the panel."
  },
  {
   "address": 52216,
   "type": "line",
   "text": "Sprite 0's pointer in screen A's table ($CBF8 + 0): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_0."
  },
  {
   "address": 52217,
   "type": "line",
   "text": "Sprite 1's pointer in screen A's table ($CBF8 + 1): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_1."
  },
  {
   "address": 52218,
   "type": "line",
   "text": "Sprite 2's pointer in screen A's table ($CBF8 + 2): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_2."
  },
  {
   "address": 52219,
   "type": "line",
   "text": "Sprite 3's pointer in screen A's table ($CBF8 + 3): multiplexed sprite 3 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_3."
  },
  {
   "address": 52220,
   "type": "line",
   "text": "Sprite 4's pointer in screen A's table ($CBF8 + 4): multiplexed sprite 4 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_4."
  },
  {
   "address": 52221,
   "type": "line",
   "text": "Sprite 5's pointer in screen A's table ($CBF8 + 5): multiplexed sprite 5 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_5."
  },
  {
   "address": 52222,
   "type": "line",
   "text": "Sprite 6's pointer in screen A's table ($CBF8 + 6): multiplexed sprite 6 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_6."
  },
  {
   "address": 52223,
   "type": "line",
   "text": "Sprite 7's pointer in screen A's table ($CBF8 + 7): multiplexed sprite 7 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_b_7."
  },
  {
   "address": 52224,
   "type": "line",
   "text": "Screen matrix B: the same playfield as screen_a, 40 columns by 19 rows (760 bytes). The briefing is typed into it at $CC56 and the game over text at $CD50."
  },
  {
   "address": 52984,
   "type": "line",
   "text": "The colours of the status panel, 256 bytes from row 19: 200 cells (rows 19 to 23) copied from $976E by draw_panel at $54D6 and row 24 cleared at $CFC0, so that the bitmap's last row shows black. In the panel's bitmap mode each byte gives a cell's two colours. The picture's cells ($CF18, $CF40, $CF68, $CF90 and $CFB8, six each) and the energy bar ($CF59, eight cells) are written afterwards. The last 16 bytes lie past the 25th row."
  },
  {
   "address": 53240,
   "type": "line",
   "text": "Sprite 0's pointer in screen B's table ($CFF8 + 0): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_0."
  },
  {
   "address": 53241,
   "type": "line",
   "text": "Sprite 1's pointer in screen B's table ($CFF8 + 1): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_1."
  },
  {
   "address": 53242,
   "type": "line",
   "text": "Sprite 2's pointer in screen B's table ($CFF8 + 2): the player's sprites 0 to 2 (written by player_draw at $6111), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_2."
  },
  {
   "address": 53243,
   "type": "line",
   "text": "Sprite 3's pointer in screen B's table ($CFF8 + 3): multiplexed sprite 3 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_3."
  },
  {
   "address": 53244,
   "type": "line",
   "text": "Sprite 4's pointer in screen B's table ($CFF8 + 4): multiplexed sprite 4 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_4."
  },
  {
   "address": 53245,
   "type": "line",
   "text": "Sprite 5's pointer in screen B's table ($CFF8 + 5): multiplexed sprite 5 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_5."
  },
  {
   "address": 53246,
   "type": "line",
   "text": "Sprite 6's pointer in screen B's table ($CFF8 + 6): multiplexed sprite 6 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_6."
  },
  {
   "address": 53247,
   "type": "line",
   "text": "Sprite 7's pointer in screen B's table ($CFF8 + 7): multiplexed sprite 7 (written by multiplex_sprites at $6604), or the banner (banner_pointers at $5699). Always written together with sprite_pointer_a_7."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "Characters 0 to 127 of the play character set (1,024 bytes, 8 bytes a character, one byte a pixel row). The playfield's top part shows screen A or B in text mode with the character base at $D000 ($D018 low nibble 4); tile_top_chars ($9651) and tile_bottom_chars ($96EF) pick the codes, and char_colours ($BF00) gives each its colour. Only the VIC sees these bytes: with the I/O area switched in, the CPU reads the chips' registers at the same addresses."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "Characters 128 to 239 of the play character set (896 bytes), the same form as play_charset_a. The screen holds codes up to $E1 in play. Only the VIC sees these bytes: with the I/O area switched in, the CPU reads the chips' registers at the same addresses."
  },
  {
   "address": 55168,
   "type": "line",
   "text": "Characters 240 to 255 (128 bytes), all zero: the blank characters. The tile tables use $F0 to $F6, $F8 and $FF for empty cells. Sprite pointers $5E and $5F would read the same bytes, and pointers $5A to $5D read characters 208 to 225 as sprite data, so $5A to $5F are not shapes."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $60 and $61 (128 bytes): the two frames of the hazard of behaviour $1E06, named by hazard_frames ($1DFA). They look like a burst of light."
  },
  {
   "address": 55424,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $62 and $63 (128 bytes): the pickup of behaviour $1ADD, named by pickup_frames_a ($1ACF). A small heart, then a larger one."
  },
  {
   "address": 55552,
   "type": "line",
   "text": "Sprite shapes for pointers $64 to $66 (192 bytes): three flames of growing height, shown in turn by the hazard of behaviour $1C1C (hazard_arc_steps at $1CD1, where a value of $5A or more is a frame)."
  },
  {
   "address": 55744,
   "type": "line",
   "text": "Sprite shape for pointer $67 (64 bytes): a small round spark, the shot of behave_shooter ($14F4) and the first frame of the hazard of behaviour $1C1C ($1C2E)."
  },
  {
   "address": 55808,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $68 and $69 (128 bytes): the shuttling object of behaviour $1457, named by shuttle_frames ($1448)."
  },
  {
   "address": 55936,
   "type": "line",
   "text": "Sprite shapes for pointers $6A to $6C (192 bytes). $6A and $6B look like two guns, shown by behave_prop_flash ($1C01): $6B while its counter runs and $6A otherwise. $6C looks like a muzzle flash, the first frame of the hazard arc table (hazard_arc_steps at $1CD1)."
  },
  {
   "address": 56128,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $6D to $6F (192 bytes): a row of spikes at three heights, named by anim_frames ($1596), the animated hazard of behaviour $15F2."
  },
  {
   "address": 56320,
   "type": "line",
   "text": "Sprite shape for pointer $70 (64 bytes): a case with a cross on it. No table or constant of level 2 names it."
  },
  {
   "address": 56384,
   "type": "line",
   "text": "Sprite shape for pointer $71 (64 bytes): a small flame, a frame of the hazard of behaviour $1C1C (hazard_arc_steps at $1CD1)."
  },
  {
   "address": 56448,
   "type": "line",
   "text": "Sprite shapes for pointers $72 to $74 (192 bytes): a few dots and two short horizontal dashes. $72 is a frame of the hazard of behaviour $1C1C (hazard_arc_steps at $1CD1); $73 and $74 are the frames of behave_shot ($12B0), which no traced code runs."
  },
  {
   "address": 56640,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $75 to $79 (320 bytes): a disc seen at five angles, the pickup of behaviour $1BAF, named by pickup_frames_b ($1B96)."
  },
  {
   "address": 56960,
   "type": "line",
   "text": "Shape address = $C000 + 64 x pointer. Sprite shapes for pointers $7A to $7F (384 bytes): the player falling. fall_frame ($5E3B) sets the pose to $7A or $7B and player_draw adds 2 and 4 for the other two sprites, so the pointers are $7A, $7C, $7E and $7B, $7D, $7F."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Sprite shapes for pointers $80 to $8F (1,024 bytes). $80 to $85 are the third sprite of the player standing or walking right and $86 to $8B of the player standing or walking left: player_draw ($6111) writes F - $17 to $CFFA, with F from walk_frames_right, walk_frames_left or stand_frame. frame_b ($610E) takes $8C and $8D from strike_frames. Pointers $8E and $8F are in no table or constant traced so far.  The bytes of $8E and $8F are the same in the level 1, 2 and 3 snapshots and draw no figure when read as a sprite, so they look like unused filler."
  },
  {
   "address": 58368,
   "type": "line",
   "text": "Sprite shapes for pointers $90 to $93 (256 bytes), part of the player's punch and crouch frames: frame_b ($610E) takes $90 and $91 from punch_frames and $92 and $93 from crouch_frames."
  },
  {
   "address": 58624,
   "type": "line",
   "text": "Sprite shapes for pointers $94 to $96 (192 bytes): the player climbing, picked by climb_frames_up ($5FB1) and climb_frames_down ($5FBD). In the climbing state player_draw writes F, F + $24 and F + $2E to $CFFA, $CFF8 and $CFF9, so the other two sprites are $B8 to $BA and $C2 to $C4."
  },
  {
   "address": 58816,
   "type": "line",
   "text": "Sprite shapes for pointers $97 to $9C (384 bytes): the player walking right (walk_frames_right at $5964). When he stands or walks, player_draw shows three sprites with the pointers F ($CFF8), F + $0D ($CFF9) and F - $17 ($CFFA): $A4 to $A9 and $80 to $85 for these. Falling and jumping use F, F + 2 and F + 4 instead."
  },
  {
   "address": 59200,
   "type": "line",
   "text": "Sprite shapes for pointers $9D to $A2 (384 bytes): the player walking left (walk_frames_left at $5952), drawn like walk_right_shapes, with $AA to $AF and $86 to $8B as the other two sprites."
  },
  {
   "address": 59584,
   "type": "line",
   "text": "Sprite shapes for pointers $A3 to $B2 (1,024 bytes). $A4 to $AF are the second sprite of the player standing or walking (F + $0D, with $A4 to $A9 facing right and $AA to $AF facing left). frame_c ($610F) takes $B4 and $B5 (punch_frames), $A3 and $B1 (strike_frames), $B6 and $B7 (crouch_frames); frame_d ($6110) takes $BE and $BF (punch), $B0 and $BB (strike), $C0 and $C1 (crouch). Pointers $B2 and $B3 are in no table or constant traced so far.  The bytes of $B2 are the same in the level 1, 2 and 3 snapshots and draw no figure when read as a sprite, so they look like unused filler."
  },
  {
   "address": 60608,
   "type": "line",
   "text": "Sprite shapes for pointers $B3 to $C1 (960 bytes), the rest of attack_shapes: $B4 to $B7, $BB and $BE to $C1 are named there, and $B8 to $BA are the second sprite of the player climbing (F + $24, see climb_shapes). Pointers $B3, $BC and $BD are in no table or constant traced so far.  The bytes of $B3, $BC and $BD are the same in the level 1, 2 and 3 snapshots and draw no figure when read as a sprite, so they look like unused filler."
  },
  {
   "address": 61568,
   "type": "line",
   "text": "Sprite shapes for pointers $C2 to $C4 (192 bytes): the third sprite of the player climbing (F + $2E, see climb_shapes)."
  },
  {
   "address": 61760,
   "type": "line",
   "text": "Sprite shapes for pointers $C5 to $D4 (1,024 bytes): the banner picture of banner_sprites ($55A1), which sets the eight pointers from $CB and from $D3 for its two blocks of eight sprites and the six from $C5 for the strip below (continued by banner_shapes_b)."
  },
  {
   "address": 62784,
   "type": "line",
   "text": "Sprite shapes for pointers $D5 to $DA (384 bytes), the rest of banner_shapes."
  },
  {
   "address": 63168,
   "type": "line",
   "text": "Sprite pointers $DB to $DE (256 bytes): all zero.  Level 3 uses pointer $DB as an invisible shape: its raster handler at $0C65 sets sprite 0's pointer to $DB; the four shapes are all zero in the level 1, 2 and 3 snapshots."
  },
  {
   "address": 63424,
   "type": "line",
   "text": "The status panel's bitmap, which the raster interrupt irq_bottom switches on from line $CD (bitmap mode at $E000, multicolour): 40 cells wide, rows 19 to 24, 8 bytes a cell and 320 a row. This is row 19, columns 0 to 31. It comes from the level file, apart from the cells that draw_panel and the routines below write."
  },
  {
   "address": 63680,
   "type": "line",
   "text": "Row 19, columns 32 to 37: the first of five rows of the 6 by 5 cell picture that timer_graphics_on ($760F) or timer_graphics_off ($7678) copies in (48 bytes a row; the others are panel_picture_1 to 4)."
  },
  {
   "address": 63728,
   "type": "line",
   "text": "Row 19, columns 38 and 39, and row 20, columns 0 to 26: panel bitmap that no traced routine writes (232 bytes)."
  },
  {
   "address": 63960,
   "type": "line",
   "text": "Row 20, columns 27 to 31 (40 bytes): draw_timer ($755D) draws the three timer digits into the cells at $F9D8, $F9E8 and $F9F0."
  },
  {
   "address": 64000,
   "type": "line",
   "text": "Row 20, columns 32 to 37: the second row of the panel picture (see panel_picture_0)."
  },
  {
   "address": 64048,
   "type": "line",
   "text": "Row 20, columns 38 and 39, and row 21, columns 0 to 2: panel bitmap that no traced routine writes (40 bytes)."
  },
  {
   "address": 64088,
   "type": "line",
   "text": "Row 21, columns 3 to 9 (56 bytes): draw_score ($5889) draws the seven digits from $0A00 into these cells, 8 bytes each, from digit_shapes."
  },
  {
   "address": 64144,
   "type": "line",
   "text": "Row 21, columns 10 to 16: panel bitmap that no traced routine writes (56 bytes)."
  },
  {
   "address": 64200,
   "type": "line",
   "text": "Row 21, columns 17 to 24 (64 bytes): the eight cells of the energy bar, which draw_bar ($57D5) fills from bar_shapes ($5794)."
  },
  {
   "address": 64264,
   "type": "line",
   "text": "Row 21, columns 25 to 31: panel bitmap that no traced routine writes (56 bytes)."
  },
  {
   "address": 64320,
   "type": "line",
   "text": "Row 21, columns 32 to 37: the third row of the panel picture (see panel_picture_0)."
  },
  {
   "address": 64368,
   "type": "line",
   "text": "Row 21, columns 38 and 39, and row 22, columns 0 to 31: panel bitmap that no traced routine writes (272 bytes)."
  },
  {
   "address": 64640,
   "type": "line",
   "text": "Row 22, columns 32 to 37: the fourth row of the panel picture (see panel_picture_0)."
  },
  {
   "address": 64688,
   "type": "line",
   "text": "Row 22, columns 38 and 39, and row 23, columns 0 to 31: panel bitmap that no traced routine writes (272 bytes)."
  },
  {
   "address": 64960,
   "type": "line",
   "text": "Row 23, columns 32 to 37: the fifth row of the panel picture (see panel_picture_0)."
  },
  {
   "address": 65008,
   "type": "line",
   "text": "Row 23, columns 38 and 39, and all of row 24 (336 bytes): panel bitmap that no traced routine writes. Row 24 shows black, because draw_panel clears its colours."
  },
  {
   "address": 65344,
   "type": "line",
   "text": "176 bytes loaded after the panel bitmap: the first 64 are non-zero data that no traced routine reads (the shape for pointer $FD), the rest are zero."
  }
 ]
}