{
 "schema": 1,
 "platform": "c64",
 "game": "lethal-weapon",
 "part": "ending",
 "build": "",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    2303,
    "another part's: the game's code and data, still in memory beneath the ending, described in parts/game"
   ],
   [
    3608,
    16383,
    "another part's: the game's code and data, still in memory beneath the ending, described in parts/game"
   ],
   [
    17384,
    24575,
    "another part's: the game's code and data, still in memory beneath the ending, described in parts/game; and the screen's sprite pointers"
   ],
   [
    26624,
    57343,
    "another part's: the game's code and data, still in memory beneath the ending, described in parts/game"
   ],
   [
    57344,
    62933,
    "the music, the file MUSI loaded again: the same bytes at the same addresses as in the title part, which describes them (parts/title, $E000-$F5D5)"
   ],
   [
    62934,
    65535,
    "another part's: the game's code and data, still in memory beneath the ending, described in parts/game"
   ]
  ],
  "extra": [
   [
    16384,
    17383,
    "the ending's screen, from MEL (MUR for Murtaugh)"
   ],
   [
    24576,
    26623,
    "the ending's character set, from ME0 (MU0 for Murtaugh)"
   ]
  ],
  "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": 2636,
   "type": "Code"
  },
  {
   "start": 2637,
   "end": 2658,
   "type": "PETSCII Text"
  },
  {
   "start": 2659,
   "end": 2736,
   "type": "Code"
  },
  {
   "start": 2737,
   "end": 2974,
   "type": "Byte"
  },
  {
   "start": 2975,
   "end": 3013,
   "type": "Code"
  },
  {
   "start": 3014,
   "end": 3021,
   "type": "Undefined"
  },
  {
   "start": 3022,
   "end": 3341,
   "type": "Code"
  },
  {
   "start": 3342,
   "end": 3347,
   "type": "Byte"
  },
  {
   "start": 3348,
   "end": 3351,
   "type": "Undefined"
  },
  {
   "start": 3352,
   "end": 3607,
   "type": "Byte"
  },
  {
   "start": 3608,
   "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": 17383,
   "type": "Byte"
  },
  {
   "start": 17384,
   "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": 57343,
   "type": "Undefined"
  },
  {
   "start": 57344,
   "end": 58338,
   "type": "Code"
  },
  {
   "start": 58339,
   "end": 58919,
   "type": "Undefined"
  },
  {
   "start": 58920,
   "end": 58977,
   "type": "Code"
  },
  {
   "start": 58978,
   "end": 60683,
   "type": "Undefined"
  },
  {
   "start": 60684,
   "end": 60734,
   "type": "Code"
  },
  {
   "start": 60735,
   "end": 60925,
   "type": "Undefined"
  },
  {
   "start": 60926,
   "end": 60950,
   "type": "Code"
  },
  {
   "start": 60951,
   "end": 62096,
   "type": "Undefined"
  },
  {
   "start": 62097,
   "end": 62105,
   "type": "Code"
  },
  {
   "start": 62106,
   "end": 62254,
   "type": "Undefined"
  },
  {
   "start": 62255,
   "end": 62265,
   "type": "Code"
  },
  {
   "start": 62266,
   "end": 62929,
   "type": "Undefined"
  },
  {
   "start": 62930,
   "end": 62932,
   "type": "Code"
  },
  {
   "start": 62933,
   "end": 62933,
   "type": "Undefined"
  },
  {
   "start": 62934,
   "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": 19,
   "name": "zpp_13",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpf_16",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 27,
   "name": "zpa_1B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "zpa_1C",
   "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": 45,
   "name": "zpa_2D",
   "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": 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": 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": 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": 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": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "f_00C0",
   "type": "Field",
   "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": 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": 223,
   "name": "player_line",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 224,
   "name": "f_00E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpf_E2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "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": 673,
   "name": "a_02A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 678,
   "name": "a_02A6",
   "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": "ending_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2332,
   "name": "b_091C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2550,
   "name": "b_09F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2563,
   "name": "b_0A03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2606,
   "name": "b_0A2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2624,
   "name": "ending_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2637,
   "name": "ending_filenames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2659,
   "name": "ending_load_file",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2721,
   "name": "b_0AA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2736,
   "name": "r_0AB0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2737,
   "name": "ending_drive_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2975,
   "name": "ending_fastload",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3014,
   "name": "f_0BC6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3022,
   "name": "b_0BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3041,
   "name": "b_0BE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3053,
   "name": "b_0BED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3081,
   "name": "b_0C09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3105,
   "name": "b_0C21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3116,
   "name": "b_0C2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3134,
   "name": "b_0C3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3158,
   "name": "b_0C56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3173,
   "name": "b_0C65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3183,
   "name": "b_0C6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3190,
   "name": "b_0C76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3202,
   "name": "b_0C82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3205,
   "name": "b_0C85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3215,
   "name": "b_0C8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3233,
   "name": "s_0CA1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3259,
   "name": "r_0CBB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3260,
   "name": "s_0CBC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3267,
   "name": "b_0CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3281,
   "name": "a_0CD1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3283,
   "name": "b_0CD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3285,
   "name": "b_0CD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3296,
   "name": "f_0CE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3328,
   "name": "s_0D00",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3345,
   "name": "ending_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3348,
   "name": "a_0D14",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3349,
   "name": "a_0D15",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3350,
   "name": "a_0D16",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3351,
   "name": "a_0D17",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3352,
   "name": "d_0D18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3565,
   "name": "j_0DED",
   "type": "Jump",
   "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": 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": 5444,
   "name": "a_1544",
   "type": "AbsoluteAddress",
   "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": 7236,
   "name": "a_1C44",
   "type": "AbsoluteAddress",
   "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": 10325,
   "name": "a_2855",
   "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": 10342,
   "name": "game_over_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "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": 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": "ending_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "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": 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": 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": 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": 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": 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": 16624,
   "name": "f_40F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16625,
   "name": "f_40F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16640,
   "name": "f_4100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16647,
   "name": "f_4107",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16648,
   "name": "f_4108",
   "type": "Field",
   "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": 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": 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": 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": 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": 16864,
   "name": "f_41E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16865,
   "name": "f_41E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16896,
   "name": "f_4200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16904,
   "name": "f_4208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16905,
   "name": "f_4209",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16944,
   "name": "f_4230",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16945,
   "name": "f_4231",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16984,
   "name": "f_4258",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16985,
   "name": "f_4259",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17024,
   "name": "f_4280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17025,
   "name": "f_4281",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17064,
   "name": "f_42A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17065,
   "name": "f_42A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17104,
   "name": "f_42D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17144,
   "name": "f_42F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17152,
   "name": "f_4300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17184,
   "name": "f_4320",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17191,
   "name": "f_4327",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17192,
   "name": "f_4328",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17224,
   "name": "f_4348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17231,
   "name": "f_434F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17232,
   "name": "f_4350",
   "type": "Field",
   "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": 17344,
   "name": "f_43C0",
   "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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 17888,
   "name": "f_45E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17889,
   "name": "f_45E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17928,
   "name": "f_4608",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17929,
   "name": "f_4609",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17968,
   "name": "f_4630",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17969,
   "name": "f_4631",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18008,
   "name": "f_4658",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18009,
   "name": "f_4659",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18048,
   "name": "f_4680",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18049,
   "name": "f_4681",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18088,
   "name": "f_46A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18089,
   "name": "f_46A9",
   "type": "Field",
   "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": 21376,
   "name": "f_5380",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24576,
   "name": "ending_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "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": 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": 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": 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": 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": 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": 55536,
   "name": "f_D8F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55537,
   "name": "f_D8F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55552,
   "name": "f_D900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55559,
   "name": "f_D907",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55560,
   "name": "f_D908",
   "type": "Field",
   "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": 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": 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": 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": 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": 55776,
   "name": "f_D9E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55777,
   "name": "f_D9E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55808,
   "name": "f_DA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55816,
   "name": "f_DA08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55817,
   "name": "f_DA09",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55856,
   "name": "f_DA30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55857,
   "name": "f_DA31",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55896,
   "name": "f_DA58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55897,
   "name": "f_DA59",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55936,
   "name": "f_DA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55937,
   "name": "f_DA81",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55976,
   "name": "f_DAA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55977,
   "name": "f_DAA9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56016,
   "name": "f_DAD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56056,
   "name": "f_DAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56096,
   "name": "f_DB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56136,
   "name": "f_DB48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56176,
   "name": "f_DB70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "s_E000",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 57345,
   "name": "s_E001",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 57347,
   "name": "s_E003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 57361,
   "name": "b_E011",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57363,
   "name": "j_E013",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57405,
   "name": "b_E03D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57420,
   "name": "b_E04C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57443,
   "name": "b_E063",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57494,
   "name": "j_E096",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57513,
   "name": "b_E0A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57531,
   "name": "b_E0BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57632,
   "name": "b_E120",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57639,
   "name": "b_E127",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57658,
   "name": "b_E13A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57685,
   "name": "j_E155",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57735,
   "name": "b_E187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57738,
   "name": "j_E18A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57765,
   "name": "b_E1A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57788,
   "name": "b_E1BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57803,
   "name": "b_E1CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57818,
   "name": "b_E1DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57848,
   "name": "b_E1F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57870,
   "name": "b_E20E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57885,
   "name": "b_E21D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57925,
   "name": "f_E245",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57926,
   "name": "a_E246",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57927,
   "name": "a_E247",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57940,
   "name": "b_E254",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57966,
   "name": "b_E26E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57984,
   "name": "b_E280",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58020,
   "name": "b_E2A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58032,
   "name": "b_E2B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58106,
   "name": "b_E2FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58161,
   "name": "j_E331",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58194,
   "name": "b_E352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58203,
   "name": "b_E35B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58224,
   "name": "b_E370",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58245,
   "name": "b_E385",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58255,
   "name": "j_E38F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58261,
   "name": "b_E395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58264,
   "name": "j_E398",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58271,
   "name": "j_E39F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58299,
   "name": "a_E3BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58300,
   "name": "a_E3BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58301,
   "name": "b_E3BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58318,
   "name": "j_E3CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58496,
   "name": "s_E480",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58560,
   "name": "a_E4C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58562,
   "name": "a_E4C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58563,
   "name": "a_E4C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58564,
   "name": "a_E4C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58565,
   "name": "a_E4C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58566,
   "name": "a_E4C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58567,
   "name": "f_E4C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58570,
   "name": "f_E4CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58573,
   "name": "f_E4CD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58576,
   "name": "f_E4D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58585,
   "name": "f_E4D9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58588,
   "name": "f_E4DC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58597,
   "name": "f_E4E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58600,
   "name": "f_E4E8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58603,
   "name": "f_E4EB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58606,
   "name": "f_E4EE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58609,
   "name": "f_E4F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58612,
   "name": "f_E4F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58615,
   "name": "f_E4F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58618,
   "name": "f_E4FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58621,
   "name": "f_E4FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58624,
   "name": "KERNAL_IOBASEj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 58627,
   "name": "f_E503",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58630,
   "name": "a_E506",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58633,
   "name": "f_E509",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58641,
   "name": "f_E511",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58644,
   "name": "f_E514",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58647,
   "name": "f_E517",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58650,
   "name": "f_E51A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58653,
   "name": "f_E51D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58656,
   "name": "f_E520",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58659,
   "name": "f_E523",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58662,
   "name": "f_E526",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58665,
   "name": "f_E529",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58668,
   "name": "f_E52C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58671,
   "name": "f_E52F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58674,
   "name": "f_E532",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58677,
   "name": "f_E535",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58680,
   "name": "f_E538",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58683,
   "name": "f_E53B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58686,
   "name": "f_E53E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58689,
   "name": "f_E541",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58692,
   "name": "a_E544",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58693,
   "name": "a_E545",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58694,
   "name": "a_E546",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58695,
   "name": "a_E547",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58697,
   "name": "f_E549",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58700,
   "name": "f_E54C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58703,
   "name": "f_E54F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58706,
   "name": "f_E552",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58717,
   "name": "f_E55D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58728,
   "name": "f_E568",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58824,
   "name": "f_E5C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58920,
   "name": "j_E628",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58926,
   "name": "a_E62E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58930,
   "name": "b_E632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58963,
   "name": "b_E653",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58978,
   "name": "f_E662",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58994,
   "name": "f_E672",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59010,
   "name": "f_E682",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59024,
   "name": "f_E690",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59038,
   "name": "f_E69E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59052,
   "name": "f_E6AC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59066,
   "name": "f_E6BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59079,
   "name": "a_E6C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59080,
   "name": "f_E6C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59094,
   "name": "f_E6D6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59108,
   "name": "f_E6E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59122,
   "name": "f_E6F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59136,
   "name": "f_E700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59150,
   "name": "f_E70E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59164,
   "name": "f_E71C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59178,
   "name": "f_E72A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59192,
   "name": "f_E738",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59206,
   "name": "f_E746",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59220,
   "name": "f_E754",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59234,
   "name": "f_E762",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59245,
   "name": "f_E76D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59438,
   "name": "f_E82E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59439,
   "name": "f_E82F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59569,
   "name": "f_E8B1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59573,
   "name": "f_E8B5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59577,
   "name": "f_E8B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59581,
   "name": "f_E8BD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59585,
   "name": "f_E8C1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59594,
   "name": "f_E8CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59668,
   "name": "a_E914",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59669,
   "name": "s_E915",
   "type": "Subroutine",
   "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": "j_E983",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60518,
   "name": "j_EC66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60681,
   "name": "KERNAL_TALKj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60684,
   "name": "KERNAL_LISTENj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60762,
   "name": "s_ED5A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60857,
   "name": "KERNAL_SECONDj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60871,
   "name": "KERNAL_TKSAj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60893,
   "name": "KERNAL_CIOUTj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60926,
   "name": "KERNAL_UNLSNj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60947,
   "name": "KERNAL_ACPTRj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 61090,
   "name": "s_EEA2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61423,
   "name": "s_EFEF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61756,
   "name": "s_F13C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61790,
   "name": "s_F15E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61824,
   "name": "s_F180",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61964,
   "name": "s_F20C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 61997,
   "name": "s_F22D",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62068,
   "name": "s_F274",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62097,
   "name": "KERNAL_CLOSEj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62131,
   "name": "s_F2B3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62227,
   "name": "a_F313",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62228,
   "name": "s_F314",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62255,
   "name": "KERNAL_CLALLj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62282,
   "name": "KERNAL_OPENj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62293,
   "name": "a_F355",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62297,
   "name": "a_F359",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62299,
   "name": "s_F35B",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62323,
   "name": "a_F373",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62325,
   "name": "s_F375",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62448,
   "name": "s_F3F0",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62497,
   "name": "a_F421",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62498,
   "name": "a_F422",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62499,
   "name": "a_F423",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62622,
   "name": "KERNAL_LOADj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 62930,
   "name": "s_F5D2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62933,
   "name": "s_F5D5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "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": 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": 2304,
   "type": "line",
   "text": "The ending, from the file 111, entered from $375C when the last door is taken, with $32 saying who was played (1 Riggs, 0 Murtaugh). Loads that character's portrait (MEL and ME0 for Riggs, MUR and MU0 for Murtaugh: the screen at $4000, the characters at $6000) and colours (ME1 or MU1, at $0D11), then MUSI at $E000 over the game's code, and starts tune 0, the title's. Sets VIC bank 1 with the screen at $4000 and characters at $6000, multicolour characters, the four colours from $0D14-$0D17, colours each cell from $0D18 by its character, and blanks rows 20-24."
  },
  {
   "address": 2624,
   "type": "line",
   "text": "Plays a frame of music ($E003) each time the raster reaches line $50, for ever: the ending has no way out but a reset."
  },
  {
   "address": 2637,
   "type": "line",
   "text": "The ending's file names, three letters each, then MUSI: MEL, ME0, ME1 (Riggs's screen, characters and colours), MUR, MU0, MU1 (Murtaugh's), MUSI."
  },
  {
   "address": 2659,
   "type": "line",
   "text": "The fast loader again, a third copy of the game's $03C3 at another address."
  },
  {
   "address": 2737,
   "type": "line",
   "text": "The same 238 bytes of 1541 drive code as the game's $0416, uploaded and started by $0B9F."
  },
  {
   "address": 2975,
   "type": "line",
   "text": "The third copy of the game's $0504: finds the file through the KERNAL, uploads the drive code from $0AB1 and receives the file two bits at a time."
  },
  {
   "address": 3014,
   "type": "line",
   "text": "The drive commands \"M-W\" and \"M-E\" with the drive address $06C7."
  },
  {
   "address": 3022,
   "type": "line",
   "text": "The file was found: uploads the drive code and receives the file."
  },
  {
   "address": 3233,
   "type": "line",
   "text": "Reads a block's load address from the drive (as $0606)."
  },
  {
   "address": 3260,
   "type": "line",
   "text": "Receives one byte from the drive (as $0621)."
  },
  {
   "address": 3281,
   "type": "line",
   "text": "An instruction of the ending's loader (the PAL/NTSC timing branch). The game's code beneath names this address as its arc flag, which the ending's load has replaced."
  },
  {
   "address": 3296,
   "type": "line",
   "text": "The middle of the ending's byte receiver. The game's code beneath names this address as an RTS of its own, which the ending's load has replaced."
  },
  {
   "address": 3328,
   "type": "line",
   "text": "Stores a byte with all ROMs and the I/O banked out (as $0665)."
  },
  {
   "address": 3342,
   "type": "line",
   "text": "Three bytes of the file 111 after its code, not read; ME1's load begins just after them."
  },
  {
   "address": 3345,
   "type": "line",
   "text": "The colour file ME1 (MU1 for Murtaugh), loaded here: three bytes, then the border and three background colours, then a colour for each of the 256 characters."
  },
  {
   "address": 3348,
   "type": "line",
   "text": "The ending's border colour."
  },
  {
   "address": 3349,
   "type": "line",
   "text": "Its background colour 0."
  },
  {
   "address": 3350,
   "type": "line",
   "text": "Its background colour 1."
  },
  {
   "address": 3351,
   "type": "line",
   "text": "Its background colour 2."
  },
  {
   "address": 3352,
   "type": "line",
   "text": "The colour of each of the portrait's 256 characters, written into colour RAM by $0A03."
  },
  {
   "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": 16384,
   "type": "line",
   "text": "The ending's picture, the file MEL (MUR for Murtaugh): 1000 character codes, the portrait, the thumb and WELL DONE! THE MAGIC CONTINUES."
  },
  {
   "address": 16385,
   "type": "line",
   "text": "Row 0, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16407,
   "type": "line",
   "text": "Row 0, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16408,
   "type": "line",
   "text": "Row 0, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16424,
   "type": "line",
   "text": "Row 1, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16425,
   "type": "line",
   "text": "Row 1, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16447,
   "type": "line",
   "text": "Row 1, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16448,
   "type": "line",
   "text": "Row 1, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16464,
   "type": "line",
   "text": "Row 2, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16465,
   "type": "line",
   "text": "Row 2, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16487,
   "type": "line",
   "text": "Row 2, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16488,
   "type": "line",
   "text": "Row 2, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16504,
   "type": "line",
   "text": "Row 3, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16505,
   "type": "line",
   "text": "Row 3, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16527,
   "type": "line",
   "text": "Row 3, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16528,
   "type": "line",
   "text": "Row 3, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16544,
   "type": "line",
   "text": "Row 4, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16545,
   "type": "line",
   "text": "Row 4, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16567,
   "type": "line",
   "text": "Row 4, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16568,
   "type": "line",
   "text": "Row 4, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16584,
   "type": "line",
   "text": "Row 5, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16585,
   "type": "line",
   "text": "Row 5, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16607,
   "type": "line",
   "text": "Row 5, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16608,
   "type": "line",
   "text": "Row 5, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16624,
   "type": "line",
   "text": "Row 6, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16625,
   "type": "line",
   "text": "Row 6, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16640,
   "type": "line",
   "text": "Row 6, column 16 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16647,
   "type": "line",
   "text": "Row 6, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16648,
   "type": "line",
   "text": "Row 6, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16664,
   "type": "line",
   "text": "Row 7, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16665,
   "type": "line",
   "text": "Row 7, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16687,
   "type": "line",
   "text": "Row 7, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16688,
   "type": "line",
   "text": "Row 7, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16704,
   "type": "line",
   "text": "Row 8, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16705,
   "type": "line",
   "text": "Row 8, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16727,
   "type": "line",
   "text": "Row 8, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16728,
   "type": "line",
   "text": "Row 8, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16744,
   "type": "line",
   "text": "Row 9, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16745,
   "type": "line",
   "text": "Row 9, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16767,
   "type": "line",
   "text": "Row 9, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16768,
   "type": "line",
   "text": "Row 9, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16784,
   "type": "line",
   "text": "Row 10, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16785,
   "type": "line",
   "text": "Row 10, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16807,
   "type": "line",
   "text": "Row 10, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16808,
   "type": "line",
   "text": "Row 10, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16824,
   "type": "line",
   "text": "Row 11, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16825,
   "type": "line",
   "text": "Row 11, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16847,
   "type": "line",
   "text": "Row 11, column 23 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16848,
   "type": "line",
   "text": "Row 11, column 24 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16864,
   "type": "line",
   "text": "Row 12, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16865,
   "type": "line",
   "text": "Row 12, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16896,
   "type": "line",
   "text": "Row 12, column 32 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16904,
   "type": "line",
   "text": "Row 13, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16905,
   "type": "line",
   "text": "Row 13, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16944,
   "type": "line",
   "text": "Row 14, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16945,
   "type": "line",
   "text": "Row 14, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16984,
   "type": "line",
   "text": "Row 15, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 16985,
   "type": "line",
   "text": "Row 15, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17024,
   "type": "line",
   "text": "Row 16, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17025,
   "type": "line",
   "text": "Row 16, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17064,
   "type": "line",
   "text": "Row 17, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17065,
   "type": "line",
   "text": "Row 17, column 1 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17104,
   "type": "line",
   "text": "Row 18, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17144,
   "type": "line",
   "text": "Row 19, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17152,
   "type": "line",
   "text": "Row 19, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17184,
   "type": "line",
   "text": "Row 20, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17191,
   "type": "line",
   "text": "Row 20, column 7 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17192,
   "type": "line",
   "text": "Row 20, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17224,
   "type": "line",
   "text": "Row 21, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17231,
   "type": "line",
   "text": "Row 21, column 7 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17232,
   "type": "line",
   "text": "Row 21, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17264,
   "type": "line",
   "text": "Row 22, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17271,
   "type": "line",
   "text": "Row 22, column 7 of the ending's picture, named only by the game's code beneath as the base of an indexed copy."
  },
  {
   "address": 17272,
   "type": "line",
   "text": "Row 22, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17304,
   "type": "line",
   "text": "Row 23, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17311,
   "type": "line",
   "text": "Row 23, column 7 of the ending's picture, named only by the game's code beneath as the base of an indexed copy."
  },
  {
   "address": 17312,
   "type": "line",
   "text": "Row 23, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17344,
   "type": "line",
   "text": "Row 24, column 0 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "address": 17351,
   "type": "line",
   "text": "Row 24, column 7 of the ending's picture, named only by the game's code beneath as the base of an indexed copy."
  },
  {
   "address": 17352,
   "type": "line",
   "text": "Row 24, column 8 of the ending's picture (MEL or MUR). The game's code still in memory beneath (its scroll and panel routines) names this address as the base of an indexed copy; the ending does not use it as one."
  },
  {
   "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": 24576,
   "type": "line",
   "text": "The ending's character set, the file ME0 (MU0 for Murtaugh), 256 multicolour characters."
  },
  {
   "address": 25600,
   "type": "line",
   "text": "The ending's characters 128-255."
  },
  {
   "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": 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."
  }
 ]
}