{
 "schema": 1,
 "platform": "c64",
 "game": "mayhem-in-monsterland",
 "part": "engine",
 "build": "Apex disk release, the contributor's own G64 images of both sides; sha256 of each in orientation.md",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    0,
    255,
    "zero page: the processor port and the game's variables, all written at run time; at the hand-over it holds what the loader left"
   ],
   [
    23040,
    45311,
    "6 parts: Cherryland, Jellyland, Pipeland and others"
   ]
  ],
  "extra": [],
  "elsewhere": [
   [
    23040,
    45311,
    "6 parts: Cherryland, Jellyland, Pipeland and others"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 828,
   "type": "Undefined"
  },
  {
   "start": 829,
   "end": 2205,
   "type": "Code"
  },
  {
   "start": 2206,
   "end": 2405,
   "type": "Undefined"
  },
  {
   "start": 2406,
   "end": 2671,
   "type": "Byte"
  },
  {
   "start": 2672,
   "end": 3105,
   "type": "Code"
  },
  {
   "start": 3106,
   "end": 3134,
   "type": "Undefined"
  },
  {
   "start": 3135,
   "end": 3203,
   "type": "Byte"
  },
  {
   "start": 3204,
   "end": 3373,
   "type": "Code"
  },
  {
   "start": 3374,
   "end": 4224,
   "type": "Byte"
  },
  {
   "start": 4225,
   "end": 4314,
   "type": "Code"
  },
  {
   "start": 4315,
   "end": 4332,
   "type": "Byte"
  },
  {
   "start": 4333,
   "end": 4346,
   "type": "Code"
  },
  {
   "start": 4347,
   "end": 4351,
   "type": "Byte"
  },
  {
   "start": 4352,
   "end": 4807,
   "type": "Code"
  },
  {
   "start": 4808,
   "end": 4942,
   "type": "Byte"
  },
  {
   "start": 4943,
   "end": 5235,
   "type": "Code"
  },
  {
   "start": 5236,
   "end": 5241,
   "type": "Byte"
  },
  {
   "start": 5242,
   "end": 5616,
   "type": "Code"
  },
  {
   "start": 5617,
   "end": 6143,
   "type": "Byte"
  },
  {
   "start": 6144,
   "end": 6432,
   "type": "Code"
  },
  {
   "start": 6433,
   "end": 6457,
   "type": "Undefined"
  },
  {
   "start": 6458,
   "end": 6492,
   "type": "Code"
  },
  {
   "start": 6493,
   "end": 6507,
   "type": "Byte"
  },
  {
   "start": 6508,
   "end": 6790,
   "type": "Code"
  },
  {
   "start": 6791,
   "end": 6838,
   "type": "Undefined"
  },
  {
   "start": 6839,
   "end": 6889,
   "type": "Code"
  },
  {
   "start": 6890,
   "end": 6939,
   "type": "Byte"
  },
  {
   "start": 6940,
   "end": 6969,
   "type": "Code"
  },
  {
   "start": 6970,
   "end": 7154,
   "type": "Undefined"
  },
  {
   "start": 7155,
   "end": 7176,
   "type": "Code"
  },
  {
   "start": 7177,
   "end": 7180,
   "type": "Undefined"
  },
  {
   "start": 7181,
   "end": 7192,
   "type": "Code"
  },
  {
   "start": 7193,
   "end": 7193,
   "type": "Undefined"
  },
  {
   "start": 7194,
   "end": 9181,
   "type": "Code"
  },
  {
   "start": 9182,
   "end": 9197,
   "type": "Byte"
  },
  {
   "start": 9198,
   "end": 9862,
   "type": "Code"
  },
  {
   "start": 9863,
   "end": 9886,
   "type": "Byte"
  },
  {
   "start": 9887,
   "end": 10660,
   "type": "Code"
  },
  {
   "start": 10661,
   "end": 10662,
   "type": "Byte"
  },
  {
   "start": 10663,
   "end": 10731,
   "type": "Code"
  },
  {
   "start": 10732,
   "end": 10734,
   "type": "Byte"
  },
  {
   "start": 10735,
   "end": 10925,
   "type": "Code"
  },
  {
   "start": 10926,
   "end": 10926,
   "type": "Undefined"
  },
  {
   "start": 10927,
   "end": 11115,
   "type": "Code"
  },
  {
   "start": 11116,
   "end": 11117,
   "type": "Byte"
  },
  {
   "start": 11118,
   "end": 11432,
   "type": "Code"
  },
  {
   "start": 11433,
   "end": 11434,
   "type": "Byte"
  },
  {
   "start": 11435,
   "end": 11992,
   "type": "Code"
  },
  {
   "start": 11993,
   "end": 12024,
   "type": "Byte"
  },
  {
   "start": 12025,
   "end": 12273,
   "type": "Code"
  },
  {
   "start": 12274,
   "end": 12305,
   "type": "Byte"
  },
  {
   "start": 12306,
   "end": 13357,
   "type": "Code"
  },
  {
   "start": 13358,
   "end": 13467,
   "type": "Byte"
  },
  {
   "start": 13468,
   "end": 13542,
   "type": "Code"
  },
  {
   "start": 13543,
   "end": 13575,
   "type": "Byte"
  },
  {
   "start": 13576,
   "end": 13901,
   "type": "Code"
  },
  {
   "start": 13902,
   "end": 13902,
   "type": "Byte"
  },
  {
   "start": 13903,
   "end": 14228,
   "type": "Code"
  },
  {
   "start": 14229,
   "end": 14229,
   "type": "Byte"
  },
  {
   "start": 14230,
   "end": 14306,
   "type": "Code"
  },
  {
   "start": 14307,
   "end": 14312,
   "type": "Byte"
  },
  {
   "start": 14313,
   "end": 14470,
   "type": "Code"
  },
  {
   "start": 14471,
   "end": 14471,
   "type": "Byte"
  },
  {
   "start": 14472,
   "end": 15162,
   "type": "Code"
  },
  {
   "start": 15163,
   "end": 15166,
   "type": "Byte"
  },
  {
   "start": 15167,
   "end": 16179,
   "type": "Code"
  },
  {
   "start": 16180,
   "end": 16209,
   "type": "Byte"
  },
  {
   "start": 16210,
   "end": 16261,
   "type": "Code"
  },
  {
   "start": 16262,
   "end": 17407,
   "type": "Byte"
  },
  {
   "start": 17408,
   "end": 17976,
   "type": "Code"
  },
  {
   "start": 17977,
   "end": 18021,
   "type": "Byte"
  },
  {
   "start": 18022,
   "end": 18100,
   "type": "Code"
  },
  {
   "start": 18101,
   "end": 23039,
   "type": "Byte"
  },
  {
   "start": 45312,
   "end": 45433,
   "type": "Byte"
  },
  {
   "start": 45434,
   "end": 45625,
   "type": "Code"
  },
  {
   "start": 45626,
   "end": 45714,
   "type": "Byte"
  },
  {
   "start": 45715,
   "end": 46000,
   "type": "Code"
  },
  {
   "start": 46001,
   "end": 46140,
   "type": "Byte"
  },
  {
   "start": 46141,
   "end": 46205,
   "type": "Code"
  },
  {
   "start": 46206,
   "end": 46247,
   "type": "Byte"
  },
  {
   "start": 46248,
   "end": 46777,
   "type": "Code"
  },
  {
   "start": 46778,
   "end": 46980,
   "type": "Byte"
  },
  {
   "start": 46981,
   "end": 47058,
   "type": "Code"
  },
  {
   "start": 47059,
   "end": 47062,
   "type": "Byte"
  },
  {
   "start": 47063,
   "end": 47116,
   "type": "Code"
  },
  {
   "start": 47117,
   "end": 47126,
   "type": "Byte"
  },
  {
   "start": 47127,
   "end": 47349,
   "type": "Code"
  },
  {
   "start": 47350,
   "end": 47623,
   "type": "Byte"
  },
  {
   "start": 47624,
   "end": 47724,
   "type": "Code"
  },
  {
   "start": 47725,
   "end": 47726,
   "type": "Byte"
  },
  {
   "start": 47727,
   "end": 47835,
   "type": "Code"
  },
  {
   "start": 47836,
   "end": 47976,
   "type": "Byte"
  },
  {
   "start": 47977,
   "end": 48216,
   "type": "Code"
  },
  {
   "start": 48217,
   "end": 48280,
   "type": "Byte"
  },
  {
   "start": 48281,
   "end": 48434,
   "type": "Code"
  },
  {
   "start": 48435,
   "end": 48438,
   "type": "Byte"
  },
  {
   "start": 48439,
   "end": 48552,
   "type": "Code"
  },
  {
   "start": 48553,
   "end": 48576,
   "type": "Byte"
  },
  {
   "start": 48577,
   "end": 48696,
   "type": "Code"
  },
  {
   "start": 48697,
   "end": 48713,
   "type": "Byte"
  },
  {
   "start": 48714,
   "end": 49096,
   "type": "Code"
  },
  {
   "start": 49097,
   "end": 49151,
   "type": "Byte"
  },
  {
   "start": 49152,
   "end": 49176,
   "type": "Code"
  },
  {
   "start": 49177,
   "end": 49179,
   "type": "Byte"
  },
  {
   "start": 49180,
   "end": 49475,
   "type": "Code"
  },
  {
   "start": 49476,
   "end": 49545,
   "type": "Byte"
  },
  {
   "start": 49546,
   "end": 52052,
   "type": "Code"
  },
  {
   "start": 52053,
   "end": 52076,
   "type": "Byte"
  },
  {
   "start": 52077,
   "end": 52089,
   "type": "Code"
  },
  {
   "start": 52090,
   "end": 52131,
   "type": "Byte"
  },
  {
   "start": 52132,
   "end": 52132,
   "type": "Undefined"
  },
  {
   "start": 52133,
   "end": 52908,
   "type": "Code"
  },
  {
   "start": 52909,
   "end": 52940,
   "type": "Byte"
  },
  {
   "start": 52941,
   "end": 52960,
   "type": "Code"
  },
  {
   "start": 52961,
   "end": 53003,
   "type": "Byte"
  },
  {
   "start": 53004,
   "end": 53007,
   "type": "Undefined"
  },
  {
   "start": 53008,
   "end": 53013,
   "type": "Byte"
  },
  {
   "start": 53014,
   "end": 53015,
   "type": "Undefined"
  },
  {
   "start": 53016,
   "end": 53120,
   "type": "Byte"
  },
  {
   "start": 53121,
   "end": 53131,
   "type": "Undefined"
  },
  {
   "start": 53132,
   "end": 53146,
   "type": "Byte"
  },
  {
   "start": 53147,
   "end": 53158,
   "type": "Word"
  },
  {
   "start": 53159,
   "end": 55149,
   "type": "Byte"
  },
  {
   "start": 55150,
   "end": 55164,
   "type": "Code"
  },
  {
   "start": 55165,
   "end": 55294,
   "type": "Byte"
  },
  {
   "start": 55295,
   "end": 56320,
   "type": "Undefined"
  },
  {
   "start": 56321,
   "end": 56575,
   "type": "Byte"
  },
  {
   "start": 56576,
   "end": 56576,
   "type": "Undefined"
  },
  {
   "start": 56577,
   "end": 56590,
   "type": "Byte"
  },
  {
   "start": 56591,
   "end": 56591,
   "type": "Undefined"
  },
  {
   "start": 56592,
   "end": 57686,
   "type": "Byte"
  },
  {
   "start": 57687,
   "end": 58045,
   "type": "Code"
  },
  {
   "start": 58046,
   "end": 58065,
   "type": "Byte"
  },
  {
   "start": 58066,
   "end": 58225,
   "type": "Code"
  },
  {
   "start": 58226,
   "end": 58353,
   "type": "Byte"
  },
  {
   "start": 58354,
   "end": 58357,
   "type": "Undefined"
  },
  {
   "start": 58358,
   "end": 58405,
   "type": "Byte"
  },
  {
   "start": 58406,
   "end": 58558,
   "type": "Code"
  },
  {
   "start": 58559,
   "end": 58564,
   "type": "Byte"
  },
  {
   "start": 58565,
   "end": 58813,
   "type": "Code"
  },
  {
   "start": 58814,
   "end": 58814,
   "type": "Undefined"
  },
  {
   "start": 58815,
   "end": 60655,
   "type": "Code"
  },
  {
   "start": 60656,
   "end": 60656,
   "type": "Undefined"
  },
  {
   "start": 60657,
   "end": 60860,
   "type": "Code"
  },
  {
   "start": 60861,
   "end": 60862,
   "type": "Byte"
  },
  {
   "start": 60863,
   "end": 60886,
   "type": "Code"
  },
  {
   "start": 60887,
   "end": 60942,
   "type": "Byte"
  },
  {
   "start": 60943,
   "end": 60944,
   "type": "Undefined"
  },
  {
   "start": 60945,
   "end": 61367,
   "type": "Code"
  },
  {
   "start": 61368,
   "end": 61430,
   "type": "Byte"
  },
  {
   "start": 61431,
   "end": 61525,
   "type": "Code"
  },
  {
   "start": 61526,
   "end": 61565,
   "type": "Byte"
  },
  {
   "start": 61566,
   "end": 62022,
   "type": "Code"
  },
  {
   "start": 62023,
   "end": 62054,
   "type": "Byte"
  },
  {
   "start": 62055,
   "end": 62579,
   "type": "Code"
  },
  {
   "start": 62580,
   "end": 62597,
   "type": "Undefined"
  },
  {
   "start": 62598,
   "end": 65535,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpp_01",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "a_0039",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "a_003A",
   "type": "AbsoluteAddress",
   "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": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "zpa_49",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpp_4B",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpp_4D",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpa_4E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "zpa_51",
   "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": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpa_55",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "zpa_7E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpa_7F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 128,
   "name": "zpa_80",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpa_82",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpp_83",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpa_85",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpp_86",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 135,
   "name": "zpa_87",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpp_88",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpa_89",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpp_8A",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 139,
   "name": "zpa_8B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 140,
   "name": "zpp_8C",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 141,
   "name": "zpa_8D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 142,
   "name": "zpp_8E",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpa_8F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "a_00A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpf_C6",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpf_C7",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpp_C8",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpp_CA",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 204,
   "name": "zpp_CC",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 206,
   "name": "zpp_CE",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpp_D0",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 212,
   "name": "zpp_D4",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 213,
   "name": "zpa_D5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 217,
   "name": "f_00D9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 232,
   "name": "f_00E8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 255,
   "name": "zpa_FF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 256,
   "name": "f_0100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 376,
   "name": "f_0178",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 379,
   "name": "f_017B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "obj_script_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 527,
   "name": "obj_script2_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 542,
   "name": "obj_slot_t3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 557,
   "name": "obj_anim_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 572,
   "name": "obj_active",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 587,
   "name": "kernal_work_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 679,
   "name": "panel_glyph_row_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 695,
   "name": "panel_glyph_row_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 711,
   "name": "panel_glyph_row_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 727,
   "name": "page2_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 768,
   "name": "basic_vectors_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 788,
   "name": "vec_irq_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 789,
   "name": "vec_irq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 790,
   "name": "vec_brk_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 792,
   "name": "vec_nmi_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 828,
   "name": "music_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 829,
   "name": "music_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 845,
   "name": "b_034D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 865,
   "name": "b_0361",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 876,
   "name": "j_036C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 907,
   "name": "b_038B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 912,
   "name": "b_0390",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 951,
   "name": "b_03B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 982,
   "name": "a_03D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 983,
   "name": "a_03D7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 989,
   "name": "b_03DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1015,
   "name": "b_03F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1023,
   "name": "b_03FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1034,
   "name": "a_040A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1038,
   "name": "a_040E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1048,
   "name": "b_0418",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1065,
   "name": "b_0429",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1068,
   "name": "j_042C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1074,
   "name": "b_0432",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1077,
   "name": "b_0435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1082,
   "name": "b_043A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1090,
   "name": "b_0442",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1098,
   "name": "b_044A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1106,
   "name": "b_0452",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1118,
   "name": "a_045E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1124,
   "name": "music_note_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1138,
   "name": "b_0472",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1161,
   "name": "r_0489",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1162,
   "name": "b_048A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1200,
   "name": "b_04B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1250,
   "name": "b_04E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1261,
   "name": "b_04ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1266,
   "name": "b_04F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1283,
   "name": "a_0503",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1321,
   "name": "b_0529",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1327,
   "name": "music_init_body",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1331,
   "name": "b_0533",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1339,
   "name": "b_053B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1388,
   "name": "b_056C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1418,
   "name": "a_058A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1425,
   "name": "music_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1430,
   "name": "music_silence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1432,
   "name": "b_0598",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1440,
   "name": "a_05A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1444,
   "name": "mcmd_loop_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1447,
   "name": "b_05A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1471,
   "name": "r_05BF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1472,
   "name": "mcmd_loop_mark",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1473,
   "name": "b_05C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1490,
   "name": "mcmd_loop2_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1498,
   "name": "mcmd_loop2_mark",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1504,
   "name": "mcmd_transpose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1508,
   "name": "mcmd_release_or_wavetime",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1518,
   "name": "b_05EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1522,
   "name": "mcmd_wavetable_or_filtervoice",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1532,
   "name": "b_05FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "mcmd_pulse_bounds",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1551,
   "name": "mcmd_vibrato_period",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1555,
   "name": "mcmd_filter_res",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1559,
   "name": "mcmd_filter_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1563,
   "name": "mcmd_volume_add",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1571,
   "name": "music_pulse_sweep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1615,
   "name": "b_064F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1630,
   "name": "b_065E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1633,
   "name": "r_0661",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1634,
   "name": "b_0662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1652,
   "name": "r_0674",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1653,
   "name": "mcmd_waveform",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1657,
   "name": "music_arpeggio",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1667,
   "name": "b_0683",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1679,
   "name": "b_068F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1697,
   "name": "j_06A1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1701,
   "name": "b_06A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1704,
   "name": "music_vibrato",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1713,
   "name": "b_06B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1730,
   "name": "b_06C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1733,
   "name": "j_06C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1756,
   "name": "b_06DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1760,
   "name": "mcmd_arp2_interval",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1764,
   "name": "mcmd_filter_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1778,
   "name": "mcmd_tempo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1782,
   "name": "mcmd_arp1_interval",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1785,
   "name": "mcmd_length_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1786,
   "name": "mcmd_transpose_add",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1794,
   "name": "mcmd_vibrato_delay",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1798,
   "name": "mcmd_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1823,
   "name": "mcmd_detune",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1827,
   "name": "music_freq_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1848,
   "name": "music_freq_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1866,
   "name": "j_074A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1872,
   "name": "r_0750",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1873,
   "name": "music_note_freq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1897,
   "name": "mcmd_slide_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1901,
   "name": "music_slide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1913,
   "name": "r_0779",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1914,
   "name": "b_077A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1934,
   "name": "b_078E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1955,
   "name": "b_07A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1970,
   "name": "b_07B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1993,
   "name": "b_07C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2012,
   "name": "b_07DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2028,
   "name": "j_07EC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2031,
   "name": "j_07EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2044,
   "name": "mcmd_pulse_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2048,
   "name": "music_ptr_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2059,
   "name": "r_080B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2060,
   "name": "music_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2072,
   "name": "mcmd_slide_delay",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2076,
   "name": "mcmd_vibrato_depth",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2080,
   "name": "mcmd_slide_mode",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2084,
   "name": "mcmd_arp_mode",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2088,
   "name": "mcmd_divider",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2092,
   "name": "mcmd_attack_decay",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2096,
   "name": "mcmd_volume",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2100,
   "name": "mcmd_slide_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2111,
   "name": "mcmd_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2159,
   "name": "mcmd_sustain_release",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2163,
   "name": "mcmd_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2171,
   "name": "music_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2176,
   "name": "music_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2180,
   "name": "a_0884",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2181,
   "name": "b_0885",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2191,
   "name": "a_088F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2197,
   "name": "r_0895",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2198,
   "name": "mcmd_slide_lo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2202,
   "name": "mcmd_pulse_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2205,
   "name": "f_089D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2206,
   "name": "music_filter_voice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2207,
   "name": "music_tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2208,
   "name": "music_tempo_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2209,
   "name": "mv_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2212,
   "name": "mv_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2215,
   "name": "mv_note",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2218,
   "name": "mv_control",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2221,
   "name": "mv_release_at",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2224,
   "name": "mv_arp_mode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2227,
   "name": "mv_wavetable_mode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2230,
   "name": "mv_wavetable_ticks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2233,
   "name": "mv_divider",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2236,
   "name": "music_filter_step_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2237,
   "name": "music_filter_step_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2238,
   "name": "music_filter_start",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2239,
   "name": "mv_slide_mode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2240,
   "name": "f_08C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2242,
   "name": "mv_partner1_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2243,
   "name": "f_08C3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2245,
   "name": "mv_partner1_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2248,
   "name": "mv_slide_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2251,
   "name": "mv_note_age",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2254,
   "name": "mv_vib_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2257,
   "name": "mv_vib_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2260,
   "name": "mv_vib_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2263,
   "name": "mv_arp_phase",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2266,
   "name": "mv_arp1_interval",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2269,
   "name": "mv_arp2_interval",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2272,
   "name": "mv_partner2_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2275,
   "name": "mv_partner2_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2278,
   "name": "mv_div_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2281,
   "name": "mv_div_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2284,
   "name": "mv_detune",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2287,
   "name": "mv_len_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2290,
   "name": "mv_vib_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2293,
   "name": "mv_vib_phase",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2296,
   "name": "mv_pulse_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2299,
   "name": "mv_pulse_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2302,
   "name": "mv_pulse_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2305,
   "name": "mv_transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2308,
   "name": "mv_slide_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2311,
   "name": "mv_slide_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2314,
   "name": "mv_sustain_release",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2317,
   "name": "mv_waveform",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2320,
   "name": "mv_pulse_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2323,
   "name": "mv_attack_decay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2326,
   "name": "mv_pulse_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2329,
   "name": "mv_repeat_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2335,
   "name": "mv_repeat_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2341,
   "name": "mv_repeat_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2347,
   "name": "mv_call_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2350,
   "name": "mv_call2_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2353,
   "name": "mv_call_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2356,
   "name": "mv_call2_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2359,
   "name": "mv_vib_period",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2362,
   "name": "mv_len_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2365,
   "name": "mv_ptr_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2368,
   "name": "mv_ptr_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2371,
   "name": "music_voice_regs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2374,
   "name": "music_base_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2375,
   "name": "music_base_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2376,
   "name": "music_wavetable",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2381,
   "name": "sid_shadow",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2382,
   "name": "f_094E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2383,
   "name": "f_094F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2384,
   "name": "f_0950",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2385,
   "name": "f_0951",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2386,
   "name": "f_0952",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2387,
   "name": "f_0953",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2402,
   "name": "sid_shadow_cutoff_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2403,
   "name": "sid_shadow_cutoff_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2404,
   "name": "sid_shadow_res",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2405,
   "name": "sid_shadow_volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2406,
   "name": "music_cmd_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2443,
   "name": "music_cmd_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2480,
   "name": "music_freq_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2481,
   "name": "f_09B1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2544,
   "name": "music_freq_notes_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2608,
   "name": "music_freq_notes_64",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2672,
   "name": "sfx_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2673,
   "name": "a_0A71",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2674,
   "name": "b_0A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2704,
   "name": "b_0A90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2713,
   "name": "b_0A99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2714,
   "name": "a_0A9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2719,
   "name": "sfx_channel_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2761,
   "name": "b_0AC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2784,
   "name": "b_0AE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2809,
   "name": "b_0AF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2850,
   "name": "b_0B22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2877,
   "name": "b_0B3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2891,
   "name": "b_0B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2898,
   "name": "j_0B52",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2904,
   "name": "b_0B58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2910,
   "name": "a_0B5E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2914,
   "name": "b_0B62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2962,
   "name": "b_0B92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2989,
   "name": "b_0BAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3003,
   "name": "b_0BBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3010,
   "name": "j_0BC2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3016,
   "name": "b_0BC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3022,
   "name": "a_0BCE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3026,
   "name": "b_0BD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3038,
   "name": "b_0BDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3072,
   "name": "b_0C00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3106,
   "name": "sfx_ch_ad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3107,
   "name": "sfx_ch_sr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3108,
   "name": "sfx_ch_lo_bound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3109,
   "name": "sfx_ch_hi_bound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3110,
   "name": "sfx_ch_step_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3111,
   "name": "sfx_ch_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3112,
   "name": "sfx_ch_pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3113,
   "name": "sfx_ch_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3114,
   "name": "sfx_ch_b_lo_bound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3115,
   "name": "sfx_ch_b_hi_bound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3116,
   "name": "sfx_ch_b_step_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3117,
   "name": "sfx_ch_b_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3118,
   "name": "sfx_ch_b_pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3119,
   "name": "sfx_ch_pulse_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3120,
   "name": "sfx_ch_control",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3121,
   "name": "sfx_ch_b_control",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3122,
   "name": "sfx_ch_dur_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3123,
   "name": "sfx_ch_mode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3124,
   "name": "sfx_ch_alt_period",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3125,
   "name": "sfx_ch_dur_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3126,
   "name": "sfx_ch_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3127,
   "name": "sfx_ch_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3128,
   "name": "sfx_ch_b_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3129,
   "name": "sfx_ch_b_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3130,
   "name": "sfx_ch_active",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3131,
   "name": "sfx_ch_layer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3132,
   "name": "sfx_ch_pulse_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3133,
   "name": "sfx_ch_b_pulse_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3134,
   "name": "sfx_ch_alt_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3135,
   "name": "sfx_ch1_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3164,
   "name": "sfx_ch2_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3193,
   "name": "sfx_voice_regs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3196,
   "name": "sfx_block_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3199,
   "name": "sfx_copy_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3204,
   "name": "sfx_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3228,
   "name": "b_0C9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3229,
   "name": "a_0C9D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3230,
   "name": "a_0C9E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3240,
   "name": "a_0CA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3331,
   "name": "b_0D03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3350,
   "name": "b_0D16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3355,
   "name": "sound_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3359,
   "name": "b_0D1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3367,
   "name": "b_0D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3374,
   "name": "sfx_def_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3394,
   "name": "sfx_def_01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3414,
   "name": "sfx_def_02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3434,
   "name": "sfx_def_03",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3454,
   "name": "sfx_def_04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3474,
   "name": "sfx_def_05",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3494,
   "name": "sfx_def_06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3514,
   "name": "sfx_def_07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3534,
   "name": "sfx_def_08",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3554,
   "name": "sfx_def_09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3574,
   "name": "sfx_def_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3582,
   "name": "a_0DFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3594,
   "name": "sfx_def_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3614,
   "name": "sfx_def_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3634,
   "name": "sfx_def_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3654,
   "name": "sfx_def_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3674,
   "name": "sfx_def_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3694,
   "name": "sfx_def_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3714,
   "name": "sfx_def_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3734,
   "name": "sfx_def_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3754,
   "name": "sfx_def_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3774,
   "name": "sfx_def_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3794,
   "name": "sfx_def_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3814,
   "name": "sfx_def_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3834,
   "name": "sfx_def_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3854,
   "name": "sfx_def_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3874,
   "name": "sfx_def_25",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3894,
   "name": "sfx_def_26",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3914,
   "name": "sfx_def_27",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3934,
   "name": "sfx_def_28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3954,
   "name": "sfx_def_29",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3974,
   "name": "sfx_def_30",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3994,
   "name": "sfx_def_31",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4014,
   "name": "sfx_def_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4034,
   "name": "sfx_def_33",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4054,
   "name": "sfx_def_34",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4056,
   "name": "a_0FD8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4074,
   "name": "sfx_defs_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "colour_cycle_16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4104,
   "name": "a_1008",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4112,
   "name": "colour_table_1010",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4144,
   "name": "rasterbar_colours_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4160,
   "name": "rasterbar_colours_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4162,
   "name": "f_1042",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4200,
   "name": "rasterbar_colours_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4209,
   "name": "rasterbar_colours_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4225,
   "name": "loading_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4227,
   "name": "b_1083",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4255,
   "name": "b_109F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4265,
   "name": "b_10A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4274,
   "name": "r_10B2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4275,
   "name": "invert_5480",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4277,
   "name": "b_10B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4289,
   "name": "item_extra_continue",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4296,
   "name": "b_10C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4303,
   "name": "b_10CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4309,
   "name": "lose_life_tail",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4315,
   "name": "panel_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4321,
   "name": "panel_sprite_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4333,
   "name": "digits_match_9041",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4335,
   "name": "b_10EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4346,
   "name": "r_10FA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4347,
   "name": "pad_10fb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4351,
   "name": "f_10FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4352,
   "name": "level_reveal",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4366,
   "name": "b_110E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4411,
   "name": "b_113B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4431,
   "name": "b_114F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4437,
   "name": "a_1155",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4450,
   "name": "b_1162",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4464,
   "name": "a_1170",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4472,
   "name": "b_1178",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4475,
   "name": "b_117B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4480,
   "name": "b_1180",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4481,
   "name": "a_1181",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4489,
   "name": "b_1189",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4498,
   "name": "b_1192",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4501,
   "name": "reveal_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4503,
   "name": "b_1197",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4528,
   "name": "b_11B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4538,
   "name": "b_11BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4548,
   "name": "b_11C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4570,
   "name": "b_11DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4572,
   "name": "b_11DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4589,
   "name": "b_11ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4590,
   "name": "a_11EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4596,
   "name": "b_11F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4606,
   "name": "b_11FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4642,
   "name": "b_1222",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4643,
   "name": "b_1223",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4657,
   "name": "b_1231",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4702,
   "name": "b_125E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4710,
   "name": "b_1266",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4711,
   "name": "j_1267",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4717,
   "name": "a_126D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4719,
   "name": "a_126F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4721,
   "name": "a_1271",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4723,
   "name": "a_1273",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4725,
   "name": "b_1275",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4729,
   "name": "a_1279",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4736,
   "name": "b_1280",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4746,
   "name": "music_voice3_only",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4754,
   "name": "music_voices23",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4760,
   "name": "b_1298",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4770,
   "name": "sfx_channels",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4783,
   "name": "music_all_voices",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4798,
   "name": "music_quiet_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4801,
   "name": "b_12C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4808,
   "name": "sound_channel",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4853,
   "name": "sound_priority",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4898,
   "name": "sound_effect",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4901,
   "name": "a_1325",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4943,
   "name": "play_sound_keep_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4946,
   "name": "play_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4971,
   "name": "b_136B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4972,
   "name": "a_136C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4974,
   "name": "blank_lines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4975,
   "name": "a_136F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4979,
   "name": "b_1373",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4991,
   "name": "b_137F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5013,
   "name": "shift_back_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5034,
   "name": "b_13AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5042,
   "name": "b_13B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5062,
   "name": "toggle_1b44",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5070,
   "name": "r_13CE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5071,
   "name": "b_13CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5079,
   "name": "r_13D7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5080,
   "name": "back_screen_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5095,
   "name": "shift_rows_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5115,
   "name": "b_13FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5119,
   "name": "b_13FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5121,
   "name": "b_1401",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5124,
   "name": "b_1404",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5129,
   "name": "a_1409",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5131,
   "name": "b_140B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5152,
   "name": "b_1420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5162,
   "name": "b_142A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5169,
   "name": "a_1431",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5173,
   "name": "shift_rows_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5188,
   "name": "b_1444",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5192,
   "name": "b_1448",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5194,
   "name": "b_144A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5197,
   "name": "b_144D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5199,
   "name": "b_144F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5218,
   "name": "b_1462",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5228,
   "name": "b_146C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5232,
   "name": "a_1470",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5236,
   "name": "puff_time_by_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5238,
   "name": "puff_frame_period",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5240,
   "name": "puff_y_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5241,
   "name": "a_1479",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5242,
   "name": "effect_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5268,
   "name": "b_1494",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5271,
   "name": "b_1497",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5285,
   "name": "b_14A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5296,
   "name": "b_14B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5308,
   "name": "b_14BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5311,
   "name": "b_14BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5325,
   "name": "b_14CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5330,
   "name": "b_14D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5340,
   "name": "b_14DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5354,
   "name": "b_14EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5380,
   "name": "b_1504",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5383,
   "name": "b_1507",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5407,
   "name": "b_151F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5411,
   "name": "b_1523",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5431,
   "name": "b_1537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5435,
   "name": "b_153B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5456,
   "name": "b_1550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5459,
   "name": "b_1553",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5462,
   "name": "b_1556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5478,
   "name": "b_1566",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5483,
   "name": "b_156B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5501,
   "name": "b_157D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5504,
   "name": "b_1580",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5519,
   "name": "b_158F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5521,
   "name": "b_1591",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5546,
   "name": "b_15AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5555,
   "name": "b_15B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5564,
   "name": "b_15BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5566,
   "name": "b_15BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5569,
   "name": "j_15C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5603,
   "name": "b_15E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5610,
   "name": "j_15EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5616,
   "name": "r_15F0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5617,
   "name": "skid_glyphs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5623,
   "name": "pad_15f7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5632,
   "name": "tune_1600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5696,
   "name": "tune_1600_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5760,
   "name": "tune_1600_c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5824,
   "name": "tune_1600_d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5888,
   "name": "tune_1600_e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5952,
   "name": "tune_1600_f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6016,
   "name": "tune_1600_g",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6080,
   "name": "tune_1600_h",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6144,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6147,
   "name": "irq_exit_ram",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6153,
   "name": "irq_install",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6185,
   "name": "b_1829",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6189,
   "name": "j_182D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6202,
   "name": "a_183A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6207,
   "name": "a_183F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6242,
   "name": "irq_push",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6248,
   "name": "irq_dispatch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6262,
   "name": "a_1876",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6263,
   "name": "a_1877",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6273,
   "name": "b_1881",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6274,
   "name": "a_1882",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6275,
   "name": "a_1883",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6276,
   "name": "irq_exit_own",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6287,
   "name": "irq_exit_kernal",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6298,
   "name": "raster_bars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6305,
   "name": "raster_bars_loop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6311,
   "name": "b_18A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6312,
   "name": "a_18A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6318,
   "name": "a_18AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6319,
   "name": "a_18AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6327,
   "name": "b_18B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6330,
   "name": "b_18BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6332,
   "name": "a_18BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6337,
   "name": "irq_panel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6355,
   "name": "panel_split",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6356,
   "name": "a_18D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6361,
   "name": "s_18D9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 6372,
   "name": "a_18E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6377,
   "name": "a_18E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6382,
   "name": "a_18EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6423,
   "name": "a_1917",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6433,
   "name": "scratch_1921",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6434,
   "name": "a_1922",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6444,
   "name": "f_192C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6448,
   "name": "reveal_saved_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6458,
   "name": "raster_bars_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6482,
   "name": "b_1952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6486,
   "name": "j_1956",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6493,
   "name": "bars_table_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6498,
   "name": "bars_lines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6503,
   "name": "bars_border",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6508,
   "name": "startup",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6560,
   "name": "kbd_ports",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6570,
   "name": "vic_mem_1F",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6574,
   "name": "vic_mem_2F",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6576,
   "name": "b_19B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6580,
   "name": "ecm_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6589,
   "name": "sprites_off_ecm_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6594,
   "name": "ecm_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6603,
   "name": "screen_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6612,
   "name": "mc_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6621,
   "name": "bg_black_mc_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6626,
   "name": "mc_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6635,
   "name": "scroll0_38cols",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6644,
   "name": "cols40_scroll0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6655,
   "name": "fill_43C0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6657,
   "name": "b_1A01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6664,
   "name": "sprites_park",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6668,
   "name": "b_1A0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6675,
   "name": "black_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6684,
   "name": "fill_screens",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6692,
   "name": "b_1A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6693,
   "name": "a_1A25",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6707,
   "name": "a_1A33",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6736,
   "name": "ram_io",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6737,
   "name": "j_1A51",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6742,
   "name": "sprite_regs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6791,
   "name": "f_1A87",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6797,
   "name": "f_1A8D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6803,
   "name": "f_1A93",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6809,
   "name": "f_1A99",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6815,
   "name": "f_1A9F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6821,
   "name": "f_1AA5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6827,
   "name": "f_1AAB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6833,
   "name": "f_1AB1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6839,
   "name": "read_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6852,
   "name": "b_1AC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6853,
   "name": "a_1AC5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6855,
   "name": "a_1AC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6870,
   "name": "read_key_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6873,
   "name": "b_1AD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6881,
   "name": "kbd_idle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6890,
   "name": "screen_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6915,
   "name": "screen_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6940,
   "name": "invert_7800",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6954,
   "name": "b_1B2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6969,
   "name": "f_1B39",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6970,
   "name": "shown_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6971,
   "name": "frame_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6972,
   "name": "chars_to_draw",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6973,
   "name": "a_1B3D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6974,
   "name": "heavy_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6975,
   "name": "scroll_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6976,
   "name": "last_wrap_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6977,
   "name": "turned_since_wrap",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6978,
   "name": "recolour_extra",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6979,
   "name": "shift_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6980,
   "name": "shift_toggle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6981,
   "name": "shift_toggle2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6982,
   "name": "shift_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6983,
   "name": "a_1B47",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6984,
   "name": "coarse_wrapped",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6985,
   "name": "repeat_edge",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6986,
   "name": "a_1B4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6987,
   "name": "slope_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6988,
   "name": "player_off_map",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6989,
   "name": "a_1B4D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6990,
   "name": "a_1B4E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6991,
   "name": "player_priority",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6992,
   "name": "a_1B50",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6993,
   "name": "run_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6994,
   "name": "a_1B52",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6995,
   "name": "a_1B53",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6996,
   "name": "skidding",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6997,
   "name": "puff_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6998,
   "name": "puff_kind_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6999,
   "name": "puff_kind_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7000,
   "name": "puff_lock",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7001,
   "name": "a_1B59",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7002,
   "name": "a_1B5A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7003,
   "name": "player_in_air",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7004,
   "name": "jump_pending",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7005,
   "name": "jump_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7006,
   "name": "facing_request",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7007,
   "name": "up_held",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7008,
   "name": "jump_cut",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7009,
   "name": "drop_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7010,
   "name": "ducking",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7011,
   "name": "a_1B63",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7012,
   "name": "div6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7013,
   "name": "div5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7014,
   "name": "div4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7015,
   "name": "div3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7016,
   "name": "frame_toggle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7017,
   "name": "puff_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7018,
   "name": "a_1B6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7019,
   "name": "puff_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7020,
   "name": "a_1B6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7021,
   "name": "puff_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7022,
   "name": "a_1B6E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7023,
   "name": "puff_xhi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7025,
   "name": "puff_one_only",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7026,
   "name": "puff_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7027,
   "name": "puff_shown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7028,
   "name": "on_slope",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7029,
   "name": "a_1B75",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7030,
   "name": "a_1B76",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7031,
   "name": "a_1B77",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7032,
   "name": "a_1B78",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7033,
   "name": "a_1B79",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7034,
   "name": "a_1B7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7035,
   "name": "a_1B7B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7036,
   "name": "a_1B7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7037,
   "name": "fell_out_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7038,
   "name": "fell_in_pit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7039,
   "name": "a_1B7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7040,
   "name": "end_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7041,
   "name": "walkin_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7042,
   "name": "sfx_priority",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7045,
   "name": "sfx_request",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7046,
   "name": "a_1B86",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7047,
   "name": "a_1B87",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7048,
   "name": "sfx_request_effect",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7049,
   "name": "a_1B89",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7050,
   "name": "a_1B8A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7051,
   "name": "colour_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7052,
   "name": "a_1B8C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7053,
   "name": "a_1B8D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7054,
   "name": "a_1B8E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7055,
   "name": "level_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7058,
   "name": "a_1B92",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7059,
   "name": "a_1B93",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7060,
   "name": "jump_cut_skip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7061,
   "name": "tune_check_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7062,
   "name": "tune_check_period",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7063,
   "name": "tune_wanted",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7064,
   "name": "tune_request",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7065,
   "name": "tune_resume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7066,
   "name": "a_1B9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7067,
   "name": "a_1B9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7068,
   "name": "a_1B9C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7069,
   "name": "puff_cycle",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7071,
   "name": "knockback",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7072,
   "name": "knockback_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7073,
   "name": "a_1BA1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7074,
   "name": "a_1BA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7075,
   "name": "a_1BA3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7076,
   "name": "a_1BA4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7077,
   "name": "a_1BA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7078,
   "name": "a_1BA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7079,
   "name": "a_1BA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7080,
   "name": "a_1BA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7081,
   "name": "raster_mid",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7082,
   "name": "a_1BAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7083,
   "name": "a_1BAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7084,
   "name": "a_1BAC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7085,
   "name": "f_1BAD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7089,
   "name": "f_1BB1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7093,
   "name": "a_1BB5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7094,
   "name": "power_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7095,
   "name": "a_1BB7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7096,
   "name": "a_1BB8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7097,
   "name": "a_1BB9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7098,
   "name": "a_1BBA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7099,
   "name": "head_bump_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7100,
   "name": "timers_1bbc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7101,
   "name": "a_1BBD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7103,
   "name": "a_1BBF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7104,
   "name": "a_1BC0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7105,
   "name": "a_1BC1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7106,
   "name": "a_1BC2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7107,
   "name": "glyph_drift_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7109,
   "name": "paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7110,
   "name": "finish_crossed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7111,
   "name": "finish_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7112,
   "name": "a_1BC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7113,
   "name": "auto_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7114,
   "name": "right_tile_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7115,
   "name": "left_tile_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7116,
   "name": "hold_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7118,
   "name": "band_set",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7119,
   "name": "colour_set_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7120,
   "name": "tune_marker_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7121,
   "name": "a_1BD1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7122,
   "name": "a_1BD2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7123,
   "name": "a_1BD3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7124,
   "name": "a_1BD4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7125,
   "name": "a_1BD5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7126,
   "name": "a_1BD6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7127,
   "name": "scroll_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7128,
   "name": "paused_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7129,
   "name": "right_map_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7130,
   "name": "left_map_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7131,
   "name": "right_repeat_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7132,
   "name": "left_repeat_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7133,
   "name": "screen_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7134,
   "name": "stick_up",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7135,
   "name": "stick_down",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7136,
   "name": "stick_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7137,
   "name": "stick_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7138,
   "name": "stick_fire",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7139,
   "name": "player_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7140,
   "name": "player_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7141,
   "name": "player_col_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7142,
   "name": "player_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7143,
   "name": "a_1BE7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7144,
   "name": "a_1BE8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7145,
   "name": "a_1BE9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7146,
   "name": "a_1BEA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7147,
   "name": "a_1BEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7148,
   "name": "land_happy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7149,
   "name": "a_1BED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7150,
   "name": "a_1BEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7151,
   "name": "skid_chars",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7152,
   "name": "skid_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7153,
   "name": "skid_units",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7155,
   "name": "clear_play_vars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7159,
   "name": "b_1BF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7166,
   "name": "play_vars_ff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7170,
   "name": "b_1C02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7177,
   "name": "f_1C09",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7178,
   "name": "a_1C0A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7179,
   "name": "a_1C0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7180,
   "name": "a_1C0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7181,
   "name": "panel_sprite_white",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7193,
   "name": "play_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7194,
   "name": "play_screen_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7218,
   "name": "b_1C32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7229,
   "name": "play_irq_install",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7296,
   "name": "level_map_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7304,
   "name": "b_1C88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7359,
   "name": "level_repeat_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7374,
   "name": "level_scroll_in",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7382,
   "name": "b_1CD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7418,
   "name": "b_1CFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7447,
   "name": "b_1D17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7449,
   "name": "b_1D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7471,
   "name": "level_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7485,
   "name": "b_1D3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7520,
   "name": "a_1D60",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7590,
   "name": "b_1DA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7592,
   "name": "b_1DA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7595,
   "name": "b_1DAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7606,
   "name": "b_1DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7799,
   "name": "a_1E77",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7800,
   "name": "b_1E78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7809,
   "name": "b_1E81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7813,
   "name": "j_1E85",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7820,
   "name": "b_1E8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7835,
   "name": "play_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 7871,
   "name": "b_1EBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7874,
   "name": "play_pass",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 7893,
   "name": "b_1ED5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7896,
   "name": "b_1ED8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7899,
   "name": "j_1EDB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7914,
   "name": "b_1EEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7923,
   "name": "b_1EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7925,
   "name": "b_1EF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7961,
   "name": "b_1F19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7975,
   "name": "b_1F27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7991,
   "name": "b_1F37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8000,
   "name": "b_1F40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8008,
   "name": "b_1F48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8014,
   "name": "b_1F4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8025,
   "name": "b_1F59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8036,
   "name": "b_1F64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8047,
   "name": "b_1F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8059,
   "name": "b_1F7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8067,
   "name": "b_1F83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8070,
   "name": "b_1F86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8100,
   "name": "b_1FA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8109,
   "name": "b_1FAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8114,
   "name": "a_1FB2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8141,
   "name": "b_1FCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8149,
   "name": "j_1FD5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8157,
   "name": "b_1FDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8195,
   "name": "b_2003",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8198,
   "name": "b_2006",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8204,
   "name": "b_200C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8222,
   "name": "b_201E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8240,
   "name": "b_2030",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8259,
   "name": "b_2043",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8270,
   "name": "b_204E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8273,
   "name": "j_2051",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8288,
   "name": "b_2060",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8291,
   "name": "j_2063",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8299,
   "name": "irq_enter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8311,
   "name": "irq_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8321,
   "name": "irq_leave",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8328,
   "name": "scroll_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8332,
   "name": "a_208C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8369,
   "name": "b_20B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8374,
   "name": "b_20B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8399,
   "name": "b_20CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8401,
   "name": "j_20D1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8404,
   "name": "b_20D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8414,
   "name": "b_20DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8417,
   "name": "bg_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8418,
   "name": "a_20E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8429,
   "name": "b_20ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8434,
   "name": "b_20F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8435,
   "name": "a_20F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8436,
   "name": "b_20F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8440,
   "name": "irq_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8456,
   "name": "a_2108",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8461,
   "name": "a_210D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8474,
   "name": "a_211A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8481,
   "name": "b_2121",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8492,
   "name": "b_212C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8503,
   "name": "j_2137",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8509,
   "name": "irq_stabilise",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8546,
   "name": "irq_vsp",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8568,
   "name": "a_2178",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8573,
   "name": "a_217D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8578,
   "name": "a_2182",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8593,
   "name": "b_2191",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8598,
   "name": "b_2196",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8599,
   "name": "a_2197",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8600,
   "name": "a_2198",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8602,
   "name": "a_219A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8615,
   "name": "a_21A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8618,
   "name": "a_21AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8623,
   "name": "a_21AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8625,
   "name": "a_21B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8627,
   "name": "a_21B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8629,
   "name": "irq_extra_band",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8633,
   "name": "a_21B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8635,
   "name": "a_21BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8637,
   "name": "a_21BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8661,
   "name": "b_21D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8671,
   "name": "b_21DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8683,
   "name": "b_21EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8686,
   "name": "irq_band1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8697,
   "name": "b_21F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8707,
   "name": "a_2203",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8717,
   "name": "b_220D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8720,
   "name": "irq_band2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8733,
   "name": "a_221D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8738,
   "name": "irq_band3_pause",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8751,
   "name": "a_222F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8825,
   "name": "b_2279",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8853,
   "name": "a_2295",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8857,
   "name": "b_2299",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8860,
   "name": "irq_band4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8877,
   "name": "a_22AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8887,
   "name": "b_22B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8890,
   "name": "irq_band5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8926,
   "name": "b_22DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8928,
   "name": "j_22E0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8937,
   "name": "irq_frame_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8962,
   "name": "b_2302",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8980,
   "name": "b_2314",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9006,
   "name": "b_232E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9012,
   "name": "b_2334",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9014,
   "name": "b_2336",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9015,
   "name": "a_2337",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9016,
   "name": "a_2338",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9019,
   "name": "a_233B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9020,
   "name": "a_233C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9022,
   "name": "a_233E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9023,
   "name": "a_233F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9033,
   "name": "b_2349",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9035,
   "name": "b_234B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9036,
   "name": "a_234C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9037,
   "name": "a_234D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9040,
   "name": "a_2350",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9041,
   "name": "a_2351",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9043,
   "name": "a_2353",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9044,
   "name": "a_2354",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9053,
   "name": "b_235D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9066,
   "name": "b_236A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9114,
   "name": "b_239A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9117,
   "name": "b_239D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9122,
   "name": "b_23A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9131,
   "name": "b_23AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9168,
   "name": "b_23D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9179,
   "name": "b_23DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9182,
   "name": "tile_lo_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9198,
   "name": "map_scroll_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9208,
   "name": "b_23F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9232,
   "name": "b_2410",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9244,
   "name": "b_241C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9247,
   "name": "j_241F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9255,
   "name": "b_2427",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9273,
   "name": "b_2439",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9292,
   "name": "b_244C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9306,
   "name": "b_245A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9326,
   "name": "b_246E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9327,
   "name": "b_246F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9337,
   "name": "b_2479",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9346,
   "name": "b_2482",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9377,
   "name": "b_24A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9408,
   "name": "b_24C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9439,
   "name": "b_24DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9470,
   "name": "b_24FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9501,
   "name": "b_251D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9536,
   "name": "j_2540",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9547,
   "name": "b_254B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9552,
   "name": "recolour_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9575,
   "name": "j_2567",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9576,
   "name": "a_2568",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9586,
   "name": "a_2572",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9596,
   "name": "a_257C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9606,
   "name": "a_2586",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9616,
   "name": "a_2590",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9626,
   "name": "a_259A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9666,
   "name": "b_25C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9684,
   "name": "b_25D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9699,
   "name": "b_25E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9706,
   "name": "b_25EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9712,
   "name": "map_column_ptrs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9717,
   "name": "b_25F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9718,
   "name": "a_25F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9732,
   "name": "a_2604",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9733,
   "name": "a_2605",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9761,
   "name": "a_2621",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9762,
   "name": "map_column_ptrs_same",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9770,
   "name": "s_262A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 9777,
   "name": "right_edge_new_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9779,
   "name": "right_edge_tile_col",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9791,
   "name": "right_edge_same_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9794,
   "name": "j_2642",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9804,
   "name": "left_edge_new_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9806,
   "name": "left_edge_tile_col",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9818,
   "name": "left_edge_same_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9821,
   "name": "j_265D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9831,
   "name": "swap_screens",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9848,
   "name": "clear_shift_state",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9850,
   "name": "s_267A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 9863,
   "name": "column_buf_band0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9867,
   "name": "column_buf_band1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9871,
   "name": "column_buf_band2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9875,
   "name": "column_buf_band3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9879,
   "name": "column_buf_band4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9883,
   "name": "column_buf_band5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9887,
   "name": "right_edge_marker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9900,
   "name": "b_26AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9903,
   "name": "b_26AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9926,
   "name": "b_26C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9937,
   "name": "b_26D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9940,
   "name": "b_26D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9955,
   "name": "r_26E3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9956,
   "name": "left_edge_marker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9980,
   "name": "b_26FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9995,
   "name": "b_270B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10000,
   "name": "b_2710",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10003,
   "name": "b_2713",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10006,
   "name": "b_2716",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10019,
   "name": "r_2723",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10020,
   "name": "left_edge_marker_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10029,
   "name": "b_272D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10032,
   "name": "b_2730",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10057,
   "name": "b_2749",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10068,
   "name": "b_2754",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10071,
   "name": "b_2757",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10086,
   "name": "r_2766",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10087,
   "name": "right_edge_marker_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10107,
   "name": "b_277B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10124,
   "name": "b_278C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10129,
   "name": "b_2791",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10132,
   "name": "b_2794",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10135,
   "name": "b_2797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10148,
   "name": "r_27A4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10149,
   "name": "repeat_done",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10160,
   "name": "edge_col_inc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10164,
   "name": "edge_col_dec",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10168,
   "name": "edge_col_add_len",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10178,
   "name": "edge_col_sub_len",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10188,
   "name": "repeat_start_d0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10199,
   "name": "repeat_start_e0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10210,
   "name": "left_count_less1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10217,
   "name": "right_count_less1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10224,
   "name": "repeat_params",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10239,
   "name": "draw_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10249,
   "name": "b_2809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10291,
   "name": "b_2833",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10321,
   "name": "b_2851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10328,
   "name": "map_scroll_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10338,
   "name": "b_2862",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10358,
   "name": "b_2876",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10377,
   "name": "b_2889",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10380,
   "name": "j_288C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10385,
   "name": "b_2891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10409,
   "name": "b_28A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10424,
   "name": "b_28B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10441,
   "name": "b_28C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10448,
   "name": "b_28D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10458,
   "name": "b_28DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10467,
   "name": "b_28E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10562,
   "name": "b_2942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10632,
   "name": "j_2988",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10660,
   "name": "r_29A4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10661,
   "name": "shown_screen_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10663,
   "name": "band_set_by_marker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10668,
   "name": "s_29AC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 10671,
   "name": "b_29AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10672,
   "name": "band_set_apply",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10685,
   "name": "b_29BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10691,
   "name": "b_29C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10731,
   "name": "r_29EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10732,
   "name": "band_routine_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10735,
   "name": "colour_set_by_marker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10740,
   "name": "s_29F4",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 10743,
   "name": "b_29F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10757,
   "name": "b_2A05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10763,
   "name": "b_2A0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10766,
   "name": "b_2A0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10778,
   "name": "r_2A1A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10779,
   "name": "tune_marker_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10784,
   "name": "tune_marker_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10787,
   "name": "b_2A23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10809,
   "name": "r_2A39",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10810,
   "name": "player_map_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10826,
   "name": "b_2A4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10830,
   "name": "b_2A4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10852,
   "name": "b_2A64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10866,
   "name": "b_2A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10875,
   "name": "b_2A7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10887,
   "name": "b_2A87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10889,
   "name": "b_2A89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10894,
   "name": "a_2A8E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10926,
   "name": "solid_threshold",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10927,
   "name": "player_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10942,
   "name": "b_2ABE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10947,
   "name": "b_2AC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10952,
   "name": "b_2AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10958,
   "name": "b_2ACE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10995,
   "name": "b_2AF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10997,
   "name": "b_2AF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11003,
   "name": "b_2AFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11012,
   "name": "b_2B04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11024,
   "name": "b_2B10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11035,
   "name": "b_2B1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11062,
   "name": "b_2B36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11066,
   "name": "b_2B3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11068,
   "name": "b_2B3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11071,
   "name": "b_2B3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11116,
   "name": "front_glyph_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11118,
   "name": "player_slope",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11131,
   "name": "b_2B7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11134,
   "name": "r_2B7E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11135,
   "name": "s_2B7F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 11148,
   "name": "b_2B8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11169,
   "name": "b_2BA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11174,
   "name": "b_2BA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11186,
   "name": "b_2BB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11191,
   "name": "b_2BB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11193,
   "name": "b_2BB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11206,
   "name": "b_2BC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11214,
   "name": "b_2BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11229,
   "name": "b_2BDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11231,
   "name": "b_2BDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11235,
   "name": "b_2BE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11247,
   "name": "b_2BEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11252,
   "name": "b_2BF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11254,
   "name": "b_2BF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11267,
   "name": "b_2C03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11275,
   "name": "b_2C0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11290,
   "name": "b_2C1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11292,
   "name": "b_2C1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11296,
   "name": "b_2C20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11302,
   "name": "player_blocked",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11326,
   "name": "player_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11338,
   "name": "b_2C4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11358,
   "name": "b_2C5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11364,
   "name": "b_2C64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11379,
   "name": "b_2C73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11383,
   "name": "b_2C77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11388,
   "name": "b_2C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11403,
   "name": "b_2C8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11414,
   "name": "j_2C96",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11432,
   "name": "r_2CA8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11433,
   "name": "drop_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11435,
   "name": "player_vertical",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11454,
   "name": "b_2CBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11456,
   "name": "b_2CC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11459,
   "name": "b_2CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11467,
   "name": "b_2CCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11475,
   "name": "b_2CD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11498,
   "name": "b_2CEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11513,
   "name": "b_2CF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11524,
   "name": "b_2D04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11529,
   "name": "b_2D09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11557,
   "name": "b_2D25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11561,
   "name": "b_2D29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11563,
   "name": "b_2D2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11585,
   "name": "b_2D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11606,
   "name": "player_snap_to_row",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11618,
   "name": "jump_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11623,
   "name": "b_2D67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11633,
   "name": "b_2D71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11653,
   "name": "player_rising",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11681,
   "name": "b_2DA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11710,
   "name": "b_2DBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11717,
   "name": "b_2DC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11727,
   "name": "b_2DCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11742,
   "name": "b_2DDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11745,
   "name": "b_2DE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11759,
   "name": "b_2DEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11765,
   "name": "b_2DF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11802,
   "name": "player_falling",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11813,
   "name": "b_2E25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11831,
   "name": "b_2E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11852,
   "name": "b_2E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11854,
   "name": "b_2E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11869,
   "name": "b_2E5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11883,
   "name": "b_2E6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11891,
   "name": "j_2E73",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11899,
   "name": "b_2E7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11903,
   "name": "r_2E7F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11904,
   "name": "b_2E80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11927,
   "name": "b_2E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11944,
   "name": "b_2EA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11951,
   "name": "b_2EAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11953,
   "name": "b_2EB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11957,
   "name": "player_bounce",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11991,
   "name": "a_2ED7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11993,
   "name": "slope_rise_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12001,
   "name": "slope_rise_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12009,
   "name": "slope_flat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12017,
   "name": "slope_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12021,
   "name": "slope_table_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12025,
   "name": "slope_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12036,
   "name": "b_2F04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12044,
   "name": "b_2F0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12051,
   "name": "j_2F13",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12064,
   "name": "b_2F20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12072,
   "name": "b_2F28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12074,
   "name": "b_2F2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12085,
   "name": "b_2F35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12092,
   "name": "b_2F3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12107,
   "name": "a_2F4B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12108,
   "name": "a_2F4C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12112,
   "name": "b_2F50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12124,
   "name": "b_2F5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12139,
   "name": "b_2F6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12147,
   "name": "b_2F73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12152,
   "name": "b_2F78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12154,
   "name": "b_2F7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12168,
   "name": "b_2F88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12182,
   "name": "b_2F96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12205,
   "name": "b_2FAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12220,
   "name": "a_2FBC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12221,
   "name": "a_2FBD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12222,
   "name": "j_2FBE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12226,
   "name": "j_2FC2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12232,
   "name": "b_2FC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12246,
   "name": "b_2FD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12258,
   "name": "b_2FE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12265,
   "name": "j_2FE9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12273,
   "name": "r_2FF1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12274,
   "name": "pairs_2ff2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12283,
   "name": "sound3_effects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12288,
   "name": "tbl_2FFB_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12298,
   "name": "slope_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12302,
   "name": "slope_heights_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12306,
   "name": "ground_slope",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12317,
   "name": "b_301D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12325,
   "name": "b_3025",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12332,
   "name": "j_302C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12345,
   "name": "b_3039",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12353,
   "name": "b_3041",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12355,
   "name": "b_3043",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12366,
   "name": "b_304E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12373,
   "name": "b_3055",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12388,
   "name": "slope_ptr_a_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12389,
   "name": "slope_ptr_a_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12393,
   "name": "b_3069",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12405,
   "name": "b_3075",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12420,
   "name": "b_3084",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12428,
   "name": "b_308C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12433,
   "name": "b_3091",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12435,
   "name": "b_3093",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12449,
   "name": "b_30A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12463,
   "name": "b_30AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12486,
   "name": "b_30C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12501,
   "name": "slope_ptr_b_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12502,
   "name": "slope_ptr_b_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12503,
   "name": "j_30D7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12507,
   "name": "j_30DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12513,
   "name": "b_30E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12527,
   "name": "b_30EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12539,
   "name": "b_30FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12546,
   "name": "j_3102",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12554,
   "name": "r_310A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12555,
   "name": "slope_exit_top",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12575,
   "name": "pos_row_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12598,
   "name": "r_3136",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12599,
   "name": "pos_row_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12622,
   "name": "r_314E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12623,
   "name": "duck_release",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12634,
   "name": "player_walk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12643,
   "name": "b_3163",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12646,
   "name": "b_3166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12654,
   "name": "b_316E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12659,
   "name": "b_3173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12662,
   "name": "b_3176",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12669,
   "name": "b_317D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12681,
   "name": "b_3189",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12691,
   "name": "b_3193",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12718,
   "name": "b_31AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12726,
   "name": "b_31B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12754,
   "name": "b_31D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12758,
   "name": "b_31D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12766,
   "name": "b_31DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12777,
   "name": "b_31E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12790,
   "name": "walk_saved_x_r",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12813,
   "name": "b_320D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12825,
   "name": "b_3219",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12846,
   "name": "b_322E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12850,
   "name": "b_3232",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12866,
   "name": "b_3242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12885,
   "name": "walk_saved_x_l",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12902,
   "name": "b_3266",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12905,
   "name": "b_3269",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12908,
   "name": "j_326C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12915,
   "name": "j_3273",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12923,
   "name": "b_327B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12931,
   "name": "b_3283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12947,
   "name": "b_3293",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12950,
   "name": "b_3296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12962,
   "name": "b_32A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12969,
   "name": "b_32A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13000,
   "name": "b_32C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13003,
   "name": "j_32CB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13015,
   "name": "b_32D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13022,
   "name": "j_32DE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13035,
   "name": "b_32EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13038,
   "name": "b_32EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13070,
   "name": "b_330E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13085,
   "name": "b_331D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13090,
   "name": "b_3322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13104,
   "name": "b_3330",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13110,
   "name": "b_3336",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13122,
   "name": "b_3342",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13146,
   "name": "b_335A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13147,
   "name": "charge_was",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13155,
   "name": "b_3363",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13165,
   "name": "b_336D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13175,
   "name": "j_3377",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13178,
   "name": "r_337A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13179,
   "name": "charge_latch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13192,
   "name": "effect_start_0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13202,
   "name": "speed_lookup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13215,
   "name": "b_339F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13217,
   "name": "add_speed_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13231,
   "name": "b_33AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13233,
   "name": "step_add",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13235,
   "name": "sub_speed_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13249,
   "name": "b_33C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13251,
   "name": "step_sub",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13257,
   "name": "charge_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13283,
   "name": "b_33E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13291,
   "name": "effect_sprite_blank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13299,
   "name": "r_33F3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13300,
   "name": "effect_sprite_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13319,
   "name": "power_saved_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13334,
   "name": "b_3416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13342,
   "name": "play_sfx_bfcb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13356,
   "name": "sfx_saved_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13358,
   "name": "tab_342E",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13390,
   "name": "death_leap_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13408,
   "name": "speed_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13441,
   "name": "tab_3481",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13443,
   "name": "panel_delay_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13468,
   "name": "panel_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13472,
   "name": "b_34A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13543,
   "name": "score_amounts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13559,
   "name": "score_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13575,
   "name": "score_dirty",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13576,
   "name": "score_event_tab",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13579,
   "name": "score_add",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13589,
   "name": "b_3515",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13601,
   "name": "b_3521",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13606,
   "name": "b_3526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13607,
   "name": "b_3527",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13623,
   "name": "b_3537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13643,
   "name": "b_354B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13667,
   "name": "b_3563",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13670,
   "name": "b_3566",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13671,
   "name": "score_repeat",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13675,
   "name": "score_saved_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13677,
   "name": "score_redraw_if",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13683,
   "name": "b_3573",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13688,
   "name": "score_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13701,
   "name": "b_3585",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13714,
   "name": "b_3592",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13727,
   "name": "b_359F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13740,
   "name": "b_35AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13753,
   "name": "b_35B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13766,
   "name": "b_35C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13779,
   "name": "b_35D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13792,
   "name": "b_35E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13805,
   "name": "b_35ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13811,
   "name": "multiplier_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13817,
   "name": "b_35F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13823,
   "name": "b_35FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13836,
   "name": "multiplier_draw",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 13852,
   "name": "multiplier_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13867,
   "name": "b_362B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13878,
   "name": "extra_life",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13893,
   "name": "life_saved_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13895,
   "name": "life_saved_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13896,
   "name": "set_1BC1",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13902,
   "name": "magic_dirty",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13903,
   "name": "magic_add",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13918,
   "name": "b_365E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13922,
   "name": "b_3662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13941,
   "name": "b_3675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13965,
   "name": "b_368D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13982,
   "name": "b_369E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13985,
   "name": "b_36A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13997,
   "name": "b_36AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14018,
   "name": "r_36C2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14019,
   "name": "magic_save",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14021,
   "name": "b_36C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14033,
   "name": "r_36D1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14034,
   "name": "stars_less_ten",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14057,
   "name": "b_36E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14061,
   "name": "star_count_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14063,
   "name": "b_36EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14067,
   "name": "star_quota_met",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14075,
   "name": "b_36FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14086,
   "name": "r_3706",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14087,
   "name": "magic_sub_saved",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14095,
   "name": "magic_sub",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14096,
   "name": "magic_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14116,
   "name": "b_3724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14131,
   "name": "b_3733",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14134,
   "name": "b_3736",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14146,
   "name": "b_3742",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14158,
   "name": "b_374E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14163,
   "name": "b_3753",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14166,
   "name": "r_3756",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14167,
   "name": "magic_redraw_if",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14173,
   "name": "b_375D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14178,
   "name": "magic_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14193,
   "name": "b_3771",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14208,
   "name": "b_3780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14223,
   "name": "b_378F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14229,
   "name": "time_dirty",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14230,
   "name": "time_redraw_if",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14236,
   "name": "b_379C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14241,
   "name": "time_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14256,
   "name": "b_37B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14271,
   "name": "b_37BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14286,
   "name": "b_37CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14292,
   "name": "time_save",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14294,
   "name": "b_37D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14306,
   "name": "r_37E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14307,
   "name": "time_warn_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14310,
   "name": "time_warn_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14313,
   "name": "time_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14328,
   "name": "time_dec",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14337,
   "name": "b_3801",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14345,
   "name": "b_3809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14366,
   "name": "b_381E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14381,
   "name": "b_382D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14384,
   "name": "b_3830",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14386,
   "name": "b_3832",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14402,
   "name": "b_3842",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14404,
   "name": "b_3844",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14415,
   "name": "b_384F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14423,
   "name": "b_3857",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14425,
   "name": "b_3859",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14438,
   "name": "life_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14458,
   "name": "b_387A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14461,
   "name": "clear_1BB7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14471,
   "name": "lives_dirty",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14472,
   "name": "lives_redraw_if",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14482,
   "name": "lives_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14495,
   "name": "digit_draw_40",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14497,
   "name": "digit_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14519,
   "name": "b_38B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14520,
   "name": "glyph_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14521,
   "name": "glyph_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14523,
   "name": "glyph_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14524,
   "name": "glyph_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14531,
   "name": "r_38C3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14532,
   "name": "star_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14539,
   "name": "b_38CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14541,
   "name": "b_38CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14551,
   "name": "b_38D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14567,
   "name": "b_38E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14568,
   "name": "r_38E8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14569,
   "name": "b_38E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14588,
   "name": "b_38FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14590,
   "name": "b_38FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14603,
   "name": "star_remove",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14636,
   "name": "b_392C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14651,
   "name": "b_393B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14658,
   "name": "star_other_add",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14670,
   "name": "b_394E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14677,
   "name": "star_other_sub",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14687,
   "name": "b_395F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14689,
   "name": "j_3961",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14692,
   "name": "star_char",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14707,
   "name": "b_3973",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14712,
   "name": "b_3978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14724,
   "name": "b_3984",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14731,
   "name": "b_398B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14736,
   "name": "b_3990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14754,
   "name": "star_map_remove",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14765,
   "name": "b_39AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14790,
   "name": "b_39C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14805,
   "name": "b_39D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14832,
   "name": "b_39F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14847,
   "name": "b_39FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14855,
   "name": "b_3A07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14870,
   "name": "b_3A16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14888,
   "name": "r_3A28",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14889,
   "name": "map_column_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14903,
   "name": "b_3A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14905,
   "name": "b_3A39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14908,
   "name": "b_3A3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14918,
   "name": "b_3A46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14922,
   "name": "b_3A4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14932,
   "name": "r_3A54",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14933,
   "name": "is_star_block",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14946,
   "name": "r_3A62",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14947,
   "name": "blank_2_cells",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14961,
   "name": "b_3A71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14976,
   "name": "b_3A80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14978,
   "name": "star_quarter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14984,
   "name": "animate_chars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14993,
   "name": "anim_gate_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14997,
   "name": "anim_gate_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15019,
   "name": "b_3AAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15043,
   "name": "r_3AC3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15044,
   "name": "b_3AC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15063,
   "name": "b_3AD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15085,
   "name": "r_3AED",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15086,
   "name": "star_animate",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15116,
   "name": "b_3B0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15127,
   "name": "b_3B17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15144,
   "name": "b_3B28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15145,
   "name": "star_frame_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15146,
   "name": "star_frame_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15153,
   "name": "r_3B31",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15154,
   "name": "maybe_E2D2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15162,
   "name": "r_3B3A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15163,
   "name": "card_tune_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15165,
   "name": "card_tune_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15167,
   "name": "stage_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15253,
   "name": "j_3B95",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15267,
   "name": "b_3BA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15276,
   "name": "b_3BAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15284,
   "name": "b_3BB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15285,
   "name": "restart_1BC6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15291,
   "name": "b_3BBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15292,
   "name": "restart_1BBA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15308,
   "name": "cave_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15318,
   "name": "stage_card",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15386,
   "name": "b_3C1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15402,
   "name": "b_3C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15536,
   "name": "b_3CB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15567,
   "name": "b_3CCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15578,
   "name": "b_3CDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15581,
   "name": "j_3CDD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15592,
   "name": "b_3CE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15601,
   "name": "b_3CF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15603,
   "name": "b_3CF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15605,
   "name": "b_3CF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15626,
   "name": "b_3D0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15636,
   "name": "b_3D14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15639,
   "name": "b_3D17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15656,
   "name": "b_3D28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15666,
   "name": "b_3D32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15669,
   "name": "b_3D35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15688,
   "name": "b_3D48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15691,
   "name": "b_3D4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15696,
   "name": "b_3D50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15706,
   "name": "b_3D5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15709,
   "name": "b_3D5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15736,
   "name": "b_3D78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15739,
   "name": "b_3D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15774,
   "name": "old_happy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15781,
   "name": "irq_card_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15795,
   "name": "b_3DB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15807,
   "name": "b_3DBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15835,
   "name": "print_at_9B",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15842,
   "name": "print_at_28",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15847,
   "name": "print_at_B1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15852,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15879,
   "name": "b_3E07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15910,
   "name": "b_3E26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15944,
   "name": "b_3E48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15956,
   "name": "b_3E54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15963,
   "name": "b_3E5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15966,
   "name": "b_3E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15978,
   "name": "b_3E6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16006,
   "name": "b_3E86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16024,
   "name": "b_3E98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16033,
   "name": "b_3EA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16042,
   "name": "b_3EAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16056,
   "name": "game_over_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16072,
   "name": "irq_go_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16073,
   "name": "go_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16096,
   "name": "irq_go_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16111,
   "name": "irq_go_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16115,
   "name": "go_bg_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16126,
   "name": "b_3EFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16129,
   "name": "b_3F01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16142,
   "name": "tune_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16151,
   "name": "tune_step_68",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16158,
   "name": "tune_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16163,
   "name": "b_3F23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16164,
   "name": "tune_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16169,
   "name": "tune_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16177,
   "name": "b_3F31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16180,
   "name": "swap_pages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16190,
   "name": "swap_from",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16200,
   "name": "swap_to",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16210,
   "name": "swap_charset_d800",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16212,
   "name": "swap_pages_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16239,
   "name": "b_3F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16262,
   "name": "unref_3F86",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16278,
   "name": "unref_3F96",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16352,
   "name": "bonusdust_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "spr_score_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16394,
   "name": "spr_wipe_target",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16448,
   "name": "spr_score_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16512,
   "name": "spr_score_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16576,
   "name": "spr_lives",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16640,
   "name": "spr_magic",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16649,
   "name": "spr_magic_label",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16704,
   "name": "spr_time",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16768,
   "name": "spr_multiplier",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16832,
   "name": "spr_blocks_7_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17344,
   "name": "spr_block_15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17345,
   "name": "spr_block_15_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17407,
   "name": "spr_block_15_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "protection",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17410,
   "name": "b_4402",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17423,
   "name": "b_440F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17447,
   "name": "b_4427",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17461,
   "name": "b_4435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17466,
   "name": "b_443A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17467,
   "name": "prot_ptr_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17468,
   "name": "prot_ptr_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17470,
   "name": "prot_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17485,
   "name": "prot_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17525,
   "name": "b_4475",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17538,
   "name": "b_4482",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17549,
   "name": "b_448D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17557,
   "name": "b_4495",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17563,
   "name": "b_449B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17566,
   "name": "b_449E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17568,
   "name": "scr1_row4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17572,
   "name": "prot_attempt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 17589,
   "name": "b_44B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17590,
   "name": "prot_try",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17599,
   "name": "b_44BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17642,
   "name": "b_44EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17656,
   "name": "b_44F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17657,
   "name": "scr1_row6_c9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17664,
   "name": "scr1_row6_c16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17666,
   "name": "prot_line_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17674,
   "name": "prot_line_idx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17680,
   "name": "b_4510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17690,
   "name": "b_451A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17711,
   "name": "b_452F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17728,
   "name": "scr1_row8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17738,
   "name": "b_454A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17743,
   "name": "b_454F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17764,
   "name": "b_4564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17773,
   "name": "prot_digits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17783,
   "name": "scr1_row9_c15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17784,
   "name": "scr1_row9_c16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17812,
   "name": "b_4594",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17820,
   "name": "scr1_row10_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17828,
   "name": "prot_passed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17840,
   "name": "b_45B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17855,
   "name": "b_45BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17860,
   "name": "scr1_row11_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17882,
   "name": "prot_wrong",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 17886,
   "name": "b_45DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17895,
   "name": "irq_prot_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17900,
   "name": "scr1_row12_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17907,
   "name": "scr1_row12_c19",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17920,
   "name": "irq_prot_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17939,
   "name": "irq_prot_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17940,
   "name": "scr1_row13_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17961,
   "name": "prot_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17966,
   "name": "b_462E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17977,
   "name": "prot_positions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17980,
   "name": "scr1_row14_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17992,
   "name": "scr1_row14_c24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18007,
   "name": "prot_example",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18012,
   "name": "prot_typed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18014,
   "name": "prot_typed_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18017,
   "name": "prot_key_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18020,
   "name": "scr1_row15_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18022,
   "name": "prot_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18024,
   "name": "b_4668",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18040,
   "name": "prot_invert",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18042,
   "name": "b_467A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18054,
   "name": "prot_narrow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18060,
   "name": "scr1_row16_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18065,
   "name": "b_4691",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18066,
   "name": "r_4692",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 18067,
   "name": "prot_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18069,
   "name": "b_4695",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18100,
   "name": "scr1_row17_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18101,
   "name": "prot_line_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18107,
   "name": "prot_line_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18111,
   "name": "prot_ref_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18112,
   "name": "prot_strings",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18139,
   "name": "prot_text_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18140,
   "name": "prot_instructions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18157,
   "name": "scr1_row18_c29",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18176,
   "name": "scr1_row19_c8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18208,
   "name": "scr1_row20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18245,
   "name": "prot_str_example",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18269,
   "name": "prot_ref_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18274,
   "name": "prot_code_typed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18276,
   "name": "prot_code_typed_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18280,
   "name": "prot_str_keys",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18311,
   "name": "prot_colour_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18346,
   "name": "prot_key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18351,
   "name": "prot_key_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18356,
   "name": "prot_insert_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18368,
   "name": "str_b_and",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18374,
   "name": "str_press_fire",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18424,
   "name": "scr1_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18426,
   "name": "scr1_ptr_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18428,
   "name": "scr1_ptr_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18429,
   "name": "scr1_ptr_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18430,
   "name": "scr1_ptr_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18431,
   "name": "scr1_ptr_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "hand_over_4800",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18671,
   "name": "scr2_row6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18681,
   "name": "scr2_row6_c9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18688,
   "name": "scr2_page2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18928,
   "name": "jaz_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18931,
   "name": "scr2_row12_c19",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18944,
   "name": "prot_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19152,
   "name": "scr2_row18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19181,
   "name": "scr2_row18_c29",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19192,
   "name": "scr2_row19",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19200,
   "name": "scr2_page4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19208,
   "name": "scr2_row19_c16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19216,
   "name": "scr2_row19_c24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19224,
   "name": "scr2_row19_c32",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19315,
   "name": "scr2_row22_c3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19323,
   "name": "dev_saver",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19398,
   "name": "scr2_row24_c6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19448,
   "name": "scr2_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19450,
   "name": "scr2_ptr_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19452,
   "name": "scr2_ptr_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19453,
   "name": "scr2_ptr_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19454,
   "name": "scr2_ptr_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19455,
   "name": "scr2_ptr_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19456,
   "name": "player_frames_30",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "player_frames_40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20886,
   "name": "frame_46_patch_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20887,
   "name": "frame_46_patch_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20889,
   "name": "frame_46_patch_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20890,
   "name": "frame_46_patch_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20901,
   "name": "frame_46_patch_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21009,
   "name": "frame_48_patch_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21012,
   "name": "frame_48_patch_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21015,
   "name": "frame_48_patch_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21025,
   "name": "frame_48_patch_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "player_frames_50",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21631,
   "name": "frame_51_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21992,
   "name": "frame_57_loader",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21993,
   "name": "frame_57_loader_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22000,
   "name": "frame_57_loader_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22001,
   "name": "frame_57_loader_d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "player_frames_60",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22549,
   "name": "frame_60_patch_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22550,
   "name": "frame_60_patch_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22552,
   "name": "frame_60_patch_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22553,
   "name": "frame_60_patch_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22565,
   "name": "frame_60_patch_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22671,
   "name": "frame_62_patch_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22674,
   "name": "frame_62_patch_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22677,
   "name": "frame_62_patch_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22689,
   "name": "frame_62_patch_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45312,
   "name": "unref_B100",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45329,
   "name": "tune8_power_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45434,
   "name": "vsp_slide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45439,
   "name": "slide_90",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45458,
   "name": "slide_52",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45471,
   "name": "slide_26",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45472,
   "name": "slide_24",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45473,
   "name": "slide_22",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45476,
   "name": "slide_16",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45481,
   "name": "slide_6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45485,
   "name": "irq_scene",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45517,
   "name": "b_B1CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45519,
   "name": "b_B1CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45535,
   "name": "b_B1DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45537,
   "name": "b_B1E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45548,
   "name": "b_B1EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45571,
   "name": "b_B203",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45572,
   "name": "scene_col_idx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45580,
   "name": "b_B20C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45592,
   "name": "b_B218",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45617,
   "name": "b_B231",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45620,
   "name": "scene_col_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45626,
   "name": "scene_spr_xy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45642,
   "name": "scene_spr_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45650,
   "name": "scene_spr_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45658,
   "name": "scene_land_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45663,
   "name": "scene_border",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45680,
   "name": "scene_tables",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45708,
   "name": "scene_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45715,
   "name": "player_sprites_alt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45768,
   "name": "b_B2C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45842,
   "name": "player_sprite5",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45898,
   "name": "b312_hold",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45902,
   "name": "r_B34E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45903,
   "name": "colour_fade",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45915,
   "name": "b_B35B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45932,
   "name": "b_B36C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45935,
   "name": "b_B36F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45940,
   "name": "b_B374",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45955,
   "name": "b_B383",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45958,
   "name": "b_B386",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45972,
   "name": "r_B394",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45973,
   "name": "b_B395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45982,
   "name": "fade_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45998,
   "name": "fade_ptr_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45999,
   "name": "fade_ptr_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46001,
   "name": "fade_seq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46017,
   "name": "fade_seq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46033,
   "name": "fade_seqs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46090,
   "name": "cycle_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46107,
   "name": "cycle_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46124,
   "name": "cycle_len",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46141,
   "name": "colour_cycle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46167,
   "name": "b_B457",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46181,
   "name": "b_B465",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46187,
   "name": "b_B46B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46206,
   "name": "star_frames_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46226,
   "name": "star_frames_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46246,
   "name": "touch_top_trim",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46248,
   "name": "touch_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46257,
   "name": "b_B4B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46259,
   "name": "b_B4B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46266,
   "name": "j_B4BA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46289,
   "name": "b_B4D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46292,
   "name": "b_B4D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46307,
   "name": "touch_layer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46341,
   "name": "b_B505",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46373,
   "name": "b_B525",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46398,
   "name": "b_B53E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46415,
   "name": "b_B54F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46422,
   "name": "j_B556",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46436,
   "name": "r_B564",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46437,
   "name": "touch_monster",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 46453,
   "name": "b_B575",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46468,
   "name": "b_B584",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46473,
   "name": "b_B589",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46474,
   "name": "touch_depth",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46503,
   "name": "b_B5A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46506,
   "name": "b_B5AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46533,
   "name": "b_B5C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46538,
   "name": "hurt_player",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 46564,
   "name": "b_B5E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46569,
   "name": "lose_life",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46621,
   "name": "b_B61D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46634,
   "name": "flash_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46646,
   "name": "b_B636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46657,
   "name": "b_B641",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46660,
   "name": "r_B644",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46661,
   "name": "object_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46663,
   "name": "b_B647",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46692,
   "name": "b_B664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46695,
   "name": "colour_parity",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46722,
   "name": "b_B682",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46757,
   "name": "b_B6A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46764,
   "name": "b_B6AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46778,
   "name": "colour_list_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46787,
   "name": "colour_list_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46796,
   "name": "colour_list_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46805,
   "name": "font2x2_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46806,
   "name": "font2x2_tr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46807,
   "name": "font2x2_bl",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46808,
   "name": "font2x2_br",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46981,
   "name": "swap_sad_happy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46999,
   "name": "b_B797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47043,
   "name": "star_code_switch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47059,
   "name": "star_anim_opcode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47061,
   "name": "star_check_opcode",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47063,
   "name": "obj_list_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47074,
   "name": "r_B7E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47075,
   "name": "objptr_next_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47089,
   "name": "r_B7F1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47090,
   "name": "obj_list_prev",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47101,
   "name": "r_B7FD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47102,
   "name": "objptr_prev_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47116,
   "name": "r_B80C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47117,
   "name": "font_punct",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47122,
   "name": "font_punct_wide",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47127,
   "name": "print_big",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47147,
   "name": "j_B82B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47159,
   "name": "print_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47160,
   "name": "print_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47168,
   "name": "b_B840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47180,
   "name": "b_B84C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47182,
   "name": "b_B84E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47192,
   "name": "b_B858",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47203,
   "name": "b_B863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47211,
   "name": "b_B86B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47219,
   "name": "b_B873",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47228,
   "name": "b_B87C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47236,
   "name": "b_B884",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47242,
   "name": "b_B88A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47247,
   "name": "b_B88F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47261,
   "name": "b_B89D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47266,
   "name": "b_B8A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47270,
   "name": "b_B8A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47272,
   "name": "b_B8A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47309,
   "name": "j_B8CD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47314,
   "name": "print_width",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47323,
   "name": "b_B8DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47334,
   "name": "b_B8E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47338,
   "name": "b_B8EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47339,
   "name": "print_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47344,
   "name": "r_B8F0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47345,
   "name": "print_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47346,
   "name": "print_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47347,
   "name": "print_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47350,
   "name": "print_third",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47351,
   "name": "print_unused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47352,
   "name": "string_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47379,
   "name": "string_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47406,
   "name": "str_go",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47419,
   "name": "str_happy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47435,
   "name": "str_sad",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47451,
   "name": "str_game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47461,
   "name": "str_continues",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47473,
   "name": "continues_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47475,
   "name": "str_continue_yes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47490,
   "name": "str_continue_no",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47504,
   "name": "str_stage_complete",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47520,
   "name": "str_time_bonus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47533,
   "name": "time_bonus_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47543,
   "name": "str_super_time",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47560,
   "name": "str_star_bonus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47573,
   "name": "star_bonus_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47583,
   "name": "str_super_star",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47600,
   "name": "str_skid_bonus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47614,
   "name": "skid_bonus_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47624,
   "name": "objects_scroll_if",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47629,
   "name": "objects_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47641,
   "name": "b_BA19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47651,
   "name": "b_BA23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47678,
   "name": "b_BA3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47687,
   "name": "b_BA47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47688,
   "name": "scroll_band_rd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47694,
   "name": "scroll_band_wr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47702,
   "name": "b_BA56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47703,
   "name": "scroll_saved_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47704,
   "name": "b_BA58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47724,
   "name": "r_BA6C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47725,
   "name": "scroll_bit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47726,
   "name": "scroll_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47727,
   "name": "obj_page_mark",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47737,
   "name": "b_BA79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47743,
   "name": "b_BA7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47748,
   "name": "b_BA84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47754,
   "name": "obj_page_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47764,
   "name": "b_BA94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47768,
   "name": "b_BA98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47773,
   "name": "b_BA9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47777,
   "name": "obj_colour_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47792,
   "name": "j_BAB0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47811,
   "name": "obj_pos_latch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47813,
   "name": "b_BAC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47824,
   "name": "b_BAD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47836,
   "name": "char_shift_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47838,
   "name": "card_sprite_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47846,
   "name": "card_bounce",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47927,
   "name": "card_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47928,
   "name": "hit_cols_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47934,
   "name": "hit_cols_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47940,
   "name": "power_cols_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47948,
   "name": "power_cols_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47956,
   "name": "unref_BB54",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47977,
   "name": "power_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48015,
   "name": "b_BB8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48029,
   "name": "clear_1B6B",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48037,
   "name": "r_BBA5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48038,
   "name": "irq_play_install",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48051,
   "name": "anim_char_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48100,
   "name": "char_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48107,
   "name": "b_BBEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48118,
   "name": "b_BBF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48149,
   "name": "item_collected",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48168,
   "name": "b_BC28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48186,
   "name": "b_BC3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48190,
   "name": "item_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48211,
   "name": "item_effect_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48212,
   "name": "item_effect_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48213,
   "name": "item_charge",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48217,
   "name": "card_strip_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48233,
   "name": "card_strip_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48249,
   "name": "card_strip_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48265,
   "name": "card_strip_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48281,
   "name": "sfx_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48287,
   "name": "sfx_requests",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48303,
   "name": "b_BCAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48320,
   "name": "sfx_request_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48338,
   "name": "r_BCD2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48339,
   "name": "player_flash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48361,
   "name": "r_BCE9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48362,
   "name": "b_BCEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48411,
   "name": "b_BD1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48419,
   "name": "b_BD23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48428,
   "name": "b_BD2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48435,
   "name": "caption_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48437,
   "name": "time_src_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48439,
   "name": "stage_time_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48446,
   "name": "b_BD3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48463,
   "name": "b_BD4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48474,
   "name": "death_leap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48492,
   "name": "b_BD6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48505,
   "name": "b_BD79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48518,
   "name": "b_BD86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48530,
   "name": "b_BD92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48533,
   "name": "r_BD95",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48534,
   "name": "face_patch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48536,
   "name": "b_BD98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48553,
   "name": "face_bytes_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48565,
   "name": "face_bytes_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48577,
   "name": "life_lose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48595,
   "name": "b_BDD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48599,
   "name": "frame_counters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48609,
   "name": "b_BDE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48619,
   "name": "b_BDEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48629,
   "name": "b_BDF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48639,
   "name": "b_BDFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48647,
   "name": "r_BE07",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48648,
   "name": "thunder_if_sad",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48653,
   "name": "thunder",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48696,
   "name": "flash_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48697,
   "name": "lightning_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48714,
   "name": "tally_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48723,
   "name": "skid_bonus_show",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48732,
   "name": "b_BE5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48741,
   "name": "skid_digits_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48743,
   "name": "b_BE67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48764,
   "name": "tally_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48772,
   "name": "tally_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48795,
   "name": "b_BE9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48798,
   "name": "b_BE9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48814,
   "name": "b_BEAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48827,
   "name": "b_BEBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48840,
   "name": "b_BEC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48856,
   "name": "b_BED8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48872,
   "name": "b_BEE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48874,
   "name": "b_BEEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48887,
   "name": "b_BEF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48900,
   "name": "b_BF04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48906,
   "name": "b_BF0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48922,
   "name": "b_BF1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48936,
   "name": "b_BF28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48959,
   "name": "b_BF3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48974,
   "name": "b_BF4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48977,
   "name": "b_BF51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48985,
   "name": "b_BF59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48993,
   "name": "tally_redraw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49013,
   "name": "b_BF75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49016,
   "name": "b_BF78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49019,
   "name": "obj_colour_type",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49023,
   "name": "obj_colour_list",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49042,
   "name": "colour_first_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49043,
   "name": "colour_first_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49053,
   "name": "scene_panel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49054,
   "name": "scene_panel_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49061,
   "name": "b_BFA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49063,
   "name": "b_BFA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49083,
   "name": "b_BFBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49097,
   "name": "sfx_charge",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49099,
   "name": "sfx_power",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49101,
   "name": "sfx_2D7F",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49103,
   "name": "colour_row_buf",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49142,
   "name": "unref_BFF6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "wipe_memory",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49154,
   "name": "b_C002",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49155,
   "name": "wipe_ptr1_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49156,
   "name": "wipe_ptr1_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49158,
   "name": "wipe_ptr2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49159,
   "name": "wipe_ptr2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49177,
   "name": "ending_exit_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49180,
   "name": "mux_band_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49195,
   "name": "b_C02B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49229,
   "name": "b_C04D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49232,
   "name": "b_C050",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49276,
   "name": "mux_band_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49291,
   "name": "b_C08B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49325,
   "name": "b_C0AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49328,
   "name": "b_C0B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49371,
   "name": "mux_none",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 49372,
   "name": "mux_band_1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49387,
   "name": "b_C0EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49416,
   "name": "b_C108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49476,
   "name": "sfx_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49477,
   "name": "sfx_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49546,
   "name": "obj_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49552,
   "name": "j_C190",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49556,
   "name": "j_C194",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49576,
   "name": "b_C1A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49579,
   "name": "b_C1AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49582,
   "name": "b_C1AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49597,
   "name": "b_C1BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49612,
   "name": "b_C1CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49620,
   "name": "b_C1D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49643,
   "name": "b_C1EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49650,
   "name": "b_C1F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49669,
   "name": "b_C205",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49679,
   "name": "b_C20F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49687,
   "name": "b_C217",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49698,
   "name": "b_C222",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49705,
   "name": "b_C229",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49717,
   "name": "b_C235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49727,
   "name": "b_C23F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49732,
   "name": "b_C244",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49737,
   "name": "b_C249",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49738,
   "name": "b_C24A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49750,
   "name": "b_C256",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49756,
   "name": "b_C25C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49760,
   "name": "b_C260",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49764,
   "name": "j_C264",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49772,
   "name": "b_C26C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49794,
   "name": "b_C282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49800,
   "name": "j_C288",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49812,
   "name": "b_C294",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49822,
   "name": "b_C29E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49832,
   "name": "j_C2A8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49853,
   "name": "move_dir_bit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49861,
   "name": "b_C2C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49872,
   "name": "b_C2D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49877,
   "name": "b_C2D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49883,
   "name": "b_C2DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49888,
   "name": "b_C2E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49908,
   "name": "b_C2F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49915,
   "name": "b_C2FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49926,
   "name": "move_back_by",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49933,
   "name": "b_C30D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49949,
   "name": "b_C31D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49954,
   "name": "b_C322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49967,
   "name": "j_C32F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49984,
   "name": "b_C340",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49997,
   "name": "j_C34D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50010,
   "name": "b_C35A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50013,
   "name": "j_C35D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50018,
   "name": "b_C362",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50027,
   "name": "b_C36B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50030,
   "name": "b_C36E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50047,
   "name": "b_C37F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50063,
   "name": "b_C38F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50080,
   "name": "move_scroll_neg",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50085,
   "name": "b_C3A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50102,
   "name": "b_C3B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50109,
   "name": "b_C3BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50115,
   "name": "b_C3C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50132,
   "name": "b_C3D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50139,
   "name": "b_C3DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50143,
   "name": "obj_gone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 50161,
   "name": "b_C3F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50174,
   "name": "b_C3FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50191,
   "name": "b_C40F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50195,
   "name": "gone_self",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50196,
   "name": "b_C414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50199,
   "name": "obj_free",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50218,
   "name": "obj_move_v",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 50235,
   "name": "j_C43B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50241,
   "name": "j_C441",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50253,
   "name": "b_C44D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50263,
   "name": "b_C457",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50298,
   "name": "move_v_dir_bit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50317,
   "name": "b_C48D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50328,
   "name": "b_C498",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50333,
   "name": "b_C49D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50339,
   "name": "b_C4A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50344,
   "name": "b_C4A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50364,
   "name": "b_C4BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50371,
   "name": "b_C4C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50382,
   "name": "move_v_back_by",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50389,
   "name": "b_C4D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50400,
   "name": "b_C4E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50410,
   "name": "b_C4EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50418,
   "name": "j_C4F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50430,
   "name": "j_C4FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50433,
   "name": "j_C501",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50453,
   "name": "b_C515",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50456,
   "name": "r_C518",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50457,
   "name": "obj_clear_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50461,
   "name": "b_C51D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50475,
   "name": "b_C52B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50522,
   "name": "obj_flip_layer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50541,
   "name": "obj_follow_parent",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50556,
   "name": "b_C57C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50562,
   "name": "b_C582",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50591,
   "name": "b_C59F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50623,
   "name": "b_C5BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50632,
   "name": "b_C5C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50636,
   "name": "b_C5CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50642,
   "name": "j_C5D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50702,
   "name": "b_C60E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50757,
   "name": "b_C645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50762,
   "name": "b_C64A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50763,
   "name": "parent_self",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50775,
   "name": "b_C657",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50778,
   "name": "b_C65A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50781,
   "name": "obj_start_anim",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50786,
   "name": "obj_anim_type",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50813,
   "name": "anim_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50827,
   "name": "band_of_39",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50829,
   "name": "slot_band",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50846,
   "name": "b_C69E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50850,
   "name": "b_C6A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50851,
   "name": "r_C6A3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50852,
   "name": "obj_kill_group",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50868,
   "name": "b_C6B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50869,
   "name": "kill_self",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50893,
   "name": "kill_group",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50899,
   "name": "b_C6D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50902,
   "name": "r_C6D6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50903,
   "name": "obj_hit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 50950,
   "name": "b_C706",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50968,
   "name": "b_C718",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50973,
   "name": "b_C71D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50991,
   "name": "b_C72F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50997,
   "name": "obj_weaken",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 51012,
   "name": "b_C744",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51028,
   "name": "weaken_kind",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51032,
   "name": "b_C758",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51037,
   "name": "b_C75D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51047,
   "name": "r_C767",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51048,
   "name": "obj_flash_hit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 51072,
   "name": "b_C780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51073,
   "name": "flash_self",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51095,
   "name": "b_C797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51099,
   "name": "flash_saved_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51100,
   "name": "b_C79C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51111,
   "name": "obj_flash_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51139,
   "name": "obj_kill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51198,
   "name": "b_C7FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51205,
   "name": "b_C805",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51216,
   "name": "b_C810",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51218,
   "name": "b_C812",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51222,
   "name": "a_C816",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51288,
   "name": "b_C858",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51313,
   "name": "b_C871",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51317,
   "name": "a_C875",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51331,
   "name": "b_C883",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51332,
   "name": "a_C884",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51344,
   "name": "b_C890",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51345,
   "name": "a_C891",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51357,
   "name": "b_C89D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51358,
   "name": "a_C89E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51360,
   "name": "anim_scripts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51364,
   "name": "j_C8A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51367,
   "name": "a_C8A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51369,
   "name": "b_C8A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51372,
   "name": "b_C8AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51400,
   "name": "b_C8C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51415,
   "name": "b_C8D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51430,
   "name": "b_C8E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51459,
   "name": "j_C903",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51460,
   "name": "b_C904",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51468,
   "name": "b_C90C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51486,
   "name": "b_C91E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51489,
   "name": "j_C921",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51499,
   "name": "j_C92B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51501,
   "name": "j_C92D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51504,
   "name": "b_C930",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51508,
   "name": "j_C934",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51516,
   "name": "b_C93C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51533,
   "name": "r_C94D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51534,
   "name": "b_C94E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51541,
   "name": "anim_end_item",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 51546,
   "name": "b_C95A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51549,
   "name": "b_C95D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51554,
   "name": "b_C962",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51627,
   "name": "b_C9AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51628,
   "name": "a_C9AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51647,
   "name": "b_C9BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51659,
   "name": "b_C9CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51662,
   "name": "b_C9CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51666,
   "name": "a_C9D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51686,
   "name": "a_C9E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51688,
   "name": "a_C9E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51703,
   "name": "b_C9F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51704,
   "name": "a_C9F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51719,
   "name": "b_CA07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51729,
   "name": "anim_code_other",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 51741,
   "name": "b_CA1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51763,
   "name": "b_CA33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51772,
   "name": "b_CA3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51803,
   "name": "b_CA5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51805,
   "name": "b_CA5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51816,
   "name": "anim_repeat",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 51837,
   "name": "b_CA7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51840,
   "name": "b_CA80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51851,
   "name": "anim_pick_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51880,
   "name": "b_CAA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51886,
   "name": "j_CAAE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51889,
   "name": "b_CAB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51894,
   "name": "b_CAB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51921,
   "name": "b_CAD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51934,
   "name": "b_CADE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51946,
   "name": "b_CAEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51952,
   "name": "anim_set_script",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51969,
   "name": "r_CB01",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51970,
   "name": "obj_mark_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52007,
   "name": "b_CB27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52013,
   "name": "j_CB2D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52015,
   "name": "r_CB2F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52016,
   "name": "key_row_fd_test",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52024,
   "name": "anim_restart",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52034,
   "name": "sfx_4_and_5",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 52043,
   "name": "set_1baa_1bc0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52053,
   "name": "mask_low_clear",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52061,
   "name": "bit_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52069,
   "name": "bit_clear",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52077,
   "name": "tens_group",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52089,
   "name": "r_CB79",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52090,
   "name": "row_to_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52112,
   "name": "str_loading_jellyland",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52132,
   "name": "fire_released",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52133,
   "name": "new_game_load",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 52141,
   "name": "load_next_land",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 52157,
   "name": "b_CBBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52166,
   "name": "b_CBC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52267,
   "name": "b_CC2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52276,
   "name": "j_CC34",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52301,
   "name": "b_CC4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52325,
   "name": "b_CC65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52329,
   "name": "b_CC69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52339,
   "name": "b_CC73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52358,
   "name": "b_CC86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52368,
   "name": "b_CC90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52376,
   "name": "b_CC98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52378,
   "name": "b_CC9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52469,
   "name": "insert_side_b",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 52471,
   "name": "b_CCF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52482,
   "name": "b_CD02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52487,
   "name": "b_CD07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52506,
   "name": "b_CD1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52515,
   "name": "fast_load",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 52519,
   "name": "b_CD27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52543,
   "name": "b_CD3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52575,
   "name": "b_CD5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52630,
   "name": "b_CD96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52637,
   "name": "b_CD9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52664,
   "name": "b_CDB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52666,
   "name": "b_CDBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52672,
   "name": "b_CDC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52676,
   "name": "a_CDC4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52677,
   "name": "a_CDC5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52696,
   "name": "b_CDD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52717,
   "name": "b_CDED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52730,
   "name": "b_CDFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52739,
   "name": "b_CE03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52746,
   "name": "b_CE0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52760,
   "name": "load_done",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 52762,
   "name": "b_CE1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52774,
   "name": "b_CE26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52821,
   "name": "b_CE55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52827,
   "name": "b_CE5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52838,
   "name": "restart_swap_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52844,
   "name": "fast_get_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52849,
   "name": "b_CE71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52855,
   "name": "b_CE77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52868,
   "name": "b_CE84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52909,
   "name": "fast_decode_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52941,
   "name": "drive_cmd_mw_prefix",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52961,
   "name": "msg_insert_side_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52989,
   "name": "str_loading_dots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53004,
   "name": "load_end_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53005,
   "name": "load_start_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53006,
   "name": "file_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53007,
   "name": "file_name_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53008,
   "name": "file_letter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53014,
   "name": "load_bar_cell",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53015,
   "name": "load_bar_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53016,
   "name": "jump_curve",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53017,
   "name": "jump_curve_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53111,
   "name": "f_CF77",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53112,
   "name": "f_CF78",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53113,
   "name": "a_CF79",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53114,
   "name": "a_CF7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53115,
   "name": "a_CF7B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53116,
   "name": "a_CF7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53117,
   "name": "a_CF7D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53118,
   "name": "a_CF7E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53119,
   "name": "a_CF7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53120,
   "name": "a_CF80",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53121,
   "name": "lives_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53122,
   "name": "lives_units",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53123,
   "name": "needed_hundreds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53124,
   "name": "needed_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53125,
   "name": "needed_units",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53126,
   "name": "time_hundreds",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53127,
   "name": "time_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53128,
   "name": "time_units",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53129,
   "name": "level_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53130,
   "name": "continues",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53131,
   "name": "below_quota",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53132,
   "name": "score_shown",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53133,
   "name": "a_CF8D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53134,
   "name": "a_CF8E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53135,
   "name": "a_CF8F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53136,
   "name": "a_CF90",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53137,
   "name": "a_CF91",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53138,
   "name": "a_CF92",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53139,
   "name": "a_CF93",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53140,
   "name": "a_CF94",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53141,
   "name": "needed_shown",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53142,
   "name": "a_CF96",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53143,
   "name": "a_CF97",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53144,
   "name": "time_shown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53145,
   "name": "a_CF99",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53146,
   "name": "a_CF9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53147,
   "name": "page_ptrs_8a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53148,
   "name": "f_CF9C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53159,
   "name": "colour_cycles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53206,
   "name": "f_CFD6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53235,
   "name": "cf_tail_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "drive_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53504,
   "name": "scene_6000_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54368,
   "name": "scene_6000_6360",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54413,
   "name": "scene_6000_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54924,
   "name": "scene_6000_tables",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54986,
   "name": "scene_6000_tune",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55040,
   "name": "d700_tune_like",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55150,
   "name": "new_game_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 55152,
   "name": "b_D770",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 55165,
   "name": "quota_defaults",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55204,
   "name": "d7a4_unknown",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55295,
   "name": "colour_ram_m1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "colour_r00_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55336,
   "name": "colour_r01_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55337,
   "name": "colour_r01_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55352,
   "name": "colour_r01_c16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55368,
   "name": "colour_r01_c32",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55375,
   "name": "colour_r01_c39",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55376,
   "name": "colour_r02_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55377,
   "name": "colour_r02_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55391,
   "name": "colour_r02_c15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55407,
   "name": "colour_r02_c31",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55415,
   "name": "colour_r02_c39",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55416,
   "name": "colour_r03_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55417,
   "name": "colour_r03_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55456,
   "name": "colour_r04_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55457,
   "name": "colour_r04_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55461,
   "name": "colour_r04_c05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55496,
   "name": "colour_r05_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55497,
   "name": "colour_r05_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55501,
   "name": "colour_r05_c05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55505,
   "name": "colour_r05_c09",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55521,
   "name": "colour_r05_c25",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55536,
   "name": "colour_r06_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55537,
   "name": "colour_r06_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55544,
   "name": "colour_r06_c08",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55545,
   "name": "colour_r06_c09",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55552,
   "name": "colour_r06_c16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55560,
   "name": "colour_r06_c24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55576,
   "name": "colour_r07_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55577,
   "name": "colour_r07_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55616,
   "name": "colour_r08_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55617,
   "name": "colour_r08_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55656,
   "name": "colour_r09_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55657,
   "name": "colour_r09_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55671,
   "name": "colour_r09_c15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55696,
   "name": "colour_r10_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55697,
   "name": "colour_r10_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55708,
   "name": "colour_r10_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55735,
   "name": "colour_r10_c39",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55736,
   "name": "colour_r11_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55737,
   "name": "colour_r11_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55775,
   "name": "colour_r11_c39",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55776,
   "name": "colour_r12_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55777,
   "name": "colour_r12_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55788,
   "name": "colour_r12_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55795,
   "name": "colour_r12_c19",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55808,
   "name": "colour_r12_c32",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55816,
   "name": "colour_r13_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55817,
   "name": "colour_r13_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55856,
   "name": "colour_r14_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55857,
   "name": "colour_r14_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55858,
   "name": "colour_r14_c02",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55868,
   "name": "colour_r14_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55896,
   "name": "colour_r15_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55897,
   "name": "colour_r15_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55898,
   "name": "colour_r15_c02",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55908,
   "name": "colour_r15_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55936,
   "name": "colour_r16_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55937,
   "name": "colour_r16_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55948,
   "name": "colour_r16_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55976,
   "name": "colour_r17_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55977,
   "name": "colour_r17_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55988,
   "name": "colour_r17_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56011,
   "name": "colour_r17_c35",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56016,
   "name": "colour_r18_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56017,
   "name": "colour_r18_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56028,
   "name": "colour_r18_c12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56045,
   "name": "colour_r18_c29",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56051,
   "name": "colour_r18_c35",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56056,
   "name": "colour_r19_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56057,
   "name": "colour_r19_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56064,
   "name": "colour_r19_c08",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56096,
   "name": "colour_r20_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56097,
   "name": "colour_r20_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56136,
   "name": "colour_r21_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56137,
   "name": "colour_r21_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56143,
   "name": "colour_r21_c07",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56159,
   "name": "colour_r21_c23",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56176,
   "name": "colour_r22_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56177,
   "name": "colour_r22_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56182,
   "name": "colour_r22_c06",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56198,
   "name": "colour_r22_c22",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56216,
   "name": "colour_r23_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56217,
   "name": "colour_r23_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56256,
   "name": "colour_r24_c00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56257,
   "name": "colour_r24_c01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56321,
   "name": "fe_charset_dc01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56336,
   "name": "charset_d800_dc10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56577,
   "name": "fe_charset_dd01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56592,
   "name": "charset_d800_dd10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "tune_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57687,
   "name": "card_sprites_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57694,
   "name": "b_E15E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57749,
   "name": "b_E195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57751,
   "name": "b_E197",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57753,
   "name": "b_E199",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57775,
   "name": "b_E1AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57777,
   "name": "b_E1B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57805,
   "name": "b_E1CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57807,
   "name": "b_E1CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57827,
   "name": "b_E1E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57855,
   "name": "b_E1FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57858,
   "name": "b_E202",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57875,
   "name": "card_scroll_strips",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57882,
   "name": "b_E21A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57884,
   "name": "b_E21C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57938,
   "name": "r_E252",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 57939,
   "name": "edge_pose_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57957,
   "name": "b_E265",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57966,
   "name": "b_E26E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57979,
   "name": "sprite_patch_pose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58015,
   "name": "b_E29F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58046,
   "name": "pose_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58048,
   "name": "f_E2C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58050,
   "name": "f_E2C2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58052,
   "name": "f_E2C4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58054,
   "name": "f_E2C6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58056,
   "name": "f_E2C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58058,
   "name": "f_E2CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58060,
   "name": "f_E2CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58062,
   "name": "f_E2CE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58064,
   "name": "f_E2D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58066,
   "name": "raster_unsplice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58067,
   "name": "a_E2D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58096,
   "name": "raster_splice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58136,
   "name": "b_E318",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58181,
   "name": "b_E345",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58197,
   "name": "band_link_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58205,
   "name": "band_link_lo",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58213,
   "name": "band_link_hi",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58219,
   "name": "b_E36B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58226,
   "name": "digit_glyph_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58242,
   "name": "digit_glyph_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58258,
   "name": "digit_glyphs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58354,
   "name": "f_E3F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58356,
   "name": "f_E3F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58358,
   "name": "colour_ramp_sad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58366,
   "name": "a_E3FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58374,
   "name": "colour_ramp_happy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58406,
   "name": "mayhem_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58427,
   "name": "b_E43B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58443,
   "name": "a_E44B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58515,
   "name": "b_E493",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58520,
   "name": "b_E498",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58522,
   "name": "b_E49A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58534,
   "name": "mayhem_pointers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58554,
   "name": "b_E4BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58557,
   "name": "b_E4BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58558,
   "name": "r_E4BE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58559,
   "name": "e4bf_to_0a71",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58562,
   "name": "e4c2_to_bcc0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58565,
   "name": "play_land_tune",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58576,
   "name": "j_E4D0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58595,
   "name": "portal_touched",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 58610,
   "name": "b_E4F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58631,
   "name": "b_E507",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58669,
   "name": "new_game_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58671,
   "name": "b_E52F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58703,
   "name": "land_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58737,
   "name": "b_E571",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58761,
   "name": "panel_redraw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58773,
   "name": "objects_unmark",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58776,
   "name": "b_E598",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58804,
   "name": "band_writers_switch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58814,
   "name": "a_E5BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58815,
   "name": "obj_list_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58824,
   "name": "column_inc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58838,
   "name": "r_E5D6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58839,
   "name": "column_dec",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58853,
   "name": "r_E5E5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58854,
   "name": "cursor_add_gap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58870,
   "name": "r_E5F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58871,
   "name": "cursor_back_gap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58890,
   "name": "r_E60A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58891,
   "name": "cursor_save",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58902,
   "name": "cursor_load",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58913,
   "name": "cursor_at_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58927,
   "name": "r_E62F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58928,
   "name": "cursors_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58935,
   "name": "b_E637",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58938,
   "name": "b_E63A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58951,
   "name": "b_E647",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58966,
   "name": "b_E656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58976,
   "name": "b_E660",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58984,
   "name": "cursors_forward",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58989,
   "name": "b_E66D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58992,
   "name": "b_E670",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59008,
   "name": "b_E680",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59023,
   "name": "b_E68F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59031,
   "name": "b_E697",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59039,
   "name": "rec_group",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59046,
   "name": "rec_class_slot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59053,
   "name": "a_E6AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59069,
   "name": "r_E6BD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59070,
   "name": "spawn_queue",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59115,
   "name": "r_E6EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59116,
   "name": "scroll_back_spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59126,
   "name": "b_E6F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59146,
   "name": "b_E70A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59154,
   "name": "j_E712",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59156,
   "name": "b_E714",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59170,
   "name": "b_E722",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59182,
   "name": "r_E72E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 59183,
   "name": "scroll_on_spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59193,
   "name": "b_E739",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59210,
   "name": "b_E74A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59222,
   "name": "b_E756",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59230,
   "name": "spawn_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59261,
   "name": "b_E77D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59269,
   "name": "b_E785",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59272,
   "name": "b_E788",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59316,
   "name": "b_E7B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59324,
   "name": "b_E7BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59370,
   "name": "b_E7EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59379,
   "name": "b_E7F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59425,
   "name": "b_E821",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59453,
   "name": "b_E83D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59456,
   "name": "b_E840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59513,
   "name": "b_E879",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59551,
   "name": "a_E89F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59559,
   "name": "b_E8A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59573,
   "name": "b_E8B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59691,
   "name": "j_E92B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59692,
   "name": "a_E92C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59696,
   "name": "b_E930",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59717,
   "name": "j_E945",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59718,
   "name": "b_E946",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59719,
   "name": "a_E947",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59720,
   "name": "a_E948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59735,
   "name": "b_E957",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59761,
   "name": "a_E971",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59776,
   "name": "a_E980",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59783,
   "name": "b_E987",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59797,
   "name": "b_E995",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59799,
   "name": "j_E997",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59811,
   "name": "b_E9A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59817,
   "name": "j_E9A9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59854,
   "name": "b_E9CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59863,
   "name": "b_E9D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59919,
   "name": "b_EA0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59939,
   "name": "b_EA23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59944,
   "name": "b_EA28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59966,
   "name": "b_EA3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59981,
   "name": "b_EA4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60030,
   "name": "j_EA7E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60032,
   "name": "b_EA80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60042,
   "name": "b_EA8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60048,
   "name": "b_EA90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60050,
   "name": "b_EA92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60076,
   "name": "b_EAAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60095,
   "name": "b_EABF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60099,
   "name": "a_EAC3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60172,
   "name": "b_EB0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60174,
   "name": "b_EB0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60203,
   "name": "b_EB2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60217,
   "name": "b_EB39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60229,
   "name": "b_EB45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60246,
   "name": "b_EB56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60247,
   "name": "a_EB57",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60284,
   "name": "b_EB7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60295,
   "name": "j_EB87",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60315,
   "name": "a_EB9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60316,
   "name": "a_EB9C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60317,
   "name": "b_EB9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60330,
   "name": "b_EBAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60334,
   "name": "a_EBAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60339,
   "name": "a_EBB3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60446,
   "name": "a_EC1E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60458,
   "name": "b_EC2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60464,
   "name": "j_EC30",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60468,
   "name": "a_EC34",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60480,
   "name": "b_EC40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60486,
   "name": "j_EC46",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60490,
   "name": "a_EC4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60502,
   "name": "b_EC56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60508,
   "name": "j_EC5C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60520,
   "name": "j_EC68",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60526,
   "name": "b_EC6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60527,
   "name": "a_EC6F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60530,
   "name": "spawn_group_next",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 60546,
   "name": "b_EC82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60557,
   "name": "j_EC8D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60593,
   "name": "b_ECB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60602,
   "name": "j_ECBA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60621,
   "name": "b_ECCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60633,
   "name": "b_ECD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60648,
   "name": "b_ECE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60656,
   "name": "a_ECF0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60657,
   "name": "obj_turn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60659,
   "name": "b_ECF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60681,
   "name": "s_ED09",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60684,
   "name": "s_ED0C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60692,
   "name": "b_ED14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60711,
   "name": "b_ED27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60717,
   "name": "j_ED2D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60721,
   "name": "b_ED31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60724,
   "name": "b_ED34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60743,
   "name": "b_ED47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60753,
   "name": "b_ED51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60765,
   "name": "a_ED5D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60769,
   "name": "b_ED61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60773,
   "name": "card_slide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60796,
   "name": "a_ED7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60801,
   "name": "b_ED81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60804,
   "name": "r_ED84",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 60805,
   "name": "b_ED85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60824,
   "name": "swap_land_glyphs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60826,
   "name": "b_ED9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60844,
   "name": "b_EDAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60857,
   "name": "s_EDB9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60861,
   "name": "glyph_src_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60863,
   "name": "load_strip_glyphs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60871,
   "name": "s_EDC7",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60873,
   "name": "a_EDC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60876,
   "name": "b_EDCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60887,
   "name": "slot_bit_pairs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60893,
   "name": "s_EDDD",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60899,
   "name": "bit_pairs_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60917,
   "name": "ease_profile",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60926,
   "name": "s_EDFE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60943,
   "name": "a_EE0F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60944,
   "name": "a_EE10",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60945,
   "name": "rotate_anim_glyphs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60947,
   "name": "s_EE13",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 60954,
   "name": "b_EE1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60986,
   "name": "b_EE3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61014,
   "name": "b_EE56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61031,
   "name": "b_EE67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61044,
   "name": "sink_on_tiles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61056,
   "name": "b_EE80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61058,
   "name": "b_EE82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61073,
   "name": "r_EE91",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61074,
   "name": "b_EE92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61086,
   "name": "mayhem_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61094,
   "name": "b_EEA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61104,
   "name": "b_EEB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61114,
   "name": "b_EEBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61132,
   "name": "b_EECC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61151,
   "name": "b_EEDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61162,
   "name": "b_EEEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61164,
   "name": "b_EEEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61176,
   "name": "b_EEF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61183,
   "name": "b_EEFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61192,
   "name": "b_EF08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61199,
   "name": "b_EF0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61201,
   "name": "b_EF11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61214,
   "name": "b_EF1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61240,
   "name": "b_EF38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61242,
   "name": "j_EF3A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61243,
   "name": "j_EF3B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61284,
   "name": "b_EF64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61292,
   "name": "b_EF6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61307,
   "name": "b_EF7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61314,
   "name": "b_EF82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61317,
   "name": "r_EF85",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61318,
   "name": "mayhem_facing_base",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61325,
   "name": "b_EF8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61327,
   "name": "b_EF8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61331,
   "name": "sprite_patch_3",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61368,
   "name": "panel_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61374,
   "name": "panel_sprite_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61376,
   "name": "a_EFC0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61380,
   "name": "panel_sprite_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61382,
   "name": "a_EFC6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61386,
   "name": "cycle_grey",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61395,
   "name": "cycle_time_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61404,
   "name": "cycle_time_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61413,
   "name": "cycle_magic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61422,
   "name": "cycle_lives",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61431,
   "name": "copy_ptrs_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61506,
   "name": "r_F042",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61507,
   "name": "start_seq_33f4",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61526,
   "name": "cps_hi_86",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61531,
   "name": "cps_hi_8c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61536,
   "name": "cps_hi_83",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61541,
   "name": "cps_hi_88",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61546,
   "name": "cps_hi_4b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61551,
   "name": "cps_hi_4d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61556,
   "name": "cps_lo_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61561,
   "name": "cps_lo_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61566,
   "name": "panel_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61577,
   "name": "b_F089",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61595,
   "name": "b_F09B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61597,
   "name": "j_F09D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61600,
   "name": "b_F0A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61604,
   "name": "b_F0A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61612,
   "name": "b_F0AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61632,
   "name": "b_F0C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61646,
   "name": "b_F0CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61649,
   "name": "b_F0D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61652,
   "name": "b_F0D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61662,
   "name": "b_F0DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61668,
   "name": "r_F0E4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61669,
   "name": "b_F0E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61678,
   "name": "screen_shift_41",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61694,
   "name": "b_F0FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61696,
   "name": "b_F100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61715,
   "name": "b_F113",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61725,
   "name": "b_F11D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61729,
   "name": "trigger_cols_a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61734,
   "name": "b_F126",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61748,
   "name": "b_F134",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61752,
   "name": "b_F138",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61754,
   "name": "b_F13A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61758,
   "name": "trigger_cols_b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61763,
   "name": "b_F143",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61777,
   "name": "b_F151",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61781,
   "name": "b_F155",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61783,
   "name": "b_F157",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61787,
   "name": "note_col_1b4a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61804,
   "name": "r_F16C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61805,
   "name": "column_from_1921",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61810,
   "name": "b_F172",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61825,
   "name": "b_F181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61843,
   "name": "b_F193",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61846,
   "name": "r_F196",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61847,
   "name": "clear_1bd6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61860,
   "name": "r_F1A4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61861,
   "name": "column_from_1921_ff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61868,
   "name": "card_irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61881,
   "name": "b_F1B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61892,
   "name": "b_F1C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61914,
   "name": "card_irq_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61933,
   "name": "a_F1ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61965,
   "name": "card_irq_end",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 61972,
   "name": "card_irq_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61992,
   "name": "b_F228",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62017,
   "name": "card_irq_last",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62023,
   "name": "stripe_cols_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62039,
   "name": "stripe_cols_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62055,
   "name": "tally_time_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62057,
   "name": "b_F269",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62077,
   "name": "b_F27D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62086,
   "name": "tally_time_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62088,
   "name": "b_F288",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62109,
   "name": "tally_star_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62114,
   "name": "b_F2A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62134,
   "name": "b_F2B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62147,
   "name": "b_F2C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62162,
   "name": "b_F2D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62179,
   "name": "b_F2E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62188,
   "name": "tally_star_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62190,
   "name": "b_F2EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62204,
   "name": "f2fc_unreached",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62210,
   "name": "stage_complete",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 62242,
   "name": "a_F322",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62291,
   "name": "complete_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62316,
   "name": "b_F36C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62323,
   "name": "b_F373",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62338,
   "name": "b_F382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62342,
   "name": "a_F386",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62350,
   "name": "a_F38E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62356,
   "name": "b_F394",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62382,
   "name": "b_F3AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62429,
   "name": "b_F3DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62446,
   "name": "b_F3EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62454,
   "name": "s_F3F6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62463,
   "name": "b_F3FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62473,
   "name": "complete_irq_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62483,
   "name": "complete_irq_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62493,
   "name": "band_copy_cols",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 62495,
   "name": "b_F41F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62502,
   "name": "b_F426",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62521,
   "name": "a_F439",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62532,
   "name": "a_F444",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62541,
   "name": "b_F44D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62545,
   "name": "set_needed_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62547,
   "name": "b_F453",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62558,
   "name": "jelly_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 62580,
   "name": "obj_xhi_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62581,
   "name": "f_F475",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62582,
   "name": "a_F476",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62583,
   "name": "a_F477",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62584,
   "name": "a_F478",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62585,
   "name": "a_F479",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62586,
   "name": "a_F47A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62587,
   "name": "a_F47B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62588,
   "name": "a_F47C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62589,
   "name": "f_F47D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62590,
   "name": "a_F47E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62591,
   "name": "a_F47F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62592,
   "name": "a_F480",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62593,
   "name": "a_F481",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62594,
   "name": "a_F482",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62595,
   "name": "f_F483",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62596,
   "name": "a_F484",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62597,
   "name": "a_F485",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62598,
   "name": "obj_f486",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62613,
   "name": "obj_f495",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62628,
   "name": "obj_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62633,
   "name": "f_F4A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62638,
   "name": "f_F4AE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62643,
   "name": "obj_colour_held",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62658,
   "name": "obj_f4c2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62673,
   "name": "obj_f4d1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62688,
   "name": "obj_pos_latched",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62689,
   "name": "f_F4E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62698,
   "name": "f_F4EA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62699,
   "name": "f_F4EB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62703,
   "name": "f_F4EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62708,
   "name": "f_F4F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62709,
   "name": "f_F4F5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62718,
   "name": "obj_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62723,
   "name": "f_F503",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62728,
   "name": "f_F508",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62733,
   "name": "obj_score",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62748,
   "name": "obj_f51c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62763,
   "name": "obj_f52b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62778,
   "name": "obj_motion",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62793,
   "name": "obj_f549",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62808,
   "name": "obj_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62823,
   "name": "obj_behaviour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62838,
   "name": "obj_behaviour_saved",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62853,
   "name": "obj_f585",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62868,
   "name": "obj_code3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62883,
   "name": "obj_rec2_bit1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62898,
   "name": "obj_visible",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62903,
   "name": "f_F5B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62908,
   "name": "f_F5BC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62913,
   "name": "obj_column_copy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62928,
   "name": "obj_respawn",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62943,
   "name": "obj_rec_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62958,
   "name": "obj_rec_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62973,
   "name": "obj_follower",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62988,
   "name": "obj_leader",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63003,
   "name": "obj_range_sel",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63018,
   "name": "obj_range_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63033,
   "name": "obj_range_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63048,
   "name": "obj_range_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63063,
   "name": "obj_link",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63078,
   "name": "obj_rec8_bit3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63093,
   "name": "obj_f675",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63108,
   "name": "obj_hold",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63123,
   "name": "obj_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63138,
   "name": "obj_f6a2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63153,
   "name": "obj_f6b1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63168,
   "name": "obj_priority",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63183,
   "name": "obj_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63184,
   "name": "f_F6D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63198,
   "name": "f_F6DE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63213,
   "name": "obj_path_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63228,
   "name": "obj_path_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63243,
   "name": "obj_script_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63258,
   "name": "obj_script_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63273,
   "name": "obj_scr_a_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63288,
   "name": "obj_scr_a_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63303,
   "name": "obj_scr_b_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63318,
   "name": "obj_scr_b_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63333,
   "name": "obj_scr_c_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63348,
   "name": "obj_scr_c_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63363,
   "name": "obj_scr_d_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63378,
   "name": "obj_scr_d_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63393,
   "name": "obj_scr_e_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63408,
   "name": "obj_scr_e_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63423,
   "name": "obj_scr_f_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63438,
   "name": "obj_scr_f_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63453,
   "name": "obj_colours_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63468,
   "name": "obj_colours_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63483,
   "name": "obj_path2_a_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63498,
   "name": "obj_path2_a_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63513,
   "name": "obj_path2_b_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63528,
   "name": "obj_path2_b_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63543,
   "name": "obj_f837",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63558,
   "name": "obj_group",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63573,
   "name": "obj_anim_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63588,
   "name": "obj_anim_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63603,
   "name": "obj_anim_repeat",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63618,
   "name": "obj_anim_resume",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63633,
   "name": "obj_colour_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63648,
   "name": "obj_colour_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63663,
   "name": "obj_rec11",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63678,
   "name": "obj_size",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63693,
   "name": "obj_item_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63708,
   "name": "obj_item_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63723,
   "name": "obj_item_alt",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63738,
   "name": "obj_rec5_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63753,
   "name": "obj_scr_once_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63768,
   "name": "obj_scr_once_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63783,
   "name": "obj_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63798,
   "name": "obj_start_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63813,
   "name": "pose3_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63816,
   "name": "f_F948",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63819,
   "name": "f_F94B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63822,
   "name": "f_F94E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63825,
   "name": "f_F951",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63828,
   "name": "f_F954",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63831,
   "name": "band_line_op_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63835,
   "name": "band_line_op_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63839,
   "name": "band_lo_op_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63843,
   "name": "band_lo_op_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63847,
   "name": "band_hi_op_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63851,
   "name": "band_hi_op_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63855,
   "name": "band_split_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63859,
   "name": "band_next_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63863,
   "name": "band_next_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63867,
   "name": "band_next_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63880,
   "name": "sprite5_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63892,
   "name": "f_F994",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63901,
   "name": "f_F99D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63910,
   "name": "panel_label_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63958,
   "name": "star_frames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64598,
   "name": "tune_sad",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64762,
   "name": "tune_stage_complete",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64950,
   "name": "tune_happy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65280,
   "name": "a_FF00",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65344,
   "name": "happy_tune_ff40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65408,
   "name": "happy_tune_ff80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65463,
   "name": "ffb7_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65466,
   "name": "s_FFBA",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 65469,
   "name": "s_FFBD",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 65477,
   "name": "fffc5_copy",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The 6510's data-direction register. Nothing in the game reads it as code: the JSR at $1C32 and the JMP at $CBC6 are assembled with $0000 and have their real targets written in before they run."
  },
  {
   "address": 512,
   "type": "line",
   "text": "Object slots, table 1 of 5 at $0200-$024A (15 slots each, indexed by slot X; the other per-slot tables are at $F4xx-$F9xx). Read position in the slot's movement script: $C282 reads the script byte at ($47),Y with Y from here and increments it; $FE in the script holds it, $FD runs $C55A. Cleared when a slot is spawned ($EBD5)."
  },
  {
   "address": 527,
   "type": "line",
   "text": "Object slots, table 2 of 5 (15 slots): a second script read position, stepped the same way as $0200 by the code at $C43B-$C4E2; cleared at spawn ($EBD8), by $C5E5 when $C5D2 points the slot at a new script (with $022D), and by $C830 (with $0200)."
  },
  {
   "address": 542,
   "type": "line",
   "text": "Object slots, table 3 of 5 (15 slots): written by $C482, $C67F, $C931, $CAF9, read as an index by $C900, and incremented by $C597-$C59C (LDA/STA $021E,Y); cleared at spawn ($EBC6). Meaning not traced from this range."
  },
  {
   "address": 557,
   "type": "line",
   "text": "Object slots, table 4 of 5 (15 slots): index into the slot's animation list at ($80),Y: $B697 steps it and wraps to 0 when the next entry is $10 or more; cleared at spawn ($EBCF) and by $C5E8 when the slot gets a new script; $BAB5 sets it to $FF when $BAA1 gives the slot a new animation list, so the next step starts at entry 0."
  },
  {
   "address": 572,
   "type": "line",
   "text": "Object slots, table 5 of 5 (15 slots): nonzero while the slot is in use. Spawning writes 1 ($EC05); $B647, $BA23, $C198 and the object code at $C36E-$C8AC skip a slot holding 0."
  },
  {
   "address": 587,
   "type": "line",
   "text": "$024B-$02A6: the KERNAL's own work area (file tables, keyboard buffer at $0277, memory bounds at $0281-$0284, colour and key-repeat bytes, the PAL flag at $02A6), left as the KERNAL set it before the game switched the ROM out ($196C). No instruction in the engine reads or writes it."
  },
  {
   "address": 679,
   "type": "line",
   "text": "16 bytes, alternately $FD and $FE: glyph numbers copied by $3C62 (the screen set-up loop $3C28-$3C84) to screen $46DC-$46EB."
  },
  {
   "address": 695,
   "type": "line",
   "text": "16 glyph numbers $DE-$ED in order, copied by $3C6E to screen $459C-$45AB."
  },
  {
   "address": 711,
   "type": "line",
   "text": "The same 16 glyph numbers $DE-$ED rotated by eight ($E6-$ED, $DE-$E5), copied by $3C74 to screen $45EC-$45FB."
  },
  {
   "address": 727,
   "type": "line",
   "text": "$02D7-$02FF, zero; no reader or writer found in the engine."
  },
  {
   "address": 768,
   "type": "line",
   "text": "$0300-$0313: BASIC's vectors and work bytes as left at boot. The game never calls BASIC (the ROM is switched out in play); no reader found."
  },
  {
   "address": 788,
   "type": "line",
   "text": "KERNAL IRQ vector, low byte. $1809 ($182D) writes $68 or $62 here (with $18 in $0315) so a ROM-in interrupt reaches the game's dispatcher $1868 or $1862."
  },
  {
   "address": 789,
   "type": "line",
   "text": "KERNAL IRQ vector, high byte, written by $1833."
  },
  {
   "address": 790,
   "type": "line",
   "text": "$0316-$0317 BRK vector and $031A-$0333 the KERNAL's file and I/O vectors, as left at boot; the game does not use them with the ROM out."
  },
  {
   "address": 792,
   "type": "line",
   "text": "KERNAL NMI vector, low byte: $197F stores $C1 here at start-up (the high byte $FE is left), pointing the RESTORE key's NMI at $FEC1 in the KERNAL ROM (the end of its NMI routine in the standard ROM: an RTI), so RESTORE is ignored while the ROM is in; with the ROM out the NMI goes through $FFFA instead."
  },
  {
   "address": 828,
   "type": "line",
   "text": "Music driver on/off: 0 stops the tune; $080C clears it, $0584 increments it once the tune is set up, $0591 clears it when a tune ends. $087B plays a frame only while it is nonzero."
  },
  {
   "address": 829,
   "type": "line",
   "text": "The music driver's per-frame work (called through $0880). Advances the tempo counter $08A0 (0 to $089F-1), adds the filter sweep step $08BC/$08BD to the cutoff shadow $0962/$0963, then for each voice X = 2 down to the limit in $045E (Y = its SID register offset from $0943): steps the voice's divider $08E6/$08E9 and arpeggio phase $08D7; on a tempo tick reads commands from the voice's data pointer ($FC/$FD from $0940/$093D) and calls each through the handler tables $0966/$098B (patching the JSR at $03D5) until a note; then per frame applies slide ($076D), vibrato ($06A8), waveform table ($0948), arpeggio ($0679) and pulse sweep ($0623), and on a tempo tick counts the note down ($0464)."
  },
  {
   "address": 981,
   "type": "side",
   "text": "JSR operand patched by $03C3-$03CC with the command handler's address"
  },
  {
   "address": 982,
   "type": "line",
   "text": "Operand of the JSR at $03D5, written by $03C3-$03CC with the music command handler's address (from $0966/$098B) before each command is run; the rest of the voice loop follows."
  },
  {
   "address": 983,
   "type": "line",
   "text": "High byte of the handler JSR's operand at $03D5, written by $03C9; after the handler, the pointer steps on ($0800) and the per-frame effects follow."
  },
  {
   "address": 1034,
   "type": "line",
   "text": "A symbol only because the clearing loop at $C000 (outside this range; the protection jumps there at $44B2 after a third wrong code) names $040A in its STA and steps that operand upward: here the middle of the music driver's voice loop."
  },
  {
   "address": 1038,
   "type": "line",
   "text": "Offset byte of the BNE at $040D in the music driver's waveform-table test (alternating modes: an odd divider step keeps the note's own waveform); named only because data bytes at $100C and $B103 happen to decode as ASL $040E."
  },
  {
   "address": 1118,
   "type": "line",
   "text": "Operand of CPX #$FF at $045D, patched by $1298: the voice loop's limit; 0 plays voices 2, 1 and 0, 1 plays 2 and 1, 2 plays voice 2 only. The loop's next pass or exit follows."
  },
  {
   "address": 1118,
   "type": "side",
   "text": "operand patched by $1298, the voice loop's limit: 0 plays voices 2, 1 and 0; 1 plays 2 and 1; 2 plays voice 2 only"
  },
  {
   "address": 1124,
   "type": "line",
   "text": "Counts the voice's note length down ($093A low, $08EF high). When fewer than $08AD ticks remain it clears the gate bit of the voice's control shadow (release); at zero it starts the next note at $048A: resets the voice's counters, reloads AD, SR, pulse width and the vibrato delay, reads the note byte (0 = rest) and the length byte, works out the note's frequency and its two arpeggio partners ($08DD, $08DA intervals), writes control $090D, and takes a following ($19, n) pair as the length's high byte."
  },
  {
   "address": 1283,
   "type": "line",
   "text": "Middle of the new-note code ($048A): reads the note's length byte into $093A, steps past the note, loads the voice's waveform $090D into the control shadow and $08AA, and takes a ($19, n) pair as the length's high byte. ($5A00 in the land names this address only by coincidence of bytes.)"
  },
  {
   "address": 1320,
   "type": "side",
   "text": "BIT abs hides LDA #$00 at $0529: entered at $0529 when no ($19, n) pair follows, so the length high byte is 0"
  },
  {
   "address": 1327,
   "type": "line",
   "text": "Body of the tune start ($080C): clears the driver's variables $089E-$0938 (Y = $9B down to 1), sets each voice's release point $08AD to 2, length to 1 and vibrato period $0937 to 1, tempo $089F to 1; keeps the tune base in $0946/$0947; voice 0 reads from base+4, voices 1 and 2 from base+4 plus the 16-bit offsets in the tune's first four bytes ($056C-$0582, X = $7E and $7F). Sets $033C, silences ($0596) and runs two frames of the driver ($0880) to prime it."
  },
  {
   "address": 1418,
   "type": "line",
   "text": "Opcode byte of the first priming JSR $0880 in the tune start; $12C1 writes $20 (JSR) or $60 (RTS, so the start returns here without priming)."
  },
  {
   "address": 1418,
   "type": "side",
   "text": "opcode patched by $12C1: $20 (JSR, prime the driver) or $60 (RTS, return at once)"
  },
  {
   "address": 1425,
   "type": "line",
   "text": "Stops the tune: $033C = 0, then falls into $0596."
  },
  {
   "address": 1430,
   "type": "line",
   "text": "Clears the SID shadow $094D-$0964 and writes 0 to $D418 (volume off). $12C4 can turn the STA at $05A0 into an RTS so the volume is left alone."
  },
  {
   "address": 1440,
   "type": "line",
   "text": "Opcode of the STA $D418 in $0596; $12C4 writes $8D (silence the volume) or $60 (RTS, leave the volume alone)."
  },
  {
   "address": 1440,
   "type": "side",
   "text": "opcode patched by $12C4: $8D (write volume 0) or $60 (skip)"
  },
  {
   "address": 1444,
   "type": "line",
   "text": "Music command $10: end of a repeat (outer level). Counts the voice's repeat counter $0919 up; while it is below the argument, jumps the data pointer back to the mark saved by command $11 ($091F/$0925)."
  },
  {
   "address": 1472,
   "type": "line",
   "text": "Music command $11: marks the start of a repeat (outer level): saves the voice's data pointer in $091F/$0925 and zeroes its counter $0919."
  },
  {
   "address": 1490,
   "type": "line",
   "text": "Music command $12: end of a repeat at the inner level (the same as $05A4 with the voice index plus 3)."
  },
  {
   "address": 1498,
   "type": "line",
   "text": "Music command $13: start of a repeat at the inner level (as $05C0, index plus 3)."
  },
  {
   "address": 1504,
   "type": "line",
   "text": "Music command $14: sets the voice's transpose $0901 (semitones added to every note)."
  },
  {
   "address": 1508,
   "type": "line",
   "text": "Music command $05: an argument of 100 or more sets the release point $08AD (arg - 100 ticks before the note's end); below 100 it sets how many ticks the waveform table applies, $08B6."
  },
  {
   "address": 1522,
   "type": "line",
   "text": "Music command $07: an argument of $63 or more chooses the voice whose new notes restart the filter sweep ($089E = arg - 100); below, it sets the voice's waveform-table mode $08B3 (0 off, 1-5 a fixed entry for the first ticks, 6-10 alternating with the note's own waveform)."
  },
  {
   "address": 1536,
   "type": "line",
   "text": "Music command $15: the argument's high nibble is the pulse-width sweep's upper bound $08FB (it rises while the pulse width high byte is below it, $0652), its low nibble the lower bound $08FE (it falls while at or above it, $0646)."
  },
  {
   "address": 1551,
   "type": "line",
   "text": "Music command $16: vibrato half-period $0937 in frames."
  },
  {
   "address": 1555,
   "type": "line",
   "text": "Music command $17: SID resonance and filter routing shadow $0964 ($D417)."
  },
  {
   "address": 1559,
   "type": "line",
   "text": "Music command $18: the cutoff high byte $08BE a new note on the filter voice restarts the sweep from."
  },
  {
   "address": 1563,
   "type": "line",
   "text": "Music command $1B: adds the argument to the mode/volume shadow $0965 ($D418)."
  },
  {
   "address": 1571,
   "type": "line",
   "text": "Pulse-width sweep for voice X (Y = its SID offset), on frames where the divider $08E6 is 0: adds the step $0916 to the pulse width shadow $094F/$0950; with bounds set ($08FB nonzero) it bounces between $08FB and $08FE, direction in $08F8."
  },
  {
   "address": 1653,
   "type": "line",
   "text": "Music command $03: the voice's control byte (waveform and gate) for its notes, $090D."
  },
  {
   "address": 1657,
   "type": "line",
   "text": "Arpeggio for voice X: mode 1 ($08B0) alternates the note and its first partner ($08C2/$08C5) on each divider step; other modes cycle note, first partner, second partner ($08E3/$08E0) by the phase $08D7. Writes the frequency shadow."
  },
  {
   "address": 1704,
   "type": "line",
   "text": "Vibrato for voice X: after the delay $08D1 runs out, adds or subtracts the depth $08CE to the frequency every frame, in four phases ($08F5) of $0937 frames each."
  },
  {
   "address": 1760,
   "type": "line",
   "text": "Music command $1C: semitones from the note to the arpeggio's second partner, $08DD."
  },
  {
   "address": 1764,
   "type": "line",
   "text": "Music command $1D: filter sweep step: argument / 8 to $08BD (cutoff high), argument AND 7 to $08BC (cutoff low bits)."
  },
  {
   "address": 1778,
   "type": "line",
   "text": "Music command $25: frames per tempo tick, $089F."
  },
  {
   "address": 1782,
   "type": "line",
   "text": "Music command $1F: semitones from the note to the arpeggio's first partner (also the slide target), $08DA."
  },
  {
   "address": 1785,
   "type": "line",
   "text": "Music command $19: does nothing when met as a command; after a note, a ($19, n) pair is read by $051A as the length's high byte."
  },
  {
   "address": 1786,
   "type": "line",
   "text": "Music command $1A: adds the argument to the voice's transpose $0901."
  },
  {
   "address": 1794,
   "type": "line",
   "text": "Music command $21: frames before the vibrato starts on each note, $08D4."
  },
  {
   "address": 1798,
   "type": "line",
   "text": "Music command $24: returns from a sub-sequence: the data pointer goes back to the call saved in $092B/$0931, the second level moves up, and the pointer steps past the 4-byte call."
  },
  {
   "address": 1823,
   "type": "line",
   "text": "Music command $20: a value added to the low byte of every frequency the voice looks up, $08EC."
  },
  {
   "address": 1827,
   "type": "line",
   "text": "Adds the vibrato depth $08CE to the voice's frequency $08A1/$08A4 and its shadow."
  },
  {
   "address": 1848,
   "type": "line",
   "text": "Subtracts the vibrato depth $08CE from the voice's frequency and its shadow."
  },
  {
   "address": 1873,
   "type": "line",
   "text": "Frequency of note A (bit 7 ignored) plus the voice's transpose $0901, from the table at $09B0, plus the detune $08EC: returns A = low byte, Y = high byte."
  },
  {
   "address": 1897,
   "type": "line",
   "text": "Music command $0C: slide step high byte $0907."
  },
  {
   "address": 1901,
   "type": "line",
   "text": "Slide for voice X, mode A ($08BF): 1 glides toward the first partner's frequency $08C2/$08C5 and stops on it, 2 slides up and 3 down by the step $0904/$0907 every frame. Runs only once the note is $08C8 ticks old."
  },
  {
   "address": 2044,
   "type": "line",
   "text": "Music command $0E: pulse-width sweep step $0916."
  },
  {
   "address": 2048,
   "type": "line",
   "text": "Advances the voice's data pointer $FC/$FD by one command (2 bytes)."
  },
  {
   "address": 2060,
   "type": "line",
   "text": "Starts a tune: Y/X = the tune's address (low/high). Turns the driver off ($033C = 0) while $052F sets it up."
  },
  {
   "address": 2072,
   "type": "line",
   "text": "Music command $09: ticks into a note before the slide starts, $08C8."
  },
  {
   "address": 2076,
   "type": "line",
   "text": "Music command $0B: vibrato depth $08CE (0 = no vibrato)."
  },
  {
   "address": 2080,
   "type": "line",
   "text": "Music command $0F: slide mode $08BF (0 off, 1 glide to partner, 2 up, 3 down)."
  },
  {
   "address": 2084,
   "type": "line",
   "text": "Music command $08: arpeggio mode $08B0 (0 off, 1 two-note, other three-note)."
  },
  {
   "address": 2088,
   "type": "line",
   "text": "Music command $06: the voice's divider $08B9, frames per step of the arpeggio and pulse sweep."
  },
  {
   "address": 2092,
   "type": "line",
   "text": "Music command $02: attack/decay for the voice's notes, $0913."
  },
  {
   "address": 2096,
   "type": "line",
   "text": "Music command $01: mode/volume shadow $0965 ($D418)."
  },
  {
   "address": 2100,
   "type": "line",
   "text": "Music command $22: sets the slide target ($08C2/$08C5) to the frequency of the argument's note."
  },
  {
   "address": 2111,
   "type": "line",
   "text": "Music command $23: calls a sub-sequence at the tune base plus the 16-bit offset in the argument and the next byte; the caller's pointer is saved in $092B/$0931 (the previous one moves to $092E/$0934, two levels), then reading continues at the target ($03B7)."
  },
  {
   "address": 2159,
   "type": "line",
   "text": "Music command $0A: sustain/release for the voice's notes, $090A."
  },
  {
   "address": 2163,
   "type": "line",
   "text": "Music command $1E: ends the tune: $0591 stops and silences, then drops two return addresses so the driver returns straight to $087B's caller."
  },
  {
   "address": 2171,
   "type": "line",
   "text": "The music driver's frame entry, called once a frame: returns at once when $033C is 0, else runs $033D and copies the SID shadow $094D-$0965 to $D400-$D418, from register $18 down to the limit at $088F (0 for all voices)."
  },
  {
   "address": 2176,
   "type": "line",
   "text": "The driver's frame without the on/off test: runs $033D, then copies the shadow registers to the SID. Entered from $087B, and called twice by the tune start to prime the voices."
  },
  {
   "address": 2180,
   "type": "line",
   "text": "Operand of LDY #$18 at $0883: the first SID register copied, written by $129B ($18 in every set-up)."
  },
  {
   "address": 2180,
   "type": "side",
   "text": "operand patched by $129B: first register copied ($18)"
  },
  {
   "address": 2191,
   "type": "line",
   "text": "Operand of CPY #$FF at $088E: the lowest SID register copied, written by $129E (0, 7 or $0E)."
  },
  {
   "address": 2191,
   "type": "side",
   "text": "operand patched by $129E: lowest SID register copied (0, 7 or $0E: leaves the voices the sound effects own alone)"
  },
  {
   "address": 2198,
   "type": "line",
   "text": "Music command $0D: slide step low byte $0904."
  },
  {
   "address": 2202,
   "type": "line",
   "text": "Music command $04: pulse width high byte each note starts with, $0910."
  },
  {
   "address": 2205,
   "type": "line",
   "text": "RTS of music command $04 ($089A). The clear loop in $052F starts at $089D+1, so this byte is never cleared."
  },
  {
   "address": 2206,
   "type": "line",
   "text": "Voice whose new notes restart the filter sweep ($04A2), set by command $07 with an argument of 99 ($63) or more (argument - 100; 99 gives $FF, no voice)."
  },
  {
   "address": 2207,
   "type": "line",
   "text": "Frames per tempo tick (command $25); 1 after $052F."
  },
  {
   "address": 2208,
   "type": "line",
   "text": "Frame counter within the tempo tick, 0 to $089F-1 ($033D); commands are read and lengths counted when it is 0."
  },
  {
   "address": 2209,
   "type": "line",
   "text": "Per voice (3 bytes): the voice's current frequency, low byte; with $08A4 the value slides and vibrato move."
  },
  {
   "address": 2212,
   "type": "line",
   "text": "Per voice: current frequency, high byte."
  },
  {
   "address": 2215,
   "type": "line",
   "text": "Per voice: the note playing, 0 for a rest."
  },
  {
   "address": 2218,
   "type": "line",
   "text": "Per voice: the note's control byte (waveform), restored by the waveform table code ($0432)."
  },
  {
   "address": 2221,
   "type": "line",
   "text": "Per voice: ticks before a note's end at which the gate is cleared ($047C); 2 after init."
  },
  {
   "address": 2224,
   "type": "line",
   "text": "Per voice: arpeggio mode (command $08)."
  },
  {
   "address": 2227,
   "type": "line",
   "text": "Per voice: waveform-table mode (command $07): 0 off, 1-5 entry $0948+n-1 from the note's second tick to tick $08B6 (the first tick, age 0, keeps the note's own waveform, $041B), 6 and up alternate entry n-5 with the note's waveform."
  },
  {
   "address": 2230,
   "type": "line",
   "text": "Per voice: how many ticks the waveform table applies (0 = the whole note)."
  },
  {
   "address": 2233,
   "type": "line",
   "text": "Per voice: frames per divider step (command $06)."
  },
  {
   "address": 2236,
   "type": "line",
   "text": "Filter sweep step, cutoff low bits (0-7), command $1D."
  },
  {
   "address": 2237,
   "type": "line",
   "text": "Filter sweep step, cutoff high byte, command $1D."
  },
  {
   "address": 2238,
   "type": "line",
   "text": "Cutoff high byte the sweep restarts from (command $18)."
  },
  {
   "address": 2239,
   "type": "line",
   "text": "Per voice: slide mode (command $0F)."
  },
  {
   "address": 2240,
   "type": "line",
   "text": "$08BF+1, the base $052F uses with X = $7E-$7F to write voice 1 and 2's data pointer high bytes ($093E, $093F)."
  },
  {
   "address": 2242,
   "type": "line",
   "text": "Per voice: frequency high byte of the arpeggio's first partner, also the glide target ($0834). (The auto label at $08C0 is $08BF+1: $052F indexes from $08C0 and $08C3 with X = $7E-$7F to reach the voice pointers at $093E/$0941.)"
  },
  {
   "address": 2243,
   "type": "line",
   "text": "$08C2+1, the base $052F uses with X = $7E-$7F to write voice 1 and 2's data pointer low bytes ($0941, $0942)."
  },
  {
   "address": 2245,
   "type": "line",
   "text": "Per voice: first partner's frequency, low byte."
  },
  {
   "address": 2248,
   "type": "line",
   "text": "Per voice: ticks before the slide starts (command $09)."
  },
  {
   "address": 2251,
   "type": "line",
   "text": "Per voice: tempo ticks since the note started."
  },
  {
   "address": 2254,
   "type": "line",
   "text": "Per voice: vibrato depth (command $0B)."
  },
  {
   "address": 2257,
   "type": "line",
   "text": "Per voice: frames left before the vibrato starts, reloaded from $08D4 at each note."
  },
  {
   "address": 2260,
   "type": "line",
   "text": "Per voice: vibrato delay (command $21)."
  },
  {
   "address": 2263,
   "type": "line",
   "text": "Per voice: three-note arpeggio phase 0-2, stepped with the divider."
  },
  {
   "address": 2266,
   "type": "line",
   "text": "Per voice: semitones to the first partner (command $1F)."
  },
  {
   "address": 2269,
   "type": "line",
   "text": "Per voice: semitones to the second partner (command $1C)."
  },
  {
   "address": 2272,
   "type": "line",
   "text": "Per voice: second partner's frequency, low byte. Nothing writes it but the clear in $052F: $04DB stores only the high byte (TYA), so the second partner always has low byte 0."
  },
  {
   "address": 2275,
   "type": "line",
   "text": "Per voice: second partner's frequency, high byte ($04DF)."
  },
  {
   "address": 2278,
   "type": "line",
   "text": "Per voice: frame counter within the divider step."
  },
  {
   "address": 2281,
   "type": "line",
   "text": "Per voice: divider steps counted; bit 0 alternates the two-note arpeggio and the waveform table."
  },
  {
   "address": 2284,
   "type": "line",
   "text": "Per voice: added to every looked-up frequency's low byte (command $20)."
  },
  {
   "address": 2287,
   "type": "line",
   "text": "Per voice: note length, high byte (a ($19, n) pair after a note, $052B; 0 at init, $0542). The countdown's borrow ($046F) takes it to $FF when a length of 0 is counted past zero; while it holds $FF, $03A8 reads commands on every tempo tick."
  },
  {
   "address": 2290,
   "type": "line",
   "text": "Per voice: frames into the current vibrato phase."
  },
  {
   "address": 2293,
   "type": "line",
   "text": "Per voice: vibrato phase 0-3 (1 and 2 subtract, 0 and 3 add)."
  },
  {
   "address": 2296,
   "type": "line",
   "text": "Per voice: pulse sweep direction, 1 = down."
  },
  {
   "address": 2299,
   "type": "line",
   "text": "Per voice: pulse sweep upper bound, pulse width high byte (command $15's high nibble): $0623 adds the step while the high byte is below it; 0 means no bounds."
  },
  {
   "address": 2302,
   "type": "line",
   "text": "Per voice: pulse sweep lower bound (command $15's low nibble): going down, $0623 turns back up once the high byte is below it; going up, it turns down at or above it."
  },
  {
   "address": 2305,
   "type": "line",
   "text": "Per voice: transpose in semitones (commands $14 and $1A)."
  },
  {
   "address": 2308,
   "type": "line",
   "text": "Per voice: slide step, low byte (command $0D)."
  },
  {
   "address": 2311,
   "type": "line",
   "text": "Per voice: slide step, high byte (command $0C)."
  },
  {
   "address": 2314,
   "type": "line",
   "text": "Per voice: SR value for new notes (command $0A)."
  },
  {
   "address": 2317,
   "type": "line",
   "text": "Per voice: control byte for new notes (command $03)."
  },
  {
   "address": 2320,
   "type": "line",
   "text": "Per voice: pulse width high byte for new notes (command $04)."
  },
  {
   "address": 2323,
   "type": "line",
   "text": "Per voice: AD value for new notes (command $02)."
  },
  {
   "address": 2326,
   "type": "line",
   "text": "Per voice: pulse sweep step (command $0E)."
  },
  {
   "address": 2329,
   "type": "line",
   "text": "Repeat counters, 6 bytes: voice X at $0919+X (outer) and $091C+X (inner)."
  },
  {
   "address": 2335,
   "type": "line",
   "text": "Repeat marks, data pointer low byte, 6 bytes (outer, then inner level)."
  },
  {
   "address": 2341,
   "type": "line",
   "text": "Repeat marks, data pointer high byte, 6 bytes."
  },
  {
   "address": 2347,
   "type": "line",
   "text": "Sub-sequence return pointer, low byte, per voice; $092E holds the second level."
  },
  {
   "address": 2350,
   "type": "line",
   "text": "Second-level return pointer, low byte, per voice."
  },
  {
   "address": 2353,
   "type": "line",
   "text": "Sub-sequence return pointer, high byte, per voice."
  },
  {
   "address": 2356,
   "type": "line",
   "text": "Second-level return pointer, high byte, per voice."
  },
  {
   "address": 2359,
   "type": "line",
   "text": "Per voice: vibrato half-period in frames (command $16), 1 after init."
  },
  {
   "address": 2362,
   "type": "line",
   "text": "Per voice: note length countdown, low byte."
  },
  {
   "address": 2365,
   "type": "line",
   "text": "Per voice: data pointer, high byte."
  },
  {
   "address": 2368,
   "type": "line",
   "text": "Per voice: data pointer, low byte."
  },
  {
   "address": 2371,
   "type": "line",
   "text": "SID register offset of each voice: 0, 7, 14."
  },
  {
   "address": 2374,
   "type": "line",
   "text": "The tune's base address, low byte; sub-sequence offsets are added to it ($085E)."
  },
  {
   "address": 2375,
   "type": "line",
   "text": "The tune's base address, high byte ($0560). Also index 0 of the waveform table read as $0947+n ($042D), never used since n starts at 1."
  },
  {
   "address": 2376,
   "type": "line",
   "text": "Waveform table, 5 control bytes ($41 pulse, $21 saw, $11 triangle, $81 noise, $51 pulse+triangle, all with gate), used by the waveform-table modes ($042D). Not cleared by $052F."
  },
  {
   "address": 2381,
   "type": "line",
   "text": "The music's copy of the SID registers $D400-$D418 (25 bytes): three voices of 7 bytes, then $0962 cutoff low, $0963 cutoff high, $0964 resonance/routing, $0965 mode/volume. $087B copies it to the chip each frame."
  },
  {
   "address": 2382,
   "type": "line",
   "text": "Shadow of $D401 and on, as addressed by voice offset Y: $094E+Y frequency high, $094F+Y pulse low, $0950+Y pulse high, $0951+Y control, $0952+Y AD, $0953+Y SR."
  },
  {
   "address": 2383,
   "type": "line",
   "text": "Shadow of the pulse width low byte of the voice at offset Y ($094F+Y), moved by the pulse sweep $0623."
  },
  {
   "address": 2384,
   "type": "line",
   "text": "Shadow of the pulse width high byte of the voice at offset Y ($0950+Y), set at each new note from $0910 and moved by the pulse sweep."
  },
  {
   "address": 2385,
   "type": "line",
   "text": "Shadow of the control register (waveform and gate) of the voice at offset Y ($0951+Y): from $090D at each note, the waveform table ($0437) and the release ($0486)."
  },
  {
   "address": 2386,
   "type": "line",
   "text": "Shadow of the attack/decay register of the voice at offset Y ($0952+Y), from $0913 at each note."
  },
  {
   "address": 2387,
   "type": "line",
   "text": "Shadow of the sustain/release register of the voice at offset Y ($0953+Y), from $090A at each note."
  },
  {
   "address": 2402,
   "type": "line",
   "text": "Shadow of $D415, the filter cutoff low bits, moved by the filter sweep ($034E)."
  },
  {
   "address": 2403,
   "type": "line",
   "text": "Shadow of $D416, the filter cutoff high byte, moved by the filter sweep and reset per note on the filter voice ($04AD)."
  },
  {
   "address": 2404,
   "type": "line",
   "text": "Shadow of $D417, resonance and filter routing (command $17)."
  },
  {
   "address": 2405,
   "type": "line",
   "text": "Shadow of $D418, filter mode and volume (commands $01 and $1B)."
  },
  {
   "address": 2406,
   "type": "line",
   "text": "Music command handlers, low bytes: entry n is command n+1 (a command is a byte 1-$25 followed by an argument byte)."
  },
  {
   "address": 2443,
   "type": "line",
   "text": "Music command handlers, high bytes, matching $0966."
  },
  {
   "address": 2480,
   "type": "line",
   "text": "SID frequency of each of 96 notes, low byte then high byte, 8 octaves ($0106 for the lowest, $F810 for the highest), read by $0751."
  },
  {
   "address": 2481,
   "type": "line",
   "text": "High bytes of the note frequencies, interleaved with the low bytes at $09B0 (read as $09B1,Y by $0761)."
  },
  {
   "address": 2544,
   "type": "line",
   "text": "Notes 32-63 of the music driver's frequency table (from $09B0): low byte, then high byte, of each SID frequency, read through $09B0,Y and $09B1,Y by $0751-$0761."
  },
  {
   "address": 2608,
   "type": "line",
   "text": "Notes 64-95, the top third of the music driver's frequency table (from $09B0), low then high byte; the last pair, at $0A6E, is the highest note the driver can play."
  },
  {
   "address": 2672,
   "type": "line",
   "text": "The sound-effect player's frame entry (called by $1178 and through $BC9C after $BC9F has started any requested effects): for each effect channel Y = 2 down to 0 (the start value at $0A71 is patched by $12A2 to use 3, 2 or 1 channels) whose block ($0C7C) is active ($0C3A), counts down the layer-alternation timer ($0C3E, reloaded from $0C34, flipping $0C3B), then runs $0A9F with the channel's SID voice offset ($0C79) in $FF."
  },
  {
   "address": 2673,
   "type": "line",
   "text": "Operand of the LDY at $0A70: the highest effect channel played, patched by $12A2 (2, 1 or 0); then the per-channel loop."
  },
  {
   "address": 2673,
   "type": "side",
   "text": "operand patched by $12A2: the highest effect channel played (2, 1 or 0)"
  },
  {
   "address": 2713,
   "type": "side",
   "text": "operand is the loop counter, stored by $0A72 each pass"
  },
  {
   "address": 2714,
   "type": "line",
   "text": "Operand of LDY #$FF at $0A99: the effect channel being played, stored by $0A72 each pass so the loop can count down."
  },
  {
   "address": 2719,
   "type": "line",
   "text": "One frame of an effect on channel Y (block offset X, SID offset in $FF): counts the duration $0C32/$0C35 down (a negative high byte never ends); at the end marks the channel free ($0C3A and the priority $1B82,Y to 0) and silences the voice's control, AD and SR. Otherwise sweeps layer A's pulse width ($0C3C/$0C28, flag bit 0) and layer B's ($0C3D/$0C2E, flag bits 3 and 4) down by $0C2F, sweeps layer A's frequency ($0C36/$0C37) and layer B's ($0C38/$0C39) by their steps between their bounds, applying the end-of-sweep action in the mode byte $0C33 (stop, restart at the far bound, or reverse), and writes frequency, pulse and control of layer A, or of layer B when the flags' bit 3 is set and the toggle $0C3B is 1."
  },
  {
   "address": 2910,
   "type": "line",
   "text": "Operand of LDA #$FF at $0B5D: written by $0B3D with the bound a sweep wraps to; the rest of the frequency sweeps and the register writes follow."
  },
  {
   "address": 2910,
   "type": "side",
   "text": "operand patched by $0B3D: the frequency high byte a sweep restarts from"
  },
  {
   "address": 3022,
   "type": "line",
   "text": "Operand of LDA #$FF at $0BCD: layer B's wrap value, written by $0BAD."
  },
  {
   "address": 3022,
   "type": "side",
   "text": "operand patched by $0BAD: layer B's restart frequency high byte"
  },
  {
   "address": 3106,
   "type": "line",
   "text": "Effect channel blocks: three of 29 bytes at $0C22, $0C3F and $0C5C (offsets 0, $1D, $3A in $0C7C); the labels $0C22-$0C3E name the fields of channel 0's block, indexed by X. Byte 0: attack/decay. Bytes 0-19 are copied from the effect definition by $0C84, bytes 20-28 are run-time state."
  },
  {
   "address": 3107,
   "type": "line",
   "text": "Field 1: sustain/release."
  },
  {
   "address": 3108,
   "type": "line",
   "text": "Field 2: layer A's lower frequency bound (high byte); the start frequency when sweeping up."
  },
  {
   "address": 3109,
   "type": "line",
   "text": "Field 3: layer A's upper frequency bound (high byte); the start when sweeping down."
  },
  {
   "address": 3110,
   "type": "line",
   "text": "Field 4: layer A's frequency step per frame, low byte."
  },
  {
   "address": 3111,
   "type": "line",
   "text": "Field 5: layer A's frequency step, high byte."
  },
  {
   "address": 3112,
   "type": "line",
   "text": "Field 6: layer A's pulse width high byte, decremented as the low byte $0C3C sweeps down."
  },
  {
   "address": 3113,
   "type": "line",
   "text": "Field 7: bit 0 sweeps layer A's pulse width; bit 3 enables the second layer B (and its frequency sweep); bit 4 with bit 3 sweeps layer B's pulse width."
  },
  {
   "address": 3114,
   "type": "line",
   "text": "Field 8: layer B's lower frequency bound (high byte)."
  },
  {
   "address": 3115,
   "type": "line",
   "text": "Field 9: layer B's upper frequency bound."
  },
  {
   "address": 3116,
   "type": "line",
   "text": "Field 10: layer B's frequency step, low byte."
  },
  {
   "address": 3117,
   "type": "line",
   "text": "Field 11: layer B's frequency step, high byte."
  },
  {
   "address": 3118,
   "type": "line",
   "text": "Field 12: layer B's pulse width high byte."
  },
  {
   "address": 3119,
   "type": "line",
   "text": "Field 13: pulse width step per frame (both layers)."
  },
  {
   "address": 3120,
   "type": "line",
   "text": "Field 14: layer A's control byte (waveform and gate)."
  },
  {
   "address": 3121,
   "type": "line",
   "text": "Field 15: layer B's control byte."
  },
  {
   "address": 3122,
   "type": "line",
   "text": "Field 16: duration countdown, low byte."
  },
  {
   "address": 3123,
   "type": "line",
   "text": "Field 17: sweep mode. Bits 0-1 layer A's direction (0 none, 1 up, 2 or 3 down); bits 2-3 what happens at a bound (0 stop, 4 restart from the other bound, 8 or 12 reverse by EOR 3, which turns 1 and 2 into each other but 3 into 0, a stop); bits 4-5 and 6-7 the same for layer B."
  },
  {
   "address": 3124,
   "type": "line",
   "text": "Field 18: frames between switches of layer A and B ($0A82)."
  },
  {
   "address": 3125,
   "type": "line",
   "text": "Field 19: duration countdown, high byte; bit 7 set = endless."
  },
  {
   "address": 3126,
   "type": "line",
   "text": "Field 20 (state): layer A's frequency, low byte (0 at the start)."
  },
  {
   "address": 3127,
   "type": "line",
   "text": "Field 21 (state): layer A's frequency, high byte."
  },
  {
   "address": 3128,
   "type": "line",
   "text": "Field 22 (state): layer B's frequency, low byte."
  },
  {
   "address": 3129,
   "type": "line",
   "text": "Field 23 (state): layer B's frequency, high byte."
  },
  {
   "address": 3130,
   "type": "line",
   "text": "Field 24 (state): 1 while the channel plays an effect."
  },
  {
   "address": 3131,
   "type": "line",
   "text": "Field 25 (state): which layer sounds, 0 = A, 1 = B."
  },
  {
   "address": 3132,
   "type": "line",
   "text": "Field 26 (state): layer A's pulse width, low byte."
  },
  {
   "address": 3133,
   "type": "line",
   "text": "Field 27 (state): layer B's pulse width, low byte."
  },
  {
   "address": 3134,
   "type": "line",
   "text": "Field 28 (state): frames left before the layers switch."
  },
  {
   "address": 3135,
   "type": "line",
   "text": "Effect channel 1's 29-byte block (same fields as $0C22-$0C3E). Its bytes as loaded are not an effect; $0C84 overwrites them before use."
  },
  {
   "address": 3164,
   "type": "line",
   "text": "Effect channel 2's 29-byte block (same fields as $0C22-$0C3E)."
  },
  {
   "address": 3193,
   "type": "line",
   "text": "SID register offset of each effect channel's voice: 0, 7, 14 (voices 1, 2, 3)."
  },
  {
   "address": 3196,
   "type": "line",
   "text": "Offset of each channel's block from $0C22: 0, $1D, $3A."
  },
  {
   "address": 3199,
   "type": "line",
   "text": "Offset of the last copied byte of each channel's block ($13, $30, $4D), where $0C84's backwards copy starts; $0C82-$0C83 ($FF $FF) are not read."
  },
  {
   "address": 3204,
   "type": "line",
   "text": "Starts effect Y on channel X (called by $BC9F-$BCCF for each requested channel): copies the effect's 20-byte definition, addressed through the table at $C144/$C145, into the channel block; hard-restarts the voice (control $08 then 0, AD/SR 0), clears the run-time state, marks the channel active, sets AD/SR and the alternation timer, and starts each layer's frequency at its lower bound, or its upper bound when it sweeps down."
  },
  {
   "address": 3229,
   "type": "line",
   "text": "Operand of LDA $FFFF,Y at $0C9C: the effect definition's address, written by $0C91/$0C97 from the table at $C144; the hard restart and set-up follow."
  },
  {
   "address": 3229,
   "type": "side",
   "text": "operand patched with the effect definition's address"
  },
  {
   "address": 3230,
   "type": "line",
   "text": "High byte of the effect definition's address in the LDA at $0C9C, written by $0C97."
  },
  {
   "address": 3240,
   "type": "line",
   "text": "Operand of LDY #$FF at $0CA7: the channel number, written by $0C84."
  },
  {
   "address": 3240,
   "type": "side",
   "text": "operand patched by $0C84: the channel number"
  },
  {
   "address": 3355,
   "type": "line",
   "text": "Silences the SID: zeroes $D417 down to $D401 (the loop stops before $D400 and never touches $D418), and clears the sound requests $1B85-$1B8A. Called on pause ($2273), level end and loading ($3B6B, $3D8F, $3EC5, $CBB3)."
  },
  {
   "address": 3374,
   "type": "line",
   "text": "Sound effect definition 0 (20 bytes at $0D2E, effect 0 of 35 in the table at $C144): all zero, a silent effect; used by sound 0."
  },
  {
   "address": 3394,
   "type": "line",
   "text": "Sound effect definition 1 (20 bytes, copied by $0C84): AD $0C, SR $0F, control $11, frequency high $31-$75 swept by $0926 (mode $69), pulse $06xx step $FE (flags $01), 155 frames; used by sound numbers $0B."
  },
  {
   "address": 3414,
   "type": "line",
   "text": "Sound effect definition 2 (20 bytes, copied by $0C84): AD $0C, SR $0F, control $11, frequency high $6A-$75 swept by $0926 (mode $69), pulse $06xx step $FE (flags $01), 155 frames; used by sound numbers $0C."
  },
  {
   "address": 3434,
   "type": "line",
   "text": "Sound effect definition 3 (20 bytes, copied by $0C84): AD $5C, SR $00, control $81, frequency high $7A-$F9 swept by $016C (mode $11), pulse $01xx step $01 (flags $08), 153 frames; alternates every 1 frames with a second layer (control $11, frequency high $A9-$FF step $00D6); used by sound numbers $01."
  },
  {
   "address": 3454,
   "type": "line",
   "text": "Sound effect definition 4 (20 bytes, copied by $0C84): AD $99, SR $0A, control $81, frequency high $2F-$55 swept by $6CD5 (mode $6A), pulse $07xx step $3E (flags $01), 45 frames; used by sound numbers $02."
  },
  {
   "address": 3474,
   "type": "line",
   "text": "Sound effect definition 5 (20 bytes, copied by $0C84): AD $08, SR $0A, control $41, frequency high $05-$31 swept by $0622 (mode $69), pulse $08xx step $33 (flags $01), 28 frames; used by no sound number in $1322 (reached only if a sound's entry is patched)."
  },
  {
   "address": 3494,
   "type": "line",
   "text": "Sound effect definition 6 (20 bytes, copied by $0C84): AD $06, SR $08, control $11, frequency high $16-$09 swept by $6CD5 (mode $AA), pulse $07xx step $06 (flags $19), 11 frames; alternates every 1 frames with a second layer (control $81, frequency high $82-$DE step $2DD6); used by no sound number in $1322 (reached only if a sound's entry is patched)."
  },
  {
   "address": 3514,
   "type": "line",
   "text": "Sound effect definition 7 (20 bytes, copied by $0C84): AD $0A, SR $0A, control $81, frequency high $03-$53 swept by $03E5 (mode $96), pulse $08xx step $04 (flags $01), 91 frames; used by sound numbers $04."
  },
  {
   "address": 3534,
   "type": "line",
   "text": "Sound effect definition 8 (20 bytes, copied by $0C84): AD $0A, SR $06, control $41, frequency high $01-$0D swept by $00BD (mode $66), pulse $08xx step $04 (flags $09), 91 frames; alternates every 1 frames with a second layer (control $81, frequency high $1D-$42 step $028F); used by sound numbers $05."
  },
  {
   "address": 3554,
   "type": "line",
   "text": "Sound effect definition 9 (20 bytes, copied by $0C84): AD $05, SR $0A, control $41, frequency high $05-$10 swept by $02A7 (mode $66), pulse $08xx step $04 (flags $09), 9 frames; alternates every 1 frames with a second layer (control $81, frequency high $17-$FD step $00BF); used by sound numbers $06, $0D, $24, $25, $26."
  },
  {
   "address": 3574,
   "type": "line",
   "text": "Sound effect definition 10 (20 bytes, copied by $0C84): AD $09, SR $0F, control $11, frequency high $BA-$F5 swept by $041A (mode $95), pulse $06xx step $FF (flags $19), 30 frames; alternates every 1 frames with a second layer (control $11, frequency high $A5-$B5 step $0A14); used by sound numbers $07."
  },
  {
   "address": 3582,
   "type": "line",
   "text": "Byte 8 of effect definition 10 (layer B's lower bound), rewritten by $38FE with $A5 or $05."
  },
  {
   "address": 3594,
   "type": "line",
   "text": "Sound effect definition 11 (20 bytes, copied by $0C84): AD $09, SR $0F, control $41, frequency high $89-$9D swept by $0646 (mode $69), pulse $0Exx step $54 (flags $01), 41 frames; used by sound numbers $08."
  },
  {
   "address": 3614,
   "type": "line",
   "text": "Sound effect definition 12 (20 bytes, copied by $0C84): AD $09, SR $0F, control $11, frequency high $69-$FD swept by $0C86 (mode $69), pulse $06xx step $FE (flags $01), 25 frames; used by sound numbers $09."
  },
  {
   "address": 3634,
   "type": "line",
   "text": "Sound effect definition 13 (20 bytes, copied by $0C84): AD $09, SR $0F, control $11, frequency high $09-$21 swept by $02A6 (mode $69), pulse $06xx step $FE (flags $01), 25 frames; used by sound numbers $0A."
  },
  {
   "address": 3654,
   "type": "line",
   "text": "Sound effect definition 14 (20 bytes, copied by $0C84): AD $09, SR $0F, control $11, frequency high $09-$75 swept by $0926 (mode $69), pulse $06xx step $FE (flags $01), 25 frames; used by no sound number in $1322 (reached only if a sound's entry is patched)."
  },
  {
   "address": 3674,
   "type": "line",
   "text": "Sound effect definition 15 (20 bytes, copied by $0C84): AD $09, SR $0F, control $41, frequency high $23-$F2 swept by $0746 (mode $69), pulse $08xx step $FE (flags $00), 31 frames; used by sound numbers $0E, $0F."
  },
  {
   "address": 3694,
   "type": "line",
   "text": "Sound effect definition 16 (20 bytes, copied by $0C84): AD $5C, SR $00, control $11, frequency high $20-$F4 swept by $01F1 (mode $11), pulse $01xx step $01 (flags $08), 153 frames; alternates every 1 frames with a second layer (control $11, frequency high $20-$DF step $00D6); used by sound numbers $10."
  },
  {
   "address": 3714,
   "type": "line",
   "text": "Sound effect definition 17 (20 bytes, copied by $0C84): AD $99, SR $0A, control $11, frequency high $07-$1B swept by $06FE (mode $A9), pulse $07xx step $3E (flags $09), 45 frames; alternates every 1 frames with a second layer (control $11, frequency high $05-$18 step $067F); used by sound numbers $11."
  },
  {
   "address": 3734,
   "type": "line",
   "text": "Sound effect definition 18 (20 bytes, copied by $0C84): AD $59, SR $0F, control $81, frequency high $89-$A1 swept by $1726 (mode $99), pulse $06xx step $FE (flags $09), 39 frames; alternates every 1 frames with a second layer (control $81, frequency high $10-$FB step $AC82); used by sound numbers $12."
  },
  {
   "address": 3754,
   "type": "line",
   "text": "Sound effect definition 19 (20 bytes, copied by $0C84): AD $09, SR $0F, control $11, frequency high $09-$22 swept by $0296 (mode $99), pulse $06xx step $FE (flags $09), 31 frames; alternates every 4 frames with a second layer (control $11, frequency high $06-$22 step $0450); used by sound numbers $13."
  },
  {
   "address": 3774,
   "type": "line",
   "text": "Sound effect definition 20 (20 bytes, copied by $0C84): AD $29, SR $0A, control $41, frequency high $0E-$75 swept by $0FA1 (mode $25), pulse $00xx step $FE (flags $11), 45 frames; used by sound numbers $15."
  },
  {
   "address": 3794,
   "type": "line",
   "text": "Sound effect definition 21 (20 bytes, copied by $0C84): AD $09, SR $0F, control $41, frequency high $31-$7D swept by $1806 (mode $6A), pulse $00xx step $FE (flags $09), 33 frames; alternates every 4 frames with a second layer (control $11, frequency high $17-$7D step $041F); used by sound numbers $16."
  },
  {
   "address": 3814,
   "type": "line",
   "text": "Sound effect definition 22 (20 bytes, copied by $0C84): AD $0C, SR $CF, control $41, frequency high $21-$53 swept by $035B (mode $66), pulse $08xx step $00 (flags $01), 60 frames; used by sound numbers $17."
  },
  {
   "address": 3834,
   "type": "line",
   "text": "Sound effect definition 23 (20 bytes, copied by $0C84): AD $0D, SR $0A, control $11, frequency high $32-$DA swept by $0798 (mode $69), pulse $07xx step $3E (flags $01), 48 frames; used by sound numbers $18."
  },
  {
   "address": 3854,
   "type": "line",
   "text": "Sound effect definition 24 (20 bytes, copied by $0C84): AD $0A, SR $06, control $41, frequency high $03-$29 swept by $00A3 (mode $AA), pulse $08xx step $05 (flags $08), 77 frames; alternates every 1 frames with a second layer (control $21, frequency high $0D-$2D step $006C); used by sound numbers $19."
  },
  {
   "address": 3874,
   "type": "line",
   "text": "Sound effect definition 25 (20 bytes, copied by $0C84): AD $0A, SR $0F, control $41, frequency high $09-$5D swept by $018E (mode $66), pulse $05xx step $14 (flags $19), 59 frames; alternates every 1 frames with a second layer (control $41, frequency high $13-$75 step $0191); used by sound numbers $1A."
  },
  {
   "address": 3894,
   "type": "line",
   "text": "Sound effect definition 26 (20 bytes, copied by $0C84): AD $0E, SR $0F, control $11, frequency high $0A-$6A swept by $00DC (mode $AA), pulse $09xx step $20 (flags $09), 769 frames; alternates every 3 frames with a second layer (control $11, frequency high $07-$93 step $011C); used by sound numbers $1B, $1C, $1D."
  },
  {
   "address": 3914,
   "type": "line",
   "text": "Sound effect definition 27 (20 bytes, copied by $0C84): AD $0C, SR $0F, control $11, frequency high $31-$75 swept by $0926 (mode $69), pulse $06xx step $FE (flags $01), 155 frames; used by sound numbers $1E, $1F."
  },
  {
   "address": 3934,
   "type": "line",
   "text": "Sound effect definition 28 (20 bytes, copied by $0C84): AD $0C, SR $0F, control $41, frequency high $08-$E0 swept by $0376 (mode $99), pulse $08xx step $00 (flags $08), 49 frames; alternates every 1 frames with a second layer (control $11, frequency high $05-$E0 step $04A4); used by sound numbers $14."
  },
  {
   "address": 3954,
   "type": "line",
   "text": "Sound effect definition 29 (20 bytes, copied by $0C84): AD $3C, SR $0F, control $81, frequency high $0F-$36 swept by $0338 (mode $92), pulse $06xx step $FE (flags $09), 160 frames; alternates every 1 frames with a second layer (control $81, frequency high $08-$08 step $040A); used by sound numbers $20."
  },
  {
   "address": 3974,
   "type": "line",
   "text": "Sound effect definition 30 (20 bytes, copied by $0C84): AD $EA, SR $0F, control $11, frequency high $03-$7A swept by $00D9 (mode $1A), pulse $09xx step $20 (flags $01), 107 frames; used by sound numbers $21, $22, $23."
  },
  {
   "address": 3994,
   "type": "line",
   "text": "Sound effect definition 31 (20 bytes, copied by $0C84): AD $39, SR $0A, control $21, frequency high $2F-$30 swept by $013F (mode $22), pulse $08xx step $FE (flags $19), 24 frames; alternates every 12 frames with a second layer (control $21, frequency high $0B-$2F step $003C); used by sound numbers $27, $28, $29."
  },
  {
   "address": 4014,
   "type": "line",
   "text": "Sound effect definition 32 (20 bytes, copied by $0C84): AD $5A, SR $0F, control $15, frequency high $1A-$5C swept by $5CC0 (mode $96), pulse $09xx step $20 (flags $09), 81 frames; alternates every 2 frames with a second layer (control $11, frequency high $4E-$BE step $0D8B); used by sound numbers $2A."
  },
  {
   "address": 4034,
   "type": "line",
   "text": "Sound effect definition 33 (20 bytes, copied by $0C84): AD $0A, SR $0A, control $11, frequency high $0C-$49 swept by $0827 (mode $AA), pulse $07xx step $3E (flags $09), 97 frames; alternates every 4 frames with a second layer (control $11, frequency high $0C-$7B step $2628); used by sound numbers $2B."
  },
  {
   "address": 4054,
   "type": "line",
   "text": "Sound effect definition 34 (20 bytes, copied by $0C84): AD $09, SR $0F, control $41, frequency high $06-$C1 swept by $0350 (mode $11), pulse $09xx step $20 (flags $09), 51 frames; alternates every 26 frames with a second layer (control $11, frequency high $00-$C1 step $0350); used by sound numbers $2C."
  },
  {
   "address": 4056,
   "type": "line",
   "text": "Byte 2 of effect definition 34 (the start frequency high byte): set to 6 at the level start ($1D4E) and raised by 2 (the two INCs at $1F1C and $1F1F) for each character skidded past the finish, before sound $2C plays it, so the pitch climbs with each repeat."
  },
  {
   "address": 4074,
   "type": "line",
   "text": "22 bytes after the last effect definition, never addressed: they decode as fragments of code (STA $0879, JMP $097A) that do not fit this build's music driver; leftovers, by appearance."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "16 colour values read by $3D5A (colour RAM $D8D1 onward, 16 columns, when $1BEC is nonzero). The play snapshot holds them rotated by one place from the loaded order, so something rotates them; no absolute-addressed writer was found (perhaps through a pointer)."
  },
  {
   "address": 4104,
   "type": "line",
   "text": "Entry 8 of the colour cycle at $1000, also read alone by $3D48 for colour RAM $D877."
  },
  {
   "address": 4104,
   "type": "side",
   "text": "read alone by $3D48 into colour RAM $D877"
  },
  {
   "address": 4112,
   "type": "line",
   "text": "Two identical 16-byte colour runs. No instruction uses their values: the only read is the raster-blanking loop's timing load at $1384 (LDA $1000,X with X up to the line count, result discarded); $3D5A's LDA $1000,X stops at X = $0F."
  },
  {
   "address": 4144,
   "type": "line",
   "text": "16 colours for the raster bars of set-up 0 ($193A: source $1030, 16 lines)."
  },
  {
   "address": 4160,
   "type": "line",
   "text": "Colours for set-ups 1 and 2 ($193A: source $1040, 16 or 255 lines); $1042-$104F are also the 14 background colours $3EF2 cycles through."
  },
  {
   "address": 4162,
   "type": "line",
   "text": "Start of the 14 background colours ($1042-$104F) that $3EF2 cycles $D021 through, X counting down from $0D."
  },
  {
   "address": 4200,
   "type": "line",
   "text": "9 colours for set-up 4 (source $1068, moved on by $D62D/$D642). $1070 is overwritten by $D4CA with the land's background colour."
  },
  {
   "address": 4209,
   "type": "line",
   "text": "16 colours for set-up 3 (source $1071)."
  },
  {
   "address": 4225,
   "type": "line",
   "text": "Colours the loading screen (called at $CC4D, right after $CC4A prints a line through $B817): colour RAM rows at $DA32/$DA5A light red ($0A) and $DACB/$DAF3 yellow (7), 32 columns each; for a land (level index $CF89 below 5) it also colours rows 4 and 5 ($D8A0, $D8C8) light blue ($0E) from column 0 to one column past the first $14 byte in screen row 4 ($44A0; the INX comes before the compare)."
  },
  {
   "address": 4275,
   "type": "line",
   "text": "Inverts the 232 bytes $5480-$5567 (EOR #$FF); called around the loader ($CBFD, $CE34)."
  },
  {
   "address": 4289,
   "type": "line",
   "text": "Item effect 7, reached through the item-effect table at $F994/$F99D (entry 7) when the land's $9075 maps a collected item to 7: adds a continue ($CF8A), sets the blink timers $1BBC, $1BBD, $1BBF, $1BC0 and $1BC1 to $1E (skipping $1BBE), and jumps to $387D, which clears the first-touch flag $1BB7."
  },
  {
   "address": 4309,
   "type": "line",
   "text": "Reached by JMP from $E52A after sound $14, and entry 8 of the item-effect table $F994/$F99D: runs $387D, then $3648 ($1BC1 = $1E)."
  },
  {
   "address": 4315,
   "type": "line",
   "text": "Sprite pointers $D0 $D1 $D2 $D0 $D1 $D2 for sprites 0-5, copied by $BFA5-$BFAD into both screens ($47F8, $4BF8)."
  },
  {
   "address": 4321,
   "type": "line",
   "text": "X and Y positions of sprites 0-5 (pairs: $7C,$DA $94,$DA $C4,$DA $7D,$DB $95,$DB $C5,$DB), copied by $BFB9-$BFC2 to $D000-$D00B: three sprites side by side on line $DA and three on line $DB."
  },
  {
   "address": 4333,
   "type": "line",
   "text": "Compares the three digits $CF83-$CF85 (magic still needed) with the land's $9041-$9043, last digit first; returns Z set when all three match. Called by $3662."
  },
  {
   "address": 4347,
   "type": "line",
   "text": "Four zero bytes, $10FB-$10FE. The only instruction that can reach them is the timing load at $1384 (LDA $1000,X, result discarded), and only while the line count $136F is above $FA: as loaded it is $FF; $3BF0 sets $C3 and $ED8E caps the sum at $D3."
  },
  {
   "address": 4351,
   "type": "line",
   "text": "Last byte of the zero pad $10FB-$10FF; $18A7's LDA $10FF,Y names it as the table base before $193A patches the low byte."
  },
  {
   "address": 4352,
   "type": "line",
   "text": "Opens a level on the screen (called at $1D26 at the end of the level start): keeps the colour operand $20F3 in $1930 and zeroes it, copies screen $4800-$4BFF to $4400-$47FF and zeroes the colour RAM $D800-$DBFF, fills $4800-$4BF7 with the land's blank glyph ($9022), sets $219A to $1B, waits until $D012 reads 0, sets the box's start corners from the shape X ($EFF7: width counter $7E = 1, height $7F = 0; X is patched at $1155 from the land's $971B), then each frame grows the box ($1195) until the step that copies all 40 columns (the width counter reaches $29) and jumps to $F0EE. With $1C19 set the growing waits 8 frames first (the countdown in $1170), then runs the sound effects ($0A70) on each frame it grows. The colour in $20F3 is restored after 4 frames ($1181): 4 frames of growing when $1C19 is 0, 4 frames of the wait when it is set."
  },
  {
   "address": 4437,
   "type": "line",
   "text": "Operand of LDX #$FF at $1154: the reveal's start shape, written by $1DE0 (and by $A5B0 in the land) from the land's table $971B; then the grow loop."
  },
  {
   "address": 4437,
   "type": "side",
   "text": "operand patched by $1DE0 from the land's $971B: which start shape $EFF7 uses"
  },
  {
   "address": 4464,
   "type": "line",
   "text": "Operand of LDA #$FF at $116F: the reveal's start delay, 8 written by $115F, counted down at $1173 while $1C19 is set."
  },
  {
   "address": 4464,
   "type": "side",
   "text": "operand patched by $115F (8): frames to wait before growing when $1C19 is set"
  },
  {
   "address": 4481,
   "type": "line",
   "text": "Operand of LDA #$FF at $1180: frames of growing left before the colour returns, 4 written by $115B, counted down at $1184."
  },
  {
   "address": 4481,
   "type": "side",
   "text": "operand patched by $115B (4): frames before $20F3 is restored (frames of growing, or of the wait when $1C19 is set)"
  },
  {
   "address": 4501,
   "type": "line",
   "text": "One step of the level reveal: copies the box's top row ((83) to (86), $7E+1 characters) and bottom row ((88) to (8C)), and its two side columns (offsets 0 and $7E in the $7F+1 rows below the top row), from the built screen to the shown one, writing each glyph's colour from the land's table $8900 into colour RAM ((4B), (4D)). Then moves the top-left corner up a row and left a column, or only left when its row is in the shown screen's first page and the step up would borrow ($120C-$121F, which also sets the height step $1279 to 1); and moves the bottom-left corner down a row and left a column, or only left once the next row would start at or past $4BC0, row 24 ($1238-$125B, which patches $126D and $126F-$1273 to keep it there and sets $1279 to 1). Widens the box by 2 ($7E) and heightens it by $1279 (2, or 1 once an edge has stopped), the height $7F kept below $18 ($127A). Returns carry set once the width counter reaches $29, after the step that copied 40 cells. Uses $1921-$192F to keep the pointers."
  },
  {
   "address": 4590,
   "type": "line",
   "text": "Operand of LDY #$FF at $11ED: the side-column row counter, stored by $11C4; then the pointer restore and the corner moves."
  },
  {
   "address": 4590,
   "type": "side",
   "text": "operand is the row counter, stored by $11C4"
  },
  {
   "address": 4717,
   "type": "line",
   "text": "Opcode byte of the BCC at $126D (bottom row moves down a row on a carry), turned into BCS ($B0) by $124B when the bottom row reaches the screen's last row, and back by $F034; the row and column steps follow."
  },
  {
   "address": 4717,
   "type": "side",
   "text": "opcode patched by $124B: BCC, or BCS ($B0) once the bottom row has stopped; reset by $F034"
  },
  {
   "address": 4719,
   "type": "line",
   "text": "Opcode of the INC $89 at $126F: INC, or DEC ($C6) once the bottom row has stopped (written by $1250 and back by $F039), as are $1271 and $1273."
  },
  {
   "address": 4719,
   "type": "side",
   "text": "opcodes $126F, $1271, $1273 patched by $1250-$1256: INC, or DEC ($C6) once the bottom row has stopped; reset by $F039-$F03F"
  },
  {
   "address": 4721,
   "type": "line",
   "text": "Opcode of the INC $8D at $1271 (the bottom row's colour pointer), turned into DEC by $1253 and back by $F03C."
  },
  {
   "address": 4723,
   "type": "line",
   "text": "Opcode of the INC $4E at $1273, turned into DEC by $1256 and back by $F03F."
  },
  {
   "address": 4729,
   "type": "line",
   "text": "Operand of ADC #$02 at $1278: the box's height step, set to 1 by $1217/$125B when an edge stops moving."
  },
  {
   "address": 4729,
   "type": "side",
   "text": "operand patched by $1217/$125B: the box's height step, 2, or 1 once an edge is reached"
  },
  {
   "address": 4746,
   "type": "line",
   "text": "Lets the music play on voice 3 only (sound effects own voices 1 and 2): A = 2 into the driver's voice limit $045E, copy registers $18 down to $0E ($0884, $088F). Called at the start of play ($1E85)."
  },
  {
   "address": 4754,
   "type": "line",
   "text": "Lets the music play on voices 2 and 3: limit 1, copy registers $18 down to 7. Called by $F335."
  },
  {
   "address": 4770,
   "type": "line",
   "text": "Sets how many sound-effect channels play, X = 0, 1 or 2 from $E4BF/$E4C2: the start channel of $0A70 (2, 1 or 0) and the first opcode of $BCC0 ($AD = LDA, letting channel 2 start; or $60 = RTS)."
  },
  {
   "address": 4783,
   "type": "line",
   "text": "Lets the music play on all three voices (limit 0, copy $18 down to 0) and makes the driver's start prime itself and silence the volume (opcodes $20 at $058A and $8D at $05A0)."
  },
  {
   "address": 4798,
   "type": "line",
   "text": "Makes the driver's start return without priming and without touching the volume: RTS ($60) at $058A and $05A0. Called at $1E6E after the level's tune is chosen."
  },
  {
   "address": 4808,
   "type": "line",
   "text": "Sound numbers 0-$2C: the effect channel (0-2, the SID voice) each sound plays on, read by $1352. Sound $2A's entry, $12F2, is stepped 2, 1, 0, 2, ... by the ending's $D478-$D480 each time before $D485 plays that sound."
  },
  {
   "address": 4853,
   "type": "line",
   "text": "Sound numbers 0-$2C: the priority of each sound; $1352 starts a sound only when its priority is at least that of the effect still playing on the channel ($1B82). $FF for the sounds that only another $FF sound can interrupt."
  },
  {
   "address": 4898,
   "type": "line",
   "text": "Sound numbers 0-$2C: the effect definition (0-$22, table $C144) each sound plays. Entry 3 ($1325) is written at run time by $C79F before sound 3 is played."
  },
  {
   "address": 4901,
   "type": "line",
   "text": "Sound 3's effect number, written by $C79F just before it plays sound 3."
  },
  {
   "address": 4943,
   "type": "line",
   "text": "Plays sound X ($1352) and returns with Y unchanged (Y is saved in the operand at $136C)."
  },
  {
   "address": 4946,
   "type": "line",
   "text": "Requests sound X: on its channel Y ($12C8), if its priority ($12F5) is not below the one playing ($1B82,Y), records the priority and the effect number ($1322) in $1B82,Y/$1B88,Y and sets the request flag $1B85,Y; $BC9F starts it on the next frame. Returns Y from the operand at $136C."
  },
  {
   "address": 4972,
   "type": "line",
   "text": "Operand of LDY #$FF at $136B: the Y that play_sound returns, written by $134F."
  },
  {
   "address": 4972,
   "type": "side",
   "text": "operand patched by $134F: the Y returned"
  },
  {
   "address": 4974,
   "type": "line",
   "text": "For X lines (the start value at $136F is set by $3BF2 and $ED78-$ED94), each raster line rewrites $D011's vertical scroll so it never equals the line's low three bits: no bad line happens and the screen shows only the background colour (the FLD trick); the loads and BIT that follow are timing padding. Called by $F1AC."
  },
  {
   "address": 4975,
   "type": "line",
   "text": "Operand of LDX #$FF at $136E: the number of lines blanked, written by $3BF2 and $ED78-$ED94 and read by $F1BA-$F235."
  },
  {
   "address": 5013,
   "type": "line",
   "text": "While $1B46 counts down from 6 (set by $3214/$3263 when the scroll direction reverses), shifts the hidden screen's 25 rows by one character, four rows a frame: $1B43 = 0 copies each row from one column to the right ($13E7), 1 from the left ($1435). When the count ends it flips $1B43, and $1B44/$1B45 through $13C6. Called once a frame from the play loop ($1F4E)."
  },
  {
   "address": 5062,
   "type": "line",
   "text": "Flips $1B44 between 0 and 1."
  },
  {
   "address": 5080,
   "type": "line",
   "text": "Points the high bytes $4C and $4E at the hidden screen ($29A5 indexed by the shown screen $1B3A, EOR $0C: $44 or $48) and returns X = 0."
  },
  {
   "address": 5095,
   "type": "line",
   "text": "Shifts four rows of the hidden screen one character left, five on the last call (6 calls x 4 + 1 = 25 rows): each row's first character is kept in $1921 onward (the STA at $1408 steps through it) and characters 1-39 move to 0-38. X = the call count, kept in the operand at $1431; on the first call (X = 6) sets the pointers to the top row."
  },
  {
   "address": 5129,
   "type": "line",
   "text": "Operand of STA $1921 at $1408: where the next row's first character is kept, reset to $21 by $13F8 and stepped by $142A; the row copy follows."
  },
  {
   "address": 5129,
   "type": "side",
   "text": "operand patched by $13F8 ($21, so $1921) and stepped by $142A: where each row's lost character is kept"
  },
  {
   "address": 5169,
   "type": "line",
   "text": "Operand of LDA #$FF at $1430: the left shift's call counter, written by $13E7 and decremented at $1401."
  },
  {
   "address": 5169,
   "type": "side",
   "text": "operand patched by $13E7 and decremented: calls left in this shift (6 down); when it reaches 0 the call shifts one more row"
  },
  {
   "address": 5173,
   "type": "line",
   "text": "Shifts four rows of the hidden screen one character right, five on the last call (25 rows over 6 calls), characters 0-38 to 1-39, last first. X = the call count, kept at $1470."
  },
  {
   "address": 5232,
   "type": "line",
   "text": "Operand of LDA #$FF at $146F: the call counter for the right shift, written by $1435 and decremented at $144A."
  },
  {
   "address": 5232,
   "type": "side",
   "text": "operand patched by $1435 and decremented: calls left in this shift (6 down); when it reaches 0 the call shifts one more row"
  },
  {
   "address": 5236,
   "type": "line",
   "text": "Two values (6, 8) read by $3400 with X into $1B71."
  },
  {
   "address": 5238,
   "type": "line",
   "text": "Reload values of the effect sprites' animation counter $1B72, by $1BB6 (3 or 4): $1497 counts it down and $149C reloads it once it passes 0, and a step happens when it reads 0 ($14B7), so every 4 or 5 frames."
  },
  {
   "address": 5240,
   "type": "line",
   "text": "Subtracted from the effect sprite's Y position, by $1BB6 (0, then 4); $1479 is rewritten with 4 by $BB81 and $BD0F."
  },
  {
   "address": 5241,
   "type": "line",
   "text": "Second entry of the effect sprite Y offsets (when $1BB6 is set), rewritten with 4 by $BB81 and $BD0F."
  },
  {
   "address": 5242,
   "type": "line",
   "text": "Moves and animates the two effect sprites (entries X = 0, 1 at $1B69-$1B70, shown in turn through sprite 5 by $21B5): while the scroll speed $208C is not 0 and both share an X position it frees ($0F) the one with the higher frame number; every 4 or 5 frames (the counter $1B72, reloaded from $1476) advances each live sprite's frame ($1B6D: from the 12-entry list at $F988 when $1B9C is set; else by one, and with $1BB6 set freed on reaching $E0); a free entry is started when $1B55, $1B56/$1B57 or $1B54 ask for it, at the player's X ($1BE3) or at a fixed X ($A0/$B8 with $1BB6 set, $A4/$B4 otherwise, by the scroll direction $1B3F) and the player's Y ($1BE4, in some cases plus 4, less $1B4B and $1478), with frame $0C ($DD when $1BB6 is set, from $F988 when $1B9C is set); and each frame, while $208C is not 0 and $1BC9 is 0, it moves each live entry against the scroll by $1BD7, setting the X high bit ($1B6F = $20) when it carries. Called from the play loop ($1F5E) and $23A8."
  },
  {
   "address": 5617,
   "type": "line",
   "text": "Six glyph numbers ($E5 $C2 $BC $BF $BE $4B) that $EE74 compares with the screen bytes at ($8A)+$2A and +$29, beside the player; a match moves him down ($1BE4 plus 1, plus 2 on frames where $1B68 is 0). $EE74 tests them only while he is in the air ($1B5B) in the happy land."
  },
  {
   "address": 5623,
   "type": "line",
   "text": "Nine bytes before the tune at $1600; not addressed."
  },
  {
   "address": 5632,
   "type": "line",
   "text": "A tune in the music driver's format ($080C): header $00D9, $01AA, offsets from $1604 (voices 1 and 2 at $16DD and $17AE: $052F adds them to base+4), voice 0's commands from $1604 ($01 volume, $0F, $25 tempo, ...). It is the title tune: nothing plays it here, but Jellyland's title code swaps $1600-$17FF with $7000-$71FF (page swap 9 through $3F54, at $9E6A in its file) and starts the tune at $7000 ($A5AB: LDX #$70, LDY #$00, JSR $080C), so its offsets then count from $7004; the same swap at the start of a game puts it back. No absolute reference to $1600 itself was found in the engine, the five lands, the ending or the intro."
  },
  {
   "address": 5696,
   "type": "line",
   "text": "Voice 0 of the tune at $1600, continued: note/length pairs and commands."
  },
  {
   "address": 5760,
   "type": "line",
   "text": "Voice 0 of the tune at $1600, continued."
  },
  {
   "address": 5824,
   "type": "line",
   "text": "End of voice 0 and start of voice 1 ($16DD) of the tune at $1600."
  },
  {
   "address": 5888,
   "type": "line",
   "text": "Voice 1 of the tune at $1600, with sub-sequence calls ($23 $6F $02 $00)."
  },
  {
   "address": 5952,
   "type": "line",
   "text": "Voice 1 of the tune at $1600, continued."
  },
  {
   "address": 6016,
   "type": "line",
   "text": "End of voice 1; voice 2 starts at $17AE."
  },
  {
   "address": 6080,
   "type": "line",
   "text": "Voice 2 of the tune at $1600, cut short by the code at $1800."
  },
  {
   "address": 6144,
   "type": "line",
   "text": "The game's entry point. The stack-page copier jumps here once `game` is in memory and its top half has been copied to $B100-$FFFF; it jumps on to the start-up at $196C."
  },
  {
   "address": 6147,
   "type": "line",
   "text": "Interrupt exit for when the KERNAL is switched out: pulls Y, X and A pushed by $1862 and returns. $1884 makes the dispatcher at $1868 leave through here."
  },
  {
   "address": 6153,
   "type": "line",
   "text": "Installs the front-end raster interrupt with the CIA interrupts off. A goes to $01; X/Y (the routine to call each interrupt) go into the operand of the JSR at $1875. Carry clear puts $1868 in both $0314 and $FFFE, carry set $1862, so it works with the KERNAL in or out. The dispatcher's exit jump at $1881 is set from the operands at $183A/$183F: $EA7E as loaded, $1803 once $1884 has run. The raster interrupt is enabled at line $F9 and CIA 1 timer A stopped."
  },
  {
   "address": 6202,
   "type": "line",
   "text": "Operand of LDA #$7E at $1839: low byte of the dispatcher's exit, written by $1884/$188F; the vectors and raster set-up follow."
  },
  {
   "address": 6202,
   "type": "side",
   "text": "operand patched by $1884/$188F: low byte of the dispatcher's exit ($7E or $03)"
  },
  {
   "address": 6207,
   "type": "line",
   "text": "Operand of LDA #$EA at $183E: high byte of the dispatcher's exit, written by $1884/$188F; the raster interrupt set-up follows."
  },
  {
   "address": 6207,
   "type": "side",
   "text": "operand patched by $1884/$188F: high byte of the dispatcher's exit ($EA or $18)"
  },
  {
   "address": 6242,
   "type": "line",
   "text": "Entry used when the KERNAL is switched out: pushes A, X and Y as the KERNAL's own entry would have, then falls into $1868."
  },
  {
   "address": 6248,
   "type": "line",
   "text": "Front-end raster interrupt. If the VIC raised it: acknowledges it, calls the routine in the JSR at $1875 (set by $1809), writes the A it returns to $D012 as the next line and the X/Y it returns back into that JSR as the next routine. Leaves through the JMP at $1881: $EA7E, the KERNAL's register restore, or $1803 when the KERNAL is out."
  },
  {
   "address": 6262,
   "type": "line",
   "text": "Operand of the dispatcher's JSR at $1875: the routine called this interrupt, written by $1809 and by $187B/$187E with the X/Y it returns."
  },
  {
   "address": 6263,
   "type": "line",
   "text": "High byte of the dispatcher's JSR operand, written by $180F and $187E."
  },
  {
   "address": 6274,
   "type": "line",
   "text": "Operand of the dispatcher's exit JMP at $1881: low byte written by $183B, high byte ($1883) by $1840."
  },
  {
   "address": 6275,
   "type": "line",
   "text": "High byte of the dispatcher's exit JMP at $1881, written by $1840 from the operand at $183F."
  },
  {
   "address": 6276,
   "type": "line",
   "text": "Makes the next $1809 point the dispatcher's exit jump ($1881) at $1803, the game's own register restore, for when the KERNAL is switched out: writes $03/$18 into the operands at $183A/$183F."
  },
  {
   "address": 6287,
   "type": "line",
   "text": "Makes the next $1809 point the dispatcher's exit jump back at the KERNAL's $EA7E (operands $183A/$183F = $7E/$EA)."
  },
  {
   "address": 6298,
   "type": "line",
   "text": "Front-end raster routine (called from the game-over screen's interrupt handlers $3EE0, $3EEF and the ending's $D63F): waits in the NOP slide ($B1A1), then for each raster line Y = 0 to the count at $18BC less one writes one colour from the table chosen by $193A ($10xx + Y, the low byte at $18A8) to $D021 and to the register at $18AE/$18AF ($D020, or the dummy byte $18C0); every line but each eighth (Y AND 7 = 0) is padded with a delay so a colour lasts one raster line."
  },
  {
   "address": 6305,
   "type": "line",
   "text": "The line loop of $189A: one colour per raster line from the patched table into $D021 and the second register."
  },
  {
   "address": 6312,
   "type": "line",
   "text": "Low byte of the LDA $10FF,Y at $18A7: the raster-bar colour table, written by $193A from $195D."
  },
  {
   "address": 6312,
   "type": "side",
   "text": "operand patched by $193A from $195D: low byte of the colour table ($10xx)"
  },
  {
   "address": 6318,
   "type": "line",
   "text": "Low byte of the STA $FFFF at $18AD: the bars' second register, $20 ($D020) or $C0 ($18C0), written by $1959."
  },
  {
   "address": 6318,
   "type": "side",
   "text": "operand patched by $1956/$1959: the second register written, $D020 or $18C0"
  },
  {
   "address": 6319,
   "type": "line",
   "text": "High byte of the bars' second store at $18AD: $D0 or $18, written by $1956."
  },
  {
   "address": 6332,
   "type": "line",
   "text": "Operand of CPY #$FF at $18BB: the number of raster-bar lines, written by $1943 from $1962."
  },
  {
   "address": 6332,
   "type": "side",
   "text": "operand patched by $193A from $1962: number of lines"
  },
  {
   "address": 6336,
   "type": "line",
   "text": "A spare byte: $193A points the bar routine's second store here when the border is to be left alone."
  },
  {
   "address": 6337,
   "type": "line",
   "text": "Raster handler: next link $22E9 at line $FA; $18D3 waits in the NOP slide, turns extended colour mode on ($19C2), places sprites 3 and 4 and colours sprites 0-5 white, sets the sprite pointers at $47FA/$4BFA and $47FE-$47FF/$4BFE-$4BFF, and clears X expansion and the background colours $D021-$D023."
  },
  {
   "address": 6355,
   "type": "line",
   "text": "The bottom panel's raster work for $18C1: waits in the NOP slide (entered at $B1A4, low byte patched by $22E3 from $3483 to follow sprite 7's height), turns extended colour mode on, places sprites 3 and 4 at X $8E and $E7, colours sprites 0-5 white, sets sprite pointers ($47FA/$4BFA = 2, $47FE-$47FF/$4BFE-$4BFF = $0F), clears X expansion and the colours $D021-$D023 (the STX at $1917 is turned into an RTS, $60, by $F328)."
  },
  {
   "address": 6356,
   "type": "line",
   "text": "Operand of the JSR at $18D3 into the NOP slide: its low byte is written each frame by $22E3 from the table at $3483, so the panel's split follows sprite 7's height; the panel set-up follows."
  },
  {
   "address": 6361,
   "type": "line",
   "text": "Entry used by $F413: the panel set-up from the sprite placement on, without the NOP-slide wait or the extended colour switch."
  },
  {
   "address": 6372,
   "type": "line",
   "text": "Operand of LDA #$01 at $18E3: sprite 3's colour on the panel, written by $1C15 and $36BF (1), and by $F0E1 (from $EFE5+X, in the sad land while $36F3 is set)."
  },
  {
   "address": 6377,
   "type": "line",
   "text": "Operand of LDA #$01 at $18E8: sprite 4's colour on the panel, written by $1C12 (1) and by $F0D1 (from $EFD3+X or $EFDC+X while $1BB8 is set)."
  },
  {
   "address": 6382,
   "type": "line",
   "text": "Operand of LDA #$01 at $18ED: sprite 5's colour on the panel, written by $1C0F and $3883 (1), and by $F0BD (from $EFEE+X while $1BB7 is set)."
  },
  {
   "address": 6423,
   "type": "line",
   "text": "Opcode of the STX $D021 at $1917 in the panel routine: STX, or RTS ($60, written by $F328) to keep the panel's background colours."
  },
  {
   "address": 6423,
   "type": "side",
   "text": "opcode patched by $F328 ($60 RTS): the panel then keeps its background colours"
  },
  {
   "address": 6433,
   "type": "line",
   "text": "A 25-byte scratch area $1921-$1939 shared by several routines: the level reveal keeps zero page $83-$8D here ($11B2) and $4B-$4E at $192C; $13E7 keeps each row's lost first character from $1921; $BBEB uses $1921/$1922 for a multiplication; $F181 copies 25 bytes from $1921 to ($50)."
  },
  {
   "address": 6434,
   "type": "line",
   "text": "Second byte of the scratch area: the high byte of $BBEB's multiplication."
  },
  {
   "address": 6444,
   "type": "line",
   "text": "$192C-$192F: the level reveal's copy of zero page $4B-$4E (colour RAM pointers), saved at $11BC and restored at $11FE."
  },
  {
   "address": 6448,
   "type": "line",
   "text": "The value of $20F3 kept by $1100 during the level reveal and restored at $1189."
  },
  {
   "address": 6449,
   "type": "line",
   "text": "$1931-$1939: the end of the scratch area ($F181 copies up to $1939)."
  },
  {
   "address": 6458,
   "type": "line",
   "text": "Chooses one of five raster-bar set-ups X = 0-4 for $189A: colour table low byte from $195D ($1030, $1040, $1040, $1071, $1068), line count from $1962 ($10, $10, $FF, $10, $09), and whether the border is coloured too ($1967 nonzero: $D020, else $18C0). Called by $3ED6, $3EE5 (the game-over screen's raster chain) and $D632, $D64A (ending)."
  },
  {
   "address": 6493,
   "type": "line",
   "text": "Raster-bar set-ups 0-4: low byte of the colour table at $10xx. $1961 (set-up 4) is rewritten by $D62D and stepped by $D642/$D645 to move the bars."
  },
  {
   "address": 6498,
   "type": "line",
   "text": "Raster-bar set-ups 0-4: number of lines."
  },
  {
   "address": 6503,
   "type": "line",
   "text": "Raster-bar set-ups 0-4: nonzero colours the border as well (set-up 2)."
  },
  {
   "address": 6508,
   "type": "line",
   "text": "Start-up. Switches the BASIC and KERNAL ROMs out ($01 = $35), keeps the current raster line in $1B42, calls $BBA6, writes $C1 into the low byte of the NMI vector at $0318, selects VIC bank 1 ($4000-$7FFF) through CIA 2 port A, sets screen $4400 and characters $7800 ($19AA), sets the CIA 1 port directions for the keyboard and stick ($19A0), runs $3F52, then jumps to the protection screen at $4400."
  },
  {
   "address": 6560,
   "type": "line",
   "text": "CIA 1 port B as input, port A as output."
  },
  {
   "address": 6570,
   "type": "line",
   "text": "$D018 = $1F: screen $4400, characters $7800 in bank 1."
  },
  {
   "address": 6574,
   "type": "line",
   "text": "$D018 = $2F: screen $4800, characters $7800 in bank 1."
  },
  {
   "address": 6580,
   "type": "line",
   "text": "Clears $D011 bit 6, extended colour mode."
  },
  {
   "address": 6589,
   "type": "line",
   "text": "Disables every sprite, then sets extended colour mode ($19C2)."
  },
  {
   "address": 6594,
   "type": "line",
   "text": "Sets $D011 bit 6, extended colour mode."
  },
  {
   "address": 6603,
   "type": "line",
   "text": "Clears $D011 bit 4, blanking the screen."
  },
  {
   "address": 6612,
   "type": "line",
   "text": "Sets $D016 bit 4, multicolour mode."
  },
  {
   "address": 6621,
   "type": "line",
   "text": "Background black ($D021 = 0), then falls into $19E2 (multicolour off). Called by $F241 and the stage card's raster handler $3DA5."
  },
  {
   "address": 6626,
   "type": "line",
   "text": "Clears $D016 bit 4."
  },
  {
   "address": 6635,
   "type": "line",
   "text": "Clears the low four bits of $D016: 38 columns, horizontal scroll 0. No caller found."
  },
  {
   "address": 6644,
   "type": "line",
   "text": "$D016 with the fine scroll 0 and 40 columns (bit 3)."
  },
  {
   "address": 6655,
   "type": "line",
   "text": "Fills $43C0-$43FE with A."
  },
  {
   "address": 6664,
   "type": "line",
   "text": "Zeroes the X and Y position registers of sprites 0-7, $D000-$D00F (X = $0F down to 0); the X high bits in $D010 are left as they are. Called at $1D49, $4465 and $45A5."
  },
  {
   "address": 6675,
   "type": "line",
   "text": "Background and border black."
  },
  {
   "address": 6684,
   "type": "line",
   "text": "Fills the colour RAM with A and both screens with X (each stored into the operand of a load in the loop first): four bands each, X = $FB down to 1, cover $D800-$DBE8, $4400-$47E8 and $4800-$4BE8, one byte past each 1000-byte area."
  },
  {
   "address": 6693,
   "type": "line",
   "text": "Operand of LDA #$FF at $1A24: the colour fill value, written by $1A1F; the colour RAM half of the fill loop."
  },
  {
   "address": 6707,
   "type": "line",
   "text": "Operand of LDA #$FF at $1A32: the screen fill value, written by $1A1C."
  },
  {
   "address": 6736,
   "type": "line",
   "text": "Switches to $01 = $35: RAM everywhere but the I/O chips. $1A51 is the same without the SEI."
  },
  {
   "address": 6742,
   "type": "line",
   "text": "Sets the sprite chip's shared registers (multicolours $D025/$D026, priority, multicolour mode, X and Y expansion, X high bits, enable) from eight six-entry tables at $1A87-$1AB1, entry X."
  },
  {
   "address": 6791,
   "type": "line",
   "text": "Sprite set-ups 0-5 for $1A56, multicolour 1 ($D025) of each."
  },
  {
   "address": 6797,
   "type": "line",
   "text": "Sprite set-ups 0-5: multicolour 2 ($D026)."
  },
  {
   "address": 6803,
   "type": "line",
   "text": "Sprite set-ups 0-5: sprite-behind-background bits ($D01B)."
  },
  {
   "address": 6809,
   "type": "line",
   "text": "Sprite set-ups 0-5: multicolour mode bits ($D01C)."
  },
  {
   "address": 6815,
   "type": "line",
   "text": "Sprite set-ups 0-5: X expansion bits ($D01D)."
  },
  {
   "address": 6821,
   "type": "line",
   "text": "Sprite set-ups 0-5: Y expansion bits ($D017)."
  },
  {
   "address": 6827,
   "type": "line",
   "text": "Sprite set-ups 0-5: X position high bits ($D010)."
  },
  {
   "address": 6833,
   "type": "line",
   "text": "Sprite set-ups 0-5: sprite enable bits ($D015)."
  },
  {
   "address": 6839,
   "type": "line",
   "text": "Reads joystick port 2 ($DC00) once and spreads its five bits over $1BDE-$1BE2 (up, down, left, right, fire): each byte keeps only its own bit, so 0 means pressed. The value read lands in the operand at $1AC5, the mask in $1AC7."
  },
  {
   "address": 6853,
   "type": "line",
   "text": "Operand of LDA #$FF at $1AC4: the joystick byte read from $DC00 by $1AB7; $1AC7 holds the mask for each direction in turn."
  },
  {
   "address": 6855,
   "type": "line",
   "text": "Operand of AND #$FF at $1AC6: the direction mask, $10 first and halved for each of the five directions."
  },
  {
   "address": 6870,
   "type": "line",
   "text": "Writes A to $DC00 to select keyboard rows, returns the column bits from $DC01 once two reads agree, then deselects ($1AE1)."
  },
  {
   "address": 6881,
   "type": "line",
   "text": "Writes $7F to both CIA 1 ports."
  },
  {
   "address": 6890,
   "type": "line",
   "text": "Low bytes of the 25 row addresses of a 40-column screen (0, $28, ... $C0), read by $2A93 with $1B03 to point $8A/$8B at a row of screen $4400."
  },
  {
   "address": 6915,
   "type": "line",
   "text": "High bytes of the 25 row addresses of screen $4400 ($44-$47), read by $2A9B; $2AA8 adds $3481 to reach the shown screen."
  },
  {
   "address": 6918,
   "type": "line",
   "text": "Entry 3 of the screen row high bytes ($44), read through $2A9B's LDA $1B03,Y like the others. The bytes AE 06 1B at $FF82 that look like LDX $1B06 are inside the happy tune's data, not code."
  },
  {
   "address": 6940,
   "type": "line",
   "text": "Inverts every byte of $7800-$7FFF (EOR #$FF), the character set's 2 KB."
  },
  {
   "address": 6969,
   "type": "line",
   "text": "The RTS of invert_7800. Also the base of $1BF3's clear loop (STA $1B39,X with X = $8F down to 1 clears $1B3A-$1BC8)."
  },
  {
   "address": 6970,
   "type": "line",
   "text": "Which screen is shown: 1 = $4400 ($D018 = $1F), 0 = $4800 ($2F). Set to 1 at the level start ($1CA2), flipped with the $D018 operand $21AA by $2667 when the screens swap; indexes $29A5 (the shown screen's page) and $3481. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6971,
   "type": "line",
   "text": "Set to 1 by the raster interrupt each frame ($2088); the play loop at $1E9B waits for it and decrements it, so a pass of the game runs at most once a frame. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6972,
   "type": "line",
   "text": "Character columns the scroll has passed and the map scroller has not drawn yet: raised by the scroll step in the interrupt ($20D1), taken one at a time by the play loop ($1F27, which then draws a column) and by the level start's scroll-in ($1CE3). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6973,
   "type": "line",
   "text": "Written by $3E65 and incremented at $BE4F; read by $3E6A, $BE8C, $BF67, $D53A and $D624. Its meaning is not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6974,
   "type": "line",
   "text": "Set to 3 by $2554 when a pass has swapped the screens and recoloured a column; while it is set the play loop skips the game's work for that pass ($1F51-$200C) and the band-4 handler skips $F07E. Cleared at the end of each pass ($2065) and by the scroll-in ($1D01). The scroll-in at the level start ($1CFA) waits for it. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6975,
   "type": "line",
   "text": "Direction of travel and scroll: 0 = right (the map moves left, coarse column $0F counts up), nonzero = left. Written when the player turns ($3202, $3245); read by the scroll step ($2093), the map scroller, the player's wall tests and much of the object code. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6976,
   "type": "line",
   "text": "1 after the coarse column last wrapped while scrolling left ($2985), 0 after a wrap scrolling right ($253D); read by $2444 for where the new column goes and copied into $1B42 by $3205."
  },
  {
   "address": 6977,
   "type": "line",
   "text": "Set to 1 by $31FC when the player turns left, written by $3242, cleared by $267A at each wrap; with $1B40 it moves the new column's screen address by 40 ($2442, $245A, $28AC). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6978,
   "type": "line",
   "text": "When nonzero, $2550 colours a second, neighbouring column; cleared there ($25EC). Start-up leaves the raster line in it ($1972); $320A copies $1B40 into it. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6979,
   "type": "line",
   "text": "Direction of the hidden screen's one-character shift ($1395): 0 left ($13E7), 1 right ($1435); flipped when a shift finishes; also read by $3923, $3934, $F197. Cleared by $2678. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6980,
   "type": "line",
   "text": "Flipped by $13C6 after shifts; read by $2463, $28BF and $F15B to adjust the new column's position. Cleared by $2678. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6981,
   "type": "line",
   "text": "Set to 1 by $13C3 the first time a shift completes in direction 0; while set, each completed shift also flips $1B44 ($13AA). Cleared by $2678. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6982,
   "type": "line",
   "text": "Passes of the one-character shift of the hidden screen still to do: 6 written by $3214/$3263 when the player turns, counted down by $1395; while nonzero the play loop skips $38C4 ($1F67) and $315E branches. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6983,
   "type": "line",
   "text": "Cleared when the player stops ($2C93); written by $32D3 and $32E1, read by $3166. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6984,
   "type": "line",
   "text": "Set by the scroll step ($20AC, $20CA) when the coarse column wraps past 0 or 39; the map scroller then swaps the screens and moves the colour RAM ($2471, $28D2) and clears it ($254D, $2992). The frame-end handler ($22F5, $230C) and $2A5C read it. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6985,
   "type": "line",
   "text": "Which edge started the current map repeat: 1 ($27CC, a $D0-$DF marker), $FF ($27D7, an $E0-$EF marker), 0 none ($27A5). Set from the land's table at the level start ($1CC5). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6986,
   "type": "line",
   "text": "Set by $F169 (when $1B44 is 0 and the screen column $1BDD is $28 or more), cleared by $F16F; while set, the play loop calls $F16D before scrolling right ($1F40). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6987,
   "type": "line",
   "text": "The player's height above his row on a slope, in pixels: set from the slope tables by $2FBE (slope glyphs $9081-$9084, $2EF9) and by $30D7 (slope characters $9088-$908B, $3012), cleared off a slope ($2FEE, $3107), when a jump starts from a slope ($2CF6, after folding it into Y, doubled first by $2CE7 when $1BB6 is set), by a forced bounce ($2EBD), by $B5F4 when the player is stopped (with $1B7F set) and at the level start ($1E02); subtracted from his Y ($1BE4) wherever the row is worked out ($2A3E, $33C5, $B2A3, ...). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6988,
   "type": "line",
   "text": "1 while the player's position is not inside the map: set each pass by $2B81, cleared by $2A45 once $2A3A has found his row. While set the floor and head tests are skipped and a fall goes on until he is out of the bottom ($2E80). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6989,
   "type": "line",
   "text": "$30 at the level start ($1DF8); written by $BE4C, $EEA8, $EF11, $EF8F, raised by $B22E, $D5CA, $D621, $F369; read by the code at $B1D3, $BE91-$BF0E, $D53F-$D5C1, $E4AF, $EF3F. Ducking changes it (features.md); its meaning is not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6990,
   "type": "line",
   "text": "$16 at the level start ($1DFD); evened down by $2C70 when the player stops; written by $3347, $33CF, $EF3B, raised by $D5B8; read by $D5A8, $EF14, $EF21. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6991,
   "type": "line",
   "text": "$E0 when the glyph at the player's middle is the land's $9025 or $9026, 0 for $9027 or $9028 ($2B3C); also written by $B34B and $B5FA. The band routines OR it into a value ($C063, $C0C3, $C11E) and $B4A8 reads it: by its value, the sprite-behind-background bits of sprites 5-7, so the player can pass behind scenery (inferred). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6992,
   "type": "line",
   "text": "Written by $334A, $33CC, $EF2F; counted down at $EF24. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6993,
   "type": "line",
   "text": "The player's running speed: cleared when he stops ($2C4C); $5D is full speed ($2C33, where a wall at full speed causes a bump). Written by the run code at $31CB-$3374. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6994,
   "type": "line",
   "text": "$4C at the level start ($1E19), 0 from the walk-in ($2391); compared with A when the player stops ($2C7C: a difference plays sound 6), and read by $2E07, $32A9-$3380, $B5B9, $C6D7, $EECC. Written by $33D2, raised by $3342. Meaning not fully traced. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6995,
   "type": "line",
   "text": "Written by $328E, $333D, $33D5, counted down at $3318, read by $3313. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6996,
   "type": "line",
   "text": "Nonzero while the player brakes into a skid: raised by $31A5 and $2394, cleared when he stops ($2C90). In the finish stretch ($1BC6) each character skidded adds to the skid distance $1BF0/$1BF1 and plays sound $2C with a rising pitch ($1EFD-$1F24); $147A puffs dust behind a skid; read also by $32B7-$337B, $B5AA, $BE58, $BF1E, $EEBA. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6997,
   "type": "line",
   "text": "Frames of the dust-puff effect still to start sprites ($147A): set by $F048 from A (3 after a wall bump, 2 after a long fall) and by $3357/$33DD/$E2F7; read by $2C26 and $33C9. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6998,
   "type": "line",
   "text": "Dust-puff parameter set with $1B55 ($F04B, $3352, $E2F2), read also by $33D8. While it is set and $1B57 is clear (with $1BB6 = 0), a new puff starts at a fixed X position, $A4 or $B4 by the scroll direction ($1523-$1539), not at the player's X, and its Y gets no +4 ($1578). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 6999,
   "type": "line",
   "text": "Dust-puff parameter, from X in $F043 ($F04E): 0 or 1."
  },
  {
   "address": 7000,
   "type": "line",
   "text": "Cleared when a puff ends ($1501), written by $33E0 and $E2FA, read by $334D, $3388 and $F043 (which starts no new puff while it is set). With $1BB6 set and $208C not 0, a new puff starts at a fixed X position, $A0 or $B8 by the scroll direction, while it is 0 ($150C-$1521), and at the player's X while it is set. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7001,
   "type": "line",
   "text": "Nonzero while the player rises in a jump: set by $2D74 and $2EC1 (and $B60E), cleared at the top or a head bump. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7002,
   "type": "line",
   "text": "Nonzero while the player falls: set at the top of a jump, on walking off a ledge ($2D4E) and after a head bump; cleared on landing ($2E6D). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7003,
   "type": "line",
   "text": "Rising or falling, as worked out by $2ACE each pass; picks the rows the wall tests use and is read by the effects ($1540, $1566), slopes and object code."
  },
  {
   "address": 7004,
   "type": "line",
   "text": "Set with $1B5F when up starts a jump on a slope ($2CFB); the next pass starts the jump at $2D62. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7005,
   "type": "line",
   "text": "Index into the jump speed table at $3460 ($33A1, $33B3): $17 at the start of a jump, counted down while rising and up (to $1F) while falling; cut to 6 when up is released early. A forced bounce sets it from A ($2ECA). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7006,
   "type": "line",
   "text": "Which way the stick asks the player to go: $FF left, 1 right, 0 none (written by $2BDF-$2C22, read by $31B6). features.md: right and left set it to $01 and $FF. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7007,
   "type": "line",
   "text": "1 while up has been held since the jump began; a new jump needs it 0 ($2CAB)."
  },
  {
   "address": 7008,
   "type": "line",
   "text": "Set to 6 when a jump was cut short by releasing up ($2D9E), so the cut happens once; cleared at the top and on bumps. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7009,
   "type": "line",
   "text": "Frames left of a drop through a platform (down and fire): set from $2CA9 by $2D20, counted down at $2AB9; while it runs only walls are solid. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7010,
   "type": "line",
   "text": "1 while down is held without fire on the ground ($2D2B); the wall tests then use the lower rows. features.md: down sets $1B62/$1B63."
  },
  {
   "address": 7011,
   "type": "line",
   "text": "Raised by $318E/$3198 and written by $31B0, read by $3189/$3193. Down changes it (features.md); meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7012,
   "type": "line",
   "text": "Frame divider counted down by $BDD7 in the bottom raster handler, 5 to 0 and round: the play loop counts $1B79 only when it is 0 ($201E); read by $364F. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7013,
   "type": "line",
   "text": "Frame divider, 4 to 0 and round ($BDE1)."
  },
  {
   "address": 7014,
   "type": "line",
   "text": "Frame divider, 3 to 0 and round ($BDEB); read by $2DD9 (the floaty jump), $3F1E, $D5A3-$D616, $F364."
  },
  {
   "address": 7015,
   "type": "line",
   "text": "Frame divider, 2 to 0 and round ($BDF5); read by $B354, $BCD8, $BE12, $BEAE, $BEF7, $BF28, $F07E, $F36C."
  },
  {
   "address": 7016,
   "type": "line",
   "text": "Flips between 0 and 1 every frame ($BE04): halves the rate of the background flash ($20E5), the floaty jump ($2DD4), the colour cycles at $3EF4 and other paced work; when the scroll speed $1BD7 is below 2, the glyph rotation in $22E9 shifts one bit only on the frames where it is 1."
  },
  {
   "address": 7017,
   "type": "line",
   "text": "Effect sprites (two entries, X = 0, 1): X position, low byte. Started at the player's X ($1BE3) and moved against the scroll ($15D7, $15E7)."
  },
  {
   "address": 7018,
   "type": "line",
   "text": "X position of effect sprite 1 ($147A compares the two)."
  },
  {
   "address": 7019,
   "type": "line",
   "text": "Effect sprites: Y position ($1591), from the player's Y less the slope offset and $1478."
  },
  {
   "address": 7020,
   "type": "line",
   "text": "Y position of effect sprite 1 (written also by $BBA2). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7021,
   "type": "line",
   "text": "Effect sprites: sprite pointer (animation frame); $0F means the entry is free. Shown through sprite 5 by $21DF."
  },
  {
   "address": 7022,
   "type": "line",
   "text": "Frame of effect sprite 1 ($0F when free)."
  },
  {
   "address": 7023,
   "type": "line",
   "text": "Effect sprites: $20 when the X position has carried past 255 (sprite 5's bit in $D010), else 0."
  },
  {
   "address": 7024,
   "type": "line",
   "text": "X high flag of effect sprite 1."
  },
  {
   "address": 7025,
   "type": "line",
   "text": "While nonzero (set from $1474 by $3403) only effect sprite 0 is animated, and it counts down ($14AC). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7026,
   "type": "line",
   "text": "Frames until the effect sprites' next animation step, reloaded from $1476. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7027,
   "type": "line",
   "text": "Which effect sprite the extra raster handler shows ($21DF); written by $3413, $B2F3, $E45A. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7028,
   "type": "line",
   "text": "1 while the player stands on a slope glyph ($2FE9); read by the wall and jump code ($2C2B, $2C3E, $2CDD) and $2A69; $FF ($3102, from $3012) while he stands on one of the slope characters $9088-$908B: $2B6E then runs only $3012, not $2EF9."
  },
  {
   "address": 7029,
   "type": "line",
   "text": "The spinning star's pass counter: reloaded from $EE10 by $3AFB and counted down by the DEC $1B75 at $3AEE (an instruction whose opcode $B7C9 rewrites); when it goes negative the next star frame is shown. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7030,
   "type": "line",
   "text": "Written by $3B17, raised by $F2AA, read by $3AFE and $BEDC. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7031,
   "type": "line",
   "text": "Written by $3B0C, read by $3B04. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7032,
   "type": "line",
   "text": "Read by $3521, $35F3, $361C and $3B86 (into $F322), written by $360C, $362D, $F323. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7033,
   "type": "line",
   "text": "A countdown taken by the play loop ($2028) on passes where $1B64 is 0, so every sixth frame; at 0 it runs $361C. Set by $3601 and $3626. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7034,
   "type": "line",
   "text": "Written by $351E, $35EF; read by $350E. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7035,
   "type": "line",
   "text": "Written by $36CE, $3791; read by $366D, $3707. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7036,
   "type": "line",
   "text": "Written by $37D0, $37DF; read by $3801. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7037,
   "type": "line",
   "text": "Passes the player has spent below the map ($2A4A); once nonzero $2A3A is no longer run ($2B84)."
  },
  {
   "address": 7038,
   "type": "line",
   "text": "Raised when the player falls out of the bottom of the screen ($2E88); the play loop then skips the movement ($2AAF), and after $1B80 runs out ends the life ($1F95); read also by $316E. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7039,
   "type": "line",
   "text": "When set (by $B5E9) the play loop runs $BD5A instead of the player's movement and burns time in the NOP slide; the band-1 handler leaves $1BA9 alone ($21F1); read by $E471."
  },
  {
   "address": 7040,
   "type": "line",
   "text": "Frames before a lost life is handled: $28 after a fall into a pit ($2EB1), also set by $BD8F; at 0 the play loop jumps to $3B3F ($1F90-$1FAA). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7041,
   "type": "line",
   "text": "Steps of the level start's walk-in: $4C at the start ($1E16), counted down by the frame-end handler while $1BC9 is set ($2377-$23A2: by one a frame down to $41, then by two, stopping at 0), each frame adding $CF18,X to the player's X. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7042,
   "type": "line",
   "text": "Priority of the effect playing on channel 0-2 (3 bytes, 0 = free): set by $1352, cleared when an effect ends ($0AB9) and at the level start ($1E8C). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7043,
   "type": "line",
   "text": "Channel 1's priority."
  },
  {
   "address": 7044,
   "type": "line",
   "text": "Channel 2's priority."
  },
  {
   "address": 7045,
   "type": "line",
   "text": "Start requests for channels 0-2 (3 bytes): set by $1352, taken by $BC9F-$BCC7, cleared by $0D1B. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7046,
   "type": "line",
   "text": "Channel 1's start request."
  },
  {
   "address": 7047,
   "type": "line",
   "text": "Channel 2's start request."
  },
  {
   "address": 7048,
   "type": "line",
   "text": "Effect number to start on channels 0-2 (3 bytes, from $1322 by $1352), read by $BCA9-$BCCC; $1545 also checks channel 0's for effects $10 and 3."
  },
  {
   "address": 7049,
   "type": "line",
   "text": "Effect requested on channel 1."
  },
  {
   "address": 7050,
   "type": "line",
   "text": "Effect requested on channel 2."
  },
  {
   "address": 7051,
   "type": "line",
   "text": "Three colours of the current colour set: copied from the land's $9095 + 3n by $29EF ($2A0E-$2A18, Y = 0-2). The fade $B34F also writes here: for each of its four sequences ($1B8F-$1B92, X = 3 down to 0) it stores the sequence's current entry ($B39E) into $1B8B-$1B8E ($B383). Read by the band routines ($C13B, $C075, $C0D5) and $F3CC-$F3EE, raised by $BE98, $BED3, $BF15 (colour flashes). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7052,
   "type": "line",
   "text": "Colour set, second colour."
  },
  {
   "address": 7053,
   "type": "line",
   "text": "Colour set, third colour."
  },
  {
   "address": 7054,
   "type": "line",
   "text": "Fourth byte after the colour set: written by $B383 (STA $1B8B,X in the loop $B372-$B387, X = 3) and read by $C135. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7055,
   "type": "line",
   "text": "Three colours copied at the level start ($1DB6-$1DC0) from the land's $9095+X, with X = $18, or the land's $970D entry when the land is happy ($1BEC); $1BCF gets X / 3. With $1B92 they are the four sequence numbers of the fade $B34F ($B374, X = 3 down to 0): $B39E looks up entry $1B93 of each sequence, a positive entry goes to $1B8B+X ($B383), a negative one ends the sequence and is stored here ($B37E). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7056,
   "type": "line",
   "text": "Second of the level-start colours."
  },
  {
   "address": 7057,
   "type": "line",
   "text": "Third of the level-start colours."
  },
  {
   "address": 7058,
   "type": "line",
   "text": "7 at the level start ($1D97); also the fourth entry of $B372-$B387's loop over $1B8F,X (X = 3 down to 0): read by $B374 and written by $B37E. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7059,
   "type": "line",
   "text": "Read by $B389, $B3AA, written by $B391. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7060,
   "type": "line",
   "text": "While set (by a forced bounce, $2EC4) a held jump is not cut short; cleared at the top of a jump and on a bump. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7061,
   "type": "line",
   "text": "Frames until the next tune check in the happy land (counted down by $1FE8, reloaded from $1B96). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7062,
   "type": "line",
   "text": "Reload for $1B95, set with it by $E4D3 from the land's $90E4. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7063,
   "type": "line",
   "text": "The tune the happy land wants next (from a tune marker, $2A31, or $1E78/$BD15); $E4C5 starts it."
  },
  {
   "address": 7064,
   "type": "line",
   "text": "Tune changes asked for and not yet made ($2A36 sets 1); taken by $1FF2."
  },
  {
   "address": 7065,
   "type": "line",
   "text": "The tune to return to after the $1B9C state ($1FFD, $BB8C), read by $BD12."
  },
  {
   "address": 7066,
   "type": "line",
   "text": "Counted down by $BCDD while nonzero, indexing $BB38/$BB3E; set by $BC25 (the STA $1B9A at $FFC1 is in leftover bytes that nothing executes). Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7067,
   "type": "line",
   "text": "Steps 7 down to 0 and round at $BD1B; set by $BB7B. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7068,
   "type": "line",
   "text": "A timed state set by $BB6E and counted down at $BCF6; while it runs the effect sprites cycle through the 12 frames at $F988, no tune change is made ($1FF5), and the extra raster handler leaves the player's colours alone. Read by much object code. Its game meaning is not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7069,
   "type": "line",
   "text": "Effect sprites: position in the 12-frame list at $F988 during the $1B9C state, per entry."
  },
  {
   "address": 7070,
   "type": "line",
   "text": "Effect sprite 1's position in the $F988 list."
  },
  {
   "address": 7071,
   "type": "line",
   "text": "A knock-back of the player: written 1 by $C715 (object code); $2AAF turns it into a bounce ($FF while it runs) and $2C9B-$2CA5 clears it when it ends. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7072,
   "type": "line",
   "text": "Direction of the knock-back bounce: $FF or 1 ($2AF5), cleared with $1B9F. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7073,
   "type": "line",
   "text": "From the land's $96EA at the level start ($1D75), also $1BA3; read and written by $B7E4-$B804 and $E60D-$E61B (X-indexed with $1BA2). Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7074,
   "type": "line",
   "text": "From the land's $96E3 at the level start, also $1BA4-$1BA6; changed by $B7EE, $B809, $CCF4, $E612. Meaning not traced from this range."
  },
  {
   "address": 7075,
   "type": "line",
   "text": "From the land's $96EA at the level start ($1D78). With $1BA4 it is the second of the X-indexed pairs that start at $1BA1 (X = 2): read by $E616 and $B7E4/$B7FF, written by $E60D, $B7E9 and $B804 when those run with X = 2 ($E635, $E6EC, $EC82, $ECE8). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7076,
   "type": "line",
   "text": "From the land's $96E3 at the level start ($1D69)."
  },
  {
   "address": 7077,
   "type": "line",
   "text": "From the land's $96E3, then $1BD2 plus the land's $96F8 ($1E55); read and written by $E5E9-$E656. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7078,
   "type": "line",
   "text": "From the land's $96E3, then $1BD3 plus a carry ($1E5D); read and written by $E5F3-$E64A. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7079,
   "type": "line",
   "text": "From the land's $96F1 at the level start ($1D87), read by $E68F."
  },
  {
   "address": 7080,
   "type": "line",
   "text": "$80 at the level start ($1D81), read by $E683."
  },
  {
   "address": 7081,
   "type": "line",
   "text": "1 from raster line $72 (band 1) to $D2 (band 4), 0 below: the play loop runs the sprite and object updates ($C18A, $C8A0, $ECF1, $B645) only while it is 0 ($1FB5-$1FD0, $2011). Also read by $3E2A, $BEA2; raised by $F271. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7082,
   "type": "line",
   "text": "Counted down at $37FD (the address of features.md's extra-time POKE) and read at $37F8; set by $CB4D. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7083,
   "type": "line",
   "text": "Written by $B595, read by $C727. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7084,
   "type": "line",
   "text": "Read by $E6C3, $E6D8, raised by $E6D5, written by $ECCF. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7085,
   "type": "line",
   "text": "Table read by $E6C6,X and written by $ECC2,Y ($1BAD-$1BB0). Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7089,
   "type": "line",
   "text": "Table read by $E6CB,X and written by $ECC7,Y ($1BB1-$1BB4). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7093,
   "type": "line",
   "text": "Written by $E6E5, $E7E4, $ECB7, read by $E998, $ECB2. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7094,
   "type": "line",
   "text": "Set to 1 by $E345 when, in the happy land, the player meets map glyph $60 or $61 ($23CA \u2192 $E2F0, which also splices the extra raster handler in); $23D8 acts on glyphs $62-$63 while it is set. It halves the jump and fall speeds ($33A1, $33B3), doubles the drop-through time, changes the effect sprites' frames and timing, and colours the player's sprites ($21C1). Its game meaning (a power-up) is inferred, not proven. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7095,
   "type": "line",
   "text": "Raised at $B61D (the address of features.md's invincibility POKE), written by $387F, read by $B5E4 and $F0B5. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7096,
   "type": "line",
   "text": "Raised at $384F, written by $F387, read by $3B8C and $F0C0. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7097,
   "type": "line",
   "text": "Written by $383C, raised by $BEA7, read by $37E9 and $BEBE. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7098,
   "type": "line",
   "text": "Raised by $2EA8 when the player falls into a pit beside glyph $4C or $4E (sad land, $36F3 set); read by $1F9A (then the life ends with A = 0 to $3B3F) and $3B80. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7099,
   "type": "line",
   "text": "10 after the player bumps his head with $1B52 clear ($2E0E); counted down at $EEB5. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7100,
   "type": "line",
   "text": "Six timers $1BBC-$1BC1 counted down by $F08E (X-indexed); individual ones are set to $1E by $3606, $3609, $36D4, $CB52, $364A, and all but $1BBE by $10C1. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7101,
   "type": "line",
   "text": "Second of the six timers: set to $1E by $3609 and by $10C1's loop; zeroed by $1BF3."
  },
  {
   "address": 7102,
   "type": "line",
   "text": "Third of the six timers: nothing sets it (the loop at $10C1 skips it); only the clear $1BF3 writes it, with 0. $F08E counts it like the others."
  },
  {
   "address": 7103,
   "type": "line",
   "text": "Fourth of the six timers: set to $1E by $36D4 and by $10C1's loop; zeroed by $1BF3."
  },
  {
   "address": 7104,
   "type": "line",
   "text": "Fifth of the six timers: set to $1E by $CB52 and by $10C1's loop; zeroed by $1BF3."
  },
  {
   "address": 7105,
   "type": "line",
   "text": "Sixth of the six timers: set to $1E by $364A and by $10C1's loop; zeroed by $1BF3."
  },
  {
   "address": 7106,
   "type": "line",
   "text": "Written by $B622 and $EF4E, read by $21CB, $B5CF, $EF45. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7107,
   "type": "line",
   "text": "1 while the map column $1BD9 lies between one of the land's start columns ($902B-$902D) and end columns ($9031-$9033) ($F121, $F13E): the frame-end handler then rotates two glyphs of the character set ($2314). Also written by $1C80. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7108,
   "type": "line",
   "text": "No reader or writer found by address (cleared with the block by $1BF3)."
  },
  {
   "address": 7109,
   "type": "line",
   "text": "1 while the game is paused (the RUN/STOP test in $2222); the play loop then only reads Q."
  },
  {
   "address": 7110,
   "type": "line",
   "text": "Set when the player crosses the finish line in the happy land ($2B5D); the play loop then counts $1BC7 down and ends the stage, the skid distance is counted, and the player no longer steers ($2B04). Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7111,
   "type": "line",
   "text": "Passes from crossing the finish line to the stage's end: $6E at the level start ($1D5C), counted down at $2056; at 0 the play loop jumps to $3B3F with A = 1. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7112,
   "type": "line",
   "text": "Written by $B5F7, raised by $BD69, read by $BD5F. Meaning not traced from this range. Also zeroed by $1BF3, the clear of $1B3A-$1BC8."
  },
  {
   "address": 7113,
   "type": "line",
   "text": "Nonzero while the game moves the player itself: $FF from $1BFE at the level start, 1 during the scroll-in and reveal ($1D0B), 0 in play ($1D2B). While set the scroll step does not raise the frame flag ($20D4), the frame-end handler walks the player in, marker tunes are not taken and the band-1 handler skips $BA08; its sign selects $B293 for the border ($2121)."
  },
  {
   "address": 7114,
   "type": "line",
   "text": "Column within the tile (0-3) at the right screen edge: 3 at the level start ($1CA7), stepped by $23EE/$2858, written by $2648 and $28A6. $FF from $1BFE before that."
  },
  {
   "address": 7115,
   "type": "line",
   "text": "Column within the tile (0-3) at the left screen edge: 0 at the level start ($1CAC), stepped by $2439/$2858, read by $324E and $3A2E. $FF from $1BFE before that."
  },
  {
   "address": 7116,
   "type": "line",
   "text": "While nonzero the play loop sets the scroll speed $208C to 0 ($1EDB); set by $32D0/$32DE, cleared when the player stops ($2C8D). Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7117,
   "type": "line",
   "text": "Filled with $FF by $1BFE; no other reader or writer found by address."
  },
  {
   "address": 7118,
   "type": "line",
   "text": "The raster band routine set in use (from $29B0); $FF after $1BFE so the first set is always applied."
  },
  {
   "address": 7119,
   "type": "line",
   "text": "The colour set in use (from $29EF); also written by $1DB1 at the level start. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7120,
   "type": "line",
   "text": "The last tune marker passed ($2A29); $FF after $1BFE."
  },
  {
   "address": 7121,
   "type": "line",
   "text": "When nonzero the play loop does not move the player ($1EC5), the pause key is not read ($2231) and the bottom handler runs $B312; raised by $B395, read by $B34F, $B62F. Meaning not traced from this range. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7122,
   "type": "line",
   "text": "Read at the level start ($1E4F, plus the land's $96F8 into $1BA5) and by $E5C9-$E692, written by $E5CE, $E5DD. Meaning not traced from this range. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7123,
   "type": "line",
   "text": "$7F at the level start ($1D7D), raised and lowered by $E5D3/$E5E2, compared at $E62C-$E686. Meaning not traced from this range. $FF from $1BFE just before."
  },
  {
   "address": 7124,
   "type": "line",
   "text": "Read by $E6BE, $E6DB, $ECBD, written by $E6E0, raised by $ECBA, $ECD5. Meaning not traced from this range. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7125,
   "type": "line",
   "text": "Written by $E6E8 and $ECD2; read by $B678, $C1C2, $C63B, $C8CD, $E7C1, $E962, $EC68. Meaning not traced from this range. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7126,
   "type": "line",
   "text": "While 0 the play loop runs $F1A5 (which sets it to $FF) before scrolling left ($1F2F); written by $F1A1. Set to $FF by $1BFE at the level start."
  },
  {
   "address": 7127,
   "type": "line",
   "text": "The scroll speed in pixels a frame, unsigned: the play loop turns it into the signed operand at $208C by the direction ($1EE5-$1EF5). Set by the run code ($32CB, $3377, $B5F1), by $2C66/$2C79 when the player stops, 8 during the scroll-in ($1CD3); kept in $1BD8 while paused. features.md lists it."
  },
  {
   "address": 7128,
   "type": "line",
   "text": "$1BD7 kept by the pause ($225E) and given back on resume ($2291)."
  },
  {
   "address": 7129,
   "type": "line",
   "text": "Map column (0-255, in the band rows at $8A00-$8FFF) at the right edge of the screen; set at the level start ($1C83), stepped by the map scroller; read by $3A8D, $F121, $F13E. features.md's \"position bytes\" moved by +2/-2 in 40 frames of running."
  },
  {
   "address": 7130,
   "type": "line",
   "text": "Map column at the left edge of the screen: set at the level start nine tiles back from $1BD9 ($1C93), stepped by the scroller."
  },
  {
   "address": 7131,
   "type": "line",
   "text": "The right edge's repeat counter ($269F): 0 to the count, $FF when no repeat runs."
  },
  {
   "address": 7132,
   "type": "line",
   "text": "The left edge's repeat counter ($26E4)."
  },
  {
   "address": 7133,
   "type": "line",
   "text": "The screen column (0-$27) where the next new map column is drawn: $27 at the level start, moved with every coarse step ($209D, $20B9) and turn ($31F7, $3256)."
  },
  {
   "address": 7134,
   "type": "line",
   "text": "Joystick up, 0 when pressed ($1AB7). Read by the jump code ($2CD3, $2D8F)."
  },
  {
   "address": 7135,
   "type": "line",
   "text": "Joystick down, 0 when pressed. Read by $2D09."
  },
  {
   "address": 7136,
   "type": "line",
   "text": "Joystick left, 0 when pressed. Read by $2B9C-$2C10 and $3E54."
  },
  {
   "address": 7137,
   "type": "line",
   "text": "Joystick right, 0 when pressed. Read by $2B97-$2C15 and $3E4B."
  },
  {
   "address": 7138,
   "type": "line",
   "text": "Fire button, 0 when pressed. Read by $2D0E (drop through), $332B, $3E5E."
  },
  {
   "address": 7139,
   "type": "line",
   "text": "The player's sprite X position: 2 at the level start ($1DD4), moved by the walk-in ($2381); read by $1553 and $B293."
  },
  {
   "address": 7140,
   "type": "line",
   "text": "The player's sprite Y position: from the land's $9714 at the level start; moved by the jump and fall code, snapped to rows ($CB7A) and steps; read widely."
  },
  {
   "address": 7141,
   "type": "line",
   "text": "The player's column offset from the start of his screen row, worked out by $2A3A."
  },
  {
   "address": 7142,
   "type": "line",
   "text": "The player's character row, ($1BE4 - $32)/8 ($2A57); stepped by $3128/$3140 on slope ends."
  },
  {
   "address": 7143,
   "type": "line",
   "text": "Written by $B609 and $EF42, read by $E4A6. Meaning not traced from this range."
  },
  {
   "address": 7144,
   "type": "line",
   "text": "10 at the level start ($1DEB); written by $BD05, $BD2C, $EF82; read by $E44F, $EF74. Meaning not traced from this range."
  },
  {
   "address": 7145,
   "type": "line",
   "text": "4 at the level start ($1DCD); read by $F0A4, $F0E5, written by $F0AC. Meaning not traced from this range."
  },
  {
   "address": 7146,
   "type": "line",
   "text": "$4A at the level start ($1D57), counted down at $37EE and written by $37F5. Meaning not traced from this range."
  },
  {
   "address": 7147,
   "type": "line",
   "text": "Read by $3326 and $C9BA, raised by $BC55, written by $E542. Meaning not traced from this range."
  },
  {
   "address": 7148,
   "type": "line",
   "text": "The land's state: 0 sad, 1 happy. $3B3F stores A here when a stage ends or restarts; the land's code at $A56C sets it. Chooses the title tune ($3C89), and only when it is set do the finish line ($2B42), the tune markers ($2A2C), the glyphs $60-$63 ($23AB) and the tune checks ($1FE3) act. 0 in the play snapshot at the start of Jellyland."
  },
  {
   "address": 7149,
   "type": "line",
   "text": "Counted down at $BE17 (the address features.md's unlimited-lives POKE guards) and reloaded by $BE31. Meaning not traced from this range."
  },
  {
   "address": 7150,
   "type": "line",
   "text": "Read by $BE21, added at $BE29, written by $BE2E. Meaning not traced from this range."
  },
  {
   "address": 7151,
   "type": "line",
   "text": "Characters skidded past the finish line ($1F07); read by $BE53, counted down by $BF51, written by $E571."
  },
  {
   "address": 7152,
   "type": "line",
   "text": "Tens digit of the skid distance ($1F14); read by the bonus code $BE68-$BF4E."
  },
  {
   "address": 7153,
   "type": "line",
   "text": "Units digit of the skid distance (0-9, $1F0B-$1F19)."
  },
  {
   "address": 7154,
   "type": "line",
   "text": "Written only by $E571 (STA $1BEF,X with X = 3, clearing $1BEF-$1BF2 with the skid distance); no reader found."
  },
  {
   "address": 7155,
   "type": "line",
   "text": "Zeroes the play variables $1B3A-$1BC8 (STA $1B39,X for X = $8F down to 1). Called by the level start ($1D43), $3B92, $F2FF and the land's $A54F."
  },
  {
   "address": 7166,
   "type": "line",
   "text": "Sets $1BC9-$1BD6 to $FF (auto mode, and \"nothing chosen yet\" for the band set, colour set and tune marker). Called by the level start ($1D46) and the land's $A566."
  },
  {
   "address": 7167,
   "type": "line",
   "text": "Operand of LDA #$FF at $1BFE: the value $1BFE fills $1BC9-$1BD6 with. Nothing in the engine's code writes it: the bytes 8D FF 1B at $FFB7 (STA $1BFF) are leftovers that nothing executes."
  },
  {
   "address": 7177,
   "type": "line",
   "text": "Read and written by $E4F2, $E50F, $E574 (X/Y-indexed from $1C09). Meaning not traced from this range."
  },
  {
   "address": 7178,
   "type": "line",
   "text": "Written by $E514 and by $E574 (STA $1C09,X, X = 3 down to 0, with the value it puts in $1BEF-$1BF2); read by $E4F2 (copied to $51, Y = 3 down to 0)."
  },
  {
   "address": 7179,
   "type": "line",
   "text": "Written by $EA9F and by $E574 (STA $1C09,X, X = 3 down to 0); read by $E4F2 (copied to $52)."
  },
  {
   "address": 7180,
   "type": "line",
   "text": "Written by $EAA4 and by $E574 (STA $1C09,X, X = 3 down to 0); read by $E4F2 (copied to $53)."
  },
  {
   "address": 7181,
   "type": "line",
   "text": "Writes 1 (white) into the operands of the panel's colour loads for sprites 5, 4 and 3 ($18EE, $18E9, $18E4) and returns X = 1. Called by $1C63 and $F31B."
  },
  {
   "address": 7193,
   "type": "line",
   "text": "Nonzero in play (5, set by the level start at $1D3A); the land's own sequence at $A549 (which also turns the land happy) writes 0. While 0 there are no sound effects in the reveal, the border takes its plain colour ($2114) and the frame-end handler skips its play work."
  },
  {
   "address": 7194,
   "type": "line",
   "text": "Blacks out for a level start: background and border black, $D011 = 0 (screen off), VIC interrupts off and acknowledged, fine scroll $10 = 0, both screens filled with the land's blank glyph ($9022) and colour RAM with 0, zero page $0B-$10 cleared (the raster save and both scroll positions), and the background flash counter $20E2 = 0."
  },
  {
   "address": 7218,
   "type": "line",
   "text": "The clear loop: STA $00,X for X = $0B to $10 (the label \"start\" shown as its operand is the zero-page base $00)."
  },
  {
   "address": 7229,
   "type": "line",
   "text": "Installs the play-time raster chain: A/X/Y = the handler after the VSP interrupt and its line (into $2178, $217D, $2182), $FFFE/$FFFF = $22E9, NMI vector $FFFA/$FFFB = $2087 (the RTI of irq_leave, so RESTORE does nothing), $01 = $35, CIA 1 interrupts off, the panel sprites white ($1C0D), the raster interrupt on at line $FF, $D016 = $D8 (multicolour, 40 columns), CIA 1 timer A stopped, interrupts on."
  },
  {
   "address": 7296,
   "type": "line",
   "text": "Sets the map position for a level start: A into $1BC3, X = the map column at the right edge ($1BD9); counts nine tile columns back, skipping marker codes ($D0 and up), for the left edge ($1BDA); $D018 value $1F (screen $4400), screen column $27, shown screen 1, tile columns 3 and 0; and the playfield multicolours ($2108, $210D) from the land's $908F/$9091 for its state ($1BEC: sad or happy)."
  },
  {
   "address": 7359,
   "type": "line",
   "text": "Sets the map repeat state for a level start: A = $1BDB, X = $1BDC, Y = $1B49 (from the land's $9730, $9737, $973E), and the second $D011 value of the VSP write ($219A) to $5B, extended colour with multicolour, a mode that shows black, so the playfield stays dark during the scroll-in."
  },
  {
   "address": 7374,
   "type": "line",
   "text": "The level start's scroll-in: speed 8 ($208C, $1BD7); each frame with a character passed ($1B3C) draws a new column ($23EE) and, in play ($1C19), moves the objects ($E72F, $E6BE) and sounds ($BC99, $BA0D); stops when the screens have swapped ($1B3E), with the speed back to 0 and $1BC9 = 1. Then $E5B4 (A = $AD in play, $60 otherwise), $E27B, CLC at $1FB2 (object updates off), the reveal ($1100) and $1BC9 = 0."
  },
  {
   "address": 7471,
   "type": "line",
   "text": "Starts or restarts a level (jumped to from $3DA2): resets the stack, blacks out ($1C1A), $1C19 = 5, $EFC4-$EFC9 = $11 (the X that $1C1A returns, through TXA), clears the play variables ($1BF3) and sets $1BC9-$1BD6 to $FF ($1BFE), parks the sprites, sets the skid sound's pitch ($0FD8 = 6), $BD96, $1BEA = $4A, $1BC7 = $6E, $1BA1-$1BA7 from the land's tables ($96E3, $96EA, $96F1), $1BD3 = $7F and $1BA8 = $80; the raster band set ($29B0, from $9706); the colour set ($9095, by $970D in the happy land, else $18); the raster chain ($1C3D: band 1 at line $52); the player's X 2 and Y ($9714), the reveal shape ($971B into $1155), $B34A ($9722), volume $0F; sprite registers; $C519, $33EB; the map position ($1C80 with the land's $9745 and $96FF); the background colour ($9093); the happy tune ($9729 into $1E77); $E5C8; the repeat state ($1CBF); the scroll-in ($1CCE); $1BA5/$1BA6; two sound-effect channels ($12A2), the music on voice 3 only ($128A) after starting the tune ($E4C5: tune 9 when sad, the land's choice when happy); then sounds $0B and $0C and falls into the play loop."
  },
  {
   "address": 7520,
   "type": "line",
   "text": "Operand of LDY #$00 at $1D5F: the restart point. The level start reads every per-start table in the land ($96E3-$9745: map column, player Y, colours, repeat state, tune) with this index; written by $B7BA, $E4ED, $E53F and $E563 and compared at $E4E8 (the active portal, by inference from features.md; not proven here)."
  },
  {
   "address": 7799,
   "type": "line",
   "text": "Operand of LDY #$FF at $1E76: the happy land's first tune, written by $1E33 from the land's $9729."
  },
  {
   "address": 7835,
   "type": "line",
   "text": "The top of the play loop. Waits for the frame flag $1B3B and decrements it, deselects the keyboard ($1AE1). While paused ($1BC5) it only reads keyboard row 7 for Q (column 6): Q sets $CF81 to $FF and jumps to $3B3F with A = $1BEC. Otherwise reads the stick ($1AB7) and runs the pass."
  },
  {
   "address": 7874,
   "type": "line",
   "text": "The pass after the pause test: reads the stick; unless $1BD1 is set, moves the player ($2AAF, then $EE9E; or only $BD5A while $1B7F is set), and with $1BD1 set runs $EE9E alone; sets the signed scroll speed $208C from $1BD7 and the direction (0 while $1BCC is set); when a character has scrolled past ($1B3C) counts the skid distance after the finish and draws the new column ($2858 left, $23EE right, with $F1A5/$F16D, $E6EC/$E72F); then the screen shift ($1395), $E6BE, the effect sprites ($147A), $BCD3, $B34F, $38C4 and $B4A8 ($E6BE, $147A, $BCD3 and $B4A8 only outside a heavy pass, $1B3E; $38C4 only while $1B46 is 0; with $1B7F set 16 calls of the NOP slide replace $B4A8), and, while the scroll speed $208C is 0, the end of a lost life when $1B80 runs out ($3B3F with A = 0 after a pit fall with $1BBA set, else $BDC1 and $3B3F with A = $1BEC)."
  },
  {
   "address": 8114,
   "type": "line",
   "text": "The opcode at $1FB2 switches the object updates: CLC ($18, written by $1D23 at the level start) makes the BCC that follows skip them; $B39A writes another opcode (SEC, by its effect) to let them run. Then $C18A, $C8A0, $ECF1 (happy land) and $B645 run one after another while the raster is outside the middle band ($1BA9 = 0). From $1FD5: unless paused, starts and plays the sound effects ($BC99) and the music ($087B); in the happy land counts $1B95 down and makes asked-for tune changes ($E4C5); then, outside a heavy pass and the middle band: $37E9 (before the finish), the $1B79 countdown ($361C), $3888/$3796 or $3757/$356D by $3507, $364E and $1B68; after the finish the stage ends when $1BC7 runs out ($3B3F with A = 1), otherwise $BE08. Clears $1B3E and loops."
  },
  {
   "address": 8299,
   "type": "line",
   "text": "Common head of every handler in the play-time raster chain: saves A, X and Y in zero page $0C-$0E and acknowledges the raster interrupt."
  },
  {
   "address": 8311,
   "type": "line",
   "text": "Sets the next link of the play-time raster chain: A is the raster line, X/Y the handler's address, written straight into the hardware vector $FFFE/$FFFF (the KERNAL is switched out in play)."
  },
  {
   "address": 8321,
   "type": "line",
   "text": "Common tail of the play-time raster chain: restores A, X and Y from $0C-$0E and returns from the interrupt."
  },
  {
   "address": 8328,
   "type": "line",
   "text": "One frame of horizontal scroll. Subtracts the operand at $208C (the scroll speed) from the fine scroll in $10 and keeps its low three bits. When it passes a character, steps the coarse column $0F by $1B3F: scrolling left it counts down and wraps from 0 to 39; scrolling right it counts up to 40 and wraps from 40 to 0 (the test is CMP #$29 at $20C1), so it takes 41 values that way; each wrap sets $1BDD to $27 and increments $1B48. Sets $1B3C. Then, unless $1BC9 is set, sets the frame flag $1B3B."
  },
  {
   "address": 8332,
   "type": "line",
   "text": "Operand of SBC #$00 at $208B: the scroll speed in pixels a frame, written by the play loop ($1EF5), $1CCE, the pause ($2270, $2296) and others; the fine and coarse scroll steps follow."
  },
  {
   "address": 8417,
   "type": "line",
   "text": "Sets the background colour $D021. While the counter in the operand at $20E2 runs (counting down unless $1B68 is set), the colour comes from the table at $BE38 until an entry with bit 7 set; otherwise from the operand at $20F3."
  },
  {
   "address": 8418,
   "type": "line",
   "text": "Operand of LDX #$00 at $20E1: the background colour flash counter, written by $1C39 (0), $3B60 and $BE1E, counted down at $20EA unless $1B68 is set."
  },
  {
   "address": 8435,
   "type": "line",
   "text": "Operand of LDA #$FF at $20F2: the background colour when no flash runs, written from the land's $9093 at the level start ($1E2B) and zeroed by $1100 during the reveal."
  },
  {
   "address": 8440,
   "type": "line",
   "text": "The handler that ends the frame's raster chain: sets the next interrupt to $213D at line $2F, runs $C0DC, sets both character multicolours to the operands at $2108/$210D, sets the background colour ($20E1), then the border: colour from the operand at $211A when $1C19 is 0, otherwise $B293 when $1BC9 is negative, or else the panel ($E426) and, when $1BD1 is set, $B312. Always ends with $BDD7."
  },
  {
   "address": 8456,
   "type": "line",
   "text": "Operand of LDA #$FF at $2107: multicolour 1 for the playfield ($D022), written by $1CB5 from the land's $908F; then multicolour 2."
  },
  {
   "address": 8461,
   "type": "line",
   "text": "Operand of LDA #$FF at $210C: multicolour 2 ($D023), written by $1CBB from the land's $9091."
  },
  {
   "address": 8474,
   "type": "line",
   "text": "Operand of LDA #$FF at $2119: the border colour while $1C19 is 0; then the panel and status border routines."
  },
  {
   "address": 8509,
   "type": "line",
   "text": "First half of a double interrupt that lands the next one on an exact cycle. Saves A, Y and X in the operands of the loads at $21AE-$21B3 and the stack pointer in the operand at $21A7, sets the next interrupt for line $30 at $2162, re-enables interrupts and runs into the NOP slide at $B17A, where the second interrupt arrives with at most a cycle of jitter."
  },
  {
   "address": 8546,
   "type": "line",
   "text": "Second half: VSP, the trick that scrolls the playfield sideways without moving a character. Patches its own JSR at $2196 to enter the NOP slide at $B182 + coarse column/2 ($0F: 0-39, and 40 for a step when scrolling right, $20C1), sets the fine scroll from $10 with multicolour on, waits in the slide, then writes $12 and $1B to $D011 on line $30: the bad line starts late by that many cycles, and the video chip draws the whole screen shifted by as many characters. Sets the next handler ($21EE at line $52), restores the stack pointer and registers saved by $213D, and sets $D018 from the operand at $21AA."
  },
  {
   "address": 8568,
   "type": "line",
   "text": "Operand of LDA #$EE at $2177: low byte of the handler after the VSP interrupt, written by $1C3D; the VSP timing follows."
  },
  {
   "address": 8573,
   "type": "line",
   "text": "Operand of LDA #$21 at $217C: high byte of the handler after the VSP, written by $1C40."
  },
  {
   "address": 8578,
   "type": "line",
   "text": "Operand of LDX #$52 at $2181: the raster line of the handler after the VSP, written by $1C43."
  },
  {
   "address": 8599,
   "type": "line",
   "text": "Low byte of the JSR into the NOP slide at $2196, written by $216D from the coarse column ($0F/2 + $82): this sets the cycle of the VSP write."
  },
  {
   "address": 8600,
   "type": "line",
   "text": "High byte of the VSP slide JSR, written by $2174 ($B1)."
  },
  {
   "address": 8602,
   "type": "line",
   "text": "Operand of LDY #$1B at $2199: the second value written to $D011 by the VSP write. $1B shows the playfield (written by $114C); $5B adds extended colour to multicolour, an invalid mode that shows black (written by $1CCA and the land's $A5C5)."
  },
  {
   "address": 8615,
   "type": "line",
   "text": "Operand of LDX #$00 at $21A6: the stack pointer saved by $214C before the stabilising interrupt; $21A8 TXS restores it, dropping the interrupted frame of the NOP-slide wait."
  },
  {
   "address": 8618,
   "type": "line",
   "text": "Operand of LDA #$FF at $21A9: the $D018 value written each frame after the VSP: $1F (screen $4400) or $2F ($4800), set by $1C98 and flipped by $2667 to swap the screens."
  },
  {
   "address": 8623,
   "type": "line",
   "text": "Operand of LDA #$00 at $21AE: A saved by $213D."
  },
  {
   "address": 8625,
   "type": "line",
   "text": "Operand of LDX #$00 at $21B0: X saved by $2143."
  },
  {
   "address": 8627,
   "type": "line",
   "text": "Operand of LDY #$00 at $21B2: Y saved by $2140; the RTI follows."
  },
  {
   "address": 8629,
   "type": "line",
   "text": "An extra raster handler that $E2F0-$E341 splices into the play-time chain (it writes $B5/$21 through ($D4) into one band's next link, at line $62, $82, $A2 or $C2 from $F96F, and sets $1BB6 = 1): its own next link is the band it displaced (line and handler patched into $21B9/$21BB/$21BD from $F973-$F97E). When $1BB6 is set and $1B9C is not, it colours sprites 6 and 7 (the player) 6 and $0E unless $1BC2 and $E44B are both set, then shows effect sprite $1B73's frame ($1B6D,X) through sprite 5's pointer on both screens."
  },
  {
   "address": 8633,
   "type": "line",
   "text": "Operand of LDA #$72 at $21B8: the raster line of $21B5's next link, written by $E31E from $F973."
  },
  {
   "address": 8635,
   "type": "line",
   "text": "Operand of LDX #$10 at $21BA: low byte of $21B5's next handler, written by $E324 from $F977."
  },
  {
   "address": 8637,
   "type": "line",
   "text": "Operand of LDY #$22 at $21BC: high byte of $21B5's next handler, written by $E32A from $F97B."
  },
  {
   "address": 8686,
   "type": "line",
   "text": "Raster handler: next link $2210 at line $72. Stores X (1, left by $206B) in $1BA9 unless $1B7F is set, calls the band routine $C0xx whose low byte $29CA patches from the land's choice (as loaded $C0DB), and $BA08 while $1BC9 is 0."
  },
  {
   "address": 8707,
   "type": "line",
   "text": "Low byte of the JSR $C0xx in $21EE, written by $29CA from the land's choice at $90B0 (the table $29EC): which band routine this raster band runs."
  },
  {
   "address": 8720,
   "type": "line",
   "text": "Raster handler: next link $2222 at line $92; calls the band routine $C0xx whose low byte $29D4 patches (as loaded $C0DB)."
  },
  {
   "address": 8733,
   "type": "line",
   "text": "Low byte of the JSR $C0xx in $2210, written by $29D4."
  },
  {
   "address": 8738,
   "type": "line",
   "text": "Raster handler: next link $229C at line $B2; calls the band routine $C0xx whose low byte $29DE patches (as loaded $C0DB). Then reads the pause key unless $1BD1 is set or $208C is 8. With the stick centred and RUN/STOP down ($DC01 bit 7) it pauses: $1BC5 = 1, $1BD7 kept in $1BD8 and $208C in the operand at $2295, both zeroed, and $0D1B silences the SID. While paused, RUN/STOP released with the stick moved resumes: $1BC5 = 0 and $1BD7 and $208C restored. Ends through the scroll step at $2088."
  },
  {
   "address": 8751,
   "type": "line",
   "text": "Low byte of the JSR $C0xx in $2222, written by $29DE; the pause key test follows."
  },
  {
   "address": 8853,
   "type": "line",
   "text": "Operand of LDA #$FF at $2294: the scroll speed kept while paused, written by $2264 from $208C; the resume path loads it back into $208C."
  },
  {
   "address": 8860,
   "type": "line",
   "text": "Raster handler: next link $22BA at line $D2; stores $00 (X from $206B, 1, less one) in $1BA9, calls the band routine $C0xx whose low byte $29E8 patches (as loaded $C0DB), and $F07E while $1B3E is 0."
  },
  {
   "address": 8877,
   "type": "line",
   "text": "Low byte of the JSR $C0xx in $229C, written by $29E8."
  },
  {
   "address": 8890,
   "type": "line",
   "text": "Raster handler: next link $18C1 at line $EE; calls $BAC3 and $349C, then sets the low byte of $18D3's JSR into the NOP slide from the table at $3483, indexed by sprite 7's Y position when it is between $DA and $F1 (0 otherwise)."
  },
  {
   "address": 8937,
   "type": "line",
   "text": "Raster handler at line $FA: next link $20F8 at line 0. Unless the coarse column has just wrapped ($1B48) or the game is paused it runs $3A88; with $1C19 set and $1BC9 clear, $B62A unless $1B48 is set. Then, when $1BC3 is set, the playfield scrolls ($208C nonzero), the land asks for it ($9023) and $1C19 and $1BC9 are not both set, rotates two glyphs of the character set as one 16-pixel-wide strip (8 rows; $7FC8 and $7FD0 as loaded, the land picks them through $9024 and $BBC8-$BBE0) by $1BD7/2 bits a frame, or when that is 0 by one bit on the frames where $1B68 is 1, left or right against the scroll direction $1B3F, so their pattern drifts. When the rotation is skipped because $208C or $9023 is 0 or $1BC9 is set (not when $1BC3 is 0), it calls $EE11 if $903C and $1BEC are set. With $1C19 set: while $1BC9 is set (the walk-in at the level start) it re-raises the frame flag, moves the player's X ($1BE3) by $CF18 indexed by the step counter $1B81 (one step a frame down to $41, then two; on reaching $34 it clears $1B52, raises $1B54 and calls $33F4; when the count runs out it stays at 0 and $1B54 is cleared), and runs $EE9E and $147A itself; then, walk-in or not, in the happy land ($1BEC) with $903B set, looks at the map byte in front of the player (($8A) + $51/$52 by direction): glyphs $60-$61 while $1BB6 is 0 run $E2F0, glyphs $62-$63 while it is 1 run $E2D2."
  },
  {
   "address": 9015,
   "type": "line",
   "text": "Low byte of the LDA $7FD0,X at $2336 in the glyph rotation; $BBD7 rewrites the rotation's glyph addresses ($2337/$2338, $233E/$233F, $2350/$2351) from the land's glyph number $9024, so the land chooses which two glyphs drift."
  },
  {
   "address": 9016,
   "type": "line",
   "text": "High byte of the LDA $7FD0,X at $2336, written by $BBE0 with the rotated glyph's address."
  },
  {
   "address": 9019,
   "type": "line",
   "text": "Low byte of the ROR $7FC8,X at $233A (the first rotated glyph), written by $BBB9; $BBB9-$BBC8 write the first glyph's address into $233B/$233C, $234C/$234D and $2353/$2354."
  },
  {
   "address": 9020,
   "type": "line",
   "text": "High byte of the ROR $7FC8,X at $233A, written by $BBC2."
  },
  {
   "address": 9022,
   "type": "line",
   "text": "Low byte of the ROR $7FD0,X at $233D, written by $BBD1 together with $2337 and $2350 (the second glyph of the pair; the first, $7FC8, is in the operands at $233B, $234C, $2353)."
  },
  {
   "address": 9023,
   "type": "line",
   "text": "High byte of the ROR $7FD0,X at $233D, written by $BBDA; then the loop end and the leftward rotation."
  },
  {
   "address": 9036,
   "type": "line",
   "text": "Low byte of the LDA $7FC8,X at $234B (leftward rotation, first glyph), written by $BBBF."
  },
  {
   "address": 9037,
   "type": "line",
   "text": "High byte of the LDA $7FC8,X at $234B, written by $BBC8."
  },
  {
   "address": 9040,
   "type": "line",
   "text": "Low byte of the ROL $7FD0,X at $234F, written by $BBD4."
  },
  {
   "address": 9041,
   "type": "line",
   "text": "High byte of the ROL $7FD0,X at $234F, written by $BBDD."
  },
  {
   "address": 9043,
   "type": "line",
   "text": "Low byte of the ROL $7FC8,X at $2352, written by $BBBC."
  },
  {
   "address": 9044,
   "type": "line",
   "text": "High byte of the ROL $7FC8,X at $2352, written by $BBC5."
  },
  {
   "address": 9182,
   "type": "line",
   "text": "Low byte of a tile's address for each value of a tile number's low nibble: $09 + 16*n. With the high nibble + $80 as the high byte ($2610-$2618), tile t's 16 glyph numbers sit at $8009 + 16*t (Y adds 0-15)."
  },
  {
   "address": 9198,
   "type": "line",
   "text": "Advances the map by one character column at both screen edges (called each pass while $1B3C counts characters, from $1CE6 and $1F48): the right edge's column within the tile $1BCA steps 0-3; on passing a tile it advances the map column $1BD9, skipping marker columns (band 0 byte $F0 or more: $2A20 handles their tune change unless $1BC9 is set), handles repeat markers ($269F), runs $F121 and points the band pointers at the new column ($2631). The left edge ($1BCB, $1BDA, $26E4) follows the same way. Then works out where on the screens the new column goes ($39/$3E, $3B, from $1BDD, $1B40, $1B41, $1B44 and $0F); if the coarse column has wrapped ($1B48) it swaps the screens ($2667) and moves the colour RAM up a row and left a column (the VSP offset dropping by 40 + 1: columns 0-37 of rows 0-23 from columns 1-38 of rows 1-24, X = 0 to $25 in each loop); finally draws the new column ($27FF) and, after a wrap, recolours it ($2550)."
  },
  {
   "address": 9552,
   "type": "line",
   "text": "Rewrites the colour RAM for one screen column from the glyphs of the screen to be shown ($29A5) through the land's colour table $8900: four groups of six rows ($3D = 3 to 0), 24 rows in all. Sets $1B3E = 3 so the play loop skips its game work for this pass. When $1B42 is set it steps the six LDY operands ($2568 and on) by one and goes round again, so a neighbouring column is coloured too; then clears $1B42."
  },
  {
   "address": 9576,
   "type": "line",
   "text": "Operand of LDY #$00 at $2567: the column offset in the recolour loop, stepped with the five LDY operands below it ($2572, $257C, $2586, $2590, $259A, rows 1-5) by $25AD-$25D1."
  },
  {
   "address": 9586,
   "type": "line",
   "text": "Operand of LDY #$28 at $2571 in the recolour loop: row 1's offset, stepped with $2568 by $25B0/$25C5; the rest of the recolour rows and the column step follow."
  },
  {
   "address": 9596,
   "type": "line",
   "text": "Operand of LDY #$50 at $257B in the recolour loop: row 2's offset, stepped with $2568 by $25B3/$25C8."
  },
  {
   "address": 9606,
   "type": "line",
   "text": "Operand of LDY #$78 at $2585: row 3's offset in the recolour loop, stepped by $25B6/$25CB."
  },
  {
   "address": 9616,
   "type": "line",
   "text": "Operand of LDY #$A0 at $258F: row 4's offset, stepped by $25B9/$25CE."
  },
  {
   "address": 9626,
   "type": "line",
   "text": "Operand of LDY #$C8 at $2599: row 5's offset, stepped by $25BC/$25D1; then the six-row step and the second-column pass."
  },
  {
   "address": 9712,
   "type": "line",
   "text": "Points the six band pointers $C6/$C7 ... $D0/$D1 at the tiles of map column Y: for each band k = 0-5 reads the tile number from the band's row of the map ($8A00 + $100*k, through the pointer table at $CF9B, patched into the LDA at $2603) and turns it into the tile's address ($23DE for the low byte, $80 + the high nibble for the high byte). Then sets $3D and $40 to the tile column in the operand at $2621 (0 from $2631, 3 from $264C, or $1BCA/$1BCB, 0-3, from $31F2/$3251), $3F = $D8 (colour RAM), and returns A = the shown screen's page ($29A5)."
  },
  {
   "address": 9718,
   "type": "line",
   "text": "Operand of LDY #$74 at $25F5: the map column, stored by $25F0."
  },
  {
   "address": 9732,
   "type": "line",
   "text": "Operand of the LDA $8F00,Y at $2603: the band's map row, low byte, written from $CF9B."
  },
  {
   "address": 9733,
   "type": "line",
   "text": "High byte of the band's map row ($8A-$8F), written from $CF9C."
  },
  {
   "address": 9761,
   "type": "line",
   "text": "Operand of LDY #$00 at $2620: the tile column to start at, 0 for the right edge ($2633) and 3 for the left edge ($264E)."
  },
  {
   "address": 9762,
   "type": "line",
   "text": "The tail of $25F0 without re-reading the map: sets $3D/$40 to Y, $3F = $D8, and returns the shown screen's page ($29A5)."
  },
  {
   "address": 9770,
   "type": "line",
   "text": "Entry used by $F172 and $2622: returns the shown screen's page ($29A5 by $1B3A)."
  },
  {
   "address": 9777,
   "type": "line",
   "text": "The right edge entered a new tile: tile column 0, band pointers for map column $1BD9 ($25F0), then $2642."
  },
  {
   "address": 9779,
   "type": "line",
   "text": "Sets the right edge's band pointers for map column $1BD9 starting at tile column Y (stored in $2621); called also by $31F2 when the direction reverses."
  },
  {
   "address": 9791,
   "type": "line",
   "text": "The right edge stays in its tile: $2622 with Y = $1BCA, then $2642."
  },
  {
   "address": 9794,
   "type": "line",
   "text": "Common end of the right-edge set-up: $3A = the shown screen's page, $3C = the hidden one; $1BCA = Y."
  },
  {
   "address": 9804,
   "type": "line",
   "text": "The left edge's counterpart of $2631: tile column 3, map column $1BDA."
  },
  {
   "address": 9806,
   "type": "line",
   "text": "Sets the left edge's band pointers for map column $1BDA from tile column Y; called also by $3251."
  },
  {
   "address": 9818,
   "type": "line",
   "text": "The left edge stays in its tile: $2622 with Y = $1BCB; the pages go the other way round ($3C shown, $3A hidden) and Y is stored in $1BCB."
  },
  {
   "address": 9831,
   "type": "line",
   "text": "Swaps the shown and hidden screens: flips the $D018 value at $21AA ($1F/$2F, screen $4400/$4800) and $1B3A."
  },
  {
   "address": 9848,
   "type": "line",
   "text": "Clears $1B41, $1B43, $1B44 and $1B45 (X = 0). $267A is the same with X given."
  },
  {
   "address": 9850,
   "type": "line",
   "text": "Clears $1B41, $1B43, $1B44 and $1B45 with the value in X (called with X = 0 by $2981)."
  },
  {
   "address": 9863,
   "type": "line",
   "text": "The new screen column being drawn, 24 glyph numbers in six groups of four (one group per map band): rows 0-3, filled by $27FF from band 0's tile."
  },
  {
   "address": 9867,
   "type": "line",
   "text": "Rows 4-7 of the new column (band 1's tile)."
  },
  {
   "address": 9871,
   "type": "line",
   "text": "Rows 8-11 (band 2)."
  },
  {
   "address": 9875,
   "type": "line",
   "text": "Rows 12-15 (band 3)."
  },
  {
   "address": 9879,
   "type": "line",
   "text": "Rows 16-19 (band 4)."
  },
  {
   "address": 9883,
   "type": "line",
   "text": "Rows 20-23 (band 5)."
  },
  {
   "address": 9887,
   "type": "line",
   "text": "A map column code in A from band 0, at the right edge: codes below $D0 are ordinary tiles. $D0-$DF and $E0-$EF are repeat markers: the land's table at $9000 (pair n = code AND $0F) gives a count ($50) and a length ($51), and the edge's map column $1BD9 jumps back by the length until the count ($1BDB) runs out, so a stretch of map is drawn several times. $1B49 records which edge started the current repeat. Uses $27CC-$27F0."
  },
  {
   "address": 9956,
   "type": "line",
   "text": "The left edge's handling of repeat markers (map column $1BDA, counter $1BDC), the mirror of $269F, so both edges agree on where a repeat starts and ends."
  },
  {
   "address": 10020,
   "type": "line",
   "text": "Repeat markers met by the left edge while scrolling the other way ($2880): steps $1BDA forward by the length while the count $1BDC lasts."
  },
  {
   "address": 10087,
   "type": "line",
   "text": "Repeat markers met by the right edge while scrolling the other way ($289E), counter $1BDB."
  },
  {
   "address": 10149,
   "type": "line",
   "text": "Ends a repeat: the edge's counter ($1BDB,X) = $FF and $1B49 = 0."
  },
  {
   "address": 10160,
   "type": "line",
   "text": "$1BD9,X + 1 (X = 0 right edge, 1 left edge)."
  },
  {
   "address": 10164,
   "type": "line",
   "text": "$1BD9,X - 1."
  },
  {
   "address": 10168,
   "type": "line",
   "text": "$1BD9,X + the repeat length $51."
  },
  {
   "address": 10178,
   "type": "line",
   "text": "$1BD9,X - the repeat length $51."
  },
  {
   "address": 10188,
   "type": "line",
   "text": "A $D0-$DF marker starts a repeat: the edge's counter = 0 and $1B49 = 1."
  },
  {
   "address": 10199,
   "type": "line",
   "text": "An $E0-$EF marker starts a repeat: counter 0, $1B49 = $FF."
  },
  {
   "address": 10210,
   "type": "line",
   "text": "A = $1BDC - 1."
  },
  {
   "address": 10217,
   "type": "line",
   "text": "A = $1BDB - 1."
  },
  {
   "address": 10224,
   "type": "line",
   "text": "Repeat marker A: count to $50 and length to $51 from the land's pair table at $9000 + 2*(A AND $0F)."
  },
  {
   "address": 10239,
   "type": "line",
   "text": "Draws the new screen column: gathers its 24 glyphs from the six band tiles at the current tile column ($40 + $0C, then up a row of the tile at a time) into $2687-$269E, then writes them down the column on both screens ((39) and (3B)) and their colours from the land's table $8900 into colour RAM ((3E)), 24 rows."
  },
  {
   "address": 10328,
   "type": "line",
   "text": "Moves the map one character column the other way (called from the play loop at $1F37 when the scroll direction $1B3F is 1): the left edge's tile column $1BCB counts down, on leaving a tile $1BDA goes back past marker columns (a band-0 code of $F0 or more twelve columns on runs $2A1B), repeat markers ($2724) and the band pointers ($264C); the right edge likewise ($1BCA, $1BD9, $2767, $F13E). Then the screen addresses, and on a coarse wrap ($1B48) the screen swap and the colour RAM moved down a row in the same columns (+40: rows 0-13 into 1-14 for columns 0-38, rows 15-23 into 16-24 for columns 1-38; row 14 goes to row 15 through $BFCF, columns 1-38 only: column 0 of row 14 is saved and not put back), the shift state cleared, the column drawn ($27FF) and recoloured ($2550 with Y = 0, rows 0-23, then column 0 of row 24, where its pointers end)."
  },
  {
   "address": 10661,
   "type": "line",
   "text": "The page of the screen shown (from the next frame) for each value of $1B3A: entry 0 $48, entry 1 $44; read by $255A and $262D, and by $13DB, which flips it (EOR $0C) to reach the hidden screen."
  },
  {
   "address": 10663,
   "type": "line",
   "text": "Raster band set chosen by a map object code A ($78-$7F), called by $E704 when the code is met moving left (from $E6EC, the play loop's path for $1B3F = 1): X = A - $79, then $29B0. Moving right, $E777 enters at $29AC instead, X = A - $78, so moving left picks the set one lower, the one before the marker."
  },
  {
   "address": 10668,
   "type": "line",
   "text": "Entry used by $E777 (moving right, $1B3F = 0): X = A - $78, then $29AF. (Entered from $29A7 only when A - $79 borrowed.)"
  },
  {
   "address": 10672,
   "type": "line",
   "text": "Applies band routine set X (unless it is the one in $1BCE already): four entries from the land's table at $90B0 + 4*X, each an index into $29EC, give the low bytes of the JSR $C0xx in the four raster bands ($2203, $221D, $222F, $22AD). Called at the level start ($1D8D) with the land's $9706."
  },
  {
   "address": 10732,
   "type": "line",
   "text": "Low bytes of the three band routines a land can choose: $C0DB, $C01C, $C07C."
  },
  {
   "address": 10735,
   "type": "line",
   "text": "Colour set chosen by a map object code A ($70-$77; called by $E70F when it is met moving left: X = A - $71; $29F4, called by $E782 moving right, gives X = A - $70): unless set X is already in $1BCF, copies three bytes from the land's $9095 + 3*X into $1B8B-$1B8D."
  },
  {
   "address": 10740,
   "type": "line",
   "text": "Entry used by $E782 (moving right): X = A - $70, the colour set choice one above the leftward one."
  },
  {
   "address": 10779,
   "type": "line",
   "text": "A tune marker column (band 0 code $F0 or more) met by the left edge while scrolling back ($2873): X = code - $F1 (code $F0 gives $0F), one less than $2A20 gives, so passing a marker backwards picks the tune before it. When X differs from $1BD0, records it and, in the happy land ($1BEC), asks for tune X ($1B97 = X, $1B98 = 1)."
  },
  {
   "address": 10784,
   "type": "line",
   "text": "A tune marker column met by the right edge ($240A): X = code - $F0, then as $2A1B."
  },
  {
   "address": 10810,
   "type": "line",
   "text": "Works out where the player is in the map from the Y position $1BE4 less the slope offset $1B4B. At $DA or more (below the map) it only counts $1B7D (fallen out) and leaves $1B4C at 1. Otherwise it clears $1B4C, takes the character row ($1BE4 - $32)/8 into $1BE6, the screen column into $1BE5 ($12 moving right, $11 moving left, plus the coarse column $0F; in a pass where the coarse column has just wrapped, $1B48, plus $27 when $0F is 0 or 0 otherwise, or $29 and $FF when on a slope, $1B74), and points $8A/$8B at that row and column of the shown screen ($1AEA/$1B03, plus $3481 for the screen). The tests that follow read the glyphs around the player at ($8A) + 0-3 (head), +$28/$50 (body) and +$78-$7A (under the feet)."
  },
  {
   "address": 10894,
   "type": "line",
   "text": "Operand of ADC #$12 at $2A8D: the player's column on the screen, $12 moving right or $11 moving left, written by $2A89."
  },
  {
   "address": 10926,
   "type": "line",
   "text": "Glyph threshold for the floor tests ($2D43, $2D69, $2DC7, $2E39, ...): glyphs below it are solid. $2AAF stores the land's $9020 (walls and platforms: $39 in Jellyland) while the player walks or falls, and $9021 (walls only: $2F) while he rises or drops through a platform, so he jumps up through platforms and lands on them. Also written by $2ED0."
  },
  {
   "address": 10927,
   "type": "line",
   "text": "The player's movement for one pass (from the play loop, $1ED5, while $1BD1 and $1B7F are 0); once the player has fallen out ($1B7E) it goes straight to $315A. Picks the solid threshold ($2AAE) and sets the in-air flag $1B5B: 0 while the drop-through timer $1B61 runs (counted down here), else $1B59 when rising or $1B5A (falling). A pending knock-back ($1B9F = 1, written by $C715) first stops the run ($2C3E, $2B6E) while the scroll moves, then becomes a jump of strength $12 ($2EB5) against the direction of travel ($1BA0 = $FF moving right, 1 moving left; $1B9F = $FF meanwhile). Otherwise, unless $1BC6 is set, the walk and jump logic ($2B7F) and, with the land's $903C, the skid glyph test $EE74. Then $315A; a check of the glyph at the player's middle ($8A + $29) against the land's $9025-$9028 sets $1B4F ($E0 for $9025/$9026, 0 for $9027/$9028); $E253; and, in the happy land with $CF8B set and $1BC6 clear, a glyph $16-$17 under the player's feet ($8A + $79) ends the stage: $1BC6 is set, sounds $1E and $1F play and $BB69 runs."
  },
  {
   "address": 11116,
   "type": "line",
   "text": "Offsets $51 and $52 into the map rows from ($8A), by the scroll direction $1B3F: the glyph in front of the player, read by $23B8."
  },
  {
   "address": 11118,
   "type": "line",
   "text": "Slopes: unless $1B74 is negative, $2EF9 updates the slope state, and $3012 runs when $1B74 is then 0 (not on a slope); with $1B74 negative $3012 runs at once."
  },
  {
   "address": 11135,
   "type": "line",
   "text": "Walking against walls: sets $1B4C, works out the map pointer ($2A3A) unless the player has fallen out ($1B7D), updates slopes ($2B6E) and the vertical movement ($2CAB). Then, by the scroll speed and the stick (left $1BE0, right $1BE1, 0 = pressed) or the scroll direction, tests the three rows beside the player on the side he moves to (($8A) + 0/$28/$50, only the lower two, + $28/$50, when ducking or in the air; columns 0 or 3): a wall glyph (below the land's $9021) calls $2C26; when nothing blocks, the facing request $1B5E becomes $FF (left), 1 (right) or 0, or keeps the bounce direction $1BA0."
  },
  {
   "address": 11302,
   "type": "line",
   "text": "The player meets a wall: at full speed ($1B51 = $5D), not on a slope ($1B74 = 0) and with no dust puff running ($1B55 = 0), $F043 runs with A = 3 (a bump); in every case it then goes on into $2C3E."
  },
  {
   "address": 11326,
   "type": "line",
   "text": "Stops the player's run: unless he is on a slope outside a bounce (then returns A = $1B74), clears the speed $1B51 and the facing request $1B5E, lets the scroll finish its character ($1BD7 = 1, with $1B4E evened down, unless the fine scroll $10 is already at the edge, 0 or 7 by direction, when $1BD7 = 0), plays sound 6 and runs $33C9 when $1B52 was not 0, and clears $1BCC, $1B54 and $1B47; a finished bounce ($1B9F and $1BA0 both set) is cleared. Returns A = 0."
  },
  {
   "address": 11433,
   "type": "line",
   "text": "Frames the player drops through a platform after down and fire, by $1BB6: 8 or $10 ($2D1D into $1B61)."
  },
  {
   "address": 11435,
   "type": "line",
   "text": "Jumping, falling and ducking. $1B5F stays 1 while up has been held since the last jump in the air, so a new jump needs up released. Rising ($1B59) goes to $2D85, falling ($1B5A) to $2E1A. On the ground: up starts a jump (from a slope the slope offset is folded into the Y position first, doubled when $1BB6 is set) through $2D62; down sets the duck flag $1B62, and down with fire (above line $BD) the drop-through timer $1B61. With no floor under the feet (both glyphs at $8A + $79/$7A at or above the threshold) he starts falling ($1B5A = 1, $1B5D = 0); with a floor his Y snaps to the row ($2D56)."
  },
  {
   "address": 11606,
   "type": "line",
   "text": "Puts the player's Y on his character row: $1BE4 = $CB7A + $1BE6 ($35 + 8 per row); then clears a finished bounce ($2C96)."
  },
  {
   "address": 11618,
   "type": "line",
   "text": "Starts a jump if there is headroom: with a solid glyph above the head ($8A + 1/2) it snaps to the row and plays sound $0D instead; otherwise sets the rising flag $1B59, the jump index $1B5D = $17, and plays the jump sound ($BFCD by $1BB6)."
  },
  {
   "address": 11653,
   "type": "line",
   "text": "One frame of rising: releasing up early ($1BDE not 0) cuts the jump index $1B5D down to 6 (variable jump height; $1B60 marks it, $1B94 skips the test). When the index runs out the player starts falling ($1B5A = 1). Otherwise a solid glyph above the head ($2DF5) stops the jump: falling starts and, unless $1B52 is set, $1BBB = 10 and $1BE4 drops by 3. Else the index counts down (with $1BB6 set only while $1B68 and $1B66 are both nonzero, a floatier jump) and Y rises by the speed $33B3 gives for the index, but not above line $34."
  },
  {
   "address": 11802,
   "type": "line",
   "text": "One frame of falling: the index $1B5D counts up to $1F and Y grows by the speed $33A1 gives. With a solid glyph under a foot ($8A + $79, else $7A) and the three rows above that glyph clear, the player lands; moving left, a solid glyph in the next column as well ($8A + $7A or $7B) lands him without the test of the rows above: after a long fall ($1B5D $1B or more) $F043 runs with A = 2, falling and in-air flags clear, Y snaps to the row and sound $0D plays. Below the map ($1B4C set) a Y of $F4 or more (less the slope offset) is a fall into a pit: $1B7E counts it, and $1B80 = $28 frames before the play loop ends the life ($1BBA is raised too when, in a sad land with $36F3 set, glyph $4C or $4E is found at $8A + $50-$52)."
  },
  {
   "address": 11957,
   "type": "line",
   "text": "Starts a forced jump of strength A ($1B5D) with X kept in the operand at $2ED7: rising and in-air flags set, falling and slope offset cleared, the threshold set to walls only ($9021), then one frame of rising ($2D85). Returns X. Called by $2AE7 (A = $12, the knock-back), $311C (A = 6, off the top of a slope), $B59A (A = $0D) and $C6FE (A = $20)."
  },
  {
   "address": 11991,
   "type": "line",
   "text": "Operand of LDX #$FF at $2ED6: the X saved by $2EB5."
  },
  {
   "address": 11993,
   "type": "line",
   "text": "Slope offsets in pixels for fine scroll 0-7: 4 4 3 3 2 2 1 1 (slope glyph 0, $9081; moving right, $2F35-$2F3A also use it for slope glyph 2, $9083)."
  },
  {
   "address": 12001,
   "type": "line",
   "text": "Slope offsets for fine scroll 0-7: 8 8 7 7 6 6 5 5 (slope glyphs 1 and 3, $9082 and $9084)."
  },
  {
   "address": 12009,
   "type": "line",
   "text": "Slope offsets, all 0: slope glyph 2 ($9083) when the slope is met moving left ($2FAD); moving right, $2F35 uses $2ED9 for that glyph instead."
  },
  {
   "address": 12017,
   "type": "line",
   "text": "High bytes of the slope offset table for slope glyphs 0-3 (all $2E)."
  },
  {
   "address": 12021,
   "type": "line",
   "text": "Low bytes of the slope offset tables: $D9, $E1, $E9, $E1."
  },
  {
   "address": 12025,
   "type": "line",
   "text": "On a slope: while the player moves (falling, or the scroll speed $208C not 0), looks at the glyphs beside his feet (($8A) + $52/$53, $78-$7C, by direction) for the land's slope glyphs $9081-$9084, steps him a row up ($311F) or down ($3137) where the land's $9085-$9087 mark a slope's end, and sets the slope offset $1B4B from the table of the slope glyph that matched (one of four, $2EF1/$2EF5), indexed by the fine scroll $10 (the LDA at $2F4A/$2FBB is patched with the table's address). $1B74 = 1 while a slope glyph is found, 0 otherwise (clearing $1B4B)."
  },
  {
   "address": 12107,
   "type": "line",
   "text": "Low byte of LDA $FFFF,X at $2F4A: the slope table, patched by $2F45 from $2EF5."
  },
  {
   "address": 12108,
   "type": "line",
   "text": "High byte of that LDA, patched by $2F3F from $2EF1."
  },
  {
   "address": 12220,
   "type": "line",
   "text": "Low byte of LDA $FFFF,X at $2FBB, patched by $2FB6."
  },
  {
   "address": 12221,
   "type": "line",
   "text": "High byte, patched by $2FB0."
  },
  {
   "address": 12274,
   "type": "line",
   "text": "Slope heights in pixels for fine scroll 0-7, 1 1 2 2 3 3 4 4 ($2FF2-$2FF9): the table of the first slope character $9088, read by $3012 through the LDA $FFFF,X at $3063/$30D4, whose operand $300A/$300E point here. $2FFA (5) begins the next table."
  },
  {
   "address": 12283,
   "type": "line",
   "text": "Bytes 1-5 of the slope height table $2FFA (5 5 6 6 7 7 8 8 for fine scroll 0-7, $2FFA-$3001; slope characters $9089 and $908B), read through $3063/$30D4. The same bytes from $2FFB (5 6 6 7 7, then 8 8 at $3000) are also read by $C79C as $2FFB+Y, Y being the operand of the LDY at $C79A, and written into $1325 before sound 3 plays: the pitch steps up as Y grows."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "The end of the slope height table $2FFA (8, 8), then $3002-$3009, eight zeros: the height table of slope character $908A when $3012 meets it in direction 0 ($30C6). $C79C's table for sound 3's effect ($2FFB+Y into $1325) runs into these bytes for Y of 5 or more; the range of Y is not established."
  },
  {
   "address": 12298,
   "type": "line",
   "text": "High bytes ($2F, $2F, $30, $2F) of the four slope height tables, one per slope character $9088-$908B matched by $3012: $3058 and $30C9 store them into the high byte of the LDA $FFFF,X at $3063/$30D4 ($3065, $30D6). With the low bytes at $300E the tables are $2FF2, $2FFA, $3002 and $2FFA, indexed by the fine scroll ($10)."
  },
  {
   "address": 12302,
   "type": "line",
   "text": "Low bytes ($F2, $FA, $02, $FA) of the four slope height tables whose high bytes are at $300A; $305E and $30CF store them into $3064 and $30D5."
  },
  {
   "address": 12306,
   "type": "line",
   "text": "Works out the height adjustment $1B4B for the ground under the player, from the characters around the player's screen position ($8A/$8B) and the land's character codes at $9088-$908E. Returns at once when $1B5A and the scroll speed ($208C) are both 0. With $1B74 = 0 it only tests whether the player stands on one of the four slope characters $9088-$908B ($30DB: $1B74 = $FF if so, 0 if not). With $1B74 set, it follows the slope: in direction $1B3F = 1 it steps the position up a row ($311F) while the character at offset $50 is $908C, goes to $310B on $908D, and otherwise looks the character up in $9088-$908B (taking $908A as $9088) and loads $1B4B from that slope's height table ($2FF2, $2FFA or $3002, addressed through $300A/$300E) at the fine scroll ($10); in direction 0 it reads offsets $76, $79, $4F and $7A and steps down a row ($3137) instead. Called from $2B7B."
  },
  {
   "address": 12388,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,X at $3063, the slope's height table, set from $300E by $305E."
  },
  {
   "address": 12389,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $3063, set from $300A by $3058."
  },
  {
   "address": 12501,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,X at $30D4, the slope's height table, set from $300E by $30CF."
  },
  {
   "address": 12502,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $30D4, set from $300A by $30C9."
  },
  {
   "address": 12555,
   "type": "line",
   "text": "The player has run off the top of a slope (character $908D): steps the position up a row ($311F), clears $1B74 and $1B4B ($3102), and when $1B51 is $50 or more calls $2EB5 with A = 6."
  },
  {
   "address": 12575,
   "type": "line",
   "text": "Moves the player's screen position one character row up: $1BE4 (the player's Y in pixels) less 8, the row counter $1BE6 less 1, and the screen pointer $8A/$8B less 40."
  },
  {
   "address": 12599,
   "type": "line",
   "text": "Moves the player's screen position one character row down: $1BE4 plus 8, $1BE6 plus 1, the screen pointer $8A/$8B plus 40."
  },
  {
   "address": 12623,
   "type": "line",
   "text": "Clears the duck flag $1B62 and jumps to $EF86 with X = the scroll direction $1B3F."
  },
  {
   "address": 12634,
   "type": "line",
   "text": "The player's horizontal movement for one pass, from the decoded stick and the facing $1B5E. While $1B46 or $1B47 counts, or $1B7E is set, it only keeps the speed going ($32DE, $326C). Down ($1B62) sets $1B63; when nothing solid is at the top row of the player's position (the glyphs at offsets 0-3 of $8A all $9021 or higher), it also sets, with speed ($208C), $1B54 and runs $3388. When the facing differs from the scroll direction $1B3F it turns round: at the edge of a character (fine scroll 7 going right, 0 going left) it calls $E668/$E630 and $2633/$264E, moves the column wrap counter $1BDD, sets $1B41 and $1B3F to the new direction, and starts the six-pass turn counter $1B46. Otherwise it accelerates or brakes through the speed counter $1B51 (0 to $5D), the charge flags $1B52-$1B54 and the fire bit ($1BE2, when $1BEB allows it), and ends with the scroll speed in $1BD7 from the speed table ($3392). Called from $2B1B."
  },
  {
   "address": 12790,
   "type": "line",
   "text": "Operand of the LDX #$FF at $31F5: X (0) kept across the turn-round calls by $31E9."
  },
  {
   "address": 12885,
   "type": "line",
   "text": "Operand of the LDX #$FF at $3254: X (1) kept across the turn-round calls by $3248."
  },
  {
   "address": 13147,
   "type": "line",
   "text": "Operand of the LDA #$FF at $335A: the charge flag $1B54 as it was before $32FF cleared it, stored by $32FC."
  },
  {
   "address": 13179,
   "type": "line",
   "text": "Copies the charge flag $1B52 into $1B54 when $1B54 is clear; if that made it set, falls into $3388."
  },
  {
   "address": 13192,
   "type": "line",
   "text": "Unless $1B58 is set, calls $33F4 with A = 0 (effect sprite and sound)."
  },
  {
   "address": 13202,
   "type": "line",
   "text": "Returns in X the scroll speed for the speed counter Y ($1B51): the byte at $CF19+Y, halved (at least 1) when $1BB6 is set."
  },
  {
   "address": 13217,
   "type": "line",
   "text": "A plus the step from the table $3460 at X (halved when $1BB6 is set; the step is patched into the ADC at $33B0). Called from $2E28."
  },
  {
   "address": 13233,
   "type": "line",
   "text": "Operand of the ADC at $33B0: the step $33A1 adds, from $3460 (halved when $1BB6 is set)."
  },
  {
   "address": 13235,
   "type": "line",
   "text": "A less the step from the table $3460 at X (halved when $1BB6 is set) and less the slope height $1B4B. Called from $2DE4."
  },
  {
   "address": 13251,
   "type": "line",
   "text": "Operand of the SBC at $33C2: the step $33B3 subtracts, from $3460 (halved when $1BB6 is set)."
  },
  {
   "address": 13257,
   "type": "line",
   "text": "Stores A (0 from the callers seen) into $1B4E, $1B50, $1B52 and $1B53; when $1B56 is 0 also clears $1B55 and $1B58. If $1B9C is clear and $1B55 was set, falls into $33EB."
  },
  {
   "address": 13291,
   "type": "line",
   "text": "Sets both frames of the effect sprite (sprite 4, alternated by $B293 from $1B6D/$1B6E) to block $0F, the blank sprite."
  },
  {
   "address": 13300,
   "type": "line",
   "text": "Saves A; unless the $1B9C state runs, starts the effect sprite (sprite 4, drawn by $B293 from $1B69-$1B6E): $1B71 from $1474+$1BB6, $1B6B/$1B6C cleared ($BB9D, result 0 into $1B72), both frames blank ($33EB), $1B73 = 1. Then, when the saved A is 0 and $1B5B is clear, falls into $341E (sound $BFCB). Called from $2397, $3360, $338F, $BB76, $E2FF and others."
  },
  {
   "address": 13319,
   "type": "line",
   "text": "Operand of the LDX #$FF at $3406: X kept across $33F4 (stored at $33FA)."
  },
  {
   "address": 13342,
   "type": "line",
   "text": "Plays sound effect number $BFCB+$1BB6 through $134F, keeping X (patched into the LDX at $342B)."
  },
  {
   "address": 13356,
   "type": "line",
   "text": "Operand of the LDX #$FF at $342B: X kept across $341E (stored at $341E)."
  },
  {
   "address": 13358,
   "type": "line",
   "text": "32 bytes, 1 rising to 3 (twenty-four 1s, five 2s, three 3s); read at $B592 indexed by a counter."
  },
  {
   "address": 13390,
   "type": "line",
   "text": "The vertical steps of the player's death leap ($BD5A), read as $344E + $1BC8: -4 ($FC) rising to 0; the index runs on into $3460 (steps up to 8) and stops at the first 8, so he rises, slows and falls ever faster."
  },
  {
   "address": 13408,
   "type": "line",
   "text": "Movement steps 0,1,0,1,1,2,1,2... up to 8, read by $33A1 and $33B3 indexed by X."
  },
  {
   "address": 13441,
   "type": "line",
   "text": "Two bytes, $04 and $00, read at $2AA8."
  },
  {
   "address": 13443,
   "type": "line",
   "text": "25 low bytes of entry points into the NOP slide at $B100+ ($7B-$84): $22E0 picks one by sprite 7's Y position (when it is $DA-$F1) and patches it into the JSR at $18D3, presumably to make up for the cycles the player's sprites take on the panel's lines."
  },
  {
   "address": 13468,
   "type": "line",
   "text": "Sets up sprites 0-5 for the score panel on line $E5: X positions from $EFB8, pointers from $EFBE written to both screens' sprite pointer tables ($47F8 and $4BF8), colours from $EFC4; enables all eight sprites, X high bit for sprite 5, X expansion of sprites 3 and 4 (keeping 6 and 7), no Y expansion, multicolour only for sprite 7, priority over the background for sprites 0-5. Called from the raster handler $22BA ($22C9) and from $F409."
  },
  {
   "address": 13543,
   "type": "line",
   "text": "The 16 score events' amounts, added by $350B to the digit $34F7 names: 1, 5, 2, 1, 5, 1, 2, 3, 4, 5, 1, 2, 5, 8, 1, 1."
  },
  {
   "address": 13559,
   "type": "line",
   "text": "The 16 score events' digit positions in the score $CF78-$CF80 (0 is the most significant of nine): 8, 6, 6, 6, 7, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 2. With $34E7 the events are worth 1, 500, 200, 100, 50, 1000-5000, 10000, 20000, 50000, 80000, 100000 and 1000000 points."
  },
  {
   "address": 13575,
   "type": "line",
   "text": "Nonzero when the score has changed since it was last drawn: $350B stores the digit position in it, $356D clears it and redraws."
  },
  {
   "address": 13576,
   "type": "line",
   "text": "Adds score event number $F50D+X (Y) to the score; falls into $350B. Called from $C828."
  },
  {
   "address": 13579,
   "type": "line",
   "text": "Adds score event Y to the nine-digit decimal score $CF78-$CF80: amount $34E7+Y at digit $34F7+Y, carrying upward. Before the first change since the last redraw ($1B7A clear) it copies the score to $CF8C-$CF94 for $3578 to compare. Repeats $1B78 times (the bonus multiplier, when set). An extra life ($3636) comes from adding at the millions digit ($3530) or from the carry loop rolling the hundred-thousands digit over from 9 ($355A); a 100,000-point event (14) that itself takes that digit from 9 to 0 carries into the millions at $354B without reaching either test, so that million gives no life. Sets $3507 so the play loop redraws."
  },
  {
   "address": 13671,
   "type": "line",
   "text": "Operand of the LDX #$FF at $3566: how many more times $350B adds the event, the multiplier $1B78 less one (stored at $3527)."
  },
  {
   "address": 13675,
   "type": "line",
   "text": "Operand of the LDX #$FF at $356A: X kept across $350B (stored at $350B)."
  },
  {
   "address": 13677,
   "type": "line",
   "text": "When $3507 is set, clears it and redraws the score ($3578). Called from the play loop at $204E."
  },
  {
   "address": 13688,
   "type": "line",
   "text": "Redraws each score digit $CF78-$CF80 that differs from its copy at $CF8C-$CF94, through $389F into the score sprites (offsets $2D-$2F, $6D-$6F, $AD-$AF of page $40: sprites 0-2), then clears $1B7A."
  },
  {
   "address": 13811,
   "type": "line",
   "text": "Item effect 1 (the jump table at $F994/$F99D, entered from $BC52): raises the bonus multiplier $1B78 to 2 from none, otherwise by one, to at most 5; restarts its timer $1B79 = $C8, sets $1BBC/$1BBD = $1E and draws it ($360C)."
  },
  {
   "address": 13836,
   "type": "line",
   "text": "Stores Y in the multiplier $1B78, draws digit Y at offset $8D of page $41 (a panel sprite, $38A1) and sets that sprite's colour $EFC0 to 6."
  },
  {
   "address": 13852,
   "type": "line",
   "text": "Lowers the bonus multiplier $1B78 by one: while it stays 2 or more, restarts its $C8-pass timer $1B79 and redraws it; at 1 or less clears it and sets the sprite colour $EFC0 to $0F. Called from the play loop at $202D when the timer $1B79 runs out."
  },
  {
   "address": 13878,
   "type": "line",
   "text": "One more life: plays sound $0F ($1352), adds a life ($3866), keeps X and Y (patched into the loads at $3644/$3646), and sets $1BC1 = $1E."
  },
  {
   "address": 13893,
   "type": "line",
   "text": "Operand of the LDY #$FF at $3644: Y kept across $3636."
  },
  {
   "address": 13895,
   "type": "line",
   "text": "Operand of the LDX #$FF at $3646: X kept across $3636."
  },
  {
   "address": 13896,
   "type": "line",
   "text": "Stores $1E in $1BC1. Jumped to from $10D8 and $BB8F."
  },
  {
   "address": 13902,
   "type": "line",
   "text": "Nonzero when the MAGIC counter $CF83-$CF85 has changed since it was drawn; set by $364F and $370F, cleared by $3757."
  },
  {
   "address": 13903,
   "type": "line",
   "text": "Adds one to the three-digit counter $CF83-$CF85, unless $1B64 is set. When $E5BE already equals the land's $9050, or the counter already equals the land's $9041-$9043 ($10ED), it plays sound $16 and adds nothing; otherwise it counts $E5BE up, plays sound $15 and adds. Before the first change since the last redraw ($1B7B clear) copies the counter ($36C3). In the happy land ($1BEC) with $CF8B set, reaching the land's $904D-$904F clears $CF8B and sets $18E4 = 1. Jumped to from $B581."
  },
  {
   "address": 14019,
   "type": "line",
   "text": "Copies the counter $CF83-$CF85 to $CF95-$CF97 for $3762 to compare, and sets $1B7B."
  },
  {
   "address": 14034,
   "type": "line",
   "text": "Item effect 2 (the jump table at $F994/$F99D): sets $1BBF = $1E and takes ten off the counter $CF83-$CF85 (a counter under 10 is first raised to 10, so it stops at 000) through $36EF with the tens digit, unless the quota flag $36F3 is already set; the raise to 10 happens before that test, so with $36F3 set a counter under 10 is left at 010, and $364E is not set for a redraw."
  },
  {
   "address": 14061,
   "type": "line",
   "text": "Takes one off the counter $CF83-$CF85 (the digit is patched into $3710) unless the quota-met flag $36F3 is set (the LDA #$FF at $36F2; written by $B7AE and $E566). When the counter reaches 000 it sets $36F3. Called from $3913 when a star is collected, and entry 5 of the item-effect table $F994/$F99D."
  },
  {
   "address": 14067,
   "type": "line",
   "text": "Operand of the LDA #$FF at $36F2, the star-quota flag: 0 while stars still count down the counter, nonzero once it has reached 000 ($3703). Cleared by $B7AE when the land changes state and set by $E566; read by $2E90, $3AC4, $BC34 and $F0D9."
  },
  {
   "address": 14087,
   "type": "line",
   "text": "Not referenced by any absolute address found: copies the counter for the redraw ($36C3) when $1B7B is clear, then falls into $370F to take one off it."
  },
  {
   "address": 14095,
   "type": "line",
   "text": "Takes one off the three-digit counter $CF83-$CF85 at the digit given by the operand of its LDX ($3710, written by $36EF: 2 for one, 1 for ten), borrowing, and sets $364E. In the happy land with $CF8B clear, when the counter is at or below the land's $904A-$904C it sets $CF8B. Called from $36F6 and $BEFC."
  },
  {
   "address": 14096,
   "type": "line",
   "text": "Operand of the LDX #$02 at $370F: the digit of $CF83-$CF85 that $370F takes one from, 2 (units) normally, 1 (tens) from $36D2."
  },
  {
   "address": 14167,
   "type": "line",
   "text": "When $364E is set, clears it and redraws the counter ($3762). Called from the play loop at $2048."
  },
  {
   "address": 14178,
   "type": "line",
   "text": "Redraws each digit of $CF83-$CF85 that differs from $CF95-$CF97, at offsets $2D-$2F of page $41 (a panel sprite), and clears $1B7B."
  },
  {
   "address": 14229,
   "type": "line",
   "text": "Nonzero when the time $CF86-$CF88 has changed since it was drawn; set by $37F8, cleared by $3796."
  },
  {
   "address": 14230,
   "type": "line",
   "text": "When $3795 is set, clears it and redraws the time ($37A1). Called from the play loop at $203D."
  },
  {
   "address": 14241,
   "type": "line",
   "text": "Redraws each digit of the time $CF86-$CF88 that differs from $CF98-$CF9A, at offsets $6D-$6F of page $41, and clears $1B7C."
  },
  {
   "address": 14292,
   "type": "line",
   "text": "Copies the time $CF86-$CF88 to $CF98-$CF9A for $37A1 to compare, and sets $1B7C."
  },
  {
   "address": 14307,
   "type": "line",
   "text": "The time 0 6 0, at which $37F8 sets $1BB8 and plays sound $17."
  },
  {
   "address": 14310,
   "type": "line",
   "text": "The time 0 3 0, the second point at which $37F8 sets $1BB8 and plays sound $17."
  },
  {
   "address": 14313,
   "type": "line",
   "text": "The clock: unless $1BB9 (time up) is set, counts $1BEA down and every $4B passes falls into $37F8. Called from the play loop at $201B."
  },
  {
   "address": 14328,
   "type": "line",
   "text": "Takes one off the three-digit time $CF86-$CF88, unless $1BAA is counting (then only $1BAA goes down: the wiki's extra-time POKE at $37FD). At 000 sets $1BB9 and jumps to $B5E9 (time up). At 060 and 030 increments $1BB8 and plays sound $17. Sets $3795 for the redraw."
  },
  {
   "address": 14438,
   "type": "line",
   "text": "Adds one to the two-digit lives counter $CF81-$CF82 and sets $3887 for the redraw; then falls into $387D."
  },
  {
   "address": 14461,
   "type": "line",
   "text": "Clears $1BB7 (the touch counter the wiki's invincibility POKE at $B61D hits) and sets $18EE = 1. Jumped to from $10D5 and $BB92."
  },
  {
   "address": 14471,
   "type": "line",
   "text": "Nonzero when the lives counter has changed since it was drawn; set by $3866 and at $BDC3, cleared by $3888."
  },
  {
   "address": 14472,
   "type": "line",
   "text": "When $3887 is set, clears it and draws the lives ($3892). Called from the play loop at $203A."
  },
  {
   "address": 14482,
   "type": "line",
   "text": "Draws the two lives digits $CF81 and $CF82 at offsets $EE and $EF of page $40 (sprite 3)."
  },
  {
   "address": 14495,
   "type": "line",
   "text": "Draws digit Y (0-9) into sprite memory page $40 at offset X ($38A1 with A = $40)."
  },
  {
   "address": 14497,
   "type": "line",
   "text": "Draws digit Y (0-9) into the panel's sprites: copies the digit's six bytes, from the address at $E372+Y (low) and $E382+Y (high), to page A at offset X and the five sprite rows below it (X+3 to X+15, every third byte). X and A are patched into the STA at $38BA."
  },
  {
   "address": 14520,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,X at $38B7: the digit's glyph, from $E372+digit."
  },
  {
   "address": 14521,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $38B7, from $E382+digit."
  },
  {
   "address": 14523,
   "type": "line",
   "text": "Operand (low byte) of the STA $FFFF,Y at $38BA: where in sprite memory the digit goes (X on entry to $38A1)."
  },
  {
   "address": 14524,
   "type": "line",
   "text": "Operand (high byte) of the STA at $38BA: the sprite memory page, $40 or $41 (A on entry to $38A1)."
  },
  {
   "address": 14532,
   "type": "line",
   "text": "In the happy land only ($1BEC): looks at four cells at the player, offsets $2A, $52, $29 and $51 from the screen position $8A (two columns, two rows), for a star, characters $FB-$FE. On a hit: keeps the offset in $EE0F, removes the star from both screens ($390B), from the map ($39A2), sets $0DFE to $A5 (or $05 when $CF8B is set) and scores event $EE10 ($350B) unless it is 5. Carry clear when nothing was found. Called from $1F6C. Its first opcode is rewritten by $B7CF from $B7D5+$1BEC: $A0 (LDY, the routine runs) in the happy land, $60 (RTS) in the sad one."
  },
  {
   "address": 14603,
   "type": "line",
   "text": "Removes a collected star: sound 7, one off the star counter ($36ED), then works out from the character it hit ($FB-$FE, a quarter of the 2x2 star, $3A82) where the star's top-left is, and writes the blank character $FF over its four cells in this screen ($8A) and the same cells in the other screen ($7E/$7F: the high byte EOR $0C swaps $44xx and $48xx) where they still hold star characters ($3A63). Leaves the star's top-left offset in $EE0F."
  },
  {
   "address": 14658,
   "type": "line",
   "text": "Operand of the ADC #$29 at $3941: the offset from the player's screen position to the star's cell in the other screen when it lies ahead ($27-$2A, set by $393B)."
  },
  {
   "address": 14677,
   "type": "line",
   "text": "Operand of the SBC #$29 at $3954: the same offset when the star lies behind ($28-$2A, set by $394E)."
  },
  {
   "address": 14692,
   "type": "line",
   "text": "Operand of the LDY #$FF at $3963: the star character that was hit ($FB-$FE), kept by $390B for $3A82."
  },
  {
   "address": 14754,
   "type": "line",
   "text": "Takes the collected star out of the level map: from the screen offset $8A + $EE0F picks the map page, $8A00-$8F00, one page for each band of four character rows (offsets $000-$09F, $0A0-$13F, $140-$1DF, $1E0-$27F, $280-$31F, $320-$3BF), finds the map byte at the player's column ($3A29) and, when it is one of the land's three star blocks $9037-$9039, decrements it (the block without the star)."
  },
  {
   "address": 14889,
   "type": "line",
   "text": "Returns in X the index of the map byte for the player's column: starts at $1BDA and steps past five column entries (four when moving left, $1B3F = 1, with $1BCB clear), skipping bytes $D0 and above (which are not column entries), then any further $D0+ bytes."
  },
  {
   "address": 14933,
   "type": "line",
   "text": "Compares A with the land's three star block numbers $9037, $9038 and $9039; Z set on a match."
  },
  {
   "address": 14947,
   "type": "line",
   "text": "Writes the blank character $FF into two neighbouring cells (Y, Y+1) of the screen at $8A, and into the same cells of the other screen at $7E where they hold $FB or more. Returns A = Y+1."
  },
  {
   "address": 14978,
   "type": "line",
   "text": "X = Y - $FB: which quarter of the 2x2 star (0-3) the character Y is."
  },
  {
   "address": 14984,
   "type": "line",
   "text": "Animates characters in the land's character set each pass. In the happy land: when $1BD9 lies from the operand at $3A91 up to below the one at $3A95 (written by $E555/$E55B; $EE and $F9 in play) it rotates the bytes of characters $16-$17 ($78B0-$78BF) one step, when $1B68 and $CF8B are set; otherwise it runs the star animation ($3AEE). In the sad land: once the quota flag $36F3 and $1B68 are set, rotates characters $4C-$4D ($7A60-$7A6F) one step. Called from $22FF."
  },
  {
   "address": 14993,
   "type": "line",
   "text": "Operand of the CMP #$FF at $3A90, written by $E555: with the one at $3A95 it decides whether $1BD9 lets $3A88 skip the star animation; with both $FF it never does."
  },
  {
   "address": 14997,
   "type": "line",
   "text": "Operand of the CMP #$FF at $3A94, written by $E55B; see $3A91."
  },
  {
   "address": 15086,
   "type": "line",
   "text": "Every $EE10+1 passes ($1B75 counts) shows the next of 20 frames of the spinning star ($1B76 counts down): copies 32 bytes from the frame's address (low bytes $B47E, high $B492) to characters $FB-$FE, $7FD8-$7FF7. Only in the happy land: $3A88 comes here from its happy branch, $3AF3 tests $1BEC again, and $B7C9 writes this instruction's opcode from $B7D3 ($CE, DEC, when happy; $60, RTS, when sad). After each full turn the speed steps on: $1B77 counts down 26 entries of $EDF5 into $EE10, which is also the score event a star collected now gives ($38C4)."
  },
  {
   "address": 15145,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,X at $3B28: the star frame being copied, from $B47E."
  },
  {
   "address": 15146,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $3B28, from $B492."
  },
  {
   "address": 15154,
   "type": "line",
   "text": "Jumps to $E2D2 when $1BB6 is set."
  },
  {
   "address": 15163,
   "type": "line",
   "text": "High bytes of the stage card's tune for $080C, by the sad/happy flag $1BEC: $FC (the tune at $FC56) and $FD ($FDB6)."
  },
  {
   "address": 15165,
   "type": "line",
   "text": "Low bytes of the stage card's tune: $56 (sad) and $B6 (happy)."
  },
  {
   "address": 15167,
   "type": "line",
   "text": "Starts or restarts a stage, and is where every way out of play leads ($1EBC quit, $1FA1, $1FAA, $205D, $CE52). Resets the stack, takes A as the new sad/happy flag $1BEC (0 sad, 1 happy; the old one kept in $3D9E), blanks the screen and both screens' characters, exchanges $7800-$7FFF with $D800-$DFFF ($3F52, swap 0), keeps $1BC6 and $1BBA in the operands at $3BB5/$3BBC and $1B78/$1BB8 in $F322/$F386, and calls $1BF3. Unless $1BC6 is set it resets the time from the land's table ($BD37) and the panel copies $CF8C-$CF9A and redraws the panel ($E589). Lives at $FF (game over, or Q in the pause) go to the game-over screen $3DEC; $1BC6 set goes to $F302; $1BBA set exchanges $D100-$D6FF with $6000-$65FF (swap 7), bringing in code the engine keeps under the I/O chips, calls $F451 and jumps to $638D in that code, which comes back through $3BCC to restart the stage happy. Otherwise it shows the stage card ($3BD6)."
  },
  {
   "address": 15285,
   "type": "line",
   "text": "Operand of the LDA #$FF at $3BB4: $1BC6 as it was when the stage was (re)started ($3B7D); nonzero goes to $F302."
  },
  {
   "address": 15292,
   "type": "line",
   "text": "Operand of the LDA #$FF at $3BBB: $1BBA as it was when the stage was (re)started ($3B83); nonzero goes to the land's $638D."
  },
  {
   "address": 15308,
   "type": "line",
   "text": "The way back from the scene that $3BBF starts: reached by JMP $3BCC from code kept at $D5F5 (which swap 7 moves to $64F5): swaps $D100-$D6FF and $6000-$65FF back ($3F54 with X = 7) and restarts the stage with A = 1, the happy land ($3B3F)."
  },
  {
   "address": 15318,
   "type": "line",
   "text": "The stage card before play. Fills the sprite block $43C0 with $AA, prints string 0 at $44D1, string 1 at $4428 and string 2 + $1BEC (\"STATUS : SAD\" or \"STATUS : HAPPY!\") at $474F through $B817; stores $E3F2+$1BEC in the land's $9122 and $E3F4+$1BEC in $9112; fills two bands of the screen with character $EE, draws the land's name strip from $BC59-$BC98 and $02A7-$02D6 with the colours $90ED-$90F6 and $9107 from the land's block; starts the sad or happy tune ($080C with $3B3B/$3B3D), sets up the sprites ($1A56, entry 1), X and Y expansion from the land's $9109/$910A. Each frame it runs $087B and the colour cycles ($B43D 2-5, $BE0D) and recolours the card's rows from $E3F6/$E406 (and $1000/$1008 when happy); after $BB37 ($50 frames, counted elsewhere) fire starts the stage: screen off, $ED98, $3F52, $B785 with A = $FF and on to play at $1D2F."
  },
  {
   "address": 15774,
   "type": "line",
   "text": "Operand of the LDA #$FF at $3D9D: the sad/happy flag from before $3B3F, passed to $B785, which swaps the land's sad and happy data when it differs from the new one."
  },
  {
   "address": 15781,
   "type": "line",
   "text": "Raster handler of the stage card's chain (installed through $F20F): calls $19DD, $ED65 and $BDD7, shows screen $4400, moves the five sprite X positions $910D-$9111 two pixels left (wrapping below $48 to $F8; the recorded stage card writes them to $D004-$D00C), sets the sprite multicolours from the land's $9103/$9105 for the sad or happy land, and returns the next link: line $29, handler $F1AC."
  },
  {
   "address": 15835,
   "type": "line",
   "text": "Prints string Y = 4 at offset $9B of the page in A, through $B817 (A = $45 and $49, one for each screen)."
  },
  {
   "address": 15842,
   "type": "line",
   "text": "Prints string Y at offset $28 of the page in A, through $B817."
  },
  {
   "address": 15847,
   "type": "line",
   "text": "Prints string Y at offset $B1 of the page in A, through $B817."
  },
  {
   "address": 15852,
   "type": "line",
   "text": "The game-over and continue screen. Inverts the character set, prints string 4 (\"GAME OVER\") on both screens; when continues are left ($CF8A) puts their number, at most 9, into the '*' of \"CONTINUES : *\" ($B971) and prints it (string $0A) on both screens, then \"CONTINUE : YES\" (string 5) on screen $4400 and \"CONTINUE : NO\" (string 6) on screen $4800. Starts its jingle (sounds $1B-$1D through $3F0E), and runs its own raster chain ($3EC8). The stick picks the screen shown, right YES ($D018 = $1F), left NO ($2F), and fire, once released, decides: lives become 03; YES with continues left takes one ($3EAF, the wiki's continue POKE) and restarts the stage ($3B95); otherwise level 0 goes to $A547 in the land's file and any other level to the title ($CBA5)."
  },
  {
   "address": 16056,
   "type": "line",
   "text": "Clears both screens to $FF with colour 0, inverts the character set back, shows screen $4800 and calls $0D1B."
  },
  {
   "address": 16072,
   "type": "line",
   "text": "Raster handler of the game-over chain, at line $36: shows the YES or NO screen (the operand $3EC9, set from the stick), calls $BDD7, the tune ($3F1E) and $193A with X = $1BEC; next link line $81, handler $3EE0."
  },
  {
   "address": 16073,
   "type": "line",
   "text": "Operand of the LDA #$FF at $3EC8: the $D018 value the game-over chain shows, $1F (screen $4400, YES) or $2F (screen $4800, NO), set by the stick at $3E5B."
  },
  {
   "address": 16096,
   "type": "line",
   "text": "Game-over chain at line $81: calls $189A and $193A with X = 3; next link line $B9, handler $3EEF."
  },
  {
   "address": 16111,
   "type": "line",
   "text": "Game-over chain at line $B9: calls $189A, then sets the background colour from the table at $1042, stepping its index (patched into $3EF3) down from $0D each frame while $1B68 is clear; next link line 0, handler $3EC8."
  },
  {
   "address": 16115,
   "type": "line",
   "text": "Operand of the LDX #$00 at $3EF2: the index into the background colours at $1042, stepped down by $3EFE."
  },
  {
   "address": 16142,
   "type": "line",
   "text": "Sets up $3F1E to play three sound numbers, A+2, A+1 and A, one a frame: A is patched into the ADC at $3F28 and the count at $3F24 set to 2. From the game-over screen ($3E2D, A = $1B) these are sounds $1D, $1C and $1B, effect 26 on channels 0, 1 and 2."
  },
  {
   "address": 16151,
   "type": "line",
   "text": "Entry used from $D65F: when $1B68 is clear plays the next start sound ($3F23); otherwise only $BC99."
  },
  {
   "address": 16158,
   "type": "line",
   "text": "Unless $1B66 is set, plays the sound at $3F29 + count while the count at $3F24 is 0-2 (2, 1, 0: one a frame), then always jumps to $BC99."
  },
  {
   "address": 16164,
   "type": "line",
   "text": "Operand of the LDA #$FF at $3F23: how many start sounds $3F1E still plays (2, 1, 0, then negative); set to 2 by $3F0E."
  },
  {
   "address": 16169,
   "type": "line",
   "text": "Operand of the ADC #$FF at $3F28: the first of the three sound numbers $3F1E plays, set by $3F0E."
  },
  {
   "address": 16180,
   "type": "line",
   "text": "For each of the ten page swaps $3F54 does (X = 0-9): the number of pages less one (7, 7, 0, 7, 7, 7, 0, 5, 1, 1). With $3F3E and $3F48 the swaps are: 0 $D800-$DFFF with $7800-$7FFF; 1 $A900-$B0FF with $7800; 2 page $A8 with $89; 3 $7800-$7FFF with $5000-$57FF; 4 $D800 with $7800; 5 $D800 with $5000; 6 page $D0 with $40; 7 $D100-$D6FF with $6000-$65FF; 8 $1600-$17FF with $4800-$49FF; 9 $1600-$17FF with $7000-$71FF. Swap 9 brings the title tune at $1600 to $7000 for Jellyland's title; swap 8 is used by no call found."
  },
  {
   "address": 16190,
   "type": "line",
   "text": "For each page swap X (0-9): the first page of one block: $D8, $A9, $A8, $78, $D8, $D8, $D0, $D1, $16, $16."
  },
  {
   "address": 16200,
   "type": "line",
   "text": "For each page swap X (0-9): the first page of the block it is exchanged with: $78, $78, $89, $50, $78, $50, $40, $60, $48, $70."
  },
  {
   "address": 16210,
   "type": "line",
   "text": "Page swap 0 ($3F54 with X = 0): exchanges $D800-$DFFF, the RAM under the I/O chips, with $7800-$7FFF, the land's character set."
  },
  {
   "address": 16212,
   "type": "line",
   "text": "Exchanges two blocks of whole pages byte for byte with all RAM switched in ($01 = $24): swap X from the tables $3F34 (count less one), $3F3E and $3F48 (first pages), through the pointers $7E and $80; then $01 = $35 again ($1A51). Called with X = 0 ($3F52: $199A, $3B71, $3D9A, $3EA4, $CE66), 1 and 2 ($B78C, $B791), 3, 4 and 6 ($CBF0-$CBFA), 5 and 6 ($CE39, $CE3E), 7 ($3BC1, $3BCE), and 9 from Jellyland's title ($9E6C in its file); no call with X = 8 was found in any part."
  },
  {
   "address": 16262,
   "type": "line",
   "text": "Not referenced: bytes that decode as JSR $1985, LDX $BF64, STX $3F91, LDA #0 (behind a BIT), STA $BF64, RTS."
  },
  {
   "address": 16278,
   "type": "line",
   "text": "Not referenced: bytes that decode as code reading the map page $8F00 and writing land tables $9730/$9737/$973E, then JMP $0875; and at $3FCA a call to $887F and a JMP $82FA, addresses in the land's area. Probably left over from development; kept as data so that the tracer does not label the land's addresses."
  },
  {
   "address": 16352,
   "type": "line",
   "text": "JMP $0D8A ($3FE0, not referenced) then the ASCII text \"BONUSDUST \" ($3FE3) and zeros to $3FFF; no reader of the text was found."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Sprite block 0 ($4000-$403F) of VIC bank 1: the left third of the score panel, the letters \"SCO\" in rows 3-10 and three score digits (the most significant) drawn into rows 15-20 by $3578 at offset $2D. $CD5F, part of the loader, also reads from here."
  },
  {
   "address": 16394,
   "type": "line",
   "text": "Inside sprite block 0. The target of the endless wipe at $C000 (STA $400A, its operand then stepped up a byte at a time), which the protection screen jumps to after a third wrong code."
  },
  {
   "address": 16448,
   "type": "line",
   "text": "Sprite block 1 ($4040-$407F): \"RE\" of \"SCORE\" and the middle three score digits (offset $6D)."
  },
  {
   "address": 16512,
   "type": "line",
   "text": "Sprite block 2 ($4080-$40BF): the last three score digits (offset $AD), no lettering."
  },
  {
   "address": 16576,
   "type": "line",
   "text": "Sprite block 3 ($40C0-$40FF): \"1UP\" and the lives, an x and two digits drawn at offsets $EE/$EF by $3892."
  },
  {
   "address": 16640,
   "type": "line",
   "text": "Sprite block 4 ($4100-$413F): the word over the three-digit counter $CF83-$CF85, drawn at offset $2D of page $41 by $3762."
  },
  {
   "address": 16649,
   "type": "line",
   "text": "Inside sprite block 4: rows 3-10, the counter's 24-byte caption, which $BD37 copies from $F9A6 (the sad or happy land's caption: X = $17 or $2F) when a stage starts."
  },
  {
   "address": 16704,
   "type": "line",
   "text": "Sprite block 5 ($4140-$417F): \"TIME\" and the three time digits, drawn at offset $6D of page $41 by $37A1."
  },
  {
   "address": 16768,
   "type": "line",
   "text": "Sprite block 6 ($4180-$41BF): a small x and the bonus multiplier digit drawn at offset $8D of page $41 by $360C."
  },
  {
   "address": 16832,
   "type": "line",
   "text": "Sprite blocks 7-14 ($41C0-$43BF): further hi-res images; blocks 7 and 8 a round face with eyes, 9-11 a jagged shape (sprite 6 shows 9, 10 or 11 at the player, $B2C1, $B32C), 12-13 a small creature, 14 a ring of dots. Which code shows them was not traced."
  },
  {
   "address": 17344,
   "type": "line",
   "text": "Sprite block 15 ($43C0-$43FF): filled by the code, never drawn by hand: $AA for the stage card's sprites ($3BD6), $00 when play starts, solid two thirds ($FF in two bytes of every three, $4473) for the protection screen's colour swatches."
  },
  {
   "address": 17345,
   "type": "line",
   "text": "Second byte of each row of sprite block 15; $4478 fills it with the first, so the protection's swatch sprite is 16 pixels wide."
  },
  {
   "address": 17407,
   "type": "line",
   "text": "Last byte of sprite block 15 (the unused 64th byte of a sprite). No instruction writes it: the STA $43FF,X at $1A34 runs with X = $FB down to 1 and so starts at $4400, $19FF stops at $43FE and the protection's fill at $43FA."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "The code-sheet protection, run once from the start-up ($199D). Picks three random entries (from the raster line and $1B42) of the 47-entry table at $4A00 and copies them, still encoded, to $0178-$018F; blanks screen $4800 ($4693) and shows it, inverts the letter glyphs ($4678), and turns the five colour-swatch sprites on. Then converts the instructions at $46DC to glyph codes on screen ($4482) and goes to the first attempt ($44A4). In play this memory is screen $4400, the first of the two play screens ($1111 copies screen $4800 into it)."
  },
  {
   "address": 17467,
   "type": "line",
   "text": "Operand (low byte) of the LDA $4A00,X at $443A: $4402 sets it to $F8 and $4427 adds 8 per step to reach the chosen table entry."
  },
  {
   "address": 17468,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $443A, set to $49 by $4402 and carried into by $4427."
  },
  {
   "address": 17470,
   "type": "line",
   "text": "Operand (low byte) of the STA $0178,X at $443D: 8 is added after each copied entry, so the three entries land at $0178, $0180 and $0188."
  },
  {
   "address": 17485,
   "type": "line",
   "text": "Operand of the LDX #$FF at $444C: the count of entries still to pick (2, 1, 0), stored by $4402."
  },
  {
   "address": 17568,
   "type": "line",
   "text": "In play, screen $4400 row 4 column 0. Written by the level opening's copy from $48A0 ($1111, X = $A0 of 0-255) and the screen fill $1A1C ($1A34, X = $A1 of $FB-1); read by the loading-screen colourer $1081 ($109F, LDA $44A0,X from X = 0 up to the first $14 in the row). In the hand-over the high byte of the STA $48EF,X at $449E."
  },
  {
   "address": 17572,
   "type": "line",
   "text": "One attempt at the code. Moves the attempt offset $44B6 on by 8 (0, 8, $10); a fourth time ($18) it jumps to $C000, which wipes memory. Decodes this attempt's grid reference (three bytes EOR $45 from $0178+offset, e.g. \"D17\") into the line at $475D, blanks the five code digits ($4762) and swatch colours ($465C), centres the line (one column less per narrow I or J, $4686), prints the six lines of text (strings $15-$1A through $B817), writes the colour names at $4B73, and starts the protection's raster chain ($45E7). Then it reads the keys 1-5 ($47AA/$47AF), one press at a time ($1B68): each sets the next swatch to that key's colour ($4661) and the next digit, and redraws the line. After five it compares them with the entry's code (bytes 3-7, EOR $45); a match goes on to $45A4, a mismatch blanks the line ($45DA) and tries again."
  },
  {
   "address": 17590,
   "type": "line",
   "text": "Operand of the LDY #$F8 at $44B5: the current attempt's offset in $0178 (0, 8, $10); $44A4 adds 8 each attempt and gives up at $18."
  },
  {
   "address": 17657,
   "type": "line",
   "text": "In play, screen $4400 row 6 column 9. Written by the level opening's copy ($1111, X = $F9) and the screen fill $1A1C ($1A34, X = $FA; its second band, $1A37 STA $44F9,X, starts one cell later). In the hand-over the operand of the STY $450A at $44F8."
  },
  {
   "address": 17664,
   "type": "line",
   "text": "In play, screen $4400 offset $100 (row 6 column 16), the first cell of the page the level opening's $1117 copies (X = 0). Also written by the screen fill $1A1C ($1A37, X = 7). In the hand-over the high byte of the LDX $46BB,Y at $44FE."
  },
  {
   "address": 17666,
   "type": "line",
   "text": "Operand of the LDY #$1A at $4501: the string number of the line being printed, $1A down to $15."
  },
  {
   "address": 17674,
   "type": "line",
   "text": "Operand of the LDY #$FF at $4509: the loop index over the six lines, kept across the call to $B817."
  },
  {
   "address": 17728,
   "type": "line",
   "text": "In play, screen $4400 row 8 column 0, the first of the 256 cells $4540-$463F (rows 8-14, to column 15) that the stage card fills with character $EE ($3C1C, X = 0 then $FF down to 1). Also written by the level opening's copy ($1117, X = $40) and the screen fill $1A1C ($1A37, X = $47). In the hand-over the protection's cursor blink (LDA $465C,Y at $4540)."
  },
  {
   "address": 17773,
   "type": "line",
   "text": "Operand of the LDX #$FF at $456C: the number of code digits typed so far (0-5), set to 0 by $44B9 and counted up by $456E."
  },
  {
   "address": 17783,
   "type": "line",
   "text": "In play, screen $4400 row 9 column 15, the first cell of the loader's progress bar: $CC86 writes $BD to $4577-$4580 (X = 9 down to 0), and $CDEA/$CDF2 write $BF/$BE at $4577+X with X = $CF16 (0-$0A, counting down). Also written by the level opening's copy ($1117, X = $77), the screen fill $1A1C ($1A37, X = $7E) and the stage card's $EE fill ($3C1C, X = $37). In the hand-over the TYA at $4577."
  },
  {
   "address": 17784,
   "type": "line",
   "text": "In play, screen $4400 row 9 column 16, the progress bar's second cell ($CC86 and $CDEA/$CDF2 with X = 1; the loader's $CCB0, STA $4578,X with X = 9, writes $4581, not this cell). Also written by the level opening's copy ($1117, X = $78), the screen fill $1A1C ($1A37, X = $7F) and the stage card's $EE fill ($3C1C, X = $38). In the hand-over the CLC that starts turning the key number into a digit."
  },
  {
   "address": 17820,
   "type": "line",
   "text": "In play, screen $4400 row 10 column 12, the first of the 16 characters (columns 12-27) the stage card copies from $02B7 ($3C71, X = $0F down to 0), over its $EE fill ($3C1C, X = $5C). Also written by the level opening's copy ($1117, X = $9C) and the screen fill $1A1C ($1A37, X = $A3). In the hand-over the BNE that leaves the code comparison on a mismatch."
  },
  {
   "address": 17828,
   "type": "line",
   "text": "The right code: parks the sprites, blanks the screen, puts \"INSERT SIDE B AND PRESS FIRE\" ($47B4) on its bottom row, clears bits 5-7 of $01, waits for fire in port 2, inverts the glyphs back, clears sprite block 15 and enters the title at $CBA5."
  },
  {
   "address": 17860,
   "type": "line",
   "text": "In play, screen $4400 row 11 column 12, the first of 16 cells (columns 12-27) the stage card sets to $FF ($3C2C, X = $0F down to 0) over its $EE fill ($3C1C, X = $84). Also written by the level opening's copy ($1117, X = $C4) and the screen fill $1A1C ($1A37, X = $CB). In the hand-over the wait-for-fire loop's BNE."
  },
  {
   "address": 17882,
   "type": "line",
   "text": "A wrong code: blanks screen $4800 from $4AD0 for $50 characters (the code line) and goes back to $44A4 for the next attempt."
  },
  {
   "address": 17895,
   "type": "line",
   "text": "The protection screen's raster handler at line $36 (through the front-end dispatcher $1868): no X expansion, the first row of five swatches at Y = $80 ($4629 with X = 9) in the colours of the example code 41325 ($4657), counts the frame flag up, next line $A0 at $4600."
  },
  {
   "address": 17900,
   "type": "line",
   "text": "In play, screen $4400 row 12 column 12, the first of 16 characters (columns 12-27) the stage card copies from $02C7 ($3C77, X = $0F down to 0) over its $EE fill ($3C1C, X = $AC). Also written by the level opening's copy ($1117, X = $EC) and the screen fill $1A1C ($1A37, X = $F3). In the hand-over the LDX #$09 at $45EC."
  },
  {
   "address": 17907,
   "type": "line",
   "text": "In play, screen $4400 row 12 column 19. Written by the screen fill $1A1C at $1A37 (X = $FA; the third band, $1A3A STA $45F3,X, starts one cell later), the level opening's copy ($1117, X = $F3), and the stage card: its $EE fill ($3C1C, X = $B3), then character 8 of $02C7 ($3C77, X = 7). In the hand-over the JSR $4666 at $45F3."
  },
  {
   "address": 17920,
   "type": "line",
   "text": "Protection raster handler at line $A0: the second row of swatches at Y = $C0 ($4629 with X = $13) in the colours typed so far ($465C); next line $E0 at $4613. In play this address is screen $4400 offset $200, the third page $111D copies."
  },
  {
   "address": 17939,
   "type": "line",
   "text": "Protection raster handler at line $E0: the third row at Y = $EA with the X high bit for sprite 4 ($4629 with A = $10, X = $1D) in the colours of keys 1-5 ($4661), X expansion as left by $4666 (X); next line 0 at $45E7."
  },
  {
   "address": 17940,
   "type": "line",
   "text": "In play, screen $4400 row 13 column 12, the first of 16 cells (columns 12-27) the stage card sets to $FF ($3C2F, X = $0F down to 0) over its $EE fill ($3C1C, X = $D4). Also written by the level opening's copy ($111D, X = $14) and the screen fill $1A1C ($1A3A, X = $21). In the hand-over the operand $10 of the LDA at $4613 (the X high bit for sprite 4)."
  },
  {
   "address": 17961,
   "type": "line",
   "text": "Writes A to the sprite X high bits and ten X/Y bytes from $4639 (ending at index X) to sprites 0-4."
  },
  {
   "address": 17977,
   "type": "line",
   "text": "X and Y of sprites 0-4 for the three rows of swatches: Y $80 and $C0 at X $A8-$E8, Y $EA at X $30, $70, $B0, $F0 (and $30 with the high bit, sprite 4)."
  },
  {
   "address": 17980,
   "type": "line",
   "text": "In play, screen $4400 row 14 column 12, the first of 16 characters (columns 12-27) the stage card copies from $BC59 ($3C35, X = $0F down to 0) over its $EE fill ($3C1C, X = $FC). Also written by the level opening's copy ($111D, X = $3C) and the screen fill $1A1C ($1A3A, X = $49). In the hand-over inside the swatch positions."
  },
  {
   "address": 17992,
   "type": "line",
   "text": "In play, screen $4400 row 14 column 24, the first of the 256 cells $4648-$4747 (to row 20 column 39) of the stage card's second $EE fill ($3C1F, X = 0 then $FF down to 1). Also written by the level opening's copy ($111D, X = $48) and the screen fill $1A1C ($1A3A, X = $55). In the hand-over inside the swatch positions."
  },
  {
   "address": 18007,
   "type": "line",
   "text": "The colours of the example code 41325 on the protection screen: 3, $0E, 5, 2, 7 (keys 4, 1, 3, 2, 5)."
  },
  {
   "address": 18012,
   "type": "line",
   "text": "The colours of the five code digits typed so far, the second row of swatches: each attempt sets all five to $20 ($44C7-$44D2, X = 0-2 into $465C,X and $465E,X), which the sprite colour registers show as colour 0 (black); $4574 stores the colour of each key pressed from $4661, and the cursor blink flips bit 0 of the next one every 16 frames ($4537-$4545). Read as sprite colours by $466D (LDA $4657,Y with Y = 9 down to 5) from the raster handler $4600."
  },
  {
   "address": 18014,
   "type": "line",
   "text": "The third to fifth typed colours ($465E-$4660); $44D2 sets them to $20 with the others at each attempt, and $466D reads them as sprite colours. In play $465E is screen $4400 row 15 column 6."
  },
  {
   "address": 18017,
   "type": "line",
   "text": "The colour each key 1-5 gives: $0E light blue, 2 red, 5 green, 3 cyan, 7 yellow."
  },
  {
   "address": 18020,
   "type": "line",
   "text": "In play, screen $4400 row 15 column 12, the first of 16 characters (columns 12-27) the stage card copies from $BC69 ($3C41, X = $0F down to 0) over its second $EE fill ($3C1F, X = $1C). Also written by the level opening's copy ($111D, X = $64) and the screen fill $1A1C ($1A3A, X = $71). In the hand-over the fourth key colour, cyan (3)."
  },
  {
   "address": 18022,
   "type": "line",
   "text": "Points sprites 0-4 at block $0F ($4BF8) and colours them from $4657+Y counting down five (Y = 4, 9 or $0E for the three rows)."
  },
  {
   "address": 18040,
   "type": "line",
   "text": "Inverts $7C80-$7D5F, the glyphs $90-$AB the protection prints with (EOR $FF); called again on the way out to restore them."
  },
  {
   "address": 18054,
   "type": "line",
   "text": "Adds one to X when the character at $475D+Y is I or J, two narrow glyphs, so the grid reference line is centred."
  },
  {
   "address": 18060,
   "type": "line",
   "text": "In play, screen $4400 row 16 column 12, the first of 16 characters (columns 12-27) the stage card copies from $BC79 ($3C4D, X = $0F down to 0) over its second $EE fill ($3C1F, X = $44). Also written by the level opening's copy ($111D, X = $8C) and the screen fill $1A1C ($1A3A, X = $99). In the hand-over the branch offset of the BEQ at $468B, inside $4686."
  },
  {
   "address": 18067,
   "type": "line",
   "text": "Blanks screen $4800 (character $FF) and sets its colour RAM to white: four bands each, X = $FB down to 1, cover $4800-$4BE8 and $D800-$DBE8, one byte past each 1000-byte area."
  },
  {
   "address": 18100,
   "type": "line",
   "text": "In play, screen $4400 row 17 column 12, the first of 16 characters (columns 12-27) the stage card copies from $BC89 ($3C59, X = $0F down to 0) over its second $EE fill ($3C1F, X = $6C). Also written by the level opening's copy ($111D, X = $B4) and the screen fill $1A1C ($1A3A, X = $C1). In the hand-over the RTS of $4693."
  },
  {
   "address": 18101,
   "type": "line",
   "text": "High bytes of the screen address of each of the six protection lines (strings $15-$1A): $48, $48, $49, $4A, $4A, $4B."
  },
  {
   "address": 18107,
   "type": "line",
   "text": "Low bytes of the screen address of the first four protection lines ($03, $5C, $9C, $60); the fifth is $46BF, the sixth $46C0."
  },
  {
   "address": 18111,
   "type": "line",
   "text": "Low byte of the screen address of the grid-reference line, computed by $44DB (centring) and used by $457E to redraw it."
  },
  {
   "address": 18112,
   "type": "line",
   "text": "The protection's strings in ASCII, $FF-terminated, printed by $B817: $46C1 \"MAYHEM PROTECTION\", $46D3 \"SEQUENCE\"; the first byte, $98, is the low address of the last line."
  },
  {
   "address": 18139,
   "type": "line",
   "text": "The byte before the instructions ($FF), the end mark for the conversion loop at $4482 that counts X down from $69."
  },
  {
   "address": 18140,
   "type": "line",
   "text": "The instructions, ASCII, converted by $4482 into glyph codes on screen $4800 from $48F0: \"USING THE MAYHEM PROTECTION SHEET ENTER THE FIVE DIGIT CODE BY PRESSING NUMBERS ONE TO FIVE. FOR EXAMPLE,A1: 41325\". In play, screen $4400 row 18 column 12, the first of 16 cells (columns 12-27) the stage card copies from $02A7 ($3C65, X = $0F down to 0) over its second $EE fill ($3C1F, X = $94); also written by the level opening's copy ($111D, X = $DC) and the screen fill $1A1C ($1A3A, X = $E9)."
  },
  {
   "address": 18157,
   "type": "line",
   "text": "In play, screen $4400 row 18 column 29. Written by the screen fill $1A1C at $1A3A (X = $FA; the fourth band, $1A3D STA $46ED,X, starts one cell later), the level opening's copy ($111D, X = $ED) and the stage card's second $EE fill ($3C1F, X = $A5). In the hand-over inside the instructions text."
  },
  {
   "address": 18176,
   "type": "line",
   "text": "In play, screen $4400 offset $300 (row 19 column 8), the first cell of the last page the level opening copies ($1123, X = 0). Also written by the screen fill $1A1C ($1A3D, X = $13) and the stage card's second $EE fill ($3C1F, X = $B8). In the hand-over inside the instructions text."
  },
  {
   "address": 18208,
   "type": "line",
   "text": "In play, screen $4400 row 20 column 0, the first of the 80 cells $4720-$476F (rows 20-21) that the continue screen sets to $FF on its way to the title ($3E98, X = $4F down to 0). Also written by the level opening's copy ($1123, X = $20), the screen fill $1A1C ($1A3D, X = $33) and the stage card's second $EE fill ($3C1F, X = $D8). In the hand-over inside the instructions text."
  },
  {
   "address": 18245,
   "type": "line",
   "text": "String $17, the example \"A1: 41325\"; then string $18 \"ENTER CODE AT\" ($474F) and string $19, the grid-reference line $475D-$4767 (three reference characters, \": \", then the five typed digits), which $44BF and $457B fill in."
  },
  {
   "address": 18269,
   "type": "line",
   "text": "String $19, the grid-reference line: the three reference characters ($44BF fills them, e.g. \"D17\"), \": \", then the five typed digits $4762-$4766 and the $FF end."
  },
  {
   "address": 18274,
   "type": "line",
   "text": "The five typed code digits ('1'-'5', or spaces), compared with the answer at $4594."
  },
  {
   "address": 18276,
   "type": "line",
   "text": "Digits 3-5 of the typed code, blanked with the others at each attempt ($44CC)."
  },
  {
   "address": 18280,
   "type": "line",
   "text": "String $1A: \"1:     2:     3:     4:     5:\", the key legend under the swatches."
  },
  {
   "address": 18311,
   "type": "line",
   "text": "The colour names under the key legend, in glyph codes ($90 + letter, $FF skipped), copied to $4B73 by $4510: BLUE, RED, GRN, CYAN, YEL."
  },
  {
   "address": 18346,
   "type": "line",
   "text": "Keyboard row selects for keys 1-5 ($7F, $7F, $FD, $FD, $FB)."
  },
  {
   "address": 18351,
   "type": "line",
   "text": "The column bit each of keys 1-5 reads as on its row ($FE, $F7, $FE, $F7, $FE): 1 and 2 on row 7, 3 and 4 on row 1, 5 on row 2."
  },
  {
   "address": 18356,
   "type": "line",
   "text": "\"INSERT SIDE B AND PRESS FIRE\" in glyph codes ($90 + letter, $FF space), 28 bytes copied to $4BC6 by $45AE."
  },
  {
   "address": 18368,
   "type": "line",
   "text": "The part \" B AND \" of the side-B prompt in glyph codes; the loader's $CC69 (STA $47C0,X, X = $27 down to 0) blanks it with the rest of $47C0-$47E7, the whole of row 24 of screen $4400."
  },
  {
   "address": 18374,
   "type": "line",
   "text": "\"PRESS FIRE\" in glyph codes, the end of the side-B prompt; in play these cells are screen $4400 row 24 from column 6: the loader writes its own copy of the side-B prompt there from $CEE1 ($CCFA, X = $1B down to 0, $47C6-$47E1) and blanks the same cells with $FF ($CD27); its $CC69 blanks the whole row. After it, to $47F7, bytes left over from another program."
  },
  {
   "address": 18424,
   "type": "line",
   "text": "Screen $4400's sprite pointers, sprites 0-7 ($47F8-$47FF): written in play by X-indexed loops: $B1EF and $E1F2 (X = 7 down to 0), $34AE (the panel set-up $349C) and $BFAA (from $10DB) (X = 5-0), $C044, $C0A4 and $C0FF (X = 4-0); the level opening's copy from $4BF8 ($1123, X = $F8-$FF); and directly by $18FE-$190C, $21E5, $B2B5-$B331 and $E444-$E4A9 (the player and the effect sprite)."
  },
  {
   "address": 18426,
   "type": "line",
   "text": "Sprite 2's pointer for screen $4400, written by $18FE, and every frame with sprites 0-5 by the panel set-up $349C ($34AE, X = 2); see $47F8 for the other X-indexed writers."
  },
  {
   "address": 18428,
   "type": "line",
   "text": "Sprite 4's pointer for screen $4400, written by $B306, and every frame by the panel set-up $349C ($34AE, X = 4); see $47F8 for the other X-indexed writers."
  },
  {
   "address": 18429,
   "type": "line",
   "text": "Sprite 5's pointer for screen $4400, written by $B2B5, $E49A and the extra raster handler's $21E5, and every frame by the panel set-up $349C ($34AE, X = 5); see $47F8 for the other X-indexed writers."
  },
  {
   "address": 18430,
   "type": "line",
   "text": "Sprite 6's pointer for screen $4400 (the player's outline), written by $1906, $B2C8, $B32E and $E4A9, and by the X-indexed loops $B1EF and $E1F2 and the level opening's copy $1123 (see $47F8)."
  },
  {
   "address": 18431,
   "type": "line",
   "text": "Sprite 7's pointer for screen $4400 (the player's colour layer), written by $190C, $B2BB and $E444, and by the X-indexed loops $B1EF and $E1F2 and the level opening's copy $1123 (see $47F8); $4693 counts from here."
  },
  {
   "address": 18432,
   "type": "line",
   "text": "In play, screen $4800, the second play screen: read by the level opening's copy ($110E, X = 0) and blanked by its fill ($113B), written by the screen fill $1A1C ($1A40, X = 1) and, before play, by the protection's blanking ($46A5, X = 1). In the hand-over $4800-$49E1 holds a development tool the game never runs: a link program assembled to run at $1600, which let another computer write and read memory, call code and set $01 over the user port (data on $DD01, handshake on $DD00 bits 2-3; commands $B4-$BA), signed \"DOWNLOAD BY JAZ\" at $49F0. The saver at $4B7B swaps it into $1600-$17FF; BASIC's input line at $0200 still holds SYS 5632, which started it. $110E copies it as screen data."
  },
  {
   "address": 18671,
   "type": "line",
   "text": "In play, screen $4800 row 5 column 39. Read by the level opening's copy to $44EF ($110E, X = $EF) and set to the blank glyph by its fill ($113B, X = $EF of 0-255); written by the screen fill $1A1C ($1A40, X = $F0). The protection's blanking $4693 ($46A5, X = $F0) writes it too; its instructions are written from the next cell, $48F0 ($449E, X = $69 down to 1)."
  },
  {
   "address": 18681,
   "type": "line",
   "text": "In play, screen $4800 row 6 column 9. Read by the level opening's copy ($110E, X = $F9) and blanked by its fill ($113B); written by the screen fill $1A1C ($1A40, X = $FA; its second band, $1A43 STA $48F9,X, starts one cell later). Before play the protection's blanking ($46A5, X = $FA) and its instruction text ($449E, X = $0A) write it."
  },
  {
   "address": 18688,
   "type": "line",
   "text": "In play, screen $4800 offset $100 (row 6 column 16), the first cell of the page the level opening copies ($1114, X = 0) and blanks ($113E). Also written by the screen fill $1A1C ($1A43, X = 7); before play by the protection's blanking ($46A8, X = 7) and instruction text ($449E, X = $11)."
  },
  {
   "address": 18928,
   "type": "line",
   "text": "\"DOWNLOAD BY JAZ \" in ASCII, the signature at the end of the user-port link program at $4800 (at $17F0 where that program runs). Nothing reads it as text. As screen $4800 row 12 column 16 it is copied ($1114, X = $F0) and blanked ($113E) by the level opening, written by the screen fill $1A1C ($1A43, X = $F7), and by the protection's blanking ($46A8, X = $F7), which erases the text."
  },
  {
   "address": 18931,
   "type": "line",
   "text": "In play, screen $4800 row 12 column 19. Written by the screen fill $1A1C at $1A43 (X = $FA; the third band, $1A46 STA $49F3,X, starts one cell later), read by the level opening's copy ($1114, X = $F3) and blanked by its fill ($113E). Before play the protection's blanking writes it ($46A8, X = $FA)."
  },
  {
   "address": 18944,
   "type": "line",
   "text": "The protection's answers: 47 entries of 8 bytes, $4A00-$4B77, each EOR $45: three characters of grid reference, either a letter and two digits (e.g. $01 $74 $72 = \"D17\") or a space, a letter and one digit ($65 first, e.g. $65 $07 $77 = \" B2\"), then the five code digits. $4400 copies three at random to $0178; the screen then overwrites the table. In play this is screen $4800 offset $200 ($111A copies it, $1141 fills it)."
  },
  {
   "address": 19152,
   "type": "line",
   "text": "Screen $4800 row 18 column 0, the first of the 80 cells $4AD0-$4B1F (rows 18-19) that the protection's wrong-code path blanks ($45DE, X = $4F down to 0). In play read by the level opening's copy ($111A, X = $D0) and blanked by its fill ($1141), and written by the screen fill $1A1C ($1A46, X = $DD) and the protection's blanking ($46AB, X = $DD)."
  },
  {
   "address": 19181,
   "type": "line",
   "text": "Screen $4800 row 18 column 29. Written by the screen fill $1A1C at $1A46 (X = $FA; the fourth band, $1A49 STA $4AED,X, starts one cell later), the protection's blanking ($46AB, X = $FA) and its wrong-code path ($45DE, X = $1D); read by the level opening's copy ($111A, X = $ED) and blanked by its fill ($1141)."
  },
  {
   "address": 19192,
   "type": "line",
   "text": "Screen $4800 row 19 column 0. The level opening's fill blanks it twice in one pass: $1141 (X = $F8) and $1144, whose last page $4AF8-$4BF7 starts here (X = 0); its copy reads it ($111A, X = $F8). Also written by the screen fill $1A1C ($1A49, X = $0B), the protection's blanking ($46AE, X = $0B) and its wrong-code path ($45DE, X = $28)."
  },
  {
   "address": 19200,
   "type": "line",
   "text": "Screen $4800 offset $300 (row 19 column 8). The loader builds a 256-byte decode table over $4B00-$4BFF ($CD9D, Y = $FF down to 0: the 32 bytes at $CEAD, each 8 times) and reads it with Y = the value read from $DD00 ($CE96; $CE9C, $CEA2 and $CEA8 read $4B08, $4B10 and $4B18 the same way). The level opening copies this page ($1120, X = 0) and blanks it ($1144, X = 8); also written by the screen fill $1A1C ($1A49, X = $13), the protection's blanking ($46AE, X = $13) and its wrong-code path ($45DE, X = $30)."
  },
  {
   "address": 19208,
   "type": "line",
   "text": "Screen $4800 row 19 column 16: the second of the loader's four reads of its decode table ($CE9C, ORA $4B08,Y with Y = the value read from $DD00), which $CD9D writes over $4B00-$4BFF. Also copied ($1120, X = 8) and blanked ($1144, X = $10) by the level opening, and written by the screen fill $1A1C ($1A49, X = $1B), the protection's blanking ($46AE, X = $1B) and its wrong-code path ($45DE, X = $38)."
  },
  {
   "address": 19216,
   "type": "line",
   "text": "Screen $4800 row 19 column 24: the third of the loader's reads of its decode table ($CEA2, ORA $4B10,Y with Y = the value read from $DD00; written by $CD9D). Also copied ($1120, X = $10) and blanked ($1144, X = $18) by the level opening, and written by the screen fill $1A1C ($1A49, X = $23), the protection's blanking ($46AE, X = $23) and its wrong-code path ($45DE, X = $40)."
  },
  {
   "address": 19224,
   "type": "line",
   "text": "Screen $4800 row 19 column 32: the fourth of the loader's reads of its decode table ($CEA8, ORA $4B18,Y with Y = the value read from $DD00; written by $CD9D). Also copied ($1120, X = $18) and blanked ($1144, X = $20) by the level opening, and written by the screen fill $1A1C ($1A49, X = $2B), the protection's blanking ($46AE, X = $2B) and its wrong-code path ($45DE, X = $48)."
  },
  {
   "address": 19315,
   "type": "line",
   "text": "Screen $4800 row 22 column 3, the first cell of the colour names the protection writes before play ($4517, X = $22 down to 0, skipping $FF bytes: $4B73-$4B95). Also copied ($1120, X = $73) and blanked ($1144, X = $7B) by the level opening, written by the screen fill $1A1C ($1A49, X = $86), the protection's blanking ($46AE, X = $86) and the loader's decode table ($CD9D). In the hand-over the last entry of the answer table, then from $4B78 more left-over code (a KERNAL SAVE of a file \"GAME\", $4B7B-$4BD5) that the game never runs."
  },
  {
   "address": 19323,
   "type": "line",
   "text": "In the hand-over, a development routine the game never runs (typed as data; nothing jumps here): with $01 = $34 it copies $0000-$4EFF to $A900-$F7FF, swaps $4800-$49FF with $1600-$17FF ($4BD9), and with $01 = $37 calls SETLFS (file 1, device 8), SETNAM (\"GAME\", at $4BD5) and SAVE of $0200-$A8FF, the span of the disk file `game`; then swaps back, clears $D418, sets $01 = $24 and jumps to the user-port link at $1600. The link program at $4800 had been told to run it (its $177A held JMP $4B7B). In play these bytes are screen $4800."
  },
  {
   "address": 19398,
   "type": "line",
   "text": "Screen $4800 row 24 column 6, the first of the 28 cells $4BC6-$4BE1 where the protection writes \"INSERT SIDE B AND PRESS FIRE\" ($45B3, X = $1B down to 0). Also copied ($1120, X = $C6) and blanked ($1144, X = $CE) by the level opening, written by the screen fill $1A1C ($1A49, X = $D9), the protection's blanking ($46AE, X = $D9) and the loader's decode table ($CD9D)."
  },
  {
   "address": 19448,
   "type": "line",
   "text": "Screen $4800's sprite pointers, sprites 0-7 ($4BF8-$4BFF), mostly written alongside $47F8 so both screens show the same sprites: X-indexed by $B1F2 (X = 7-0), $34B1 and $BFAD (X = 5-0), $C047, $C0A7 and $C102 (X = 4-0), and before play by the protection's $466A (X = 4-0); $E1F2 has no counterpart here. The loader's decode table ($CD9D, Y down through $4B00-$4BFF) overwrites all eight; the level opening's copy reads them ($1120)."
  },
  {
   "address": 19450,
   "type": "line",
   "text": "Sprite 2's pointer for screen $4800, written by $1901, and every frame by the panel set-up $349C ($34B1, X = 2); see $4BF8 for the other X-indexed writers."
  },
  {
   "address": 19452,
   "type": "line",
   "text": "Sprite 4's pointer for screen $4800, written by $B309, and every frame by the panel set-up $349C ($34B1, X = 4); see $4BF8 for the other X-indexed writers."
  },
  {
   "address": 19453,
   "type": "line",
   "text": "Sprite 5's pointer for screen $4800, written by $B2B8, $B324, $E49D and the extra raster handler's $21E8, and every frame by the panel set-up $349C ($34B1, X = 5); see $4BF8 for the other X-indexed writers."
  },
  {
   "address": 19454,
   "type": "line",
   "text": "Sprite 6's pointer for screen $4800 (the player's outline), written by $1909, $B2CB, $B331 and $E4AC, by the X-indexed loop $B1F2, and by the loader's decode table ($CD9D; see $4BF8)."
  },
  {
   "address": 19455,
   "type": "line",
   "text": "Sprite 7's pointer for screen $4800 (the player's colour layer), written by $190F, $B2BE, $B320 and $E447, by the X-indexed loop $B1F2, and by the loader's decode table ($CD9D; see $4BF8)."
  },
  {
   "address": 19456,
   "type": "line",
   "text": "Sprite blocks $30-$3F ($4C00-$4FFF) of VIC bank 1, the first of the player's (Mayhem's) frames. Sprite 6 shows the frame number in $1BE7 (a hi-res outline, $E4A6) and sprite 7 the colour layer, normally the next block ($1BE7 + 1), but block $43 or $5D when $1B4D is $40 or $5A ($E4AF-$E4BD: $1B4D + 3) (multicolour); in play $1BE7 was $46 (the pointers $46/$47 at $47FE/$47FF). Rendered, $4C00 is an outline and $4C40 a colour layer; which motion each frame belongs to was not traced."
  },
  {
   "address": 20480,
   "type": "line",
   "text": "Sprite blocks $40-$4F ($5000-$53FF): more of the player's frames, outlines and colour layers, including $46/$47, the pair shown in play.vsf."
  },
  {
   "address": 20886,
   "type": "line",
   "text": "Inside block $46 ($5180): one of five bytes $E27B rewrites when the scroll direction $1B3F is 0 (from $E2C0+Y), changing a detail of the frame (an eye or the face) by state Y."
  },
  {
   "address": 20887,
   "type": "line",
   "text": "Inside block $46: the second byte $E27B rewrites (from $E2C4+Y)."
  },
  {
   "address": 20889,
   "type": "line",
   "text": "Inside block $46: the third byte $E27B rewrites (from $E2C8+Y)."
  },
  {
   "address": 20890,
   "type": "line",
   "text": "Inside block $46: the fourth byte $E27B rewrites (from $E2CC+Y)."
  },
  {
   "address": 20901,
   "type": "line",
   "text": "Inside block $46: the fifth byte $E27B rewrites (from $E2D0+Y)."
  },
  {
   "address": 21009,
   "type": "line",
   "text": "Inside block $48 ($5200): one of the bytes $EF93 rewrites (from $F94E+Y), with $5214 and $5217 here and three more in block $62."
  },
  {
   "address": 21012,
   "type": "line",
   "text": "Inside block $48: rewritten by $EF93 from $F951+Y."
  },
  {
   "address": 21015,
   "type": "line",
   "text": "Inside block $48: rewritten by $EF93 from $F954+Y."
  },
  {
   "address": 21025,
   "type": "line",
   "text": "Inside block $48: six consecutive bytes, $5221-$5226 (two sprite rows), that $BD96 rewrites from $BDB5 (STA $5221,Y for Y = 5 down to 0; two sets of six, chosen by X)."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "Sprite blocks $50-$5F ($5400-$57FF): more of the player's frames. $10B3 inverts the 232 bytes $5480-$5567 (EOR $FF) when called from $CBFD and $CE34, and the loader at $CC90-$CE10 writes into $55F1-$55F6, reading $55E9-$55EE."
  },
  {
   "address": 21631,
   "type": "line",
   "text": "Last byte of block $51 ($5440-$547F), the byte before the 232 bytes $5480-$5567 that $10B3 inverts (it counts X from $E8 down to 1 on $547F+X)."
  },
  {
   "address": 21992,
   "type": "line",
   "text": "Inside block $57 ($55C0): the base of the loader's six-byte copy at $CDFA-$CDFD (LDA $55E8,X / STA $55F0,X with X = 6 down to 1: $55E9-$55EE to $55F1-$55F6); $55E8 itself is not read."
  },
  {
   "address": 21993,
   "type": "line",
   "text": "Inside block $57: the six bytes $55E9-$55EE that $CC9A masks with $CB5D,X and merges into $55F1-$55F6, and that $CDFA copies there whole."
  },
  {
   "address": 22000,
   "type": "line",
   "text": "Inside block $57: the base the copy at $CDFD indexes from (STA $55F0,X, X = 6 down to 1, writes $55F1-$55F6); this byte itself is not written."
  },
  {
   "address": 22001,
   "type": "line",
   "text": "Inside block $57: six bytes the loader clears ($CC90), rebuilds ($CCA3, $CE10) and overwrites with $55E9-$55EE ($CDFD), so a sprite frame here shows its progress."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "Sprite blocks $60-$67 ($5800-$59FF): the last of the player's frames."
  },
  {
   "address": 22549,
   "type": "line",
   "text": "Inside block $60 ($5800): one of five bytes $E27B rewrites when the scroll direction $1B3F is 1 (from $E2BE+Y), the mirror of the bytes at $5196."
  },
  {
   "address": 22550,
   "type": "line",
   "text": "Inside block $60: rewritten by $E27B from $E2C2+Y."
  },
  {
   "address": 22552,
   "type": "line",
   "text": "Inside block $60: rewritten by $E27B from $E2C6+Y."
  },
  {
   "address": 22553,
   "type": "line",
   "text": "Inside block $60: rewritten by $E27B from $E2CA+Y."
  },
  {
   "address": 22565,
   "type": "line",
   "text": "Inside block $60: rewritten by $E27B from $E2CE+Y."
  },
  {
   "address": 22671,
   "type": "line",
   "text": "Inside block $62 ($5880): one of the bytes $EF93 rewrites (from $F945+Y), with $5892 and $5895."
  },
  {
   "address": 22674,
   "type": "line",
   "text": "Inside block $62: rewritten by $EF93 from $F948+Y."
  },
  {
   "address": 22677,
   "type": "line",
   "text": "Inside block $62: rewritten by $EF93 from $F94B+Y."
  },
  {
   "address": 22689,
   "type": "line",
   "text": "Inside block $62: six consecutive bytes, $58A1-$58A6 (two sprite rows), that $BD96 rewrites from $BDA9 (STA $58A1,Y for Y = 5 down to 0)."
  },
  {
   "address": 45312,
   "type": "line",
   "text": "Seventeen bytes before the power-up tune at $B111 for which no reader was found: no instruction names an address in $B100-$B110, directly or through an index that reaches it."
  },
  {
   "address": 45329,
   "type": "line",
   "text": "Tune 8 of every land's tune table ($90D8/$90E2 = $11/$B1), the power-up tune: $BB95 sets $1B97 = 8 when the power-up starts. In the music driver's format, read only through that table."
  },
  {
   "address": 45434,
   "type": "line",
   "text": "A run of NOPs ending in the RTS at $B1AC. $213D waits in it for the second interrupt (JMP at $215F); $2162 patches the JSR at $2196 to enter it at $B182 + column/2 to time the VSP write; $1F7B calls it from the top sixteen times as a delay, and $1370, $189A, $18D3, $B1B9, $F1EE, $F214 and $F228 call it at later points as shorter delays."
  },
  {
   "address": 45439,
   "type": "line",
   "text": "Entry into the NOP slide $B17A 45 NOPs before its RTS, a delay of 90 cycles plus the call; called from $F228."
  },
  {
   "address": 45458,
   "type": "line",
   "text": "Entry into the NOP slide 26 NOPs before the RTS at $B1AC (52 cycles); called from $1370."
  },
  {
   "address": 45471,
   "type": "line",
   "text": "Entry into the NOP slide 13 NOPs before the RTS (26 cycles); called from $B1B9."
  },
  {
   "address": 45472,
   "type": "line",
   "text": "Entry into the NOP slide 12 NOPs before the RTS (24 cycles); called from $F1EE."
  },
  {
   "address": 45473,
   "type": "line",
   "text": "Entry into the NOP slide 11 NOPs before the RTS (22 cycles); called from $189A."
  },
  {
   "address": 45476,
   "type": "line",
   "text": "Entry into the NOP slide 8 NOPs before the RTS (16 cycles). The JSR at $18D3 is assembled with this address, but $22E0 rewrites its low byte from the table at $3483 ($7B-$84), so in play it enters the slide at $B17B-$B184 instead ($B17B in the play snapshot)."
  },
  {
   "address": 45481,
   "type": "line",
   "text": "Entry into the NOP slide 3 NOPs before the RTS (6 cycles); called from $F214."
  },
  {
   "address": 45485,
   "type": "line",
   "text": "A raster handler that a land installs (Jellyland: LDX #$AD / LDY #$B1 at $939D) in place of the panel handler $18C1, for a scene of its own: next link $22E9 at line $FA, a 26-cycle wait, extended colour mode on, the frame flag set, the colour cycle $B43D entry $0F or $10 (by $1B68). Once the counter $1B4D reaches $0E it places eight sprites in a row at Y $40 (X $58-$E8 and $00, $B23A), frames $D3-$DA from the land's file ($B24A), colours $B252, sprite set-up 3 ($1A56). Each frame it steps the colour index $B204 (6 down to 1, then held at 1; restarted by $B234) and puts $B28C+index in the background colour operand $20F3, and the same colour (0 at index 1) in the border colour operand $211A, $D026, $A6CB and $B25F; it counts $1B4D up while $1BC9 is negative and $1B68 clear, and ends through the scroll step $2088."
  },
  {
   "address": 45572,
   "type": "line",
   "text": "Operand of the LDX #$01 at $B203: the scene's colour index, set to 6 by $B234 and decremented by $B209 while it is 2 or more, so the index used runs 6, 5, 4, 3, 2, 1 and then stays at 1."
  },
  {
   "address": 45620,
   "type": "line",
   "text": "Sets the scene's colour index ($B204) to 6."
  },
  {
   "address": 45626,
   "type": "line",
   "text": "X and Y of the scene's eight sprites: X $58, $70, $88, $A0, $B8, $D0, $E8, $00, all at Y $40."
  },
  {
   "address": 45642,
   "type": "line",
   "text": "The scene's eight sprite frames, $D3-$DA (blocks at $74C0-$76BF in the land's file)."
  },
  {
   "address": 45650,
   "type": "line",
   "text": "The scene's eight sprite colours; the colour cycle $B43D entry 15 rotates them (the snapshots show them rotated in play)."
  },
  {
   "address": 45658,
   "type": "line",
   "text": "Five bytes ($AC, $78, $AF, $7B, $01) that Jellyland's code reads (operands at $A677 and $A68A name $B25A and $B25E); not read by the engine."
  },
  {
   "address": 45663,
   "type": "line",
   "text": "The scene's current colour, stored by $B221; Jellyland also reads it ($A689 LDA $B25E,X with X = 1, 0, into $D027/$D028). The 16 bytes after it, $B260-$B26F, are eight sprite X/Y pairs (X $58, $88, $B8, $E8, $5B, $8B, $BB, $EB; Y $9C four times, then $9F four times) that Jellyland's $A6B4-$A6BD copies to $D000-$D00F; the engine does not read them."
  },
  {
   "address": 45680,
   "type": "line",
   "text": "Read by Jellyland's code, not the engine: $B270-$B277 the frames $DC-$DF twice ($A6C2), $B278-$B28B twenty colours ($A6D5, $A6FC; the colour cycle $B43D entry 16 rotates the first ten)."
  },
  {
   "address": 45708,
   "type": "line",
   "text": "The colours the scene's index picks, $B28C+X for X = 1-6 (0, $0B, $0C, $0F, $0D, 1: black, dark grey, grey, light grey, light green, white); at index 1 the border colour at $211A is 0. Index 0 is never read; $B28C itself was $FF as loaded and 3 in play, written by something outside the engine."
  },
  {
   "address": 45715,
   "type": "line",
   "text": "Places the player's sprites 5, 6 and 7 together: X from $1BE3, Y from $1BE4 less the slope height $1B4B. $E4A6 puts the frame $1BE7 in sprite 6's pointers and returns the colour-layer frame for sprite 7; then sprite 5 takes sprite 6's frame (black, hi-res) and sprite 6 is replaced by block 9 when sprite 7's frame is $43, block 10 otherwise (yellow), sprite 7 light red and the only multicolour sprite; no expansion or priority, X high bits clear. Then sprite 4 alternates each frame ($1B73) between two positions and frames held in $1B69-$1B6E (white). Called from the bottom raster handler $20F8 ($2126) when $1BC9 is negative."
  },
  {
   "address": 45842,
   "type": "line",
   "text": "Puts sprite 5 at sprite 6's position in black; in screen $4800's pointers sprite 5 gets frame $46 and sprite 7 frame $47, and in both screens sprite 6 gets block $0B (yellow); sprites 5 and 6 hi-res, 7 multicolour. When $7E is 5 it stores the operand at $B34A in $1B4F (sprite priority). Called from $2134 when $1BD1 is set."
  },
  {
   "address": 45898,
   "type": "line",
   "text": "Operand of the LDA #$FF at $B349 inside $B312, stored to $1B4F when $7E is 5. Written by $1DE6 (STA $B34A) from the land's table at $9722 (LDA $9722,Y at $1DE3); $FF as loaded and 0 in the play snapshot."
  },
  {
   "address": 45903,
   "type": "line",
   "text": "While $1BD1 is set and $1B67 is 0 (one frame in three): steps every object slot whose fade sequence $F4B3 is nonzero to the colour at index $1B93 of that sequence ($B39E), ending the sequence on a negative entry, and the same for the four sprite multicolour bytes $1B8B-$1B8E (sequences $1B8F-$1B92). After six steps it sets $1BD1 to its next value and $1FB2 to $38."
  },
  {
   "address": 45982,
   "type": "line",
   "text": "A = entry $1B93 of colour sequence Y: the sequence's address comes from $B3B1 (low) and $B3C1 (high), patched into the LDA at $B3AD. N set at the end of a sequence."
  },
  {
   "address": 45998,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,Y at $B3AD, from $B3B1."
  },
  {
   "address": 45999,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $B3AD, from $B3C1."
  },
  {
   "address": 46001,
   "type": "line",
   "text": "Low bytes of the 16 colour sequences' addresses (with $B3C1): $B3D1, $B3D2, $B3D8, $B3DB, ... $B402, $B406."
  },
  {
   "address": 46017,
   "type": "line",
   "text": "High bytes of the colour sequences' addresses ($B3 fourteen times, then $B4, $B4)."
  },
  {
   "address": 46033,
   "type": "line",
   "text": "The colour sequences, each ended by $FF: 0 is empty; 1 dark grey, grey, light grey, yellow, white; 2 brown, red; 3 blue, purple, light blue, cyan; and so on to 15 (dark grey, grey, light grey)."
  },
  {
   "address": 46090,
   "type": "line",
   "text": "Low bytes of the 17 blocks the colour cycle $B43D rotates (with $B41B and the lengths at $B42C)."
  },
  {
   "address": 46107,
   "type": "line",
   "text": "High bytes of the colour cycle blocks: 0-2 $1000-$102F, 3-5 $E3F6-$E425, 6 $1050, 7-14 rows of the colour RAM ($D8A5, $D8CD, $D9B7, $D9DF, $DA30, $DA58, $DAA8, $DAD0), 15 $B252, 16 $B278."
  },
  {
   "address": 46124,
   "type": "line",
   "text": "Length of each colour cycle block: $10 for 0-5, $20 for 6-8, $28 (a screen row) for 9-14, 8 for 15 and $0A for 16."
  },
  {
   "address": 46141,
   "type": "line",
   "text": "Rotates block X of the cycle tables by one byte: with carry clear the last byte moves to the front (everything shifts up), with carry set the first moves to the end. Used for the rainbow colours of the stage card ($3CC3-$3CE5), the scene handler $B1AD and others ($F3F6)."
  },
  {
   "address": 46206,
   "type": "line",
   "text": "Low bytes of the 20 spinning-star frames' addresses, 32 bytes apart ($F9D6, $F9F6, $FA16 ... $FC36), read by $3B1A."
  },
  {
   "address": 46226,
   "type": "line",
   "text": "High bytes of the 20 star frames' addresses ($F9-$FC), read by $3B20. The frames are four characters each (2x2), copied to characters $FB-$FE."
  },
  {
   "address": 46246,
   "type": "line",
   "text": "How far above his position $1BE4 the player's top is for touching objects, by the duck flag $1B62: $0F standing, $0A ducking."
  },
  {
   "address": 46248,
   "type": "line",
   "text": "The player against the 15 object slots, once a pass ($1F83). A slot counts when it shows a frame ($F4FE not $0F; or has an item frame $F8CD, or kind $FD), its state $F558 is below 4, its kind $F567 is not $FE, its layer $F6C0 matches the player's (0, or 2 when $1B4F puts the player behind the background), its X high bit is clear and its X ($F6CF) is $9C-$BB, around the player at $AC; the active flag $023C is not tested. Vertically, the player spans $1BE4 - $1B4B - $B4A6 to $1BE4 + $0F - $1B4B, against the object's Y $F6D0 (and Y + $15 for a double-height object). On a touch the overlap goes into $B58A; state 2 goes to $E4E3, state 3 (an item) to $BC15, any other to $B565."
  },
  {
   "address": 46307,
   "type": "line",
   "text": "Operand of the CMP #$FF at $B4E2: the layer ($F6C0) a slot must be on to touch the player, 0 or 2, set by $B4B3 from $1B4F."
  },
  {
   "address": 46437,
   "type": "line",
   "text": "The player touched an object of kind Y ($F567, kept in $50). With the power-up flag $1B9C set, any kind but $FF is hit at once ($C6D7); $FF goes through the stomp test. Otherwise kinds $FC and $FA always hurt the player ($B5CA) and kind $F9 jumps to $364F, which adds one to the counter $CF83-$CF85 on frames when $1B64 is 0, up to limits set by the land's $9050 ($E5BE) and by $10ED, and otherwise only plays a sound. Falling ($1B5A) with an overlap under 8 is a stomp: the bounce strength $1BAB from $342E by $1B5D, a bounce ($2EB5, A = $0D), and the object is hit ($C6D7), except kinds $FB and $F7, which then go through the walk-in test like any touch that is not a stomp. A walk-in ($B5AA) hurts when $1B54 is set; otherwise it hits the object if the player is charging ($1B52, or for kind $F7 also $1B9F), except kind $F8, which always hurts."
  },
  {
   "address": 46474,
   "type": "line",
   "text": "Operand of the LDA #$FF at $B589: how far the player's feet overlap the object (stored by $B540); under 8 counts as landing on it."
  },
  {
   "address": 46538,
   "type": "line",
   "text": "The player is hurt, unless the power-up ($1B9C) or the grace timer $1BC2 is running, or the kind is $FD, or $FF while $1B9F is set. The first touch only sets $1BB7, sets the grace count $1BC2 to $64 (counted down by $EE9E on calls when $1B68 is 1, so it lasts about $C8 calls) and plays sound $1A ($B61D, the wiki's invincibility POKE). A second touch loses the life ($B5E9)."
  },
  {
   "address": 46569,
   "type": "line",
   "text": "The player loses a life (also reached from $383F when time runs out, with A = 1): $1B7F = A, the scroll speed $208C, $1BD7, the slope height $1B4B, $1BC8 and $1B4F cleared, the charge stopped ($33C9), the death frame ($EF86 + $18) in $1BE7, $1B59 = $0B, the death face patched into the frames ($BD96 with X = $0B), and sounds $18 and $19."
  },
  {
   "address": 46634,
   "type": "line",
   "text": "In the happy land, unless $1BD1 is set: flips each object's colour $F4A4 by its flash mask $F486, once a pass ($2311)."
  },
  {
   "address": 46661,
   "type": "line",
   "text": "Once a pass ($1FD2), for each active slot: counts down a hit flash ($F4D1, set by $C7A7) and restores the colour and flash mask saved in $F4C2/$F495 when it ends; and for every other slot (even slots one pass, odd the next, by flipping the branch at $B667) whose $F837 is set (by $BAA1) steps its colour animation: the slot's count $F891 is decremented on each of its turns and, when it goes below 0, reloaded from $F8A0 while the next byte of the list at ($F7DD/$F7EC) is taken via the index $022D (back to the start at a byte of $10 or more) into $F4A4, so the colour steps on every ($F8A0 + 1)-th turn. A slot whose group $F846 equals $EC6F is skipped while $1BD5 is 0."
  },
  {
   "address": 46695,
   "type": "line",
   "text": "The BEQ at $B667 that skips odd or even slots; $B6B1 flips it between BEQ ($F0) and BNE ($D0) with EOR #$20 after each pass, so each slot's colour steps every second pass."
  },
  {
   "address": 46778,
   "type": "line",
   "text": "Low bytes of nine object colour lists ($CFA7, $CFAD, $CFB6, $CFC3, $CFCB, $CFD6, $CFE0, $CFC3, $CFE8), read by $BF7F and $EB76."
  },
  {
   "address": 46787,
   "type": "line",
   "text": "High bytes of the nine colour lists, all $CF ($BF88, $EB72)."
  },
  {
   "address": 46796,
   "type": "line",
   "text": "The reload value of each colour list's step count (0 or 1), copied to $F8A0 ($BF97, $EB6E): $B645 steps a slot's colour on every (value + 1)-th turn of that slot, a slot's turns coming every second pass."
  },
  {
   "address": 46805,
   "type": "line",
   "text": "The big font's glyphs: four character codes each (top left, top right, bottom left, bottom right), read by $B817 at $B8B3-$B8C7 with X = (glyph - 1) * 4, modulo 256. Glyphs 1-26 are A-Z ($B6D5-$B73C), $1B-$24 the digits 0-9 ($B73D-$B764), $25-$29 ! . , ? : and $2A/$2B the right-hand thirds of M and W ($B765-$B780); four more $FF bytes follow to $B784. The 47 bytes at $B705-$B733 that facts.md lists as a possible character-to-glyph map are glyphs M to X of this table."
  },
  {
   "address": 46806,
   "type": "line",
   "text": "Top-right cell of the first glyph (A), read as $B6D6+X at $B8B9."
  },
  {
   "address": 46807,
   "type": "line",
   "text": "Bottom-left cell of the first glyph, read as $B6D7+X at $B8C1."
  },
  {
   "address": 46808,
   "type": "line",
   "text": "Bottom-right cell of the first glyph, read as $B6D8+X at $B8C7; the rest of the table follows."
  },
  {
   "address": 46981,
   "type": "line",
   "text": "Turns the land happy or sad when the flag $1BEC differs from A (the flag before the stage restarted, $3D9D): swaps the land's two character sets ($A900-$B0FF with $7800-$7FFF, swap 1) and the page $A800 with $8900 (swap 2), calls $E5BF, then walks the land's object list at ($8E), 15 bytes a record until a record starting $FF, swapping bytes 3 and 7 of each (an object's sad and happy versions), and clears the star-quota flag $36F3. Then $1D60 = $1BEC, $E595, $BBB3, and on into $B7C3."
  },
  {
   "address": 47043,
   "type": "line",
   "text": "Turns the star code on or off for the sad or happy land by rewriting the first byte of $3AEE and $38C4: RTS ($60) for both in the sad land; DEC ($CE) and LDY ($A0), their real opcodes, in the happy land. Also called from $E57B."
  },
  {
   "address": 47059,
   "type": "line",
   "text": "The first byte for $3AEE by $1BEC: $60 (RTS) sad, $CE (DEC $1B75) happy."
  },
  {
   "address": 47061,
   "type": "line",
   "text": "The first byte for $38C4 by $1BEC: $60 (RTS) sad, $A0 (LDY #$2A) happy."
  },
  {
   "address": 47063,
   "type": "line",
   "text": "Moves the object-list pointer $8E/$8F on by one 15-byte record."
  },
  {
   "address": 47075,
   "type": "line",
   "text": "Moves the 16-bit pointer at $1BA1+X on by one 15-byte record."
  },
  {
   "address": 47090,
   "type": "line",
   "text": "Moves the object-list pointer $8E/$8F back by one 15-byte record."
  },
  {
   "address": 47102,
   "type": "line",
   "text": "Moves the 16-bit pointer at $1BA1+X back by one 15-byte record."
  },
  {
   "address": 47117,
   "type": "line",
   "text": "The five punctuation marks the big font has, in ASCII: ! . , ? : (glyphs $25-$29)."
  },
  {
   "address": 47122,
   "type": "line",
   "text": "Width of each punctuation glyph less one: 0 (one column) for ! . , and :, 1 (two) for ?."
  },
  {
   "address": 47127,
   "type": "line",
   "text": "Prints string Y (0-26, addresses at $B8F8/$B913) in the big font, 2x2 characters a letter, at screen address A (high) / X (low). Each ASCII character: $FF ends; a space moves one column; ! . , : and the narrow I, J and L draw one column wide; A-Z, the digits, ? and the others two; M and W draw a third column after them (glyphs $2A, $2B). The glyph's four cells go to the address and the row below (+$28). Used for the stage card ($3C00-$3C15), the game-over and continue screens ($3DDF-$3DE9), the protection screen ($4503, $4585), the loading screen ($CC25-$CC4A) and the stage-complete tally ($BE62, $BE79, $F27A-$F30F)."
  },
  {
   "address": 47159,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF,Y at $B836: the string's address, from $B8F8."
  },
  {
   "address": 47160,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $B836, from $B913."
  },
  {
   "address": 47314,
   "type": "line",
   "text": "Operand of the ADC #$02 at $B8D1: how many columns the character just drawn takes (1 or 2)."
  },
  {
   "address": 47339,
   "type": "line",
   "text": "Operand of the LDY #$FF at $B8EA: the position in the string, kept across the drawing."
  },
  {
   "address": 47345,
   "type": "line",
   "text": "Stores A at the print position + Y and moves Y on."
  },
  {
   "address": 47346,
   "type": "line",
   "text": "Operand (low byte) of the STA $FFFF,Y at $B8F1: the print position, moved on by $B8CD."
  },
  {
   "address": 47347,
   "type": "line",
   "text": "Operand (high byte) of the STA at $B8F1, the screen page."
  },
  {
   "address": 47350,
   "type": "line",
   "text": "Set to 1 after an M and $FF after a W, so the third column ($2A or $2B) is drawn next; 0 otherwise."
  },
  {
   "address": 47351,
   "type": "line",
   "text": "Cleared by $B833 for each character; no reader found."
  },
  {
   "address": 47352,
   "type": "line",
   "text": "Low bytes of the 27 strings' addresses ($B913 the high bytes): 0 $B92E, 1 $9133 (the land's stage name), 2 $B94B, 3 $B93B, 4 $B95B, 5 $B973, 6 $B982, 7 $B990, 8 $9151 (the land's LOADING line), 9 $CB90, 10 $B965, 11 $B9A0, 12 $B9AD, 13 $B9B7, 14 $B9C8, 15 $B9D5, 16 $B9DF, 17 $B9F0, 18 $B9FE, 19 $916F and 20 $9185 (the land's quota lines), 21-26 the protection's ($46C1, $46D3, $4745, $474F, $475D, $4768)."
  },
  {
   "address": 47379,
   "type": "line",
   "text": "High bytes of the 27 strings' addresses."
  },
  {
   "address": 47406,
   "type": "line",
   "text": "String 0, \"MAYHEM  GO!!\"."
  },
  {
   "address": 47419,
   "type": "line",
   "text": "String 3, \"STATUS : HAPPY!\"."
  },
  {
   "address": 47435,
   "type": "line",
   "text": "String 2, \"   STATUS : SAD\"."
  },
  {
   "address": 47451,
   "type": "line",
   "text": "String 4, \"GAME OVER\"."
  },
  {
   "address": 47461,
   "type": "line",
   "text": "String 10, \"CONTINUES : *\"; the * at $B971 is replaced by the number left."
  },
  {
   "address": 47473,
   "type": "line",
   "text": "The * of \"CONTINUES : *\", replaced by '0' + the continues left (at most '9') by $3E07."
  },
  {
   "address": 47475,
   "type": "line",
   "text": "String 5, \"CONTINUE : YES\"."
  },
  {
   "address": 47490,
   "type": "line",
   "text": "String 6, \"CONTINUE : NO\"."
  },
  {
   "address": 47504,
   "type": "line",
   "text": "String 7, \"STAGE  COMPLETE\"."
  },
  {
   "address": 47520,
   "type": "line",
   "text": "String 11, \"TIME BONUS : *** X 100\"; string 12 is its tail from $B9AD."
  },
  {
   "address": 47533,
   "type": "line",
   "text": "The *** of the time bonus line (string 12 starts here), replaced by the time left by $F28E."
  },
  {
   "address": 47543,
   "type": "line",
   "text": "String 13, \"SUPER TIME BONUS\"."
  },
  {
   "address": 47560,
   "type": "line",
   "text": "String 14, \"STAR BONUS : *** X 500\"; string 15 is its tail from $B9D5."
  },
  {
   "address": 47573,
   "type": "line",
   "text": "The *** of the star bonus line (string 15), replaced by the count by $F2C9-$F2F4."
  },
  {
   "address": 47583,
   "type": "line",
   "text": "String 16, \"SUPER STAR BONUS\"."
  },
  {
   "address": 47600,
   "type": "line",
   "text": "String 17, \"SKID BONUS  : ** X 1000\"; string 18 is its tail from $B9FE."
  },
  {
   "address": 47614,
   "type": "line",
   "text": "The ** of the skid bonus line (string 18), replaced by the two digits $1BF0-$1BF1 by $BE65."
  },
  {
   "address": 47624,
   "type": "line",
   "text": "Moves the objects with the background ($BA0D) when the scroll speed $208C is not 0. Called from the raster handler $21EE ($220A)."
  },
  {
   "address": 47629,
   "type": "line",
   "text": "Moves every active object's X ($F6CF, every other byte) by the scroll speed $1BD7, against the scroll direction $1B3F, so objects keep their place in the land. Works through the three bands of five slots from slot 14 down; when an X passes a page edge it flips the slot's X high bit in its band's byte ($F474-$F476, the operands at $BA48/$BA4E stepping down from $F476) and marks the page step ($BA6F). Also called from $1CF7."
  },
  {
   "address": 47688,
   "type": "line",
   "text": "Operand (low byte) of the LDA $F476 at $BA47: the current band's X high-bit byte, $76 down to $74 ($BA0F, $BA63)."
  },
  {
   "address": 47694,
   "type": "line",
   "text": "Operand (low byte) of the STA $F476 at $BA4D, stepped with $BA48."
  },
  {
   "address": 47703,
   "type": "line",
   "text": "Operand of the LDX #$FF at $BA56: the slot number kept by $BA28 across the page step."
  },
  {
   "address": 47725,
   "type": "line",
   "text": "The current slot's bit in its band's X high-bit byte, $10 down to $01 ($BA1B, $BA58)."
  },
  {
   "address": 47726,
   "type": "line",
   "text": "Slots left in the current band, 4 down to 0 ($BA20, $BA5E)."
  },
  {
   "address": 47727,
   "type": "line",
   "text": "Sets slot X's page step $F6A2 to $FF or 1 for the object that just crossed a page edge, by the scroll direction $1B3F and the slot's $F693."
  },
  {
   "address": 47754,
   "type": "line",
   "text": "Counts slot X's page counter $F6B1 up or down after the object itself crossed a page edge, by its direction (bit 7 of $F53A) and $F693. Called from $C34A."
  },
  {
   "address": 47777,
   "type": "line",
   "text": "Gives slot X the colour list of object type Y from the land's tables: address $96B3+Y / $96C3+Y into $F7DD/$F7EC, delay $96D3+Y into $F8A0; resets the list index $022D to $FF, the delay count $F891 to 0 and sets $F837. Called from $C822 and $E522; $BAB0 is entered from $BF9A with the delay in A."
  },
  {
   "address": 47811,
   "type": "line",
   "text": "Copies the 15 slots' X/Y positions ($F6CF-$F6EC) to $F4E0-$F4FD and the three bands' X high-bit bytes ($F474-$F476, low five bits) to $F483-$F485, for the sprite multiplexer ($C0DC, $C01C, $C07C) to read in the next frame. Called from the raster handler $22BA."
  },
  {
   "address": 47836,
   "type": "line",
   "text": "How many times $E1AF shifts the characters at $7FDD-$7FF3, by $1B68: 1 or 3, a loop run twice or four times (read at $E1AC)."
  },
  {
   "address": 47838,
   "type": "line",
   "text": "Y positions of the stage card's eight sprites, written by $F1C4 and read by $E1E9 (0 as loaded)."
  },
  {
   "address": 47846,
   "type": "line",
   "text": "The stage card's motion table, $50 entries ($BAE7-$BB36) read backwards as $BAE6+X by $ED6D while the card counter $BB37 runs down from $50: signed steps with bit 7 for upward ($82, $81, 0, 1, 2 ... up to 4, then $8F, $8E ...), a bounce."
  },
  {
   "address": 47927,
   "type": "line",
   "text": "The stage card's counter: $3BF5 sets it to $50, $ED6A counts it down a frame at a time with the bounce at $BAE6, and the card accepts fire only when it is 0 ($3D6C)."
  },
  {
   "address": 47928,
   "type": "line",
   "text": "Colours for the player's sprite 7 ($1BE8) in the six steps after collecting an item, one every third frame ($1B9A counts 6 down, $BCD3)."
  },
  {
   "address": 47934,
   "type": "line",
   "text": "Colours for the player's sprite 6 (the operand at $E44B) in the same six steps."
  },
  {
   "address": 47940,
   "type": "line",
   "text": "Colours for sprite 7 ($1BE8) cycled during the power-up, eight steps ($BD1B); $1B9C counts the power-up down once every third frame ($BCF6), so $FD lasts about 760 frames, more while an item flash ($1B9A) holds the count."
  },
  {
   "address": 47948,
   "type": "line",
   "text": "Colours for sprite 6 ($E44B) cycled during the power-up."
  },
  {
   "address": 47956,
   "type": "line",
   "text": "Not referenced: bytes that decode as LDX #0/1/2, LDY #0 and JSR (or JMP) $0C84 three times, starting effect 0 on each of the three effect channels."
  },
  {
   "address": 47977,
   "type": "line",
   "text": "Item effect 3 (the jump table at $F994/$F99D), also entered from $2B69: starts the power-up, $1B9C = $FD frames. If it was not running: the effect sprite ($33F4 with A = 1, which starts sprite 4's puff and plays no sound), $1B9B = 7, $BB9D, $1479 = 0, and then, when $1BC6 is set, it returns there; otherwise $1B97 is saved in $1B99. Then (also when the power-up was already running) $1BC1 = $1E ($3648), the touch counter $1BB7 cleared ($387D), $1B97 = 8 and $E4D0. While $1B9C runs the player hits every object he touches ($B565) and cannot be hurt ($B5CA)."
  },
  {
   "address": 48029,
   "type": "line",
   "text": "Clears $1B6B and $1B6C."
  },
  {
   "address": 48038,
   "type": "line",
   "text": "Installs the play-time raster chain: the game's own interrupt exit ($1884), then $1809 with the handler $F1AC, $01 = $35 (KERNAL out, I/O in) and carry set (the vector at $FFFE/$FFFF pointing at $1862); $1809 sets the first interrupt at raster line $F9. Called from the start-up $1975 and the stage card $3CAD."
  },
  {
   "address": 48051,
   "type": "line",
   "text": "Points the character animation code at $2337-$2354 at the land's two animated characters, $9023 and $9024: each becomes the address of its eight bytes in the character set ($BBE4) and is written into three operands each ($233B/$2353/$234C and $233E/$2350/$2337, high bytes after them). Called from $B7C0 and $E54F."
  },
  {
   "address": 48100,
   "type": "line",
   "text": "A = character code; returns its address in the character set, $7800 + 8 * A, low byte in A, high byte in X, using $1921/$1922 as work bytes. Character 0 gives $1921 itself (A = $21, X = $19), a harmless target."
  },
  {
   "address": 48149,
   "type": "line",
   "text": "The player touched an item (an object in state 3, $B553): marks its record in the land's list ($CB02), frees the slot ($C417), starts the six-step flash ($1B9A = 6, a step every third frame) unless the power-up runs, plays sound 9, scores 200 points (500 in the sad land once the quota flag $36F3 is set), then jumps to the item's effect: the land's $9075 maps the slot's item number $F8DC to an effect 0-8, whose address comes from $F994/$F99D (0 $BC55, 1 $35F3, 2 $36D2, 3 $BB69, 4 $3636, 5 $36ED, 6 $CB4B, 7 $10C1, 8 $10D5)."
  },
  {
   "address": 48190,
   "type": "line",
   "text": "Operand of the LDX #$FF at $BC3D: the slot number, stored by $BC15."
  },
  {
   "address": 48211,
   "type": "line",
   "text": "Operand (low byte) of the JMP at $BC52: the effect's address, from $F994+effect."
  },
  {
   "address": 48212,
   "type": "line",
   "text": "Operand (high byte) of the JMP at $BC52, from $F99D+effect."
  },
  {
   "address": 48213,
   "type": "line",
   "text": "Item effect 0: increments $1BEB, which lets fire start the charge in the player's movement ($3326)."
  },
  {
   "address": 48217,
   "type": "line",
   "text": "The stage card's first row of glyph codes, $EF-$F2 four times, copied to screen $463C by $3C32."
  },
  {
   "address": 48233,
   "type": "line",
   "text": "The stage card's second row, $F3-$F6 four times, copied to $4664 by $3C3E."
  },
  {
   "address": 48249,
   "type": "line",
   "text": "The stage card's third row, $F7-$FA four times, copied to $468C by $3C4A."
  },
  {
   "address": 48265,
   "type": "line",
   "text": "The stage card's fourth row, $FB and $FC alternately, copied to $46B4 by $3C56."
  },
  {
   "address": 48281,
   "type": "line",
   "text": "Starts any sound effects requested this frame ($BC9F), then plays one frame of the effects ($0A70). Called from $1CF4, $1FDD, the tune steps at $3F31 and the stage-complete handler at $F361."
  },
  {
   "address": 48287,
   "type": "line",
   "text": "Starts the effects requested on the three effect channels: when $1B85, $1B86 or $1B87 is set it is cleared and effect $1B88, $1B89 or $1B8A is started on channel 0, 1 or 2 ($0C84). One request per call, channel 0 first."
  },
  {
   "address": 48320,
   "type": "line",
   "text": "The test for channel 2's request. $12AB rewrites its first byte to RTS ($60, as in play) or back to LDA ($AD), so channel 2 is not used for effects while the music needs that voice."
  },
  {
   "address": 48339,
   "type": "line",
   "text": "The player's colour flashes, every third frame: while $1B9A counts the six steps after an item (on frames with $1B67 = 0), sprite 7's colour $1BE8 and sprite 6's (the operand at $E44B) come from $BB38/$BB3E; otherwise, during the power-up ($1B9C, counted down here on frames with $1B67 = 1, and not while the item flash runs) they cycle through $BB44/$BB4C with $1B9B, and when it ends they return to $0A and 0, $1B6D/$1B6E to $0F, $1479 to 4, $1B97 to $1B99, and $E4D0 runs. Called from $1F61."
  },
  {
   "address": 48435,
   "type": "line",
   "text": "Index of the last byte of the counter sprite's caption at $F9A6 for the sad ($17) and happy ($2F) land: the sad and happy captions are $F9A6-$F9BD and $F9BE-$F9D5."
  },
  {
   "address": 48437,
   "type": "line",
   "text": "Index of the last time digit in the land's block, from $9044: 2 for the sad land ($9044-$9046), 5 for the happy land ($9047-$9049)."
  },
  {
   "address": 48439,
   "type": "line",
   "text": "Sets the time $CF86-$CF88 from the land's start time for the sad or happy land (Y = $1BEC: $9044-$9046 or $9047-$9049), and copies the counter sprite's 24-byte caption for that state from $F9A6 into sprite block 4 ($4109). Called from $3B9D and $E57E."
  },
  {
   "address": 48474,
   "type": "line",
   "text": "One frame of the player's death leap ($1ECF), unless it has finished ($1B80): adds the step $344E + $1BC8 to his Y $1BE4 (never above $34), moving the index on until the step is 8; once he is below $F4 sets $1B80 = $28. Then $EF93 with Y by the index: 0 below $10, 2 for $10-$13, 1 from $14 (the leap's rising, top and falling frames)."
  },
  {
   "address": 48534,
   "type": "line",
   "text": "Patches six consecutive bytes (two sprite rows) in each of the player's frames, $58A1-$58A6 and $5221-$5226, with the face set ending at X ($BDA9, $BDB5): X = 5 the first set, $0B the second, the death face ($B611). Also called from $1D52."
  },
  {
   "address": 48553,
   "type": "line",
   "text": "Two sets of six bytes for $58A1 (the second is the death face)."
  },
  {
   "address": 48565,
   "type": "line",
   "text": "Two sets of six bytes for $5221."
  },
  {
   "address": 48577,
   "type": "line",
   "text": "Takes a life off the two-digit lives counter $CF81-$CF82 and sets $3887 for the redraw. When the units are 0 it decrements the tens and leaves the units 0, so 10 lives become 00, not 09; 00 is the last life and the next loss makes $CF81 $FF, game over. Called from $1FA4."
  },
  {
   "address": 48599,
   "type": "line",
   "text": "Once a frame (the end of $20F8, and other raster chains): counts $1B64 round 5-0, $1B65 4-0, $1B66 3-0 and $1B67 2-0, and flips $1B68 between 0 and 1. The rest of the game uses them to act every second to sixth frame."
  },
  {
   "address": 48648,
   "type": "line",
   "text": "In the sad land only, runs $BE0D; called from the play loop ($2060)."
  },
  {
   "address": 48653,
   "type": "line",
   "text": "Lightning, if the land's $903D is set: every third frame counts $1BED down; at 0 it starts the background flash ($20E2 = $11, the colours from $BE38), sets the next interval from a pseudo-random step of $1BEE ($1BEE x 4 + $51 + $1BEE, one more when the first addition carries; low seven bits) and plays sound $20. The wiki's unlimited-lives POKE at $BE15 lands on the BNE here, which only stops the lightning; its address must be for another version."
  },
  {
   "address": 48696,
   "type": "line",
   "text": "The lightning's background colours, read backwards as $BE38 + count by $20E1 while the count at $20E2 runs down from $11 ($BE49 first, $BE39 last): 1, 0, 1, $0C, $0B, 1, $0F, $0C, $0B, 0, 1, 1, $0F, $0F, $0C, $0B, 0. $BE38 itself is the last byte of the JMP before it."
  },
  {
   "address": 48697,
   "type": "line",
   "text": "The seventeen entries of the lightning's colour sequence proper, $BE39 (count 1, shown last) to $BE49 (count $11, shown first); the label at $BE38 names the base the count is added to."
  },
  {
   "address": 48714,
   "type": "line",
   "text": "Ends one part of the end-of-stage tally: $1B4D = 0, $1B3D on to the next part."
  },
  {
   "address": 48723,
   "type": "line",
   "text": "Prints \"SKID BONUS\" (string $11 at $46A9) and its two digits ($BE65), or, when the skid count $1BEF is 0, sets $1B54 so the skid part is skipped. Called from $F318."
  },
  {
   "address": 48741,
   "type": "line",
   "text": "Puts the skid count's two digits $1BF0-$1BF1 into string $12 ($B9FE) and prints it at $46BF."
  },
  {
   "address": 48764,
   "type": "line",
   "text": "Scores event Y ($350B) and plays the tally's tick, sound $2B."
  },
  {
   "address": 48772,
   "type": "line",
   "text": "The end-of-stage tally, a frame at a time, after $F302 has shown \"STAGE COMPLETE\". $1B3D picks the part and $1B4D counts frames in it. Part 0, time: from frame $3C, every third frame one unit of time ($37F8, redrawn by $F286) for 100 points, until the time is 000; with $1BA9 set it gives event $0E (100,000) once instead. Part 1, stars: from frame $28, one off the counter $CF83-$CF85 ($370F, redrawn by $F2EC) for 500 points each until 000; with $1B76 set (the super star bonus, $F2AA) one award of 1,000,000 instead. Part 2, skid: from frame $28, one off the skid count $1BF0-$1BF1 per step for 1000 points while $1BEF lasts, skipped when $1B54 is set. On frame $23 of part 0 and frame $14 of parts 1 and 2 it increments $1B8B, $1B8C and $1B8D, which switch on the stage-complete handler's colour stripes in rows 10-12, 14-15 and 17-18 ($F3CC-$F3FC). Then fire ($DC00 bit 4) loads the next land ($CBAD). Each frame redraws the score and lives ($BF61)."
  },
  {
   "address": 48993,
   "type": "line",
   "text": "Redraws the score ($3578) and lives ($3892) and, in the tally's last part ($1B3D = 3), waits for fire to go on to $CBAD."
  },
  {
   "address": 49019,
   "type": "line",
   "text": "Y = the land's object type $9075+Y, then falls into $BF7F. Called from $C9CB."
  },
  {
   "address": 49023,
   "type": "line",
   "text": "Gives slot X colour list Y from $B6BA/$B6C3: the list's address into $F7DD/$F7EC, its first byte into the colour $F4A4, and its delay $B6CC into $F8A0 ($BAB0). Called from $C9C6."
  },
  {
   "address": 49042,
   "type": "line",
   "text": "Operand (low byte) of the LDA $FFFF at $BF91: the colour list's address, set by $BF85."
  },
  {
   "address": 49043,
   "type": "line",
   "text": "Operand (high byte) of the LDA at $BF91, set by $BF8E."
  },
  {
   "address": 49053,
   "type": "line",
   "text": "Used by the land's scene code (Jellyland calls it from $93A4): while the countdown in its own operand ($BF9E) is not 0 it only counts it down; at 0 it shows six sprites in place of the panel: frames $D0-$D2 twice ($10DB) on both screens, colours from the land's $96D9-$96DE, positions from $10E1, sprite set-up 4 ($1A56)."
  },
  {
   "address": 49054,
   "type": "line",
   "text": "Operand of the LDA #$FF at $BF9D: frames left before $BF9D shows its sprites; $BFA1 counts it down (0 in play, $FF as loaded)."
  },
  {
   "address": 49097,
   "type": "line",
   "text": "The sound effect $3366 plays when the charge starts, by $1BB6: 1, or $10 when $1BB6 is set."
  },
  {
   "address": 49099,
   "type": "line",
   "text": "The sound effect $341E plays, by $1BB6: 2, or $11."
  },
  {
   "address": 49101,
   "type": "line",
   "text": "The sound effect $2D7F reads, by $1BB6: $0A, or $13."
  },
  {
   "address": 49103,
   "type": "line",
   "text": "A 39-byte buffer ($BFCF-$BFF5) for one row of colour RAM: $28E6 saves row 14 here (X = $26 down to 0) and $2978 puts it back into row 15 while the colour rows are moved down; that second loop ends at X = 1, so the first byte (column 0) is saved but never put back."
  },
  {
   "address": 49142,
   "type": "line",
   "text": "Ten bytes after the colour buffer (0, $FF, 1, $4A, $FF, $4F, 1, 3, $CF, $FD) with no reader found."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "The protection's punishment after a third wrong code ($44B2): stores 0 at $040A and $400A, then steps both STA operands up a byte at a time, for ever, until it overwrites itself."
  },
  {
   "address": 49155,
   "type": "line",
   "text": "Operand (low byte) of the STA $040A at $C002, incremented by $C008."
  },
  {
   "address": 49156,
   "type": "line",
   "text": "Operand (high byte) of the STA $040A, incremented at $C010 when the low byte wraps."
  },
  {
   "address": 49158,
   "type": "line",
   "text": "Operand (low byte) of the STA $400A at $C005, incremented by $C00B."
  },
  {
   "address": 49159,
   "type": "line",
   "text": "Operand (high byte) of the STA $400A, incremented at $C013."
  },
  {
   "address": 49177,
   "type": "line",
   "text": "JMP $CE66 (restart a game with the font swapped back). The ending jumps here (JMP $C019 at its $5A13); nothing in the engine, the intro or the lands names $C019, and the JMP $C002 before it never falls through."
  },
  {
   "address": 49180,
   "type": "line",
   "text": "Sprite multiplexer for the second band of objects (slots 5-9) on sprites 0-4: X high bits from $F484, and for each sprite n (0-4) not skipped: hidden (Y 0) when $F5B7 is 0, otherwise its colour $F4A9, X/Y from the latched positions $F4EA/$F4EB and frame $F503 into both screens' pointers; then the band's multicolour, priority (with $1B4F), Y and X expansion bytes $F478/$F47B/$F47E/$F481 and multicolour 1 from $1B8C. The skip flag is entry n of $F5C1-$F5C5, one per sprite column shared by all bands (written at spawn from record byte 8 bit 2 by whichever object last took that column, $E9DC); a set flag leaves the sprite as band 0 placed it. Called from the raster handlers whose JSR $C0DB the land's band table points here ($29B0, $90B0); $E5B4 turns it off and on by writing RTS or LDA to its first byte."
  },
  {
   "address": 49276,
   "type": "line",
   "text": "Sprite multiplexer for the third band of objects (slots 10-14), as $C01C with $F485, $F5BC, $F4AE, $F4F4/$F4F5, $F508, $F479/$F47C/$F47F/$F482 and $1B8D."
  },
  {
   "address": 49371,
   "type": "line",
   "text": "The RTS a band handler's JSR points at when that band shows no objects ($29EC entry 0)."
  },
  {
   "address": 49372,
   "type": "line",
   "text": "Sprite multiplexer for the first band of objects (slots 0-4), from the bottom handler $20F8 each frame: as $C01C with $F483, $F5B2, $F4A4, $F4E0/$F4E1, $F4FE, $F477/$F47A/$F47D/$F480 (X expansion cleared first) and multicolour 0 and 1 from $1B8E and $1B8B, then jumps to $F41D. A slot whose $F5B2 is 0 is hidden (Y 0); there is no skip test in this band."
  },
  {
   "address": 49476,
   "type": "line",
   "text": "The sound effects' addresses for $0C84 (read as $C144+Y and $C145+Y with Y = effect * 2): 35 effects of 20 bytes each, $0D2E, $0D42 ... $0FD6."
  },
  {
   "address": 49477,
   "type": "line",
   "text": "High bytes of the effect addresses, read by $0C94 as $C145+Y."
  },
  {
   "address": 49546,
   "type": "line",
   "text": "Moves the 15 object slots one frame (called from the play loop at $1FBA). For slot X it keeps $45 = 2X (index of its X/Y pair at $F6CF/$F6D0), $82 = its bit in its band of five and $85 = the band. Inactive slots, state 5, and a slot whose group $F846 equals $EC6F while $1BD5 is 0 are skipped; states 3 and 4 (any state from 3 but 5) skip the horizontal step and go straight to the page step. A slot without a parent ($F675) whose page counter $F6B1 reaches 3 has left the land and goes ($C3DF). With $F61B set the object homes in on the player's X ($AC) a pixel a frame, its offset $F648 bounded by $F62A/$F639; otherwise it follows its horizontal script at ($D9,X/$E8,X) through the position $0200,X. A script byte is $FE (wait here), $FD (change layer, $C55A), $10 (start again; a child re-reads its parent, $C56D), any other byte with bit 6 set (repeat: the low six bits are a count kept in $F51C and the script goes back that many times, so the stretch runs count + 1 times; $3F repeats for ever, and so does 0, which is stored again each time; the next byte is how many bytes to go back), or a move: with bit 7 set left by the low four bits, otherwise right (by the whole byte, not only its low four bits). Moving past a page edge flips the slot's X high bit and counts the page ($BA8A). Then the page step from scrolling ($F6A2), the off-screen test ($C362: an object far enough off either edge, by the scroll and its own direction, is removed or, as a child, hidden), and the vertical script ($C42A)."
  },
  {
   "address": 49853,
   "type": "line",
   "text": "Operand of the CMP #$FF at $C2BC: bit 7 of the slot's last direction ($F53A), stored by $C2AD, compared with the new move's direction to see whether it turned."
  },
  {
   "address": 49926,
   "type": "line",
   "text": "Operand of the SBC #$FF at $C305: how many bytes a repeat byte sends the horizontal script back, read from the script by $C2FE."
  },
  {
   "address": 50080,
   "type": "line",
   "text": "Operand of the CMP #$FF at $C39F: the scroll speed negated ($C399), compared with the object's own speed to see whether it outruns the scroll."
  },
  {
   "address": 50143,
   "type": "line",
   "text": "An object has left the screen or the land: a child of another ($F675) is only hidden (frame $0F, $F936 = $FE); any other is freed ($C417) together with every other slot of its group ($F846)."
  },
  {
   "address": 50195,
   "type": "line",
   "text": "Operand of the CPX #$FF at $C3FE: the slot that left, stored by $C3F9, skipped while its group is freed."
  },
  {
   "address": 50199,
   "type": "line",
   "text": "Frees slot X: frame $0F (blank), state $F558 = 5, $023C and $F5B2 = 0. Called from $BC1B, $C3F1, $C409, $C95D and $EA1D."
  },
  {
   "address": 50218,
   "type": "line",
   "text": "The vertical half of $C18A for slot X: its script at ($F6ED,X/$F6FC,X) through the position $020F,X, in the same byte format (bit 7 up, the repeat count in $F52B), moving its Y $F6D0. $10 starts it again unless $F936 is negative (a hidden child)."
  },
  {
   "address": 50298,
   "type": "line",
   "text": "Operand of the CMP #$FF at $C479: bit 7 of the slot's last vertical direction ($F549), stored by $C466."
  },
  {
   "address": 50382,
   "type": "line",
   "text": "Operand of the SBC #$FF at $C4CD: how many bytes a repeat byte sends the vertical script back ($C4C6)."
  },
  {
   "address": 50457,
   "type": "line",
   "text": "Clears the object system for a new stage ($1E11): all three bands' X high-bit, X-expansion and Y-expansion bytes ($F474-$F476, $F480-$F482, $F47D-$F47F) to $1F, and for each slot the frame ($0F), position, latched position, fade, state, active flag, repeat counts, kind, parent and group."
  },
  {
   "address": 50522,
   "type": "line",
   "text": "Script byte $FD: flips slot X between the two layers ($F6C0 EOR 2) and its sprite-behind-background bit in its band's $F47A byte."
  },
  {
   "address": 50541,
   "type": "line",
   "text": "Slot X is a child of slot $F657,X. When the parent is in state 3 or more the child is hidden (frame $0F) and $F936 = $FF; when the parent's $F666 is 0, only $F936 = $FF (the frame is left). Otherwise $F936 = 2; if the parent holds on a script code 2 ($F684 set) that hold is cleared and the parent's script index $021E moved on one, past the code; and the child takes the parent's page, page step, $F693 and direction, the horizontal script for that direction ($F7FB/$F80A or $F819/$F828), its X high bit and position, and restarts its scripts and colour list ($F909, $F52B, $020F, $022D, $F891 cleared). When the parent has a group ($F846), other than $EC6F while $1BD5 is 0, every other slot of that group restarts its animation ($C67D)."
  },
  {
   "address": 50763,
   "type": "line",
   "text": "Operand of the CPX #$FF at $C64A: the parent's slot, stored by $C645."
  },
  {
   "address": 50781,
   "type": "line",
   "text": "Blanks slot X's frame, then falls into $C662. Called from $C817."
  },
  {
   "address": 50786,
   "type": "line",
   "text": "Gives slot X the animation of type Y from the land's tables: $F927 = Y, script address $94AE+Y / $94EE+Y into $F70B/$F71A, $952E+Y into $F864, $F684 = 0; then $C67D. Called from $E51D."
  },
  {
   "address": 50813,
   "type": "line",
   "text": "Restarts slot X's animation: $021E = $FF, $F855 and $F873 = 0."
  },
  {
   "address": 50827,
   "type": "line",
   "text": "X = the byte at $0039 (LDX $0039), then $C68D. Called from $EC11."
  },
  {
   "address": 50829,
   "type": "line",
   "text": "Splits slot X (0-14) into its band Y (0-2) and its place in the band X (0-4)."
  },
  {
   "address": 50852,
   "type": "line",
   "text": "Kills slot X ($C7C3) and every other active slot in state 0 of the same group ($F846), unless of kind $FC."
  },
  {
   "address": 50869,
   "type": "line",
   "text": "Operand of the CPX #$FF at $C6B4: the slot $C6A4 started from, stored by $C6AF."
  },
  {
   "address": 50893,
   "type": "line",
   "text": "Operand of the CMP #$FF at $C6CC: the group number, stored by $C6AC."
  },
  {
   "address": 50903,
   "type": "line",
   "text": "The player hit object X ($B5A7), with its kind in $50 and the charge flag $1B52 in Y; nothing happens in state 3 or more. Kinds $FF, $FC and $F7 cannot be hurt: unless $1B9F or the power-up $1B9C is set they only make sound 3 (with $2FFB+1), and a charging hit sets $1B9F. Kind $F8 dies at once ($C72F). Kind $FD bounces the player ($2EB5 with A = $20) and plays sound $0E. Any other kind is the object's strength: charging or with the power-up it dies; otherwise the stomp's strength $1BAB is taken from it, and if that leaves 0 or more it lives on weaker ($C735), else it dies ($C6A4, then sounds 4 and 5 at $CB42)."
  },
  {
   "address": 50997,
   "type": "line",
   "text": "Stores A as slot X's new kind (the strength left) and gives the same kind to every other active slot of its group ($F846, the operand at $C754), then flashes it if it is not already flashing ($C768)."
  },
  {
   "address": 51028,
   "type": "line",
   "text": "Operand of the LDA #$FF at $C753: the new strength, stored by $C73D, given to the group's other slots."
  },
  {
   "address": 51048,
   "type": "line",
   "text": "With Z clear (Y = 1) only plays sound 3 with the parameter $2FFB+Y ($1325). Otherwise, when slot X is not already flashing, starts the white hit flash ($C7A7) on it and on the active, state-0 slots of its group, then plays sound 3 with $2FFB as the parameter."
  },
  {
   "address": 51073,
   "type": "line",
   "text": "Operand of the CPX #$FF at $C780: the slot hit, stored by $C777."
  },
  {
   "address": 51099,
   "type": "line",
   "text": "Operand of the LDY #$FF at $C79A: Y kept across the group loop ($C77A)."
  },
  {
   "address": 51111,
   "type": "line",
   "text": "Starts slot X's hit flash: keeps its colour in $F4C2 and flash mask in $F495, sets the flash timer $F4D1 = 4, the colour to white (1) and the mask to 0. $B645 restores them."
  },
  {
   "address": 51139,
   "type": "line",
   "text": "Slot X dies: unless already in state 4, sets state 4 and clears its flash masks $F486/$F495. Then it chooses what the object turns into: from the low nibble of $F8AF (4 or more: an item, its number less 4 in $F8DC), $F8EB (set: item $0A whatever the mood) and the sad/happy flag, an item frame for $F8CD from the land's $905D (0, no item, in the sad land unless $F8EB is set) and the animation number $C816 (the low nibble, 0, or the land's $9069 entry), which $C65D starts. Then the colour list from the high nibble of $F8AF ($BAA1), the object's points ($3508), its scripts cleared, and by $F8BE the multicolour bit and a double-width (X 12 left) or double-height (Y 21 up) sprite."
  },
  {
   "address": 51222,
   "type": "line",
   "text": "Operand of the LDY at $C815: the script number that $C65D starts for the object here, written by $C7DC (the low nibble of $F8AF) $C7F9 (0) or $C808 (the land's $9069 entry)."
  },
  {
   "address": 51317,
   "type": "line",
   "text": "Operand of the LDA at $C874, written by $C85B with the slot's $F8BE: when its bit 7 is clear the slot's multicolour bit in $F477 is cleared."
  },
  {
   "address": 51332,
   "type": "line",
   "text": "Operand of the LDA at $C883, written by $C847 with bit 5 of $F8BE: when set the slot's double-width bit in $F480 ($D01D) is set (and $C84C has moved X 12 left)."
  },
  {
   "address": 51345,
   "type": "line",
   "text": "Operand of the LDA at $C890, written by $C860 with bit 6 of $F8BE: when set the slot's double-height bit in $F47D ($D017) is set (and $C865 has moved Y 21 up)."
  },
  {
   "address": 51358,
   "type": "line",
   "text": "Operand of the LDX at $C89D: the slot number, saved by $C825 so it survives the calls and is reloaded on the way out."
  },
  {
   "address": 51360,
   "type": "line",
   "text": "Runs one step of every object's animation script; called once a pass from $1FC2. Takes the 15 object slots X = 0-14 but only every other one: the BEQ at $C8A7 is flipped to BNE (EOR #$20 on its opcode, $C93C) after each pass, so even and odd slots alternate. A slot is skipped when it is empty ($023C), in state 3 or 5 ($F558), waiting out its start delay ($F936: counted down, negative = frozen), or in group $F846 = $EC6F while $1BD5 is 0. In state 0, unless $F8FA is $C0, $CA8B first picks the script for its direction. The frame delay $F855 counts down and reloads from $F864; when it runs out, and $F684 is 0, the next script byte is read from ($F70B/$F71A) at index $021E: 0 restarts the script; 1 ends it ($C955); 2 holds on the current byte ($F684 = 2); 5 zeroes the delay; 3 and 4 (only while happy, or with $F5A3 set; otherwise they are frame numbers) swap the value in $F567 with one from the script, saving and restoring it through $F576; $40-$5F repeats a stretch ($CA68); anything else is a sprite frame number, stored in $F4FE. If any object turned into an item this pass ($CA07) it plays sound effect 8 ($1352)."
  },
  {
   "address": 51367,
   "type": "line",
   "text": "The branch that picks even or odd slots: $C93C flips its opcode between BEQ ($F0) and BNE ($D0) with EOR #$20 after every pass of $C8A0."
  },
  {
   "address": 51541,
   "type": "line",
   "text": "Script code 1. If the slot has no item frame in $F8CD its record in the land's object list is marked ($CB02) and the slot is freed ($C417); if bit 4 of $F5D0 is set the slot is freed without marking. Otherwise the object becomes that item: frame $F8CD, sprite expansion bits cleared for the slot (remembered in the operands at $C9D2/$C9F8), multicolour bit set while sad, its colour list chosen by $F8EB (list 5 through $BF7F when set, else the land's $9075 entry through $BF7B), the position moved to the centre of the old sprite (+12 across if it was double width, with the X high bit flipped on a carry; +21 down if double height) and state 3. In Jellyland, while $1BEB is set, an object whose $9075 entry is 0 is marked and removed instead."
  },
  {
   "address": 51628,
   "type": "line",
   "text": "Operand of the LDX at $C9AB: the slot number, saved by $C96D around the call to $C68D."
  },
  {
   "address": 51666,
   "type": "line",
   "text": "Operand of the LDA at $C9D1: the slot's double-width bit, saved by $C97F before it is cleared; when set the item is moved 12 right."
  },
  {
   "address": 51686,
   "type": "line",
   "text": "Operand of the LDX at $C9E5: the slot's bit number within its band (slot mod 5), saved by $C973 for flipping the X high bit in $F474."
  },
  {
   "address": 51688,
   "type": "line",
   "text": "Operand of the LDY at $C9E7: the slot's band (slot div 5), saved by $C976."
  },
  {
   "address": 51704,
   "type": "line",
   "text": "Operand of the LDA at $C9F7: the slot's double-height bit, saved by $C991 before it is cleared; when set the item is moved 21 down."
  },
  {
   "address": 51729,
   "type": "line",
   "text": "Script codes other than 0, 1, 2 and 5: 3 and 4 when allowed (see $C8A0), the repeat command $40-$5F, and otherwise a sprite frame number written to $F4FE."
  },
  {
   "address": 51816,
   "type": "line",
   "text": "Script command $40 + n, d: repeats the stretch before it. On first meeting it sets the counter $F873 to n and jumps back without counting (with n = 0 it counts at once, to $FF); each later meeting decrements the counter and jumps back while it is not 0, so the stretch runs n + 1 times, or 256 times with n = 0. The jump goes d bytes back from the byte d (the frame there is shown at once); when the counter runs out the script continues after the two bytes, whose index was kept in $F882."
  },
  {
   "address": 51851,
   "type": "line",
   "text": "For an object in state 0: chooses its script from the six loaded at spawn. Unless $F8FA is $40, the first time ($F918 = 0) it takes the script at $F729/$F738 when $F549 is negative, else $F747/$F756. Then, when $F8FA is 0 or $40, once ($F909 = 0) by $F53A: bit 7 set with a low nibble gives $F765/$F774, bit 7 clear with a low nibble $F783/$F792, a zero nibble $F7A1/$F7B0 (bit 7 set) or $F7BF/$F7CE."
  },
  {
   "address": 51952,
   "type": "line",
   "text": "Points slot X's animation at the script A (low) / Y (high): stores them in $F70B/$F71A, sets the index $021E to $FF so the next step reads byte 0, and clears the repeat counter $F873."
  },
  {
   "address": 51970,
   "type": "line",
   "text": "If the slot's $F5D0 is non-zero, marks the object's record in the land's object list (pointer kept in $F5DF/$F5EE at spawn): byte 10 gets bit 7 when bits 5-6 of $F5D0 are %10, otherwise bit 4 unless $F5D0 bit 4 is set. The spawner $E75E skips records whose byte 10 has bit 7 set, except when the low nibble of byte 9 is $0B or more ($E78D-$E795 jump past that test), and $E595 clears bits 4 and 7 of every record when a land starts. Called from $C95A and $BC18."
  },
  {
   "address": 52016,
   "type": "line",
   "text": "Unreached as far as found: no JSR, JMP or address in the engine, the intro, the lands or the ending names $CB30. Reads keyboard row select $FD (read_key_row $1AD6) and compares the column bits with $7F, so Z is set when only column 7 of that row is down. A leftover."
  },
  {
   "address": 52024,
   "type": "line",
   "text": "Restarts slot X's animation script from its first byte ($C67D: index $FF, delay and repeat counter 0) and clears $F909 and $F684. Called from $C21F, $C23C, $C256, $C2C0."
  },
  {
   "address": 52034,
   "type": "line",
   "text": "Requests sound effects 4 and 5 through $1352 (X = 4, then 5); reached by JMP from $C732."
  },
  {
   "address": 52043,
   "type": "line",
   "text": "Item effect 6: entry 6 of the dispatch table $F994/$F99D, reached through the JMP at $BC52. Sets $1BAA to $14 and $1BC0 to $1E. While $1BAA is non-zero the time tick at $37F8 decrements it instead of the time, so the clock stands still for 20 ticks. Its RTS is the byte at $CB55, which doubles as entry 0 of the mask table there."
  },
  {
   "address": 52053,
   "type": "line",
   "text": "Masks that clear the lowest x bits: entry x (1-7) is $FF shifted left x times ($FE, $FC ... $80). Read only by the loading bar at $CE0D with x = 1-7; entry 0 is the RTS of $CB4B."
  },
  {
   "address": 52061,
   "type": "line",
   "text": "Single-bit masks, entry x = 1 << x ($01-$80). Read throughout the object code to set an object's bit in the per-band sprite attribute bytes ($F474-$F485), with x = slot mod 5 from $C68D."
  },
  {
   "address": 52069,
   "type": "line",
   "text": "The complements of $CB5D: entry x = all bits but bit x ($FE-$7F). Used to clear an object's bit in the per-band sprite attribute bytes ($F474-$F485)."
  },
  {
   "address": 52077,
   "type": "line",
   "text": "Y = which group of ten X falls in: 0 for X < 10, 1 for X < 20, 2 otherwise. Called from $B4E8."
  },
  {
   "address": 52090,
   "type": "line",
   "text": "Twenty-two sprite Y coordinates eight lines apart, $35 + 8n: $2D59 copies entry $1BE6 into $1BE4 (the coordinate $E2F0 and $E426 read as Mayhem's height), so it turns a character row into a sprite line."
  },
  {
   "address": 52112,
   "type": "line",
   "text": "\"LOADING : JELLYLAND\", ASCII, $FF-terminated: string 9 of the print routine $B817 (pointer tables $B8F8/$B913). The loader prints it for the first land; later lands print string 8, the \"LOADING :\" line at $9151 of the land just finished."
  },
  {
   "address": 52132,
   "type": "line",
   "text": "Fire-button latch of the \"insert side B\" prompt ($CD02-$CD13): cleared while fire is held, set to 1 when fire is let go after a press. It is 0 in the image as loaded, so the first time the prompt appears the loader retries after the delay without waiting for fire (nothing else writes it)."
  },
  {
   "address": 52133,
   "type": "line",
   "text": "Start a game from the first land. Entered by JMP from the protection screen ($45D7), from $3E9E (game over) and through $CE66. Banks every ROM and the I/O out ($01 = $34) to run $D76E, which resets the level index to $FF and the quota strings, then falls into $CBAD."
  },
  {
   "address": 52141,
   "type": "line",
   "text": "Load the next land and start it ($BF78 jumps here after a stage is won). Increments the level index $CF89, silences ($0D1B), clears the stack page to $FF and $0002-$00FF to 0, blanks the screen and sprites, sets screen $4400 with characters at $5000 ($D018 = $15), swaps pages through $3F54 (3: $7800-$7FFF with $5000-$57FF, 4: $D800-$DFFF with $7800-$7FFF, 6: the drive code at $D000 with $4000), builds the file name from $CF10 and the level index (\"LA\"-\"LE\", \"CF\" for the ending), prints the loading screen through $B817 (string 9 or 8, then the two quota lines from $916F and $9185 unless the ending is next), turns the screen on and adds a life ($3866, at $CC55). Then, with the KERNAL in ($01 = $36), opens the file through the KERNAL's serial routines (SETLFS, SETNAM, LISTEN, SECOND, then $F3F6 in ROM to send the name, TALK, TKSA, ACPTR). A status of $42 in $90 at $CC5C would go straight to the prompt, but $90 was zeroed with the rest of zero page at $CBC6; if the drive does not answer, or the file is not found, it shows \"INSERT SIDE B AND PRESS FIRE\" ($CCF5). Otherwise it uploads the drive code with M-W, starts it with M-E at $07AB and receives the file into $5A00-$B0FF with $CE6C, moving the loading bar one pixel a block. Afterwards it restores the screen and swaps pages again (5 and 6) and starts the land: Jellyland through $F45E (the land's own code at $A547), the other lands through $E54F and $3B3F, the ending at $5A00."
  },
  {
   "address": 52469,
   "type": "line",
   "text": "The disk prompt. Writes the 28 glyphs at $CEE1 to the bottom row of screen $4400 ($47C6), waits for the fire button to be pressed and released ($CBA4, joystick port 2 bit 4; the first time the prompt appears it does not wait, since $CBA4 starts at 0), waits about 65,000 loop passes, then retries the load from $CC65."
  },
  {
   "address": 52515,
   "type": "line",
   "text": "The file was found: clears the prompt row, uploads the 256-byte drive routine from $4000 (where swap 6 put the copy kept at $D000) into drive RAM $0700-$07FF in eight M-W commands of 32 bytes, starts it with M-E $07AB, builds the 256-byte decoding table at $4B00 from $CEAD (each entry repeated eight times), and receives the file: four bytes before the first data byte (the first block's link and the file's load address), two link bytes before each later block's 254 data bytes, stored from $5A00 upward through the patched STA at $CDC3 until the high byte reaches $CF0C ($B1). Every block moves the loading bar ($CDDB): blocks 1-7 of a cell each clear one more pixel column (from the right) of rows 1-6 of glyph $BE with $CB55; on the eighth the cell becomes glyph $BF and the bar moves one cell left ($CF16, $CF17). The first cell's count starts at 1 ($CC7B), so its first block clears two columns and its seventh moves the bar on."
  },
  {
   "address": 52676,
   "type": "line",
   "text": "Low byte of the fast loader's store address: the operand of the STA at $CDC3, incremented after each byte by $CDC8."
  },
  {
   "address": 52677,
   "type": "line",
   "text": "High byte of the fast loader's store address: set to $5A from $CF0D by $CDAB, incremented at $CDCD and compared with $CF0C ($B1) to end the load."
  },
  {
   "address": 52760,
   "type": "line",
   "text": "After the last byte: reads 256 more bytes from the drive and discards them, switches the I/O back in ($01 = $35), waits for raster line 0, restores the play-time display set-up and the pages swapped before the load (5: $D800-$DFFF with $5000; 6: the drive code back to $D000), and branches by level index: 0 Jellyland via $F45E, 5 the ending at $5A00 with a fresh stack, others via $E54F then $3B3F with A = 0."
  },
  {
   "address": 52838,
   "type": "line",
   "text": "Reached by JMP from $C019: swaps $D800-$DFFF with $7800-$7FFF ($3F52, swap 0) and starts a new game at $CBA5."
  },
  {
   "address": 52844,
   "type": "line",
   "text": "Receives one byte from the drive's fast-load routine. Raises the line in $A4 on CIA 2 port A, waits for the drive to raise DATA (bit 7), waits for a raster position away from the lines whose low bits are 2 or 3 (bad lines) once below line $31, drops the line ($A5) and, after ten NOPs, reads $DD00 four times on a fixed cycle count; each value read indexes the table at $4B00 offset by 0, 8, 16 and 24 in turn, and the four results ORed together are the byte, returned in A. Ends with CLI."
  },
  {
   "address": 52909,
   "type": "line",
   "text": "The 32 values from which $CD91 builds the decoding table at $4B00 (each repeated eight times). Each group of eight belongs to one state of the CLK and DATA lines in a read of $DD00 (group 0 both low, 1 CLK high, 2 DATA high, 3 both high), and its first four entries are the bits that state gives in the first, second, third and fourth read ($A0/$50/$0A/$05, $20/$10/$02/$01, $80/$40/$08/$04, and 0), since $CE6C indexes the table at offsets 0, 8, 16 and 24. The rest are $FF or 0, for port values that do not occur."
  },
  {
   "address": 52941,
   "type": "line",
   "text": "Opens the drive's command channel (LISTEN device $BA, secondary $6F) and sends \"M-\"; the caller sends \"W\" or \"E\" and the rest."
  },
  {
   "address": 52961,
   "type": "line",
   "text": "\"INSERT SIDE B AND PRESS FIRE\" in the loading font's glyph numbers: $90 + the letter's place in the alphabet, $FF a space. Copied to the bottom screen row by $CCF5."
  },
  {
   "address": 52989,
   "type": "line",
   "text": "\"LOADING . . . \", ASCII, $FF-terminated. No reader was found by absolute address, and it is not one of the print routine's pointers at $B8F8/$B913."
  },
  {
   "address": 53004,
   "type": "line",
   "text": "$B1: the page at which the fast loader stops (the land occupies $5A00-$B0FF). Written by $CC10, read at $CDD3."
  },
  {
   "address": 53005,
   "type": "line",
   "text": "$5A: the first page the fast loader writes, copied into the STA at $CDC3 by $CDA8. Written by $CC0B."
  },
  {
   "address": 53006,
   "type": "line",
   "text": "The two-letter file name passed to the KERNAL's SETNAM: the first letter from $CF10 (L or C), the second \"A\" + level index; so \"LA\"-\"LE\" are the lands and \"CF\" the ending. Written by $CC06/$CC17; \"**\" as loaded."
  },
  {
   "address": 53007,
   "type": "line",
   "text": "Second letter of the file name: \"A\" + level index, written by $CC17."
  },
  {
   "address": 53008,
   "type": "line",
   "text": "The first letter of each file name by level index: \"L\" for the five lands, \"C\" for the ending (index 5)."
  },
  {
   "address": 53014,
   "type": "line",
   "text": "The loading bar's current cell, 10 down to 0 (screen $4577 + cell). Set to 10 by $CC80, stepped by $CDE3-$CDF5."
  },
  {
   "address": 53015,
   "type": "line",
   "text": "Blocks received within the current cell of the loading bar, 0-7: 1 at the start ($CC7B), 0 after each move to a new cell ($CE03), counted up by $CDDB."
  },
  {
   "address": 53016,
   "type": "line",
   "text": "A rising table of 96 small steps (0, then 1s, 2s, 3s ... up to 8 at $CF76): $237E adds entry $1B81 to the player's X $1BE3 as $1B81 counts down, and $3392 reads the table one entry on as the scroll speed for the speed counter $1B51, so it is a curve of horizontal speeds (the big steps at the top entries, small near 0). $CF77 is cleared with the score by $E52D."
  },
  {
   "address": 53017,
   "type": "line",
   "text": "The same curve read one entry on: $3392 returns entry Y + 1 of $CF18 in X, halved (at least 1) when $1BB6 is set."
  },
  {
   "address": 53111,
   "type": "line",
   "text": "Written only by $E536 (the new-game clear, X = 0) in the loop that clears the score from $CF78; it is also the last entry of the jump curve $CF18."
  },
  {
   "address": 53112,
   "type": "line",
   "text": "The score, nine decimal digits one per byte, most significant first ($CF80 the units). $350B adds an amount from $34E7 at a digit from $34F7 with carry, and calls $3636 (a life and its sound) when the amount is added at the millions digit $CF7A or a carry rolls the hundred-thousands digit $CF7B over from 9; an amount added at $CF7B itself (event $0E, 100,000) that carries into the millions gives no life (from $3545 the carry starts at $CF7A, past the test at $355A). $3578 redraws each digit that differs from its copy at $CF8C. Cleared by $E52D at a new game."
  },
  {
   "address": 53113,
   "type": "line",
   "text": "Score digit for the ten millions (second of nine at $CF78-$CF80)."
  },
  {
   "address": 53114,
   "type": "line",
   "text": "Score digit for the millions: an amount added to it, or a carry that rolls $CF7B over from 9, gives an extra life through $3636 (a carry out of an amount added at $CF7B does not; see $CF78)."
  },
  {
   "address": 53115,
   "type": "line",
   "text": "Score digit for the hundred thousands."
  },
  {
   "address": 53116,
   "type": "line",
   "text": "Score digit for the ten thousands."
  },
  {
   "address": 53117,
   "type": "line",
   "text": "Score digit for the thousands."
  },
  {
   "address": 53118,
   "type": "line",
   "text": "Score digit for the hundreds."
  },
  {
   "address": 53119,
   "type": "line",
   "text": "Score digit for the tens."
  },
  {
   "address": 53120,
   "type": "line",
   "text": "Score digit for the units, the last of the nine at $CF78; drawn at sprite position $AF by $35E0. Not a lives digit."
  },
  {
   "address": 53121,
   "type": "line",
   "text": "Lives, tens digit (the units are $CF82). $3866 adds a life; $BDC1 takes one (decrementing this digit at $BDCE when the units are 0); $3E77 sets it to 0 with the units to 3; $1EB6 sets it to $FF when the player quits with Q, which $3BAC reads as game over (negative). Drawn by $3892 at sprite position $EE."
  },
  {
   "address": 53122,
   "type": "line",
   "text": "Lives, units digit: 3 at a new game ($E547) and at $3E7C. $3866 adds a life with a decimal carry into $CF81; $BDC1 takes one ($BDC7-$BDD3, borrowing from $CF81 and leaving 0). Also read by $10EF."
  },
  {
   "address": 53123,
   "type": "line",
   "text": "The count of magic dust still needed (sad) or of stars still needed (happy), three decimal digits $CF83-$CF85, most significant first. Set from the land's $903E-$9040 at the start of a land ($E583, X = 2) and from $9041-$9043 when the land turns happy ($3BC6, X = 5); $370F counts it down, $3675 up; drawn by $3762 at sprite positions $2D-$2F. On the stage-complete screen $F29D tests it for 000 and otherwise rewrites it as the land's $904A-$904C minus itself (the stars over the quota, $F2D8), which the tally then counts down ($BEEA-$BEFC)."
  },
  {
   "address": 53124,
   "type": "line",
   "text": "Middle digit of the count in $CF83-$CF85."
  },
  {
   "address": 53125,
   "type": "line",
   "text": "Last digit of the count in $CF83-$CF85."
  },
  {
   "address": 53126,
   "type": "line",
   "text": "The time left, three decimal digits $CF86-$CF88, most significant first. Set by $BD37 from the land's $9044-$9046 (sad) or $9047-$9049 (happy); $37E9 counts it down one unit each time $1BEA has counted $4A down past 0 (unless $1BAA is non-zero: then $1BAA is counted instead, the clock-stop item); at 000 it sets $1BB9 and jumps to $B5E9; drawn by $37A1 at sprite positions $6D-$6F; read by the stage-complete screen ($F269, $F289) for the time bonus."
  },
  {
   "address": 53127,
   "type": "line",
   "text": "Middle digit of the time in $CF86-$CF88."
  },
  {
   "address": 53128,
   "type": "line",
   "text": "Last digit of the time in $CF86-$CF88."
  },
  {
   "address": 53129,
   "type": "line",
   "text": "Which land: 0-4 Jellyland, Pipeland, Spottyland, Cherryland, Rockland; 5 the ending. $D76E sets it to $FF and $CBB0 increments it before each load, so a new game loads land 0; it picks the file name ($CC00), the loading text ($CC1A, $CC34, and $1096 for its colours) and the start-up path ($CE44). Also read by $3E86 and by $C9B5 (Jellyland's rule in $C955)."
  },
  {
   "address": 53130,
   "type": "line",
   "text": "Continues left: 3 at a new game ($E54C); $3EAF decrements it, $10C1 increments it, $3DF9 and $3EAA read it."
  },
  {
   "address": 53131,
   "type": "line",
   "text": "A 0/1 flag kept while the land is happy ($1BEC): $3753 sets it when the count in $CF83-$CF85 falls below the land's $904A-$904C, $36BA clears it when the count climbs back to $904D-$904F. While it is set $F0E5 cycles the colour at $18E4. Cleared at the start of a land ($E569). Also read by $2B4C, $36A6, $373B, $38F3 and $3A9D."
  },
  {
   "address": 53132,
   "type": "line",
   "text": "The score digits as last drawn: $3578 redraws a digit of $CF78-$CF80 only where it differs from its copy here. Set to $FF by $E52D and by $3BA3 (at the start of a stage) to force a full redraw, refreshed from the score by $3513."
  },
  {
   "address": 53133,
   "type": "line",
   "text": "Drawn copy of the score's ten-millions digit $CF79."
  },
  {
   "address": 53134,
   "type": "line",
   "text": "Drawn copy of the score's millions digit $CF7A."
  },
  {
   "address": 53135,
   "type": "line",
   "text": "Drawn copy of the score's hundred-thousands digit $CF7B."
  },
  {
   "address": 53136,
   "type": "line",
   "text": "Drawn copy of the score's ten-thousands digit $CF7C."
  },
  {
   "address": 53137,
   "type": "line",
   "text": "Drawn copy of the score's thousands digit $CF7D."
  },
  {
   "address": 53138,
   "type": "line",
   "text": "Drawn copy of the score's hundreds digit $CF7E."
  },
  {
   "address": 53139,
   "type": "line",
   "text": "Drawn copy of the score's tens digit $CF7F."
  },
  {
   "address": 53140,
   "type": "line",
   "text": "Drawn copy of the score's units digit $CF80."
  },
  {
   "address": 53141,
   "type": "line",
   "text": "The count $CF83-$CF85 as last drawn ($36C3 copies, $3762 compares)."
  },
  {
   "address": 53142,
   "type": "line",
   "text": "Drawn copy of $CF84, the middle digit of the dust/stars count."
  },
  {
   "address": 53143,
   "type": "line",
   "text": "Drawn copy of $CF85, the last digit of the dust/stars count."
  },
  {
   "address": 53144,
   "type": "line",
   "text": "The time $CF86-$CF88 as last drawn ($37D4 copies, $37A1 compares)."
  },
  {
   "address": 53145,
   "type": "line",
   "text": "Drawn copy of the time's tens digit $CF87."
  },
  {
   "address": 53146,
   "type": "line",
   "text": "Drawn copy of the time's units digit $CF88."
  },
  {
   "address": 53147,
   "type": "line",
   "text": "Six little-endian pointers, $8A00, $8B00 ... $8F00: the pages of the land's tile tables. $25F7/$25FD copy pointer X into the LDA at $2603, which reads entry Y of each page."
  },
  {
   "address": 53148,
   "type": "line",
   "text": "High bytes of the pointers at $CF9B ($8A-$8F), read at $25FD into the high byte of the LDA at $2603."
  },
  {
   "address": 53159,
   "type": "line",
   "text": "Eight runs of colour numbers, each ended by $10: $CFA7 (5), $CFAD (8), $CFB6 (12), $CFC3 (7), $CFCB (10), $CFD6 (9), $CFE0 (7), $CFE8 (10). They are the object colour lists 0-8 (list 7 repeats $CFC3), reached through the pointer tables $B6BA/$B6C3 by $BF7F and $EB76 and stepped by $B645; the stage-complete raster handler also steps through $CFD6 ($F375)."
  },
  {
   "address": 53206,
   "type": "line",
   "text": "Colour list 5 of the objects (the items' colours: $C9C4 picks it through $B6BA), and the colour run that the stage-complete handler steps through: $F375 reads entry $39 and wraps when it meets $10 (9 colours: $07 $0A $02 $03 $0E $06 $0D $05 $0B). The handler only compares the value it reads."
  },
  {
   "address": 53235,
   "type": "line",
   "text": "Thirteen bytes after the colour runs ($B4 00 00 00 FF BC BD FF FD B4 FC FD FB) with no reader found by absolute address; unknown."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The 1541 fast loader's 256 bytes of drive code, kept in the RAM under the VIC registers: the land loader swaps this page to $4000 ($3F54 entry 6) and writes it to the drive's $0700 in M-W commands ($CD3F), then starts it with M-E $07AB. With the I/O in, the address is sprite 0's X register instead, which $1A0C, $34A3, $4631, $B1E4, $BFBE, $C03E, $C09E, $C0F9 and $E1E6 write (most of them indexed stores that cover the other sprite registers too)."
  },
  {
   "address": 53504,
   "type": "line",
   "text": "Start of 1.5 KB ($D100-$D6FF) kept here and run at $6000-$65FF: $3F54 entry 7 swaps these six pages with $6000-$65FF, from $3BC1 just before $3BC9 jumps into it at $638D (here $D48D), and $3BCC swaps them back when the scene ends (the scene's own last JSR $3F54, at $64F2 here $D5F2, has X = 0: swap 0, $D800-$DFFF with $7800-$7FFF). This first part ($6000-$635F when swapped in) is not decoded here; the sprite pointers $80, $82 and $83 that its code writes select images at $6000-$60FF, so it holds at least those, and it holds the routine $6300 (here $D400). The scene is played between the sad and the happy half of a land: $3BC6 loads the star quota just before it and $3BD1 restarts play with A = 1 after it; by the features it is presumably Theo's cave, not checked live. Not disassembled in place, since its addresses only make sense at $6000."
  },
  {
   "address": 54368,
   "type": "line",
   "text": "Code of the scene block as it runs at $6360-$638C (called from $64CD); see $D100. Kept as bytes because its addresses are those of $6000."
  },
  {
   "address": 54413,
   "type": "line",
   "text": "The scene's entry as it runs at $638D: fills the screens ($1A1C, colour 8, glyph $EE), places seven sprites from its tables at $659D-$65B8, patches the sprite bytes at $5812-$5825 ($E29F, $6573), sets the background colours $D021-$D023 from the land's $9196-$9198 and fills colour RAM $DADD-$DAEA (row 18, columns 13-26) with the land's $9199 ($63CD-$63D6), draws its picture rows into screen $4400 from $65B9-$65CA, zeroes colour RAM $D852-$D951 and $D8F2-$D9F1 ($640C-$6413), sets up the sound numbers $23, $22 and $21 through $3F0E (which $3F17, called at $D65E, requests one every second frame through $1352), installs its raster handler $64F8 through $1809 and then loops once a frame on stages kept in $1B3D (sprite movement, sound numbers $24-$26 and $27-$29 through $3F0E, $BE4A), until in stage 4 the fire button ends it: sprites off ($19BD), the SID silenced ($0D1B), $6573 with X = 0, swap 0 ($3F54 with X = 0: $D800-$DFFF with $7800-$7FFF) and JMP $3BCC, which swaps the six pages back. Its raster handlers are at $64F8 and $653F. Kept as bytes; see $D100."
  },
  {
   "address": 54924,
   "type": "line",
   "text": "The scene's tables as they sit at $658C-$65CA: four pairs of sprite bytes for $6573, the frame list $6594 (ends with 0), seven sprite positions ($659D), pointers ($65AB) and colours ($65B2), and the picture row read by $63DC-$63EC as $65B9,Y (Y = 0-$11), whose last byte is past this label, at $D6CA. See $D100."
  },
  {
   "address": 54986,
   "type": "line",
   "text": "The last 54 bytes of the swapped block ($65CA-$65FF when swapped in). The first, $D6CA ($AD), is the last byte of the scene's picture row: the loop at $63D8 (here $D4D8) reads $65B9,Y for Y = 0-$11. The other 53, $D6CB-$D6FF, look like note-and-length pairs ($BC $0A, $23 $7A ...); Jellyland's $9E74-$9E84 exchanges them, with the 110 bytes after them, with $7200-$72A2 ($01 = $24, X = $A3 down to 1). What they hold there is not established."
  },
  {
   "address": 55040,
   "type": "line",
   "text": "110 bytes ($D700-$D76D) after the swapped block, in the same note-and-length vocabulary ($BC $0A, $24 $03 ...). Outside the six pages that entry 7 swaps, so they never reach $6000 that way; Jellyland's $9E74-$9E84 exchanges $D6CB-$D76D with $7200-$72A2 ($01 = $24). Their meaning is not established."
  },
  {
   "address": 55150,
   "type": "line",
   "text": "Run by $CBAA with every ROM and the I/O banked out ($01 = $34): copies the default quota lines at $D77D (\"MAGIC DUST QUOTA : 10\", \"STAR QUOTA : 113\", 39 bytes) to $916F-$9195, where the loading screen prints them from (strings 19 and 20 of $B817), and sets the level index $CF89 to $FF so the next load is land 0. Each land's own file carries the following land's lines at those addresses."
  },
  {
   "address": 55165,
   "type": "line",
   "text": "\"MAGIC DUST QUOTA : 10\" and \"STAR QUOTA : 113\", ASCII, each $FF-terminated: Jellyland's quotas as the loading screen shows them, copied to $916F by $D76E."
  },
  {
   "address": 55204,
   "type": "line",
   "text": "91 bytes ($D7A4-$D7FE) of unknown use: 52 two-bit pixel-like values ($55/$5x/$Fx ...) to $D7D7, then $FF to the end; no reader found by address."
  },
  {
   "address": 55295,
   "type": "line",
   "text": "The byte before colour RAM (I/O meaning, $01 = $35): loops that run X from $FB down to 1 store through $D7FF,X so that X = 1 lands on $D800: filled with A by fill_screens ($1A1C); filled with 1 (white) by the protection screen's set-up at $4693. The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 0, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Read by the colour shift at $28E1 (X = $26 down to 0), which moves it down into row 1. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). These cell comments list the engine's own instructions; the intro and the ending write colour RAM with code of their own. RAM meaning: $D800-$DFFF is 2 KB that $3F54 swaps with $7800-$7FFF (entries 0 and 4) and with $5000-$57FF (entry 5), with $01 = $24 so that the RAM and not colour RAM is exchanged; at the hand-over it holds the character set that the start-up ($3F52, entry 0) moves to $7800 for the protection screen."
  },
  {
   "address": 55336,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 1, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 2, then written from row 0. Set by the stage card at $3D17-$3D20 to $E3F6 while sad or $E406 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55337,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 1, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 2, then written from row 0. Set by the stage card at $3D17-$3D20 to $E3F7 while sad or $E407 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55352,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 1, column 16. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 2, then written from row 0. Set by the stage card at $3D17-$3D20 to $E3F6 while sad or $E406 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55368,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 1, column 32. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 2, then written from row 0. Set by the stage card at $3D35/$3D38 to $E3F6 while sad or $E406 while happy (X = 7 down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55375,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 1, column 39. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Set by the stage card at $3D17-$3D20 to $E3F6 while sad or $E406 while happy (X = $0F down to 0). Set by the stage card at $3D35/$3D38 to $E3FD while sad or $E40D while happy (X = 7 down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55376,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 2, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 3, then written from row 1. Set by the stage card at $3D17-$3D20 to $E3F7 while sad or $E407 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55377,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 2, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 3, then written from row 1. Set by the stage card at $3D17-$3D20 to $E3F8 while sad or $E408 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55391,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 2, column 15. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 3, then written from row 1. Set by the stage card at $3D17-$3D20 to $E3F6 while sad or $E406 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55407,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 2, column 31. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 3, then written from row 1. Set by the stage card at $3D35/$3D38 to $E3F6 while sad or $E406 while happy (X = 7 down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55415,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 2, column 39. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Set by the stage card at $3D4B to $E3FE while sad or $1008 while happy. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55416,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 3, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 4, then written from row 2. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55417,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 3, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 4, then written from row 2. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55456,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 4, column 0. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 5, then written from row 3. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55457,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 4, column 1. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 5, then written from row 3. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55461,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 4, column 5. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 5, then written from row 3. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Set each frame of the stage-complete screen by $F3B1 from $F257 entry X - 1 (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen by the colour cycle $B43D, block 7 ($D8A5-$D8C4, called at $F3C3). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55496,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 5, column 0. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 6, then written from row 4. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55497,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 5, column 1. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 6, then written from row 4. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55501,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 5, column 5. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 6, then written from row 4. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Set each frame of the stage-complete screen by $F39A from $F257 entry X (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen by the colour cycle $B43D, block 8 ($D8CD-$D8EC, called at $F3C9). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55505,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 5, column 9. Set to $0E by $10A7 on the loading screen, rows 4-5 from column 0 to the column after the colon of \"LOADING :\" (X = 17-20 by land; not before the ending). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 6, then written from row 4. Set by the stage card at $3D5D-$3D66 to $E3F6 while sad or $1000 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen by the colour cycle $B43D, block 8 ($D8CD-$D8EC, called at $F3C9). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55521,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 5, column 25. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 6, then written from row 4. Set by the stage card at $3D5D-$3D66 to $E3F6 while sad or $1000 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen by the colour cycle $B43D, block 8 ($D8CD-$D8EC, called at $F3C9). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55536,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set by the stage card at $3D5D-$3D66 to $E405 while sad or $100F while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55537,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55544,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 8. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set by the stage card at $3D5D-$3D66 to $E3F6 while sad or $1000 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55545,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 9. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set by the stage card at $3D5D-$3D66 to $E3F7 while sad or $1001 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55552,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 16. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set by the stage card at $3D5D-$3D66 to $E3FE while sad or $1008 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55560,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 6, column 24. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 7, then written from row 5. Set by the stage card at $3D5D-$3D66 to $E3F6 while sad or $1000 while happy (X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55576,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 7, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 8, then written from row 6. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55577,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 7, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 8, then written from row 6. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55616,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 8, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 9, then written from row 7. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55617,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 8, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 9, then written from row 7. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55656,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 9, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 10, then written from row 8. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55657,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 9, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 10, then written from row 8. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55671,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 9, column 15. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 10, then written from row 8. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Set to 3 (cyan) under the loading bar by $CC73 (row 9, columns 15-25, X = $0A down to 0). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55696,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 10, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 11, then written from row 9. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55697,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 10, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 11, then written from row 9. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55708,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 10, column 12. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 11, then written from row 9. Set by the stage card at $3C2A-$3C84 to the land's $9107 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55735,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 10, column 39. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Set each frame of the stage-complete screen by $F3B7 from $F247 entry X - 1 (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 9 ($D9B7-$D9DE, called at $F3D4). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55736,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 11, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 12, then written from row 10. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 9 ($D9B7-$D9DE, called at $F3D4). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55737,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 11, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 12, then written from row 10. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 9 ($D9B7-$D9DE, called at $F3D4). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55775,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 11, column 39. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Set each frame of the stage-complete screen by $F3A0 from $F247 entry X (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55776,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 12, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 13, then written from row 11. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55777,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 12, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 13, then written from row 11. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55788,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 12, column 12. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 13, then written from row 11. Set by the stage card at $3C2A-$3C84 to the land's $9107 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Zeroed by the scene code at $D50C/$D50F (run at $640C/$640F, X = 0-255: $D852-$D951 and $D8F2-$D9F1). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55795,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 12, column 19. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 13, then written from row 11. Set by the stage card at $3C2A-$3C84 to the land's $9107 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55808,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 12, column 32. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 13, then written from row 11. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8B is set by the colour cycle $B43D, block 10 ($D9DF-$DA06, called at $F3DA). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55816,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 13, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 14, then written from row 12. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55817,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 13, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 0): read into row 14, then written from row 12. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55856,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 14, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Written by the colour shift at $28E1 from row 13; its old colour is saved in $BFCF but never put back, since the loop for rows 15-24 ($2940-$297F) stops at X = 1. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Set each frame of the stage-complete screen by $F3BA from $F247 entry X - 1 (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 11 ($DA30-$DA57, called at $F3E5). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55857,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 14, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Written by the colour shift at $28E1 from row 13; its old colour is kept in $BFCF and put back as row 15. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 11 ($DA30-$DA57, called at $F3E5). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55858,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 14, column 2. Set to $0A by the loading screen's colouring at $1081 ($DA32-$DA51 and $DA5A-$DA79, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Written by the colour shift at $28E1 from row 13; its old colour is kept in $BFCF and put back as row 15. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 11 ($DA30-$DA57, called at $F3E5). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55868,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 14, column 12. Set to $0A by the loading screen's colouring at $1081 ($DA32-$DA51 and $DA5A-$DA79, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Written by the colour shift at $28E1 from row 13; its old colour is kept in $BFCF and put back as row 15. Set by the stage card at $3C2A-$3C84 to the land's $90ED + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 11 ($DA30-$DA57, called at $F3E5). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55896,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 15, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Set each frame of the stage-complete screen by $F3A3 from $F247 entry X (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 12 ($DA58-$DA7F, called at $F3EB). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55897,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 15, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Read into row 16 by the colour shift at $28E1, then written from $BFCF (row 14's old colour). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 12 ($DA58-$DA7F, called at $F3EB). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55898,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 15, column 2. Set to $0A by the loading screen's colouring at $1081 ($DA32-$DA51 and $DA5A-$DA79, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Read into row 16 by the colour shift at $28E1, then written from $BFCF (row 14's old colour). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 12 ($DA58-$DA7F, called at $F3EB). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55908,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 15, column 12. Set to $0A by the loading screen's colouring at $1081 ($DA32-$DA51 and $DA5A-$DA79, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Read into row 16 by the colour shift at $28E1, then written from $BFCF (row 14's old colour). Set by the stage card at $3C2A-$3C84 to the land's $90EF + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8C is set by the colour cycle $B43D, block 12 ($DA58-$DA7F, called at $F3EB). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55936,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 16, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55937,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 16, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 17, then written from row 15. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55948,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 16, column 12. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 17, then written from row 15. Set by the stage card at $3C2A-$3C84 to the land's $90F1 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55976,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 17, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Set each frame of the stage-complete screen by $F3BD from $F247 entry X - 1 (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 13 ($DAA8-$DACF, called at $F3F6). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55977,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 17, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 18, then written from row 16. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 13 ($DAA8-$DACF, called at $F3F6). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 55988,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 17, column 12. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 18, then written from row 16. Set by the stage card at $3C2A-$3C84 to the land's $90F3 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 13 ($DAA8-$DACF, called at $F3F6). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56011,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 17, column 35. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 18, then written from row 16. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 13 ($DAA8-$DACF, called at $F3F6). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56016,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 18, column 0. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Set each frame of the stage-complete screen by $F3A6 from $F247 entry X (X stepping down 15-0 with $F38E). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 14 ($DAD0-$DAF7, called at $F3FC). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56017,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 18, column 1. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 19, then written from row 17. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 14 ($DAD0-$DAF7, called at $F3FC). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56028,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 18, column 12. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 19, then written from row 17. Set by the stage card at $3C2A-$3C84 to the land's $90F5 + $1BEC (sad or happy), on columns 12-27. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 14 ($DAD0-$DAF7, called at $F3FC). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56045,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 18, column 29. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 19, then written from row 17. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 14 ($DAD0-$DAF7, called at $F3FC). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56051,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 18, column 35. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 19, then written from row 17. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). Rotated one place each frame of the stage-complete screen while $1B8D is set by the colour cycle $B43D, block 14 ($DAD0-$DAF7, called at $F3FC). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56056,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 19, column 0. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56057,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 19, column 1. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 20, then written from row 18. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56064,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 19, column 8. Set to 7 by the loading screen's colouring at $1081 ($DACB-$DAEA and $DAF3-$DB12, X = $1F down to 0). Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 20, then written from row 18. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56096,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 20, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56097,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 20, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 21, then written from row 19. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56136,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 21, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56137,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 21, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 22, then written from row 20. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56143,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 21, column 7. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 22, then written from row 20. Set by the stage card at $3CF5 to $E3F6 while sad or $E416 while happy ($E3F6,Y, X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56159,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 21, column 23. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 22, then written from row 20. Set by the stage card at $3CF5 to $E3F6 while sad or $E416 while happy ($E3F6,Y, X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56176,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 22, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56177,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 22, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 23, then written from row 21. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56182,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 22, column 6. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 23, then written from row 21. Set by the stage card at $3CF5 to $E3F6 while sad or $E416 while happy ($E3F6,Y, X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56198,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 22, column 22. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 23, then written from row 21. Set by the stage card at $3CF5 to $E3F6 while sad or $E416 while happy ($E3F6,Y, X = $0F down to 0). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56216,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 23, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by the colour shift at $247C (X = 0-$25) from the cell 41 on (a row down, a column right). Written by recolour_column ($2550, from $2997, through ($3B)) with the land's $8900 colour for the character on screen: column 0 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56217,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 23, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($119F, $11A9, $11E4: the land's $8900 colour for the character there, through ($4B)/($4D) set by $EFF7), which covers rows 0-23 from any of its five start rows. Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). The colour shift at $247C (X = 0-$25) copies the cell 41 on (a row down, a column right) into it and copies it to the cell 41 back. Written by recolour_column ($2550, through ($3B)) when $1B42 is set, which repeats each pass one column on: column 1 of rows 0-23. Written by the column drawer $27FF ($2840 through ($3E): the land's $8900 colour for each new character, 24 rows down from a column offset that follows the scroll). Moved down a row by the colour shift at $28E1 (X = $26 down to 1 for rows 15-24): read into row 24, then written from row 22. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56256,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 24, column 0. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($11E4) only when it starts from $EFF7's entry 1/2/3/4, whose side columns run on below the box into row 24 (worked out from the pointer steps, not seen live). Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Written by $29A2 after recolour_column, with the land's $8900 colour for the character on screen. Within reach of the column drawer $27FF ($2840 through ($3E)) only when its column offset ($244E, $28BA) is 40 or more; not established that it gets there. Not moved by the colour shift at $28E1: its loop for rows 15-24 ($2940-$297F, BNE) stops at X = 1, so column 0 of these rows is left as it was. Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56257,
   "type": "line",
   "text": "Colour RAM, I/O meaning ($01 = $35 whenever the code runs): row 24, column 1. Zeroed by the level reveal at $1128-$1131 (X = 0-255 on each of the four pages $D800-$DBFF). Written by the level reveal's growing box ($11E4) only when it starts from $EFF7's entry 1/2/3, whose side columns run on below the box into row 24 (worked out from the pointer steps, not seen live). Filled with A by fill_screens ($1A26-$1A2F, X = $FB down to 1 from $D7FF, $D8F9, $D9F3 and $DAED). Read by the colour shift at $247C (X = 0-$25), which copies it to the cell 41 back (a row up, a column left). Within reach of the column drawer $27FF ($2840 through ($3E)) only when its column offset ($244E, $28BA) is 40 or more; not established that it gets there. Written by the colour shift at $28E1 from row 23 (X = $26 down to 1). Set to 1 (white) by the protection screen's clear at $4697-$46A0 (the same four bases and X range as fill_screens). The RAM underneath belongs to the 2 KB block described at $D800."
  },
  {
   "address": 56321,
   "type": "line",
   "text": "Fifteen glyph bytes of the front-end character set kept at $D800-$DFFF (swapped with $7800 by $3F54 entries 0 and 4), lying in the RAM under CIA 1's registers $DC01-$DC0F. With the I/O in, $DC01 is CIA 1's port B: the keyboard read $1AD6 reads it ($1AD9, $1ADC) and $1AE3 writes $7F to it; $224B and $2279 read it too."
  },
  {
   "address": 56336,
   "type": "line",
   "text": "Part of the 2 KB block at $D800-$DFFF described at $D800 (bytes $410-$4FF of it), between the CIA 1 register names; RAM meaning only, nothing addresses these bytes directly."
  },
  {
   "address": 56577,
   "type": "line",
   "text": "Fourteen glyph bytes of the front-end character set kept at $D800-$DFFF, lying in the RAM under CIA 2's registers $DD01-$DD0E."
  },
  {
   "address": 56592,
   "type": "line",
   "text": "The rest of the 2 KB block at $D800-$DFFF described at $D800 (bytes $510-$7FF of it), after the CIA 2 register names; RAM meaning only."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "A tune for the player at $080C: entry 9 of every land's tune table (the land's $90D0/$90DA hold $00/$E0 there), started by $E4D0 when $1B97 selects it. It begins with two little-endian offsets ($0009, $0012), the same layout as the engine's tunes at $FC56 and $FDB6."
  },
  {
   "address": 57687,
   "type": "line",
   "text": "Stage-card frame work, called from the card's raster handler $F1AC. On frames when $1B68 is set it scrolls a strip of 16 characters one pixel left, with wrap-round: glyphs $DE-$ED of the land's character set ($7EF0-$7F6F), all eight rows. Every frame it scrolls glyphs $FB-$FC ($7FD8-$7FE7) rows 0-4 two pixels, rows 5-7 of $FB-$FC with rows 0-2 of $FD-$FE by $BADC[$1B68] + 1 pixels, and rows 3-7 of $FD-$FE four pixels. Then sets all eight sprites from the land's tables: X from $910B, Y from $BADE (which $F1AC computes), pointers from $911B into $47F8, colours from $9123 (sad) or $912B (happy, $1BEC); all enabled, no X high bits."
  },
  {
   "address": 57875,
   "type": "line",
   "text": "Stage-card frame work, called from the handler $F1DA on frames when $1B68 is 0: scrolls three strips of four glyphs each ($7F78-$7F97, $7F98-$7FB7, $7FB8-$7FD7: glyphs $EF-$FA) two pixels left with wrap-round."
  },
  {
   "address": 57939,
   "type": "line",
   "text": "Called from $2B3F while the scroll speed (operand $208C) is 0. With $1B74 set it asks $E27B for variant 0 at once; otherwise it counts how many of the two map bytes at ($8A)+$79 and +$7A are below the threshold in $2AAE, and asks $E27B for variant 1 when exactly one is, variant 0 otherwise. Presumably the pose for standing with one foot over an edge; not checked live."
  },
  {
   "address": 57979,
   "type": "line",
   "text": "Writes variant Y (0 or 1) of five bytes into sprite images: with $1B3F = 0 into $5196, $5197, $5199, $519A and $51A5 from $E2C0/$E2C4/$E2C8/$E2CC/$E2D0, otherwise into $5815, $5816, $5818, $5819 and $5825 from $E2BE/$E2C2/$E2C6/$E2CA/$E2CE. Also called from $1D1E and by the scene at $6000 (as $E29F)."
  },
  {
   "address": 58046,
   "type": "line",
   "text": "The five byte pairs of $E27B, interleaved: for each of the ten tables two entries, variant 0 then 1. $E2BE, $E2C2, $E2C6, $E2CA, $E2CE serve the images at $5815-$5825; $E2C0, $E2C4, $E2C8, $E2CC, $E2D0 those at $5196-$51A5."
  },
  {
   "address": 58048,
   "type": "line",
   "text": "Pose bytes for $5196 (variant 0 $12, variant 1 $10), see $E2BE."
  },
  {
   "address": 58050,
   "type": "line",
   "text": "Pose bytes for $5816 ($48, $08), see $E2BE."
  },
  {
   "address": 58052,
   "type": "line",
   "text": "Pose bytes for $5197 ($90, $10), see $E2BE."
  },
  {
   "address": 58054,
   "type": "line",
   "text": "Pose bytes for $5818 ($18, $19), see $E2BE."
  },
  {
   "address": 58056,
   "type": "line",
   "text": "Pose bytes for $5199 ($10, $12), see $E2BE."
  },
  {
   "address": 58058,
   "type": "line",
   "text": "Pose bytes for $5819 ($08, $48), see $E2BE."
  },
  {
   "address": 58060,
   "type": "line",
   "text": "Pose bytes for $519A ($18, $98), see $E2BE."
  },
  {
   "address": 58062,
   "type": "line",
   "text": "Pose bytes for $5825 ($21, $C1), see $E2BE."
  },
  {
   "address": 58064,
   "type": "line",
   "text": "Pose bytes for $51A5 ($84, $83), see $E2BE."
  },
  {
   "address": 58066,
   "type": "line",
   "text": "Takes the extra raster handler $21B5 out of the play-time chain again: in band $E2D3 (0-3, written by $E318) puts back the band's own next link, line $F973 and handler $F977/$F97B, into the LDA/LDX/LDY operands of that band's handler ($E355/$E35D/$E365), then clears $1BB6, sets $1B6D/$1B6E to $0F and requests sound effect $12. Called from $23D8 and $3B37."
  },
  {
   "address": 58067,
   "type": "line",
   "text": "Operand of the LDX at $E2D2: the band that $E2F0 spliced, written by $E318."
  },
  {
   "address": 58096,
   "type": "line",
   "text": "Called from $23CA. Sets $1B56 = 0, $1B55 = $1B58 = 6 and calls $33F4 with A = 1; picks band X = 0-3 from Mayhem's height $1BE4 (below $70, $90, $B0, or above), remembers it in $E2D3, copies the band's next link (line, handler) from $F973/$F977/$F97B into $21B9/$21BB/$21BD, and rewrites that band handler's link to line $F96F (16 lines earlier: $62/$82/$A2/$C2) and handler $21B5. So $21B5 runs inside Mayhem's band and then hands on to the band's usual successor. Sets $1BB6 = 1, $1B6D/$1B6E = $0F and requests sound effect $12."
  },
  {
   "address": 58197,
   "type": "line",
   "text": "Points ($D4) at the line operand of band X's next link ($F957/$F95B: $21FA, $2214, $2226, $22A4) with Y = 0."
  },
  {
   "address": 58205,
   "type": "line",
   "text": "Points ($D4) at the handler-low operand of band X's next link ($F95F/$F963: $21FC, $2216, $2228, $22A6)."
  },
  {
   "address": 58213,
   "type": "line",
   "text": "Points ($D4) at the handler-high operand of band X's next link ($F967/$F96B: $21FE, $2218, $222A, $22A8)."
  },
  {
   "address": 58226,
   "type": "line",
   "text": "Low bytes of the sixteen 6-byte digit images at $E392-$E3F1 ($92, $98 ... $EC); $38A7 picks entry Y for the panel digit Y."
  },
  {
   "address": 58242,
   "type": "line",
   "text": "High bytes of the digit image pointers, all $E3; read at $38AD."
  },
  {
   "address": 58258,
   "type": "line",
   "text": "Sixteen 6-row, one-byte-wide images that $389F writes into the panel's sprites, three bytes apart (one sprite row each): the score, lives, count and time digits 0-9, and six more."
  },
  {
   "address": 58354,
   "type": "line",
   "text": "Two values read by $3BE4 with an index of 0 or 1 ($08, $07)."
  },
  {
   "address": 58356,
   "type": "line",
   "text": "Two values read by $3BEA with an index of 0 or 1 ($D0, $88)."
  },
  {
   "address": 58358,
   "type": "line",
   "text": "Sixteen colours ($0B $0B $0C $0C $0F $0F $01 $01 $01 $01 $0F $0F $0C $0C $0B $0B, a grey ramp up and back) written by the stage card while the land is sad into colour RAM rows 1-2 ($3D0F, $3D2D), rows 5-6 ($3D55) and rows 21-22 ($3CF5); $3D43 takes $E3FE alone for $D877."
  },
  {
   "address": 58366,
   "type": "line",
   "text": "Middle of the ramp at $E3F6 ($01, white): $3D43 puts it in colour RAM $D877 while sad."
  },
  {
   "address": 58374,
   "type": "line",
   "text": "Colours read by $3D14 and $3D32 in place of $E3F6 when the land is happy, the first 16 ($0A $0F $01 $01 $01 $01 $01 $0F $0A $08 $02 ... $02 $08), into colour RAM rows 1-2. The 16 after them, $E416-$E425 ($05 $03 $07 ...), are read too: $3CF5 LDA $E3F6,Y with Y = $2F down to $20 when $1BEC is set puts them into rows 21-22 ($DB4F, $DB76, $DB5F, $DB86). Rows 5-6 and $D877 then come from $1000/$1008."
  },
  {
   "address": 58406,
   "type": "line",
   "text": "Called from the bottom raster handler ($212C). Places Mayhem's two overlaid sprites, 6 and 7: X = $AC always, Y = $1BE4 - $1B4B (at least $34), pointers from $E4A6 into both screens' pointer bytes, sprite 6 colour from the operand at $E44B (flashed by $EF6C), sprite 7 colour $1BE8. Toggles $1B73 each call and ORs $1B6F/$1B70 into the X high bits, clears X expansion for sprites 5-7, and sets sprite 5 from $1B69/$1B6B (position, only while $1B7F is clear) and $1B6D (pointer: $0F when $1B7F is set; otherwise $1B6D, plus $5C when $1B9C is set, or $0F when $1BB6 is set and $1B9C is not), colour 1."
  },
  {
   "address": 58443,
   "type": "line",
   "text": "Operand of the LDA at $E44A: sprite 6's colour, 0 normally; $EF6C flips it between 0 and 7 while $1BC2 counts down."
  },
  {
   "address": 58534,
   "type": "line",
   "text": "Puts Mayhem's frame $1BE7 in sprite 6's pointers ($47FE/$4BFE) and returns sprite 7's frame in X: the frame + 1, but $43 when $1B4D is $40 and $5D when it is $5A (X is then $1B4D + 3, not the frame + 3). The callers write X into sprite 7's pointers. Also called from $B2AF."
  },
  {
   "address": 58559,
   "type": "line",
   "text": "Three values ($02 $01 $00) that $12A2 copies, entry X, into $0A71."
  },
  {
   "address": 58562,
   "type": "line",
   "text": "Three opcodes ($AD LDA, $60 RTS, $60) that $12A2 writes, entry X, over $BCC0, switching the code there on or off."
  },
  {
   "address": 58565,
   "type": "line",
   "text": "Called from $1E7B and $2003: starts the tune $1B97 selects when the land's $90E4 entry for it differs from $1B96, the $90E4 entry of the tune last started; tunes are told apart only by that byte (in Pipeland tune 1 and the power-up tune 8 share $60). $E4D0 (also entered from $BB9A and $BD18) starts tune Y: notes $1B96/$1B95 and jumps to $080C with the address from the land's table, low $90D0 + Y, high $90DA + Y (entry 8 is the engine's $B111, entry 9 its $E000)."
  },
  {
   "address": 58595,
   "type": "line",
   "text": "Reached by JMP from $B54C with slot X. A = the slot's $F567 low nibble; if it equals the active portal number $1D60 nothing happens. Otherwise it becomes the active one: the previous portal's record (pointer in $1C09/$1C0A) has bit 7 of byte 0 cleared, this one's ($1C0B/$1C0C, kept by $EA9D when the object spawned) gets it set and becomes $1C09/$1C0A; the slot's animation moves to its next script ($F927 + 1 via $C662), then $BAA1 (Y = $0F), sound effect $14 and $10D5. Objects with $F567 = $80-$8F are the portals; a record with byte 0 bit 7 set spawns with its alternative script (see $E92B)."
  },
  {
   "address": 58669,
   "type": "line",
   "text": "The start of a new game, called by Jellyland's own start code (the JSR at $A62F in its file \"LA\"): $CF8C-$CF9A set to $FF (every panel number redrawn), $CF77-$CF85 and $CF7D-$CF8B cleared (score, lives, count, time, level index, continues, $CF8B), $1D60 and $1BEB cleared, lives $CF82 = 3, continues $CF8A = 3; then falls into $E54F."
  },
  {
   "address": 58703,
   "type": "line",
   "text": "Prepares a land for play (from $CE4D after a load, and after $E52D): $BBB3; the land's $9029/$902A into $3A91/$3A95; sad ($1BEC = 0); $1D60, $36F3, $CF8B, $E5BE cleared; $1BEF-$1BF2 and $1C09-$1C0C cleared; $B7C3 (code patches chosen by $1BEC); $BD37 (time from $9044); the dust count from $903E-$9040 ($F451, X = 2); the object list's marks cleared ($E595); then the panel redrawn ($E589)."
  },
  {
   "address": 58761,
   "type": "line",
   "text": "Redraws the panel numbers that changed: score ($3578), lives ($3892), time ($37A1) and the dust or star count ($3762). Also called from $3BA9."
  },
  {
   "address": 58773,
   "type": "line",
   "text": "Walks the land's object list from $A000 ($E5BF), 15 bytes a record, until byte 0 is $FF, clearing bit 7 of byte 0 (portal active) and bits 4 and 7 of byte 10 (defeated once / gone) in every record. Also called from $B7BD."
  },
  {
   "address": 58804,
   "type": "line",
   "text": "Writes A over the first opcode of the three sprite-band writers $C0DC, $C01C and $C07C: $60 (RTS) switches them off, $AD (LDA) on. Called from $1D19 and $1D92."
  },
  {
   "address": 58814,
   "type": "line",
   "text": "A counter compared with the land's $9050 at $3656 and incremented at $3667 until it reaches it; cleared at the start of a land ($E56C)."
  },
  {
   "address": 58815,
   "type": "line",
   "text": "Points ($8E) at the land's object list, $A000."
  },
  {
   "address": 58824,
   "type": "line",
   "text": "Adds 1 to the 16-bit map column $1BD2/$1BD3 that the scrolled view has reached (from $E750 and $1E36)."
  },
  {
   "address": 58839,
   "type": "line",
   "text": "Subtracts 1 from the map column $1BD2/$1BD3 (from $E728)."
  },
  {
   "address": 58854,
   "type": "line",
   "text": "Spawn cursor X (0 the left edge, 2 the right edge) moves on by one record: adds byte 13 of the record at ($8E), the gap in columns from the record before it, to the cursor's column $1BA5/$1BA6,X."
  },
  {
   "address": 58871,
   "type": "line",
   "text": "Spawn cursor X moves back by one record: ($8E) goes back 15 bytes ($B7F2) and that record's gap (byte 13) is subtracted from the cursor's column $1BA5/$1BA6,X."
  },
  {
   "address": 58891,
   "type": "line",
   "text": "Stores ($8E) as spawn cursor X's record pointer $1BA1/$1BA2,X."
  },
  {
   "address": 58902,
   "type": "line",
   "text": "Loads spawn cursor X's record pointer $1BA1/$1BA2,X into ($8E)."
  },
  {
   "address": 58913,
   "type": "line",
   "text": "Compares spawn cursor X's column $1BA5/$1BA6,X with the view's column $1BD2/$1BD3; Z set when they are equal."
  },
  {
   "address": 58928,
   "type": "line",
   "text": "Called from $324B. With $E6AD = 0, for the right cursor and then the left: steps back through the list ($E5F7) at least one record, and on past records that belong to a group (byte 8 bits 4-6) while $E6A6 says so; the left cursor also keeps stepping back while its column is above the view's. Stores both pointers."
  },
  {
   "address": 58984,
   "type": "line",
   "text": "Called from $31EC; the mirror of $E630 with $E6AD = 2: steps each cursor forward ($E5E6, $B7D7) past grouped records, the right cursor also while its column is below the view's."
  },
  {
   "address": 59039,
   "type": "line",
   "text": "A = byte 8 of the record at ($8E) AND $70: its group number in bits 4-6; Z when it has none."
  },
  {
   "address": 59046,
   "type": "line",
   "text": "For the record at ($8E): when its class (byte 3 bits 6-7) equals the land's $5A32 entry $E6AD (0 or 2), returns the in-use flag $023C of its slot (byte 0 low nibble); otherwise returns with Z clear."
  },
  {
   "address": 59053,
   "type": "line",
   "text": "Operand of the LDY at $E6AC: 0 when called from $E630, 2 from $E668; the offset into the land's $5A32 that $E6A6 compares with."
  },
  {
   "address": 59070,
   "type": "line",
   "text": "Called from $1CF1 and $1F56. While $1BD4 is not negative, spawns the next queued record (pointer entry $1BAC of $1BAD/$1BB1) through $E75E; after the last one sets $1BD4 and $1BD5 to $FF and $1BB5 to 0."
  },
  {
   "address": 59116,
   "type": "line",
   "text": "Called from $1F3A when the view moves back a column. If the right cursor stands at the view's column it handles the record there (calling $29A7 for marker records $78-$7F and, while happy, $29EF for $70-$77), steps back one record ($E5F7) and repeats while the record it has reached belongs to a group (byte 8 bits 4-6, $E717-$E71D), then saves the cursor; then the column is decremented and, if the left cursor stood at it, the record there is spawned ($E756)."
  },
  {
   "address": 59183,
   "type": "line",
   "text": "Called from $1CEE and $1F4B when the view moves on a column. If the left cursor stands at the view's column it always steps past one record, then on while the next record belongs to a group (byte 8 bits 4-6, $E73F-$E745); then the column is incremented and, if the right cursor stood at it, the record there is spawned ($E756, which clears $ECF0 first)."
  },
  {
   "address": 59230,
   "type": "line",
   "text": "Creates the object described by the 15-byte record at ($8E) in slot byte 0 AND $0F. Marker records (byte 0 $70-$7F) instead call $29AC ($78-$7F) or, while happy, $29F4 ($70-$77) when $1B3F is 0. Unless the low nibble of byte 9 is $0B or more, a record is skipped when byte 10 bit 7 marks it gone, or when its slot is in use and either in state 3 or, with byte 12 bit 7 set, already holding byte 12 bits 4-6 in $F675. While $1BD5 and $1B3F are set, a record of a group (byte 8 bits 4-6) whose byte 3 bits 6-7 are not 0 is queued instead ($E7C1-$E7E7: $1BB5 = 8, on to $ECBA). Otherwise the record's bytes are spread over the slot's tables: 0 bit 7 the alternative script; 1 and 2 (bits 2-7) indexes into the land's tables $941A/$943F (byte 1, not read when byte 5 bit 5 gives a non-zero homing entry) and $9464/$9489; byte 1 bits 0-1 with byte 2 bit 0 pick the X offset ($940F) for a follower; byte 2 bit 1 goes to $F5A3; 3 bits 0-5 the object type (25 added while happy), which selects six script numbers and a frame delay from the land's tables $956E-$969A and the scripts' addresses from $94AE/$94EE, bits 6-7 $F5FD; 4 the item ($EB56) and size bits ($EBB2); 5 bit 4 double height, bits 6-7 $F8FA ($C0: one script, from $94AE and $952E at $E92B), bit 5 a $93F0/$93FF entry; 6 the Y position; 8 multicolour (bit 0), priority (bit 1), $F5C1 (bit 2), $F666 (bit 3), the group (bits 4-6), item object (bit 7; in the sad land such an object is freed at once, $EA1D); 9 the behaviour (low nibble, through $93DA into $F567), $F585 (bits 5-7), $F8EB (bit 4, sad land only) and on a second path one of its two horizontal scripts (bits 0-5 through $941A/$943F, $EAC8; byte 1 bits 2-7 give the other); 10 the score entry $F50D and $F5D0; 11 $F8AF; 12 bit 7 a second path ($EAC6; bits 0-3 into $F657, bits 4-6 into $F675); 14 $F60C and $F486. Byte 13 is the gap to the previous record and byte 7 is not read here. The X position is the screen's edge corrected for the scroll ($AC, $208C, $1BB5, $1B3F, fine scroll $10), or for a follower the leader's X plus the offset. Clears the rest of the slot's state, sets it in use ($023C) and visible ($F5B2), its direction $F693 from $1B3F, and its band bits; then, while $1BD5 is set, queues the following records of the same group ($EC72)."
  },
  {
   "address": 59551,
   "type": "line",
   "text": "Operand of the LDA at $E89E: bits 6-7 of record byte 5 ($E803); %11 ($C0) makes $E92B load a single script for the object instead of the six."
  },
  {
   "address": 59692,
   "type": "line",
   "text": "Operand of the LDA at $E92B: record byte 0 when its bit 7 is set (stored at $E7F0), else 0 ($E763); non-zero makes $E92B take the next script number, the alternative one (an active portal)."
  },
  {
   "address": 59719,
   "type": "line",
   "text": "Low byte of the LDA at $E946, which $E90D or $E936 points at the object's first script: the scan from there to the first byte of $0F or more finds the object's first sprite frame."
  },
  {
   "address": 59720,
   "type": "line",
   "text": "High byte of the script address scanned by the LDA at $E946."
  },
  {
   "address": 59761,
   "type": "line",
   "text": "Operand of the LDY at $E970: twice bits 0-1 of record byte 1, plus bit 0 of byte 2 ($E848, $E882); indexes the land's X offsets at $940F for a follower."
  },
  {
   "address": 59776,
   "type": "line",
   "text": "Operand of the ADC at $E97E: the follower's X offset from $940F, added to its leader's X."
  },
  {
   "address": 60099,
   "type": "line",
   "text": "Operand of the LDA at $EAC2: bit 7 of record byte 12 ($EA62); when set $EAC6 sets up the object's second path ($F7FB-$F828) and parks it ($F567 = $FC, frame $0F)."
  },
  {
   "address": 60247,
   "type": "line",
   "text": "Operand of the LDA at $EB56: record byte 4 ($EB1A); when its bits 0-4 are $10-$1F the low nibble picks the object's item, through the land's $9075 into $B6BA-$B6CC (or $96B3-$96D3)."
  },
  {
   "address": 60315,
   "type": "line",
   "text": "Low byte of the LDA at $EB9A, written by $EB8A: with $EB9C, the address whose byte gives the object's first colour ($F4A4)."
  },
  {
   "address": 60316,
   "type": "line",
   "text": "High byte of the LDA at $EB9A, written by $EB91."
  },
  {
   "address": 60334,
   "type": "line",
   "text": "Operand of the LDA at $EBAD: 1 when the spawn set a colour list ($EB98), 0 when it did not (X from $EB11 on the paths through $EB37, $EB54 and $EB5C); stored by $EB9D, becomes the slot's $F837."
  },
  {
   "address": 60339,
   "type": "line",
   "text": "Operand of the LDA at $EBB2: record byte 4 ($EB17); its bits 5-7 become the slot's size bits $F8BE."
  },
  {
   "address": 60446,
   "type": "line",
   "text": "Operand of the LDA at $EC1D: record byte 8 bit 0 ($E9CA); set means the slot's multicolour bit in $F477."
  },
  {
   "address": 60468,
   "type": "line",
   "text": "Operand of the LDA at $EC33: record byte 8 bit 1 ($E9C0); set means the slot's priority bit in $F47A (behind the background)."
  },
  {
   "address": 60490,
   "type": "line",
   "text": "Operand of the LDA at $EC49: record byte 5 bit 4 ($E7FA); set means the slot's double-height bit in $F47D."
  },
  {
   "address": 60527,
   "type": "line",
   "text": "Operand of the LDA at $EC6E, and the group compared by $C8D2 and $ECA1: the spawned record's group (byte 8 bits 4-6, $E9F1) or 0; $EC70 then branches to $ECD9 when it is 0."
  },
  {
   "address": 60530,
   "type": "line",
   "text": "Follows a group: steps the cursor on (or back, by $1B3F) to the next record; if it is an object of the same group ($EC6F) it is spawned at once when its byte 3 bits 6-7 are 0, or queued in $1BAD/$1BB1 ($1BD4) with $1BB5 raised by 8 otherwise; at the first record of another group it ends the chain ($1BAC, $1BD5 cleared)."
  },
  {
   "address": 60656,
   "type": "line",
   "text": "Counts chained objects while records with byte 0 bit 7 or a state-2 object are spawned ($EB24, $EB40); cleared by $E75B and $EB32."
  },
  {
   "address": 60657,
   "type": "line",
   "text": "Called from $1FCA. For each slot in use, in state 0, with $F585 set and $F594 clear: compares its direction (bit 7 of $F53A) with the scroll direction $1B3F and bit 7 of $F585, and accordingly restores its behaviour $F567 from $F576, or saves it there and takes the land's $93E9 entry for $F585 AND 7; then bit 7 of $F585 is set from the operand at $ED5D."
  },
  {
   "address": 60681,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's TALK is at $ED09 in ROM, which the loader calls from $CCE2/$CD30 with the ROM switched in, and the disassembler named this address after it. Here it is the LDY $1B3F inside $ECF1."
  },
  {
   "address": 60684,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's LISTEN is at $ED0C in ROM (called by the loader at $CCCF and $CECF). Here it is the LDA $F53A,X inside $ECF1."
  },
  {
   "address": 60765,
   "type": "line",
   "text": "Operand of the ORA at $ED5C: 0 or $80 ($ED54), bit 7 written into $F585 by $ECF1."
  },
  {
   "address": 60773,
   "type": "line",
   "text": "Moves the stage card vertically, called from the card's handler at $3DA8: while $BB37 counts down, takes entry $BB37 of the list at $BAE6 (bit 7: up by the low bits, else down) and adds it to the card's line offset $136F. A step up that would go below 0 leaves 1 (an exact 0 is kept); a step down stops at $D3."
  },
  {
   "address": 60796,
   "type": "line",
   "text": "Operand of the SBC at $ED7B: the step up taken from $BAE6 (bit 7 removed), written by $ED74."
  },
  {
   "address": 60824,
   "type": "line",
   "text": "Exchanges sprite blocks $D8-$DC ($7600-$773F, 320 bytes), the images the stage card's sprites show (pointers from the land's $911B), with the 320 bytes kept in the land's file at $929A-$93D9: $3BDB brings the card's images in when the card starts and $3D92 puts the land's own bytes back when it ends. Called from $3BDB and $3D92."
  },
  {
   "address": 60857,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's SECOND is at $EDB9 in ROM, which the loader calls from $CCD6 and $CED4 with the ROM in. Here it is the DEX of the second loop of $ED98."
  },
  {
   "address": 60861,
   "type": "line",
   "text": "Where $EDBF's copy ends in the land's $919A table: $7F while sad, $FF while happy ($1BEC), written into the LDX at $EDC8."
  },
  {
   "address": 60863,
   "type": "line",
   "text": "Copies 128 bytes of the land's file into glyphs $EF-$FE ($7F78-$7FF7), the strips that $E213 and $E157 scroll: $919A-$9219 while sad, $921A-$9299 while happy. Called from $3BDE."
  },
  {
   "address": 60871,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's TKSA is at $EDC7 in ROM (the loader calls it from $CCE7 and $CD35). Here it is the middle of the STA at $EDC5."
  },
  {
   "address": 60873,
   "type": "line",
   "text": "Operand of the LDX at $EDC8: the last index of the copy, from $EDBD."
  },
  {
   "address": 60887,
   "type": "line",
   "text": "For 15 slots, a pair per slot: the slot's bit within its band (1 << (slot mod 5)) and its complement ($01 $FE $02 $FD $04 $FB $08 $F7 $10 $EF, three times). $B4EE reads the first of each pair with X = 2 x slot. The KERNAL name the disassembler shows at $EDDD (CIOUT) is that of a ROM routine at the same address; these bytes are data."
  },
  {
   "address": 60893,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's CIOUT is at $EDDD in ROM, which the loader calls with the ROM in ($CD44 and others). Here it is a byte of the pair table $EDD7."
  },
  {
   "address": 60899,
   "type": "line",
   "text": "The rest of the pair table that starts at $EDD7: for slots 3-14, each slot's bit in its band (1, 2, 4, 8, $10) followed by its complement ($FE, $FD, $FB, $F7, $EF). $B4EE reads only the first byte of each pair."
  },
  {
   "address": 60917,
   "type": "line",
   "text": "A symmetric 26-step profile, 5 4 4 3 3 3 2 2 2 2 2 1 1 1 1 2 2 2 2 2 3 3 3 4 4 5: $3B0F steps $1B77 down through it (from $19) while the land is happy and keeps the value in $EE10."
  },
  {
   "address": 60926,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's UNLSN is at $EDFE in ROM (the loader calls it from $CD6A and $CD83). Here it is a byte of the profile at $EDF5."
  },
  {
   "address": 60943,
   "type": "line",
   "text": "A Y value kept by $38E9 and counted down by $3970/$3988; $399D and $39A7 use it too."
  },
  {
   "address": 60944,
   "type": "line",
   "text": "The current step of the profile at $EDF5, stored by $3B12; $3AF8 copies it into $1B75 while happy and $3901 reads it."
  },
  {
   "address": 60945,
   "type": "line",
   "text": "Called from $2367: animates glyphs of the land's set by rotating their rows: glyphs $BE-$BF ($7DF0-$7DFF) and $E5 ($7F28-$7F2F) move down two rows, $C2 ($7E10-$7E17) and $BC ($7DE0-$7DE7) one row, each with wrap-round."
  },
  {
   "address": 60947,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's ACPTR is at $EE13 in ROM (the loader calls it from $CCEA, $CD38). Here it is the high byte of the LDA at $EE11."
  },
  {
   "address": 61044,
   "type": "line",
   "text": "Called from $2B18. When $1B5B is set and the land is happy, and one of the two map bytes at ($8A)+$29/$2A is one of the six tile codes at $15F1, moves Mayhem down a line ($1BE4 + 1), two on frames when $1B68 is 0."
  },
  {
   "address": 61086,
   "type": "line",
   "text": "Picks Mayhem's sprite frame $1BE7 = base $1B4D + step $1B4E (called from $1ED8 and $23A5): ducking ($1B62, or while $1BBB counts) base $64 + twice the direction $1B3F; $1B54 without $1B5B step $14; $1B52 base $40 or $5A by direction, steps 0-2; $1B59 or $1B5A step $18 with the sprite patch $EF93; standing still (scroll speed $208C = 0) step $16; walking steps 0, 2 ... 14, one every 5 - $1BD7 calls ($1B50 reloaded with 4 - $1BD7 and counted past 0). The base for the facing comes from $EF86. Then, while $1BC2 counts down (by $1B68 each call) and the power-up $1B9C is not running, the two sprites flicker: sprite 6's colour ($E44B) between 0 and 7 and sprite 7's ($1BE8) between $0A and $07, every call above $38, every other call above $18, every fourth below; at 0 both are restored."
  },
  {
   "address": 61318,
   "type": "line",
   "text": "Mayhem's frame base $1B4D for his facing: $30 when X is 0, $4A otherwise. Also entered from $3157 and $B603."
  },
  {
   "address": 61331,
   "type": "line",
   "text": "Writes variant Y (0-2) of six bytes into sprite images: $588F, $5892, $5895 from $F945/$F948/$F94B and $5211, $5214, $5217 from $F94E/$F951/$F954. Also called from $BD92."
  },
  {
   "address": 61368,
   "type": "line",
   "text": "X positions of the six panel sprites 0-5 ($21 $39 $51 $82 $DB $35), set by $349C with Y = $E5."
  },
  {
   "address": 61374,
   "type": "line",
   "text": "Pointers of the six panel sprites, set by $349C into both screens' pointer bytes: $00, $01, sprite 2's (below), $04, $05, $03 (images in $4000-$417F, where $389F draws the digits)."
  },
  {
   "address": 61376,
   "type": "line",
   "text": "Sprite 2's pointer on the panel: $0F normally (written by $1DF0), changed by $3618 and $3632."
  },
  {
   "address": 61380,
   "type": "line",
   "text": "Colours of the six panel sprites, set by $349C. Entries 0, 1, 3, 4 and 5 blink between 0 and 1 while their timers $1BBC count down ($F07E; $10C1 starts them at $1E); entry 2 is the colour cycle below."
  },
  {
   "address": 61382,
   "type": "line",
   "text": "Panel sprite 2's colour, stepped through $EFCA by $F0AF."
  },
  {
   "address": 61386,
   "type": "line",
   "text": "Colour cycle $01 $0F $0C $0B $00 $0B $0C $0F $01 for panel sprite 2 ($EFC6), indexed by $1BE9 (8 down to 0)."
  },
  {
   "address": 61395,
   "type": "line",
   "text": "Colour cycle for the operand $18E9 (panel sprite 4's colour in $18C1) while $1BB8 is 1: set by $384F when the time reaches the value at $37E3."
  },
  {
   "address": 61404,
   "type": "line",
   "text": "Colour cycle for $18E9 while $1BB8 is 2 or more (the second time step at $37E6)."
  },
  {
   "address": 61413,
   "type": "line",
   "text": "Colour cycle for the operand $18E4 (panel sprite 3's colour) while sad once $36F3 is set (the dust count has reached 0, $3703), and while happy when $CF8B is set."
  },
  {
   "address": 61422,
   "type": "line",
   "text": "Colour cycle for the operand $18EE (panel sprite 5's colour) while $1BB7 is set; $3866, adding a life, clears $1BB7 and sets the colour to 1."
  },
  {
   "address": 61431,
   "type": "line",
   "text": "Called from $1156 with X = 0-4: sets the zero-page pointers of a three-way copy from the tables at $F056-$F079: ($86) and ($8C) in screen $4800, ($83) and ($88) in screen $4400, ($4B) and ($4D) in colour RAM, at low bytes $F074/$F079; sets $7F = 0, $7E = 1, $1279 = 2 and patches $126D ($90) and $126F/$1271/$1273 ($E6)."
  },
  {
   "address": 61507,
   "type": "line",
   "text": "Called from $2C3B and $2E68 unless $1B58 is set: $1B55 = $1B56 = A, $1B57 = X, then $33F4 with A = 1."
  },
  {
   "address": 61526,
   "type": "line",
   "text": "High bytes of ($86) for $EFF7, X = 0-4: $48 $49 $49 $4A $4A (screen $4800)."
  },
  {
   "address": 61531,
   "type": "line",
   "text": "High bytes of ($8C): $48 $49 $49 $4A $4B."
  },
  {
   "address": 61536,
   "type": "line",
   "text": "High bytes of ($83): $44 $45 $45 $46 $46 (screen $4400)."
  },
  {
   "address": 61541,
   "type": "line",
   "text": "High bytes of ($88): $44 $45 $45 $46 $47."
  },
  {
   "address": 61546,
   "type": "line",
   "text": "High bytes of ($4B): $D8 $D9 $D9 $DA $DA (colour RAM)."
  },
  {
   "address": 61551,
   "type": "line",
   "text": "High bytes of ($4D): $D8 $D9 $D9 $DA $DB."
  },
  {
   "address": 61556,
   "type": "line",
   "text": "Low bytes shared by ($86), ($83) and ($4B): $8B $03 $A3 $43 $E3."
  },
  {
   "address": 61561,
   "type": "line",
   "text": "Low bytes shared by ($8C), ($88) and ($4D): $B3 $2B $CB $6B $0B."
  },
  {
   "address": 61566,
   "type": "line",
   "text": "Called from the raster handler $229C when $1B3E is 0, and by $F38A. On the frame phase $1B67 = 0 it steps the colour index $1BE9 (8 down to 0) and sets panel sprite 2's colour from $EFCA, sprite 5's from $EFEE while $1BB7 is set, sprite 4's from $EFD3 or $EFDC by $1BB8, and sprite 3's from $EFE5 while sad and $36F3 is set; on phase 2 sprite 3's when $CF8B is set; on phase 1 it counts the blink timers $1BBC down and flips the colours $EFC4 of the sprites whose timer runs."
  },
  {
   "address": 61678,
   "type": "line",
   "text": "Reached by JMP from $1192: copies 24 rows of 39 characters of screen $4400, bottom row first, each to the place 41 bytes on (a row down and a column right): $4798 to $47C1 and upward."
  },
  {
   "address": 61729,
   "type": "line",
   "text": "Called from $2413: when Mayhem's position $1BD9 equals one of the land's $902B-$902D, sets $1BC3 to 1; one of $9031-$9033, to 0."
  },
  {
   "address": 61758,
   "type": "line",
   "text": "Called from $28A1: when $1BD9 equals one of the land's $902E-$9030, sets $1BC3 to 0; one of $9034-$9036, to 1. (The disassembler shows the name of the KERNAL's routine at the same ROM address here; this is the game's own code.)"
  },
  {
   "address": 61787,
   "type": "line",
   "text": "Called from $31FF: when $1B44 is 0 and $1BDD is $28-$7F, copies $1BDD into $1B4A."
  },
  {
   "address": 61805,
   "type": "line",
   "text": "Called from $1F45: clears $1B4A, then writes the 25 bytes at $1921 down column 0 of the screen page that $262A returns, EOR $0C (the other of $4400 and $4800)."
  },
  {
   "address": 61847,
   "type": "line",
   "text": "Called from $3259: when $1B43 is set and $1BDD is 0, sets $1BD6 to 0."
  },
  {
   "address": 61861,
   "type": "line",
   "text": "Called from $1F34: sets $1BD6 to $FF, then does what $F16D does from $F172."
  },
  {
   "address": 61868,
   "type": "line",
   "text": "Stage-card raster handler, installed by $3DD6 and $BBA9 (X/Y = $F1AC) through the front-end dispatcher $1868: waits ($136E), raises the frame flag $1B3B, black background, sets the eight sprites' Y from the card's offset $136F plus the land's $9113 (0 past the bottom) into $BADE, runs $E157, and returns the next link: line $136F + $75 and $F1DA, or line 0 and $3DA5 ($F20D) when that would pass line 255."
  },
  {
   "address": 61914,
   "type": "line",
   "text": "Stage-card raster handler: multicolour on; after a timed wait in the NOP slide ($B1A0) sets $D022, $D023 and the background operand $20F3 from the land's $90F9, $90FB and $90F7 (by sad/happy $1BEC), runs $20E1 and $E213, and returns line $136F + $B4 and $F214, or the end link $F20D."
  },
  {
   "address": 61933,
   "type": "line",
   "text": "Operand of the LDX at $F1EC: the land's $90FB entry for the current mood, written by $F1E3 and passed through $B1A0 into $D023."
  },
  {
   "address": 61965,
   "type": "line",
   "text": "The stage card's last link: A = line 0, X/Y = $3DA5."
  },
  {
   "address": 61972,
   "type": "line",
   "text": "Stage-card raster handler: after $B1A9, background $90FD and $D022 $90FF (by mood), five delays ($B17F), background $9101; returns line $136F + $C8 and $F241, or $F20D."
  },
  {
   "address": 62017,
   "type": "line",
   "text": "Stage-card raster handler: $19DD, then the end link $F20D."
  },
  {
   "address": 62023,
   "type": "line",
   "text": "Sixteen colours ($0A $07 $01 $01 $01 $01 $01 $07 $0A $08 $02 $02 $02 $02 $02 $08, two ramps) that the stage-complete handler steps through, one entry down each frame ($F38D-$F394): entry X for colour RAM $D9DF, $DA58 and $DAD0, entry X - 1 for $D9B7, $DA30 and $DAA8, which therefore show each colour a frame before the first three."
  },
  {
   "address": 62039,
   "type": "line",
   "text": "Sixteen colours ($01 $0D $03 $03 $05 $0E $04 $02 $02 $04 $08 $0A $0A $0F $07 $01) stepped by $F38D: entry X for colour RAM $D8CD ($F39A) and entry X - 1 for $D8A5 ($F3B1), a frame ahead of it."
  },
  {
   "address": 62055,
   "type": "line",
   "text": "Stage-complete screen: if the time $CF86-$CF88 is 000, prints \"SUPER TIME BONUS\" (string 13 of $B817) at $45BD and increments $1BA9; otherwise prints \"TIME BONUS : \" (string 11) at $45B9 and falls into $F286."
  },
  {
   "address": 62086,
   "type": "line",
   "text": "Writes the time digits $CF86-$CF88 as ASCII into the \"***\" at $B9AD and prints that (\"*** X 100\", string 12) at $45CF. Also called from $BEB6 as the tally counts the time down."
  },
  {
   "address": 62109,
   "type": "line",
   "text": "Stage-complete screen: if the count $CF83-$CF85 is 000, prints \"SUPER STAR BONUS\" (string 16) at $4635 and increments $1B76; otherwise prints \"STAR BONUS : \" (string 14) at $4631, sets the count to the land's $904A-$904C minus it (decimal; written back as digits and as ASCII into $B9D5) and prints \"*** X 500\" (string 15) at $4647."
  },
  {
   "address": 62188,
   "type": "line",
   "text": "Writes the count digits $CF83-$CF85 as ASCII into $B9D5 and prints \"*** X 500\" (string 15) at $4647. Called from $BEFF as the tally counts down."
  },
  {
   "address": 62204,
   "type": "line",
   "text": "No caller found by address: switches to $01 = $35 ($1A50) and calls $1BF3, then runs into $F302."
  },
  {
   "address": 62210,
   "type": "line",
   "text": "Reached by JMP from $3BB8 when a land is won: fills the screens (colour 6, glyph $FF), prints \"STAGE  COMPLETE\" (string 7) at $44A6, the time and star lines ($F267, $F29D), $BE53, $1C0D (X - 1 into $39), $1B78 = $FF, an RTS written at $1917, $12AF, the stage-complete tune at $FCFA ($080C), $1292, $12A2 (X = 2), extended colour and multicolour off, then installs its raster handler $F353 with $01 = $35 and goes on to the tally at $BE84."
  },
  {
   "address": 62242,
   "type": "line",
   "text": "Operand of the LDA at $F321 ($FF), stored in $1B78."
  },
  {
   "address": 62291,
   "type": "line",
   "text": "The stage-complete screen's raster handler (front-end dispatcher, installed by $F34D): blue border and background, screen $4400 with characters at $7800, frame flag, $BC99; unless $1B66, increments $1B4D; unless $1B67, steps $39 through the colour run at $CFD6 (wrapping at $10); $BDD7; $1BB8 from the operand $F386; $F07E; steps two colour stripes through $F247/$F257 ($F38D); $B43D on the colour-cycle blocks 7-8 (colour RAM), and 9-10, 11-12, 13-14 when $1B8B, $1B8C, $1B8D are set; the music player ($087B); next line $D0 and $F409."
  },
  {
   "address": 62342,
   "type": "line",
   "text": "Operand of the LDA at $F385: copied into $1BB8 each frame by the stage-complete handler; written by $3B8F."
  },
  {
   "address": 62350,
   "type": "line",
   "text": "Operand of the LDX at $F38D: the stripe colour index, 15 down to 0, stored back by $F394."
  },
  {
   "address": 62454,
   "type": "line",
   "text": "Not a routine entry: the KERNAL routine the loader calls at $CCDD lives at $F3F6 in ROM (sending the file name), and the disassembler named this RAM address after it. Here it is the JSR $B43D for object 13 inside $F353."
  },
  {
   "address": 62473,
   "type": "line",
   "text": "Stage-complete raster handler at line $D0: $349C (the panel sprites), next line $F0 and $F413."
  },
  {
   "address": 62483,
   "type": "line",
   "text": "Stage-complete raster handler at line $F0: $18D9, next line 0 and $F353."
  },
  {
   "address": 62493,
   "type": "line",
   "text": "Reached by JMP from $C141, the end of the sprite-band writer: for each column x (0-4) whose $F5C1 flag is set (record byte 8 bit 2), copies bit x of every band-0 attribute byte ($F474, $F477, $F47A, $F47D, $F480, $F483) into the same byte of bands 1 and 2, so an object in that column keeps its attributes in all three bands."
  },
  {
   "address": 62521,
   "type": "line",
   "text": "Operand of the ORA at $F438: bit x of the band-0 byte, written by $F42C for band 1."
  },
  {
   "address": 62532,
   "type": "line",
   "text": "Operand of the ORA at $F443: the same bit, written by $F42F for band 2."
  },
  {
   "address": 62545,
   "type": "line",
   "text": "Copies three digits of the land's table into the count $CF83-$CF85: $903E-$9040 with X = 2 (magic dust, at the start of a land), $9041-$9043 with X = 5 (stars, when it turns happy, $3BC6)."
  },
  {
   "address": 62558,
   "type": "line",
   "text": "Reached from $CE58 after loading Jellyland: sprites off, extended colour and multicolour on, sad ($1BEC = 0), screens filled with glyph $FF, screen $4800 shown ($19AE), then JMP $A547 into the land's own code (which calls $E52D for a new game)."
  },
  {
   "address": 62580,
   "type": "line",
   "text": "Per-band sprite attribute bytes, three bytes (bands 0-2, slots 0-4, 5-9, 10-14) and in each the bit of the slot's column (slot mod 5, from $C68D): here the X position's bit 8. Set to $1F for a new stage ($C51D), set at spawn ($EC14-$EC1A), flipped when the X position carries ($C340-$C347 in $C18A, $C9E9-$C9EF) and by the scroll ($BA47/$BA4D, whose operands step through the three bands), copied from a parent ($C5FF-$C61A); read by $BAD0 into $F483 for the band writers, by $B4EB, $C1D6, $C364, and by the column copy $F426, which writes bands 1 and 2 ($F43A, $F445)."
  },
  {
   "address": 62581,
   "type": "line",
   "text": "Band 1 of the X-high bits $F474 (slots 5-9), reached as $F474,Y with Y = 1 by the users listed there; the column copy writes it as $F475,Y with Y = 0 ($F432/$F43A), and the scroll through the operands at $BA48/$BA4E."
  },
  {
   "address": 62582,
   "type": "line",
   "text": "Band 2 of the X-high bits $F474 (slots 10-14), reached as $F474,Y with Y = 2 by the users listed there; the column copy reads and writes it as $F476,Y with Y = 0 ($F43D/$F445), and the scroll names it at $BA47/$BA4D (its first band)."
  },
  {
   "address": 62583,
   "type": "line",
   "text": "The per-band multicolour bits ($D01C) of the objects, band 0 (slots 0-4), reached as $F477,Y with Y = band: set at spawn from record byte 8 bit 0 ($EC1D-$EC30), for an item while sad ($C9A2-$C9A8), cleared by $C87A-$C880; ORed into $D01C by the band writer ($C115); read by the column copy ($F426)."
  },
  {
   "address": 62584,
   "type": "line",
   "text": "Band 1 of the multicolour bits $F477."
  },
  {
   "address": 62585,
   "type": "line",
   "text": "Band 2 of the multicolour bits $F477."
  },
  {
   "address": 62586,
   "type": "line",
   "text": "The per-band priority bits ($D01B, behind the background), band 0, reached as $F47A,Y with Y = band: set at spawn from record byte 8 bit 1 ($EC33-$EC46), changed by $C564-$C569; ORed with $1B4F into $D01B ($C11B); read by the column copy ($F426)."
  },
  {
   "address": 62587,
   "type": "line",
   "text": "Band 1 of the priority bits $F47A."
  },
  {
   "address": 62588,
   "type": "line",
   "text": "Band 2 of the priority bits $F47A."
  },
  {
   "address": 62589,
   "type": "line",
   "text": "The per-band double-height bits ($D017), band 0, reached as $F47D,Y with Y = band: set to $1F for a new stage ($C523), from record byte 5 bit 4 at spawn ($EC49-$EC5C), set by $C894-$C89A, cleared for an item by $C98B-$C99A; written to $D017 by $C129; read by the touch test ($B52E) and the column copy ($F426)."
  },
  {
   "address": 62590,
   "type": "line",
   "text": "Band 1 of the double-height bits $F47D."
  },
  {
   "address": 62591,
   "type": "line",
   "text": "Band 2 of the double-height bits $F47D."
  },
  {
   "address": 62592,
   "type": "line",
   "text": "The per-band double-width bits ($D01D), band 0, reached as $F480,Y with Y = band: set to $1F for a new stage ($C520), cleared at spawn ($EC5F-$EC65), set by $C887-$C88D, cleared for an item by $C979-$C988; written to $D01D by $C12F; read by the column copy ($F426)."
  },
  {
   "address": 62593,
   "type": "line",
   "text": "Band 1 of the double-width bits $F480."
  },
  {
   "address": 62594,
   "type": "line",
   "text": "Band 2 of the double-width bits $F480."
  },
  {
   "address": 62595,
   "type": "line",
   "text": "The X-high bits as the band writers use them: $BAD0 copies $F474 AND $1F here for each band ($BAD5), and $C0E1 ORs band 0 into $D010; the column copy $F426 reads band 0 here and writes the column's bit into bands 1 and 2 ($F484, $F485)."
  },
  {
   "address": 62596,
   "type": "line",
   "text": "Band 1 of the latched X-high bits $F483, read by the second band writer ($C021)."
  },
  {
   "address": 62597,
   "type": "line",
   "text": "Band 2 of the latched X-high bits $F483."
  },
  {
   "address": 62598,
   "type": "line",
   "text": "Per slot (15 slots, X = 0-14, like every table to $F944): the colour flash mask, the high nibble of record byte 14 ($E85F). $B62A EORs it into the colour $F4A4 once a pass in the happy land; the hit flash saves it in $F495 and clears it ($C7AD/$C7BF), $B65C puts it back when the flash ends, and $C7D1 clears it when the object is defeated."
  },
  {
   "address": 62613,
   "type": "line",
   "text": "Per slot: the flash mask $F486 kept during a hit flash: saved by $C7B0, put back by $B659 when the flash ends, cleared by $C7D4 when the object is defeated."
  },
  {
   "address": 62628,
   "type": "line",
   "text": "Per slot: the sprite colour, written to $D027 + column by the band writer ($C0F0). Set at spawn from the object's colour list ($EBAA; 0 when $1BC9 is set, and the fade $B34F then brings it in at $B36C), stepped by the colour lists and flash masks ($B63E, $B6A5), turned white by the hit flash ($C7BA) and put back after it ($B656), and set from an item's colour list by $BF94."
  },
  {
   "address": 62633,
   "type": "line",
   "text": "Band 1's slots (5-9) in the colour table $F4A4, as the second band writer reads it."
  },
  {
   "address": 62638,
   "type": "line",
   "text": "Band 2's slots (10-14) in the colour table $F4A4, as the third band writer reads it."
  },
  {
   "address": 62643,
   "type": "line",
   "text": "Per slot: the colour an object fades in to. At spawn, when $1BC9 is set, the first colour goes here and $F4A4 gets 0 ($EBA5); $B34F then steps the slot's colour through fade sequence number (this colour) at $B3B1/$B3C1, which ends on it, and $B367 clears this byte at the end of the sequence; $C53E clears it for a new stage."
  },
  {
   "address": 62658,
   "type": "line",
   "text": "Per slot: the colour kept during a hit flash ($C7AA), put back by $B656 when the flash ends; $FF while no flash runs (set at spawn, $EBFB, and by $B661). $B64C, $C75D and $C76A test its sign to see whether a flash is running."
  },
  {
   "address": 62673,
   "type": "line",
   "text": "Per slot: the hit flash's timer: 4 from $C7B5, decremented once a pass by $B651 while the flash runs; the flash ends when it goes below 0."
  },
  {
   "address": 62688,
   "type": "line",
   "text": "Per slot, interleaved X then Y (index 2 x slot): the positions the band writer puts in $D000-$D00F ($C0F6/$C105). $BAC3 copies all 30 bytes from $F6CF each frame; some routines write straight into it ($C855, $C9DE, $CA04, $EBC0)."
  },
  {
   "address": 62689,
   "type": "line",
   "text": "The Y half of the latched positions at $F4E0 (index 2 x slot + 1), read by the band writer at $C105."
  },
  {
   "address": 62698,
   "type": "line",
   "text": "Band 1's X positions in the latched table $F4E0 (slots 5-9, index 2 x column), for the second band writer."
  },
  {
   "address": 62699,
   "type": "line",
   "text": "Band 1's Y positions in the latched table $F4E0."
  },
  {
   "address": 62703,
   "type": "line",
   "text": "Written by $C53B with X = slot: the latched positions table at $F4E0 seen 15 bytes on."
  },
  {
   "address": 62708,
   "type": "line",
   "text": "Band 2's X positions in the latched table $F4E0 (slots 10-14), for the third band writer."
  },
  {
   "address": 62709,
   "type": "line",
   "text": "Band 2's Y positions in the latched table $F4E0."
  },
  {
   "address": 62718,
   "type": "line",
   "text": "Per slot: the sprite frame (pointer value): set at spawn ($E957, the script's first frame; $EA0F for an item object; $0F at $EB05 for a second-path object), by the animation scripts ($C92D), to the item's frame by $C96A, and to the blank frame $0F by $C3E6, $C419, $C52D, $C579 and $C65F; read by the touch test ($B4CA) and copied by the band writer into both screens' pointer bytes ($C0FC). $0F is the blank frame."
  },
  {
   "address": 62723,
   "type": "line",
   "text": "Band 1's sprite frames in $F4FE (slots 5-9)."
  },
  {
   "address": 62728,
   "type": "line",
   "text": "Band 2's sprite frames in $F4FE (slots 10-14)."
  },
  {
   "address": 62733,
   "type": "line",
   "text": "Per slot: the low nibble of record byte 10 ($EA2F): the entry of the score tables $34E7/$34F7 that $3508 adds when the object is defeated."
  },
  {
   "address": 62748,
   "type": "line",
   "text": "Per slot: the horizontal script's repeat count ($C18A); $FF as loaded; counted down by $C2E9, set by $C2F8, cleared by $C547 for a new stage, at spawn ($EBDB) and when the object is defeated ($C839)."
  },
  {
   "address": 62763,
   "type": "line",
   "text": "Per slot: the vertical script's repeat count ($C42A); counted down by $C4B1, set by $C4C0, cleared by $C54A, $C5E2, at spawn ($EBDE) and when the object is defeated ($C83C)."
  },
  {
   "address": 62778,
   "type": "line",
   "text": "Per slot: the object's motion, bit 7 its direction and the low nibble a speed or step; cleared at spawn, set by $C2D2/$C5B6, read by the script choice $CABE, the turn rule $ED0C and by $BA8F/$BA98 and $C218-$C38F. (The reads at $638F/$6398 are $BA8F/$BA98 in the engine's as-loaded copy at $5A00-$A8FF, not code that runs there.)"
  },
  {
   "address": 62793,
   "type": "line",
   "text": "Per slot: its sign picks the first movement script ($CA9A: negative $F729, else $F747); written by $C49A, cleared at spawn."
  },
  {
   "address": 62808,
   "type": "line",
   "text": "Per slot: the object's state: 0 normal; 2 a portal ($EAA9, behaviour $80-$8F); 3 turned into its item ($CA0B) or an item object while happy ($EA25); 4 defeated ($C7CC, $C7C3); 5 freed ($C41E), skipped by the scripts. Read throughout the object code."
  },
  {
   "address": 62823,
   "type": "line",
   "text": "Per slot: the behaviour value: at spawn the land's $93DA entry for record byte 9's low nibble (when allowed, $EA92), $FC for an object on its second path ($EAF0), $80-$8F for a portal (low nibble its number, $E4E3); swapped by script codes 3 and 4 and by $ECF1; set to the strength left when a hit weakens the object ($C735, and $C755 for its group); cleared for a new stage ($C54D); read by $B4BE, $B565, $B5D4, $C6C2, $E4E3 and $EB45."
  },
  {
   "address": 62838,
   "type": "line",
   "text": "Per slot: the behaviour put aside by script code 3 or $ECF1, $80 when none (set at spawn)."
  },
  {
   "address": 62853,
   "type": "line",
   "text": "Per slot: bits 5-7 of record byte 9 ($EAB2), with bit 7 rewritten by $ECF1 and cleared by script code 4."
  },
  {
   "address": 62868,
   "type": "line",
   "text": "Per slot: 3 while a script code 3 swap is in force, 0 after code 4 or at spawn; $ECF1 leaves such objects alone."
  },
  {
   "address": 62883,
   "type": "line",
   "text": "Per slot: bit 1 of record byte 2 ($EA6B); lets script codes 3 and 4 work while sad and the $93DA behaviour be used."
  },
  {
   "address": 62898,
   "type": "line",
   "text": "Per slot: 1 when the band writer should place the sprite ($C0EB); cleared at the start of every spawn that passes the skip tests ($E7BE) and set to 1 when it completes ($EC08), so a record that is queued instead stays hidden; cleared by $C426 when the slot is freed."
  },
  {
   "address": 62903,
   "type": "line",
   "text": "Band 1's visible flags in $F5B2 (slots 5-9)."
  },
  {
   "address": 62908,
   "type": "line",
   "text": "Band 2's visible flags in $F5B2 (slots 10-14)."
  },
  {
   "address": 62913,
   "type": "line",
   "text": "Per column (slot mod 5, five used): bit 2 of record byte 8 ($E9DC); $F41D then copies that column's attributes from band 0 to bands 1 and 2, and the band writers for bands 1 and 2 leave that column's sprite as band 0 placed it ($C02B, $C08B)."
  },
  {
   "address": 62928,
   "type": "line",
   "text": "Per slot: bits 4-6 of record byte 10 ($EA3E; while sad only bit 4, with bit 5 added). When the object is defeated $CB02 marks its record: bits 5-6 = %10 mark it gone for good (byte 10 bit 7), otherwise bit 4 is set in byte 10; an object spawned again with bit 4 then ends without its item ($C962), the \"comes back and gives nothing\" case."
  },
  {
   "address": 62943,
   "type": "line",
   "text": "Per slot: low byte of the address of the object's record in the land's object list ($EA45), used by $CB02."
  },
  {
   "address": 62958,
   "type": "line",
   "text": "Per slot: high byte of the object's record address ($EA4A)."
  },
  {
   "address": 62973,
   "type": "line",
   "text": "Per slot: bits 6-7 of record byte 3 ($E894); non-zero makes the object a follower placed relative to the slot in $F60C ($E967)."
  },
  {
   "address": 62988,
   "type": "line",
   "text": "Per slot: the low nibble of record byte 14 ($E855): the slot a follower takes its X from."
  },
  {
   "address": 63003,
   "type": "line",
   "text": "Per slot: the low nibble of record byte 5 when its bit 5 is set, else 0 ($E821); read by $C1CC."
  },
  {
   "address": 63018,
   "type": "line",
   "text": "Per slot: the land's $93F0 entry chosen by record byte 5 ($E812); $C1FF, $C210 and $C22E compare the counter $F648 with it."
  },
  {
   "address": 63033,
   "type": "line",
   "text": "Per slot: the land's $93FF entry chosen by record byte 5 ($E818); compared with $F648 at $C20A."
  },
  {
   "address": 63048,
   "type": "line",
   "text": "Per slot: a counter started at 0 ($E81D), incremented by $C222 and decremented by $C23F, kept against the limits $F62A/$F639."
  },
  {
   "address": 63063,
   "type": "line",
   "text": "Per slot: the low nibble of record byte 12 on the second path ($EAFA), else 0; $C56D, $C5F7 and $C633 use it as another slot's number."
  },
  {
   "address": 63078,
   "type": "line",
   "text": "Per slot: bit 3 of record byte 8 ($E9E3); read by $C582."
  },
  {
   "address": 63093,
   "type": "line",
   "text": "Per slot: bits 4-6 of record byte 12 on the second path ($EB00), else 0; compared with a record's byte 12 by the spawner ($E7AF) and read by $C1AE, $C312, $C3DF."
  },
  {
   "address": 63108,
   "type": "line",
   "text": "Per slot: 2 while the animation holds on a script code 2 ($C918), which stops the script stepping ($C8FB). Cleared by a vertical script move ($C488), for a parent when its child follows it ($C593, which also steps the script past the code), and when a script starts ($C67A, $CB3E, at spawn $EBF3)."
  },
  {
   "address": 63123,
   "type": "line",
   "text": "Per slot: the scroll direction $1B3F when the object spawned ($EC0E), or the parent's for a child ($C5AD/$C5B0); read by $BA74-$BA8A and $C1DF-$C3C8."
  },
  {
   "address": 63138,
   "type": "line",
   "text": "Per slot: the page step from scrolling: $FF or 1, set by $BA6F ($BA7B/$BA86) when the scroll carries the object's X across a page edge; $C34D-$C35F applies it to the page counter $F6B1 and clears it; a child copies its parent's ($C5AA); cleared at spawn ($EBEA)."
  },
  {
   "address": 63153,
   "type": "line",
   "text": "Per slot: the page counter of $C18A: stepped up or down by $BA94/$BA9D (the object's own moves across a page edge) and $C354/$C35A (the scroll's page step $F6A2); $C1B3 removes a parentless object when it reaches 3, and $C1E4/$C1EB and $C3AF-$C3D4 test it; a child copies its parent's ($C5A1/$C5A4); cleared at spawn ($EBE7). The accesses at $6394/$639D are $BA94/$BA9D in the engine's as-loaded copy at $5A00-$A8FF, not code that runs there."
  },
  {
   "address": 63168,
   "type": "line",
   "text": "Per slot: bit 1 of record byte 8 ($E9C3), the priority bit also given to $F47A; read by $B4DF, changed by $C55F."
  },
  {
   "address": 63183,
   "type": "line",
   "text": "Per slot, interleaved X then Y (index 2 x slot): the object's sprite position. X is set at spawn from the edge of the view ($E9A6) or the leader ($E981), Y from record byte 6 ($E9B3); moved by the object code ($C325-$C62E), with the scroll by $BA0D ($BA37, $BA42), shifted 12 left when a double-width object is defeated ($C852) and 12 right when it turns into its item ($C9DB); cleared for a new stage ($C532); read by the touch test ($B4F3); $BAC3 latches all 30 bytes into $F4E0 each frame."
  },
  {
   "address": 63184,
   "type": "line",
   "text": "The Y half of the positions at $F6CF (index 2 x slot + 1), set at spawn from record byte 6."
  },
  {
   "address": 63198,
   "type": "line",
   "text": "Written by $C535 with X = slot: the position table at $F6CF seen 15 bytes on."
  },
  {
   "address": 63213,
   "type": "line",
   "text": "Per slot: low byte from the land's $9464 for bits 2-7 of record byte 2 ($E873; 0 when they are 0); read with $F6FC by $C436/$C42F."
  },
  {
   "address": 63228,
   "type": "line",
   "text": "Per slot: high byte from the land's $9489 for record byte 2 ($E879); cleared when the object is defeated ($C836)."
  },
  {
   "address": 63243,
   "type": "line",
   "text": "Per slot: low byte of the running animation script's address ($CAF0, $C669, $E933)."
  },
  {
   "address": 63258,
   "type": "line",
   "text": "Per slot: high byte of the running script's address."
  },
  {
   "address": 63273,
   "type": "line",
   "text": "Per slot: one of the six scripts loaded at spawn from the object type's entry in the land's $956E (through $94AE/$94EE): the first movement script when $F549 is negative ($CA9F)."
  },
  {
   "address": 63288,
   "type": "line",
   "text": "High byte of the script at $F729."
  },
  {
   "address": 63303,
   "type": "line",
   "text": "Per slot: the script from the type's $95A0 entry, the first movement script otherwise ($CAA8)."
  },
  {
   "address": 63318,
   "type": "line",
   "text": "High byte of the script at $F747."
  },
  {
   "address": 63333,
   "type": "line",
   "text": "Per slot: the script from the type's $95D2 entry: chosen by $CAC8 when $F53A has bit 7 and a low nibble; also the script scanned for the first frame."
  },
  {
   "address": 63348,
   "type": "line",
   "text": "High byte of the script at $F765."
  },
  {
   "address": 63363,
   "type": "line",
   "text": "Per slot: the script from the type's $9604 entry, chosen by $CAD5 when $F53A has a low nibble and bit 7 clear."
  },
  {
   "address": 63378,
   "type": "line",
   "text": "High byte of the script at $F783."
  },
  {
   "address": 63393,
   "type": "line",
   "text": "Per slot: the script from the type's $9636 entry, chosen by $CAEA when $F53A's low nibble is 0 and bit 7 set."
  },
  {
   "address": 63408,
   "type": "line",
   "text": "High byte of the script at $F7A1."
  },
  {
   "address": 63423,
   "type": "line",
   "text": "Per slot: the script from the type's $9668 entry, chosen by $CAE1 when $F53A has bit 7 clear and a zero low nibble."
  },
  {
   "address": 63438,
   "type": "line",
   "text": "High byte of the script at $F7BF."
  },
  {
   "address": 63453,
   "type": "line",
   "text": "Per slot: low byte of the object's colour list (from the land's $96B3, or for an item from $B6BA), whose first byte is the starting colour ($EB9A); $B68D steps through it."
  },
  {
   "address": 63468,
   "type": "line",
   "text": "High byte of the colour list at $F7DD."
  },
  {
   "address": 63483,
   "type": "line",
   "text": "Per slot, second path only: low byte from the land's $941A for record byte 9 bits 0-5 ($EAD2); read by $C5BF."
  },
  {
   "address": 63498,
   "type": "line",
   "text": "High byte from the land's $943F for the same entry; read by $C5C2."
  },
  {
   "address": 63513,
   "type": "line",
   "text": "Per slot, second path only: low byte from $941A for record byte 1 bits 2-7 ($EAE5); read by $C5CC."
  },
  {
   "address": 63528,
   "type": "line",
   "text": "High byte from $943F for the same entry; read by $C5CF."
  },
  {
   "address": 63543,
   "type": "line",
   "text": "Per slot: 1 when the slot has a colour list to step, 0 when the spawn gave it none (the operand $EBAE, stored by $EBAF); set to 1 by $BABF ($BAA1); $B669 steps the colour only while it is set."
  },
  {
   "address": 63558,
   "type": "line",
   "text": "Per slot: the object's group, bits 4-6 of record byte 8 shifted down ($E9EE): objects of one group spawn together ($EC72); read throughout the object code."
  },
  {
   "address": 63573,
   "type": "line",
   "text": "Per slot: frames left before the next script step; counted down by $C8E6 and reloaded from $F864."
  },
  {
   "address": 63588,
   "type": "line",
   "text": "Per slot: the reload for $F855, from the type's $969A entry at spawn or the land's $952E with a script ($C675)."
  },
  {
   "address": 63603,
   "type": "line",
   "text": "Per slot: the repeat counter of script command $40 + n ($CA68)."
  },
  {
   "address": 63618,
   "type": "line",
   "text": "Per slot: the script index after a repeat command, where the script goes on once the repeats are done."
  },
  {
   "address": 63633,
   "type": "line",
   "text": "Per slot: counted down by $B682 between colour-list steps and reloaded ($B68A, $BABA, $C5EB); cleared at spawn."
  },
  {
   "address": 63648,
   "type": "line",
   "text": "Per slot: from the land's $96D3 or the item table $B6CC at spawn ($EB95); read by $B687."
  },
  {
   "address": 63663,
   "type": "line",
   "text": "Per slot: record byte 11 ($EA51). When the object is defeated ($C7C3) its low nibble below 4 is the animation started ($C816), 4 or more an item (number less 4); its high nibble is the colour list passed to $BAA1 ($C81A)."
  },
  {
   "address": 63678,
   "type": "line",
   "text": "Per slot: bits 5-7 of record byte 4 ($EBB6): bit 5 double width, bit 6 double height, bit 7 keep multicolour, as $C842-$C891 apply when the object is defeated ($C7C3)."
  },
  {
   "address": 63693,
   "type": "line",
   "text": "Per slot: the frame the object turns into at the end of its defeat ($C955), from the land's $905D ($E9F9, $EA15) or set by $C812; 0 means none."
  },
  {
   "address": 63708,
   "type": "line",
   "text": "Per slot: the item the object gives, an index into the land's $9075 ($EB67, $C7EB, $C800); $BC3F maps it through $9075 to the effect table $F994/$F99D."
  },
  {
   "address": 63723,
   "type": "line",
   "text": "Per slot: bit 4 of record byte 9 while sad ($EABF), 0 while happy; picks $BF7F instead of $BF7B for the item ($C9BF) and changes the hit path at $C7DF."
  },
  {
   "address": 63738,
   "type": "line",
   "text": "Per slot: bits 6-7 of record byte 5 ($E800): $C0 means a single-script object, $40 skips the first script choice in $CA8B; read by $C2B3, $C46C, $C8DC."
  },
  {
   "address": 63753,
   "type": "line",
   "text": "Per slot: set once the second script choice of $CA8B has been made; cleared at spawn and by $CB38, $C5DF."
  },
  {
   "address": 63768,
   "type": "line",
   "text": "Per slot: set once the first script choice of $CA8B has been made; cleared at spawn and by $C485."
  },
  {
   "address": 63783,
   "type": "line",
   "text": "Per slot: the object type (record byte 3 bits 0-5, $E89B), later the script number last started by $C662; $E4E3 adds 1 to move a portal to its next script."
  },
  {
   "address": 63798,
   "type": "line",
   "text": "Per slot: a start delay counted down by the animation ($C8C3); negative ($FF, set at spawn for the second path) holds the object frozen; also set by $C317, $C3EB, $C57E, $C589."
  },
  {
   "address": 63813,
   "type": "line",
   "text": "Six tables of three variants each for $EF93: $F945, $F948, $F94B into the sprite bytes $588F, $5892, $5895, and $F94E, $F951, $F954 into $5211, $5214, $5217."
  },
  {
   "address": 63816,
   "type": "line",
   "text": "Variants of the byte $EF93 writes to $5892 ($10 $10 $15)."
  },
  {
   "address": 63819,
   "type": "line",
   "text": "Variants of the byte written to $5895 ($30 $35 $30)."
  },
  {
   "address": 63822,
   "type": "line",
   "text": "Variants of the byte written to $5211 ($A8 $08 $08)."
  },
  {
   "address": 63825,
   "type": "line",
   "text": "Variants of the byte written to $5214 ($08 $08 $A8)."
  },
  {
   "address": 63828,
   "type": "line",
   "text": "Variants of the byte written to $5217 ($0C $AC $0C)."
  },
  {
   "address": 63831,
   "type": "line",
   "text": "Low bytes of the line operands of the four band handlers' next links ($21FA, $2214, $2226, $22A4), for $E355."
  },
  {
   "address": 63835,
   "type": "line",
   "text": "High bytes of those line operands ($21, $22, $22, $22)."
  },
  {
   "address": 63839,
   "type": "line",
   "text": "Low bytes of the handler-low operands of the four band links ($21FC, $2216, $2228, $22A6), for $E35D."
  },
  {
   "address": 63843,
   "type": "line",
   "text": "High bytes of the handler-low operands listed at $F95F ($21, $22, $22, $22)."
  },
  {
   "address": 63847,
   "type": "line",
   "text": "Low bytes of the handler-high operands of the four band links ($21FE, $2218, $222A, $22A8), for $E365."
  },
  {
   "address": 63851,
   "type": "line",
   "text": "High bytes of the handler-high operands listed at $F967 ($21, $22, $22, $22)."
  },
  {
   "address": 63855,
   "type": "line",
   "text": "The raster lines $E2F0 gives the spliced handler $21B5 in each band: $62, $82, $A2, $C2."
  },
  {
   "address": 63859,
   "type": "line",
   "text": "Each band handler's own next line: $72, $92, $B2, $D2 (restored by $E2D2)."
  },
  {
   "address": 63863,
   "type": "line",
   "text": "Each band handler's own successor, low byte: $10, $22, $9C, $BA ($2210, $2222, $229C, $22BA)."
  },
  {
   "address": 63867,
   "type": "line",
   "text": "The successors' high byte, $22 for all four. The nine bytes after it, $F97F-$F987 (0 as loaded), are a nine-digit high score kept by Jellyland's code: its $9E89-$9EA6 compares the score $CF78-$CF80 with them digit by digit and copies the score here when it is higher, and its $9E57-$9E61 copies them back into $CF78 for display."
  },
  {
   "address": 63880,
   "type": "line",
   "text": "Twelve frame numbers ($0C-$0F) that $14C4 and $15A8 step through, by $1B9D, for sprite 5's pointer $1B6D."
  },
  {
   "address": 63892,
   "type": "line",
   "text": "Low bytes of the nine item effects that $BC3F jumps to, entry = the land's $9075 entry for the object's item: $BC55, $35F3, $36D2, $BB69, $3636 (an extra life), $36ED, $CB4B (the clock stops), $10C1 (a continue), $10D5."
  },
  {
   "address": 63901,
   "type": "line",
   "text": "High bytes of the item effects at $F994."
  },
  {
   "address": 63910,
   "type": "line",
   "text": "Two 24-byte pictures, eight sprite rows of three bytes each, that $BD4F copies into rows 3-10 of the sprite at $4100 (panel sprite 3, pointer $04): $F9A6-$F9BD while sad, $F9BE-$F9D5 while happy (start $BD33 + Y). The panel label beside the dust or star count, by its place; not checked live."
  },
  {
   "address": 63958,
   "type": "line",
   "text": "The 20 frames of the spinning star, 32 bytes each (four characters, 2x2), $F9D6-$FC55: the pointer tables $B47E/$B492 hold their addresses ($F9D6, $F9F6 ... $FC36), and $3B1A/$3B20 read them to copy a frame into characters $FB-$FE. Several frames are near-identical."
  },
  {
   "address": 64598,
   "type": "line",
   "text": "The tune played in a land while it is sad: $3C8C takes its address from $3B3B/$3B3D with $1BEC = 0 and starts it through $080C. Starts with the offsets $001B and $0074."
  },
  {
   "address": 64762,
   "type": "line",
   "text": "The tune of the stage-complete screen, started by $F32E through $080C. Starts with the offsets $0009 and $0054."
  },
  {
   "address": 64950,
   "type": "line",
   "text": "The tune played while the land is happy ($3B3B/$3B3D with $1BEC = 1, $3C8C). Starts with the offsets $0093 and $0138; runs to about $FFB6."
  },
  {
   "address": 65280,
   "type": "line",
   "text": "Inside the happy tune. The fast loader's STA at $CDC3 is assembled with $FF00 as a placeholder (the real address is written into $CDC4/$CDC5 before use), and the disassembler named this address after it."
  },
  {
   "address": 65344,
   "type": "line",
   "text": "Bytes $FF40-$FF7F of the happy tune's data, which starts at $FDB6 and runs to $FFB6; read only by the music driver through the tune's own pointers."
  },
  {
   "address": 65408,
   "type": "line",
   "text": "The last 55 bytes of the happy tune's data ($FF80-$FFB6), ending the tune that starts at $FDB6."
  },
  {
   "address": 65463,
   "type": "line",
   "text": "Bytes that decode as STA $1BFF, BNE, LDA #0, STA $1B99, STA $1B9A, RTS, but nothing reaches them in RAM: the JSR $FFBA at $CCB9 runs the KERNAL's SETLFS in ROM."
  },
  {
   "address": 65466,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's SETLFS is at $FFBA in ROM, which the loader calls at $CCB9 with the ROM switched in. Here it is part of the leftover bytes at $FFB7."
  },
  {
   "address": 65469,
   "type": "line",
   "text": "Not a routine in RAM: the KERNAL's SETNAM is at $FFBD in ROM, called by the loader at $CCC2 with the ROM in. Here it is inside the leftover bytes at $FFB7."
  },
  {
   "address": 65477,
   "type": "line",
   "text": "A copy of the 48 bytes at $F9A6-$F9D5 (both panel pictures), then five other bytes ($F4 $C4 $FF $80 $F7) to $FFF9; no reader found: left over at the end of the file."
  },
  {
   "address": 65530,
   "type": "line",
   "text": "The NMI vector in RAM, written by the game at run time ($1C52, $1C57)."
  },
  {
   "address": 65532,
   "type": "line",
   "text": "The reset vector's place in RAM ($F494 as loaded); nothing in the game writes or reads it."
  },
  {
   "address": 65534,
   "type": "line",
   "text": "The IRQ vector in RAM: the play-time raster chain writes each handler's address here ($207A, $2156, $2179), as do $1830 and $1C48."
  }
 ]
}