{
 "schema": 1,
 "platform": "c64",
 "game": "lethal-weapon",
 "part": "game",
 "build": "",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    16384,
    17103,
    "screen RAM"
   ],
   [
    17304,
    17407,
    "screen RAM"
   ],
   [
    17408,
    18431,
    "runtime: the second screen of the double buffer, drawn by the scroll ($13C6, the slices at $2F2F-$3374)"
   ],
   [
    32320,
    52287,
    "runtime: the level's character map, 288 by 70 characters from $7D80, built from the tiles and the map by $0673 when the stage loads; its first 192 bytes ($7D80-$7E3F) are overwritten by the sprite file SP90, loaded after it, and are described as sprites"
   ],
   [
    52288,
    53247,
    "not the game's: RAM above the level map that nothing in the game part reads or writes"
   ],
   [
    65181,
    65529,
    "runtime: the respawn list built by $1B28 (three bytes a record, to $FF1D on stage 0) and the emulator's power-on pattern above it"
   ],
   [
    65530,
    65535,
    "runtime: the NMI and IRQ vectors, written by $EC66 and rewritten by every raster interrupt"
   ],
   [
    27904,
    27967,
    "not the game's: sprite frame $B4, which no file of stage 1A loads; it holds the emulator's power-on pattern"
   ]
  ],
  "extra": [
   [
    18432,
    20479,
    "character set"
   ],
   [
    20480,
    21375,
    "the panel's character set, from PAN0, and the bytes after it"
   ],
   [
    21376,
    21439,
    "sprite frame $4E, cleared by $1B28: the blank frame"
   ],
   [
    21440,
    27903,
    "sprite frames $4F-$B3, from SP00 (or SP0Z), SP91 and SP12"
   ],
   [
    27968,
    32319,
    "sprite frames $B5-$F8, from SP01, SP20, SP21 and SP90"
   ]
  ],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 959,
   "type": "Undefined"
  },
  {
   "start": 960,
   "end": 1045,
   "type": "Code"
  },
  {
   "start": 1046,
   "end": 1283,
   "type": "Byte"
  },
  {
   "start": 1284,
   "end": 1322,
   "type": "Code"
  },
  {
   "start": 1323,
   "end": 1330,
   "type": "Undefined"
  },
  {
   "start": 1331,
   "end": 1888,
   "type": "Code"
  },
  {
   "start": 1889,
   "end": 1893,
   "type": "PETSCII Text"
  },
  {
   "start": 1894,
   "end": 1916,
   "type": "Code"
  },
  {
   "start": 1917,
   "end": 1970,
   "type": "Word"
  },
  {
   "start": 1971,
   "end": 2427,
   "type": "Code"
  },
  {
   "start": 2428,
   "end": 2428,
   "type": "Undefined"
  },
  {
   "start": 2429,
   "end": 2692,
   "type": "Code"
  },
  {
   "start": 2693,
   "end": 2694,
   "type": "Undefined"
  },
  {
   "start": 2695,
   "end": 3280,
   "type": "Code"
  },
  {
   "start": 3281,
   "end": 3281,
   "type": "Undefined"
  },
  {
   "start": 3282,
   "end": 3296,
   "type": "Code"
  },
  {
   "start": 3297,
   "end": 3456,
   "type": "Byte"
  },
  {
   "start": 3457,
   "end": 3813,
   "type": "Code"
  },
  {
   "start": 3814,
   "end": 3815,
   "type": "Undefined"
  },
  {
   "start": 3816,
   "end": 4024,
   "type": "Code"
  },
  {
   "start": 4025,
   "end": 4025,
   "type": "Undefined"
  },
  {
   "start": 4026,
   "end": 4301,
   "type": "Code"
  },
  {
   "start": 4302,
   "end": 4355,
   "type": "Word"
  },
  {
   "start": 4356,
   "end": 4356,
   "type": "Undefined"
  },
  {
   "start": 4357,
   "end": 4386,
   "type": "Code"
  },
  {
   "start": 4387,
   "end": 4387,
   "type": "Undefined"
  },
  {
   "start": 4388,
   "end": 4498,
   "type": "Code"
  },
  {
   "start": 4499,
   "end": 4499,
   "type": "Undefined"
  },
  {
   "start": 4500,
   "end": 4734,
   "type": "Code"
  },
  {
   "start": 4735,
   "end": 4736,
   "type": "Undefined"
  },
  {
   "start": 4737,
   "end": 5299,
   "type": "Code"
  },
  {
   "start": 5300,
   "end": 5344,
   "type": "Undefined"
  },
  {
   "start": 5345,
   "end": 5818,
   "type": "Code"
  },
  {
   "start": 5819,
   "end": 5898,
   "type": "Undefined"
  },
  {
   "start": 5899,
   "end": 6414,
   "type": "Word"
  },
  {
   "start": 6415,
   "end": 6417,
   "type": "Undefined"
  },
  {
   "start": 6418,
   "end": 6828,
   "type": "Code"
  },
  {
   "start": 6829,
   "end": 6830,
   "type": "Undefined"
  },
  {
   "start": 6831,
   "end": 6860,
   "type": "Word"
  },
  {
   "start": 6861,
   "end": 6924,
   "type": "PETSCII Text"
  },
  {
   "start": 6925,
   "end": 7588,
   "type": "Code"
  },
  {
   "start": 7589,
   "end": 7590,
   "type": "Undefined"
  },
  {
   "start": 7591,
   "end": 7602,
   "type": "PETSCII Text"
  },
  {
   "start": 7603,
   "end": 7853,
   "type": "Code"
  },
  {
   "start": 7854,
   "end": 7856,
   "type": "Undefined"
  },
  {
   "start": 7857,
   "end": 8607,
   "type": "Code"
  },
  {
   "start": 8608,
   "end": 8608,
   "type": "Undefined"
  },
  {
   "start": 8609,
   "end": 9232,
   "type": "Code"
  },
  {
   "start": 9233,
   "end": 9236,
   "type": "Undefined"
  },
  {
   "start": 9237,
   "end": 9356,
   "type": "Word"
  },
  {
   "start": 9357,
   "end": 9380,
   "type": "Code"
  },
  {
   "start": 9381,
   "end": 9385,
   "type": "Undefined"
  },
  {
   "start": 9386,
   "end": 9473,
   "type": "Byte"
  },
  {
   "start": 9474,
   "end": 9522,
   "type": "Undefined"
  },
  {
   "start": 9523,
   "end": 9583,
   "type": "Byte"
  },
  {
   "start": 9584,
   "end": 10023,
   "type": "Code"
  },
  {
   "start": 10024,
   "end": 10061,
   "type": "Undefined"
  },
  {
   "start": 10062,
   "end": 10258,
   "type": "Code"
  },
  {
   "start": 10259,
   "end": 10299,
   "type": "Undefined"
  },
  {
   "start": 10300,
   "end": 10324,
   "type": "Byte"
  },
  {
   "start": 10325,
   "end": 10341,
   "type": "Undefined"
  },
  {
   "start": 10342,
   "end": 10401,
   "type": "PETSCII Text"
  },
  {
   "start": 10402,
   "end": 10404,
   "type": "Undefined"
  },
  {
   "start": 10405,
   "end": 10476,
   "type": "Code"
  },
  {
   "start": 10477,
   "end": 10732,
   "type": "Undefined"
  },
  {
   "start": 10733,
   "end": 13982,
   "type": "Code"
  },
  {
   "start": 13983,
   "end": 13983,
   "type": "Undefined"
  },
  {
   "start": 13984,
   "end": 14131,
   "type": "Byte"
  },
  {
   "start": 14132,
   "end": 14141,
   "type": "Undefined"
  },
  {
   "start": 14142,
   "end": 14168,
   "type": "Code"
  },
  {
   "start": 14169,
   "end": 14171,
   "type": "PETSCII Text"
  },
  {
   "start": 14172,
   "end": 14198,
   "type": "Code"
  },
  {
   "start": 14199,
   "end": 14223,
   "type": "Undefined"
  },
  {
   "start": 14224,
   "end": 14307,
   "type": "Byte"
  },
  {
   "start": 14308,
   "end": 14395,
   "type": "PETSCII Text"
  },
  {
   "start": 14396,
   "end": 16383,
   "type": "Byte"
  },
  {
   "start": 16384,
   "end": 18431,
   "type": "Undefined"
  },
  {
   "start": 18432,
   "end": 27903,
   "type": "Byte"
  },
  {
   "start": 27904,
   "end": 27967,
   "type": "Undefined"
  },
  {
   "start": 27968,
   "end": 32319,
   "type": "Byte"
  },
  {
   "start": 32320,
   "end": 49151,
   "type": "Undefined"
  },
  {
   "start": 49152,
   "end": 49164,
   "type": "Code"
  },
  {
   "start": 49165,
   "end": 57344,
   "type": "Undefined"
  },
  {
   "start": 57345,
   "end": 57755,
   "type": "Code"
  },
  {
   "start": 57756,
   "end": 57771,
   "type": "Undefined"
  },
  {
   "start": 57772,
   "end": 58494,
   "type": "Code"
  },
  {
   "start": 58495,
   "end": 58495,
   "type": "Byte"
  },
  {
   "start": 58496,
   "end": 58759,
   "type": "Code"
  },
  {
   "start": 58760,
   "end": 58760,
   "type": "Undefined"
  },
  {
   "start": 58761,
   "end": 58970,
   "type": "Code"
  },
  {
   "start": 58971,
   "end": 58971,
   "type": "Byte"
  },
  {
   "start": 58972,
   "end": 59078,
   "type": "Code"
  },
  {
   "start": 59079,
   "end": 59079,
   "type": "Undefined"
  },
  {
   "start": 59080,
   "end": 59380,
   "type": "Code"
  },
  {
   "start": 59381,
   "end": 59382,
   "type": "Undefined"
  },
  {
   "start": 59383,
   "end": 59437,
   "type": "Byte"
  },
  {
   "start": 59438,
   "end": 59667,
   "type": "Word"
  },
  {
   "start": 59668,
   "end": 59668,
   "type": "Undefined"
  },
  {
   "start": 59669,
   "end": 59730,
   "type": "Code"
  },
  {
   "start": 59731,
   "end": 59778,
   "type": "Undefined"
  },
  {
   "start": 59779,
   "end": 59805,
   "type": "Code"
  },
  {
   "start": 59806,
   "end": 59925,
   "type": "Byte"
  },
  {
   "start": 59926,
   "end": 61953,
   "type": "Code"
  },
  {
   "start": 61954,
   "end": 61963,
   "type": "Undefined"
  },
  {
   "start": 61964,
   "end": 62062,
   "type": "Code"
  },
  {
   "start": 62063,
   "end": 62067,
   "type": "Undefined"
  },
  {
   "start": 62068,
   "end": 62226,
   "type": "Code"
  },
  {
   "start": 62227,
   "end": 62227,
   "type": "Undefined"
  },
  {
   "start": 62228,
   "end": 62292,
   "type": "Code"
  },
  {
   "start": 62293,
   "end": 62298,
   "type": "Undefined"
  },
  {
   "start": 62299,
   "end": 62322,
   "type": "Code"
  },
  {
   "start": 62323,
   "end": 62324,
   "type": "Undefined"
  },
  {
   "start": 62325,
   "end": 62496,
   "type": "Code"
  },
  {
   "start": 62497,
   "end": 62499,
   "type": "Undefined"
  },
  {
   "start": 62500,
   "end": 63341,
   "type": "Code"
  },
  {
   "start": 63342,
   "end": 63349,
   "type": "Undefined"
  },
  {
   "start": 63350,
   "end": 63414,
   "type": "Code"
  },
  {
   "start": 63415,
   "end": 63448,
   "type": "Undefined"
  },
  {
   "start": 63449,
   "end": 63621,
   "type": "Code"
  },
  {
   "start": 63622,
   "end": 63624,
   "type": "Undefined"
  },
  {
   "start": 63625,
   "end": 64067,
   "type": "Code"
  },
  {
   "start": 64068,
   "end": 64112,
   "type": "Undefined"
  },
  {
   "start": 64113,
   "end": 65180,
   "type": "Byte"
  },
  {
   "start": 65181,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpp_13",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "camera_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "camera_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpa_3B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpa_3D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "zpa_3F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpp_54",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpa_55",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "facing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 93,
   "name": "zpa_5D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "zpa_5F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "f_0060",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpa_61",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpf_63",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 100,
   "name": "a_0064",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "a_0065",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "a_0066",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "a_0067",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpa_6A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpa_6B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 108,
   "name": "zpa_6C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 110,
   "name": "zpa_6E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpa_6F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 112,
   "name": "zpa_70",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpa_71",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 114,
   "name": "f_0072",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpa_73",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpa_7D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "zpf_7E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "sort_list",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpa_93",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "f_00B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpp_BB",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 190,
   "name": "zpa_BE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "f_00C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpf_C2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 205,
   "name": "zpa_CD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 206,
   "name": "zpa_CE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 207,
   "name": "player_frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 208,
   "name": "f_00D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpf_D2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 211,
   "name": "zpa_D3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 221,
   "name": "zpa_DD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 222,
   "name": "zpa_DE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 223,
   "name": "player_line",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 224,
   "name": "f_00E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpa_E1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpf_E2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 237,
   "name": "zpa_ED",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 238,
   "name": "zpa_EE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 239,
   "name": "player_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 240,
   "name": "f_00F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 242,
   "name": "zpf_F2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpa_F3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 673,
   "name": "a_02A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 678,
   "name": "a_02A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 788,
   "name": "a_0314",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 960,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 963,
   "name": "load_file",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1027,
   "name": "b_0403",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1043,
   "name": "j_0413",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1046,
   "name": "drive_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1284,
   "name": "fastload_receive",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1323,
   "name": "drive_commands",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1331,
   "name": "b_0533",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1350,
   "name": "b_0546",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1362,
   "name": "b_0552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1390,
   "name": "b_056E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1414,
   "name": "b_0586",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1425,
   "name": "b_0591",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1443,
   "name": "b_05A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1467,
   "name": "b_05BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1482,
   "name": "b_05CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1492,
   "name": "b_05D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1499,
   "name": "b_05DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1511,
   "name": "b_05E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1514,
   "name": "b_05EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1524,
   "name": "b_05F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1542,
   "name": "fastload_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1568,
   "name": "r_0620",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1569,
   "name": "fastload_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1576,
   "name": "b_0628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1592,
   "name": "b_0638",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1594,
   "name": "b_063A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1637,
   "name": "store_banked_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1651,
   "name": "build_level_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1664,
   "name": "j_0680",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1699,
   "name": "b_06A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1830,
   "name": "b_0726",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1887,
   "name": "r_075F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1888,
   "name": "do_nothing",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1889,
   "name": "title_filename",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1894,
   "name": "return_to_title",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1917,
   "name": "behaviour_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1918,
   "name": "behaviour_handlers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1971,
   "name": "bh_30",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1998,
   "name": "b_07CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2003,
   "name": "b_07D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2023,
   "name": "b_07E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2038,
   "name": "r_07F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2039,
   "name": "b_07F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2061,
   "name": "r_080D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2062,
   "name": "b_080E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2074,
   "name": "b_081A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2094,
   "name": "b_082E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2102,
   "name": "b_0836",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2139,
   "name": "bh_1A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2188,
   "name": "b_088C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2195,
   "name": "r_0893",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2196,
   "name": "b_0894",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2201,
   "name": "bh_2E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2223,
   "name": "r_08AF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2224,
   "name": "b_08B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2239,
   "name": "b_08BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2274,
   "name": "b_08E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2278,
   "name": "bh_2C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2293,
   "name": "b_08F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2304,
   "name": "j_0900",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2332,
   "name": "b_091C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2357,
   "name": "b_0935",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2378,
   "name": "b_094A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2385,
   "name": "b_0951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2428,
   "name": "a_097C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2429,
   "name": "b_097D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2443,
   "name": "b_098B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2471,
   "name": "b_09A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2510,
   "name": "b_09CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2517,
   "name": "bh_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2521,
   "name": "bh_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2523,
   "name": "b_09DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2546,
   "name": "b_09F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2552,
   "name": "b_09F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2561,
   "name": "b_0A01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2565,
   "name": "bh_2A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2577,
   "name": "b_0A11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2584,
   "name": "j_0A18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2598,
   "name": "r_0A26",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2599,
   "name": "b_0A27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2625,
   "name": "b_0A41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2634,
   "name": "r_0A4A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2635,
   "name": "s_0A4B",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2693,
   "name": "fall_counts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2695,
   "name": "b_0A87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2709,
   "name": "r_0A95",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2710,
   "name": "j_0A96",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2740,
   "name": "b_0AB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2757,
   "name": "b_0AC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2760,
   "name": "b_0AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2775,
   "name": "b_0AD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2806,
   "name": "r_0AF6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2807,
   "name": "b_0AF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2839,
   "name": "b_0B17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2854,
   "name": "r_0B26",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2855,
   "name": "bh_28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2868,
   "name": "b_0B34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2886,
   "name": "b_0B46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2902,
   "name": "b_0B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2941,
   "name": "r_0B7D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2942,
   "name": "b_0B7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2956,
   "name": "b_0B8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2984,
   "name": "b_0BA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3027,
   "name": "b_0BD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3051,
   "name": "b_0BEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3069,
   "name": "bh_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3076,
   "name": "b_0C04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3090,
   "name": "b_0C12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3115,
   "name": "b_0C2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3145,
   "name": "b_0C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3154,
   "name": "b_0C52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3189,
   "name": "r_0C75",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3190,
   "name": "b_0C76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3209,
   "name": "b_0C89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3236,
   "name": "b_0CA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3280,
   "name": "r_0CD0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3281,
   "name": "arc_landed_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3282,
   "name": "j_0CD2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3296,
   "name": "r_0CE0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3297,
   "name": "arc_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3457,
   "name": "bh_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3469,
   "name": "b_0D8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3473,
   "name": "bh_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3485,
   "name": "b_0D9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3489,
   "name": "s_0DA1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3504,
   "name": "b_0DB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3518,
   "name": "r_0DBE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3519,
   "name": "s_0DBF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3534,
   "name": "b_0DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3548,
   "name": "r_0DDC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3549,
   "name": "bh_26",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3565,
   "name": "j_0DED",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3579,
   "name": "r_0DFB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3580,
   "name": "b_0DFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3624,
   "name": "b_0E28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3633,
   "name": "r_0E31",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3645,
   "name": "b_0E3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3653,
   "name": "r_0E45",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3654,
   "name": "b_0E46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3668,
   "name": "r_0E54",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3669,
   "name": "b_0E55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3699,
   "name": "b_0E73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3716,
   "name": "b_0E84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3719,
   "name": "b_0E87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3734,
   "name": "b_0E96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3765,
   "name": "r_0EB5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3766,
   "name": "b_0EB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3798,
   "name": "b_0ED6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3813,
   "name": "r_0EE5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3814,
   "name": "shot_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3815,
   "name": "a_0EE7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3816,
   "name": "s_0EE8",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3857,
   "name": "b_0F11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3871,
   "name": "b_0F1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3889,
   "name": "b_0F31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3920,
   "name": "b_0F50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3933,
   "name": "b_0F5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3937,
   "name": "animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3951,
   "name": "r_0F6F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3952,
   "name": "update_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3954,
   "name": "b_0F72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4002,
   "name": "b_0FA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4004,
   "name": "b_0FA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4007,
   "name": "a_0FA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4008,
   "name": "a_0FA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4011,
   "name": "b_0FAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4024,
   "name": "r_0FB8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4025,
   "name": "anim_divider",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4026,
   "name": "print_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4028,
   "name": "j_0FBC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4033,
   "name": "b_0FC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4049,
   "name": "b_0FD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4076,
   "name": "b_0FEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4079,
   "name": "b_0FEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4094,
   "name": "j_0FFE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4096,
   "name": "s_1000",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4119,
   "name": "r_1017",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4120,
   "name": "player_collisions",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4126,
   "name": "b_101E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4137,
   "name": "b_1029",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4150,
   "name": "b_1036",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4158,
   "name": "b_103E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4176,
   "name": "b_1050",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4183,
   "name": "a_1057",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4189,
   "name": "r_105D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4190,
   "name": "b_105E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4199,
   "name": "b_1067",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4204,
   "name": "a_106C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4226,
   "name": "b_1082",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4228,
   "name": "j_1084",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4259,
   "name": "b_10A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4279,
   "name": "b_10B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4293,
   "name": "a_10C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4294,
   "name": "a_10C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4302,
   "name": "contact_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4303,
   "name": "contact_handlers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4356,
   "name": "hurt_cooldown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4357,
   "name": "touch_hazard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4386,
   "name": "r_1122",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4387,
   "name": "dying_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4388,
   "name": "b_1124",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4410,
   "name": "r_113A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4432,
   "name": "r_1150",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4433,
   "name": "pickup_life",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4462,
   "name": "pickup_ammo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4499,
   "name": "weapon_level",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4500,
   "name": "pickup_weapon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4518,
   "name": "b_11A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4536,
   "name": "pickup_energy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4553,
   "name": "b_11C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4577,
   "name": "pickup_points",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4605,
   "name": "player_hurt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4639,
   "name": "b_121F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4650,
   "name": "b_122A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4680,
   "name": "b_1248",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4691,
   "name": "b_1253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4699,
   "name": "j_125B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4710,
   "name": "b_1266",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4734,
   "name": "r_127E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4735,
   "name": "hurt_this_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4736,
   "name": "a_1280",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4737,
   "name": "irq_panel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4852,
   "name": "irq_panel_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4907,
   "name": "irq_panel_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4975,
   "name": "irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5062,
   "name": "draw_whole_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5206,
   "name": "b_1456",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5208,
   "name": "b_1458",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5300,
   "name": "a_14B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5301,
   "name": "scroll_direction",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5302,
   "name": "a_14B6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5303,
   "name": "a_14B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5312,
   "name": "f_14C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5313,
   "name": "f_14C1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5328,
   "name": "f_14D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5329,
   "name": "f_14D1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5345,
   "name": "scroll_pass",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5363,
   "name": "b_14F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5455,
   "name": "b_154F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5482,
   "name": "a_156A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5483,
   "name": "a_156B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5484,
   "name": "b_156C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5509,
   "name": "a_1585",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5510,
   "name": "a_1586",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5511,
   "name": "r_1587",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5512,
   "name": "b_1588",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5523,
   "name": "scroll_edge_pointers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5652,
   "name": "draw_edge_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5657,
   "name": "b_1619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5665,
   "name": "b_1621",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5671,
   "name": "b_1627",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5680,
   "name": "b_1630",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5682,
   "name": "b_1632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5691,
   "name": "j_163B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5697,
   "name": "b_1641",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5706,
   "name": "b_164A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5708,
   "name": "b_164C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5717,
   "name": "draw_edge_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5722,
   "name": "b_165A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5729,
   "name": "b_1661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5740,
   "name": "b_166C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5774,
   "name": "j_168E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5785,
   "name": "b_1699",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5819,
   "name": "f_16BB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5835,
   "name": "f_16CB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5851,
   "name": "edge_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5852,
   "name": "edge_columns_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5867,
   "name": "edge_offset_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5868,
   "name": "edge_offset_a_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5883,
   "name": "edge_offset_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5884,
   "name": "edge_offset_b_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5899,
   "name": "map_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5900,
   "name": "map_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6031,
   "name": "scroll_slices",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6032,
   "name": "scroll_slices_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6287,
   "name": "scroll_flip_jobs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6288,
   "name": "scroll_flip_jobs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6415,
   "name": "tile_column_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6416,
   "name": "a_1910",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6417,
   "name": "a_1911",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6418,
   "name": "player_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6456,
   "name": "b_1938",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6479,
   "name": "b_194F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6498,
   "name": "b_1962",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6516,
   "name": "b_1974",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6590,
   "name": "b_19BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6650,
   "name": "b_19FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6676,
   "name": "b_1A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6722,
   "name": "b_1A42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6789,
   "name": "player_animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6808,
   "name": "r_1A98",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6809,
   "name": "b_1A99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6823,
   "name": "b_1AA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6829,
   "name": "a_1AAD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6830,
   "name": "stage",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6831,
   "name": "stage_blocks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6832,
   "name": "stage_blocks_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6861,
   "name": "stage_filenames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6925,
   "name": "load_overlay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6952,
   "name": "load_stage",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6993,
   "name": "b_1B51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7047,
   "name": "b_1B87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7134,
   "name": "b_1BDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7341,
   "name": "b_1CAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7365,
   "name": "b_1CC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7457,
   "name": "b_1D21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7467,
   "name": "b_1D2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7482,
   "name": "b_1D3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7497,
   "name": "b_1D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7513,
   "name": "j_1D59",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7536,
   "name": "b_1D70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7589,
   "name": "a_1DA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7590,
   "name": "a_1DA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7591,
   "name": "panel_filenames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7603,
   "name": "player_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7631,
   "name": "b_1DCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7637,
   "name": "b_1DD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7647,
   "name": "r_1DDF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7648,
   "name": "b_1DE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7670,
   "name": "b_1DF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7711,
   "name": "b_1E1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7727,
   "name": "b_1E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7763,
   "name": "b_1E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7766,
   "name": "b_1E56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7793,
   "name": "b_1E71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7804,
   "name": "b_1E7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7842,
   "name": "b_1EA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7854,
   "name": "a_1EAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7855,
   "name": "bullet_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7857,
   "name": "update_bullets",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7867,
   "name": "b_1EBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7877,
   "name": "r_1EC5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7878,
   "name": "s_1EC6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 7912,
   "name": "b_1EE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7938,
   "name": "b_1F02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7950,
   "name": "b_1F0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7956,
   "name": "b_1F14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7975,
   "name": "b_1F27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7987,
   "name": "b_1F33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7991,
   "name": "bullet_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7997,
   "name": "b_1F3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8012,
   "name": "b_1F4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8020,
   "name": "b_1F54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8042,
   "name": "b_1F6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8049,
   "name": "a_1F71",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8055,
   "name": "r_1F77",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8056,
   "name": "b_1F78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8065,
   "name": "b_1F81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8070,
   "name": "a_1F86",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8092,
   "name": "b_1F9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8094,
   "name": "j_1F9E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8146,
   "name": "b_1FD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8170,
   "name": "b_1FEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8238,
   "name": "b_202E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8241,
   "name": "b_2031",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8272,
   "name": "j_2050",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8287,
   "name": "b_205F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8295,
   "name": "b_2067",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8365,
   "name": "b_20AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8393,
   "name": "b_20C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8431,
   "name": "player_jump",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8444,
   "name": "b_20FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8471,
   "name": "b_2117",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8497,
   "name": "b_2131",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8501,
   "name": "b_2135",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8523,
   "name": "b_214B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8526,
   "name": "j_214E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8532,
   "name": "b_2154",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8557,
   "name": "b_216D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8574,
   "name": "r_217E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8575,
   "name": "b_217F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8591,
   "name": "b_218F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8594,
   "name": "j_2192",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8602,
   "name": "b_219A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8608,
   "name": "a_21A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8609,
   "name": "player_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8622,
   "name": "r_21AE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8623,
   "name": "b_21AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8658,
   "name": "b_21D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8668,
   "name": "b_21DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8688,
   "name": "b_21F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8698,
   "name": "b_21FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8701,
   "name": "b_21FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8720,
   "name": "b_2210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8749,
   "name": "r_222D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8750,
   "name": "b_222E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8777,
   "name": "b_2249",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8819,
   "name": "b_2273",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8832,
   "name": "b_2280",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8835,
   "name": "b_2283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8885,
   "name": "b_22B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8907,
   "name": "find_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8910,
   "name": "a_22CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8915,
   "name": "a_22D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8924,
   "name": "a_22DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8929,
   "name": "a_22E1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8935,
   "name": "b_22E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8953,
   "name": "j_22F9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8983,
   "name": "b_2317",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8992,
   "name": "b_2320",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9032,
   "name": "j_2348",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9036,
   "name": "player_fall",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9066,
   "name": "b_236A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9080,
   "name": "b_2378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9089,
   "name": "r_2381",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9096,
   "name": "go_through_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9105,
   "name": "b_2391",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9124,
   "name": "b_23A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9179,
   "name": "b_23DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9233,
   "name": "a_2411",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9234,
   "name": "a_2412",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9235,
   "name": "f_2413",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9237,
   "name": "screen_rows_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9238,
   "name": "screen_rows_a_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9297,
   "name": "screen_rows_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9298,
   "name": "screen_rows_b_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9357,
   "name": "hang",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9363,
   "name": "joystick_action",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9370,
   "name": "b_249A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9386,
   "name": "player_anims",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9474,
   "name": "f_2502",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9475,
   "name": "f_2503",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9522,
   "name": "f_2532",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9523,
   "name": "f_2533",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9538,
   "name": "walk_anims",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9584,
   "name": "player_walk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9599,
   "name": "b_257F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9635,
   "name": "b_25A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9659,
   "name": "b_25BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9669,
   "name": "b_25C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9677,
   "name": "b_25CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9683,
   "name": "b_25D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9727,
   "name": "b_25FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9739,
   "name": "b_260B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9748,
   "name": "j_2614",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9783,
   "name": "b_2637",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9793,
   "name": "b_2641",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9813,
   "name": "b_2655",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9823,
   "name": "b_265F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9826,
   "name": "b_2662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9847,
   "name": "b_2677",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9867,
   "name": "b_268B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9892,
   "name": "b_26A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9901,
   "name": "b_26AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9904,
   "name": "b_26B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9914,
   "name": "b_26BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9926,
   "name": "b_26C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9930,
   "name": "b_26CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9946,
   "name": "b_26DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9953,
   "name": "b_26E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9971,
   "name": "b_26F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9975,
   "name": "b_26F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9986,
   "name": "b_2702",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9988,
   "name": "b_2704",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10001,
   "name": "j_2711",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10024,
   "name": "a_2728",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10025,
   "name": "a_2729",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10062,
   "name": "b_274E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10083,
   "name": "b_2763",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10143,
   "name": "b_279F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10149,
   "name": "a_27A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10156,
   "name": "b_27AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10198,
   "name": "b_27D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10206,
   "name": "a_27DE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10225,
   "name": "b_27F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10233,
   "name": "b_27F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10246,
   "name": "b_2806",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10252,
   "name": "b_280C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10259,
   "name": "direction_pairs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10260,
   "name": "direction_pairs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10293,
   "name": "checkpoint",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10294,
   "name": "a_2836",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10295,
   "name": "a_2837",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10296,
   "name": "a_2838",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10297,
   "name": "a_2839",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10298,
   "name": "a_283A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10299,
   "name": "a_283B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10300,
   "name": "f_283C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 10325,
   "name": "a_2855",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10326,
   "name": "a_2856",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10329,
   "name": "a_2859",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10331,
   "name": "a_285B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10332,
   "name": "damage_by_weapon",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10341,
   "name": "a_2865",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10342,
   "name": "game_over_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10366,
   "name": "f_287E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 10402,
   "name": "a_28A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10404,
   "name": "a_28A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10405,
   "name": "bh_1E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10416,
   "name": "b_28B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10419,
   "name": "bh_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10430,
   "name": "b_28BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10447,
   "name": "r_28CF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10448,
   "name": "bh_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10459,
   "name": "b_28DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10476,
   "name": "r_28EC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10477,
   "name": "flip_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10605,
   "name": "walk_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10669,
   "name": "walk_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10735,
   "name": "b_29EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10771,
   "name": "b_2A13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10807,
   "name": "b_2A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10843,
   "name": "b_2A5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10874,
   "name": "b_2A7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10898,
   "name": "b_2A92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10934,
   "name": "b_2AB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10970,
   "name": "b_2ADA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11013,
   "name": "b_2B05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11037,
   "name": "b_2B1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11071,
   "name": "s_2B3F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 11073,
   "name": "b_2B41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11184,
   "name": "b_2BB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11295,
   "name": "b_2C1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11331,
   "name": "b_2C43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11374,
   "name": "b_2C6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11410,
   "name": "b_2C92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11446,
   "name": "b_2CB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11482,
   "name": "b_2CDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11513,
   "name": "b_2CF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11549,
   "name": "b_2D1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11585,
   "name": "b_2D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11621,
   "name": "b_2D65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11658,
   "name": "b_2D8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11694,
   "name": "b_2DAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11730,
   "name": "b_2DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11766,
   "name": "b_2DF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11803,
   "name": "b_2E1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11827,
   "name": "b_2E33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11863,
   "name": "b_2E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11899,
   "name": "b_2E7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11942,
   "name": "b_2EA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11978,
   "name": "b_2ECA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12014,
   "name": "b_2EEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12050,
   "name": "b_2F12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12081,
   "name": "b_2F31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12117,
   "name": "b_2F55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12153,
   "name": "b_2F79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12189,
   "name": "b_2F9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12220,
   "name": "b_2FBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12244,
   "name": "b_2FD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12280,
   "name": "b_2FF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12316,
   "name": "b_301C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12359,
   "name": "b_3047",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12383,
   "name": "b_305F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12419,
   "name": "b_3083",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12455,
   "name": "b_30A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12498,
   "name": "b_30D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12534,
   "name": "b_30F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12570,
   "name": "b_311A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12606,
   "name": "b_313E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12637,
   "name": "b_315D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12673,
   "name": "b_3181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12709,
   "name": "b_31A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12745,
   "name": "b_31C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12782,
   "name": "b_31EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12818,
   "name": "b_3212",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12854,
   "name": "b_3236",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12890,
   "name": "b_325A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12927,
   "name": "b_327F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12951,
   "name": "b_3297",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12987,
   "name": "b_32BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13023,
   "name": "b_32DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13066,
   "name": "b_330A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13102,
   "name": "b_332E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13138,
   "name": "b_3352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13174,
   "name": "b_3376",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13205,
   "name": "b_3395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13319,
   "name": "b_3407",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13433,
   "name": "b_3479",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13547,
   "name": "b_34EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13661,
   "name": "b_355D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13778,
   "name": "b_35D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13893,
   "name": "colour_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13895,
   "name": "b_3647",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13944,
   "name": "update_timers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13959,
   "name": "b_3687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13976,
   "name": "b_3698",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13982,
   "name": "r_369E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13983,
   "name": "jump_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13984,
   "name": "jump_murtaugh",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14050,
   "name": "jump_riggs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14132,
   "name": "f_3734",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14140,
   "name": "lives",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14142,
   "name": "sort_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14161,
   "name": "s_3751",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 14165,
   "name": "s_3755",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 14169,
   "name": "ending_filename",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14172,
   "name": "start_ending",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14199,
   "name": "a_3777",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14224,
   "name": "stage_exits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14308,
   "name": "stage_files",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14372,
   "name": "map_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14396,
   "name": "sprite_files",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14440,
   "name": "walker_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14459,
   "name": "anim_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16167,
   "name": "f_3F27",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16168,
   "name": "f_3F28",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16207,
   "name": "f_3F4F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16208,
   "name": "f_3F50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16247,
   "name": "f_3F77",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16248,
   "name": "f_3F78",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16287,
   "name": "f_3F9F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16288,
   "name": "f_3FA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16327,
   "name": "f_3FC7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16328,
   "name": "f_3FC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16367,
   "name": "f_3FEF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16368,
   "name": "f_3FF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "f_4000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16385,
   "name": "f_4001",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16407,
   "name": "f_4017",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16408,
   "name": "f_4018",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16423,
   "name": "a_4027",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16424,
   "name": "f_4028",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16425,
   "name": "f_4029",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16447,
   "name": "f_403F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16448,
   "name": "f_4040",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16463,
   "name": "a_404F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16464,
   "name": "f_4050",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16465,
   "name": "f_4051",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16487,
   "name": "f_4067",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16488,
   "name": "f_4068",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16503,
   "name": "a_4077",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16504,
   "name": "f_4078",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16505,
   "name": "f_4079",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16527,
   "name": "f_408F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16528,
   "name": "f_4090",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16543,
   "name": "a_409F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16544,
   "name": "f_40A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16545,
   "name": "f_40A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16567,
   "name": "f_40B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16568,
   "name": "f_40B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16583,
   "name": "a_40C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16584,
   "name": "f_40C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16585,
   "name": "f_40C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16607,
   "name": "f_40DF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16608,
   "name": "f_40E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16623,
   "name": "a_40EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16624,
   "name": "f_40F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16625,
   "name": "f_40F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16647,
   "name": "f_4107",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16648,
   "name": "f_4108",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16663,
   "name": "a_4117",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16664,
   "name": "f_4118",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16665,
   "name": "f_4119",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16687,
   "name": "f_412F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16688,
   "name": "f_4130",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16703,
   "name": "a_413F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16704,
   "name": "f_4140",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16705,
   "name": "f_4141",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16727,
   "name": "f_4157",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16728,
   "name": "f_4158",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16743,
   "name": "a_4167",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16744,
   "name": "f_4168",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16745,
   "name": "f_4169",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16767,
   "name": "f_417F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16768,
   "name": "f_4180",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16783,
   "name": "a_418F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16784,
   "name": "f_4190",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16785,
   "name": "f_4191",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16807,
   "name": "f_41A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16808,
   "name": "f_41A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16823,
   "name": "a_41B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16824,
   "name": "f_41B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16825,
   "name": "f_41B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16847,
   "name": "f_41CF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16848,
   "name": "f_41D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16863,
   "name": "a_41DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16864,
   "name": "f_41E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16865,
   "name": "f_41E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16903,
   "name": "a_4207",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16904,
   "name": "f_4208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16905,
   "name": "f_4209",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16943,
   "name": "a_422F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16944,
   "name": "f_4230",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16945,
   "name": "f_4231",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16983,
   "name": "a_4257",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16984,
   "name": "f_4258",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16985,
   "name": "f_4259",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17023,
   "name": "a_427F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17024,
   "name": "f_4280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17025,
   "name": "f_4281",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17063,
   "name": "a_42A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17064,
   "name": "f_42A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17065,
   "name": "f_42A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17103,
   "name": "a_42CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17104,
   "name": "f_42D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17144,
   "name": "f_42F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17148,
   "name": "a_42FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17149,
   "name": "a_42FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17150,
   "name": "a_42FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17151,
   "name": "a_42FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17152,
   "name": "a_4300",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17153,
   "name": "a_4301",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17163,
   "name": "a_430B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17164,
   "name": "a_430C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17165,
   "name": "a_430D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17166,
   "name": "a_430E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17175,
   "name": "a_4317",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17176,
   "name": "a_4318",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17184,
   "name": "f_4320",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17188,
   "name": "a_4324",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17189,
   "name": "a_4325",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17190,
   "name": "a_4326",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17191,
   "name": "f_4327",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17192,
   "name": "f_4328",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17193,
   "name": "a_4329",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17224,
   "name": "f_4348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17228,
   "name": "a_434C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17229,
   "name": "a_434D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17230,
   "name": "a_434E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17231,
   "name": "f_434F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17232,
   "name": "f_4350",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17233,
   "name": "a_4351",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17241,
   "name": "a_4359",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17264,
   "name": "f_4370",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17271,
   "name": "f_4377",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17272,
   "name": "f_4378",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17304,
   "name": "f_4398",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17311,
   "name": "f_439F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17312,
   "name": "f_43A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17351,
   "name": "f_43C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17352,
   "name": "f_43C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17391,
   "name": "f_43EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17392,
   "name": "f_43F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17400,
   "name": "a_43F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17401,
   "name": "a_43F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17402,
   "name": "a_43FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17403,
   "name": "a_43FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17404,
   "name": "a_43FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17405,
   "name": "a_43FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17406,
   "name": "a_43FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17407,
   "name": "a_43FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17408,
   "name": "f_4400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17409,
   "name": "f_4401",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17431,
   "name": "f_4417",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17432,
   "name": "f_4418",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17447,
   "name": "a_4427",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17448,
   "name": "f_4428",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17449,
   "name": "f_4429",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17471,
   "name": "f_443F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17472,
   "name": "f_4440",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17487,
   "name": "a_444F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17488,
   "name": "f_4450",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17489,
   "name": "f_4451",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17511,
   "name": "f_4467",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17512,
   "name": "f_4468",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17527,
   "name": "a_4477",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17528,
   "name": "f_4478",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17529,
   "name": "f_4479",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17551,
   "name": "f_448F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17552,
   "name": "f_4490",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17567,
   "name": "a_449F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17568,
   "name": "f_44A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17569,
   "name": "f_44A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17591,
   "name": "f_44B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17592,
   "name": "f_44B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17607,
   "name": "a_44C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17608,
   "name": "f_44C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17609,
   "name": "f_44C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17631,
   "name": "f_44DF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17632,
   "name": "f_44E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17647,
   "name": "a_44EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17648,
   "name": "f_44F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17649,
   "name": "f_44F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17671,
   "name": "f_4507",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17672,
   "name": "f_4508",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17687,
   "name": "a_4517",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17688,
   "name": "f_4518",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17689,
   "name": "f_4519",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17711,
   "name": "f_452F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17712,
   "name": "f_4530",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17727,
   "name": "a_453F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17728,
   "name": "f_4540",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17729,
   "name": "f_4541",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17751,
   "name": "f_4557",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17752,
   "name": "f_4558",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17767,
   "name": "a_4567",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17768,
   "name": "f_4568",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17769,
   "name": "f_4569",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17791,
   "name": "f_457F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17792,
   "name": "f_4580",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17807,
   "name": "a_458F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17808,
   "name": "f_4590",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17809,
   "name": "f_4591",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17831,
   "name": "f_45A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17832,
   "name": "f_45A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17847,
   "name": "a_45B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17848,
   "name": "f_45B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17849,
   "name": "f_45B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17871,
   "name": "f_45CF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17872,
   "name": "f_45D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17887,
   "name": "a_45DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17888,
   "name": "f_45E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17889,
   "name": "f_45E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17927,
   "name": "a_4607",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17928,
   "name": "f_4608",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17929,
   "name": "f_4609",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17967,
   "name": "a_462F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17968,
   "name": "f_4630",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17969,
   "name": "f_4631",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18007,
   "name": "a_4657",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18008,
   "name": "f_4658",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18009,
   "name": "f_4659",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18047,
   "name": "a_467F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18048,
   "name": "f_4680",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18049,
   "name": "f_4681",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18087,
   "name": "a_46A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18088,
   "name": "f_46A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18089,
   "name": "f_46A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18127,
   "name": "a_46CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18424,
   "name": "a_47F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18425,
   "name": "a_47F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18426,
   "name": "a_47FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18427,
   "name": "a_47FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18428,
   "name": "a_47FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18429,
   "name": "a_47FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18430,
   "name": "a_47FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18431,
   "name": "a_47FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18432,
   "name": "level_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "panel_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20495,
   "name": "f_500F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20496,
   "name": "a_5010",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20497,
   "name": "a_5011",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20498,
   "name": "a_5012",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20499,
   "name": "a_5013",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20500,
   "name": "a_5014",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20501,
   "name": "a_5015",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20502,
   "name": "a_5016",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20503,
   "name": "a_5017",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21376,
   "name": "f_5380",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27456,
   "name": "f_6B40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27584,
   "name": "f_6BC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27712,
   "name": "f_6C40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27840,
   "name": "f_6CC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41000,
   "name": "a_A028",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41001,
   "name": "a_A029",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41002,
   "name": "a_A02A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41003,
   "name": "a_A02B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41288,
   "name": "a_A148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41289,
   "name": "a_A149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41290,
   "name": "a_A14A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41291,
   "name": "a_A14B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41576,
   "name": "a_A268",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41577,
   "name": "a_A269",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41578,
   "name": "a_A26A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41579,
   "name": "a_A26B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41864,
   "name": "a_A388",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41865,
   "name": "a_A389",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41866,
   "name": "a_A38A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41867,
   "name": "a_A38B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49152,
   "name": "j_C000",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 55079,
   "name": "f_D727",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55080,
   "name": "f_D728",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55119,
   "name": "f_D74F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55120,
   "name": "f_D750",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55159,
   "name": "f_D777",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55160,
   "name": "f_D778",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55199,
   "name": "f_D79F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55200,
   "name": "f_D7A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55239,
   "name": "f_D7C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55240,
   "name": "f_D7C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55279,
   "name": "f_D7EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55280,
   "name": "f_D7F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55297,
   "name": "f_D801",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55319,
   "name": "f_D817",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55320,
   "name": "f_D818",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55335,
   "name": "a_D827",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55336,
   "name": "f_D828",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55337,
   "name": "f_D829",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55359,
   "name": "f_D83F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55360,
   "name": "f_D840",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55375,
   "name": "a_D84F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55376,
   "name": "f_D850",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55377,
   "name": "f_D851",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55399,
   "name": "f_D867",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55400,
   "name": "f_D868",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55415,
   "name": "a_D877",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55416,
   "name": "f_D878",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55417,
   "name": "f_D879",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55439,
   "name": "f_D88F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55440,
   "name": "f_D890",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55455,
   "name": "a_D89F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55456,
   "name": "f_D8A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55457,
   "name": "f_D8A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55479,
   "name": "f_D8B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55480,
   "name": "f_D8B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55495,
   "name": "a_D8C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55496,
   "name": "f_D8C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55497,
   "name": "f_D8C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55519,
   "name": "f_D8DF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55520,
   "name": "f_D8E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55535,
   "name": "a_D8EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55536,
   "name": "f_D8F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55537,
   "name": "f_D8F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55559,
   "name": "f_D907",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55560,
   "name": "f_D908",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55575,
   "name": "a_D917",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55576,
   "name": "f_D918",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55577,
   "name": "f_D919",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55599,
   "name": "f_D92F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55600,
   "name": "f_D930",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55615,
   "name": "a_D93F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55616,
   "name": "f_D940",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55617,
   "name": "f_D941",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55639,
   "name": "f_D957",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55640,
   "name": "f_D958",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55655,
   "name": "a_D967",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55656,
   "name": "f_D968",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55657,
   "name": "f_D969",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55679,
   "name": "f_D97F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55680,
   "name": "f_D980",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55695,
   "name": "a_D98F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55696,
   "name": "f_D990",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55697,
   "name": "f_D991",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55719,
   "name": "f_D9A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55720,
   "name": "f_D9A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55735,
   "name": "a_D9B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55736,
   "name": "f_D9B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55737,
   "name": "f_D9B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55759,
   "name": "f_D9CF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55760,
   "name": "f_D9D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55775,
   "name": "a_D9DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55776,
   "name": "f_D9E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55777,
   "name": "f_D9E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55815,
   "name": "a_DA07",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55816,
   "name": "f_DA08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55817,
   "name": "f_DA09",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55855,
   "name": "a_DA2F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55856,
   "name": "f_DA30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55857,
   "name": "f_DA31",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55895,
   "name": "a_DA57",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55896,
   "name": "f_DA58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55897,
   "name": "f_DA59",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55935,
   "name": "a_DA7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55936,
   "name": "f_DA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55937,
   "name": "f_DA81",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55975,
   "name": "a_DAA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55976,
   "name": "f_DAA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55977,
   "name": "f_DAA9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56015,
   "name": "a_DACF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56016,
   "name": "f_DAD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56056,
   "name": "f_DAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56069,
   "name": "f_DB05",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56096,
   "name": "f_DB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56109,
   "name": "f_DB2D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56136,
   "name": "f_DB48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56149,
   "name": "f_DB55",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56176,
   "name": "f_DB70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "a_E000",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57345,
   "name": "start_life",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57369,
   "name": "b_E019",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57404,
   "name": "b_E03C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57425,
   "name": "b_E051",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57493,
   "name": "j_E095",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57505,
   "name": "a_E0A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57512,
   "name": "a_E0A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57524,
   "name": "b_E0B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57544,
   "name": "b_E0C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57554,
   "name": "j_E0D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57555,
   "name": "a_E0D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57562,
   "name": "a_E0DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57589,
   "name": "b_E0F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57595,
   "name": "b_E0FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57638,
   "name": "b_E126",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57647,
   "name": "pause_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57654,
   "name": "b_E136",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57665,
   "name": "b_E141",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57678,
   "name": "b_E14E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57691,
   "name": "b_E15B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57706,
   "name": "key_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57754,
   "name": "b_E19A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57756,
   "name": "f_E19C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57764,
   "name": "f_E1A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57772,
   "name": "irq_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57780,
   "name": "a_E1B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57781,
   "name": "a_E1B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57782,
   "name": "j_E1B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57806,
   "name": "b_E1CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57842,
   "name": "b_E1F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57850,
   "name": "j_E1FA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57854,
   "name": "b_E1FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57878,
   "name": "b_E216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57914,
   "name": "b_E23A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57922,
   "name": "j_E242",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57926,
   "name": "b_E246",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57950,
   "name": "b_E25E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57986,
   "name": "b_E282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57994,
   "name": "j_E28A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57998,
   "name": "b_E28E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58022,
   "name": "b_E2A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58058,
   "name": "b_E2CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58066,
   "name": "j_E2D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58070,
   "name": "b_E2D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58094,
   "name": "b_E2EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58130,
   "name": "b_E312",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58138,
   "name": "j_E31A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58142,
   "name": "b_E31E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58166,
   "name": "b_E336",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58202,
   "name": "b_E35A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58210,
   "name": "j_E362",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58214,
   "name": "b_E366",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58238,
   "name": "b_E37E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58274,
   "name": "b_E3A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58282,
   "name": "j_E3AA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58286,
   "name": "b_E3AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58310,
   "name": "b_E3C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58346,
   "name": "b_E3EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58354,
   "name": "j_E3F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58362,
   "name": "b_E3FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58406,
   "name": "b_E426",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58455,
   "name": "j_E457",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58496,
   "name": "spawn_scrolled",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58502,
   "name": "b_E486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58546,
   "name": "b_E4B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58558,
   "name": "a_E4BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58565,
   "name": "a_E4C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58577,
   "name": "b_E4D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58602,
   "name": "b_E4EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58621,
   "name": "r_E4FD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58622,
   "name": "j_E4FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58623,
   "name": "a_E4FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58630,
   "name": "a_E506",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58645,
   "name": "b_E515",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58661,
   "name": "b_E525",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58671,
   "name": "b_E52F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58679,
   "name": "b_E537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58693,
   "name": "b_E545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58708,
   "name": "b_E554",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58751,
   "name": "b_E57F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58760,
   "name": "walker_direction",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58761,
   "name": "walker_sideways",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58786,
   "name": "b_E5A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58814,
   "name": "b_E5BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58836,
   "name": "walker_still",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58874,
   "name": "b_E5FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58896,
   "name": "walker_vertical",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58921,
   "name": "b_E629",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58949,
   "name": "b_E645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58972,
   "name": "walker_shuttle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58983,
   "name": "b_E667",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59010,
   "name": "b_E682",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59043,
   "name": "b_E6A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59059,
   "name": "b_E6B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59078,
   "name": "r_E6C6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59079,
   "name": "a_E6C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59080,
   "name": "b_E6C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59104,
   "name": "b_E6E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59136,
   "name": "walker_animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59154,
   "name": "r_E712",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59155,
   "name": "update_walkers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59195,
   "name": "b_E73B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59214,
   "name": "b_E74E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59221,
   "name": "b_E755",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59226,
   "name": "b_E75A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59246,
   "name": "b_E76E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59257,
   "name": "b_E779",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59265,
   "name": "b_E781",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59270,
   "name": "j_E786",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59278,
   "name": "a_E78E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59285,
   "name": "a_E795",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59302,
   "name": "b_E7A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59307,
   "name": "a_E7AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59314,
   "name": "a_E7B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59323,
   "name": "b_E7BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59337,
   "name": "b_E7C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59370,
   "name": "b_E7EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59438,
   "name": "enemy_records",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59439,
   "name": "f_E82F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59668,
   "name": "rounds",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59669,
   "name": "draw_rounds",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59717,
   "name": "b_E945",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59730,
   "name": "r_E952",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59731,
   "name": "f_E953",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59745,
   "name": "f_E961",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59763,
   "name": "f_E973",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59779,
   "name": "main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 59806,
   "name": "a_E99E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59807,
   "name": "a_E99F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59808,
   "name": "a_E9A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59809,
   "name": "a_E9A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59810,
   "name": "a_E9A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59811,
   "name": "a_E9A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59812,
   "name": "a_E9A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59813,
   "name": "a_E9A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59926,
   "name": "bh_1C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59937,
   "name": "b_EA21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60015,
   "name": "b_EA6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60026,
   "name": "r_EA7A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 60027,
   "name": "b_EA7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60038,
   "name": "b_EA86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60070,
   "name": "b_EAA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60077,
   "name": "b_EAAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60090,
   "name": "b_EABA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60093,
   "name": "j_EABD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60101,
   "name": "b_EAC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60115,
   "name": "r_EAD3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 60116,
   "name": "bh_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60126,
   "name": "b_EADE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60142,
   "name": "b_EAEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60190,
   "name": "b_EB1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60201,
   "name": "b_EB29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60205,
   "name": "b_EB2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60242,
   "name": "b_EB52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60245,
   "name": "b_EB55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60252,
   "name": "b_EB5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60271,
   "name": "b_EB6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60274,
   "name": "j_EB72",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60285,
   "name": "b_EB7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60300,
   "name": "b_EB8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60303,
   "name": "j_EB8F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60313,
   "name": "b_EB99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60333,
   "name": "b_EBAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60358,
   "name": "b_EBC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60383,
   "name": "b_EBDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60398,
   "name": "b_EBEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60430,
   "name": "b_EC0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60433,
   "name": "b_EC11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60453,
   "name": "b_EC25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60475,
   "name": "b_EC3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60480,
   "name": "b_EC40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60482,
   "name": "j_EC42",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60486,
   "name": "j_EC46",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60517,
   "name": "nmi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60518,
   "name": "start_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 60681,
   "name": "KERNAL_TALKj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60684,
   "name": "KERNAL_LISTENj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60762,
   "name": "wipe_charset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60782,
   "name": "b_ED6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60792,
   "name": "b_ED78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60802,
   "name": "b_ED82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60812,
   "name": "b_ED8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60822,
   "name": "b_ED96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60832,
   "name": "b_EDA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60842,
   "name": "b_EDAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60852,
   "name": "b_EDB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60857,
   "name": "KERNAL_SECONDj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60860,
   "name": "j_EDBC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60870,
   "name": "b_EDC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60871,
   "name": "KERNAL_TKSAj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60873,
   "name": "a_EDC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60874,
   "name": "a_EDCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60881,
   "name": "a_EDD1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60882,
   "name": "a_EDD2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60889,
   "name": "a_EDD9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60890,
   "name": "a_EDDA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60893,
   "name": "KERNAL_CIOUTj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60897,
   "name": "a_EDE1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60898,
   "name": "a_EDE2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60905,
   "name": "a_EDE9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60906,
   "name": "a_EDEA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60913,
   "name": "a_EDF1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60914,
   "name": "a_EDF2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60921,
   "name": "a_EDF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60922,
   "name": "a_EDFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60926,
   "name": "KERNAL_UNLSNj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60929,
   "name": "a_EE01",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60930,
   "name": "a_EE02",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60947,
   "name": "KERNAL_ACPTRj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 61089,
   "name": "r_EEA1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61090,
   "name": "colour_column_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61097,
   "name": "b_EEA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61260,
   "name": "j_EF4C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61423,
   "name": "colour_column_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61430,
   "name": "b_EFF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61593,
   "name": "j_F099",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61756,
   "name": "colour_row_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61762,
   "name": "b_F142",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61775,
   "name": "b_F14F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61777,
   "name": "b_F151",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61790,
   "name": "colour_row_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61796,
   "name": "b_F164",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61809,
   "name": "b_F171",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61811,
   "name": "b_F173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61824,
   "name": "draw_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61954,
   "name": "f_F202",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61955,
   "name": "f_F203",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61964,
   "name": "add_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61997,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62063,
   "name": "a_F26F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62064,
   "name": "a_F270",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62065,
   "name": "a_F271",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62066,
   "name": "a_F272",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62067,
   "name": "a_F273",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62068,
   "name": "wait_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62097,
   "name": "KERNAL_CLOSEj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62130,
   "name": "r_F2B2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62131,
   "name": "sort_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62133,
   "name": "b_F2B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62155,
   "name": "b_F2CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62167,
   "name": "b_F2D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62172,
   "name": "b_F2DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62187,
   "name": "b_F2EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62197,
   "name": "j_F2F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62208,
   "name": "b_F300",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62227,
   "name": "first_sprite_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62228,
   "name": "read_joystick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62245,
   "name": "b_F325",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62254,
   "name": "b_F32E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62255,
   "name": "KERNAL_CLALLj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62267,
   "name": "b_F33B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62280,
   "name": "b_F348",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62282,
   "name": "KERNAL_OPENj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62289,
   "name": "b_F351",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62293,
   "name": "joystick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62294,
   "name": "score",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62295,
   "name": "a_F357",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62296,
   "name": "a_F358",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62297,
   "name": "magazines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62299,
   "name": "draw_magazines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62323,
   "name": "energy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62325,
   "name": "draw_energy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62340,
   "name": "b_F384",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62348,
   "name": "b_F38C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62356,
   "name": "b_F394",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62364,
   "name": "b_F39C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62372,
   "name": "b_F3A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62380,
   "name": "b_F3AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62388,
   "name": "b_F3B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62396,
   "name": "b_F3BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62434,
   "name": "j_F3E2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62447,
   "name": "r_F3EF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62448,
   "name": "draw_lives",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62483,
   "name": "b_F413",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62496,
   "name": "r_F420",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62497,
   "name": "clock",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62498,
   "name": "a_F422",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62499,
   "name": "a_F423",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62500,
   "name": "tick_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62517,
   "name": "b_F435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62542,
   "name": "b_F44E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62586,
   "name": "b_F47A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62609,
   "name": "b_F491",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62622,
   "name": "game_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62644,
   "name": "b_F4B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62654,
   "name": "b_F4BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62714,
   "name": "b_F4FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62726,
   "name": "b_F506",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62743,
   "name": "b_F517",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62808,
   "name": "j_F558",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62812,
   "name": "b_F55C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62846,
   "name": "b_F57E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62852,
   "name": "b_F584",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62921,
   "name": "b_F5C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62930,
   "name": "s_F5D2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62933,
   "name": "unpack",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62951,
   "name": "b_F5E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62969,
   "name": "j_F5F9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63014,
   "name": "b_F626",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63021,
   "name": "j_F62D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63066,
   "name": "b_F65A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63069,
   "name": "b_F65D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63074,
   "name": "b_F662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63081,
   "name": "b_F669",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63098,
   "name": "b_F67A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63108,
   "name": "b_F684",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63111,
   "name": "b_F687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63117,
   "name": "j_F68D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63141,
   "name": "b_F6A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63145,
   "name": "b_F6A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63152,
   "name": "b_F6B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63169,
   "name": "b_F6C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63179,
   "name": "b_F6CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63182,
   "name": "b_F6CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63188,
   "name": "b_F6D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63207,
   "name": "b_F6E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63218,
   "name": "b_F6F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63238,
   "name": "b_F706",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63246,
   "name": "b_F70E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63249,
   "name": "b_F711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63256,
   "name": "r_F718",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 63257,
   "name": "decode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63259,
   "name": "b_F71B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63260,
   "name": "b_F71C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63314,
   "name": "b_F752",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63334,
   "name": "b_F766",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63342,
   "name": "f_F76E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63350,
   "name": "s_F776",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 63351,
   "name": "read_bits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63369,
   "name": "b_F789",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63380,
   "name": "b_F794",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63395,
   "name": "b_F7A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63412,
   "name": "b_F7B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63414,
   "name": "r_F7B6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 63415,
   "name": "f_F7B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63432,
   "name": "f_F7C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63449,
   "name": "build_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63466,
   "name": "b_F7EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63499,
   "name": "b_F80B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63507,
   "name": "b_F813",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63537,
   "name": "b_F831",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63556,
   "name": "b_F844",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63563,
   "name": "b_F84B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63603,
   "name": "b_F873",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63622,
   "name": "a_F886",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63623,
   "name": "a_F887",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63624,
   "name": "a_F888",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63625,
   "name": "sound_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63628,
   "name": "play_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63631,
   "name": "sound_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63639,
   "name": "b_F897",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63652,
   "name": "b_F8A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63680,
   "name": "b_F8C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63690,
   "name": "sound_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63713,
   "name": "j_F8E1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63747,
   "name": "b_F903",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63782,
   "name": "b_F926",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63796,
   "name": "b_F934",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63808,
   "name": "b_F940",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63818,
   "name": "b_F94A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63830,
   "name": "b_F956",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63834,
   "name": "start_sound",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 63971,
   "name": "b_F9E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63980,
   "name": "b_F9EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 64036,
   "name": "j_FA24",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 64042,
   "name": "b_FA2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 64051,
   "name": "b_FA33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 64068,
   "name": "f_FA44",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64071,
   "name": "f_FA47",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64074,
   "name": "f_FA4A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64077,
   "name": "f_FA4D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64080,
   "name": "f_FA50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64083,
   "name": "f_FA53",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64086,
   "name": "f_FA56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64089,
   "name": "f_FA59",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64095,
   "name": "f_FA5F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64098,
   "name": "f_FA62",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64101,
   "name": "f_FA65",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64104,
   "name": "f_FA68",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64107,
   "name": "a_FA6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64108,
   "name": "a_FA6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64109,
   "name": "a_FA6D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64110,
   "name": "a_FA6E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64111,
   "name": "a_FA6F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64112,
   "name": "a_FA70",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64113,
   "name": "sound_table_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64131,
   "name": "sound_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64149,
   "name": "sound_effects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64661,
   "name": "char_properties",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64918,
   "name": "stage_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64921,
   "name": "a_FD99",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64922,
   "name": "a_FD9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64923,
   "name": "a_FD9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64924,
   "name": "a_FD9C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64925,
   "name": "char_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65181,
   "name": "respawn_list",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65423,
   "name": "f_FF8F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 65521,
   "name": "character",
   "type": "AbsoluteAddress",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: $35 in play (RAM everywhere but the I/O), $36 while a file loads (the KERNAL banked in for the drive commands), $30 for each byte the loader stores, so a file can load under the I/O area."
  },
  {
   "address": 2,
   "type": "line",
   "text": "Set by the loader from $B9: when it is 0 a file loads at the caller's X/Y address, otherwise at its own."
  },
  {
   "address": 3,
   "type": "line",
   "text": "The address of the next 32 bytes of drive code to send (low byte), from $0416."
  },
  {
   "address": 4,
   "type": "line",
   "text": "The drive code's address, high byte."
  },
  {
   "address": 5,
   "type": "line",
   "text": "Two uses: the drive address of the next M-W, low byte, while a file loads; the walker record being moved ($E713) in play."
  },
  {
   "address": 6,
   "type": "line",
   "text": "The high byte of $05's address in both uses."
  },
  {
   "address": 10,
   "type": "line",
   "text": "Scratch: keeps X in $13C6 and the random calls, and counts the continue screen's wait."
  },
  {
   "address": 11,
   "type": "line",
   "text": "Scratch: the scroll table index in $14E1, the object being checked in $1F37, the player's column in $21A1, the exit's place in $2388."
  },
  {
   "address": 12,
   "type": "line",
   "text": "Scratch: the player's line masked to an 8-line row, to compare with an enemy's."
  },
  {
   "address": 14,
   "type": "line",
   "text": "The multiplexer's place in the sort list: the next object the sprite interrupt places."
  },
  {
   "address": 16,
   "type": "line",
   "text": "Scratch for the sort ($F2B3): where the object being moved goes."
  },
  {
   "address": 17,
   "type": "line",
   "text": "Scratch for the sort: the place it came from."
  },
  {
   "address": 18,
   "type": "line",
   "text": "Scratch for the sort: the object being moved."
  },
  {
   "address": 19,
   "type": "line",
   "text": "A pointer, low byte: the enemy record being run (set by $0F70), or where text or screen rows are written."
  },
  {
   "address": 20,
   "type": "line",
   "text": "The pointer $13's high byte."
  },
  {
   "address": 21,
   "type": "line",
   "text": "Scratch for spawning: a record's x less the camera's, low byte."
  },
  {
   "address": 22,
   "type": "line",
   "text": "The high byte that goes with $15 (scratch for spawning: a record's x less the camera's, low byte)."
  },
  {
   "address": 23,
   "type": "line",
   "text": "Scratch for spawning: a record's line less the camera's, low byte."
  },
  {
   "address": 24,
   "type": "line",
   "text": "The high byte that goes with $17 (scratch for spawning: a record's line less the camera's, low byte)."
  },
  {
   "address": 33,
   "type": "line",
   "text": "A pointer, low byte: the text $0FBA prints, the map $0673 reads, the respawn list."
  },
  {
   "address": 34,
   "type": "line",
   "text": "The pointer $21's high byte."
  },
  {
   "address": 39,
   "type": "line",
   "text": "The camera's x in the level, in pixels, low byte; with $28. The window shows the level from here less $18."
  },
  {
   "address": 40,
   "type": "line",
   "text": "The camera's x, high byte."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The camera's y in the level, in lines, low byte; with $2A."
  },
  {
   "address": 42,
   "type": "line",
   "text": "The camera's y, high byte."
  },
  {
   "address": 43,
   "type": "line",
   "text": "Scratch: 7 less the camera's fine position, for $D016 and $D011."
  },
  {
   "address": 48,
   "type": "line",
   "text": "The map row being written by $0673, low byte; also the colour RAM pointer in $13C6."
  },
  {
   "address": 49,
   "type": "line",
   "text": "The high byte that goes with $30 (the map row being written by $0673, low byte; also the colour RAM pointer in $13C6)."
  },
  {
   "address": 50,
   "type": "line",
   "text": "The screen row for the new edge (0, $13 or $FF for none), set by $1593."
  },
  {
   "address": 51,
   "type": "line",
   "text": "The screen column for the new edge (0, $27 or $FF for none)."
  },
  {
   "address": 52,
   "type": "line",
   "text": "The level map address of the new edge column, low byte."
  },
  {
   "address": 53,
   "type": "line",
   "text": "The high byte that goes with $34 (the level map address of the new edge column, low byte)."
  },
  {
   "address": 54,
   "type": "line",
   "text": "The level map address of the new edge row, low byte."
  },
  {
   "address": 55,
   "type": "line",
   "text": "The high byte that goes with $36 (the level map address of the new edge row, low byte)."
  },
  {
   "address": 56,
   "type": "line",
   "text": "The tile's address in the tile table, low byte, in $0673."
  },
  {
   "address": 57,
   "type": "line",
   "text": "The high byte that goes with $38 (the tile's address in the tile table, low byte, in $0673)."
  },
  {
   "address": 58,
   "type": "line",
   "text": "The second row of the tile being written by $0673, low byte."
  },
  {
   "address": 59,
   "type": "line",
   "text": "The high byte that goes with $3A (the second row of the tile being written by $0673, low byte)."
  },
  {
   "address": 60,
   "type": "line",
   "text": "A pointer, low byte: the map column $0673 starts at, the map address in $13C6 and $1593."
  },
  {
   "address": 61,
   "type": "line",
   "text": "The high byte that goes with $3C (a pointer, low byte: the map column $0673 starts at, the map address in $13C6 and $1593)."
  },
  {
   "address": 62,
   "type": "line",
   "text": "A pointer, low byte: the tile map $0673 reads; the screen row in $1655."
  },
  {
   "address": 63,
   "type": "line",
   "text": "The high byte that goes with $3E (a pointer, low byte: the tile map $0673 reads; the screen row in $1655)."
  },
  {
   "address": 64,
   "type": "line",
   "text": "Which screen the scroll's edges are drawn into: 0 the one at $4000, 1 the one at $4400."
  },
  {
   "address": 65,
   "type": "line",
   "text": "The value for $D016 (horizontal fine scroll), set each pass and written by the interrupt at $136F."
  },
  {
   "address": 66,
   "type": "line",
   "text": "The value for $D011 (vertical fine scroll), likewise."
  },
  {
   "address": 67,
   "type": "line",
   "text": "The value for $D018: bit 4 picks the shown screen, flipped by $1579."
  },
  {
   "address": 68,
   "type": "line",
   "text": "The line below which the sprite interrupt stops placing sprites and waits for the next interrupt."
  },
  {
   "address": 70,
   "type": "line",
   "text": "A pointer, low byte: the stage's file list in the overlay, while $1B28 loads."
  },
  {
   "address": 71,
   "type": "line",
   "text": "The high byte that goes with $46 (a pointer, low byte: the stage's file list in the overlay, while $1B28 loads)."
  },
  {
   "address": 74,
   "type": "line",
   "text": "The player's animation script, low byte, read by $1A85."
  },
  {
   "address": 75,
   "type": "line",
   "text": "The high byte that goes with $4A (the player's animation script, low byte, read by $1A85)."
  },
  {
   "address": 76,
   "type": "line",
   "text": "The player's place in his animation script."
  },
  {
   "address": 82,
   "type": "line",
   "text": "Keeps Y (the object) in the collision loop at $1018."
  },
  {
   "address": 83,
   "type": "line",
   "text": "Keeps X (the place in the sort list) in that loop."
  },
  {
   "address": 84,
   "type": "line",
   "text": "The player's row in the screen, plus $78, low byte: where $20EF looks for the ground."
  },
  {
   "address": 85,
   "type": "line",
   "text": "The high byte that goes with $54 (the player's row in the screen, plus $78, low byte: where $20EF looks for the ground)."
  },
  {
   "address": 86,
   "type": "line",
   "text": "The player's column, kept for $20EF."
  },
  {
   "address": 92,
   "type": "line",
   "text": "The player's facing: 0 right, 8 left, set by the joystick ($F314)."
  },
  {
   "address": 93,
   "type": "line",
   "text": "Scratch for the collision checks: the player's or bullet's x less a margin."
  },
  {
   "address": 94,
   "type": "line",
   "text": "Its high bit."
  },
  {
   "address": 95,
   "type": "line",
   "text": "The record being spawned, times two, by $E001 and $E480; kept in the object's $60+n."
  },
  {
   "address": 96,
   "type": "line",
   "text": "For each object n, $60+n: the number (times two) of its enemy record, which $E82E turns into an address; for walkers, the direction they moved ($E588). $FF for the player and bullets."
  },
  {
   "address": 97,
   "type": "line",
   "text": "$60+n for object 1."
  },
  {
   "address": 98,
   "type": "line",
   "text": "$60+n for object 2."
  },
  {
   "address": 99,
   "type": "line",
   "text": "$60+n for object 3, the first enemy slot: $0F70 reads $63+X."
  },
  {
   "address": 100,
   "type": "line",
   "text": "Two uses: $60+n for object 4, and, while a stage loads, the unpacker's input pointer (low byte)."
  },
  {
   "address": 101,
   "type": "line",
   "text": "$60+n for object 5, and the unpacker's input pointer, high byte."
  },
  {
   "address": 102,
   "type": "line",
   "text": "$60+n for object 6, and the unpacker's output pointer, low byte."
  },
  {
   "address": 103,
   "type": "line",
   "text": "$60+n for object 7, and the unpacker's output pointer, high byte."
  },
  {
   "address": 104,
   "type": "line",
   "text": "The unpacker's count of sequences left, low byte."
  },
  {
   "address": 105,
   "type": "line",
   "text": "The high byte that goes with $68 (the unpacker's count of sequences left, low byte)."
  },
  {
   "address": 106,
   "type": "line",
   "text": "The unpacker's count of blocks left."
  },
  {
   "address": 107,
   "type": "line",
   "text": "The value the unpacker last decoded or read, low byte."
  },
  {
   "address": 108,
   "type": "line",
   "text": "The high byte that goes with $6B (the value the unpacker last decoded or read, low byte)."
  },
  {
   "address": 109,
   "type": "line",
   "text": "Scratch for the code table builder."
  },
  {
   "address": 110,
   "type": "line",
   "text": "The high byte that goes with $6D (scratch for the code table builder)."
  },
  {
   "address": 111,
   "type": "line",
   "text": "The code table the unpacker is using, low byte ($4000, $4080 or $4100)."
  },
  {
   "address": 112,
   "type": "line",
   "text": "The high byte that goes with $6F (the code table the unpacker is using, low byte ($4000, $4080 or $4100))."
  },
  {
   "address": 113,
   "type": "line",
   "text": "The unpacker's bit buffer, lowest byte; in play, the facing the jump started with ($20EF)."
  },
  {
   "address": 114,
   "type": "line",
   "text": "The bit buffer's second byte; in play, bullet 1's muzzle count (bullet 2's at $73)."
  },
  {
   "address": 115,
   "type": "line",
   "text": "The bit buffer's third byte."
  },
  {
   "address": 116,
   "type": "line",
   "text": "The bit buffer's top byte."
  },
  {
   "address": 117,
   "type": "line",
   "text": "The bits left in the buffer."
  },
  {
   "address": 118,
   "type": "line",
   "text": "The code length being built ($F7D9)."
  },
  {
   "address": 119,
   "type": "line",
   "text": "The next code, low byte."
  },
  {
   "address": 120,
   "type": "line",
   "text": "The next code, high byte."
  },
  {
   "address": 121,
   "type": "line",
   "text": "The code step, low byte."
  },
  {
   "address": 122,
   "type": "line",
   "text": "The code step, high byte."
  },
  {
   "address": 123,
   "type": "line",
   "text": "A pointer, low byte: the enemy record being spawned ($E001, $E480); in the unpacker, where a copy comes from."
  },
  {
   "address": 124,
   "type": "line",
   "text": "The high byte that goes with $7B (a pointer, low byte: the enemy record being spawned ($E001, $E480); in the unpacker, where a copy comes from)."
  },
  {
   "address": 125,
   "type": "line",
   "text": "The builder's count."
  },
  {
   "address": 126,
   "type": "line",
   "text": "The byte before the sort list, read by the sort as $7E+X."
  },
  {
   "address": 127,
   "type": "line",
   "text": "The multiplexer's list of the 16 objects, sorted by line ($F2B3), with an end mark ($FF) at $8F."
  },
  {
   "address": 144,
   "type": "line",
   "text": "The KERNAL's status byte: bit 1 set means the drive did not find the file."
  },
  {
   "address": 147,
   "type": "line",
   "text": "The KERNAL's load/verify flag, cleared by the loader."
  },
  {
   "address": 157,
   "type": "line",
   "text": "The KERNAL's message flag, cleared so no messages are printed."
  },
  {
   "address": 164,
   "type": "line",
   "text": "The byte being received from the drive, built two bits at a time."
  },
  {
   "address": 174,
   "type": "line",
   "text": "Where the loader stores the next byte, low byte."
  },
  {
   "address": 175,
   "type": "line",
   "text": "Two uses: the loader's store address, high byte; in play, object 0's type ($AF+n is each object's type: 0 a walker, from $24 an enemy behaviour, 2-$22 pickups and hazards)."
  },
  {
   "address": 176,
   "type": "line",
   "text": "Object 1's type (the first bullet)."
  },
  {
   "address": 177,
   "type": "line",
   "text": "Object 2's type (the second bullet)."
  },
  {
   "address": 178,
   "type": "line",
   "text": "Object 3's type, the first of the slots $0F70 runs: $B2+X is slot X's behaviour."
  },
  {
   "address": 179,
   "type": "line",
   "text": "Object 4's type, the second projectile slot's behaviour ($B2+1)."
  },
  {
   "address": 183,
   "type": "line",
   "text": "The KERNAL's filename length, set before each load."
  },
  {
   "address": 184,
   "type": "line",
   "text": "The KERNAL's logical file number."
  },
  {
   "address": 185,
   "type": "line",
   "text": "The KERNAL's secondary address."
  },
  {
   "address": 186,
   "type": "line",
   "text": "The KERNAL's device number, 8."
  },
  {
   "address": 187,
   "type": "line",
   "text": "The KERNAL's filename pointer, low byte."
  },
  {
   "address": 188,
   "type": "line",
   "text": "The high byte that goes with $BB (the KERNAL's filename pointer, low byte)."
  },
  {
   "address": 189,
   "type": "line",
   "text": "Object 14's type."
  },
  {
   "address": 190,
   "type": "line",
   "text": "Object 15's type."
  },
  {
   "address": 191,
   "type": "line",
   "text": "$BF+n: each object's colour (low four bits) with the ninth bit of its x in bit 7 (stored inverted, so negative means x of 256 or more); $BF is the player's."
  },
  {
   "address": 192,
   "type": "line",
   "text": "Object 1's colour and x bit."
  },
  {
   "address": 193,
   "type": "line",
   "text": "Object 2's colour and x bit."
  },
  {
   "address": 194,
   "type": "line",
   "text": "Slot X's colour and x bit ($C2+X, object X+3)."
  },
  {
   "address": 195,
   "type": "line",
   "text": "Two uses: the loader's load address, low byte; object 4's colour and x bit."
  },
  {
   "address": 196,
   "type": "line",
   "text": "The loader's load address, high byte; object 5's colour."
  },
  {
   "address": 198,
   "type": "line",
   "text": "The block's address from the drive, low byte; object 7's colour."
  },
  {
   "address": 199,
   "type": "line",
   "text": "Its high byte; object 8's colour."
  },
  {
   "address": 205,
   "type": "line",
   "text": "Object 14's colour."
  },
  {
   "address": 206,
   "type": "line",
   "text": "Object 15's colour."
  },
  {
   "address": 207,
   "type": "line",
   "text": "$CF+n: each object's frame, the sprite pointer value; $CF is the player's."
  },
  {
   "address": 208,
   "type": "line",
   "text": "Object 1's frame."
  },
  {
   "address": 210,
   "type": "line",
   "text": "Slot X's frame ($D2+X)."
  },
  {
   "address": 211,
   "type": "line",
   "text": "Object 4's frame."
  },
  {
   "address": 221,
   "type": "line",
   "text": "Object 14's frame."
  },
  {
   "address": 222,
   "type": "line",
   "text": "Object 15's frame."
  },
  {
   "address": 223,
   "type": "line",
   "text": "$DF+n: each object's line on the screen, 0 when the object is not in use; $DF is the player's."
  },
  {
   "address": 224,
   "type": "line",
   "text": "Object 1's line."
  },
  {
   "address": 225,
   "type": "line",
   "text": "Object 2's line."
  },
  {
   "address": 226,
   "type": "line",
   "text": "Slot X's line ($E2+X)."
  },
  {
   "address": 227,
   "type": "line",
   "text": "Object 4's line."
  },
  {
   "address": 237,
   "type": "line",
   "text": "Object 14's line."
  },
  {
   "address": 238,
   "type": "line",
   "text": "Object 15's line."
  },
  {
   "address": 239,
   "type": "line",
   "text": "$EF+n: each object's x, low byte; $EF is the player's."
  },
  {
   "address": 240,
   "type": "line",
   "text": "Object 1's x."
  },
  {
   "address": 242,
   "type": "line",
   "text": "Slot X's x ($F2+X)."
  },
  {
   "address": 243,
   "type": "line",
   "text": "Object 4's x."
  },
  {
   "address": 251,
   "type": "line",
   "text": "Object 12's x; also the sound effect pointer, low byte, which $F88F keeps and puts back."
  },
  {
   "address": 252,
   "type": "line",
   "text": "Object 13's x; also the sound pointer's high byte."
  },
  {
   "address": 253,
   "type": "line",
   "text": "Object 14's x."
  },
  {
   "address": 254,
   "type": "line",
   "text": "Object 15's x."
  },
  {
   "address": 673,
   "type": "line",
   "text": "The KERNAL's RS-232 interrupt flags; $03F4 clears it before a load so no serial interrupt can interfere."
  },
  {
   "address": 678,
   "type": "line",
   "text": "The KERNAL's PAL/NTSC flag (1 on PAL), set at power-on: $0633 reads it to adjust the fast loader's timing."
  },
  {
   "address": 788,
   "type": "line",
   "text": "The KERNAL's IRQ vector; $EC95 points it at $E1AC as well as $FFFE, although the game runs with the KERNAL banked out."
  },
  {
   "address": 789,
   "type": "line",
   "text": "The high byte of the KERNAL's IRQ vector, set to $E1 by $EC9D."
  },
  {
   "address": 960,
   "type": "line",
   "text": "The game's first instruction, where the title program's JMP $03C0 hands over: one jump to the start-up at $EC66. GAM0 loads from $03C0, so this is also the first byte of that file."
  },
  {
   "address": 963,
   "type": "line",
   "text": "Loads one file from drive 8 with the game's own fast loader. Filename at ($BB) with its length in $B7, load address in X (low) and Y (high), or the file's own address when $02 says so. A name starting with \"$\" goes to $248D instead. Masks the raster interrupt and CIA 1's, banks the KERNAL in ($01=$36) for the drive commands, blanks the screen ($D011=$0B), calls $0504, then banks back to $35 and turns the raster interrupt on again."
  },
  {
   "address": 1043,
   "type": "line",
   "text": "A filename beginning \"$\" (the directory) is not loaded: it jumps to $248D."
  },
  {
   "address": 1046,
   "type": "line",
   "text": "238 bytes of 1541 drive code. $0504 writes 256 bytes from here into the drive's RAM at $0600-$06FF with M-W commands and starts it with M-E at $06C7 (so its entry is $04DD here); the last 18 bytes it sends are the start of $0504 itself, sent along and not run. The drive finds the file and sends it two bits at a time over the serial port, which $0621 reads."
  },
  {
   "address": 1284,
   "type": "line",
   "text": "Opens the file through the KERNAL (OPEN, TALK, TKSA, ACPTR, CLOSE) to make the drive find it, and returns if the status $90 says it failed. Then uploads the drive code at $0416 in eight 32-byte M-W blocks, starts it with M-E, and receives the file: each block begins with a count byte, the first block's next two bytes are the load address (kept, or replaced by X/Y from $03C3), and every data byte is stored through $0665 with all ROMs and I/O banked out. Returns the end address in X/Y."
  },
  {
   "address": 1323,
   "type": "line",
   "text": "\"M-W\" and \"M-E\" followed by $C7 $06: the drive commands $0504 sends; the M-E jumps to $06C7 in the drive."
  },
  {
   "address": 1331,
   "type": "line",
   "text": "The file was found: uploads the drive code ($0416, 32 bytes a time with M-W to drive $0600-$06FF), starts it with M-E, then receives the file block by block until the drive sends a short block."
  },
  {
   "address": 1542,
   "type": "line",
   "text": "Reads the two bytes of a block's load address from the drive into $AE/$AF (and $C6/$C7); when $02 is zero, $AE/$AF take the caller's address from $C3/$C4 instead."
  },
  {
   "address": 1569,
   "type": "line",
   "text": "Receives one byte from the drive: signals ready on CIA 2 port A ($DD00=$0B), waits for the drive to pull bit 7, then reads $DD00 four times, two bits each (bits 6 and 7), building the byte in $A4. Flashes the border down and up around each byte, which is the stripe pattern seen while it loads. The two BEQs on $02A6 (the KERNAL's PAL/NTSC flag) branch to the next instruction either way: they adjust the timing by a cycle on PAL machines."
  },
  {
   "address": 1637,
   "type": "line",
   "text": "Stores A at ($AE),Y with $01=$30 (all RAM, no I/O), so a file can load under the I/O area and the ROMs, then restores $01=$36 and steps Y."
  },
  {
   "address": 1651,
   "type": "line",
   "text": "Expands the level's tile map into the character map the screen scrolls over: 144 tile columns ($190F counts them) of 35 tiles each, read down a column from ($3E/$3F), which steps 64 bytes a column. Each map byte names a 2x2 tile, whose four characters it reads from $4000 + byte*4 and writes as two rows of two into a map 288 characters wide starting at $7D80, so the level is 288 by 70 characters ($7D80-$CC3F). When $1AAE is $10 it then puts character $47 into sixteen cells, four rows of four from $A028."
  },
  {
   "address": 1888,
   "type": "line",
   "text": "A lone RTS: the handler for behaviours and pickups that do nothing, named in several tables ($077D, $10CE, $178F)."
  },
  {
   "address": 1889,
   "type": "line",
   "text": "\"TITLE\", the file $0766 loads when the game is over. No file of that name is on this disk (its title program is called LOADER)."
  },
  {
   "address": 1894,
   "type": "line",
   "text": "The game is over: loads \"TITLE\" at $C000 and jumps there. On this disk image there is no file called TITLE, so the load finds nothing and the jump runs the level data that is at $C000, which crashes (facts.md)."
  },
  {
   "address": 1917,
   "type": "line",
   "text": "27 words, one per behaviour number (even numbers $00-$34, kept in $B2+slot), each the routine $0F70 calls for an object every pass by writing it into the JSR at $0FA6. $00-$10 are $0F61 (animate only); then $0D81, $0D91, $09D5, $09D9, $085B, $EA16, $28A5, $28B3, $28D0, $0BFD, $0DDD, $0B27, $0A05, $08E6, $0899, $07B3, $EAD4 and $0760."
  },
  {
   "address": 1918,
   "type": "line",
   "text": "The high bytes of behaviour_handlers's two-byte entries, which $0F82 reads through $077E, indexed."
  },
  {
   "address": 1971,
   "type": "line",
   "text": "Behaviour $30: an enemy that hides and shows itself. With frame 0 it sets frame $E7, a countdown of $1E in its record and a position, or empties itself; while shown it counts the record's +$0B down to frame $E1 and moves one pixel left a pass. When the player stands on its 8-line row and its countdown at +$0C has run out, it fires into slot 1 (if free) with sound $10."
  },
  {
   "address": 2139,
   "type": "line",
   "text": "Behaviour $1A: a thrown object that climbs 3 lines a pass while the counter $28A2 runs down, switching to frame $AC with sound $0D when it reaches $13, and removes itself at line $B8 or when the counter runs out."
  },
  {
   "address": 2201,
   "type": "line",
   "text": "Behaviour $2E: counts its record's +$0B down, showing frame $A7 below $46; at the end of the count it waits a random $50-$6F passes and, when slot 0 is free, puts a copy of itself into slot 0 as behaviour $1A with frame $AA and sets $28A2 (to $30, or $26 when $1AAE is below 2)."
  },
  {
   "address": 2278,
   "type": "line",
   "text": "Behaviour $2C: waits a random 0-127 passes, then if the player is on its 8-line row turns to face him (frames $AD and $A9) and fires into slot 0 or 1 (a random wait of $64-$83 if both are busy); on another row it shows frame $A5 and, when it and the player are on the same side and slot 0 is free, throws itself into slot 0 as behaviour $1A with sound $0E."
  },
  {
   "address": 2428,
   "type": "line",
   "text": "Scratch: bit 7 of the enemy's x for the comparison at $0944."
  },
  {
   "address": 2429,
   "type": "line",
   "text": "Fires into slot Y: places the shot 12 pixels left of the enemy (24 right when it faces right), gives it behaviour $12 or $14 by slot, frame $AB or $AF, and sets the direction flag $0EE6,Y."
  },
  {
   "address": 2517,
   "type": "line",
   "text": "Behaviour $16, slot 0's dropped object (and $09D9, behaviour $18, slot 1's): falls 4 lines a pass for the count in $0A85,Y, then ends its frame; on the count's last turn it empties the slot."
  },
  {
   "address": 2521,
   "type": "line",
   "text": "Behaviour $18: slot 1's falling object, sharing $09DB with $09D5."
  },
  {
   "address": 2565,
   "type": "line",
   "text": "Behaviour $2A: an enemy that walks back and forth (the walking at $0A96) and, when the player is below it and a projectile slot is free, drops an object into it (behaviour $16 or $18, frame $CF, fall count $0F) with sound $0E, showing frames $B5/$C3 while doing so."
  },
  {
   "address": 2635,
   "type": "line",
   "text": "Starts slot Y's falling object 16 lines below the enemy, with behaviour $16 or $18, a fall count of 15 and frame $CF, and plays sound $0E on voice 2."
  },
  {
   "address": 2693,
   "type": "line",
   "text": "Two counters, for slots 0 and 1: how many more passes their dropped object falls."
  },
  {
   "address": 2695,
   "type": "line",
   "text": "The player is above the enemy: no drop. Shows the walking frame $B5, or $C3 when its record's byte $0D says it faces the other way."
  },
  {
   "address": 2855,
   "type": "line",
   "text": "Behaviour $28: an enemy that turns to face the player (frames $D1 and $D9) and, at a random interval of 0-7 passes, fires into slot 0 or 1 when the player is on its 8-line row (frames $DE/$D6 for the shot, $D3/$DB for itself) with sound $0C on voice 2."
  },
  {
   "address": 3069,
   "type": "line",
   "text": "Behaviour $24: an object that moves in an arc, 2 pixels sideways a pass (the way its record's +$0D says) and up or down by the next step of the table at $0CE1; a frame $F7 one that goes below line $A1, or any that reaches $B6, is removed by $0CD2. While a frame $F7 one is still above that line it clears $28A4, sets $0CD1, and keeps a second object (frame $F2 or the next frame) 21 lines below it in the next slot."
  },
  {
   "address": 3281,
   "type": "line",
   "text": "Set to 1 by $0BFD while a frame $F7 object is in the air; the player's update at $1018 does nothing while it is set, and $1F37 and $E012 read it too."
  },
  {
   "address": 3282,
   "type": "line",
   "text": "Removes the arcing object (and, for frame $F7, the one below it)."
  },
  {
   "address": 3297,
   "type": "line",
   "text": "80 two-byte steps of an arc for $0BFD, of which only the low byte is added to the object's line: -4 three times, -2 three times, -1 four times, 0 twice, then +4 to the end. The high bytes ($FF for the negative steps, $00 otherwise) are not read."
  },
  {
   "address": 3457,
   "type": "line",
   "text": "Behaviour $12, a shot in slot 0: animates and flies 3 pixels a pass left or right by the flag at $0EE6, and empties the slot when it leaves the screen ($0DA1, $0DBF). $0D91, behaviour $14, is the same for slot 1 with the flag at $0EE7."
  },
  {
   "address": 3473,
   "type": "line",
   "text": "Behaviour $14: slot 1's shot, as $0D81 with the direction flag $0EE7."
  },
  {
   "address": 3489,
   "type": "line",
   "text": "Moves a shot 3 pixels left and empties its slot once it is left of x $14."
  },
  {
   "address": 3519,
   "type": "line",
   "text": "Moves a shot 3 pixels right and empties its slot once it is past x $138."
  },
  {
   "address": 3549,
   "type": "line",
   "text": "Behaviour $26: an enemy that patrols (the walk at $0E55, with a random pause of $10-$2F) and, when the player is on its 8-line row and past x $1E, fires into slot 0 or 1 through $0EE8; frames $B5/$C3 while walking and $B9/$C7 standing."
  },
  {
   "address": 3634,
   "type": "line",
   "text": "Unused: nothing calls or jumps here. Turns frame $B9 into $B5, or $C7 into $C3, the standing frames of the patrolling enemy into its walking ones."
  },
  {
   "address": 3814,
   "type": "line",
   "text": "Two flags, for slots 0 and 1: $FF when the shot flies left, 0 when it flies right."
  },
  {
   "address": 3815,
   "type": "line",
   "text": "Slot 1's shot direction, the second byte of $0EE6: $FF when it flies left."
  },
  {
   "address": 3816,
   "type": "line",
   "text": "Fires into slot Y with sound $0C on voice 1: faces the shooter toward the player (frames $C5/$B7), places the shot 12 pixels left of it (+24 when it flies right), with frame $CF or $C1, and sets behaviour $12/$14."
  },
  {
   "address": 3937,
   "type": "line",
   "text": "Steps an object's animation: adds to its frame number ($D2+X) the value the level's table at $387B gives for that frame, so each frame names the next. Skipped while $0FB9 is not zero, so objects animate on one pass in three."
  },
  {
   "address": 3952,
   "type": "line",
   "text": "Runs every object's behaviour, slots 12 down to 0: a slot whose line ($E2+X) is zero, or whose behaviour ($B2+X) is zero or negative, is skipped. The behaviour's routine comes from $077D and is written into the JSR at $0FA6; for behaviours from $24 on it first points $13/$14 at the enemy's record (from $E82E by $63+X) and copies the record's byte 7 into $C2+X, inverted when $C2+X was negative so that its bit 7 is kept. Then counts $0FB9 down from 2."
  },
  {
   "address": 4007,
   "type": "line",
   "text": "The low byte of the operand of the JSR at $0FA6, rewritten by $0F7F before it runs."
  },
  {
   "address": 4008,
   "type": "line",
   "text": "The high byte of the operand of the JSR at $0FA6, rewritten by $0F85 before it runs."
  },
  {
   "address": 4025,
   "type": "line",
   "text": "Counts 2, 1, 0 across passes; $0F61 only steps frames when it is 0."
  },
  {
   "address": 4026,
   "type": "line",
   "text": "Copies a zero-terminated string from ($21) to ($13) as screen codes: letters ($40 and up) less $40, digits less $30, anything else becomes 0 (a space in the panel's set)."
  },
  {
   "address": 4055,
   "type": "line",
   "text": "Unused: nothing calls or jumps here. Counts the record's byte $0E and moves the object one pixel left or right by it, then runs on into $1000; the patrol of an enemy type the game no longer has."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "Counts a record's timer at ($13),Y down by one; when it runs out, reloads it from the next byte and flips the direction byte at +$0E. Only the self-modified JSR at $10C4 names this address: that JSR's operand is replaced before every call, so this routine is the operand left in the file and is never called through it."
  },
  {
   "address": 4120,
   "type": "line",
   "text": "Checks the player against every other object once a pass, unless the arc flag $0CD1 or the dying flag $1123 is set. Walks the multiplexer's sorted list at $7F-$8E (read as $FF8F,X with X from $F0 to $FF, an address that wraps past $FFFF) to the objects whose line lies between $5D and $7A, skips objects 0-2, and keeps those within $2D pixels to the right of the player's x less $19 on the same side of x 256. An object with type 0 ($AF+n) is an enemy: touching it hurts through $11FD, unless the player is already hurt this pass ($127F), while $E6C7 is set, or in the middle of a move ($369F between 1 and $1D). Any other type is a pickup or hazard, whose routine $10CE names and $10C4 calls."
  },
  {
   "address": 4183,
   "type": "line",
   "text": "The low byte of the operand of the CMP at $1056, rewritten by $1045 before it runs."
  },
  {
   "address": 4204,
   "type": "line",
   "text": "The low byte of the operand of the CMP at $106B, rewritten by $104B before it runs."
  },
  {
   "address": 4293,
   "type": "line",
   "text": "The low byte of the operand of the JSR at $10C4, rewritten by $10BB before it runs."
  },
  {
   "address": 4294,
   "type": "line",
   "text": "The high byte of the operand of the JSR at $10C4, rewritten by $10C1 before it runs."
  },
  {
   "address": 4302,
   "type": "line",
   "text": "27 words by object type ($AF+n, even): what touching an object does. Type 2 $116E, 4 $11B8, 6 $1151, 8 $1194, $0A $11E1, $12-$22 $1105 (a hazard); the rest $0760, nothing."
  },
  {
   "address": 4303,
   "type": "line",
   "text": "The high bytes of contact_handlers's two-byte entries, which $10BE reads through $10CF, indexed."
  },
  {
   "address": 4356,
   "type": "line",
   "text": "Passes left in which a hazard ($1105) cannot hurt again: set to $B4 (180) on each hit; counted down at $3678."
  },
  {
   "address": 4357,
   "type": "line",
   "text": "Type $12-$22, a hazard: removes the object and, unless $1104 is still counting, takes 10 from the energy $F373, redraws the bar and starts the 180-pass cooldown. Energy that would go below zero makes the player die instead ($1124)."
  },
  {
   "address": 4387,
   "type": "line",
   "text": "1 while the player is dying: set by $1124 when the energy runs out, which also stops the collision checks and the controls."
  },
  {
   "address": 4388,
   "type": "line",
   "text": "Out of energy: sets $1123 and gives the player the falling frame $62 (or $76 when $5C is 0, facing the other way)."
  },
  {
   "address": 4411,
   "type": "line",
   "text": "Unused: nothing calls it. A version of the hazard at $1105 that takes 5 energy instead of 10, with the same 180-pass cooldown."
  },
  {
   "address": 4433,
   "type": "line",
   "text": "Type 6: removes the object, adds a life to $373C, redraws the lives ($F3F0) and plays sound 4."
  },
  {
   "address": 4462,
   "type": "line",
   "text": "Type 2: removes the object and adds one, in decimal, to $F359, redrawn by $F35B (the count beside the bullet icon); sound 7."
  },
  {
   "address": 4499,
   "type": "line",
   "text": "0, 3 or 6: raised by 3 at each type 8 pickup ($1194), never to 9. The player's shooting code ($1E5E onward) adds it to its frame numbers."
  },
  {
   "address": 4500,
   "type": "line",
   "text": "Type 8: removes the object and raises $1193 by 3 unless it would reach 9; sound 5."
  },
  {
   "address": 4536,
   "type": "line",
   "text": "Type 4: removes the object and adds $10 to the energy $F373, at most $40; sound 3."
  },
  {
   "address": 4577,
   "type": "line",
   "text": "Type $0A: removes the object and scores entry 0 of the table at $F202 (400 points); sound 6."
  },
  {
   "address": 4605,
   "type": "line",
   "text": "The player has walked into an enemy: sets $127F, pushes the player one pixel away from it (left when the enemy's $60+n is 1, right when 2), sets the facing byte $BF to 6 or 9 ($FFF1 decides which), puts the player $13 lines above the enemy's $DF+n, and if his animation pointer $4A/$4B is at $24F6 or $24F9 switches it to $24AA (or $24BD when $5C is 0)."
  },
  {
   "address": 4735,
   "type": "line",
   "text": "Set when $11FD pushes the player back; cleared at the top of $1018 every pass."
  },
  {
   "address": 4736,
   "type": "line",
   "text": "Counted up by the interrupt at $12F4, once a frame."
  },
  {
   "address": 4737,
   "type": "line",
   "text": "Raster interrupt at the bottom of the play area: turns on extended colour mode and the 25-row screen with fine scroll 7, moves all eight sprites to 0,0 so none show over the panel, clears the horizontal fine scroll and points $D018 at the panel's characters, then sets $12F4 for line $C6."
  },
  {
   "address": 4852,
   "type": "line",
   "text": "Raster interrupt at line $C6: counts $1280 up, sets $132B for line $CA, waits 16 NOPs and sets $D011 to fine scroll 1 with extended colour off."
  },
  {
   "address": 4907,
   "type": "line",
   "text": "Raster interrupt at line $CA: after a short delay blanks the 24/25-row bits of $D011 (opening the lower border), sets the panel's two background colours ($06 blue, $0E light blue), sets $136F for line 0 and calls the sound update $F88F."
  },
  {
   "address": 4975,
   "type": "line",
   "text": "Raster interrupt at line 0: turns all sprites on, sets the level's colours from $FD99-$FD9C, the play screen's $D018 from $43, horizontal scroll from $41 and vertical scroll from $42, and sets $E1AC (the sprite interrupt) for the line in $F313."
  },
  {
   "address": 5062,
   "type": "line",
   "text": "Draws the visible window of the level from scratch onto both screens at $4000 and $4400, 18 rows of 40 characters, with each character's colour from the level's table at $FD9D into colour RAM. The map address is $7D80's row table at $170B (by the camera's y in $29/$2A, in 8-line rows) plus the camera's x in $27/$28 less $18, in 8-pixel columns. Then draws the panel: score, ammo, energy, lives and the $E915 bar."
  },
  {
   "address": 5300,
   "type": "line",
   "text": "Set to $FF with $14B5 when a life starts ($19A0); written and read by the scroll and attack code ($2575, $26FC-$2716)."
  },
  {
   "address": 5301,
   "type": "line",
   "text": "The direction the screen is scrolling, twice the direction number (0 up, 2 up-right, and so on clockwise to $0E up-left), or $FF when it is still. Times 8, plus twice the fine-scroll step, it indexes the scroll tables at $178F, $188F and $28ED."
  },
  {
   "address": 5302,
   "type": "line",
   "text": "The half of the double buffer being drawn: $10 or 0, from bit 4 of $43 after $1584 flips it."
  },
  {
   "address": 5303,
   "type": "line",
   "text": "Scratch: twice the scroll step in $1529."
  },
  {
   "address": 5304,
   "type": "line",
   "text": "Twice the scroll step, kept by $1529 for the table index. The seven bytes after it are not read by the scroll code."
  },
  {
   "address": 5312,
   "type": "line",
   "text": "Paired with $14C1: per-direction steps read by $2766."
  },
  {
   "address": 5313,
   "type": "line",
   "text": "A table of 16 bytes read by $276D, one per direction and step: 0, 1 or $FF, how the camera's x moves."
  },
  {
   "address": 5328,
   "type": "line",
   "text": "Paired with $14D1: per-direction steps read by $2775."
  },
  {
   "address": 5329,
   "type": "line",
   "text": "A table of 16 bytes read by $277C, one per direction and step: 0, 1 or $FF, how the camera's y moves."
  },
  {
   "address": 5345,
   "type": "line",
   "text": "One pass of the 8-way scroller. When nothing scrolls ($14B5 negative) it just runs the objects ($0F70), the player's animation ($1A85), the timers ($3678) and the sprite sort ($F2B3). Otherwise it sets the fine scroll bytes $41 and $42 from the camera's position ($27 and $29, inverted in their low three bits), picks this pass's routine from the table at $178F by direction, buffer half and fine-scroll step, and calls it through the JSR at $1569 (each copies one slice of the screen into the hidden buffer); when the step is the one the table at $28ED marks, it flips the shown screen (bit 4 of $43) and calls the edge-drawing routine from $188F through the JSR at $1584. A $FF entry stops the scroll ($14B5=$FF, $3755)."
  },
  {
   "address": 5482,
   "type": "line",
   "text": "The low byte of the operand of the JSR at $1569, rewritten by $1566 before it runs."
  },
  {
   "address": 5483,
   "type": "line",
   "text": "The high byte of the operand of the JSR at $1569, rewritten by $1560 before it runs."
  },
  {
   "address": 5509,
   "type": "line",
   "text": "The low byte of the operand of the JSR at $1584, rewritten by $153E before it runs."
  },
  {
   "address": 5510,
   "type": "line",
   "text": "The high byte of the operand of the JSR at $1584, rewritten by $1544 before it runs."
  },
  {
   "address": 5523,
   "type": "line",
   "text": "Works out, for the scroll direction, where the new edge comes from: the level map address of the top-left of the window ($170B row table by camera y, plus camera x less $18, in characters) into $34/$35 and $36/$37, offset by the direction's entries in $16EB and $16FB, and the screen row and column to draw into, $32 and $33, from $16DB/$16DC ($FF for none)."
  },
  {
   "address": 5652,
   "type": "line",
   "text": "Copies one row of 40 characters from the map at ($36) into the hidden screen: the top row ($4000 or $4400) when $32 is 0, the bottom row ($42A8 or $46A8) when it is $13. Does nothing when $32 is negative."
  },
  {
   "address": 5664,
   "type": "line",
   "text": "An RTS that nothing reaches: $161D jumps over it and $162F returns before it."
  },
  {
   "address": 5717,
   "type": "line",
   "text": "Copies one column of 19 characters from the map at ($34), 288 bytes a row, into column $33 of the hidden screen ($4000 or $4400 by $40). Does nothing when $33 is negative."
  },
  {
   "address": 5819,
   "type": "line",
   "text": "Eight two-byte entries read by $2755, one per direction: 3 or 4."
  },
  {
   "address": 5835,
   "type": "line",
   "text": "Eight two-byte entries read by $275E, one per direction: 4 or 3."
  },
  {
   "address": 5851,
   "type": "line",
   "text": "By direction, two bytes: the screen column the new edge is drawn into (0 or $27, or $FF) and the row (0 or $13, or $FF), read by $1593."
  },
  {
   "address": 5852,
   "type": "line",
   "text": "The high bytes of edge_columns's two-byte entries, which $15E3 reads through $16DC, indexed."
  },
  {
   "address": 5867,
   "type": "line",
   "text": "By direction, a 16-bit offset added to the map address for the edge column, read by $1593."
  },
  {
   "address": 5868,
   "type": "line",
   "text": "The high bytes of edge_offset_a's two-byte entries, which $15FF reads through $16EC, indexed."
  },
  {
   "address": 5883,
   "type": "line",
   "text": "By direction, a 16-bit offset added to the map address for the edge row, read by $1593."
  },
  {
   "address": 5884,
   "type": "line",
   "text": "The high bytes of edge_offset_b's two-byte entries, which $160E reads through $16FC, indexed."
  },
  {
   "address": 5899,
   "type": "line",
   "text": "66 row addresses in the level's character map: $7D80 + 288 per row, which $13C6 and $1593 index by the camera's y."
  },
  {
   "address": 5900,
   "type": "line",
   "text": "The high bytes of map_rows's two-byte entries, which $1428, $15D7 read through $170C, indexed."
  },
  {
   "address": 6031,
   "type": "line",
   "text": "128 routine addresses, the scroll's work for each pass: by direction (8), buffer half (2) and fine-scroll step (8). $0760 does nothing, $FFFF ends the scroll, $373E and $3751 are called at the ends of each run, and the rest ($29ED-$3374) are the copying routines, one slice of the screen each."
  },
  {
   "address": 6032,
   "type": "line",
   "text": "The high bytes of scroll_slices's two-byte entries, which $1559 reads through $1790, indexed."
  },
  {
   "address": 6287,
   "type": "line",
   "text": "64 routine addresses, eight for each direction, for the JSR at $1584 when the screen flips: up $2B3F, up-right $3405, right $355B, down-right $3393, down $2BAE, down-left $34E9, left $35D0, up-left $3477 (one per step, all the same in each direction, except the last entry, $2B3F). Each shifts colour RAM to match and draws the colours of the new edge."
  },
  {
   "address": 6288,
   "type": "line",
   "text": "The high bytes of scroll_flip_jobs's two-byte entries, which $1541 reads through $1890, indexed."
  },
  {
   "address": 6415,
   "type": "line",
   "text": "The count of tile columns left for $0673, from 144."
  },
  {
   "address": 6416,
   "type": "line",
   "text": "The player's x at the start of the pass, copied from $EF by $1912."
  },
  {
   "address": 6417,
   "type": "line",
   "text": "The player's facing and x high byte ($BF) at the start of the pass."
  },
  {
   "address": 6418,
   "type": "line",
   "text": "The player's part of the main loop: saves his position and the camera's, then, while alive, reads the controls and moves him ($21A1), keeps the camera with him ($F314), runs his attacks ($2493) and the scroll ($2570). While dying ($1123 non-zero) he falls along the arc at $0CE1, one step a pass and a pixel sideways, until he is below line $B6; then the screen is blanked and the life is over: a life is taken from $373C (the game ends at $F49E when there are none), energy is refilled to $40, the player and camera go back to the checkpoint in $2835-$283B, the screen is redrawn, every object goes back to where the level put it (from the list at $FE9D into the records at $3970), and play restarts at the main loop."
  },
  {
   "address": 6789,
   "type": "line",
   "text": "Steps the player's animation: reads the next frame from the script at ($4A),$4C into $CF. A $FF ends the script, a $FE loops it to the start; frames $53 and $67 also clear $1EAE."
  },
  {
   "address": 6829,
   "type": "line",
   "text": "Read and written by $1DDC."
  },
  {
   "address": 6830,
   "type": "line",
   "text": "The stage being played, an even number: 0 L1A, 2 L1AX, 4 L1B, 6 L2A, 8 L2AX, $0A L2B, $0C L3A, $0E L3AX, $10 L3B, $12 L4A, $14 L4AX, $16 L4B, $18 L5A, $1A L5AX, $1C L5B. It picks the overlay's name at $1AD1 and the property block at $1AAF, and several routines treat stages $10, $16 and $1C specially. No exit in any overlay on this disk leads to stage $14, and the disk holds no L4AX file."
  },
  {
   "address": 6831,
   "type": "line",
   "text": "Fifteen addresses, by stage, of the stage's 256-byte block in the unpacked COL0 file ($5000-$5900); $1B28 copies the block to $FC95."
  },
  {
   "address": 6832,
   "type": "line",
   "text": "The high bytes of stage_blocks's two-byte entries, which $1B56 reads through $1AB0, indexed."
  },
  {
   "address": 6861,
   "type": "line",
   "text": "\"COL0\", then the overlay file of each stage, four letters each: L1A0, L1AX, L1B0, L2A0, L2AX, L2B0, L3A0, L3AX, L3B0, L4A0, L4AX, L4B0, L5A0, L5AX, L5B0."
  },
  {
   "address": 6925,
   "type": "line",
   "text": "Loads the stage's overlay file (its name from $1AD1 by the stage) to $3790. The overlay holds the stage's animation table, enemy records and the names of its other files."
  },
  {
   "address": 6952,
   "type": "line",
   "text": "Loads everything else for the stage. Except on the \"X\" stages (2, 8, $0E, $14, $1A), which carry on from the stage before, resets the clock to 5:00. Loads COL0 at $8000, unpacks it to $5000 ($F5D5) and copies the stage's 256 bytes to $FC95. Then the four files the overlay names at $37E4: the map (loaded at $4200, unpacked to $7D80 and moved to $4400-$67FF), the tiles (.BLK at $4000), which $0673 then builds into the level, the colours (.ATT at $FD96, whose first four bytes it puts in the border and background registers) and the characters (.CHR, unpacked from $5000 to $4800). Then each sprite file the overlay lists from $383C, six bytes each (name, address) until a negative byte, Murtaugh's sprites (SP0Z) in place of Riggs's (SP00) when $FFF1 is 0. Then the panel files PAN2, PAN1 and PAN0, clears the panel row and a sprite, and builds the respawn list at $FE9D from the overlay's object records ($3970, 19 bytes each, until one whose byte 1 is negative): three bytes each, from the record's bytes $11, 6 and 4."
  },
  {
   "address": 7589,
   "type": "line",
   "text": "The end of the respawn list at $FE9D, low byte, set by $1B28."
  },
  {
   "address": 7590,
   "type": "line",
   "text": "The end of the respawn list, high byte."
  },
  {
   "address": 7591,
   "type": "line",
   "text": "\"PAN0\", \"PAN1\", \"PAN2\": the panel's files, loaded by $1B28."
  },
  {
   "address": 7603,
   "type": "line",
   "text": "The fire button. With no rounds in the gun ($E914) and no spare magazines ($F359) it only plays sound $0E on voice 0, an empty click. Otherwise, unless $2411 is set, it fires on the press only (bit 4 of $F355, the previous state kept in $1AAD): finds a free bullet, object 1 or 2 (line $E0/$E1 zero), starts it 3 lines above the player and 22 pixels ahead of him, with a muzzle count of 2 ($72+n), his facing ($5C into $1EAF) and frame $77 or $80 by that facing, plus the weapon level $1193. Takes a round from $E914; when the gun is empty a magazine is taken from $F359 and the gun refilled with 6. Standing, the player takes the shooting pose ($24FC or $24FF); while jumping ($369F) he keeps his move. Redraws the rounds ($E915) and magazines ($F35B)."
  },
  {
   "address": 7854,
   "type": "line",
   "text": "1 while the player's shooting pose runs, from $1DB3; cleared when his animation reaches frame $53 or $67 ($1A85); read by $25E5."
  },
  {
   "address": 7855,
   "type": "line",
   "text": "For bullets 1 and 2, the player's facing ($5C) when fired: below 8 the bullet flies right."
  },
  {
   "address": 7857,
   "type": "line",
   "text": "Moves the player's two bullets (objects 1 and 2) that are in flight."
  },
  {
   "address": 7878,
   "type": "line",
   "text": "One bullet's pass: while its muzzle count ($72+n) runs, steps its frame and plays sound $0E on voice 0; then moves it 6 pixels a pass, right or left by $1EAF, removes it past x $140 or before x $0C, and checks it against the enemies ($1F37)."
  },
  {
   "address": 7991,
   "type": "line",
   "text": "Checks one bullet against the objects in the sprite sort's order (the list at $7F, read as $FF8F,X with X from $F0, which wraps past $FFFF) whose line is within 8 above and 14 below the bullet's (the compare operands at $1F71 and $1F86 are written first), on the same side of x 256 and within $22 pixels right of the bullet's x less $0A, and whose type ($AF+n) is $26 or more, an enemy. Takes the damage for the weapon level ($285C) from the enemy's record byte $11. If it survives: knocks it back (sets its facing), skips its frame on to the end of its present sequence, removes the bullet, scores 300 and plays sound $0B on voice 2. Does nothing while $0CD1 is set."
  },
  {
   "address": 8049,
   "type": "line",
   "text": "The low line limit, written by $1F5C (the bullet's line less 8) as the operand of this CMP."
  },
  {
   "address": 8070,
   "type": "line",
   "text": "The high line limit, written by $1F62 (the bullet's line plus 14) as the operand of this CMP."
  },
  {
   "address": 8272,
   "type": "line",
   "text": "The bullet killed the enemy. A type $32 or $34 enemy (a boss in two objects: both are found) turns into frames $F7 and $F8 as an arcing body (behaviour $24) and scores 1000 with sound 8; any other turns into the dying frame from $E961 by its type (or $E953 when its record's byte $0D is set), behaviour $24, scoring 400 with sound 9. Both remove the bullet."
  },
  {
   "address": 8431,
   "type": "line",
   "text": "Runs a jump or a fall step by step. $369F is the step (even, 0 when standing); a jump starts when up is pressed (bit 3 of $F355). Each step adds that step's line change to the player's line from $36A0 (Murtaugh, $FFF1=0) or $36E2 (Riggs), unless the result would be above line $14; a change of facing during it plays sound 2 and sets the jump pose ($24F6, or $24F9 facing left). After 15 steps it looks at the character under his feet ($FC95 flags): solid (bit 7) ends the jump, and a ladder ($40) sets $2411 to $10. A $7F step ends it too."
  },
  {
   "address": 8608,
   "type": "line",
   "text": "Set to 1 while the player falls ($234C); read by $25DB and $268D."
  },
  {
   "address": 8609,
   "type": "line",
   "text": "Reads the play area under and around the player and decides what he can do. Finds the screen row of his feet (his line less the vertical fine scroll, from the row table $2415 or $2451 for the shown screen) and his column (x less the horizontal fine scroll), and looks the character there up in the stage's property table at $FC95. Bit 0 (a wall) starts the walking script $254F (or $2542, by facing) and sets $2411. Otherwise at his middle: bit 6 (a ladder) gives the climbing frames $89-$8C, and with up held sets $2411; bit 1 (a door) with up held, and no lift ($E000) or arc ($28A4) busy, searches the stage's exit list at $3790 for the player's place and goes through it ($2388). Then one row lower: a solid character (bit 7) keeps him standing, or on a ladder with up held climbing; anything else and he falls ($234C). While jumping it hands over to $20EF."
  },
  {
   "address": 8907,
   "type": "line",
   "text": "Walks the stage's exit list, 14 bytes an entry from $3790, comparing each entry's position with the player's (written first into the compare operands at $22CE, $22D3, $22DC and $22E1); the first entry that matches is the door taken."
  },
  {
   "address": 8910,
   "type": "line",
   "text": "The exit's x to match, written by $22AB."
  },
  {
   "address": 8915,
   "type": "line",
   "text": "The x high byte to match, written by $22B7."
  },
  {
   "address": 8924,
   "type": "line",
   "text": "The line to match, written by $22C1 (masked to 0)."
  },
  {
   "address": 8929,
   "type": "line",
   "text": "The line's high byte to match, written by $22C8."
  },
  {
   "address": 8951,
   "type": "line",
   "text": "PLA, TAY: two instructions after the JMP at $22F4 that nothing reaches, perhaps left from an earlier version of the exit search."
  },
  {
   "address": 9036,
   "type": "line",
   "text": "Nothing solid under the player: he falls 2 lines a pass in the pose at $24F6 or $24F9 and sets $21A0; at line $AC he has fallen off the bottom and loses a life ($1974)."
  },
  {
   "address": 9090,
   "type": "line",
   "text": "Unused: nothing calls it. Sets the background colour to red (2) and returns."
  },
  {
   "address": 9096,
   "type": "line",
   "text": "Takes the door: silences the sound, empties every object, wipes the screen ($ED5A), and reads the exit's entry: a negative stage number ends the game in triumph ($375C); otherwise the new stage, camera x and y, player x, facing and line, which are also kept as the checkpoint in $2835-$283B. Loads the overlay ($1B0D) and the stage ($1B28), draws it and restarts the main loop."
  },
  {
   "address": 9233,
   "type": "line",
   "text": "While set ($10 or $20) the player is held by a wall or ladder: the fire button is ignored and $21A1 returns early."
  },
  {
   "address": 9234,
   "type": "line",
   "text": "The step in the short table at $2413, while the player falls."
  },
  {
   "address": 9235,
   "type": "line",
   "text": "Two bytes, 2 and $FF, read by the fall at $2379."
  },
  {
   "address": 9237,
   "type": "line",
   "text": "30 addresses of screen rows in the screen at $4000 (from $3F5E, one row above it, 40 bytes apart), by the player's row, used when $14B6 is 0."
  },
  {
   "address": 9238,
   "type": "line",
   "text": "The high bytes of screen_rows_a's two-byte entries, which $21CB, $2630 read through $2416, indexed."
  },
  {
   "address": 9297,
   "type": "line",
   "text": "The same 30 row addresses in the screen at $4400 (from $435E), used when $14B6 is $10."
  },
  {
   "address": 9298,
   "type": "line",
   "text": "The high bytes of screen_rows_b's two-byte entries, which $21D7, $263C read through $2452, indexed."
  },
  {
   "address": 9357,
   "type": "line",
   "text": "Flashes the border forever. $03C3 jumps here when asked to load a name that starts with \"$\", the disk's directory."
  },
  {
   "address": 9363,
   "type": "line",
   "text": "Looks up the joystick bits in $F355 (fire masked off) in the pairs at $2813 and returns the action byte that follows the match."
  },
  {
   "address": 9386,
   "type": "line",
   "text": "The player's animation scripts, read by $1A85: frame numbers, each script ending $FF (stop) or $FE (go round again). $24AA and $24BD are the knock-back poses, $24F6 and $24F9 the jumping and falling poses, $24FC and $24FF the shooting poses, with $24D0 and $24E3 between."
  },
  {
   "address": 9474,
   "type": "line",
   "text": "Paired with $2503: a table of words read by $260F, one per joystick action."
  },
  {
   "address": 9475,
   "type": "line",
   "text": "The animation script to start for each joystick action, read by $25FF ($24BD, $24AA, $255C, $254F, $2542, or 0 for none)."
  },
  {
   "address": 9522,
   "type": "line",
   "text": "Paired with $2533: a second table of scripts by action, read by $25F7."
  },
  {
   "address": 9523,
   "type": "line",
   "text": "Scripts by action for $25F0 ($24E3 and $24D0)."
  },
  {
   "address": 9538,
   "type": "line",
   "text": "Walking and climbing scripts: frames $4F-$52 three passes each ($2542) and $63-$66 ($254F), one for each facing, then the climbing frames $89-$8C ($255C), each ending $FE."
  },
  {
   "address": 9584,
   "type": "line",
   "text": "Moves the player by the joystick's direction (A, from $2493, plus $2411 for a wall or ladder): sideways by $296D and up or down by $29AD, keeping him between x $20 and $135 (else he goes back to $1910) and out of characters whose property bit 5 is set ($FC95). Starts the walking script for the direction from $2502/$2503 (or, in the shooting pose, $2532/$2533). Then decides whether to scroll: near the left or right of the window (x below $8C or from $C8) and with the camera inside the level (x from $20 to $7CC), or near the top or bottom (line below $5A, or from $66, with camera y from $2B to $1A3), it turns the wanted directions into one through $2813 into $14B4. When a scroll starts it aligns the camera to the step table $16BB/$16CB; each pass the camera moves by $14C0/$14D0, and every object is moved the other way by the same amount (the operands at $27A5 and $27DE are written first): an object that leaves the area (line below $15 or from $C0, x out of range) is removed and its record's byte 5 cleared, so it can appear again. Ends with the scroll's pass, $14E1."
  },
  {
   "address": 10024,
   "type": "line",
   "text": "The camera's y at the start of the pass, from $29; $2784 subtracts it to find how far the camera moved."
  },
  {
   "address": 10025,
   "type": "line",
   "text": "The camera's x at the start of the pass, from $27."
  },
  {
   "address": 10062,
   "type": "line",
   "text": "A scroll starts in direction Y: snaps the camera's fine position to the direction's starting step ($16BB, $16CB) before it moves."
  },
  {
   "address": 10149,
   "type": "line",
   "text": "The amount every object moves down this pass, written by $278C before the ADC that uses it."
  },
  {
   "address": 10206,
   "type": "line",
   "text": "The amount every object moves right this pass, written by $279C before the ADC that uses it."
  },
  {
   "address": 10259,
   "type": "line",
   "text": "Pairs of (bits, direction) for $2493 and $26F7: up $08 gives 0, up-right $09 2, right $01 4, down-right $05 6, down $04 8, down-left $06 $0A, left $02 $0C, up-left $0A $0E; none $00 gives $FF. The 16 bytes after the first nine pairs repeat them."
  },
  {
   "address": 10260,
   "type": "line",
   "text": "The high bytes of direction_pairs's two-byte entries, which $24A1, $270B read through $2814, indexed."
  },
  {
   "address": 10293,
   "type": "line",
   "text": "Where play restarts after a life is lost: camera x ($2835/$2836) and y ($2837/$2838), the player's x ($2839), facing ($283A) and line ($283B). Set at the start of the game and at each door."
  },
  {
   "address": 10294,
   "type": "line",
   "text": "The checkpoint's camera x, high byte."
  },
  {
   "address": 10295,
   "type": "line",
   "text": "The checkpoint's camera y, low byte."
  },
  {
   "address": 10296,
   "type": "line",
   "text": "The checkpoint's camera y, high byte."
  },
  {
   "address": 10297,
   "type": "line",
   "text": "The checkpoint's player x."
  },
  {
   "address": 10298,
   "type": "line",
   "text": "The checkpoint's player colour and facing byte ($BF)."
  },
  {
   "address": 10299,
   "type": "line",
   "text": "The checkpoint's player line."
  },
  {
   "address": 10300,
   "type": "line",
   "text": "25 line changes for an arc, read by $EBB6: 0 six times, -4 three times, -2 three times, -1 twice, 0 three times, +1 twice, +2 three times, +4 three times."
  },
  {
   "address": 10325,
   "type": "line",
   "text": "The player's frame, kept while $3678 shows the flicker frame $4E in its place."
  },
  {
   "address": 10326,
   "type": "line",
   "text": "Three bytes read and written by $EA27, $EA6F and $EBF4."
  },
  {
   "address": 10329,
   "type": "line",
   "text": "Scratch: the horizontal distance between two objects, in $1018 and $1F37."
  },
  {
   "address": 10331,
   "type": "line",
   "text": "Scratch: the bullet (0 or 1) that $1F37 is checking."
  },
  {
   "address": 10332,
   "type": "line",
   "text": "How much one bullet takes from an enemy, by the weapon level $1193 (0, 3 or 6): 1, 2 or 3."
  },
  {
   "address": 10341,
   "type": "line",
   "text": "2, read and written by $F50C and $F517 on the game-over screen."
  },
  {
   "address": 10342,
   "type": "line",
   "text": "The strings the game-over screen prints through $0FBA, each ending 0: \"  G A M E  \", \"  O V E R  \", two lines of eleven spaces (the first of which $F4C6 also uses to keep eleven bytes of colour RAM while the screen shows), and \" CONTINUE  \"."
  },
  {
   "address": 10366,
   "type": "line",
   "text": "Used twice: a string of eleven spaces printed by $F5C4 to clear a panel line, and, from $F4C6, the place where the game-over screen keeps eleven bytes of colour RAM ($DB55) to put back when play continues ($F5C9)."
  },
  {
   "address": 10402,
   "type": "line",
   "text": "The countdown of a thrown object ($085B); set by $08E2 and $0967."
  },
  {
   "address": 10404,
   "type": "line",
   "text": "Set while a lift, an arc or a scripted move is under way; doors and the scroll at the left edge wait for it to clear."
  },
  {
   "address": 10405,
   "type": "line",
   "text": "Behaviour $1E: rises 3 lines a pass and disappears above line $14."
  },
  {
   "address": 10419,
   "type": "line",
   "text": "Behaviour $20: rises 1 line and moves 3 pixels left a pass, disappearing above line $14."
  },
  {
   "address": 10448,
   "type": "line",
   "text": "Behaviour $22: rises 1 line and moves 3 pixels right a pass, disappearing above line $14."
  },
  {
   "address": 10477,
   "type": "line",
   "text": "By direction and step, as $178F is indexed: 1 where the scroll's pass flips the shown screen and runs the job from $188F."
  },
  {
   "address": 10605,
   "type": "line",
   "text": "The player's sideways step for each joystick action plus $2411: 0, 1 (right) or $FF (left)."
  },
  {
   "address": 10669,
   "type": "line",
   "text": "The player's step up or down for each action plus $2411: 0 except $FF and 1, the climbing steps."
  },
  {
   "address": 10733,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 0-4, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 10769,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 5-9, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 10805,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 10-14, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 10841,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4000 (2 rows of 39 characters, from column 1) to the screen at $4400, rows 15-16, from column 0: the picture moves 1 row(s) up and 1 column(s) left. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 10872,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4000 (3 rows of 39 characters, from column 1) to the screen at $4400, rows 15-17, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 10896,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 10-14, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 10932,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 5-9, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 10968,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4000 (4 rows of 39 characters, from column 1) to the screen at $4400, rows 1-4, from column 0: the picture moves 1 row(s) down and 1 column(s) left. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11011,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4000 (3 rows of 39 characters, from column 0) to the screen at $4400, rows 15-17, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 11035,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 10-14, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 11071,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 0-16 of colour RAM (17 rows of 40 characters, from column 0) to colour RAM, rows 1-17, from column 0: the picture moves 1 row(s) down. Also calls $F13C."
  },
  {
   "address": 11182,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 1-17 of colour RAM (17 rows of 40 characters, from column 0) to colour RAM, rows 0-16, from column 0: the picture moves 1 row(s) up. Also calls $F15E."
  },
  {
   "address": 11293,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 5-9, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 11329,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4000 (4 rows of 39 characters, from column 0) to the screen at $4400, rows 1-4, from column 1: the picture moves 1 row(s) down and 1 column(s) right. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11372,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 0-4, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 11408,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 5-9, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 11444,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 10-14, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 11480,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4000 (2 rows of 39 characters, from column 0) to the screen at $4400, rows 15-16, from column 1: the picture moves 1 row(s) up and 1 column(s) right. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11511,
   "type": "line",
   "text": "Scroll slice: copies rows 0-4 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 0-4, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 11547,
   "type": "line",
   "text": "Scroll slice: copies rows 5-9 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 5-9, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 11583,
   "type": "line",
   "text": "Scroll slice: copies rows 10-14 of the screen $4000 (5 rows of 39 characters, from column 1) to the screen at $4400, rows 10-14, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 11619,
   "type": "line",
   "text": "Scroll slice: copies rows 15-17 of the screen $4000 (3 rows of 39 characters, from column 1) to the screen at $4400, rows 15-17, from column 0: the picture moves 1 column(s) left. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11656,
   "type": "line",
   "text": "Scroll slice: copies rows 0-4 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 0-4, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 11692,
   "type": "line",
   "text": "Scroll slice: copies rows 5-9 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 5-9, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 11728,
   "type": "line",
   "text": "Scroll slice: copies rows 10-14 of the screen $4000 (5 rows of 39 characters, from column 0) to the screen at $4400, rows 10-14, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 11764,
   "type": "line",
   "text": "Scroll slice: copies rows 15-17 of the screen $4000 (3 rows of 39 characters, from column 0) to the screen at $4400, rows 15-17, from column 1: the picture moves 1 column(s) right. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11801,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4000 (3 rows of 40 characters, from column 0) to the screen at $4400, rows 15-17, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 11825,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4000 (5 rows of 40 characters, from column 0) to the screen at $4400, rows 10-14, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 11861,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4000 (5 rows of 40 characters, from column 0) to the screen at $4400, rows 5-9, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 11897,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4000 (4 rows of 40 characters, from column 0) to the screen at $4400, rows 1-4, from column 0: the picture moves 1 row(s) down. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 11940,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4000 (5 rows of 40 characters, from column 0) to the screen at $4400, rows 0-4, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 11976,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4000 (5 rows of 40 characters, from column 0) to the screen at $4400, rows 5-9, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 12012,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4000 (5 rows of 40 characters, from column 0) to the screen at $4400, rows 10-14, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 12048,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4000 (2 rows of 40 characters, from column 0) to the screen at $4400, rows 15-16, from column 0: the picture moves 1 row(s) up. Then draws the new edge row and column into the screen $4400 ($1593, $1614, $1655)."
  },
  {
   "address": 12079,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 0-4, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 12095,
   "type": "line",
   "text": "The second half of the scroll slices from $2F2F (see each slice's own comment)."
  },
  {
   "address": 12115,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 5-9, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 12151,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 10-14, from column 0: the picture moves 1 row(s) up and 1 column(s) left."
  },
  {
   "address": 12187,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4400 (2 rows of 39 characters, from column 1) to the screen at $4000, rows 15-16, from column 0: the picture moves 1 row(s) up and 1 column(s) left. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12218,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4400 (3 rows of 39 characters, from column 1) to the screen at $4000, rows 15-17, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 12242,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 10-14, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 12278,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 5-9, from column 0: the picture moves 1 row(s) down and 1 column(s) left."
  },
  {
   "address": 12314,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4400 (4 rows of 39 characters, from column 1) to the screen at $4000, rows 1-4, from column 0: the picture moves 1 row(s) down and 1 column(s) left. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12357,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4400 (3 rows of 39 characters, from column 0) to the screen at $4000, rows 15-17, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 12381,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 10-14, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 12417,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 5-9, from column 1: the picture moves 1 row(s) down and 1 column(s) right."
  },
  {
   "address": 12453,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4400 (4 rows of 39 characters, from column 0) to the screen at $4000, rows 1-4, from column 1: the picture moves 1 row(s) down and 1 column(s) right. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12496,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 0-4, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 12532,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 5-9, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 12568,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 10-14, from column 1: the picture moves 1 row(s) up and 1 column(s) right."
  },
  {
   "address": 12604,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4400 (2 rows of 39 characters, from column 0) to the screen at $4000, rows 15-16, from column 1: the picture moves 1 row(s) up and 1 column(s) right. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12635,
   "type": "line",
   "text": "Scroll slice: copies rows 0-4 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 0-4, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 12671,
   "type": "line",
   "text": "Scroll slice: copies rows 5-9 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 5-9, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 12707,
   "type": "line",
   "text": "Scroll slice: copies rows 10-14 of the screen $4400 (5 rows of 39 characters, from column 1) to the screen at $4000, rows 10-14, from column 0: the picture moves 1 column(s) left."
  },
  {
   "address": 12743,
   "type": "line",
   "text": "Scroll slice: copies rows 15-17 of the screen $4400 (3 rows of 39 characters, from column 1) to the screen at $4000, rows 15-17, from column 0: the picture moves 1 column(s) left. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12780,
   "type": "line",
   "text": "Scroll slice: copies rows 0-4 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 0-4, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 12816,
   "type": "line",
   "text": "Scroll slice: copies rows 5-9 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 5-9, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 12852,
   "type": "line",
   "text": "Scroll slice: copies rows 10-14 of the screen $4400 (5 rows of 39 characters, from column 0) to the screen at $4000, rows 10-14, from column 1: the picture moves 1 column(s) right."
  },
  {
   "address": 12888,
   "type": "line",
   "text": "Scroll slice: copies rows 15-17 of the screen $4400 (3 rows of 39 characters, from column 0) to the screen at $4000, rows 15-17, from column 1: the picture moves 1 column(s) right. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 12925,
   "type": "line",
   "text": "Scroll slice: copies rows 14-16 of the screen $4400 (3 rows of 40 characters, from column 0) to the screen at $4000, rows 15-17, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 12949,
   "type": "line",
   "text": "Scroll slice: copies rows 9-13 of the screen $4400 (5 rows of 40 characters, from column 0) to the screen at $4000, rows 10-14, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 12985,
   "type": "line",
   "text": "Scroll slice: copies rows 4-8 of the screen $4400 (5 rows of 40 characters, from column 0) to the screen at $4000, rows 5-9, from column 0: the picture moves 1 row(s) down."
  },
  {
   "address": 13021,
   "type": "line",
   "text": "Scroll slice: copies rows 0-3 of the screen $4400 (4 rows of 40 characters, from column 0) to the screen at $4000, rows 1-4, from column 0: the picture moves 1 row(s) down. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 13064,
   "type": "line",
   "text": "Scroll slice: copies rows 1-5 of the screen $4400 (5 rows of 40 characters, from column 0) to the screen at $4000, rows 0-4, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 13100,
   "type": "line",
   "text": "Scroll slice: copies rows 6-10 of the screen $4400 (5 rows of 40 characters, from column 0) to the screen at $4000, rows 5-9, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 13136,
   "type": "line",
   "text": "Scroll slice: copies rows 11-15 of the screen $4400 (5 rows of 40 characters, from column 0) to the screen at $4000, rows 10-14, from column 0: the picture moves 1 row(s) up."
  },
  {
   "address": 13172,
   "type": "line",
   "text": "Scroll slice: copies rows 16-17 of the screen $4400 (2 rows of 40 characters, from column 0) to the screen at $4000, rows 15-16, from column 0: the picture moves 1 row(s) up. Then draws the new edge row and column into the screen $4000 ($1593, $1614, $1655)."
  },
  {
   "address": 13203,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 1-17 of colour RAM (17 rows of 39 characters, from column 1) to colour RAM, rows 0-16, from column 0: the picture moves 1 row(s) up and 1 column(s) left. Also calls $F15E, $EEA2."
  },
  {
   "address": 13317,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 0-16 of colour RAM (17 rows of 39 characters, from column 1) to colour RAM, rows 1-17, from column 0: the picture moves 1 row(s) down and 1 column(s) left. Also calls $F13C, $EEA2."
  },
  {
   "address": 13431,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 0-16 of colour RAM (17 rows of 39 characters, from column 0) to rows 1-17 from column 1: the picture moves 1 row down and 1 column right. Then draws the new right-hand column's and top row's colours ($EFEF, $F13C)."
  },
  {
   "address": 13545,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 1-17 of colour RAM (17 rows of 39 characters, from column 0) to colour RAM, rows 0-16, from column 1: the picture moves 1 row(s) up and 1 column(s) right. Also calls $F15E, $EFEF."
  },
  {
   "address": 13659,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 0-17 of colour RAM (18 rows of 39 characters, from column 1) to colour RAM, rows 0-17, from column 0: the picture moves 1 column(s) left. Also calls $EEA2."
  },
  {
   "address": 13776,
   "type": "line",
   "text": "Screen flip, colour RAM: copies rows 0-17 of colour RAM (18 rows of 39 characters, from column 0) to colour RAM, rows 0-17, from column 1: the picture moves 1 column(s) right. Also calls $EFEF."
  },
  {
   "address": 13893,
   "type": "line",
   "text": "Colours the panel's five rows (screen rows 18-22 at $42D0) by looking each character up in the panel's colour table at $500F and writing it into colour RAM at $DAD0."
  },
  {
   "address": 13944,
   "type": "line",
   "text": "While the hazard cooldown $1104 runs, counts it down and makes the player flicker: on odd passes his frame becomes $4E (blank), kept in $2855 and put back on even ones. When it reaches 1, clears $E000."
  },
  {
   "address": 13983,
   "type": "line",
   "text": "The step of the player's jump or fall, an even index into $36A0 or $36E2; 0 when he is on the ground."
  },
  {
   "address": 13984,
   "type": "line",
   "text": "Murtaugh's jump ($FFF1=0), one line change a step, two bytes each with the high byte unread: -4 seven times, -2 four times, -1 four times, 0 twice, +1 four times, +2 four times, +4 seven times, then $7F to end. 32 steps, rising 40 lines and coming back down."
  },
  {
   "address": 14050,
   "type": "line",
   "text": "Riggs's jump ($FFF1=1): -4 five times, -2 seven times, -1 six times, 0 four times, +1 six times, +2 seven times, +4 five times, then $7F. 40 steps to the same 40 lines, so Riggs's jump is slower than Murtaugh's and no higher."
  },
  {
   "address": 14132,
   "type": "line",
   "text": "Eight bytes read by $F3C0, which draws the lives: the bit patterns $80, $C0, $E0, $E0, $E8, $E8, $EE, $EE."
  },
  {
   "address": 14140,
   "type": "line",
   "text": "Lives left: 3 at the start ($ED51), one more for each life pickup, one fewer at each death; when none is left the next death ends the game ($F49E)."
  },
  {
   "address": 14142,
   "type": "line",
   "text": "Starts the sprite multiplexer's object list at $3970 (the stage's records) and calls $E480."
  },
  {
   "address": 14161,
   "type": "line",
   "text": "Calls $E480 (named in the $178F table)."
  },
  {
   "address": 14165,
   "type": "line",
   "text": "Calls $E480 when the scroll stops."
  },
  {
   "address": 14169,
   "type": "line",
   "text": "\"111\", the file of the ending."
  },
  {
   "address": 14172,
   "type": "line",
   "text": "The last door: loads \"111\" to $0900, over the first enemy behaviours, with $32 set to the character played ($FFF1), and jumps to $0900."
  },
  {
   "address": 14199,
   "type": "line",
   "text": "Bytes read and written by $E480, $E4E6 and $E550 (the sprite sort)."
  },
  {
   "address": 14224,
   "type": "line",
   "text": "Stage 1A's overlay (file L1A0), loaded here by $1B0D, starts with its doors: six entries of 14 bytes, searched by $22CB. Bytes 1-3 are the place to match, byte 4 the stage it leads to (negative for the ending), then camera x and y, the player's x, his facing and his line there. Here: five doors to stage 2 (L1AX) and one to stage 4 (L1B). Every overlay has these six entries; later stages keep copies of 1A's that lead to stage 2."
  },
  {
   "address": 14308,
   "type": "line",
   "text": "The names of the stage's four files, sixteen characters each with spaces: \"L1A .BLK\" (tiles), \".MAP\", \".ATT\" (colours) and \".CHR\" (characters), loaded by $1B28 from here, $37F4, $3804 and $3814."
  },
  {
   "address": 14372,
   "type": "line",
   "text": "The address in the unpacked map ($441D) where $0673 starts building, followed by unused bytes up to $383B."
  },
  {
   "address": 14396,
   "type": "line",
   "text": "The stage's sprite files, six bytes each (four letters of name, then the load address): SP90 at $7BC0, SP00 at $53C0 (SP0Z for Murtaugh), SP91 at $6900, SP12 at $6940, SP01 at $6D40, SP20 at $7440, SP21 at $7840; then $FF ends the list."
  },
  {
   "address": 14440,
   "type": "line",
   "text": "The stage's walkers, read by $E713: three records of 13 bytes (x, line, mode, frame, counters). An entry whose byte 2 is negative, at $388F, ends the list."
  },
  {
   "address": 14459,
   "type": "line",
   "text": "The level's animation table, which every object's frame indexes from here ($387B + frame): the amount to add to a frame for the next one. Frames start at $4E, so the bytes read begin at $38C9; the bytes here before that are the end of the walkers' records."
  },
  {
   "address": 14479,
   "type": "line",
   "text": "The walkers' end mark, then the bytes $387B+frame reads: the animation table. For each frame number in use ($4E and up, so from $38C9) the amount added to it for the next frame: 1 steps on, a negative number goes back to the first frame of a cycle, 0 holds."
  },
  {
   "address": 14704,
   "type": "line",
   "text": "Stage 1A's 43 enemy records, 19 bytes each, which $E001 and $E480 spawn and the behaviours keep their state in: x and line (two bytes each), frame, an active flag, the type (the behaviour number), the colour and facing, timers and counts from byte 8, and the hit points at byte $11."
  },
  {
   "address": 15483,
   "type": "line",
   "text": "The last records of stage 1A, up to the end mark at $3CA1."
  },
  {
   "address": 15521,
   "type": "line",
   "text": "The records' end mark (a record of $FF) and the rest of the 2160-byte overlay, all $FF."
  },
  {
   "address": 16167,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F34, $3160) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4000 onward."
  },
  {
   "address": 16168,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2AEC, $2CF9) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4001 onward."
  },
  {
   "address": 16207,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F3A, $3031, $3166) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4028 onward."
  },
  {
   "address": 16208,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($29EF, $2AE6, $2CFF) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4029 onward."
  },
  {
   "address": 16247,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F40, $302B, $316C) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4050 onward."
  },
  {
   "address": 16248,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($29F5, $2AE0, $2D05) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4051 onward."
  },
  {
   "address": 16287,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F46, $3025, $3172) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4078 onward."
  },
  {
   "address": 16288,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($29FB, $2ADA, $2D0B) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $4079 onward."
  },
  {
   "address": 16327,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F4C, $301F, $3178) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $40A0 onward."
  },
  {
   "address": 16328,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2A01, $2ACE, $2D11) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $40A1 onward."
  },
  {
   "address": 16367,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2F58, $3013, $3184) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $40C8 onward."
  },
  {
   "address": 16368,
   "type": "line",
   "text": "Inside the overlay's padding of $FF; named only as the base of indexed copies ($2A07, $2AC8, $2D1D) that with X from $D9 to $FF reach the screen rows at $4000 or $4400 instead, $40C9 onward."
  },
  {
   "address": 17104,
   "type": "line",
   "text": "Panel row 0, column 0, in the screen at $4000: the start of panel row 0; used by $3647."
  },
  {
   "address": 17144,
   "type": "line",
   "text": "Panel row 1, column 0, in the screen at $4000: the start of panel row 1; used by $3650, $F3FA, $F401, $F408, $F40F, $F419."
  },
  {
   "address": 17148,
   "type": "line",
   "text": "Panel row 1, column 4, in the screen at $4000: the top character of a score digit ($F180); used by $F19E."
  },
  {
   "address": 17149,
   "type": "line",
   "text": "Panel row 1, column 5, in the screen at $4000: the top character of a score digit ($F180); used by $F189."
  },
  {
   "address": 17150,
   "type": "line",
   "text": "Panel row 1, column 6, in the screen at $4000: the top character of a score digit ($F180); used by $F1C9."
  },
  {
   "address": 17151,
   "type": "line",
   "text": "Panel row 1, column 7, in the screen at $4000: the top character of a score digit ($F180); used by $F1B4."
  },
  {
   "address": 17152,
   "type": "line",
   "text": "Panel row 1, column 8, in the screen at $4000: the top character of a score digit ($F180); used by $F1F4."
  },
  {
   "address": 17153,
   "type": "line",
   "text": "Panel row 1, column 9, in the screen at $4000: the top character of a score digit ($F180); used by $F1DF."
  },
  {
   "address": 17163,
   "type": "line",
   "text": "Panel row 1, column 19, in the screen at $4000: the clock's minutes digit ($F424); used by $F469."
  },
  {
   "address": 17164,
   "type": "line",
   "text": "Panel row 1, column 20, in the screen at $4000: the clock's colon, character $2A ($F424); used by $F426."
  },
  {
   "address": 17165,
   "type": "line",
   "text": "Panel row 1, column 21, in the screen at $4000: the clock's tens of seconds ($F424); used by $F460."
  },
  {
   "address": 17166,
   "type": "line",
   "text": "Panel row 1, column 22, in the screen at $4000: the clock's seconds ($F424); used by $F455."
  },
  {
   "address": 17175,
   "type": "line",
   "text": "Panel row 1, column 31, in the screen at $4000: the magazines' tens digit ($F35B); used by $F36F."
  },
  {
   "address": 17176,
   "type": "line",
   "text": "Panel row 1, column 32, in the screen at $4000: the magazines' units digit ($F35B); used by $F364."
  },
  {
   "address": 17184,
   "type": "line",
   "text": "Panel row 2, column 0, in the screen at $4000: the start of panel row 2; used by $3659."
  },
  {
   "address": 17188,
   "type": "line",
   "text": "Panel row 2, column 4, in the screen at $4000: the middle character of a score digit ($F180); used by $F1A3."
  },
  {
   "address": 17189,
   "type": "line",
   "text": "Panel row 2, column 5, in the screen at $4000: the middle character of a score digit ($F180); used by $F18E."
  },
  {
   "address": 17190,
   "type": "line",
   "text": "Panel row 2, column 6, in the screen at $4000: the middle character of a score digit ($F180); used by $F1CE."
  },
  {
   "address": 17191,
   "type": "line",
   "text": "Panel row 2, column 7, in the screen at $4000: the middle character of a score digit ($F180); used by $29F2, $2CFC, $F1B9. It is also the base of indexed copies in the scroll slices ($29F2, $2CFC), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 17192,
   "type": "line",
   "text": "Panel row 2, column 8, in the screen at $4000: the middle character of a score digit ($F180); used by $302E, $315D, $F1F9. It is also the base of indexed copies in the scroll slices ($302E, $315D), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 17193,
   "type": "line",
   "text": "Panel row 2, column 9, in the screen at $4000: the middle character of a score digit ($F180); used by $F1E4."
  },
  {
   "address": 17224,
   "type": "line",
   "text": "Panel row 3, column 0, in the screen at $4000: the start of panel row 3; used by $3662, $E91E, $E925, $E92C, $E933, $E93A, $E941, $E94B, $F380, $F388, $F390, $F398, $F3A0, $F3A8, $F3B0, $F3B8, $F3DF, $F3E9."
  },
  {
   "address": 17228,
   "type": "line",
   "text": "Panel row 3, column 4, in the screen at $4000: the bottom character of a score digit ($F180); used by $F1A8."
  },
  {
   "address": 17229,
   "type": "line",
   "text": "Panel row 3, column 5, in the screen at $4000: the bottom character of a score digit ($F180); used by $F193."
  },
  {
   "address": 17230,
   "type": "line",
   "text": "Panel row 3, column 6, in the screen at $4000: the bottom character of a score digit ($F180); used by $F1D3."
  },
  {
   "address": 17231,
   "type": "line",
   "text": "Panel row 3, column 7, in the screen at $4000: the bottom character of a score digit ($F180); used by $29F8, $2AEF, $2D02, $F1BE. It is also the base of indexed copies in the scroll slices ($29F8, $2AEF, $2D02), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 17232,
   "type": "line",
   "text": "Panel row 3, column 8, in the screen at $4000: the bottom character of a score digit ($F180); used by $2F31, $3028, $3163, $F1FE. It is also the base of indexed copies in the scroll slices ($2F31, $3028, $3163), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 17233,
   "type": "line",
   "text": "Panel row 3, column 9, in the screen at $4000: the bottom character of a score digit ($F180); used by $F1E9."
  },
  {
   "address": 17241,
   "type": "line",
   "text": "Panel row 3, column 17, in the screen at $4000: the continue countdown's digit ($F49E); used by $F555, $F571, $F57E."
  },
  {
   "address": 17264,
   "type": "line",
   "text": "Panel row 4, column 0, in the screen at $4000: the start of panel row 4; used by $366B."
  },
  {
   "address": 17271,
   "type": "line",
   "text": "Panel row 4, column 7, in the screen at $4000: a panel cell; used by $29FE, $2AE9, $2D08. It is also the base of indexed copies in the scroll slices ($29FE, $2AE9, $2D08), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 17272,
   "type": "line",
   "text": "Panel row 4, column 8, in the screen at $4000: a panel cell; used by $2F37, $3022, $3169. It is also the base of indexed copies in the scroll slices ($2F37, $3022, $3169), which with X from $D9 reach the play rows of the screen at $4400."
  },
  {
   "address": 18432,
   "type": "line",
   "text": "The stage's character set, 256 characters for the play area, unpacked from the .CHR file by $1B28. Each character's colour is in $FD9D and its behaviour in $FC95."
  },
  {
   "address": 19456,
   "type": "line",
   "text": "The second half of the stage's character set, characters 128-255."
  },
  {
   "address": 20480,
   "type": "line",
   "text": "The panel's character set, from the file PAN0 (848 bytes, loaded by $1B28): 106 characters, among them the three-row score digits ($33-$50), the clock and magazine digits ($1B-$24), the energy cells ($2B, and 2 rewritten by $F375), the lives ($29) and the rounds ($2C). The 48 bytes after it ($5350-$537F) are not loaded by PAN0 and not read."
  },
  {
   "address": 20495,
   "type": "line",
   "text": "The panel's colour table, one byte per panel character, from the file PAN2 (loaded at $5008 by $1B28); $3645 reads it before PAN0 is loaded over the same addresses, so in play these bytes are PAN0's characters."
  },
  {
   "address": 20496,
   "type": "line",
   "text": "Row 0 of panel character 2, the part-full cell of the energy bar, rewritten by $F375."
  },
  {
   "address": 20497,
   "type": "line",
   "text": "Row 1 of the energy bar's part-full character."
  },
  {
   "address": 20498,
   "type": "line",
   "text": "Row 2 of the energy bar's part-full character."
  },
  {
   "address": 20499,
   "type": "line",
   "text": "Row 3 of the energy bar's part-full character."
  },
  {
   "address": 20500,
   "type": "line",
   "text": "Row 4 of the energy bar's part-full character."
  },
  {
   "address": 20501,
   "type": "line",
   "text": "Row 5 of the energy bar's part-full character."
  },
  {
   "address": 20502,
   "type": "line",
   "text": "Row 6 of the energy bar's part-full character."
  },
  {
   "address": 20503,
   "type": "line",
   "text": "Row 7 of the energy bar's part-full character, always blank."
  },
  {
   "address": 20567,
   "type": "line",
   "text": "The panel's characters 10 to 105, up to $534F, among them the clock and magazine digits, the score's three-row digits and the energy, lives and rounds symbols."
  },
  {
   "address": 21376,
   "type": "line",
   "text": "64 bytes cleared by $1D2B when a stage loads: sprite frame $4E, the blank frame the player flickers to."
  },
  {
   "address": 21440,
   "type": "line",
   "text": "Sprite frames $4F-$5E, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets ($4F-$52 walking one way)."
  },
  {
   "address": 22464,
   "type": "line",
   "text": "Sprite frames $5F-$6E, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets ($63-$66 walking the other way)."
  },
  {
   "address": 23488,
   "type": "line",
   "text": "Sprite frames $6F-$7E, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets ($77-$7F the bullets and their muzzle flashes facing right (three sizes by weapon level))."
  },
  {
   "address": 24512,
   "type": "line",
   "text": "Sprite frames $7F-$8E, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets ($80-$88 the same facing left; $89-$8C climbing)."
  },
  {
   "address": 25536,
   "type": "line",
   "text": "Sprite frames $8F-$9E, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets."
  },
  {
   "address": 26560,
   "type": "line",
   "text": "Sprite frames $9F-$A0, from SP00 (Riggs; Murtaugh's are SP0Z), 64 bytes each: the player and his bullets."
  },
  {
   "address": 26688,
   "type": "line",
   "text": "Sprite frames $A1-$A3, the end of SP00, the player's file."
  },
  {
   "address": 26880,
   "type": "line",
   "text": "Sprite frame $A4, from SP91, loaded over the last frame of SP00: the boss's shot, which $EAD4 fires with this frame (behaviour $1C)."
  },
  {
   "address": 26944,
   "type": "line",
   "text": "Sprite frames $A5-$B3, from SP12: the gunmen of behaviours $2C and $2E (frames $A5-$AD) and their shots ($AB, $AF)."
  },
  {
   "address": 27456,
   "type": "line",
   "text": "Sprite frame $AD, cleared by $1D3A on stage $1C (the last) along with frames $AF, $B1 and $B3 ($6BC0, $6C40, $6CC0), so those enemies' frames are invisible there."
  },
  {
   "address": 27520,
   "type": "line",
   "text": "Sprite frame $AE, from SP12."
  },
  {
   "address": 27584,
   "type": "line",
   "text": "Sprite frame $AF, cleared on stage $1C by $1D3D."
  },
  {
   "address": 27648,
   "type": "line",
   "text": "Sprite frame $B0, from SP12."
  },
  {
   "address": 27712,
   "type": "line",
   "text": "Sprite frame $B1, cleared on stage $1C by $1D40."
  },
  {
   "address": 27776,
   "type": "line",
   "text": "Sprite frames $B2 and $B3, the last of SP12."
  },
  {
   "address": 27840,
   "type": "line",
   "text": "Sprite frame $B3, cleared on stage $1C by $1D43."
  },
  {
   "address": 27968,
   "type": "line",
   "text": "Sprite frames $B5-$C4, from SP01: enemies ($B5-$C7 the patrolling gunman's walking, standing and shooting frames, $C1-$CF the shots and dying frames)."
  },
  {
   "address": 28992,
   "type": "line",
   "text": "Sprite frames $C5-$D0, from SP01: enemies ($B5-$C7 the patrolling gunman's walking, standing and shooting frames, $C1-$CF the shots and dying frames)."
  },
  {
   "address": 29760,
   "type": "line",
   "text": "Sprite frames $D1-$E0, from SP20: the gunman who faces the player ($D1-$DB) and his shots ($D6, $DE)."
  },
  {
   "address": 30784,
   "type": "line",
   "text": "Sprite frames $E1-$EE, from SP21: the hiding enemy ($E1, $E7) and the dying frames ($EE)."
  },
  {
   "address": 31680,
   "type": "line",
   "text": "Sprite frames $EF-$F8, from SP90, the boss's frames ($EF-$F8), loaded last, over the start of the level map."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Set to $B4 by $E001 with the hazard cooldown when a life or a stage starts, and cleared when that cooldown runs out ($3678): while it is set no door can be taken ($2290)."
  },
  {
   "address": 57345,
   "type": "line",
   "text": "Sets up the objects for a new life or stage, on the next frame's line $F0: 180 passes of protection ($1104 and $E000), the arc flag cleared, both bullets and all 13 enemy slots emptied (behaviour $FF), the sort list $7F-$8F reset to 0-15 and an end mark, the player's colour (6 for Riggs, 9 for Murtaugh) into $BF; then spawns every enemy record from $3970 (19 bytes each, until byte 1 is negative) that is not yet active and lies in the window around the camera (the camera's x less $18 and y less $15 are written into the SBC operands at $E0A1, $E0A8, $E0D3 and $E0DA first) into objects 6-15: line, frame (byte 4), type (byte 6), x and colour/facing (byte 7), with $60+n keeping the record's number times two, and marks the record active (byte 5)."
  },
  {
   "address": 57505,
   "type": "line",
   "text": "Camera x less $18, written by $E07C as this SBC's operand."
  },
  {
   "address": 57512,
   "type": "line",
   "text": "Camera x high byte, written by $E083."
  },
  {
   "address": 57555,
   "type": "line",
   "text": "Camera y less $15, written by $E08B."
  },
  {
   "address": 57562,
   "type": "line",
   "text": "Camera y high byte, written by $E092."
  },
  {
   "address": 57647,
   "type": "line",
   "text": "Checks the P key (matrix position $29: row 5, column 1). When it is down, waits for it to be released, pressed again and released again, keeping the sound and the sprite sort running each frame ($F274, $F2B3), so P pauses and unpauses the game. Leaves CIA 1 set for the joystick."
  },
  {
   "address": 57706,
   "type": "line",
   "text": "Tests one key of the matrix, A = 8 x row + column: drives the row's line low through $E19C and reads its column bit through $E1A4, then reads again with every row high to tell a key from the joystick in port 1. Carry set when the key is down."
  },
  {
   "address": 57756,
   "type": "line",
   "text": "The eight row-select values for $DC00, one bit low each: $FE, $FD, $FB ... $7F."
  },
  {
   "address": 57764,
   "type": "line",
   "text": "The eight column bits: 1, 2, 4 ... $80."
  },
  {
   "address": 57772,
   "type": "line",
   "text": "The sprite multiplexer's raster interrupt, entered first at the line in $F313 and again lower down while objects are left. From the sorted list ($7F+X, X kept in $0E), it puts each object into the next of the eight sprites, its line ($DF+n), x ($EF+n), frame into the sprite pointer of both screens ($43F8+s and $47F8+s), colour from $BF+n (bit 7, kept inverted, the ninth bit of x) and the x high bit in $D010. When the next object's line is at or below $44 (the line the interrupt was set for plus $22) it stops, writes the address of the sprite to continue with into the JMP at $E1B3, and sets the next interrupt 13 lines above that object ($E457). When the list ends it sets $1281 for line $BF, the panel."
  },
  {
   "address": 57780,
   "type": "line",
   "text": "The low byte of the JMP at $E1B3: which sprite's code the interrupt continues with. Rewritten by every sprite's step."
  },
  {
   "address": 57781,
   "type": "line",
   "text": "The high byte of that JMP."
  },
  {
   "address": 58361,
   "type": "line",
   "text": "An INX that nothing reaches: the branch at $E3B0 goes past it."
  },
  {
   "address": 58455,
   "type": "line",
   "text": "Sets the next sprite interrupt 13 lines above the next object's line, and the line beyond which it stops ($44) $22 lower, then returns from the interrupt."
  },
  {
   "address": 58495,
   "type": "line",
   "text": "A zero byte between two routines, not read."
  },
  {
   "address": 58496,
   "type": "line",
   "text": "Spawns enemy records as the screen scrolls, a few at a time: carries on through the records from where $3777 left off and stops at each multiple of $40 in the record number $5F, so the work is spread over several passes. Spawns a record that is not active and whose place is in the new strip at the window's edge, as $E001 does, into the first free object; $3777 becomes $FF at the end of the list."
  },
  {
   "address": 58558,
   "type": "line",
   "text": "The low byte of the operand of the SBC at $E4BD, rewritten by $E48D before it runs."
  },
  {
   "address": 58565,
   "type": "line",
   "text": "The low byte of the operand of the SBC at $E4C4, rewritten by $E497 before it runs."
  },
  {
   "address": 58623,
   "type": "line",
   "text": "The low byte of the operand of the SBC at $E4FE, rewritten by $E4A2 before it runs."
  },
  {
   "address": 58630,
   "type": "line",
   "text": "The low byte of the operand of the SBC at $E505, rewritten by $E4AC before it runs."
  },
  {
   "address": 58760,
   "type": "line",
   "text": "The direction the walker being moved last stepped: 1 left, 2 right (or still), 3 down, 4 up. It goes into the object's $60+n, which $11FD uses to push the player away."
  },
  {
   "address": 58761,
   "type": "line",
   "text": "Walker mode 1: counts byte 8 down and, when it runs out, reloads it from byte 9 and turns round (byte 7); steps the walker's x (bytes 1-2) one pixel right or left."
  },
  {
   "address": 58836,
   "type": "line",
   "text": "Walker mode 2 stands still: direction 2."
  },
  {
   "address": 58842,
   "type": "line",
   "text": "Unused: nothing calls it. Another walker mode: counts byte 8 and moves the walker's x by $40 a step."
  },
  {
   "address": 58896,
   "type": "line",
   "text": "Walker mode 0: as $E589, but steps its line (bytes 3-4) down or up."
  },
  {
   "address": 58971,
   "type": "line",
   "text": "The byte after the shuttle walker's last RTS, before $E65C: zero, never read."
  },
  {
   "address": 58972,
   "type": "line",
   "text": "A negative mode. Every second pass (byte $0C flips) it steps its frame (byte $0B) by the level's animation table and moves one line down or up (bytes 3-4) by its direction (byte 7); when its count (byte 8, reloaded from byte 9) runs out it turns and counts byte 0 down, whose value then changes its frame: $FF frame $AC; $FD frame $B3 and sets $E6C7; $FC frame $A5, clears $E6C7 and sets byte 0 back to 5."
  },
  {
   "address": 59079,
   "type": "line",
   "text": "Set while a path walker stands on its $FD mark; while it is set an enemy cannot hurt the player ($10A3)."
  },
  {
   "address": 59080,
   "type": "line",
   "text": "The shuttle's count has not run out: stores it and moves the walker one line down (bytes 3-4 of its record), direction 3."
  },
  {
   "address": 59136,
   "type": "line",
   "text": "Steps a walker's frame (byte $0B) through the level's animation table at $387B, on the passes $0F61 does."
  },
  {
   "address": 59155,
   "type": "line",
   "text": "Runs the walkers, records of 13 bytes from $3868 in the overlay until byte 2 is negative. First empties every object of type 0 (the walkers' objects from the last pass). For each walker, moves it by its mode (byte 5: 0 $E610, 1 $E589, 2 $E700 and $E5D4, negative $E65C), then if it is inside the window (the operands at $E78E, $E795, $E7AB and $E7B2 are written with the camera's place first) puts it in the first free object from 5 as type 0, with its line, x, frame and the direction it moved."
  },
  {
   "address": 59278,
   "type": "line",
   "text": "Camera x less $18, the operand of this SBC, written by $E722 and $E490."
  },
  {
   "address": 59285,
   "type": "line",
   "text": "Camera x high byte, written by $E729 and $E49A."
  },
  {
   "address": 59307,
   "type": "line",
   "text": "Camera y less $15, written by $E731 and $E4A5."
  },
  {
   "address": 59314,
   "type": "line",
   "text": "Camera y high byte, written by $E738 and $E4AF."
  },
  {
   "address": 59383,
   "type": "line",
   "text": "55 bytes that nothing reads: pairs of bit values (1, 1, 2, 2 ... $80, $80) and their inverses, and a few more; a table from an earlier version."
  },
  {
   "address": 59438,
   "type": "line",
   "text": "115 addresses of enemy records, $3970 + 19 per record, by the record number in $60+n (twice the index). The update ($0F70), the bullets ($1F37) and the scroll ($27BF) find an enemy's record here."
  },
  {
   "address": 59439,
   "type": "line",
   "text": "The high bytes of $E82E's addresses."
  },
  {
   "address": 59503,
   "type": "line",
   "text": "The rest of $E82E's 115 record addresses."
  },
  {
   "address": 59668,
   "type": "line",
   "text": "Rounds in the gun, 6 when full; $1DB3 takes one per shot and refills it from a magazine."
  },
  {
   "address": 59669,
   "type": "line",
   "text": "Draws the rounds left in the gun on the panel, one character $2C for each ($E914 of them, up to 6) from column $1E of the row at $4348, and blanks the rest up to column $24."
  },
  {
   "address": 59731,
   "type": "line",
   "text": "Dying frames by enemy type ($26 on, two bytes each), used when the record's byte $0D is set: $C0, $D5, $C0, $B1, $A9, $EE, $F7."
  },
  {
   "address": 59745,
   "type": "line",
   "text": "Dying frames by enemy type, used otherwise: $CE, $DD, $CE, $B1, $A9, $EE, $F7."
  },
  {
   "address": 59763,
   "type": "line",
   "text": "For each scroll direction, which fine scroll decides the step: 1 (vertical, $42) for up and down, 0 (horizontal, $41) for the rest."
  },
  {
   "address": 59779,
   "type": "line",
   "text": "The main loop, once a pass: resets the stack, waits for the frame and plays the sound ($F274), checks the pause key ($E12F), runs the player ($1912) and the clock ($F424), moves the bullets ($1EB1), handles the fire button ($1DB3) and moves the walkers ($E713)."
  },
  {
   "address": 59806,
   "type": "line",
   "text": "Eight masks that $ED5A ANDs into eight bytes of the character set at a time (operands written by $ED6E), from $E99E or $E9DE by the stage: the wipe between stages."
  },
  {
   "address": 59807,
   "type": "line",
   "text": "The second of the eight masks of the first wipe step, the operand $EDD0 starts with."
  },
  {
   "address": 59808,
   "type": "line",
   "text": "The third mask of the first wipe step, operand of $EDD8."
  },
  {
   "address": 59809,
   "type": "line",
   "text": "The fourth mask of the first wipe step, operand of $EDE0."
  },
  {
   "address": 59810,
   "type": "line",
   "text": "The fifth mask of the first wipe step, operand of $EDE8."
  },
  {
   "address": 59811,
   "type": "line",
   "text": "The sixth mask of the first wipe step, operand of $EDF0."
  },
  {
   "address": 59812,
   "type": "line",
   "text": "The seventh mask of the first wipe step, operand of $EDF8."
  },
  {
   "address": 59813,
   "type": "line",
   "text": "The eighth mask of the first wipe step and the rest of the first set: 64 bytes of masks in all from $E99E, each step's eight clearing more of a character's pixels."
  },
  {
   "address": 59870,
   "type": "line",
   "text": "The second set of wipe masks, used on stages whose number has bit 1 set (2, 6, $0A, $0E, $12, $16, $1A). $ED5A reads 64 bytes from here, so its last eight masks are the first bytes of the code at $EA16."
  },
  {
   "address": 59877,
   "type": "line",
   "text": "The last bytes of the second mask set that lie before $EA16."
  },
  {
   "address": 59926,
   "type": "line",
   "text": "Behaviour $1C, something that crosses the screen right to left, 2 pixels a pass on stage 0 and 4 on the others, and disappears at the left edge. On stages $10 and $1C it closes on the player's row, 4 lines a pass. On stages $16 and $1C, unless its frame is $A4, it counts $2856 down, showing frame $A2 near the end; at 0 it becomes behaviour $20 with frame $A3 and puts two copies of itself into objects 14 and 15 (behaviours $1E and $22), so it splits three ways, with sound $0D on voice 1."
  },
  {
   "address": 60116,
   "type": "line",
   "text": "Behaviour $32, the upper half of a figure two objects tall, a boss; its lower half is the next slot, rebuilt at the end of every pass by $EC46. While it is on screen it keeps $28A4 set, so no door can be used. It counts its record's +$0D down: above $15 it shows frame $F5 and, when slot 0 is free, fires into it (22 lines lower, behaviour $1C, frame $A4, sound $0F); below, frame $EF. When the count runs out it moves sideways 3 or 4 pixels a pass by its record's +$0B and hops along the arc at $283C (frames $F1, $F3), then picks a new direction and count at random (counts up to $1F, or $7F on stages $10, $16 and $1C). On stages $16 and $1C a hop's end also puts a second object in slot 1 (frame $A1, behaviour $1C) and sets $2856 to $3C."
  },
  {
   "address": 60486,
   "type": "line",
   "text": "Rebuilds the boss's lower half in the next slot: its frame plus 1, the same x, 21 lines lower, behaviour $34 and the same record number."
  },
  {
   "address": 60517,
   "type": "line",
   "text": "The NMI vector's handler: RTI, so the RESTORE key does nothing."
  },
  {
   "address": 60518,
   "type": "line",
   "text": "The game's start-up, run once after the title program hands over: the stack, $01=$35 (RAM everywhere but the I/O), the sound reset ($F889), all sprites on and multicolour, CIA interrupts off, the IRQ vector at $E1AC and the NMI at $EC65 ($FFFE and $FFFA, with $0314 too), the clock set to 5:00, the checkpoint (camera $001C/$019B, player x $22, line $30, colour 6), stage 0, the video modes and VIC bank 1 ($4000-$7FFF); then loads the overlay and the stage ($1B0D, $1B28), draws the screen ($13C6), zeroes the score, sets 25 magazines ($F359), full energy ($40) and 3 lives, draws the panel's score, and enters the main loop."
  },
  {
   "address": 60762,
   "type": "line",
   "text": "The wipe between stages: blanks the border and ANDs the character set at $4800-$4FFF with eight masks at a time, from $E99E or $E9DE by the stage, stepping through the masks eight times so the picture breaks up and disappears."
  },
  {
   "address": 60873,
   "type": "line",
   "text": "Operand of the AND at $EDC8, written by $ED6E with the first mask's address and moved on 8 a step."
  },
  {
   "address": 60874,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDC8, rewritten by $ED71, $EE21 before it runs."
  },
  {
   "address": 60881,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDD0, rewritten by $ED78, $EE2A before it runs."
  },
  {
   "address": 60882,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDD0, rewritten by $ED7B, $EE32 before it runs."
  },
  {
   "address": 60889,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDD8, rewritten by $ED82, $EE3B before it runs."
  },
  {
   "address": 60890,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDD8, rewritten by $ED85, $EE43 before it runs."
  },
  {
   "address": 60893,
   "type": "line",
   "text": "Inside $ED5A, where the second pair of mask reads begins. The loader's JSR $EDDD at $0555 is a call to the KERNAL's CIOUT, with the ROM banked in at that moment: it does not reach this code."
  },
  {
   "address": 60897,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDE0, rewritten by $ED8C, $EE4C before it runs."
  },
  {
   "address": 60898,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDE0, rewritten by $ED8F, $EE54 before it runs."
  },
  {
   "address": 60905,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDE8, rewritten by $ED96, $EE5D before it runs."
  },
  {
   "address": 60906,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDE8, rewritten by $ED99, $EE65 before it runs."
  },
  {
   "address": 60913,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDF0, rewritten by $EDA0, $EE6E before it runs."
  },
  {
   "address": 60914,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDF0, rewritten by $EDA3, $EE76 before it runs."
  },
  {
   "address": 60921,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EDF8, rewritten by $EDAA, $EE7F before it runs."
  },
  {
   "address": 60922,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EDF8, rewritten by $EDAD, $EE87 before it runs."
  },
  {
   "address": 60926,
   "type": "line",
   "text": "Inside $ED5A. The loader's JSR $EDFE is the KERNAL's UNLSN, made with the ROM banked in."
  },
  {
   "address": 60929,
   "type": "line",
   "text": "The low byte of the operand of the AND at $EE00, rewritten by $EDB4, $EE90 before it runs."
  },
  {
   "address": 60930,
   "type": "line",
   "text": "The high byte of the operand of the AND at $EE00, rewritten by $EDB7, $EE98 before it runs."
  },
  {
   "address": 60947,
   "type": "line",
   "text": "Inside $ED5A: steps the eight mask operands on 8 bytes. The loader's JSR $EE13 is the KERNAL's ACPTR, made with the ROM banked in."
  },
  {
   "address": 61090,
   "type": "line",
   "text": "After a flip: colours the rightmost column (39) of the shown screen's 18 rows from the characters there, through the level's colour table at $FD9D, into colour RAM. Reads the screen at $4400 when $40 is set ($EF4C)."
  },
  {
   "address": 61260,
   "type": "line",
   "text": "$EEA2 for the screen at $4400."
  },
  {
   "address": 61423,
   "type": "line",
   "text": "After a flip: colours the leftmost column (0) of the shown screen's 18 rows from the characters there, through $FD9D. Reads the screen at $4400 when $40 is set ($F099)."
  },
  {
   "address": 61593,
   "type": "line",
   "text": "$EFEF for the screen at $4400."
  },
  {
   "address": 61756,
   "type": "line",
   "text": "After a flip: colours the top row's 40 characters from the shown screen ($4000, or $4400 when $40 is set) through $FD9D."
  },
  {
   "address": 61790,
   "type": "line",
   "text": "After a flip: colours the bottom row (17) of the shown screen through $FD9D."
  },
  {
   "address": 61824,
   "type": "line",
   "text": "Draws the six-digit score in $F356-$F358 (decimal) on the panel, each digit three characters tall: $33+digit, $3D+digit and $47+digit in rows at $42FC, $4324 and $434C."
  },
  {
   "address": 61954,
   "type": "line",
   "text": "Points for each score event, low two digits then middle two, read by $F20C with X even: 0 gives 400, 2 200, 4 300, 6 1000, 8 5000."
  },
  {
   "address": 61955,
   "type": "line",
   "text": "The middle two digits of each entry of $F202."
  },
  {
   "address": 61964,
   "type": "line",
   "text": "Adds the points of entry X of $F202 to the score in decimal and redraws it."
  },
  {
   "address": 61997,
   "type": "line",
   "text": "A pseudo-random byte in A, kept across calls in $F26F-$F273 (shifting and mixing five bytes); keeps X and Y."
  },
  {
   "address": 62063,
   "type": "line",
   "text": "The random generator's five bytes of state, $F26F-$F273; A returns $F26F."
  },
  {
   "address": 62064,
   "type": "line",
   "text": "The random generator's second byte."
  },
  {
   "address": 62065,
   "type": "line",
   "text": "The random generator's third byte."
  },
  {
   "address": 62066,
   "type": "line",
   "text": "The random generator's fourth byte."
  },
  {
   "address": 62067,
   "type": "line",
   "text": "The random generator's fifth byte, which also takes the carry."
  },
  {
   "address": 62068,
   "type": "line",
   "text": "Waits until the raster is between lines $A4 and $B1, which paces the main loop to the frame."
  },
  {
   "address": 62131,
   "type": "line",
   "text": "Sorts the list of objects at $7F-$8E by line ($DF+n) with an insertion sort, so the multiplexer can place them top to bottom; then checks the player against them ($1018), finds the first object in use and sets the first sprite interrupt 13 lines above it ($F313) and the stop line $44."
  },
  {
   "address": 62227,
   "type": "line",
   "text": "The line of the first sprite interrupt, set by $F2B3 and written to $D012 by $136F."
  },
  {
   "address": 62228,
   "type": "line",
   "text": "Reads both joystick ports at once ($DC00 AND $DC01, so either port works) into $F355: up $08, down $04, left $02, right $01, fire $10. Left sets the facing $5C to 8 and right to 0."
  },
  {
   "address": 62293,
   "type": "line",
   "text": "The joystick as $F314 read it this pass."
  },
  {
   "address": 62294,
   "type": "line",
   "text": "The score, six decimal digits in $F356 (highest) to $F358."
  },
  {
   "address": 62295,
   "type": "line",
   "text": "The score's middle two digits."
  },
  {
   "address": 62296,
   "type": "line",
   "text": "The score's lowest two digits."
  },
  {
   "address": 62297,
   "type": "line",
   "text": "The spare magazines, two decimal digits shown beside the bullet icon: 25 at the start, one more every five seconds of the clock ($F47A) and one for each ammunition pickup; a magazine is used each time the gun's six rounds run out."
  },
  {
   "address": 62299,
   "type": "line",
   "text": "Draws the two digits of $F359 on the panel at $4317 and $4318 (characters $1B and up)."
  },
  {
   "address": 62323,
   "type": "line",
   "text": "The player's energy, $40 when full: 10 off for a hazard, $10 back for an energy pickup."
  },
  {
   "address": 62325,
   "type": "line",
   "text": "Draws the energy bar on the panel from column $0E of the row at $4348: a full character $2B for each 8 points, then character 2 for the part, whose eight rows it rewrites at $5010-$5017 with the pattern from $3734 for the points left over, then blanks to column $18."
  },
  {
   "address": 62448,
   "type": "line",
   "text": "Draws the lives on the panel, character $29 for each of up to four, from column $0E of the row at $42F8, and blanks the rest to column $12."
  },
  {
   "address": 62497,
   "type": "line",
   "text": "The clock: $F421 counts passes from $3B down to a second, $F422 the seconds (decimal) and $F423 the minutes."
  },
  {
   "address": 62498,
   "type": "line",
   "text": "The clock's seconds, two decimal digits."
  },
  {
   "address": 62499,
   "type": "line",
   "text": "The clock's minutes."
  },
  {
   "address": 62500,
   "type": "line",
   "text": "Ticks the clock once a pass and draws it on the panel ($430B-$430E, with a colon $2A at $430C). Each second whose last digit is 0 or 5 adds a magazine. At 0:00 the player loses a life ($1974) and the clock is set to 9:00 for the next one."
  },
  {
   "address": 62622,
   "type": "line",
   "text": "No lives left. Shows GAME OVER on the panel, waits for fire, then 255 frames, then, while continues are left ($2865: two in a game), shows CONTINUE with a countdown from 9, about a second a digit: fire continues (clock back to 5:00, energy full, 25 magazines, the panel redrawn), and when the countdown or the continues run out it returns to the title ($0766). The KERNAL's LOAD name the export gave this address is wrong here: the KERNAL is banked out and this is the game's own code."
  },
  {
   "address": 62930,
   "type": "line",
   "text": "Returns 3. The loader's JSR $F5D2 at $0533 is made with the KERNAL banked in, where it reaches the ROM's code, not this."
  },
  {
   "address": 62933,
   "type": "line",
   "text": "Unpacks a file from ($64) to ($66). After an 18-byte header (byte $11 the number of blocks), each block reads three Huffman code tables ($F7D9: literal lengths built at $4000, match offsets at $4080, match lengths at $4100) and a 16-bit count of sequences, then repeats: a run of literal bytes copied from the input, then a copy from earlier output, offset and length decoded with the tables. Bits come from $F777."
  },
  {
   "address": 63257,
   "type": "line",
   "text": "Decodes one value with the code table at ($6F): reads bits until a code in the table matches, then reads the extra bits that value says and returns it in $6B/$6C."
  },
  {
   "address": 63342,
   "type": "line",
   "text": "The bit values 1, 2, 4 ... $80, used by $F719."
  },
  {
   "address": 63350,
   "type": "line",
   "text": "Moves A into X and reads that many bits ($F777)."
  },
  {
   "address": 63351,
   "type": "line",
   "text": "Takes X bits from the bit buffer $71-$74 into $6B/$6C, refilling it two bytes at a time from the input at ($64)."
  },
  {
   "address": 63415,
   "type": "line",
   "text": "Masks for 0-16 bits, low bytes: 0, 1, 3, 7 ... $FF."
  },
  {
   "address": 63432,
   "type": "line",
   "text": "Masks for 0-16 bits, high bytes."
  },
  {
   "address": 63449,
   "type": "line",
   "text": "Reads a Huffman table from the packed stream: a 5-bit count of code lengths, 4 bits each into $4180, then builds the codes in order of length into the table at ($6F), with each code's value $3C bytes further on."
  },
  {
   "address": 63622,
   "type": "line",
   "text": "Keeps X while $EA16 and $EAD4 call the sound."
  },
  {
   "address": 63623,
   "type": "line",
   "text": "Keeps Y while they call it."
  },
  {
   "address": 63624,
   "type": "line",
   "text": "Keeps A while they call it."
  },
  {
   "address": 63625,
   "type": "line",
   "text": "Jumps to $FA24, which silences all three voices, clears the SID and sets the volume to 15."
  },
  {
   "address": 63628,
   "type": "line",
   "text": "Jumps to $F95A: starts sound effect X on voice Y."
  },
  {
   "address": 63631,
   "type": "line",
   "text": "The sound effects' update, once a frame from the panel interrupt ($132B): for each voice that is playing, slides its frequency by the effect's step ($FA65/$FA68) and, when its time runs out, reads the effect's next command ($F8CA)."
  },
  {
   "address": 63690,
   "type": "line",
   "text": "Reads a voice's next commands from its effect: $FF ends it (or starts it again when it loops), $FC stops the slide, $FD sets a new slide, $FE sets the pulse width; anything else is a waveform byte followed by the frequency (high, low), and the next step's length."
  },
  {
   "address": 63834,
   "type": "line",
   "text": "Starts effect X on voice Y: from the effect's address ($FA71/$FA83) takes its length (and the loop flag in bit 7), the slide, attack/decay, sustain/release, pulse width, the filter (when its low four bits are not 0 or 2: the mode and volume and the cutoff, and routes the voice through it) and the first waveform and frequency."
  },
  {
   "address": 64036,
   "type": "line",
   "text": "Silences the sound: clears each voice's state and the 25 SID registers, filter routing off, volume 15."
  },
  {
   "address": 64068,
   "type": "line",
   "text": "The register offset of each voice: 0, 7, 14."
  },
  {
   "address": 64071,
   "type": "line",
   "text": "Each voice's bit in the filter routing: 1, 2, 4."
  },
  {
   "address": 64074,
   "type": "line",
   "text": "The same bits inverted, to take a voice out of the filter."
  },
  {
   "address": 64077,
   "type": "line",
   "text": "The effect each voice is playing."
  },
  {
   "address": 64080,
   "type": "line",
   "text": "Each voice's place in its effect (0 when silent)."
  },
  {
   "address": 64083,
   "type": "line",
   "text": "Each voice's time left on its present step."
  },
  {
   "address": 64086,
   "type": "line",
   "text": "Each voice's place to go back to when its effect loops."
  },
  {
   "address": 64089,
   "type": "line",
   "text": "Each voice's loop flag."
  },
  {
   "address": 64095,
   "type": "line",
   "text": "Each voice's frequency, low byte."
  },
  {
   "address": 64098,
   "type": "line",
   "text": "Each voice's frequency, high byte."
  },
  {
   "address": 64101,
   "type": "line",
   "text": "Each voice's frequency slide, low byte."
  },
  {
   "address": 64104,
   "type": "line",
   "text": "Each voice's frequency slide, high byte."
  },
  {
   "address": 64107,
   "type": "line",
   "text": "The voice's register offset while an effect is started or read."
  },
  {
   "address": 64108,
   "type": "line",
   "text": "The voice's filter bit while an effect is started."
  },
  {
   "address": 64109,
   "type": "line",
   "text": "The voice number while an effect is started."
  },
  {
   "address": 64110,
   "type": "line",
   "text": "Where the loop of the effect being started begins."
  },
  {
   "address": 64111,
   "type": "line",
   "text": "The voice's inverted filter bit while an effect is started."
  },
  {
   "address": 64112,
   "type": "line",
   "text": "The filter routing and resonance byte written to $D417."
  },
  {
   "address": 64113,
   "type": "line",
   "text": "The low bytes of the 18 sound effects' addresses ($FA95 to $FC80)."
  },
  {
   "address": 64131,
   "type": "line",
   "text": "The high bytes of the 18 effects' addresses."
  },
  {
   "address": 64149,
   "type": "line",
   "text": "The 18 sound effects, numbered 0-$11 by their place in $FA71/$FA83: each a header (length and loop flag, slide, attack/decay, sustain/release, pulse, filter, waveform and frequency) and then commands for $F8CA. The calls to $F88C say which event plays which."
  },
  {
   "address": 64661,
   "type": "line",
   "text": "The stage's character properties, one byte for each of the 256 characters, copied from COL0 by $1B28: bit 7 solid floor, bit 6 ladder, bit 5 wall, bit 1 door, and bit 0 a character that holds the player (it sets $2411)."
  },
  {
   "address": 64917,
   "type": "line",
   "text": "The byte between the property table and the colours: not loaded by either, not read."
  },
  {
   "address": 64918,
   "type": "line",
   "text": "The stage's .ATT file: three bytes, then the border and three background colours ($FD99-$FD9C, set by $136F every frame), then the colour of each of the 256 characters ($FD9D) for colour RAM, multicolour bit included."
  },
  {
   "address": 64921,
   "type": "line",
   "text": "The border colour, from the .ATT file."
  },
  {
   "address": 64922,
   "type": "line",
   "text": "Background colour 0."
  },
  {
   "address": 64923,
   "type": "line",
   "text": "Background colour 1 (multicolour)."
  },
  {
   "address": 64924,
   "type": "line",
   "text": "Background colour 2 (multicolour)."
  },
  {
   "address": 64925,
   "type": "line",
   "text": "The colour-RAM value of each of the stage's 256 characters, from the .ATT file: the low four bits the colour, bit 3 the multicolour switch."
  },
  {
   "address": 65181,
   "type": "line",
   "text": "Three bytes for each enemy record, built by $1B28 from the records' bytes $11, 6 and 4 (hit points, type and frame) and copied back into the records when a life starts ($19FA), so every enemy comes back whole. The list ends at the address in $1DA5/$1DA6."
  },
  {
   "address": 65423,
   "type": "line",
   "text": "Named only as the base of the reads $FF8F,X at $1050, $1061, $1F6A and $1F7B, which with X from $F0 wrap past $FFFF to the sort list at $7F-$8E. The bytes here are RAM the game never writes, the emulator's power-on pattern."
  },
  {
   "address": 65521,
   "type": "line",
   "text": "The character chosen at the title: 1 Riggs, 0 Murtaugh. Picks the player's sprites, colour, jump and push."
  }
 ]
}